Diff of the two buildlogs: -- --- b1/build.log 2025-02-11 20:38:51.787959834 +0000 +++ b2/build.log 2025-02-11 21:09:58.903759191 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue Feb 11 05:45:37 -12 2025 -I: pbuilder-time-stamp: 1739295937 +I: Current time: Wed Feb 12 10:43:39 +14 2025 +I: pbuilder-time-stamp: 1739306619 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -33,52 +33,84 @@ dpkg-source: info: applying rely-on-default-for-optimization-on-Power.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/28338/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/D01_modify_environment starting +debug: Running on virt64b. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Feb 11 20:43 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=3 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='27812834744648e7907831cb87da604f' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='28338' - PS1='# ' - PS2='> ' + INVOCATION_ID=6c76dac62ff1483d85e57559bdb7d660 + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=27370 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.eoEZUnnh/pbuilderrc_Jh83 --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.eoEZUnnh/b1 --logfile b1/build.log rocksdb_9.10.0-1.dsc' - SUDO_GID='113' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:3142/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.eoEZUnnh/pbuilderrc_NcSa --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.eoEZUnnh/b2 --logfile b2/build.log rocksdb_9.10.0-1.dsc' + SUDO_GID=113 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:3142/ I: uname -a - Linux ff4a 6.1.0-31-armmp-lpae #1 SMP Debian 6.1.128-1 (2025-02-07) armv7l GNU/Linux + Linux i-capture-the-hostname 6.1.0-31-arm64 #1 SMP Debian 6.1.128-1 (2025-02-07) aarch64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/28338/tmp/hooks/D02_print_environment finished +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -196,7 +228,7 @@ Get: 66 http://deb.debian.org/debian unstable/main armhf libsnappy-dev armhf 1.2.1-1+b1 [41.9 kB] Get: 67 http://deb.debian.org/debian unstable/main armhf libzstd-dev armhf 1.5.6+dfsg-2 [326 kB] Get: 68 http://deb.debian.org/debian unstable/main armhf zlib1g-dev armhf 1:1.3.dfsg+really1.3.1-1+b1 [905 kB] -Fetched 35.0 MB in 3s (12.6 MB/s) +Fetched 35.0 MB in 1s (29.2 MB/s) Preconfiguring packages ... Selecting previously unselected package libproc2-0:armhf. (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 ... 19531 files and directories currently installed.) @@ -483,7 +515,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/rocksdb-9.10.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../rocksdb_9.10.0-1_source.changes +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/rocksdb-9.10.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../rocksdb_9.10.0-1_source.changes dpkg-buildpackage: info: source package rocksdb dpkg-buildpackage: info: source version 9.10.0-1 dpkg-buildpackage: info: source distribution unstable @@ -538,6 +574,9 @@ -- Found zstd: /usr/lib/arm-linux-gnueabihf/libzstd.so -- Performing Test HAVE_OMIT_LEAF_FRAME_POINTER -- Performing Test HAVE_OMIT_LEAF_FRAME_POINTER - Failed +-- Performing Test HAS_ARMV8_CRC +-- Performing Test HAS_ARMV8_CRC - Success +-- HAS_ARMV8_CRC yes -- Performing Test BUILTIN_ATOMIC -- Performing Test BUILTIN_ATOMIC - Success -- Could NOT find uring (missing: uring_LIBRARIES uring_INCLUDE_DIR) @@ -563,8 +602,8 @@ -- ROCKSDB PLUGINS TO BUILD -- Could NOT find Git (missing: GIT_EXECUTABLE) -- JNI library is disabled --- Configuring done (13.3s) --- Generating done (1.1s) +-- Configuring done (8.1s) +-- Generating done (0.6s) CMake Warning: Manually-specified variables were not used by the project: @@ -576,7 +615,7 @@ -- Build files have been written to: /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf make[1]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0' dh_auto_build -O--buildsystem=cmake - cd obj-arm-linux-gnueabihf && make -j3 "INSTALL=install --strip-program=true" VERBOSE=1 + cd obj-arm-linux-gnueabihf && make -j4 "INSTALL=install --strip-program=true" VERBOSE=1 make[1]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' /usr/bin/cmake -S/build/reproducible-path/rocksdb-9.10.0 -B/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf --check-build-system CMakeFiles/Makefile.cmake 0 /usr/bin/cmake -E cmake_progress_start /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf//CMakeFiles/progress.marks @@ -593,60 +632,41 @@ cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/rocksdb-shared.dir/DependInfo.cmake "--color=" make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' make -f third-party/gtest-1.8.1/fused-src/gtest/CMakeFiles/gtest.dir/build.make third-party/gtest-1.8.1/fused-src/gtest/CMakeFiles/gtest.dir/build -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/rocksdb.dir/build.make CMakeFiles/rocksdb.dir/build make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' +make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' +make -f CMakeFiles/rocksdb.dir/build.make CMakeFiles/rocksdb.dir/build make -f CMakeFiles/rocksdb-shared.dir/build.make CMakeFiles/rocksdb-shared.dir/build make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' [ 0%] Building CXX object third-party/gtest-1.8.1/fused-src/gtest/CMakeFiles/gtest.dir/gtest-all.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/third-party/gtest-1.8.1/fused-src/gtest && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT third-party/gtest-1.8.1/fused-src/gtest/CMakeFiles/gtest.dir/gtest-all.cc.o -MF CMakeFiles/gtest.dir/gtest-all.cc.o.d -o CMakeFiles/gtest.dir/gtest-all.cc.o -c /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc +cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/third-party/gtest-1.8.1/fused-src/gtest && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT third-party/gtest-1.8.1/fused-src/gtest/CMakeFiles/gtest.dir/gtest-all.cc.o -MF CMakeFiles/gtest.dir/gtest-all.cc.o.d -o CMakeFiles/gtest.dir/gtest-all.cc.o -c /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' [ 0%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache.cc -[ 0%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache.cc +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache.cc +[ 1%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_entry_roles.cc +[ 1%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache.cc +[ 1%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_key.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_key.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_key.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_key.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_key.cc +[ 1%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_helpers.cc +[ 1%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.cc [ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o -[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_entry_roles.cc -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_entry_roles.cc -[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_key.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_key.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_key.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_key.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_key.cc +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_entry_roles.cc +[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/charged_cache.cc [ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_key.cc -[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_helpers.cc +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_key.cc [ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_helpers.cc -[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o -MF CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o.d -o CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.cc -[ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.cc -[ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/charged_cache.cc -[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/charged_cache.cc -[ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_helpers.cc [ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc -[ 2%] Linking CXX static library libgtest.a -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/third-party/gtest-1.8.1/fused-src/gtest && /usr/bin/cmake -P CMakeFiles/gtest.dir/cmake_clean_target.cmake -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/third-party/gtest-1.8.1/fused-src/gtest && /usr/bin/cmake -E cmake_link_script CMakeFiles/gtest.dir/link.txt --verbose=1 -/usr/bin/ar qc libgtest.a "CMakeFiles/gtest.dir/gtest-all.cc.o" -/usr/bin/ranlib libgtest.a -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 2%] Built target gtest -make -f CMakeFiles/testharness.dir/build.make CMakeFiles/testharness.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/testharness.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/testharness.dir/build.make CMakeFiles/testharness.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 3%] Building CXX object CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o -MF CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o.d -o CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/mock_time_env.cc -[ 3%] Building CXX object CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o -MF CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o.d -o CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/secondary_cache_test_util.cc +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc +[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/compressed_secondary_cache.cc +[ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.cc In file included from /usr/include/c++/14/bits/stl_algo.h:61, from /usr/include/c++/14/algorithm:61, from /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:7, @@ -669,6 +689,55 @@ /usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +[ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/charged_cache.cc +[ 2%] Building CXX object CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/lru_cache.cc +In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', + inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, + inlined from 'virtual void rocksdb::clock_cache::FixedHyperClockCache::ReportProblems(const std::shared_ptr&) const' at /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc:1593:12: +/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 + 1905 | std::__introsort_loop(__first, __last, + | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ + 1906 | std::__lg(__last - __first) * 2, + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 1907 | __comp); + | ~~~~~~~ +In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', + inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, + inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, + inlined from 'virtual void rocksdb::clock_cache::FixedHyperClockCache::ReportProblems(const std::shared_ptr&) const' at /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc:1593:12: +/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 + 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); + | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 + 1822 | std::__insertion_sort(__first, __last, __comp); + | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ +[ 2%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc +[ 3%] Building CXX object CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache.cc +[ 3%] Linking CXX static library libgtest.a +cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/third-party/gtest-1.8.1/fused-src/gtest && /usr/bin/cmake -P CMakeFiles/gtest.dir/cmake_clean_target.cmake +cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/third-party/gtest-1.8.1/fused-src/gtest && /usr/bin/cmake -E cmake_link_script CMakeFiles/gtest.dir/link.txt --verbose=1 +/usr/bin/ar qc libgtest.a "CMakeFiles/gtest.dir/gtest-all.cc.o" +/usr/bin/ranlib libgtest.a +make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' +[ 3%] Built target gtest +make -f CMakeFiles/testharness.dir/build.make CMakeFiles/testharness.dir/depend +make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' +cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/testharness.dir/DependInfo.cmake "--color=" +make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' +make -f CMakeFiles/testharness.dir/build.make CMakeFiles/testharness.dir/build +make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' +[ 4%] Building CXX object CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o -MF CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o.d -o CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/mock_time_env.cc +[ 4%] Building CXX object CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o -MF CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o.d -o CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache_adapter.cc +[ 4%] Building CXX object CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/sharded_cache.cc +[ 4%] Building CXX object CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o -MF CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o.d -o CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/secondary_cache_test_util.cc In file included from /usr/include/c++/14/bits/stl_algo.h:61, from /usr/include/c++/14/algorithm:61, from /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:7, @@ -691,8 +760,10 @@ /usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 3%] Building CXX object CMakeFiles/testharness.dir/test_util/testharness.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/testharness.dir/test_util/testharness.cc.o -MF CMakeFiles/testharness.dir/test_util/testharness.cc.o.d -o CMakeFiles/testharness.dir/test_util/testharness.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/testharness.cc +[ 4%] Building CXX object CMakeFiles/testharness.dir/test_util/testharness.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/testharness.dir/test_util/testharness.cc.o -MF CMakeFiles/testharness.dir/test_util/testharness.cc.o.d -o CMakeFiles/testharness.dir/test_util/testharness.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/testharness.cc +[ 4%] Building CXX object CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/tiered_secondary_cache.cc In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, inlined from 'virtual void rocksdb::clock_cache::FixedHyperClockCache::ReportProblems(const std::shared_ptr&) const' at /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc:1593:12: @@ -713,117 +784,77 @@ /usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1822 | std::__insertion_sort(__first, __last, __comp); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', - inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, - inlined from 'virtual void rocksdb::clock_cache::FixedHyperClockCache::ReportProblems(const std::shared_ptr&) const' at /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc:1593:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, - inlined from 'virtual void rocksdb::clock_cache::FixedHyperClockCache::ReportProblems(const std::shared_ptr&) const' at /build/reproducible-path/rocksdb-9.10.0/cache/clock_cache.cc:1593:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 3%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/compressed_secondary_cache.cc -[ 3%] Building CXX object CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/compressed_secondary_cache.cc -[ 4%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/lru_cache.cc -[ 4%] Building CXX object CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/lru_cache.cc -[ 4%] Linking CXX static library libtestharness.a +[ 4%] Building CXX object CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o -MF CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o.d -o CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/arena_wrapped_db_iter.cc +[ 4%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/compressed_secondary_cache.cc +[ 4%] Building CXX object CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/attribute_group_iterator_impl.cc +[ 4%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_contents.cc +[ 5%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/lru_cache.cc +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_fetcher.cc +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.cc +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o +[ 6%] Linking CXX static library libtestharness.a /usr/bin/cmake -P CMakeFiles/testharness.dir/cmake_clean_target.cmake +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_builder.cc /usr/bin/cmake -E cmake_link_script CMakeFiles/testharness.dir/link.txt --verbose=1 /usr/bin/ar qc libtestharness.a CMakeFiles/testharness.dir/test_util/mock_time_env.cc.o CMakeFiles/testharness.dir/test_util/secondary_cache_test_util.cc.o CMakeFiles/testharness.dir/test_util/testharness.cc.o /usr/bin/ranlib libtestharness.a make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 4%] Built target testharness -[ 4%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache.cc -[ 4%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache_adapter.cc -[ 5%] Building CXX object CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache.cc -[ 5%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/sharded_cache.cc -[ 5%] Building CXX object CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o -MF CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o.d -o CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache_adapter.cc -[ 5%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/tiered_secondary_cache.cc -[ 5%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/arena_wrapped_db_iter.cc -[ 5%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/attribute_group_iterator_impl.cc -[ 5%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_contents.cc -[ 5%] Building CXX object CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/sharded_cache.cc -[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_fetcher.cc -[ 6%] Building CXX object CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o -MF CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o.d -o CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/tiered_secondary_cache.cc -[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o -MF CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o.d -o CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/arena_wrapped_db_iter.cc -[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.cc -[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_builder.cc -[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_cache.cc -[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.cc -[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_meta.cc -[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/attribute_group_iterator_impl.cc -[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_reader.cc -[ 7%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_garbage_meter.cc -[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_contents.cc -[ 8%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_fetcher.cc -[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_format.cc -[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_sequential_reader.cc -[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_writer.cc -[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_source.cc -[ 8%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.cc -[ 8%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_builder.cc -[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/prefetch_buffer_collection.cc -[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/builder.cc -[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/c.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/c.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/c.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/c.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/c.cc -[ 8%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_cache.cc -[ 8%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.cc -[ 8%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_meta.cc -[ 9%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/coalescing_iterator.cc -[ 9%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_reader.cc -[ 9%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc +[ 6%] Built target testharness +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_cache.cc +[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache.cc +[ 6%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/secondary_cache_adapter.cc +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.cc +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_meta.cc +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_reader.cc +[ 6%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_garbage_meter.cc +[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_format.cc +[ 7%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/sharded_cache.cc +[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_sequential_reader.cc +[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_writer.cc +[ 7%] Building CXX object CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/tiered_secondary_cache.cc +[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_source.cc +[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/prefetch_buffer_collection.cc +[ 7%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/arena_wrapped_db_iter.cc +[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/builder.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/builder.cc.o -MF CMakeFiles/rocksdb.dir/db/builder.cc.o.d -o CMakeFiles/rocksdb.dir/db/builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/builder.cc +[ 7%] Building CXX object CMakeFiles/rocksdb.dir/db/c.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/c.cc.o -MF CMakeFiles/rocksdb.dir/db/c.cc.o.d -o CMakeFiles/rocksdb.dir/db/c.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/c.cc +[ 7%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/attribute_group_iterator_impl.cc +[ 7%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_contents.cc +[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_fetcher.cc +[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.cc +[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_builder.cc +[ 8%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_cache.cc +[ 9%] Building CXX object CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o -MF CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/coalescing_iterator.cc In file included from /usr/include/c++/14/vector:65, from /build/reproducible-path/rocksdb-9.10.0/db/c.cc:15: /usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': @@ -855,16 +886,24 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 9%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction.cc -[ 9%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_garbage_meter.cc -[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_format.cc -[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_sequential_reader.cc -[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_writer.cc +[ 9%] Building CXX object CMakeFiles/rocksdb.dir/db/column_family.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/column_family.cc.o -MF CMakeFiles/rocksdb.dir/db/column_family.cc.o.d -o CMakeFiles/rocksdb.dir/db/column_family.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc +[ 9%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.cc +[ 9%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction.cc +[ 9%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iterator.cc +[ 9%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_meta.cc +[ 9%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_reader.cc +[ 9%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker.cc +[ 10%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_garbage_meter.cc +[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_job.cc In file included from /usr/include/c++/14/vector:65, from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:15, from /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc:10: @@ -890,22 +929,44 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_source.cc -[ 10%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iterator.cc -[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o -MF CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o.d -o CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/prefetch_buffer_collection.cc -[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/builder.cc.o -MF CMakeFiles/rocksdb.dir/db/builder.cc.o.d -o CMakeFiles/rocksdb.dir/db/builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/builder.cc -[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/c.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/c.cc.o -MF CMakeFiles/rocksdb.dir/db/c.cc.o.d -o CMakeFiles/rocksdb.dir/db/c.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/c.cc -[ 10%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker.cc -[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o -MF CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/coalescing_iterator.cc -[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/column_family.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/column_family.cc.o -MF CMakeFiles/rocksdb.dir/db/column_family.cc.o.d -o CMakeFiles/rocksdb.dir/db/column_family.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc +[ 10%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_format.cc +[ 10%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_sequential_reader.cc +[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_fifo.cc +[ 10%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_writer.cc +[ 10%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_level.cc +[ 10%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_source.cc +[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_universal.cc +[ 11%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/blob/prefetch_buffer_collection.cc +[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_service_job.cc +[ 11%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/builder.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/builder.cc +[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_state.cc +[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_outputs.cc +[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/sst_partitioner.cc +[ 11%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/c.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/c.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/c.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/c.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/c.cc +[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/subcompaction_state.cc +[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/convenience.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/convenience.cc.o -MF CMakeFiles/rocksdb.dir/db/convenience.cc.o.d -o CMakeFiles/rocksdb.dir/db/convenience.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/convenience.cc +[ 12%] Building CXX object CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o -MF CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_filesnapshot.cc +[ 12%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.cc +[ 12%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc In file included from /usr/include/c++/14/vector:65, from /build/reproducible-path/rocksdb-9.10.0/db/c.cc:15: /usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': @@ -937,85 +998,6 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction.cc -[ 11%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_job.cc -In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:15, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc:10: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iterator.cc -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44, - inlined from 'rocksdb::ColumnFamilyOptions rocksdb::SanitizeOptions(const ImmutableDBOptions&, const ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc:356:34: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker.cc -[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_job.cc -[ 11%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_fifo.cc -[ 11%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_fifo.cc -[ 12%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_level.cc -[ 12%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_level.cc -[ 12%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_universal.cc -[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_universal.cc -[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_service_job.cc -[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_service_job.cc -[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_state.cc -[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_outputs.cc -[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_state.cc -[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_outputs.cc -[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/sst_partitioner.cc -[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/sst_partitioner.cc -[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/subcompaction_state.cc -[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o -MF CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o.d -o CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/subcompaction_state.cc -[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/convenience.cc -[ 14%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_filesnapshot.cc -[ 14%] Building CXX object CMakeFiles/rocksdb.dir/db/convenience.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/convenience.cc.o -MF CMakeFiles/rocksdb.dir/db/convenience.cc.o.d -o CMakeFiles/rocksdb.dir/db/convenience.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/convenience.cc -[ 14%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.cc -[ 14%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc -[ 15%] Building CXX object CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o -MF CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_filesnapshot.cc In file included from /usr/include/c++/14/vector:65, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.h:8, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.cc:6: @@ -1032,10 +1014,14 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 15%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_write.cc -[ 15%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.cc +[ 12%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_write.cc +[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/coalescing_iterator.cc +[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_compaction_flush.cc +[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc In file included from /usr/include/c++/14/map:62, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:17, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc:9: @@ -1043,9 +1029,18 @@ /usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from /usr/include/c++/14/map:63: +/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': +/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 + 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 514 | std::tuple(__k), + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 515 | std::tuple<>()); + | ~~~~~~~~~~~~~~~ In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.h:8, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.cc:6: + from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:15, + from /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc:10: /usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': /usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, @@ -1059,89 +1054,19 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 15%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc -In file included from /usr/include/c++/14/map:63: -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 15%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_compaction_flush.cc -In file included from /usr/include/c++/14/deque:65, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:13: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator*, vector > >; _ForwardIterator = pair*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator*, std::vector > >; _ForwardIterator = std::pair*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator*, vector > >; _ForwardIterator = pair*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator*, vector > >; _ForwardIterator = pair*; _Tp = pair]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::pair; _Alloc = std::allocator >]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::VersionEdit::VersionEdit(const rocksdb::VersionEdit&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_edit.h:420:7: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:17, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc:9: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, long long unsigned int>; _KeyOfValue = std::_Select1st, long long unsigned int> >; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*; _Tp = rocksdb::IngestedFileInfo]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator > >; _Tp = rocksdb::IngestedFileInfo; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'void std::vector<_Tp, _Alloc>::_M_assign_aux(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator > >; _Tp = rocksdb::IngestedFileInfo; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:331:40, - inlined from 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::IngestedFileInfo; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:829:17, - inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::IngestedFileInfo; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, - inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::IngestedFileInfo; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, - inlined from 'rocksdb::ExternalSstFileIngestionJob::ExternalSstFileIngestionJob(const rocksdb::ExternalSstFileIngestionJob&)' at /build/reproducible-path/rocksdb-9.10.0/db/external_sst_file_ingestion_job.h:182:7, - inlined from 'void std::_Construct(_Tp*, _Args&& ...) [with _Tp = rocksdb::ExternalSstFileIngestionJob; _Args = {const rocksdb::ExternalSstFileIngestionJob&}]' at /usr/include/c++/14/bits/stl_construct.h:119:7, - inlined from '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = const rocksdb::ExternalSstFileIngestionJob*; _ForwardIterator = rocksdb::ExternalSstFileIngestionJob*]' at /usr/include/c++/14/bits/stl_uninitialized.h:120:21: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 +[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_files.cc +In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', + inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, + inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, + inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, + inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44, + inlined from 'rocksdb::ColumnFamilyOptions rocksdb::SanitizeOptions(const ImmutableDBOptions&, const ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/db/column_family.cc:356:34: +/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'void rocksdb::DBImpl::PersistStats()' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc:1080:74: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'void rocksdb::DBImpl::PersistStats()' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc:1080:33: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 15%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_files.cc +[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction.cc In file included from /usr/include/c++/14/deque:65, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:13: /usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator*, vector > >; _ForwardIterator = pair*]': @@ -1157,8 +1082,6 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 15%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_follower.cc In file included from /usr/include/c++/14/deque:65, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:13, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_files.cc:13: @@ -1175,6 +1098,12 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ +[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_follower.cc +[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iterator.cc +[ 13%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_open.cc /usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*]': /usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, @@ -1212,12 +1141,12 @@ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 515 | std::tuple<>()); | ~~~~~~~~~~~~~~~ -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_open.cc -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_debug.cc -[ 16%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_write.cc +[ 13%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker.cc +[ 14%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_debug.cc +[ 14%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_experimental.cc In file included from /usr/include/c++/14/bits/stl_algo.h:61, from /usr/include/c++/14/algorithm:61, from /build/reproducible-path/rocksdb-9.10.0/util/coding.h:19, @@ -1242,8 +1171,6 @@ 1770 | __insertion_sort(_RandomAccessIterator __first, | ^~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_experimental.cc In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, inlined from 'virtual rocksdb::Status rocksdb::DBImpl::Recover(const std::vector&, bool, bool, bool, bool, uint64_t*, RecoveryContext*, bool*)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_open.cc:808:16: @@ -1264,12 +1191,16 @@ /usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1822 | std::__insertion_sort(__first, __last, __comp); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.cc -[ 16%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_compaction_flush.cc -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc +[ 14%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_job.cc +[ 14%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.cc +[ 14%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_fifo.cc +[ 14%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc +[ 15%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_level.cc In file included from /usr/include/c++/14/vector:65, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.h:10, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.cc:6: @@ -1298,8 +1229,6 @@ /usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, | ^~~~~~~~~~~~~ -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_info_dumper.cc /usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]': /usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1876 | __introsort_loop(_RandomAccessIterator __first, @@ -1313,6 +1242,8 @@ 1770 | __insertion_sort(_RandomAccessIterator __first, | ^~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 +[ 15%] Building CXX object CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o -MF CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_info_dumper.cc In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, inlined from 'rocksdb::Status rocksdb::DBImplSecondary::FindNewLogNumbers(std::vector*)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc:133:14: @@ -1333,8 +1264,8 @@ /usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1822 | std::__insertion_sort(__first, __last, __comp); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_iter.cc +[ 15%] Building CXX object CMakeFiles/rocksdb.dir/db/db_iter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_iter.cc.o -MF CMakeFiles/rocksdb.dir/db/db_iter.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_iter.cc In file included from /usr/include/c++/14/map:62, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:17: /usr/include/c++/14/bits/stl_tree.h: In member function 'void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_erase_aux(const_iterator) [with _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': @@ -1365,24 +1296,198 @@ 2499 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/stl_tree.h:2499:5: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 +[ 15%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_picker_universal.cc In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::erase(const_iterator, const_iterator) [with _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]', inlined from 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::erase(const_iterator, const_iterator) [with _Key = long long unsigned int; _Tp = std::unique_ptr; _Compare = std::less; _Alloc = std::allocator > >]' at /usr/include/c++/14/bits/stl_map.h:1138:26, inlined from 'rocksdb::Status rocksdb::DBImplSecondary::RecoverLogFiles(const std::vector&, rocksdb::SequenceNumber*, std::unordered_set*, rocksdb::JobContext*)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc:338:23: /usr/include/c++/14/bits/stl_tree.h:1235:21: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 1235 | _M_erase_aux(__first, __last); | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ -[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/dbformat.cc -[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/error_handler.cc -[ 17%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_files.cc -[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/event_helpers.cc -[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/experimental.cc -[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/external_sst_file_ingestion_job.cc +[ 15%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_service_job.cc +[ 15%] Building CXX object CMakeFiles/rocksdb.dir/db/dbformat.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/dbformat.cc.o -MF CMakeFiles/rocksdb.dir/db/dbformat.cc.o.d -o CMakeFiles/rocksdb.dir/db/dbformat.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/dbformat.cc +[ 16%] Building CXX object CMakeFiles/rocksdb.dir/db/error_handler.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/error_handler.cc.o -MF CMakeFiles/rocksdb.dir/db/error_handler.cc.o.d -o CMakeFiles/rocksdb.dir/db/error_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/error_handler.cc +[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_state.cc +[ 16%] Building CXX object CMakeFiles/rocksdb.dir/db/event_helpers.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/event_helpers.cc.o -MF CMakeFiles/rocksdb.dir/db/event_helpers.cc.o.d -o CMakeFiles/rocksdb.dir/db/event_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/event_helpers.cc +[ 16%] Building CXX object CMakeFiles/rocksdb.dir/db/experimental.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/experimental.cc.o -MF CMakeFiles/rocksdb.dir/db/experimental.cc.o.d -o CMakeFiles/rocksdb.dir/db/experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/experimental.cc +[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_outputs.cc +[ 16%] Building CXX object CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o -MF CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/external_sst_file_ingestion_job.cc +[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/sst_partitioner.cc +[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/compaction/subcompaction_state.cc +[ 16%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/convenience.cc +[ 16%] Building CXX object CMakeFiles/rocksdb.dir/db/file_indexer.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/file_indexer.cc.o -MF CMakeFiles/rocksdb.dir/db/file_indexer.cc.o.d -o CMakeFiles/rocksdb.dir/db/file_indexer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/file_indexer.cc +[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_filesnapshot.cc +[ 17%] Building CXX object CMakeFiles/rocksdb.dir/db/flush_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/flush_job.cc.o -MF CMakeFiles/rocksdb.dir/db/flush_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/flush_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_job.cc +[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.cc +[ 17%] Building CXX object CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o -MF CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o.d -o CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_scheduler.cc +[ 17%] Building CXX object CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o -MF CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/forward_iterator.cc +[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc +In file included from /usr/include/c++/14/vector:65, + from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.h:8, + from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/compacted_db_impl.cc:6: +/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': +/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 + 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, + | ^~~~~~~~~~~~~~~~ +/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 +In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', + inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, + inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, + inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, + inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: +/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 + 137 | { return std::__do_uninit_copy(__first, __last, __result); } + | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ +[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_write.cc +[ 18%] Building CXX object CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o -MF CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/import_column_family_job.cc +[ 18%] Building CXX object CMakeFiles/rocksdb.dir/db/internal_stats.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/internal_stats.cc.o -MF CMakeFiles/rocksdb.dir/db/internal_stats.cc.o.d -o CMakeFiles/rocksdb.dir/db/internal_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/internal_stats.cc +In file included from /usr/include/c++/14/map:62, + from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:17, + from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc:9: +/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, long long unsigned int>; _KeyOfValue = std::_Select1st, long long unsigned int> >; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': +/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 + 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +[ 18%] Building CXX object CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o -MF CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o.d -o CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/logs_with_prep_tracker.cc +[ 18%] Building CXX object CMakeFiles/rocksdb.dir/db/log_reader.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/log_reader.cc.o -MF CMakeFiles/rocksdb.dir/db/log_reader.cc.o.d -o CMakeFiles/rocksdb.dir/db/log_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_reader.cc +[ 18%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_compaction_flush.cc +In file included from /usr/include/c++/14/map:63: +/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': +/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 + 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 514 | std::tuple(__k), + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 515 | std::tuple<>()); + | ~~~~~~~~~~~~~~~ +[ 18%] Building CXX object CMakeFiles/rocksdb.dir/db/log_writer.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/log_writer.cc.o -MF CMakeFiles/rocksdb.dir/db/log_writer.cc.o.d -o CMakeFiles/rocksdb.dir/db/log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_writer.cc +[ 18%] Building CXX object CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o -MF CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o.d -o CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/malloc_stats.cc +[ 18%] Building CXX object CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o -MF CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o.d -o CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/manifest_ops.cc +[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/memtable.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/memtable.cc.o -MF CMakeFiles/rocksdb.dir/db/memtable.cc.o.d -o CMakeFiles/rocksdb.dir/db/memtable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc +[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/memtable_list.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/memtable_list.cc.o -MF CMakeFiles/rocksdb.dir/db/memtable_list.cc.o.d -o CMakeFiles/rocksdb.dir/db/memtable_list.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable_list.cc +In file included from /usr/include/c++/14/deque:65, + from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:13: +/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator*, vector > >; _ForwardIterator = pair*]': +/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 + 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, + | ^~~~~~~~~~~~~~~~ +/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 +In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator*, std::vector > >; _ForwardIterator = std::pair*; bool _TrivialValueTypes = false]', + inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator*, vector > >; _ForwardIterator = pair*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, + inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator*, vector > >; _ForwardIterator = pair*; _Tp = pair]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, + inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::pair; _Alloc = std::allocator >]' at /usr/include/c++/14/bits/stl_vector.h:606:31, + inlined from 'rocksdb::VersionEdit::VersionEdit(const rocksdb::VersionEdit&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_edit.h:420:7: +/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 + 137 | { return std::__do_uninit_copy(__first, __last, __result); } + | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc: In member function 'void rocksdb::MemTable::UpdateOldestKeyTime()': +/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: error: insn does not satisfy its constraints: + 269 | } + | ^ +(insn 271 270 272 13 (set (reg:CC_DNE 100 cc) + (compare:CC_DNE (ior:SI (ne:SI (reg:SI 0 r0 [164]) + (const_int -1 [0xffffffffffffffff])) + (ne:SI (reg:SI 1 r1 [+4 ]) + (const_int -1 [0xffffffffffffffff]))) + (const_int 0 [0]))) "/usr/include/c++/14/bits/atomic_base.h":573:36 343 {*cmp_ior} + (expr_list:REG_DEAD (reg:SI 1 r1 [+4 ]) + (expr_list:REG_DEAD (reg:SI 0 r0 [164]) + (nil)))) +during RTL pass: cprop_hardreg +/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: internal compiler error: in extract_constrain_insn, at recog.cc:2713 +0x6a4a17 internal_error(char const*, ...) + ???:0 +0x6a4acd fancy_abort(char const*, int, char const*) + ???:0 +0x3d10f1 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) + ???:0 +0x3d1123 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) + ???:0 +0x946eb5 extract_constrain_insn(rtx_insn*) + ???:0 +Please submit a full bug report, with preprocessed source (by using -freport-bug). +Please include the complete backtrace with any bug report. +See for instructions. +/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*]': +/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 + 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, + | ^~~~~~~~~~~~~~~~ +/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 +In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*; bool _TrivialValueTypes = false]', + inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, + inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator > >; _ForwardIterator = rocksdb::IngestedFileInfo*; _Tp = rocksdb::IngestedFileInfo]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, + inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator > >; _Tp = rocksdb::IngestedFileInfo; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, + inlined from 'void std::vector<_Tp, _Alloc>::_M_assign_aux(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator > >; _Tp = rocksdb::IngestedFileInfo; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:331:40, + inlined from 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::IngestedFileInfo; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:829:17, + inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::IngestedFileInfo; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, + inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::IngestedFileInfo; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, + inlined from 'rocksdb::ExternalSstFileIngestionJob::ExternalSstFileIngestionJob(const rocksdb::ExternalSstFileIngestionJob&)' at /build/reproducible-path/rocksdb-9.10.0/db/external_sst_file_ingestion_job.h:182:7, + inlined from 'void std::_Construct(_Tp*, _Args&& ...) [with _Tp = rocksdb::ExternalSstFileIngestionJob; _Args = {const rocksdb::ExternalSstFileIngestionJob&}]' at /usr/include/c++/14/bits/stl_construct.h:119:7, + inlined from '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = const rocksdb::ExternalSstFileIngestionJob*; _ForwardIterator = rocksdb::ExternalSstFileIngestionJob*]' at /usr/include/c++/14/bits/stl_uninitialized.h:120:21: +/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 + 137 | { return std::__do_uninit_copy(__first, __last, __result); } + | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ +In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', + inlined from 'void rocksdb::DBImpl::PersistStats()' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc:1080:74: +/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 + 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 514 | std::tuple(__k), + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 515 | std::tuple<>()); + | ~~~~~~~~~~~~~~~ +In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', + inlined from 'void rocksdb::DBImpl::PersistStats()' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.cc:1080:33: +/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 + 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 514 | std::tuple(__k), + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 515 | std::tuple<>()); + | ~~~~~~~~~~~~~~~ +[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/merge_helper.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/merge_helper.cc.o -MF CMakeFiles/rocksdb.dir/db/merge_helper.cc.o.d -o CMakeFiles/rocksdb.dir/db/merge_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_helper.cc +[ 19%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_files.cc +[ 19%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_follower.cc +[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/merge_operator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/merge_operator.cc.o -MF CMakeFiles/rocksdb.dir/db/merge_operator.cc.o.d -o CMakeFiles/rocksdb.dir/db/merge_operator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_operator.cc +[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/output_validator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/output_validator.cc.o -MF CMakeFiles/rocksdb.dir/db/output_validator.cc.o.d -o CMakeFiles/rocksdb.dir/db/output_validator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/output_validator.cc +[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o -MF CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o.d -o CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/periodic_task_scheduler.cc +[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o -MF CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o.d -o CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc In file included from /usr/include/c++/14/deque:65, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:13, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_files.cc:13: @@ -1399,18 +1504,149532 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator*, std::vector > >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 17%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_follower.cc -[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/file_indexer.cc -[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_job.cc -[ 17%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_scheduler.cc -[ 17%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_open.cc -[ 18%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/forward_iterator.cc +In file included from /usr/include/c++/14/map:62, + from /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h:11, + from /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc:6: +/usr/include/c++/14/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const long long unsigned int&, rocksdb::RangeDelAggregator::StripeRep}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': +/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 + 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from /usr/include/c++/14/map:63: +In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const long long unsigned int&, rocksdb::RangeDelAggregator::StripeRep}; _Key = long long unsigned int; _Tp = rocksdb::RangeDelAggregator::StripeRep; _Compare = std::less; _Alloc = std::allocator >]', + inlined from 'std::pair, std::_Select1st >, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const long long unsigned int&, rocksdb::RangeDelAggregator::StripeRep}; _Key = long long unsigned int; _Tp = rocksdb::RangeDelAggregator::StripeRep; _Compare = std::less; _Alloc = std::allocator >]' at /usr/include/c++/14/bits/stl_map.h:601:22, + inlined from 'virtual void rocksdb::CompactionRangeDelAggregator::AddTombstones(std::unique_ptr, const rocksdb::InternalKey*, const rocksdb::InternalKey*)' at /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc:386:45: +/usr/include/c++/14/bits/stl_map.h:640:45: note: parameter passing for argument of type 'std::map::const_iterator' {aka 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator'} changed in GCC 7.1 + 640 | return _M_t._M_emplace_hint_unique(__pos, + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ + 641 | std::forward<_Args>(__args)...); + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Preprocessed source stored into /tmp/ccHR8GMf.out file, please attach this to your bugreport. +=== BEGIN GCC DUMP === +13943: // Target: arm-linux-gnueabihf +13943: // Configured with: ../src/configure -v --with-pkgversion='Debian 14.2.0-16' --with-bugurl=file:///usr/share/doc/gcc-14/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr --with-gcc-major-version-only --program-suffix=-14 --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 +13943: // Thread model: posix +13943: // Supported LTO compression algorithms: zlib zstd +13943: // gcc version 14.2.0 (Debian 14.2.0-16) +13943: // +13943: // /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc: In member function 'void rocksdb::MemTable::UpdateOldestKeyTime()': +13943: // /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: error: insn does not satisfy its constraints: +13943: // 269 | } +13943: // | ^ +13943: // (insn 271 270 272 13 (set (reg:CC_DNE 100 cc) +13943: // (compare:CC_DNE (ior:SI (ne:SI (reg:SI 0 r0 [164]) +13943: // (const_int -1 [0xffffffffffffffff])) +13943: // (ne:SI (reg:SI 1 r1 [+4 ]) +13943: // (const_int -1 [0xffffffffffffffff]))) +13943: // (const_int 0 [0]))) "/usr/include/c++/14/bits/atomic_base.h":573:36 343 {*cmp_ior} +13943: // (expr_list:REG_DEAD (reg:SI 1 r1 [+4 ]) +13943: // (expr_list:REG_DEAD (reg:SI 0 r0 [164]) +13943: // (nil)))) +13943: // during RTL pass: cprop_hardreg +13943: // /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: internal compiler error: in extract_constrain_insn, at recog.cc:2713 +13943: // 0x6a4a17 internal_error(char const*, ...) +13943: // ???:0 +13943: // 0x6a4acd fancy_abort(char const*, int, char const*) +13943: // ???:0 +13943: // 0x3d10f1 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) +13943: // ???:0 +13943: // 0x3d1123 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) +13943: // ???:0 +13943: // 0x946eb5 extract_constrain_insn(rtx_insn*) +13943: // ???:0 +13943: // Please submit a full bug report, with preprocessed source (by using -freport-bug). +13943: // Please include the complete backtrace with any bug report. +13943: // See for instructions. +13943: +13943: // /usr/libexec/gcc/arm-linux-gnueabihf/14/cc1plus -quiet -I /build/reproducible-path/rocksdb-9.10.0 -I /build/reproducible-path/rocksdb-9.10.0/include -imultilib . -imultiarch arm-linux-gnueabihf -MD CMakeFiles/rocksdb.dir/db/memtable.cc.d -MF CMakeFiles/rocksdb.dir/db/memtable.cc.o.d -MT CMakeFiles/rocksdb.dir/db/memtable.cc.o -D_GNU_SOURCE -D_REENTRANT -D BZIP2 -D GFLAGS=1 -D GFLAGS_IS_A_DLL=0 -D LZ4 -D OS_LINUX -D ROCKSDB_AUXV_GETAUXVAL_PRESENT -D ROCKSDB_FALLOCATE_PRESENT -D ROCKSDB_LIB_IO_POSIX -D ROCKSDB_MALLOC_USABLE_SIZE -D ROCKSDB_NO_DYNAMIC_EXTENSION -D ROCKSDB_PLATFORM_POSIX -D ROCKSDB_PTHREAD_ADAPTIVE_MUTEX -D ROCKSDB_RANGESYNC_PRESENT -D ROCKSDB_SCHED_GETCPU_PRESENT -D SNAPPY -D ZLIB -D ZSTD -D _LARGEFILE_SOURCE -D _FILE_OFFSET_BITS=64 -D _TIME_BITS=64 -D _FORTIFY_SOURCE=2 -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc -quiet -dumpdir CMakeFiles/rocksdb.dir/db/ -dumpbase memtable.cc.cc -dumpbase-ext .cc -mfloat-abi=hard -mtls-dialect=gnu -mthumb -mlibarch=armv8-a+crc+crypto -march=armv8-a+crc+crypto -g -O2 -Wformat=1 -Werror=format-security -Wdate-time -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual=2 -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -Wno-unused-function -std=gnu++17 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -fno-omit-frame-pointer -fno-builtin-memcmp -o - -frandom-seed=0 -fdump-noaddr +13943: +13943: # 0 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf//" +13943: # 0 "" +13943: # 0 "" +13943: # 1 "/usr/include/stdc-predef.h" 1 3 4 +13943: # 0 "" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: +13943: # 1 "/usr/include/c++/14/atomic" 1 3 +13943: # 35 "/usr/include/c++/14/atomic" 3 +13943: +13943: # 36 "/usr/include/c++/14/atomic" 3 +13943: # 48 "/usr/include/c++/14/atomic" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 1 3 +13943: # 33 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: +13943: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: # 308 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: +13943: # 308 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: namespace std +13943: { +13943: typedef unsigned int size_t; +13943: typedef int ptrdiff_t; +13943: +13943: +13943: typedef decltype(nullptr) nullptr_t; +13943: +13943: +13943: #pragma GCC visibility push(default) +13943: +13943: +13943: extern "C++" __attribute__ ((__noreturn__, __always_inline__)) +13943: inline void __terminate() noexcept +13943: { +13943: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); +13943: terminate(); +13943: } +13943: #pragma GCC visibility pop +13943: } +13943: # 341 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: namespace std +13943: { +13943: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +13943: } +13943: namespace __gnu_cxx +13943: { +13943: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +13943: } +13943: # 534 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: namespace std +13943: { +13943: #pragma GCC visibility push(default) +13943: +13943: +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: constexpr inline bool +13943: __is_constant_evaluated() noexcept +13943: { +13943: +13943: +13943: +13943: +13943: +13943: return __builtin_is_constant_evaluated(); +13943: +13943: +13943: +13943: } +13943: #pragma GCC visibility pop +13943: } +13943: # 573 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: namespace std +13943: { +13943: #pragma GCC visibility push(default) +13943: +13943: extern "C++" __attribute__ ((__noreturn__)) +13943: void +13943: __glibcxx_assert_fail +13943: (const char* __file, int __line, const char* __function, +13943: const char* __condition) +13943: noexcept; +13943: #pragma GCC visibility pop +13943: } +13943: # 604 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: namespace std +13943: { +13943: __attribute__((__always_inline__,__visibility__("default"))) +13943: inline void +13943: __glibcxx_assert_fail() +13943: { } +13943: } +13943: # 683 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/os_defines.h" 1 3 +13943: # 39 "/usr/include/arm-linux-gnueabihf/c++/14/bits/os_defines.h" 3 +13943: # 1 "/usr/include/features.h" 1 3 4 +13943: # 402 "/usr/include/features.h" 3 4 +13943: # 1 "/usr/include/features-time64.h" 1 3 4 +13943: # 20 "/usr/include/features-time64.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 21 "/usr/include/features-time64.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 +13943: # 22 "/usr/include/features-time64.h" 2 3 4 +13943: # 403 "/usr/include/features.h" 2 3 4 +13943: # 510 "/usr/include/features.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 1 3 4 +13943: # 730 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 731 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 +13943: # 732 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 +13943: # 511 "/usr/include/features.h" 2 3 4 +13943: # 534 "/usr/include/features.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 1 3 4 +13943: # 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 1 3 4 +13943: # 11 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 2 3 4 +13943: # 535 "/usr/include/features.h" 2 3 4 +13943: # 40 "/usr/include/arm-linux-gnueabihf/c++/14/bits/os_defines.h" 2 3 +13943: # 684 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 2 3 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/cpu_defines.h" 1 3 +13943: # 687 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 2 3 +13943: # 890 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +13943: # 1 "/usr/include/c++/14/pstl/pstl_config.h" 1 3 +13943: # 891 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 2 3 +13943: # 50 "/usr/include/c++/14/bits/version.h" 2 3 +13943: # 49 "/usr/include/c++/14/atomic" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/atomic_base.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/new" 1 3 +13943: # 38 "/usr/include/c++/14/new" 3 +13943: +13943: # 39 "/usr/include/c++/14/new" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/exception.h" 1 3 +13943: # 34 "/usr/include/c++/14/bits/exception.h" 3 +13943: +13943: # 35 "/usr/include/c++/14/bits/exception.h" 3 +13943: +13943: +13943: +13943: extern "C++" { +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: # 59 "/usr/include/c++/14/bits/exception.h" 3 +13943: class exception +13943: { +13943: public: +13943: exception() noexcept { } +13943: virtual ~exception() noexcept; +13943: +13943: exception(const exception&) = default; +13943: exception& operator=(const exception&) = default; +13943: exception(exception&&) = default; +13943: exception& operator=(exception&&) = default; +13943: +13943: +13943: +13943: +13943: virtual const char* +13943: what() const noexcept; +13943: }; +13943: +13943: +13943: +13943: } +13943: +13943: } +13943: # 42 "/usr/include/c++/14/new" 2 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 47 "/usr/include/c++/14/new" 2 3 +13943: +13943: #pragma GCC visibility push(default) +13943: +13943: extern "C++" { +13943: +13943: namespace std +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: class bad_alloc : public exception +13943: { +13943: public: +13943: bad_alloc() throw() { } +13943: +13943: +13943: bad_alloc(const bad_alloc&) = default; +13943: bad_alloc& operator=(const bad_alloc&) = default; +13943: +13943: +13943: +13943: +13943: virtual ~bad_alloc() throw(); +13943: +13943: +13943: virtual const char* what() const throw(); +13943: }; +13943: +13943: +13943: class bad_array_new_length : public bad_alloc +13943: { +13943: public: +13943: bad_array_new_length() throw() { } +13943: +13943: +13943: +13943: virtual ~bad_array_new_length() throw(); +13943: +13943: +13943: virtual const char* what() const throw(); +13943: }; +13943: +13943: +13943: +13943: enum class align_val_t: size_t {}; +13943: +13943: +13943: struct nothrow_t +13943: { +13943: +13943: explicit nothrow_t() = default; +13943: +13943: }; +13943: +13943: extern const nothrow_t nothrow; +13943: +13943: +13943: +13943: typedef void (*new_handler)(); +13943: +13943: +13943: +13943: new_handler set_new_handler(new_handler) throw(); +13943: +13943: +13943: +13943: new_handler get_new_handler() noexcept; +13943: +13943: } +13943: # 131 "/usr/include/c++/14/new" 3 +13943: [[__nodiscard__]] void* operator new(std::size_t) +13943: __attribute__((__externally_visible__)); +13943: [[__nodiscard__]] void* operator new[](std::size_t) +13943: __attribute__((__externally_visible__)); +13943: void operator delete(void*) noexcept +13943: __attribute__((__externally_visible__)); +13943: void operator delete[](void*) noexcept +13943: __attribute__((__externally_visible__)); +13943: +13943: void operator delete(void*, std::size_t) noexcept +13943: __attribute__((__externally_visible__)); +13943: void operator delete[](void*, std::size_t) noexcept +13943: __attribute__((__externally_visible__)); +13943: +13943: [[__nodiscard__]] void* operator new(std::size_t, const std::nothrow_t&) noexcept +13943: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +13943: [[__nodiscard__]] void* operator new[](std::size_t, const std::nothrow_t&) noexcept +13943: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +13943: void operator delete(void*, const std::nothrow_t&) noexcept +13943: __attribute__((__externally_visible__)); +13943: void operator delete[](void*, const std::nothrow_t&) noexcept +13943: __attribute__((__externally_visible__)); +13943: +13943: [[__nodiscard__]] void* operator new(std::size_t, std::align_val_t) +13943: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +13943: [[__nodiscard__]] void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&) +13943: noexcept __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +13943: void operator delete(void*, std::align_val_t) +13943: noexcept __attribute__((__externally_visible__)); +13943: void operator delete(void*, std::align_val_t, const std::nothrow_t&) +13943: noexcept __attribute__((__externally_visible__)); +13943: [[__nodiscard__]] void* operator new[](std::size_t, std::align_val_t) +13943: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +13943: [[__nodiscard__]] void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&) +13943: noexcept __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +13943: void operator delete[](void*, std::align_val_t) +13943: noexcept __attribute__((__externally_visible__)); +13943: void operator delete[](void*, std::align_val_t, const std::nothrow_t&) +13943: noexcept __attribute__((__externally_visible__)); +13943: +13943: void operator delete(void*, std::size_t, std::align_val_t) +13943: noexcept __attribute__((__externally_visible__)); +13943: void operator delete[](void*, std::size_t, std::align_val_t) +13943: noexcept __attribute__((__externally_visible__)); +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] inline void* operator new(std::size_t, void* __p) noexcept +13943: { return __p; } +13943: [[__nodiscard__]] inline void* operator new[](std::size_t, void* __p) noexcept +13943: { return __p; } +13943: +13943: +13943: inline void operator delete (void*, void*) noexcept { } +13943: inline void operator delete[](void*, void*) noexcept { } +13943: +13943: } +13943: +13943: +13943: namespace std +13943: { +13943: +13943: +13943: template +13943: [[nodiscard]] constexpr _Tp* +13943: launder(_Tp* __p) noexcept +13943: { return __builtin_launder(__p); } +13943: +13943: +13943: +13943: +13943: template +13943: void launder(_Ret (*)(_Args...) noexcept (_NE)) = delete; +13943: template +13943: void launder(_Ret (*)(_Args......) noexcept (_NE)) = delete; +13943: +13943: void launder(void*) = delete; +13943: void launder(const void*) = delete; +13943: void launder(volatile void*) = delete; +13943: void launder(const volatile void*) = delete; +13943: +13943: +13943: +13943: inline constexpr size_t hardware_destructive_interference_size = 64; +13943: inline constexpr size_t hardware_constructive_interference_size = 64; +13943: +13943: } +13943: # 236 "/usr/include/c++/14/new" 3 +13943: #pragma GCC visibility pop +13943: # 37 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdint.h" 1 3 4 +13943: # 9 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdint.h" 3 4 +13943: # 1 "/usr/include/stdint.h" 1 3 4 +13943: # 26 "/usr/include/stdint.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +13943: # 27 "/usr/include/stdint.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 28 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 +13943: # 29 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +13943: +13943: +13943: typedef unsigned char __u_char; +13943: typedef unsigned short int __u_short; +13943: typedef unsigned int __u_int; +13943: typedef unsigned long int __u_long; +13943: +13943: +13943: typedef signed char __int8_t; +13943: typedef unsigned char __uint8_t; +13943: typedef signed short int __int16_t; +13943: typedef unsigned short int __uint16_t; +13943: typedef signed int __int32_t; +13943: typedef unsigned int __uint32_t; +13943: +13943: +13943: +13943: +13943: __extension__ typedef signed long long int __int64_t; +13943: __extension__ typedef unsigned long long int __uint64_t; +13943: +13943: +13943: +13943: typedef __int8_t __int_least8_t; +13943: typedef __uint8_t __uint_least8_t; +13943: typedef __int16_t __int_least16_t; +13943: typedef __uint16_t __uint_least16_t; +13943: typedef __int32_t __int_least32_t; +13943: typedef __uint32_t __uint_least32_t; +13943: typedef __int64_t __int_least64_t; +13943: typedef __uint64_t __uint_least64_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: __extension__ typedef long long int __quad_t; +13943: __extension__ typedef unsigned long long int __u_quad_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __extension__ typedef long long int __intmax_t; +13943: __extension__ typedef unsigned long long int __uintmax_t; +13943: # 141 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 1 3 4 +13943: # 142 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/time64.h" 1 3 4 +13943: # 143 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +13943: +13943: +13943: __extension__ typedef __uint64_t __dev_t; +13943: __extension__ typedef unsigned int __uid_t; +13943: __extension__ typedef unsigned int __gid_t; +13943: __extension__ typedef unsigned long int __ino_t; +13943: __extension__ typedef __uint64_t __ino64_t; +13943: __extension__ typedef unsigned int __mode_t; +13943: __extension__ typedef unsigned int __nlink_t; +13943: __extension__ typedef long int __off_t; +13943: __extension__ typedef __int64_t __off64_t; +13943: __extension__ typedef int __pid_t; +13943: __extension__ typedef struct { int __val[2]; } __fsid_t; +13943: __extension__ typedef long int __clock_t; +13943: __extension__ typedef unsigned long int __rlim_t; +13943: __extension__ typedef __uint64_t __rlim64_t; +13943: __extension__ typedef unsigned int __id_t; +13943: __extension__ typedef long int __time_t; +13943: __extension__ typedef unsigned int __useconds_t; +13943: __extension__ typedef long int __suseconds_t; +13943: __extension__ typedef __int64_t __suseconds64_t; +13943: +13943: __extension__ typedef int __daddr_t; +13943: __extension__ typedef int __key_t; +13943: +13943: +13943: __extension__ typedef int __clockid_t; +13943: +13943: +13943: __extension__ typedef void * __timer_t; +13943: +13943: +13943: __extension__ typedef long int __blksize_t; +13943: +13943: +13943: +13943: +13943: __extension__ typedef long int __blkcnt_t; +13943: __extension__ typedef __int64_t __blkcnt64_t; +13943: +13943: +13943: __extension__ typedef unsigned long int __fsblkcnt_t; +13943: __extension__ typedef __uint64_t __fsblkcnt64_t; +13943: +13943: +13943: __extension__ typedef unsigned long int __fsfilcnt_t; +13943: __extension__ typedef __uint64_t __fsfilcnt64_t; +13943: +13943: +13943: __extension__ typedef int __fsword_t; +13943: +13943: __extension__ typedef int __ssize_t; +13943: +13943: +13943: __extension__ typedef long int __syscall_slong_t; +13943: +13943: __extension__ typedef unsigned long int __syscall_ulong_t; +13943: +13943: +13943: +13943: typedef __off64_t __loff_t; +13943: typedef char *__caddr_t; +13943: +13943: +13943: __extension__ typedef int __intptr_t; +13943: +13943: +13943: __extension__ typedef unsigned int __socklen_t; +13943: +13943: +13943: +13943: +13943: typedef int __sig_atomic_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __extension__ typedef __int64_t __time64_t; +13943: # 28 "/usr/include/stdint.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 1 3 4 +13943: # 29 "/usr/include/stdint.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 30 "/usr/include/stdint.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 3 4 +13943: typedef __int8_t int8_t; +13943: typedef __int16_t int16_t; +13943: typedef __int32_t int32_t; +13943: typedef __int64_t int64_t; +13943: # 35 "/usr/include/stdint.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 3 4 +13943: typedef __uint8_t uint8_t; +13943: typedef __uint16_t uint16_t; +13943: typedef __uint32_t uint32_t; +13943: typedef __uint64_t uint64_t; +13943: # 38 "/usr/include/stdint.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 1 3 4 +13943: # 25 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 3 4 +13943: typedef __int_least8_t int_least8_t; +13943: typedef __int_least16_t int_least16_t; +13943: typedef __int_least32_t int_least32_t; +13943: typedef __int_least64_t int_least64_t; +13943: +13943: +13943: typedef __uint_least8_t uint_least8_t; +13943: typedef __uint_least16_t uint_least16_t; +13943: typedef __uint_least32_t uint_least32_t; +13943: typedef __uint_least64_t uint_least64_t; +13943: # 42 "/usr/include/stdint.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: typedef signed char int_fast8_t; +13943: +13943: +13943: +13943: +13943: +13943: typedef int int_fast16_t; +13943: typedef int int_fast32_t; +13943: __extension__ +13943: typedef long long int int_fast64_t; +13943: +13943: +13943: +13943: typedef unsigned char uint_fast8_t; +13943: +13943: +13943: +13943: +13943: +13943: typedef unsigned int uint_fast16_t; +13943: typedef unsigned int uint_fast32_t; +13943: __extension__ +13943: typedef unsigned long long int uint_fast64_t; +13943: # 82 "/usr/include/stdint.h" 3 4 +13943: typedef int intptr_t; +13943: +13943: +13943: typedef unsigned int uintptr_t; +13943: +13943: +13943: +13943: +13943: typedef __intmax_t intmax_t; +13943: typedef __uintmax_t uintmax_t; +13943: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdint.h" 2 3 4 +13943: # 38 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/atomic_lockfree_defines.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/atomic_lockfree_defines.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/atomic_lockfree_defines.h" 3 +13943: # 39 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/move.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/move.h" 3 +13943: # 1 "/usr/include/c++/14/type_traits" 1 3 +13943: # 32 "/usr/include/c++/14/type_traits" 3 +13943: +13943: # 33 "/usr/include/c++/14/type_traits" 3 +13943: # 63 "/usr/include/c++/14/type_traits" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 64 "/usr/include/c++/14/type_traits" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: class reference_wrapper; +13943: # 86 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct integral_constant +13943: { +13943: static constexpr _Tp value = __v; +13943: using value_type = _Tp; +13943: using type = integral_constant<_Tp, __v>; +13943: constexpr operator value_type() const noexcept { return value; } +13943: +13943: +13943: constexpr value_type operator()() const noexcept { return value; } +13943: +13943: }; +13943: # 106 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: using __bool_constant = integral_constant; +13943: +13943: +13943: +13943: using true_type = __bool_constant; +13943: +13943: +13943: using false_type = __bool_constant; +13943: +13943: +13943: +13943: +13943: template +13943: using bool_constant = __bool_constant<__v>; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct enable_if +13943: { }; +13943: +13943: +13943: template +13943: struct enable_if +13943: { using type = _Tp; }; +13943: +13943: +13943: template +13943: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; +13943: +13943: template +13943: struct __conditional +13943: { +13943: template +13943: using type = _Tp; +13943: }; +13943: +13943: template<> +13943: struct __conditional +13943: { +13943: template +13943: using type = _Up; +13943: }; +13943: +13943: +13943: template +13943: using __conditional_t +13943: = typename __conditional<_Cond>::template type<_If, _Else>; +13943: +13943: +13943: template +13943: struct __type_identity +13943: { using type = _Type; }; +13943: +13943: template +13943: using __type_identity_t = typename __type_identity<_Tp>::type; +13943: +13943: namespace __detail +13943: { +13943: +13943: template +13943: using __first_t = _Tp; +13943: +13943: +13943: template +13943: auto __or_fn(int) -> __first_t...>; +13943: +13943: template +13943: auto __or_fn(...) -> true_type; +13943: +13943: template +13943: auto __and_fn(int) -> __first_t...>; +13943: +13943: template +13943: auto __and_fn(...) -> false_type; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: struct __or_ +13943: : decltype(__detail::__or_fn<_Bn...>(0)) +13943: { }; +13943: +13943: template +13943: struct __and_ +13943: : decltype(__detail::__and_fn<_Bn...>(0)) +13943: { }; +13943: +13943: template +13943: struct __not_ +13943: : __bool_constant +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool __or_v = __or_<_Bn...>::value; +13943: template +13943: inline constexpr bool __and_v = __and_<_Bn...>::value; +13943: +13943: namespace __detail +13943: { +13943: template +13943: struct __disjunction_impl +13943: { using type = _B1; }; +13943: +13943: template +13943: struct __disjunction_impl<__enable_if_t, _B1, _B2, _Bn...> +13943: { using type = typename __disjunction_impl::type; }; +13943: +13943: template +13943: struct __conjunction_impl +13943: { using type = _B1; }; +13943: +13943: template +13943: struct __conjunction_impl<__enable_if_t, _B1, _B2, _Bn...> +13943: { using type = typename __conjunction_impl::type; }; +13943: } +13943: +13943: +13943: template +13943: struct conjunction +13943: : __detail::__conjunction_impl::type +13943: { }; +13943: +13943: template<> +13943: struct conjunction<> +13943: : true_type +13943: { }; +13943: +13943: template +13943: struct disjunction +13943: : __detail::__disjunction_impl::type +13943: { }; +13943: +13943: template<> +13943: struct disjunction<> +13943: : false_type +13943: { }; +13943: +13943: template +13943: struct negation +13943: : __not_<_Pp>::type +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool conjunction_v = conjunction<_Bn...>::value; +13943: +13943: template +13943: inline constexpr bool disjunction_v = disjunction<_Bn...>::value; +13943: +13943: template +13943: inline constexpr bool negation_v = negation<_Pp>::value; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_reference; +13943: template +13943: struct is_function; +13943: template +13943: struct is_void; +13943: template +13943: struct remove_cv; +13943: template +13943: struct is_const; +13943: +13943: +13943: template +13943: struct __is_array_unknown_bounds; +13943: +13943: +13943: +13943: +13943: template +13943: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) +13943: { return {}; } +13943: +13943: template +13943: constexpr typename __or_< +13943: is_reference<_NestedType>, +13943: is_function<_NestedType>, +13943: is_void<_NestedType>, +13943: __is_array_unknown_bounds<_NestedType> +13943: >::type __is_complete_or_unbounded(_TypeIdentity) +13943: { return {}; } +13943: +13943: +13943: template +13943: using __remove_cv_t = typename remove_cv<_Tp>::type; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_void +13943: : public false_type { }; +13943: +13943: template<> +13943: struct is_void +13943: : public true_type { }; +13943: +13943: template<> +13943: struct is_void +13943: : public true_type { }; +13943: +13943: template<> +13943: struct is_void +13943: : public true_type { }; +13943: +13943: template<> +13943: struct is_void +13943: : public true_type { }; +13943: +13943: +13943: template +13943: struct __is_integral_helper +13943: : public false_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_integral_helper +13943: : public true_type { }; +13943: # 460 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_integral +13943: : public __is_integral_helper<__remove_cv_t<_Tp>>::type +13943: { }; +13943: +13943: +13943: template +13943: struct __is_floating_point_helper +13943: : public false_type { }; +13943: +13943: template<> +13943: struct __is_floating_point_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_floating_point_helper +13943: : public true_type { }; +13943: +13943: template<> +13943: struct __is_floating_point_helper +13943: : public true_type { }; +13943: # 520 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_floating_point +13943: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct is_array +13943: : public __bool_constant<__is_array(_Tp)> +13943: { }; +13943: # 545 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct __is_pointer_helper +13943: : public false_type { }; +13943: +13943: template +13943: struct __is_pointer_helper<_Tp*> +13943: : public true_type { }; +13943: +13943: +13943: template +13943: struct is_pointer +13943: : public __is_pointer_helper<__remove_cv_t<_Tp>>::type +13943: { }; +13943: +13943: +13943: template +13943: struct is_lvalue_reference +13943: : public false_type { }; +13943: +13943: template +13943: struct is_lvalue_reference<_Tp&> +13943: : public true_type { }; +13943: +13943: +13943: template +13943: struct is_rvalue_reference +13943: : public false_type { }; +13943: +13943: template +13943: struct is_rvalue_reference<_Tp&&> +13943: : public true_type { }; +13943: +13943: +13943: +13943: template +13943: struct is_member_object_pointer +13943: : public __bool_constant<__is_member_object_pointer(_Tp)> +13943: { }; +13943: # 601 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_member_function_pointer +13943: : public __bool_constant<__is_member_function_pointer(_Tp)> +13943: { }; +13943: # 622 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_enum +13943: : public __bool_constant<__is_enum(_Tp)> +13943: { }; +13943: +13943: +13943: template +13943: struct is_union +13943: : public __bool_constant<__is_union(_Tp)> +13943: { }; +13943: +13943: +13943: template +13943: struct is_class +13943: : public __bool_constant<__is_class(_Tp)> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct is_function +13943: : public __bool_constant<__is_function(_Tp)> +13943: { }; +13943: # 661 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_null_pointer +13943: : public false_type { }; +13943: +13943: template<> +13943: struct is_null_pointer +13943: : public true_type { }; +13943: +13943: template<> +13943: struct is_null_pointer +13943: : public true_type { }; +13943: +13943: template<> +13943: struct is_null_pointer +13943: : public true_type { }; +13943: +13943: template<> +13943: struct is_null_pointer +13943: : public true_type { }; +13943: +13943: +13943: +13943: template +13943: struct __is_nullptr_t +13943: : public is_null_pointer<_Tp> +13943: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead"))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_reference +13943: : public __bool_constant<__is_reference(_Tp)> +13943: { }; +13943: # 715 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_arithmetic +13943: : public __or_, is_floating_point<_Tp>>::type +13943: { }; +13943: +13943: +13943: template +13943: struct is_fundamental +13943: : public __or_, is_void<_Tp>, +13943: is_null_pointer<_Tp>>::type +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct is_object +13943: : public __bool_constant<__is_object(_Tp)> +13943: { }; +13943: # 741 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_member_pointer; +13943: +13943: +13943: template +13943: struct is_scalar +13943: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, +13943: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type +13943: { }; +13943: +13943: +13943: template +13943: struct is_compound +13943: : public __bool_constant::value> { }; +13943: +13943: +13943: +13943: template +13943: struct is_member_pointer +13943: : public __bool_constant<__is_member_pointer(_Tp)> +13943: { }; +13943: # 779 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_same; +13943: +13943: +13943: template +13943: using __is_one_of = __or_...>; +13943: +13943: +13943: __extension__ +13943: template +13943: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, +13943: signed char, signed short, signed int, signed long, +13943: signed long long +13943: # 804 "/usr/include/c++/14/type_traits" 3 +13943: >; +13943: +13943: +13943: __extension__ +13943: template +13943: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, +13943: unsigned char, unsigned short, unsigned int, unsigned long, +13943: unsigned long long +13943: # 824 "/usr/include/c++/14/type_traits" 3 +13943: >; +13943: +13943: +13943: template +13943: using __is_standard_integer +13943: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>; +13943: +13943: +13943: template using __void_t = void; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_const +13943: : public false_type { }; +13943: +13943: template +13943: struct is_const<_Tp const> +13943: : public true_type { }; +13943: +13943: +13943: template +13943: struct is_volatile +13943: : public false_type { }; +13943: +13943: template +13943: struct is_volatile<_Tp volatile> +13943: : public true_type { }; +13943: +13943: +13943: template +13943: struct is_trivial +13943: : public __bool_constant<__is_trivial(_Tp)> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_trivially_copyable +13943: : public __bool_constant<__is_trivially_copyable(_Tp)> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_standard_layout +13943: : public __bool_constant<__is_standard_layout(_Tp)> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct +13943: +13943: is_pod +13943: : public __bool_constant<__is_pod(_Tp)> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct +13943: [[__deprecated__]] +13943: is_literal_type +13943: : public __bool_constant<__is_literal_type(_Tp)> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_empty +13943: : public __bool_constant<__is_empty(_Tp)> +13943: { }; +13943: +13943: +13943: template +13943: struct is_polymorphic +13943: : public __bool_constant<__is_polymorphic(_Tp)> +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: struct is_final +13943: : public __bool_constant<__is_final(_Tp)> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct is_abstract +13943: : public __bool_constant<__is_abstract(_Tp)> +13943: { }; +13943: +13943: +13943: template::value> +13943: struct __is_signed_helper +13943: : public false_type { }; +13943: +13943: template +13943: struct __is_signed_helper<_Tp, true> +13943: : public __bool_constant<_Tp(-1) < _Tp(0)> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct is_signed +13943: : public __is_signed_helper<_Tp>::type +13943: { }; +13943: +13943: +13943: template +13943: struct is_unsigned +13943: : public __and_, __not_>>::type +13943: { }; +13943: +13943: +13943: template +13943: _Up +13943: __declval(int); +13943: +13943: template +13943: _Tp +13943: __declval(long); +13943: +13943: +13943: template +13943: auto declval() noexcept -> decltype(__declval<_Tp>(0)); +13943: +13943: template +13943: struct remove_all_extents; +13943: +13943: +13943: template +13943: struct __is_array_known_bounds +13943: : public false_type +13943: { }; +13943: +13943: template +13943: struct __is_array_known_bounds<_Tp[_Size]> +13943: : public true_type +13943: { }; +13943: +13943: template +13943: struct __is_array_unknown_bounds +13943: : public false_type +13943: { }; +13943: +13943: template +13943: struct __is_array_unknown_bounds<_Tp[]> +13943: : public true_type +13943: { }; +13943: # 1006 "/usr/include/c++/14/type_traits" 3 +13943: struct __do_is_destructible_impl +13943: { +13943: template().~_Tp())> +13943: static true_type __test(int); +13943: +13943: template +13943: static false_type __test(...); +13943: }; +13943: +13943: template +13943: struct __is_destructible_impl +13943: : public __do_is_destructible_impl +13943: { +13943: using type = decltype(__test<_Tp>(0)); +13943: }; +13943: +13943: template, +13943: __is_array_unknown_bounds<_Tp>, +13943: is_function<_Tp>>::value, +13943: bool = __or_, is_scalar<_Tp>>::value> +13943: struct __is_destructible_safe; +13943: +13943: template +13943: struct __is_destructible_safe<_Tp, false, false> +13943: : public __is_destructible_impl::type>::type +13943: { }; +13943: +13943: template +13943: struct __is_destructible_safe<_Tp, true, false> +13943: : public false_type { }; +13943: +13943: template +13943: struct __is_destructible_safe<_Tp, false, true> +13943: : public true_type { }; +13943: +13943: +13943: +13943: template +13943: struct is_destructible +13943: : public __is_destructible_safe<_Tp>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct __do_is_nt_destructible_impl +13943: { +13943: template +13943: static __bool_constant().~_Tp())> +13943: __test(int); +13943: +13943: template +13943: static false_type __test(...); +13943: }; +13943: +13943: template +13943: struct __is_nt_destructible_impl +13943: : public __do_is_nt_destructible_impl +13943: { +13943: using type = decltype(__test<_Tp>(0)); +13943: }; +13943: +13943: template, +13943: __is_array_unknown_bounds<_Tp>, +13943: is_function<_Tp>>::value, +13943: bool = __or_, is_scalar<_Tp>>::value> +13943: struct __is_nt_destructible_safe; +13943: +13943: template +13943: struct __is_nt_destructible_safe<_Tp, false, false> +13943: : public __is_nt_destructible_impl::type>::type +13943: { }; +13943: +13943: template +13943: struct __is_nt_destructible_safe<_Tp, true, false> +13943: : public false_type { }; +13943: +13943: template +13943: struct __is_nt_destructible_safe<_Tp, false, true> +13943: : public true_type { }; +13943: +13943: +13943: +13943: template +13943: struct is_nothrow_destructible +13943: : public __is_nt_destructible_safe<_Tp>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: using __is_constructible_impl +13943: = __bool_constant<__is_constructible(_Tp, _Args...)>; +13943: +13943: +13943: +13943: template +13943: struct is_constructible +13943: : public __is_constructible_impl<_Tp, _Args...> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_default_constructible +13943: : public __is_constructible_impl<_Tp> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct __add_lvalue_reference_helper +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct __add_lvalue_reference_helper<_Tp, __void_t<_Tp&>> +13943: { using type = _Tp&; }; +13943: +13943: template +13943: using __add_lval_ref_t = typename __add_lvalue_reference_helper<_Tp>::type; +13943: +13943: +13943: +13943: template +13943: struct is_copy_constructible +13943: : public __is_constructible_impl<_Tp, __add_lval_ref_t> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct __add_rvalue_reference_helper +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct __add_rvalue_reference_helper<_Tp, __void_t<_Tp&&>> +13943: { using type = _Tp&&; }; +13943: +13943: template +13943: using __add_rval_ref_t = typename __add_rvalue_reference_helper<_Tp>::type; +13943: +13943: +13943: +13943: template +13943: struct is_move_constructible +13943: : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: using __is_nothrow_constructible_impl +13943: = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; +13943: +13943: +13943: +13943: template +13943: struct is_nothrow_constructible +13943: : public __is_nothrow_constructible_impl<_Tp, _Args...> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_default_constructible +13943: : public __is_nothrow_constructible_impl<_Tp> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_copy_constructible +13943: : public __is_nothrow_constructible_impl<_Tp, __add_lval_ref_t> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_move_constructible +13943: : public __is_nothrow_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; +13943: +13943: +13943: +13943: template +13943: struct is_assignable +13943: : public __is_assignable_impl<_Tp, _Up> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_copy_assignable +13943: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, +13943: __add_lval_ref_t> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_move_assignable +13943: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: using __is_nothrow_assignable_impl +13943: = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>; +13943: +13943: +13943: +13943: template +13943: struct is_nothrow_assignable +13943: : public __is_nothrow_assignable_impl<_Tp, _Up> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_copy_assignable +13943: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, +13943: __add_lval_ref_t> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_move_assignable +13943: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, +13943: __add_rval_ref_t<_Tp>> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: using __is_trivially_constructible_impl +13943: = __bool_constant<__is_trivially_constructible(_Tp, _Args...)>; +13943: +13943: +13943: +13943: template +13943: struct is_trivially_constructible +13943: : public __is_trivially_constructible_impl<_Tp, _Args...> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_trivially_default_constructible +13943: : public __is_trivially_constructible_impl<_Tp> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: # 1319 "/usr/include/c++/14/type_traits" 3 +13943: struct __do_is_implicitly_default_constructible_impl +13943: { +13943: template +13943: static void __helper(const _Tp&); +13943: +13943: template +13943: static true_type __test(const _Tp&, +13943: decltype(__helper({}))* = 0); +13943: +13943: static false_type __test(...); +13943: }; +13943: +13943: template +13943: struct __is_implicitly_default_constructible_impl +13943: : public __do_is_implicitly_default_constructible_impl +13943: { +13943: using type = decltype(__test(declval<_Tp>())); +13943: }; +13943: +13943: template +13943: struct __is_implicitly_default_constructible_safe +13943: : public __is_implicitly_default_constructible_impl<_Tp>::type +13943: { }; +13943: +13943: template +13943: struct __is_implicitly_default_constructible +13943: : public __and_<__is_constructible_impl<_Tp>, +13943: __is_implicitly_default_constructible_safe<_Tp>>::type +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct is_trivially_copy_constructible +13943: : public __is_trivially_constructible_impl<_Tp, __add_lval_ref_t> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_trivially_move_constructible +13943: : public __is_trivially_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: using __is_trivially_assignable_impl +13943: = __bool_constant<__is_trivially_assignable(_Tp, _Up)>; +13943: +13943: +13943: +13943: template +13943: struct is_trivially_assignable +13943: : public __is_trivially_assignable_impl<_Tp, _Up> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_trivially_copy_assignable +13943: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, +13943: __add_lval_ref_t> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_trivially_move_assignable +13943: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, +13943: __add_rval_ref_t<_Tp>> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_trivially_destructible +13943: : public __and_<__is_destructible_safe<_Tp>, +13943: __bool_constant<__has_trivial_destructor(_Tp)>>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: template +13943: struct has_virtual_destructor +13943: : public __bool_constant<__has_virtual_destructor(_Tp)> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct alignment_of +13943: : public integral_constant +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct rank +13943: : public integral_constant { }; +13943: +13943: template +13943: struct rank<_Tp[_Size]> +13943: : public integral_constant::value> { }; +13943: +13943: template +13943: struct rank<_Tp[]> +13943: : public integral_constant::value> { }; +13943: +13943: +13943: template +13943: struct extent +13943: : public integral_constant { }; +13943: +13943: template +13943: struct extent<_Tp[_Size], 0> +13943: : public integral_constant { }; +13943: +13943: template +13943: struct extent<_Tp[_Size], _Uint> +13943: : public extent<_Tp, _Uint - 1>::type { }; +13943: +13943: template +13943: struct extent<_Tp[], 0> +13943: : public integral_constant { }; +13943: +13943: template +13943: struct extent<_Tp[], _Uint> +13943: : public extent<_Tp, _Uint - 1>::type { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_same +13943: : public __bool_constant<__is_same(_Tp, _Up)> +13943: { }; +13943: # 1491 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct is_base_of +13943: : public __bool_constant<__is_base_of(_Base, _Derived)> +13943: { }; +13943: +13943: +13943: template +13943: struct is_convertible +13943: : public __bool_constant<__is_convertible(_From, _To)> +13943: { }; +13943: # 1540 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: using __is_array_convertible +13943: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; +13943: # 1600 "/usr/include/c++/14/type_traits" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++14-extensions" +13943: template +13943: struct __is_nothrow_new_constructible_impl +13943: : __bool_constant< +13943: noexcept(::new(std::declval()) _Tp(std::declval<_Args>()...)) +13943: > +13943: { }; +13943: +13943: template +13943: inline constexpr bool __is_nothrow_new_constructible +13943: = __and_, +13943: __is_nothrow_new_constructible_impl<_Tp, _Args...>>::value; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: template +13943: struct remove_const +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct remove_const<_Tp const> +13943: { using type = _Tp; }; +13943: +13943: +13943: template +13943: struct remove_volatile +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct remove_volatile<_Tp volatile> +13943: { using type = _Tp; }; +13943: +13943: +13943: +13943: template +13943: struct remove_cv +13943: { using type = __remove_cv(_Tp); }; +13943: # 1659 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct add_const +13943: { using type = _Tp const; }; +13943: +13943: +13943: template +13943: struct add_volatile +13943: { using type = _Tp volatile; }; +13943: +13943: +13943: template +13943: struct add_cv +13943: { using type = _Tp const volatile; }; +13943: +13943: +13943: +13943: template +13943: using remove_const_t = typename remove_const<_Tp>::type; +13943: +13943: +13943: template +13943: using remove_volatile_t = typename remove_volatile<_Tp>::type; +13943: +13943: +13943: template +13943: using remove_cv_t = typename remove_cv<_Tp>::type; +13943: +13943: +13943: template +13943: using add_const_t = typename add_const<_Tp>::type; +13943: +13943: +13943: template +13943: using add_volatile_t = typename add_volatile<_Tp>::type; +13943: +13943: +13943: template +13943: using add_cv_t = typename add_cv<_Tp>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct remove_reference +13943: { using type = __remove_reference(_Tp); }; +13943: # 1721 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct add_lvalue_reference +13943: { using type = __add_lval_ref_t<_Tp>; }; +13943: +13943: +13943: template +13943: struct add_rvalue_reference +13943: { using type = __add_rval_ref_t<_Tp>; }; +13943: +13943: +13943: +13943: template +13943: using remove_reference_t = typename remove_reference<_Tp>::type; +13943: +13943: +13943: template +13943: using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; +13943: +13943: +13943: template +13943: using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __cv_selector; +13943: +13943: template +13943: struct __cv_selector<_Unqualified, false, false> +13943: { using __type = _Unqualified; }; +13943: +13943: template +13943: struct __cv_selector<_Unqualified, false, true> +13943: { using __type = volatile _Unqualified; }; +13943: +13943: template +13943: struct __cv_selector<_Unqualified, true, false> +13943: { using __type = const _Unqualified; }; +13943: +13943: template +13943: struct __cv_selector<_Unqualified, true, true> +13943: { using __type = const volatile _Unqualified; }; +13943: +13943: template::value, +13943: bool _IsVol = is_volatile<_Qualified>::value> +13943: class __match_cv_qualifiers +13943: { +13943: using __match = __cv_selector<_Unqualified, _IsConst, _IsVol>; +13943: +13943: public: +13943: using __type = typename __match::__type; +13943: }; +13943: +13943: +13943: template +13943: struct __make_unsigned +13943: { using __type = _Tp; }; +13943: +13943: template<> +13943: struct __make_unsigned +13943: { using __type = unsigned char; }; +13943: +13943: template<> +13943: struct __make_unsigned +13943: { using __type = unsigned char; }; +13943: +13943: template<> +13943: struct __make_unsigned +13943: { using __type = unsigned short; }; +13943: +13943: template<> +13943: struct __make_unsigned +13943: { using __type = unsigned int; }; +13943: +13943: template<> +13943: struct __make_unsigned +13943: { using __type = unsigned long; }; +13943: +13943: template<> +13943: struct __make_unsigned +13943: { using __type = unsigned long long; }; +13943: # 1834 "/usr/include/c++/14/type_traits" 3 +13943: template::value, +13943: bool _IsEnum = __is_enum(_Tp)> +13943: class __make_unsigned_selector; +13943: +13943: template +13943: class __make_unsigned_selector<_Tp, true, false> +13943: { +13943: using __unsigned_type +13943: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; +13943: +13943: public: +13943: using __type +13943: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; +13943: }; +13943: +13943: class __make_unsigned_selector_base +13943: { +13943: protected: +13943: template struct _List { }; +13943: +13943: template +13943: struct _List<_Tp, _Up...> : _List<_Up...> +13943: { static constexpr size_t __size = sizeof(_Tp); }; +13943: +13943: template +13943: struct __select; +13943: +13943: template +13943: struct __select<_Sz, _List<_Uint, _UInts...>, true> +13943: { using __type = _Uint; }; +13943: +13943: template +13943: struct __select<_Sz, _List<_Uint, _UInts...>, false> +13943: : __select<_Sz, _List<_UInts...>> +13943: { }; +13943: }; +13943: +13943: +13943: template +13943: class __make_unsigned_selector<_Tp, false, true> +13943: : __make_unsigned_selector_base +13943: { +13943: +13943: using _UInts = _List; +13943: +13943: using __unsigned_type = typename __select::__type; +13943: +13943: public: +13943: using __type +13943: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct __make_unsigned +13943: { +13943: using __type +13943: = typename __make_unsigned_selector::__type; +13943: }; +13943: # 1908 "/usr/include/c++/14/type_traits" 3 +13943: template<> +13943: struct __make_unsigned +13943: { +13943: using __type +13943: = typename __make_unsigned_selector::__type; +13943: }; +13943: +13943: template<> +13943: struct __make_unsigned +13943: { +13943: using __type +13943: = typename __make_unsigned_selector::__type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct make_unsigned +13943: { using type = typename __make_unsigned_selector<_Tp>::__type; }; +13943: +13943: +13943: template<> struct make_unsigned; +13943: template<> struct make_unsigned; +13943: template<> struct make_unsigned; +13943: template<> struct make_unsigned; +13943: +13943: +13943: +13943: +13943: template +13943: struct __make_signed +13943: { using __type = _Tp; }; +13943: +13943: template<> +13943: struct __make_signed +13943: { using __type = signed char; }; +13943: +13943: template<> +13943: struct __make_signed +13943: { using __type = signed char; }; +13943: +13943: template<> +13943: struct __make_signed +13943: { using __type = signed short; }; +13943: +13943: template<> +13943: struct __make_signed +13943: { using __type = signed int; }; +13943: +13943: template<> +13943: struct __make_signed +13943: { using __type = signed long; }; +13943: +13943: template<> +13943: struct __make_signed +13943: { using __type = signed long long; }; +13943: # 1994 "/usr/include/c++/14/type_traits" 3 +13943: template::value, +13943: bool _IsEnum = __is_enum(_Tp)> +13943: class __make_signed_selector; +13943: +13943: template +13943: class __make_signed_selector<_Tp, true, false> +13943: { +13943: using __signed_type +13943: = typename __make_signed<__remove_cv_t<_Tp>>::__type; +13943: +13943: public: +13943: using __type +13943: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; +13943: }; +13943: +13943: +13943: template +13943: class __make_signed_selector<_Tp, false, true> +13943: { +13943: using __unsigned_type = typename __make_unsigned_selector<_Tp>::__type; +13943: +13943: public: +13943: using __type = typename __make_signed_selector<__unsigned_type>::__type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct __make_signed +13943: { +13943: using __type +13943: = typename __make_signed_selector::__type; +13943: }; +13943: # 2040 "/usr/include/c++/14/type_traits" 3 +13943: template<> +13943: struct __make_signed +13943: { +13943: using __type +13943: = typename __make_signed_selector::__type; +13943: }; +13943: +13943: template<> +13943: struct __make_signed +13943: { +13943: using __type +13943: = typename __make_signed_selector::__type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct make_signed +13943: { using type = typename __make_signed_selector<_Tp>::__type; }; +13943: +13943: +13943: template<> struct make_signed; +13943: template<> struct make_signed; +13943: template<> struct make_signed; +13943: template<> struct make_signed; +13943: +13943: +13943: +13943: template +13943: using make_signed_t = typename make_signed<_Tp>::type; +13943: +13943: +13943: template +13943: using make_unsigned_t = typename make_unsigned<_Tp>::type; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct remove_extent +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct remove_extent<_Tp[_Size]> +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct remove_extent<_Tp[]> +13943: { using type = _Tp; }; +13943: +13943: +13943: template +13943: struct remove_all_extents +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct remove_all_extents<_Tp[_Size]> +13943: { using type = typename remove_all_extents<_Tp>::type; }; +13943: +13943: template +13943: struct remove_all_extents<_Tp[]> +13943: { using type = typename remove_all_extents<_Tp>::type; }; +13943: +13943: +13943: +13943: template +13943: using remove_extent_t = typename remove_extent<_Tp>::type; +13943: +13943: +13943: template +13943: using remove_all_extents_t = typename remove_all_extents<_Tp>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct remove_pointer +13943: { using type = __remove_pointer(_Tp); }; +13943: # 2139 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct __add_pointer_helper +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct __add_pointer_helper<_Tp, __void_t<_Tp*>> +13943: { using type = _Tp*; }; +13943: +13943: +13943: template +13943: struct add_pointer +13943: : public __add_pointer_helper<_Tp> +13943: { }; +13943: +13943: template +13943: struct add_pointer<_Tp&> +13943: { using type = _Tp*; }; +13943: +13943: template +13943: struct add_pointer<_Tp&&> +13943: { using type = _Tp*; }; +13943: +13943: +13943: +13943: template +13943: using remove_pointer_t = typename remove_pointer<_Tp>::type; +13943: +13943: +13943: template +13943: using add_pointer_t = typename add_pointer<_Tp>::type; +13943: +13943: +13943: template +13943: struct __aligned_storage_msa +13943: { +13943: union __type +13943: { +13943: unsigned char __data[_Len]; +13943: struct __attribute__((__aligned__)) { } __align; +13943: }; +13943: }; +13943: # 2194 "/usr/include/c++/14/type_traits" 3 +13943: template::__type)> +13943: struct +13943: +13943: aligned_storage +13943: { +13943: union type +13943: { +13943: unsigned char __data[_Len]; +13943: struct __attribute__((__aligned__((_Align)))) { } __align; +13943: }; +13943: }; +13943: +13943: template +13943: struct __strictest_alignment +13943: { +13943: static const size_t _S_alignment = 0; +13943: static const size_t _S_size = 0; +13943: }; +13943: +13943: template +13943: struct __strictest_alignment<_Tp, _Types...> +13943: { +13943: static const size_t _S_alignment = +13943: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment +13943: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; +13943: static const size_t _S_size = +13943: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size +13943: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; +13943: }; +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: # 2240 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct +13943: +13943: aligned_union +13943: { +13943: private: +13943: static_assert(sizeof...(_Types) != 0, "At least one type is required"); +13943: +13943: using __strictest = __strictest_alignment<_Types...>; +13943: static const size_t _S_len = _Len > __strictest::_S_size +13943: ? _Len : __strictest::_S_size; +13943: public: +13943: +13943: static const size_t alignment_value = __strictest::_S_alignment; +13943: +13943: using type = typename aligned_storage<_S_len, alignment_value>::type; +13943: }; +13943: +13943: template +13943: const size_t aligned_union<_Len, _Types...>::alignment_value; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __decay_selector +13943: : __conditional_t::value, +13943: remove_cv<_Up>, +13943: add_pointer<_Up>> +13943: { }; +13943: +13943: template +13943: struct __decay_selector<_Up[_Nm]> +13943: { using type = _Up*; }; +13943: +13943: template +13943: struct __decay_selector<_Up[]> +13943: { using type = _Up*; }; +13943: +13943: +13943: +13943: +13943: template +13943: struct decay +13943: { using type = typename __decay_selector<_Tp>::type; }; +13943: +13943: template +13943: struct decay<_Tp&> +13943: { using type = typename __decay_selector<_Tp>::type; }; +13943: +13943: template +13943: struct decay<_Tp&&> +13943: { using type = typename __decay_selector<_Tp>::type; }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __strip_reference_wrapper +13943: { +13943: using __type = _Tp; +13943: }; +13943: +13943: template +13943: struct __strip_reference_wrapper > +13943: { +13943: using __type = _Tp&; +13943: }; +13943: +13943: +13943: template +13943: using __decay_t = typename decay<_Tp>::type; +13943: +13943: template +13943: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: using _Require = __enable_if_t<__and_<_Cond...>::value>; +13943: +13943: +13943: template +13943: using __remove_cvref_t +13943: = typename remove_cv::type>::type; +13943: +13943: +13943: +13943: +13943: template +13943: struct conditional +13943: { using type = _Iftrue; }; +13943: +13943: +13943: template +13943: struct conditional +13943: { using type = _Iffalse; }; +13943: +13943: +13943: template +13943: struct common_type; +13943: # 2355 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct __success_type +13943: { using type = _Tp; }; +13943: +13943: struct __failure_type +13943: { }; +13943: +13943: struct __do_common_type_impl +13943: { +13943: template +13943: using __cond_t +13943: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); +13943: +13943: +13943: +13943: template +13943: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> +13943: _S_test(int); +13943: # 2382 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: static __failure_type +13943: _S_test_2(...); +13943: +13943: template +13943: static decltype(_S_test_2<_Tp, _Up>(0)) +13943: _S_test(...); +13943: }; +13943: +13943: +13943: template<> +13943: struct common_type<> +13943: { }; +13943: +13943: +13943: template +13943: struct common_type<_Tp0> +13943: : public common_type<_Tp0, _Tp0> +13943: { }; +13943: +13943: +13943: template, typename _Dp2 = __decay_t<_Tp2>> +13943: struct __common_type_impl +13943: { +13943: +13943: +13943: using type = common_type<_Dp1, _Dp2>; +13943: }; +13943: +13943: template +13943: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> +13943: : private __do_common_type_impl +13943: { +13943: +13943: +13943: using type = decltype(_S_test<_Tp1, _Tp2>(0)); +13943: }; +13943: +13943: +13943: template +13943: struct common_type<_Tp1, _Tp2> +13943: : public __common_type_impl<_Tp1, _Tp2>::type +13943: { }; +13943: +13943: template +13943: struct __common_type_pack +13943: { }; +13943: +13943: template +13943: struct __common_type_fold; +13943: +13943: +13943: template +13943: struct common_type<_Tp1, _Tp2, _Rp...> +13943: : public __common_type_fold, +13943: __common_type_pack<_Rp...>> +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, +13943: __void_t> +13943: : public common_type +13943: { }; +13943: +13943: +13943: template +13943: struct __common_type_fold<_CTp, _Rp, void> +13943: { }; +13943: +13943: template +13943: struct __underlying_type_impl +13943: { +13943: using type = __underlying_type(_Tp); +13943: }; +13943: +13943: template +13943: struct __underlying_type_impl<_Tp, false> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct underlying_type +13943: : public __underlying_type_impl<_Tp> +13943: { }; +13943: +13943: +13943: template +13943: struct __declval_protector +13943: { +13943: static const bool __stop = false; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: auto declval() noexcept -> decltype(__declval<_Tp>(0)) +13943: { +13943: static_assert(__declval_protector<_Tp>::__stop, +13943: "declval() must not be used!"); +13943: return __declval<_Tp>(0); +13943: } +13943: +13943: +13943: template +13943: struct result_of; +13943: +13943: +13943: +13943: +13943: struct __invoke_memfun_ref { }; +13943: struct __invoke_memfun_deref { }; +13943: struct __invoke_memobj_ref { }; +13943: struct __invoke_memobj_deref { }; +13943: struct __invoke_other { }; +13943: +13943: +13943: template +13943: struct __result_of_success : __success_type<_Tp> +13943: { using __invoke_type = _Tag; }; +13943: +13943: +13943: struct __result_of_memfun_ref_impl +13943: { +13943: template +13943: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) +13943: ), __invoke_memfun_ref> _S_test(int); +13943: +13943: template +13943: static __failure_type _S_test(...); +13943: }; +13943: +13943: template +13943: struct __result_of_memfun_ref +13943: : private __result_of_memfun_ref_impl +13943: { +13943: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); +13943: }; +13943: +13943: +13943: struct __result_of_memfun_deref_impl +13943: { +13943: template +13943: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) +13943: ), __invoke_memfun_deref> _S_test(int); +13943: +13943: template +13943: static __failure_type _S_test(...); +13943: }; +13943: +13943: template +13943: struct __result_of_memfun_deref +13943: : private __result_of_memfun_deref_impl +13943: { +13943: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); +13943: }; +13943: +13943: +13943: struct __result_of_memobj_ref_impl +13943: { +13943: template +13943: static __result_of_success().*std::declval<_Fp>() +13943: ), __invoke_memobj_ref> _S_test(int); +13943: +13943: template +13943: static __failure_type _S_test(...); +13943: }; +13943: +13943: template +13943: struct __result_of_memobj_ref +13943: : private __result_of_memobj_ref_impl +13943: { +13943: using type = decltype(_S_test<_MemPtr, _Arg>(0)); +13943: }; +13943: +13943: +13943: struct __result_of_memobj_deref_impl +13943: { +13943: template +13943: static __result_of_success()).*std::declval<_Fp>() +13943: ), __invoke_memobj_deref> _S_test(int); +13943: +13943: template +13943: static __failure_type _S_test(...); +13943: }; +13943: +13943: template +13943: struct __result_of_memobj_deref +13943: : private __result_of_memobj_deref_impl +13943: { +13943: using type = decltype(_S_test<_MemPtr, _Arg>(0)); +13943: }; +13943: +13943: template +13943: struct __result_of_memobj; +13943: +13943: template +13943: struct __result_of_memobj<_Res _Class::*, _Arg> +13943: { +13943: using _Argval = __remove_cvref_t<_Arg>; +13943: using _MemPtr = _Res _Class::*; +13943: using type = typename __conditional_t<__or_, +13943: is_base_of<_Class, _Argval>>::value, +13943: __result_of_memobj_ref<_MemPtr, _Arg>, +13943: __result_of_memobj_deref<_MemPtr, _Arg> +13943: >::type; +13943: }; +13943: +13943: template +13943: struct __result_of_memfun; +13943: +13943: template +13943: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> +13943: { +13943: using _Argval = typename remove_reference<_Arg>::type; +13943: using _MemPtr = _Res _Class::*; +13943: using type = typename __conditional_t::value, +13943: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, +13943: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> +13943: >::type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: struct __inv_unwrap +13943: { +13943: using type = _Tp; +13943: }; +13943: +13943: template +13943: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> +13943: { +13943: using type = _Up&; +13943: }; +13943: +13943: template +13943: struct __result_of_impl +13943: { +13943: using type = __failure_type; +13943: }; +13943: +13943: template +13943: struct __result_of_impl +13943: : public __result_of_memobj<__decay_t<_MemPtr>, +13943: typename __inv_unwrap<_Arg>::type> +13943: { }; +13943: +13943: template +13943: struct __result_of_impl +13943: : public __result_of_memfun<__decay_t<_MemPtr>, +13943: typename __inv_unwrap<_Arg>::type, _Args...> +13943: { }; +13943: +13943: +13943: struct __result_of_other_impl +13943: { +13943: template +13943: static __result_of_success()(std::declval<_Args>()...) +13943: ), __invoke_other> _S_test(int); +13943: +13943: template +13943: static __failure_type _S_test(...); +13943: }; +13943: +13943: template +13943: struct __result_of_impl +13943: : private __result_of_other_impl +13943: { +13943: using type = decltype(_S_test<_Functor, _ArgTypes...>(0)); +13943: }; +13943: +13943: +13943: template +13943: struct __invoke_result +13943: : public __result_of_impl< +13943: is_member_object_pointer< +13943: typename remove_reference<_Functor>::type +13943: >::value, +13943: is_member_function_pointer< +13943: typename remove_reference<_Functor>::type +13943: >::value, +13943: _Functor, _ArgTypes... +13943: >::type +13943: { }; +13943: +13943: +13943: template +13943: using __invoke_result_t = typename __invoke_result<_Fn, _Args...>::type; +13943: +13943: +13943: template +13943: struct result_of<_Functor(_ArgTypes...)> +13943: : public __invoke_result<_Functor, _ArgTypes...> +13943: { } __attribute__ ((__deprecated__ ("use '" "std::invoke_result" "' instead"))); +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: template::__type)> +13943: using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; +13943: +13943: template +13943: using aligned_union_t = typename aligned_union<_Len, _Types...>::type; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: template +13943: using decay_t = typename decay<_Tp>::type; +13943: +13943: +13943: template +13943: using enable_if_t = typename enable_if<_Cond, _Tp>::type; +13943: +13943: +13943: template +13943: using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; +13943: +13943: +13943: template +13943: using common_type_t = typename common_type<_Tp...>::type; +13943: +13943: +13943: template +13943: using underlying_type_t = typename underlying_type<_Tp>::type; +13943: +13943: +13943: template +13943: using result_of_t = typename result_of<_Tp>::type; +13943: +13943: +13943: +13943: +13943: template using void_t = void; +13943: # 2759 "/usr/include/c++/14/type_traits" 3 +13943: template class _Op, typename... _Args> +13943: struct __detector +13943: { +13943: using type = _Default; +13943: using __is_detected = false_type; +13943: }; +13943: +13943: +13943: template class _Op, +13943: typename... _Args> +13943: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> +13943: { +13943: using type = _Op<_Args...>; +13943: using __is_detected = true_type; +13943: }; +13943: +13943: template class _Op, +13943: typename... _Args> +13943: using __detected_or = __detector<_Default, void, _Op, _Args...>; +13943: +13943: +13943: +13943: template class _Op, +13943: typename... _Args> +13943: using __detected_or_t +13943: = typename __detected_or<_Default, _Op, _Args...>::type; +13943: # 2801 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: struct __is_swappable; +13943: +13943: template +13943: struct __is_nothrow_swappable; +13943: +13943: template +13943: struct __is_tuple_like_impl : false_type +13943: { }; +13943: +13943: +13943: template +13943: struct __is_tuple_like +13943: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type +13943: { }; +13943: +13943: +13943: template +13943: +13943: inline +13943: _Require<__not_<__is_tuple_like<_Tp>>, +13943: is_move_constructible<_Tp>, +13943: is_move_assignable<_Tp>> +13943: swap(_Tp&, _Tp&) +13943: noexcept(__and_, +13943: is_nothrow_move_assignable<_Tp>>::value); +13943: +13943: template +13943: +13943: inline +13943: __enable_if_t<__is_swappable<_Tp>::value> +13943: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) +13943: noexcept(__is_nothrow_swappable<_Tp>::value); +13943: +13943: +13943: namespace __swappable_details { +13943: using std::swap; +13943: +13943: struct __do_is_swappable_impl +13943: { +13943: template(), std::declval<_Tp&>()))> +13943: static true_type __test(int); +13943: +13943: template +13943: static false_type __test(...); +13943: }; +13943: +13943: struct __do_is_nothrow_swappable_impl +13943: { +13943: template +13943: static __bool_constant< +13943: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) +13943: > __test(int); +13943: +13943: template +13943: static false_type __test(...); +13943: }; +13943: +13943: } +13943: +13943: template +13943: struct __is_swappable_impl +13943: : public __swappable_details::__do_is_swappable_impl +13943: { +13943: using type = decltype(__test<_Tp>(0)); +13943: }; +13943: +13943: template +13943: struct __is_nothrow_swappable_impl +13943: : public __swappable_details::__do_is_nothrow_swappable_impl +13943: { +13943: using type = decltype(__test<_Tp>(0)); +13943: }; +13943: +13943: template +13943: struct __is_swappable +13943: : public __is_swappable_impl<_Tp>::type +13943: { }; +13943: +13943: template +13943: struct __is_nothrow_swappable +13943: : public __is_nothrow_swappable_impl<_Tp>::type +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_swappable +13943: : public __is_swappable_impl<_Tp>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_swappable +13943: : public __is_nothrow_swappable_impl<_Tp>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_swappable_v = +13943: is_swappable<_Tp>::value; +13943: +13943: +13943: template +13943: inline constexpr bool is_nothrow_swappable_v = +13943: is_nothrow_swappable<_Tp>::value; +13943: +13943: +13943: +13943: namespace __swappable_with_details { +13943: using std::swap; +13943: +13943: struct __do_is_swappable_with_impl +13943: { +13943: template(), std::declval<_Up>())), +13943: typename +13943: = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> +13943: static true_type __test(int); +13943: +13943: template +13943: static false_type __test(...); +13943: }; +13943: +13943: struct __do_is_nothrow_swappable_with_impl +13943: { +13943: template +13943: static __bool_constant< +13943: noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) +13943: && +13943: noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) +13943: > __test(int); +13943: +13943: template +13943: static false_type __test(...); +13943: }; +13943: +13943: } +13943: +13943: template +13943: struct __is_swappable_with_impl +13943: : public __swappable_with_details::__do_is_swappable_with_impl +13943: { +13943: using type = decltype(__test<_Tp, _Up>(0)); +13943: }; +13943: +13943: +13943: template +13943: struct __is_swappable_with_impl<_Tp&, _Tp&> +13943: : public __swappable_details::__do_is_swappable_impl +13943: { +13943: using type = decltype(__test<_Tp&>(0)); +13943: }; +13943: +13943: template +13943: struct __is_nothrow_swappable_with_impl +13943: : public __swappable_with_details::__do_is_nothrow_swappable_with_impl +13943: { +13943: using type = decltype(__test<_Tp, _Up>(0)); +13943: }; +13943: +13943: +13943: template +13943: struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> +13943: : public __swappable_details::__do_is_nothrow_swappable_impl +13943: { +13943: using type = decltype(__test<_Tp&>(0)); +13943: }; +13943: +13943: +13943: +13943: template +13943: struct is_swappable_with +13943: : public __is_swappable_with_impl<_Tp, _Up>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "first template argument must be a complete class or an unbounded array"); +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Up>{}), +13943: "second template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_swappable_with +13943: : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "first template argument must be a complete class or an unbounded array"); +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Up>{}), +13943: "second template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_swappable_with_v = +13943: is_swappable_with<_Tp, _Up>::value; +13943: +13943: +13943: template +13943: inline constexpr bool is_nothrow_swappable_with_v = +13943: is_nothrow_swappable_with<_Tp, _Up>::value; +13943: # 3023 "/usr/include/c++/14/type_traits" 3 +13943: template::value, typename = void> +13943: struct __is_invocable_impl +13943: : false_type +13943: { +13943: using __nothrow_conv = false_type; +13943: }; +13943: +13943: +13943: template +13943: struct __is_invocable_impl<_Result, _Ret, +13943: true, +13943: __void_t> +13943: : true_type +13943: { +13943: using __nothrow_conv = true_type; +13943: }; +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +13943: +13943: template +13943: struct __is_invocable_impl<_Result, _Ret, +13943: false, +13943: __void_t> +13943: { +13943: private: +13943: +13943: using _Res_t = typename _Result::type; +13943: +13943: +13943: +13943: static _Res_t _S_get() noexcept; +13943: +13943: +13943: template +13943: static void _S_conv(__type_identity_t<_Tp>) noexcept; +13943: +13943: +13943: template(_S_get())), +13943: typename = decltype(_S_conv<_Tp>(_S_get())), +13943: +13943: bool _Dangle = __reference_converts_from_temporary(_Tp, _Res_t) +13943: +13943: +13943: +13943: > +13943: static __bool_constant<_Nothrow && !_Dangle> +13943: _S_test(int); +13943: +13943: template +13943: static false_type +13943: _S_test(...); +13943: +13943: public: +13943: +13943: using type = decltype(_S_test<_Ret, true>(1)); +13943: +13943: +13943: using __nothrow_conv = decltype(_S_test<_Ret>(1)); +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: template +13943: struct __is_invocable +13943: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type +13943: { }; +13943: +13943: template +13943: constexpr bool __call_is_nt(__invoke_memfun_ref) +13943: { +13943: using _Up = typename __inv_unwrap<_Tp>::type; +13943: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( +13943: std::declval<_Args>()...)); +13943: } +13943: +13943: template +13943: constexpr bool __call_is_nt(__invoke_memfun_deref) +13943: { +13943: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( +13943: std::declval<_Args>()...)); +13943: } +13943: +13943: template +13943: constexpr bool __call_is_nt(__invoke_memobj_ref) +13943: { +13943: using _Up = typename __inv_unwrap<_Tp>::type; +13943: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); +13943: } +13943: +13943: template +13943: constexpr bool __call_is_nt(__invoke_memobj_deref) +13943: { +13943: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); +13943: } +13943: +13943: template +13943: constexpr bool __call_is_nt(__invoke_other) +13943: { +13943: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); +13943: } +13943: +13943: template +13943: struct __call_is_nothrow +13943: : __bool_constant< +13943: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) +13943: > +13943: { }; +13943: +13943: template +13943: using __call_is_nothrow_ +13943: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; +13943: +13943: +13943: template +13943: struct __is_nothrow_invocable +13943: : __and_<__is_invocable<_Fn, _Args...>, +13943: __call_is_nothrow_<_Fn, _Args...>>::type +13943: { }; +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +13943: struct __nonesuchbase {}; +13943: struct __nonesuch : private __nonesuchbase { +13943: ~__nonesuch() = delete; +13943: __nonesuch(__nonesuch const&) = delete; +13943: void operator=(__nonesuch const&) = delete; +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: template +13943: struct invoke_result +13943: : public __invoke_result<_Functor, _ArgTypes...> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Functor>{}), +13943: "_Functor must be a complete class or an unbounded array"); +13943: static_assert((std::__is_complete_or_unbounded( +13943: __type_identity<_ArgTypes>{}) && ...), +13943: "each argument type must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: using invoke_result_t = typename invoke_result<_Fn, _Args...>::type; +13943: +13943: +13943: template +13943: struct is_invocable +13943: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +13943: "_Fn must be a complete class or an unbounded array"); +13943: static_assert((std::__is_complete_or_unbounded( +13943: __type_identity<_ArgTypes>{}) && ...), +13943: "each argument type must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_invocable_r +13943: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +13943: "_Fn must be a complete class or an unbounded array"); +13943: static_assert((std::__is_complete_or_unbounded( +13943: __type_identity<_ArgTypes>{}) && ...), +13943: "each argument type must be a complete class or an unbounded array"); +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{}), +13943: "_Ret must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: template +13943: struct is_nothrow_invocable +13943: : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>, +13943: __call_is_nothrow_<_Fn, _ArgTypes...>>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +13943: "_Fn must be a complete class or an unbounded array"); +13943: static_assert((std::__is_complete_or_unbounded( +13943: __type_identity<_ArgTypes>{}) && ...), +13943: "each argument type must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: using __is_nt_invocable_impl +13943: = typename __is_invocable_impl<_Result, _Ret>::__nothrow_conv; +13943: +13943: +13943: +13943: template +13943: struct is_nothrow_invocable_r +13943: : __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>, +13943: __call_is_nothrow_<_Fn, _ArgTypes...>>::type +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +13943: "_Fn must be a complete class or an unbounded array"); +13943: static_assert((std::__is_complete_or_unbounded( +13943: __type_identity<_ArgTypes>{}) && ...), +13943: "each argument type must be a complete class or an unbounded array"); +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{}), +13943: "_Ret must be a complete class or an unbounded array"); +13943: }; +13943: # 3251 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: inline constexpr bool is_void_v = is_void<_Tp>::value; +13943: template +13943: inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; +13943: template +13943: inline constexpr bool is_integral_v = is_integral<_Tp>::value; +13943: template +13943: inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; +13943: +13943: +13943: template +13943: inline constexpr bool is_array_v = __is_array(_Tp); +13943: # 3272 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: inline constexpr bool is_pointer_v = is_pointer<_Tp>::value; +13943: template +13943: inline constexpr bool is_lvalue_reference_v = false; +13943: template +13943: inline constexpr bool is_lvalue_reference_v<_Tp&> = true; +13943: template +13943: inline constexpr bool is_rvalue_reference_v = false; +13943: template +13943: inline constexpr bool is_rvalue_reference_v<_Tp&&> = true; +13943: +13943: +13943: template +13943: inline constexpr bool is_member_object_pointer_v = +13943: __is_member_object_pointer(_Tp); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_member_function_pointer_v = +13943: __is_member_function_pointer(_Tp); +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_enum_v = __is_enum(_Tp); +13943: template +13943: inline constexpr bool is_union_v = __is_union(_Tp); +13943: template +13943: inline constexpr bool is_class_v = __is_class(_Tp); +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_reference_v = __is_reference(_Tp); +13943: # 3323 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; +13943: template +13943: inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; +13943: +13943: +13943: template +13943: inline constexpr bool is_object_v = __is_object(_Tp); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_scalar_v = is_scalar<_Tp>::value; +13943: template +13943: inline constexpr bool is_compound_v = !is_fundamental_v<_Tp>; +13943: +13943: +13943: template +13943: inline constexpr bool is_member_pointer_v = __is_member_pointer(_Tp); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_const_v = false; +13943: template +13943: inline constexpr bool is_const_v = true; +13943: +13943: +13943: template +13943: inline constexpr bool is_function_v = __is_function(_Tp); +13943: # 3366 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: inline constexpr bool is_volatile_v = false; +13943: template +13943: inline constexpr bool is_volatile_v = true; +13943: +13943: template +13943: inline constexpr bool is_trivial_v = __is_trivial(_Tp); +13943: template +13943: inline constexpr bool is_trivially_copyable_v = __is_trivially_copyable(_Tp); +13943: template +13943: inline constexpr bool is_standard_layout_v = __is_standard_layout(_Tp); +13943: template +13943: +13943: inline constexpr bool is_pod_v = __is_pod(_Tp); +13943: template +13943: [[__deprecated__]] +13943: inline constexpr bool is_literal_type_v = __is_literal_type(_Tp); +13943: template +13943: inline constexpr bool is_empty_v = __is_empty(_Tp); +13943: template +13943: inline constexpr bool is_polymorphic_v = __is_polymorphic(_Tp); +13943: template +13943: inline constexpr bool is_abstract_v = __is_abstract(_Tp); +13943: template +13943: inline constexpr bool is_final_v = __is_final(_Tp); +13943: +13943: template +13943: inline constexpr bool is_signed_v = is_signed<_Tp>::value; +13943: template +13943: inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; +13943: +13943: template +13943: inline constexpr bool is_constructible_v = __is_constructible(_Tp, _Args...); +13943: template +13943: inline constexpr bool is_default_constructible_v = __is_constructible(_Tp); +13943: template +13943: inline constexpr bool is_copy_constructible_v +13943: = __is_constructible(_Tp, __add_lval_ref_t); +13943: template +13943: inline constexpr bool is_move_constructible_v +13943: = __is_constructible(_Tp, __add_rval_ref_t<_Tp>); +13943: +13943: template +13943: inline constexpr bool is_assignable_v = __is_assignable(_Tp, _Up); +13943: template +13943: inline constexpr bool is_copy_assignable_v +13943: = __is_assignable(__add_lval_ref_t<_Tp>, __add_lval_ref_t); +13943: template +13943: inline constexpr bool is_move_assignable_v +13943: = __is_assignable(__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>); +13943: +13943: template +13943: inline constexpr bool is_destructible_v = is_destructible<_Tp>::value; +13943: +13943: template +13943: inline constexpr bool is_trivially_constructible_v +13943: = __is_trivially_constructible(_Tp, _Args...); +13943: template +13943: inline constexpr bool is_trivially_default_constructible_v +13943: = __is_trivially_constructible(_Tp); +13943: template +13943: inline constexpr bool is_trivially_copy_constructible_v +13943: = __is_trivially_constructible(_Tp, __add_lval_ref_t); +13943: template +13943: inline constexpr bool is_trivially_move_constructible_v +13943: = __is_trivially_constructible(_Tp, __add_rval_ref_t<_Tp>); +13943: +13943: template +13943: inline constexpr bool is_trivially_assignable_v +13943: = __is_trivially_assignable(_Tp, _Up); +13943: template +13943: inline constexpr bool is_trivially_copy_assignable_v +13943: = __is_trivially_assignable(__add_lval_ref_t<_Tp>, +13943: __add_lval_ref_t); +13943: template +13943: inline constexpr bool is_trivially_move_assignable_v +13943: = __is_trivially_assignable(__add_lval_ref_t<_Tp>, +13943: __add_rval_ref_t<_Tp>); +13943: # 3461 "/usr/include/c++/14/type_traits" 3 +13943: template +13943: inline constexpr bool is_trivially_destructible_v = +13943: is_trivially_destructible<_Tp>::value; +13943: +13943: +13943: template +13943: inline constexpr bool is_nothrow_constructible_v +13943: = __is_nothrow_constructible(_Tp, _Args...); +13943: template +13943: inline constexpr bool is_nothrow_default_constructible_v +13943: = __is_nothrow_constructible(_Tp); +13943: template +13943: inline constexpr bool is_nothrow_copy_constructible_v +13943: = __is_nothrow_constructible(_Tp, __add_lval_ref_t); +13943: template +13943: inline constexpr bool is_nothrow_move_constructible_v +13943: = __is_nothrow_constructible(_Tp, __add_rval_ref_t<_Tp>); +13943: +13943: template +13943: inline constexpr bool is_nothrow_assignable_v +13943: = __is_nothrow_assignable(_Tp, _Up); +13943: template +13943: inline constexpr bool is_nothrow_copy_assignable_v +13943: = __is_nothrow_assignable(__add_lval_ref_t<_Tp>, +13943: __add_lval_ref_t); +13943: template +13943: inline constexpr bool is_nothrow_move_assignable_v +13943: = __is_nothrow_assignable(__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>); +13943: +13943: template +13943: inline constexpr bool is_nothrow_destructible_v = +13943: is_nothrow_destructible<_Tp>::value; +13943: +13943: template +13943: inline constexpr bool has_virtual_destructor_v +13943: = __has_virtual_destructor(_Tp); +13943: +13943: template +13943: inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value; +13943: +13943: template +13943: inline constexpr size_t rank_v = 0; +13943: template +13943: inline constexpr size_t rank_v<_Tp[_Size]> = 1 + rank_v<_Tp>; +13943: template +13943: inline constexpr size_t rank_v<_Tp[]> = 1 + rank_v<_Tp>; +13943: +13943: template +13943: inline constexpr size_t extent_v = 0; +13943: template +13943: inline constexpr size_t extent_v<_Tp[_Size], 0> = _Size; +13943: template +13943: inline constexpr size_t extent_v<_Tp[_Size], _Idx> = extent_v<_Tp, _Idx - 1>; +13943: template +13943: inline constexpr size_t extent_v<_Tp[], 0> = 0; +13943: template +13943: inline constexpr size_t extent_v<_Tp[], _Idx> = extent_v<_Tp, _Idx - 1>; +13943: +13943: +13943: template +13943: inline constexpr bool is_same_v = __is_same(_Tp, _Up); +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_base_of_v = __is_base_of(_Base, _Derived); +13943: +13943: template +13943: inline constexpr bool is_convertible_v = __is_convertible(_From, _To); +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; +13943: template +13943: inline constexpr bool is_nothrow_invocable_v +13943: = is_nothrow_invocable<_Fn, _Args...>::value; +13943: template +13943: inline constexpr bool is_invocable_r_v +13943: = is_invocable_r<_Ret, _Fn, _Args...>::value; +13943: template +13943: inline constexpr bool is_nothrow_invocable_r_v +13943: = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct has_unique_object_representations +13943: : bool_constant<__has_unique_object_representations( +13943: remove_cv_t> +13943: )> +13943: { +13943: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +13943: "template argument must be a complete class or an unbounded array"); +13943: }; +13943: +13943: +13943: +13943: template +13943: inline constexpr bool has_unique_object_representations_v +13943: = has_unique_object_representations<_Tp>::value; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_aggregate +13943: : bool_constant<__is_aggregate(remove_cv_t<_Tp>)> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr bool is_aggregate_v = __is_aggregate(remove_cv_t<_Tp>); +13943: # 4017 "/usr/include/c++/14/type_traits" 3 +13943: +13943: } +13943: # 38 "/usr/include/c++/14/bits/move.h" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline constexpr _Tp* +13943: __addressof(_Tp& __r) noexcept +13943: { return __builtin_addressof(__r); } +13943: # 68 "/usr/include/c++/14/bits/move.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: constexpr _Tp&& +13943: forward(typename std::remove_reference<_Tp>::type& __t) noexcept +13943: { return static_cast<_Tp&&>(__t); } +13943: # 81 "/usr/include/c++/14/bits/move.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: constexpr _Tp&& +13943: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept +13943: { +13943: static_assert(!std::is_lvalue_reference<_Tp>::value, +13943: "std::forward must not be used to convert an rvalue to an lvalue"); +13943: return static_cast<_Tp&&>(__t); +13943: } +13943: # 134 "/usr/include/c++/14/bits/move.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: constexpr typename std::remove_reference<_Tp>::type&& +13943: move(_Tp&& __t) noexcept +13943: { return static_cast::type&&>(__t); } +13943: +13943: +13943: template +13943: struct __move_if_noexcept_cond +13943: : public __and_<__not_>, +13943: is_copy_constructible<_Tp>>::type { }; +13943: # 155 "/usr/include/c++/14/bits/move.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: constexpr +13943: __conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&> +13943: move_if_noexcept(_Tp& __x) noexcept +13943: { return std::move(__x); } +13943: # 172 "/usr/include/c++/14/bits/move.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr _Tp* +13943: addressof(_Tp& __r) noexcept +13943: { return std::__addressof(__r); } +13943: +13943: +13943: +13943: template +13943: const _Tp* addressof(const _Tp&&) = delete; +13943: +13943: +13943: template +13943: +13943: inline _Tp +13943: __exchange(_Tp& __obj, _Up&& __new_val) +13943: { +13943: _Tp __old_val = std::move(__obj); +13943: __obj = std::forward<_Up>(__new_val); +13943: return __old_val; +13943: } +13943: # 216 "/usr/include/c++/14/bits/move.h" 3 +13943: template +13943: +13943: inline +13943: +13943: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, +13943: is_move_constructible<_Tp>, +13943: is_move_assignable<_Tp>>::value>::type +13943: +13943: +13943: +13943: swap(_Tp& __a, _Tp& __b) +13943: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) +13943: +13943: { +13943: +13943: +13943: +13943: +13943: _Tp __tmp = std::move(__a); +13943: __a = std::move(__b); +13943: __b = std::move(__tmp); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline +13943: +13943: typename enable_if<__is_swappable<_Tp>::value>::type +13943: +13943: +13943: +13943: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) +13943: noexcept(__is_nothrow_swappable<_Tp>::value) +13943: { +13943: for (size_t __n = 0; __n < _Nm; ++__n) +13943: swap(__a[__n], __b[__n]); +13943: } +13943: +13943: +13943: +13943: } +13943: # 40 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +13943: # 49 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 50 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 81 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: enum memory_order : int +13943: { +13943: memory_order_relaxed, +13943: memory_order_consume, +13943: memory_order_acquire, +13943: memory_order_release, +13943: memory_order_acq_rel, +13943: memory_order_seq_cst +13943: }; +13943: +13943: +13943: +13943: enum __memory_order_modifier +13943: { +13943: __memory_order_mask = 0x0ffff, +13943: __memory_order_modifier_mask = 0xffff0000, +13943: __memory_order_hle_acquire = 0x10000, +13943: __memory_order_hle_release = 0x20000 +13943: }; +13943: +13943: +13943: constexpr memory_order +13943: operator|(memory_order __m, __memory_order_modifier __mod) noexcept +13943: { +13943: return memory_order(int(__m) | int(__mod)); +13943: } +13943: +13943: constexpr memory_order +13943: operator&(memory_order __m, __memory_order_modifier __mod) noexcept +13943: { +13943: return memory_order(int(__m) & int(__mod)); +13943: } +13943: +13943: +13943: +13943: +13943: constexpr memory_order +13943: __cmpexch_failure_order2(memory_order __m) noexcept +13943: { +13943: return __m == memory_order_acq_rel ? memory_order_acquire +13943: : __m == memory_order_release ? memory_order_relaxed : __m; +13943: } +13943: +13943: constexpr memory_order +13943: __cmpexch_failure_order(memory_order __m) noexcept +13943: { +13943: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) +13943: | __memory_order_modifier(__m & __memory_order_modifier_mask)); +13943: } +13943: +13943: constexpr bool +13943: __is_valid_cmpexch_failure_order(memory_order __m) noexcept +13943: { +13943: return (__m & __memory_order_mask) != memory_order_release +13943: && (__m & __memory_order_mask) != memory_order_acq_rel; +13943: } +13943: +13943: +13943: template +13943: struct __atomic_base; +13943: +13943: +13943: +13943: inline __attribute__((__always_inline__)) void +13943: atomic_thread_fence(memory_order __m) noexcept +13943: { __atomic_thread_fence(int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) void +13943: atomic_signal_fence(memory_order __m) noexcept +13943: { __atomic_signal_fence(int(__m)); } +13943: +13943: +13943: template +13943: inline _Tp +13943: kill_dependency(_Tp __y) noexcept +13943: { +13943: _Tp __ret(__y); +13943: return __ret; +13943: } +13943: # 171 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: template +13943: struct atomic; +13943: +13943: template +13943: struct atomic<_Tp*>; +13943: +13943: +13943: +13943: typedef bool __atomic_flag_data_type; +13943: # 196 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: extern "C" { +13943: +13943: struct __atomic_flag_base +13943: { +13943: __atomic_flag_data_type _M_i ; +13943: }; +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct atomic_flag : public __atomic_flag_base +13943: { +13943: atomic_flag() noexcept = default; +13943: ~atomic_flag() noexcept = default; +13943: atomic_flag(const atomic_flag&) = delete; +13943: atomic_flag& operator=(const atomic_flag&) = delete; +13943: atomic_flag& operator=(const atomic_flag&) volatile = delete; +13943: +13943: +13943: constexpr atomic_flag(bool __i) noexcept +13943: : __atomic_flag_base{ _S_init(__i) } +13943: { } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: test_and_set(memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: return __atomic_test_and_set (&_M_i, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: return __atomic_test_and_set (&_M_i, int(__m)); +13943: } +13943: # 280 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: inline __attribute__((__always_inline__)) void +13943: clear(memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __atomic_clear (&_M_i, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) void +13943: clear(memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __atomic_clear (&_M_i, int(__m)); +13943: } +13943: +13943: private: +13943: static constexpr __atomic_flag_data_type +13943: _S_init(bool __i) +13943: { return __i ? 1 : 0; } +13943: }; +13943: # 336 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: template +13943: struct __atomic_base +13943: { +13943: using value_type = _ITp; +13943: using difference_type = value_type; +13943: +13943: private: +13943: typedef _ITp __int_type; +13943: +13943: static constexpr int _S_alignment = +13943: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); +13943: +13943: alignas(_S_alignment) __int_type _M_i ; +13943: +13943: public: +13943: __atomic_base() noexcept = default; +13943: ~__atomic_base() noexcept = default; +13943: __atomic_base(const __atomic_base&) = delete; +13943: __atomic_base& operator=(const __atomic_base&) = delete; +13943: __atomic_base& operator=(const __atomic_base&) volatile = delete; +13943: +13943: +13943: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } +13943: +13943: operator __int_type() const noexcept +13943: { return load(); } +13943: +13943: operator __int_type() const volatile noexcept +13943: { return load(); } +13943: +13943: __int_type +13943: operator=(__int_type __i) noexcept +13943: { +13943: store(__i); +13943: return __i; +13943: } +13943: +13943: __int_type +13943: operator=(__int_type __i) volatile noexcept +13943: { +13943: store(__i); +13943: return __i; +13943: } +13943: +13943: __int_type +13943: operator++(int) noexcept +13943: { return fetch_add(1); } +13943: +13943: __int_type +13943: operator++(int) volatile noexcept +13943: { return fetch_add(1); } +13943: +13943: __int_type +13943: operator--(int) noexcept +13943: { return fetch_sub(1); } +13943: +13943: __int_type +13943: operator--(int) volatile noexcept +13943: { return fetch_sub(1); } +13943: +13943: __int_type +13943: operator++() noexcept +13943: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator++() volatile noexcept +13943: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator--() noexcept +13943: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator--() volatile noexcept +13943: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator+=(__int_type __i) noexcept +13943: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator+=(__int_type __i) volatile noexcept +13943: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator-=(__int_type __i) noexcept +13943: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator-=(__int_type __i) volatile noexcept +13943: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator&=(__int_type __i) noexcept +13943: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator&=(__int_type __i) volatile noexcept +13943: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator|=(__int_type __i) noexcept +13943: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator|=(__int_type __i) volatile noexcept +13943: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator^=(__int_type __i) noexcept +13943: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: __int_type +13943: operator^=(__int_type __i) volatile noexcept +13943: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +13943: +13943: bool +13943: is_lock_free() const noexcept +13943: { +13943: +13943: return __atomic_is_lock_free(sizeof(_M_i), +13943: reinterpret_cast(-_S_alignment)); +13943: } +13943: +13943: bool +13943: is_lock_free() const volatile noexcept +13943: { +13943: +13943: return __atomic_is_lock_free(sizeof(_M_i), +13943: reinterpret_cast(-_S_alignment)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) void +13943: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __atomic_store_n(&_M_i, __i, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) void +13943: store(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __atomic_store_n(&_M_i, __i, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: load(memory_order __m = memory_order_seq_cst) const noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_load_n(&_M_i, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_load_n(&_M_i, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: exchange(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: return __atomic_exchange_n(&_M_i, __i, int(__m)); +13943: } +13943: +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: exchange(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: return __atomic_exchange_n(&_M_i, __i, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_weak(__int_type& __i1, __int_type __i2, +13943: memory_order __m1, memory_order __m2) noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, +13943: int(__m1), int(__m2)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_weak(__int_type& __i1, __int_type __i2, +13943: memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, +13943: int(__m1), int(__m2)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_weak(__int_type& __i1, __int_type __i2, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: return compare_exchange_weak(__i1, __i2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_weak(__int_type& __i1, __int_type __i2, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: return compare_exchange_weak(__i1, __i2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_strong(__int_type& __i1, __int_type __i2, +13943: memory_order __m1, memory_order __m2) noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, +13943: int(__m1), int(__m2)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_strong(__int_type& __i1, __int_type __i2, +13943: memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, +13943: int(__m1), int(__m2)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_strong(__int_type& __i1, __int_type __i2, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: return compare_exchange_strong(__i1, __i2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_strong(__int_type& __i1, __int_type __i2, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: return compare_exchange_strong(__i1, __i2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: # 628 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_add(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_add(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_sub(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_sub(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_and(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_and(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_or(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_or(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_xor(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __int_type +13943: fetch_xor(__int_type __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } +13943: }; +13943: +13943: +13943: +13943: template +13943: struct __atomic_base<_PTp*> +13943: { +13943: private: +13943: typedef _PTp* __pointer_type; +13943: +13943: __pointer_type _M_p ; +13943: +13943: +13943: constexpr ptrdiff_t +13943: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } +13943: +13943: constexpr ptrdiff_t +13943: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } +13943: +13943: public: +13943: __atomic_base() noexcept = default; +13943: ~__atomic_base() noexcept = default; +13943: __atomic_base(const __atomic_base&) = delete; +13943: __atomic_base& operator=(const __atomic_base&) = delete; +13943: __atomic_base& operator=(const __atomic_base&) volatile = delete; +13943: +13943: +13943: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } +13943: +13943: operator __pointer_type() const noexcept +13943: { return load(); } +13943: +13943: operator __pointer_type() const volatile noexcept +13943: { return load(); } +13943: +13943: __pointer_type +13943: operator=(__pointer_type __p) noexcept +13943: { +13943: store(__p); +13943: return __p; +13943: } +13943: +13943: __pointer_type +13943: operator=(__pointer_type __p) volatile noexcept +13943: { +13943: store(__p); +13943: return __p; +13943: } +13943: +13943: __pointer_type +13943: operator++(int) noexcept +13943: { return fetch_add(1); } +13943: +13943: __pointer_type +13943: operator++(int) volatile noexcept +13943: { return fetch_add(1); } +13943: +13943: __pointer_type +13943: operator--(int) noexcept +13943: { return fetch_sub(1); } +13943: +13943: __pointer_type +13943: operator--(int) volatile noexcept +13943: { return fetch_sub(1); } +13943: +13943: __pointer_type +13943: operator++() noexcept +13943: { return __atomic_add_fetch(&_M_p, _M_type_size(1), +13943: int(memory_order_seq_cst)); } +13943: +13943: __pointer_type +13943: operator++() volatile noexcept +13943: { return __atomic_add_fetch(&_M_p, _M_type_size(1), +13943: int(memory_order_seq_cst)); } +13943: +13943: __pointer_type +13943: operator--() noexcept +13943: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), +13943: int(memory_order_seq_cst)); } +13943: +13943: __pointer_type +13943: operator--() volatile noexcept +13943: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), +13943: int(memory_order_seq_cst)); } +13943: +13943: __pointer_type +13943: operator+=(ptrdiff_t __d) noexcept +13943: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), +13943: int(memory_order_seq_cst)); } +13943: +13943: __pointer_type +13943: operator+=(ptrdiff_t __d) volatile noexcept +13943: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), +13943: int(memory_order_seq_cst)); } +13943: +13943: __pointer_type +13943: operator-=(ptrdiff_t __d) noexcept +13943: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), +13943: int(memory_order_seq_cst)); } +13943: +13943: __pointer_type +13943: operator-=(ptrdiff_t __d) volatile noexcept +13943: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), +13943: int(memory_order_seq_cst)); } +13943: +13943: bool +13943: is_lock_free() const noexcept +13943: { +13943: +13943: return __atomic_is_lock_free(sizeof(_M_p), +13943: reinterpret_cast(-__alignof(_M_p))); +13943: } +13943: +13943: bool +13943: is_lock_free() const volatile noexcept +13943: { +13943: +13943: return __atomic_is_lock_free(sizeof(_M_p), +13943: reinterpret_cast(-__alignof(_M_p))); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) void +13943: store(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __atomic_store_n(&_M_p, __p, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) void +13943: store(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __atomic_store_n(&_M_p, __p, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: load(memory_order __m = memory_order_seq_cst) const noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_load_n(&_M_p, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +13943: { +13943: memory_order __b __attribute__ ((__unused__)) +13943: = __m & __memory_order_mask; +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_load_n(&_M_p, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: exchange(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: return __atomic_exchange_n(&_M_p, __p, int(__m)); +13943: } +13943: +13943: +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: exchange(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: return __atomic_exchange_n(&_M_p, __p, int(__m)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, +13943: memory_order __m2) noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, +13943: int(__m1), int(__m2)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, +13943: int(__m1), int(__m2)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, +13943: memory_order __m2) noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, +13943: int(__m1), int(__m2)); +13943: } +13943: +13943: inline __attribute__((__always_inline__)) bool +13943: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, +13943: int(__m1), int(__m2)); +13943: } +13943: # 931 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: fetch_add(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: fetch_add(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: fetch_sub(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } +13943: +13943: inline __attribute__((__always_inline__)) __pointer_type +13943: fetch_sub(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } +13943: }; +13943: +13943: namespace __atomic_impl +13943: { +13943: +13943: +13943: template +13943: constexpr bool +13943: __maybe_has_padding() +13943: { +13943: +13943: +13943: +13943: return !__has_unique_object_representations(_Tp) +13943: && !is_same<_Tp, float>::value && !is_same<_Tp, double>::value; +13943: +13943: +13943: +13943: } +13943: +13943: template +13943: inline __attribute__((__always_inline__)) constexpr _Tp* +13943: __clear_padding(_Tp& __val) noexcept +13943: { +13943: auto* __ptr = std::__addressof(__val); +13943: +13943: if constexpr (__atomic_impl::__maybe_has_padding<_Tp>()) +13943: __builtin_clear_padding(__ptr); +13943: +13943: return __ptr; +13943: } +13943: +13943: +13943: template +13943: using _Val = typename remove_volatile<_Tp>::type; +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: +13943: template +13943: inline __attribute__((__always_inline__)) bool +13943: __compare_exchange(_Tp& __val, _Val<_Tp>& __e, _Val<_Tp>& __i, +13943: bool __is_weak, +13943: memory_order __s, memory_order __f) noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__f))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: using _Vp = _Val<_Tp>; +13943: _Tp* const __pval = std::__addressof(__val); +13943: +13943: if constexpr (!__atomic_impl::__maybe_has_padding<_Vp>()) +13943: { +13943: return __atomic_compare_exchange(__pval, std::__addressof(__e), +13943: std::__addressof(__i), __is_weak, +13943: int(__s), int(__f)); +13943: } +13943: else if constexpr (!_AtomicRef) +13943: { +13943: +13943: _Vp* const __pi = __atomic_impl::__clear_padding(__i); +13943: +13943: _Vp __exp = __e; +13943: +13943: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); +13943: +13943: +13943: +13943: if (__atomic_compare_exchange(__pval, __pexp, __pi, +13943: __is_weak, int(__s), int(__f))) +13943: return true; +13943: +13943: __builtin_memcpy(std::__addressof(__e), __pexp, sizeof(_Vp)); +13943: return false; +13943: } +13943: else +13943: { +13943: +13943: _Vp* const __pi = __atomic_impl::__clear_padding(__i); +13943: +13943: +13943: _Vp __exp = __e; +13943: +13943: +13943: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); +13943: # 1045 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: while (true) +13943: { +13943: +13943: _Vp __orig = __exp; +13943: +13943: if (__atomic_compare_exchange(__pval, __pexp, __pi, +13943: __is_weak, int(__s), int(__f))) +13943: return true; +13943: +13943: +13943: _Vp __curr = __exp; +13943: +13943: +13943: if (__builtin_memcmp(__atomic_impl::__clear_padding(__orig), +13943: __atomic_impl::__clear_padding(__curr), +13943: sizeof(_Vp))) +13943: { +13943: +13943: __builtin_memcpy(std::__addressof(__e), __pexp, +13943: sizeof(_Vp)); +13943: return false; +13943: } +13943: } +13943: } +13943: } +13943: #pragma GCC diagnostic pop +13943: } +13943: # 2065 "/usr/include/c++/14/bits/atomic_base.h" 3 +13943: +13943: } +13943: # 51 "/usr/include/c++/14/atomic" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct atomic; +13943: +13943: +13943: +13943: template<> +13943: struct atomic +13943: { +13943: using value_type = bool; +13943: +13943: private: +13943: __atomic_base _M_base; +13943: +13943: public: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(bool __i) noexcept : _M_base(__i) { } +13943: +13943: bool +13943: operator=(bool __i) noexcept +13943: { return _M_base.operator=(__i); } +13943: +13943: bool +13943: operator=(bool __i) volatile noexcept +13943: { return _M_base.operator=(__i); } +13943: +13943: operator bool() const noexcept +13943: { return _M_base.load(); } +13943: +13943: operator bool() const volatile noexcept +13943: { return _M_base.load(); } +13943: +13943: bool +13943: is_lock_free() const noexcept { return _M_base.is_lock_free(); } +13943: +13943: bool +13943: is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: +13943: void +13943: store(bool __i, memory_order __m = memory_order_seq_cst) noexcept +13943: { _M_base.store(__i, __m); } +13943: +13943: void +13943: store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { _M_base.store(__i, __m); } +13943: +13943: bool +13943: load(memory_order __m = memory_order_seq_cst) const noexcept +13943: { return _M_base.load(__m); } +13943: +13943: bool +13943: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +13943: { return _M_base.load(__m); } +13943: +13943: bool +13943: exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept +13943: { return _M_base.exchange(__i, __m); } +13943: +13943: bool +13943: exchange(bool __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return _M_base.exchange(__i, __m); } +13943: +13943: bool +13943: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, +13943: memory_order __m2) noexcept +13943: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_weak(bool& __i1, bool __i2, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } +13943: +13943: bool +13943: compare_exchange_weak(bool& __i1, bool __i2, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } +13943: +13943: bool +13943: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, +13943: memory_order __m2) noexcept +13943: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_strong(bool& __i1, bool __i2, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } +13943: +13943: bool +13943: compare_exchange_strong(bool& __i1, bool __i2, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } +13943: # 187 "/usr/include/c++/14/atomic" 3 +13943: }; +13943: # 202 "/usr/include/c++/14/atomic" 3 +13943: template +13943: struct atomic +13943: { +13943: using value_type = _Tp; +13943: +13943: private: +13943: +13943: static constexpr int _S_min_alignment +13943: = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 +13943: ? 0 : sizeof(_Tp); +13943: +13943: static constexpr int _S_alignment +13943: = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); +13943: +13943: alignas(_S_alignment) _Tp _M_i ; +13943: +13943: static_assert(__is_trivially_copyable(_Tp), +13943: "std::atomic requires a trivially copyable type"); +13943: +13943: static_assert(sizeof(_Tp) > 0, +13943: "Incomplete or zero-sized types are not supported"); +13943: # 231 "/usr/include/c++/14/atomic" 3 +13943: public: +13943: atomic() = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(_Tp __i) noexcept : _M_i(__i) +13943: { +13943: +13943: if constexpr (__atomic_impl::__maybe_has_padding<_Tp>()) +13943: __builtin_clear_padding(std::__addressof(_M_i)); +13943: +13943: } +13943: +13943: operator _Tp() const noexcept +13943: { return load(); } +13943: +13943: operator _Tp() const volatile noexcept +13943: { return load(); } +13943: +13943: _Tp +13943: operator=(_Tp __i) noexcept +13943: { store(__i); return __i; } +13943: +13943: _Tp +13943: operator=(_Tp __i) volatile noexcept +13943: { store(__i); return __i; } +13943: +13943: bool +13943: is_lock_free() const noexcept +13943: { +13943: +13943: return __atomic_is_lock_free(sizeof(_M_i), +13943: reinterpret_cast(-_S_alignment)); +13943: } +13943: +13943: bool +13943: is_lock_free() const volatile noexcept +13943: { +13943: +13943: return __atomic_is_lock_free(sizeof(_M_i), +13943: reinterpret_cast(-_S_alignment)); +13943: } +13943: +13943: +13943: static constexpr bool is_always_lock_free +13943: = __atomic_always_lock_free(sizeof(_M_i), 0); +13943: +13943: +13943: void +13943: store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: __atomic_store(std::__addressof(_M_i), +13943: __atomic_impl::__clear_padding(__i), +13943: int(__m)); +13943: } +13943: +13943: void +13943: store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: __atomic_store(std::__addressof(_M_i), +13943: __atomic_impl::__clear_padding(__i), +13943: int(__m)); +13943: } +13943: +13943: _Tp +13943: load(memory_order __m = memory_order_seq_cst) const noexcept +13943: { +13943: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +13943: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +13943: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); +13943: return *__ptr; +13943: } +13943: +13943: _Tp +13943: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +13943: { +13943: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +13943: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +13943: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); +13943: return *__ptr; +13943: } +13943: +13943: _Tp +13943: exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +13943: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +13943: __atomic_exchange(std::__addressof(_M_i), +13943: __atomic_impl::__clear_padding(__i), +13943: __ptr, int(__m)); +13943: return *__ptr; +13943: } +13943: +13943: _Tp +13943: exchange(_Tp __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +13943: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +13943: __atomic_exchange(std::__addressof(_M_i), +13943: __atomic_impl::__clear_padding(__i), +13943: __ptr, int(__m)); +13943: return *__ptr; +13943: } +13943: +13943: bool +13943: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, +13943: memory_order __f) noexcept +13943: { +13943: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, +13943: __s, __f); +13943: } +13943: +13943: bool +13943: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, +13943: memory_order __f) volatile noexcept +13943: { +13943: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, +13943: __s, __f); +13943: } +13943: +13943: bool +13943: compare_exchange_weak(_Tp& __e, _Tp __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return compare_exchange_weak(__e, __i, __m, +13943: __cmpexch_failure_order(__m)); } +13943: +13943: bool +13943: compare_exchange_weak(_Tp& __e, _Tp __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return compare_exchange_weak(__e, __i, __m, +13943: __cmpexch_failure_order(__m)); } +13943: +13943: bool +13943: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, +13943: memory_order __f) noexcept +13943: { +13943: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, +13943: __s, __f); +13943: } +13943: +13943: bool +13943: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, +13943: memory_order __f) volatile noexcept +13943: { +13943: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, +13943: __s, __f); +13943: } +13943: +13943: bool +13943: compare_exchange_strong(_Tp& __e, _Tp __i, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return compare_exchange_strong(__e, __i, __m, +13943: __cmpexch_failure_order(__m)); } +13943: +13943: bool +13943: compare_exchange_strong(_Tp& __e, _Tp __i, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return compare_exchange_strong(__e, __i, __m, +13943: __cmpexch_failure_order(__m)); } +13943: # 413 "/usr/include/c++/14/atomic" 3 +13943: }; +13943: +13943: +13943: +13943: template +13943: struct atomic<_Tp*> +13943: { +13943: using value_type = _Tp*; +13943: using difference_type = ptrdiff_t; +13943: +13943: typedef _Tp* __pointer_type; +13943: typedef __atomic_base<_Tp*> __base_type; +13943: __base_type _M_b; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } +13943: +13943: operator __pointer_type() const noexcept +13943: { return __pointer_type(_M_b); } +13943: +13943: operator __pointer_type() const volatile noexcept +13943: { return __pointer_type(_M_b); } +13943: +13943: __pointer_type +13943: operator=(__pointer_type __p) noexcept +13943: { return _M_b.operator=(__p); } +13943: +13943: __pointer_type +13943: operator=(__pointer_type __p) volatile noexcept +13943: { return _M_b.operator=(__p); } +13943: +13943: __pointer_type +13943: operator++(int) noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b++; +13943: } +13943: +13943: __pointer_type +13943: operator++(int) volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b++; +13943: } +13943: +13943: __pointer_type +13943: operator--(int) noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b--; +13943: } +13943: +13943: __pointer_type +13943: operator--(int) volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b--; +13943: } +13943: +13943: __pointer_type +13943: operator++() noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return ++_M_b; +13943: } +13943: +13943: __pointer_type +13943: operator++() volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return ++_M_b; +13943: } +13943: +13943: __pointer_type +13943: operator--() noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return --_M_b; +13943: } +13943: +13943: __pointer_type +13943: operator--() volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return --_M_b; +13943: } +13943: +13943: __pointer_type +13943: operator+=(ptrdiff_t __d) noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.operator+=(__d); +13943: } +13943: +13943: __pointer_type +13943: operator+=(ptrdiff_t __d) volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.operator+=(__d); +13943: } +13943: +13943: __pointer_type +13943: operator-=(ptrdiff_t __d) noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.operator-=(__d); +13943: } +13943: +13943: __pointer_type +13943: operator-=(ptrdiff_t __d) volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.operator-=(__d); +13943: } +13943: +13943: bool +13943: is_lock_free() const noexcept +13943: { return _M_b.is_lock_free(); } +13943: +13943: bool +13943: is_lock_free() const volatile noexcept +13943: { return _M_b.is_lock_free(); } +13943: +13943: +13943: static constexpr bool is_always_lock_free +13943: = 2 == 2; +13943: +13943: +13943: void +13943: store(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return _M_b.store(__p, __m); } +13943: +13943: void +13943: store(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return _M_b.store(__p, __m); } +13943: +13943: __pointer_type +13943: load(memory_order __m = memory_order_seq_cst) const noexcept +13943: { return _M_b.load(__m); } +13943: +13943: __pointer_type +13943: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +13943: { return _M_b.load(__m); } +13943: +13943: __pointer_type +13943: exchange(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { return _M_b.exchange(__p, __m); } +13943: +13943: __pointer_type +13943: exchange(__pointer_type __p, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { return _M_b.exchange(__p, __m); } +13943: +13943: bool +13943: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, memory_order __m2) noexcept +13943: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: return compare_exchange_weak(__p1, __p2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: +13943: bool +13943: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: return compare_exchange_weak(__p1, __p2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: +13943: bool +13943: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, memory_order __m2) noexcept +13943: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m1, +13943: memory_order __m2) volatile noexcept +13943: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } +13943: +13943: bool +13943: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: return _M_b.compare_exchange_strong(__p1, __p2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: +13943: bool +13943: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: return _M_b.compare_exchange_strong(__p1, __p2, __m, +13943: __cmpexch_failure_order(__m)); +13943: } +13943: # 668 "/usr/include/c++/14/atomic" 3 +13943: __pointer_type +13943: fetch_add(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.fetch_add(__d, __m); +13943: } +13943: +13943: __pointer_type +13943: fetch_add(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.fetch_add(__d, __m); +13943: } +13943: +13943: __pointer_type +13943: fetch_sub(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.fetch_sub(__d, __m); +13943: } +13943: +13943: __pointer_type +13943: fetch_sub(ptrdiff_t __d, +13943: memory_order __m = memory_order_seq_cst) volatile noexcept +13943: { +13943: +13943: static_assert( is_object<_Tp>::value, "pointer to object type" ); +13943: +13943: return _M_b.fetch_sub(__d, __m); +13943: } +13943: }; +13943: +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef char __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef signed char __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept= default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef unsigned char __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept= default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef short __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef unsigned short __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef int __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef unsigned int __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef long __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef unsigned long __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef long long __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef unsigned long long __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef wchar_t __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free = 2 == 2; +13943: +13943: }; +13943: # 1013 "/usr/include/c++/14/atomic" 3 +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef char16_t __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free +13943: = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: template<> +13943: struct atomic : __atomic_base +13943: { +13943: typedef char32_t __integral_type; +13943: typedef __atomic_base __base_type; +13943: +13943: atomic() noexcept = default; +13943: ~atomic() noexcept = default; +13943: atomic(const atomic&) = delete; +13943: atomic& operator=(const atomic&) = delete; +13943: atomic& operator=(const atomic&) volatile = delete; +13943: +13943: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +13943: +13943: using __base_type::operator __integral_type; +13943: using __base_type::operator=; +13943: +13943: +13943: static constexpr bool is_always_lock_free +13943: = 2 == 2; +13943: +13943: }; +13943: +13943: +13943: +13943: typedef atomic atomic_bool; +13943: +13943: +13943: typedef atomic atomic_char; +13943: +13943: +13943: typedef atomic atomic_schar; +13943: +13943: +13943: typedef atomic atomic_uchar; +13943: +13943: +13943: typedef atomic atomic_short; +13943: +13943: +13943: typedef atomic atomic_ushort; +13943: +13943: +13943: typedef atomic atomic_int; +13943: +13943: +13943: typedef atomic atomic_uint; +13943: +13943: +13943: typedef atomic atomic_long; +13943: +13943: +13943: typedef atomic atomic_ulong; +13943: +13943: +13943: typedef atomic atomic_llong; +13943: +13943: +13943: typedef atomic atomic_ullong; +13943: +13943: +13943: typedef atomic atomic_wchar_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef atomic atomic_char16_t; +13943: +13943: +13943: typedef atomic atomic_char32_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef atomic atomic_int8_t; +13943: +13943: +13943: typedef atomic atomic_uint8_t; +13943: +13943: +13943: typedef atomic atomic_int16_t; +13943: +13943: +13943: typedef atomic atomic_uint16_t; +13943: +13943: +13943: typedef atomic atomic_int32_t; +13943: +13943: +13943: typedef atomic atomic_uint32_t; +13943: +13943: +13943: typedef atomic atomic_int64_t; +13943: +13943: +13943: typedef atomic atomic_uint64_t; +13943: +13943: +13943: +13943: typedef atomic atomic_int_least8_t; +13943: +13943: +13943: typedef atomic atomic_uint_least8_t; +13943: +13943: +13943: typedef atomic atomic_int_least16_t; +13943: +13943: +13943: typedef atomic atomic_uint_least16_t; +13943: +13943: +13943: typedef atomic atomic_int_least32_t; +13943: +13943: +13943: typedef atomic atomic_uint_least32_t; +13943: +13943: +13943: typedef atomic atomic_int_least64_t; +13943: +13943: +13943: typedef atomic atomic_uint_least64_t; +13943: +13943: +13943: +13943: typedef atomic atomic_int_fast8_t; +13943: +13943: +13943: typedef atomic atomic_uint_fast8_t; +13943: +13943: +13943: typedef atomic atomic_int_fast16_t; +13943: +13943: +13943: typedef atomic atomic_uint_fast16_t; +13943: +13943: +13943: typedef atomic atomic_int_fast32_t; +13943: +13943: +13943: typedef atomic atomic_uint_fast32_t; +13943: +13943: +13943: typedef atomic atomic_int_fast64_t; +13943: +13943: +13943: typedef atomic atomic_uint_fast64_t; +13943: +13943: +13943: +13943: typedef atomic atomic_intptr_t; +13943: +13943: +13943: typedef atomic atomic_uintptr_t; +13943: +13943: +13943: typedef atomic atomic_size_t; +13943: +13943: +13943: typedef atomic atomic_ptrdiff_t; +13943: +13943: +13943: typedef atomic atomic_intmax_t; +13943: +13943: +13943: typedef atomic atomic_uintmax_t; +13943: +13943: +13943: inline bool +13943: atomic_flag_test_and_set_explicit(atomic_flag* __a, +13943: memory_order __m) noexcept +13943: { return __a->test_and_set(__m); } +13943: +13943: inline bool +13943: atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, +13943: memory_order __m) noexcept +13943: { return __a->test_and_set(__m); } +13943: # 1239 "/usr/include/c++/14/atomic" 3 +13943: inline void +13943: atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept +13943: { __a->clear(__m); } +13943: +13943: inline void +13943: atomic_flag_clear_explicit(volatile atomic_flag* __a, +13943: memory_order __m) noexcept +13943: { __a->clear(__m); } +13943: +13943: inline bool +13943: atomic_flag_test_and_set(atomic_flag* __a) noexcept +13943: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } +13943: +13943: inline bool +13943: atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept +13943: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } +13943: +13943: inline void +13943: atomic_flag_clear(atomic_flag* __a) noexcept +13943: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } +13943: +13943: inline void +13943: atomic_flag_clear(volatile atomic_flag* __a) noexcept +13943: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } +13943: # 1286 "/usr/include/c++/14/atomic" 3 +13943: template +13943: using __atomic_val_t = __type_identity_t<_Tp>; +13943: template +13943: using __atomic_diff_t = typename atomic<_Tp>::difference_type; +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: atomic_is_lock_free(const atomic<_ITp>* __a) noexcept +13943: { return __a->is_lock_free(); } +13943: +13943: template +13943: inline bool +13943: atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept +13943: { return __a->is_lock_free(); } +13943: +13943: template +13943: inline void +13943: atomic_init(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +13943: { __a->store(__i, memory_order_relaxed); } +13943: +13943: template +13943: inline void +13943: atomic_init(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +13943: { __a->store(__i, memory_order_relaxed); } +13943: +13943: template +13943: inline void +13943: atomic_store_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { __a->store(__i, __m); } +13943: +13943: template +13943: inline void +13943: atomic_store_explicit(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { __a->store(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept +13943: { return __a->load(__m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_load_explicit(const volatile atomic<_ITp>* __a, +13943: memory_order __m) noexcept +13943: { return __a->load(__m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_exchange_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->exchange(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_exchange_explicit(volatile atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->exchange(__i, __m); } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2, +13943: memory_order __m1, +13943: memory_order __m2) noexcept +13943: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2, +13943: memory_order __m1, +13943: memory_order __m2) noexcept +13943: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2, +13943: memory_order __m1, +13943: memory_order __m2) noexcept +13943: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2, +13943: memory_order __m1, +13943: memory_order __m2) noexcept +13943: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } +13943: +13943: +13943: template +13943: inline void +13943: atomic_store(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +13943: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline void +13943: atomic_store(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +13943: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_load(const atomic<_ITp>* __a) noexcept +13943: { return atomic_load_explicit(__a, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_load(const volatile atomic<_ITp>* __a) noexcept +13943: { return atomic_load_explicit(__a, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_exchange(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_exchange(volatile atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_weak(atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2) noexcept +13943: { +13943: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, +13943: memory_order_seq_cst, +13943: memory_order_seq_cst); +13943: } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2) noexcept +13943: { +13943: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, +13943: memory_order_seq_cst, +13943: memory_order_seq_cst); +13943: } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_strong(atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2) noexcept +13943: { +13943: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, +13943: memory_order_seq_cst, +13943: memory_order_seq_cst); +13943: } +13943: +13943: template +13943: inline bool +13943: atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, +13943: __atomic_val_t<_ITp>* __i1, +13943: __atomic_val_t<_ITp> __i2) noexcept +13943: { +13943: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, +13943: memory_order_seq_cst, +13943: memory_order_seq_cst); +13943: } +13943: # 1492 "/usr/include/c++/14/atomic" 3 +13943: template +13943: inline _ITp +13943: atomic_fetch_add_explicit(atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_add(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_add_explicit(volatile atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_add(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_sub_explicit(atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_sub(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_sub_explicit(volatile atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_sub(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_and(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_and(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_or(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_or(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_xor(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i, +13943: memory_order __m) noexcept +13943: { return __a->fetch_xor(__i, __m); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_add(atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i) noexcept +13943: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_add(volatile atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i) noexcept +13943: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_sub(atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i) noexcept +13943: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_sub(volatile atomic<_ITp>* __a, +13943: __atomic_diff_t<_ITp> __i) noexcept +13943: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_and(__atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_and(volatile __atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_or(__atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_or(volatile __atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_xor(__atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } +13943: +13943: template +13943: inline _ITp +13943: atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, +13943: __atomic_val_t<_ITp> __i) noexcept +13943: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } +13943: # 1793 "/usr/include/c++/14/atomic" 3 +13943: +13943: } +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/usr/include/c++/14/deque" 1 3 +13943: # 58 "/usr/include/c++/14/deque" 3 +13943: +13943: # 59 "/usr/include/c++/14/deque" 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/requires_hosted.h" 1 3 +13943: # 61 "/usr/include/c++/14/deque" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_algobase.h" 1 3 +13943: # 60 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: # 1 "/usr/include/c++/14/bits/functexcept.h" 1 3 +13943: # 40 "/usr/include/c++/14/bits/functexcept.h" 3 +13943: # 1 "/usr/include/c++/14/bits/exception_defines.h" 1 3 +13943: # 41 "/usr/include/c++/14/bits/functexcept.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: void +13943: __throw_bad_exception(void) __attribute__((__noreturn__)); +13943: +13943: +13943: void +13943: __throw_bad_alloc(void) __attribute__((__noreturn__)); +13943: +13943: void +13943: __throw_bad_array_new_length(void) __attribute__((__noreturn__)); +13943: +13943: +13943: void +13943: __throw_bad_cast(void) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_bad_typeid(void) __attribute__((__noreturn__,__cold__)); +13943: +13943: +13943: void +13943: __throw_logic_error(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_domain_error(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_invalid_argument(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_length_error(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_out_of_range(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__,__cold__)) +13943: __attribute__((__format__(__gnu_printf__, 1, 2))); +13943: +13943: void +13943: __throw_runtime_error(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_range_error(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_overflow_error(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_underflow_error(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: +13943: void +13943: __throw_ios_failure(const char*) __attribute__((__noreturn__,__cold__)); +13943: +13943: void +13943: __throw_ios_failure(const char*, int) __attribute__((__noreturn__,__cold__)); +13943: +13943: +13943: void +13943: __throw_system_error(int) __attribute__((__noreturn__,__cold__)); +13943: +13943: +13943: void +13943: __throw_future_error(int) __attribute__((__noreturn__,__cold__)); +13943: +13943: +13943: void +13943: __throw_bad_function_call() __attribute__((__noreturn__,__cold__)); +13943: # 140 "/usr/include/c++/14/bits/functexcept.h" 3 +13943: +13943: } +13943: # 61 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/cpp_type_traits.h" 1 3 +13943: # 35 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: +13943: # 36 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 39 "/usr/include/c++/14/bits/cpp_type_traits.h" 2 3 +13943: # 68 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: extern "C++" { +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: struct __true_type { }; +13943: struct __false_type { }; +13943: +13943: template +13943: struct __truth_type +13943: { typedef __false_type __type; }; +13943: +13943: template<> +13943: struct __truth_type +13943: { typedef __true_type __type; }; +13943: +13943: +13943: +13943: template +13943: struct __traitor +13943: { +13943: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; +13943: typedef typename __truth_type<__value>::__type __type; +13943: }; +13943: +13943: +13943: template +13943: struct __are_same +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: template +13943: struct __are_same<_Tp, _Tp> +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: template +13943: struct __is_void +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_void +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_integer +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: # 185 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_integer +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: # 290 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: template +13943: struct __is_floating +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: +13943: template<> +13943: struct __is_floating +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_floating +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_floating +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: # 367 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: template +13943: struct __is_pointer +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: template +13943: struct __is_pointer<_Tp*> +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_arithmetic +13943: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_scalar +13943: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_char +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_char +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: template<> +13943: struct __is_char +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: template +13943: struct __is_byte +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_byte +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_byte +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template<> +13943: struct __is_byte +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: +13943: enum class byte : unsigned char; +13943: +13943: template<> +13943: struct __is_byte +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: # 471 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: template struct iterator_traits; +13943: +13943: +13943: template +13943: struct __is_nonvolatile_trivially_copyable +13943: { +13943: enum { __value = __is_trivially_copyable(_Tp) }; +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_nonvolatile_trivially_copyable +13943: { +13943: enum { __value = 0 }; +13943: }; +13943: +13943: +13943: template +13943: struct __memcpyable +13943: { +13943: enum { __value = 0 }; +13943: }; +13943: +13943: template +13943: struct __memcpyable<_Tp*, _Tp*> +13943: : __is_nonvolatile_trivially_copyable<_Tp> +13943: { }; +13943: +13943: template +13943: struct __memcpyable<_Tp*, const _Tp*> +13943: : __is_nonvolatile_trivially_copyable<_Tp> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __memcmpable +13943: { +13943: enum { __value = 0 }; +13943: }; +13943: +13943: +13943: template +13943: struct __memcmpable<_Tp*, _Tp*> +13943: : __is_nonvolatile_trivially_copyable<_Tp> +13943: { }; +13943: +13943: template +13943: struct __memcmpable +13943: : __is_nonvolatile_trivially_copyable<_Tp> +13943: { }; +13943: +13943: template +13943: struct __memcmpable<_Tp*, const _Tp*> +13943: : __is_nonvolatile_trivially_copyable<_Tp> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template::__value +13943: +13943: > +13943: struct __is_memcmp_ordered +13943: { +13943: static const bool __value = _Tp(-1) > _Tp(1); +13943: }; +13943: +13943: template +13943: struct __is_memcmp_ordered<_Tp, false> +13943: { +13943: static const bool __value = false; +13943: }; +13943: +13943: +13943: template +13943: struct __is_memcmp_ordered_with +13943: { +13943: static const bool __value = __is_memcmp_ordered<_Tp>::__value +13943: && __is_memcmp_ordered<_Up>::__value; +13943: }; +13943: +13943: template +13943: struct __is_memcmp_ordered_with<_Tp, _Up, false> +13943: { +13943: static const bool __value = false; +13943: }; +13943: # 580 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +13943: template<> +13943: struct __is_memcmp_ordered_with +13943: { static constexpr bool __value = true; }; +13943: +13943: template +13943: struct __is_memcmp_ordered_with<_Tp, std::byte, _SameSize> +13943: { static constexpr bool __value = false; }; +13943: +13943: template +13943: struct __is_memcmp_ordered_with +13943: { static constexpr bool __value = false; }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_move_iterator +13943: { +13943: enum { __value = 0 }; +13943: typedef __false_type __type; +13943: }; +13943: +13943: +13943: +13943: template +13943: +13943: inline _Iterator +13943: __miter_base(_Iterator __it) +13943: { return __it; } +13943: +13943: +13943: } +13943: } +13943: # 62 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: # 1 "/usr/include/c++/14/ext/type_traits.h" 1 3 +13943: # 32 "/usr/include/c++/14/ext/type_traits.h" 3 +13943: +13943: # 33 "/usr/include/c++/14/ext/type_traits.h" 3 +13943: +13943: +13943: +13943: +13943: extern "C++" { +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: struct __enable_if +13943: { }; +13943: +13943: template +13943: struct __enable_if +13943: { typedef _Tp __type; }; +13943: +13943: +13943: +13943: template +13943: struct __conditional_type +13943: { typedef _Iftrue __type; }; +13943: +13943: template +13943: struct __conditional_type +13943: { typedef _Iffalse __type; }; +13943: +13943: +13943: +13943: template +13943: struct __add_unsigned +13943: { +13943: private: +13943: typedef __enable_if::__value, _Tp> __if_type; +13943: +13943: public: +13943: typedef typename __if_type::__type __type; +13943: }; +13943: +13943: template<> +13943: struct __add_unsigned +13943: { typedef unsigned char __type; }; +13943: +13943: template<> +13943: struct __add_unsigned +13943: { typedef unsigned char __type; }; +13943: +13943: template<> +13943: struct __add_unsigned +13943: { typedef unsigned short __type; }; +13943: +13943: template<> +13943: struct __add_unsigned +13943: { typedef unsigned int __type; }; +13943: +13943: template<> +13943: struct __add_unsigned +13943: { typedef unsigned long __type; }; +13943: +13943: template<> +13943: struct __add_unsigned +13943: { typedef unsigned long long __type; }; +13943: +13943: +13943: template<> +13943: struct __add_unsigned; +13943: +13943: template<> +13943: struct __add_unsigned; +13943: +13943: +13943: +13943: template +13943: struct __remove_unsigned +13943: { +13943: private: +13943: typedef __enable_if::__value, _Tp> __if_type; +13943: +13943: public: +13943: typedef typename __if_type::__type __type; +13943: }; +13943: +13943: template<> +13943: struct __remove_unsigned +13943: { typedef signed char __type; }; +13943: +13943: template<> +13943: struct __remove_unsigned +13943: { typedef signed char __type; }; +13943: +13943: template<> +13943: struct __remove_unsigned +13943: { typedef short __type; }; +13943: +13943: template<> +13943: struct __remove_unsigned +13943: { typedef int __type; }; +13943: +13943: template<> +13943: struct __remove_unsigned +13943: { typedef long __type; }; +13943: +13943: template<> +13943: struct __remove_unsigned +13943: { typedef long long __type; }; +13943: +13943: +13943: template<> +13943: struct __remove_unsigned; +13943: +13943: template<> +13943: struct __remove_unsigned; +13943: +13943: +13943: +13943: template +13943: constexpr +13943: inline bool +13943: __is_null_pointer(_Type* __ptr) +13943: { return __ptr == 0; } +13943: +13943: template +13943: constexpr +13943: inline bool +13943: __is_null_pointer(_Type) +13943: { return false; } +13943: +13943: +13943: constexpr bool +13943: __is_null_pointer(std::nullptr_t) +13943: { return true; } +13943: +13943: +13943: +13943: +13943: template::__value> +13943: struct __promote +13943: { typedef double __type; }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __promote<_Tp, false> +13943: { }; +13943: +13943: template<> +13943: struct __promote +13943: { typedef long double __type; }; +13943: +13943: template<> +13943: struct __promote +13943: { typedef double __type; }; +13943: +13943: template<> +13943: struct __promote +13943: { typedef float __type; }; +13943: # 225 "/usr/include/c++/14/ext/type_traits.h" 3 +13943: template +13943: using __promoted_t = decltype((typename __promote<_Tp>::__type(0) + ...)); +13943: +13943: +13943: +13943: template +13943: using __promote_2 = __promote<__promoted_t<_Tp, _Up>>; +13943: +13943: template +13943: using __promote_3 = __promote<__promoted_t<_Tp, _Up, _Vp>>; +13943: +13943: template +13943: using __promote_4 = __promote<__promoted_t<_Tp, _Up, _Vp, _Wp>>; +13943: # 269 "/usr/include/c++/14/ext/type_traits.h" 3 +13943: +13943: } +13943: } +13943: # 63 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: # 1 "/usr/include/c++/14/ext/numeric_traits.h" 1 3 +13943: # 32 "/usr/include/c++/14/ext/numeric_traits.h" 3 +13943: +13943: # 33 "/usr/include/c++/14/ext/numeric_traits.h" 3 +13943: +13943: +13943: +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 50 "/usr/include/c++/14/ext/numeric_traits.h" 3 +13943: template +13943: struct __is_integer_nonstrict +13943: : public std::__is_integer<_Tp> +13943: { +13943: using std::__is_integer<_Tp>::__value; +13943: +13943: +13943: enum { __width = __value ? sizeof(_Tp) * 8 : 0 }; +13943: }; +13943: +13943: template +13943: struct __numeric_traits_integer +13943: { +13943: +13943: static_assert(__is_integer_nonstrict<_Value>::__value, +13943: "invalid specialization"); +13943: +13943: +13943: +13943: +13943: static const bool __is_signed = (_Value)(-1) < 0; +13943: static const int __digits +13943: = __is_integer_nonstrict<_Value>::__width - __is_signed; +13943: +13943: +13943: static const _Value __max = __is_signed +13943: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1) +13943: : ~(_Value)0; +13943: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0; +13943: }; +13943: +13943: template +13943: const _Value __numeric_traits_integer<_Value>::__min; +13943: +13943: template +13943: const _Value __numeric_traits_integer<_Value>::__max; +13943: +13943: template +13943: const bool __numeric_traits_integer<_Value>::__is_signed; +13943: +13943: template +13943: const int __numeric_traits_integer<_Value>::__digits; +13943: # 137 "/usr/include/c++/14/ext/numeric_traits.h" 3 +13943: template +13943: using __int_traits = __numeric_traits_integer<_Tp>; +13943: # 157 "/usr/include/c++/14/ext/numeric_traits.h" 3 +13943: template +13943: struct __numeric_traits_floating +13943: { +13943: +13943: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 643L / 2136); +13943: +13943: +13943: static const bool __is_signed = true; +13943: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15); +13943: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308); +13943: }; +13943: +13943: template +13943: const int __numeric_traits_floating<_Value>::__max_digits10; +13943: +13943: template +13943: const bool __numeric_traits_floating<_Value>::__is_signed; +13943: +13943: template +13943: const int __numeric_traits_floating<_Value>::__digits10; +13943: +13943: template +13943: const int __numeric_traits_floating<_Value>::__max_exponent10; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __numeric_traits +13943: : public __numeric_traits_integer<_Value> +13943: { }; +13943: +13943: template<> +13943: struct __numeric_traits +13943: : public __numeric_traits_floating +13943: { }; +13943: +13943: template<> +13943: struct __numeric_traits +13943: : public __numeric_traits_floating +13943: { }; +13943: +13943: template<> +13943: struct __numeric_traits +13943: : public __numeric_traits_floating +13943: { }; +13943: # 238 "/usr/include/c++/14/ext/numeric_traits.h" 3 +13943: +13943: } +13943: # 64 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_pair.h" 1 3 +13943: # 62 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: # 1 "/usr/include/c++/14/bits/utility.h" 1 3 +13943: # 36 "/usr/include/c++/14/bits/utility.h" 3 +13943: +13943: # 37 "/usr/include/c++/14/bits/utility.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: struct tuple_size; +13943: +13943: +13943: +13943: +13943: +13943: template::type, +13943: typename = typename enable_if::value>::type, +13943: size_t = tuple_size<_Tp>::value> +13943: using __enable_if_has_tuple_size = _Tp; +13943: +13943: template +13943: struct tuple_size> +13943: : public tuple_size<_Tp> { }; +13943: +13943: template +13943: struct tuple_size> +13943: : public tuple_size<_Tp> { }; +13943: +13943: template +13943: struct tuple_size> +13943: : public tuple_size<_Tp> { }; +13943: +13943: +13943: template +13943: inline constexpr size_t tuple_size_v = tuple_size<_Tp>::value; +13943: +13943: +13943: +13943: template +13943: struct tuple_element; +13943: +13943: +13943: template +13943: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; +13943: +13943: template +13943: struct tuple_element<__i, const _Tp> +13943: { +13943: using type = const __tuple_element_t<__i, _Tp>; +13943: }; +13943: +13943: template +13943: struct tuple_element<__i, volatile _Tp> +13943: { +13943: using type = volatile __tuple_element_t<__i, _Tp>; +13943: }; +13943: +13943: template +13943: struct tuple_element<__i, const volatile _Tp> +13943: { +13943: using type = const volatile __tuple_element_t<__i, _Tp>; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr size_t +13943: __find_uniq_type_in_pack() +13943: { +13943: constexpr size_t __sz = sizeof...(_Types); +13943: constexpr bool __found[__sz] = { __is_same(_Tp, _Types) ... }; +13943: size_t __n = __sz; +13943: for (size_t __i = 0; __i < __sz; ++__i) +13943: { +13943: if (__found[__i]) +13943: { +13943: if (__n < __sz) +13943: return __sz; +13943: __n = __i; +13943: } +13943: } +13943: return __n; +13943: } +13943: # 134 "/usr/include/c++/14/bits/utility.h" 3 +13943: template +13943: using tuple_element_t = typename tuple_element<__i, _Tp>::type; +13943: +13943: +13943: +13943: +13943: template struct _Index_tuple { }; +13943: +13943: +13943: template +13943: struct _Build_index_tuple +13943: { +13943: # 154 "/usr/include/c++/14/bits/utility.h" 3 +13943: using __type = _Index_tuple<__integer_pack(_Num)...>; +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct integer_sequence +13943: { +13943: +13943: +13943: +13943: typedef _Tp value_type; +13943: static constexpr size_t size() noexcept { return sizeof...(_Idx); } +13943: }; +13943: +13943: +13943: template +13943: using make_integer_sequence +13943: +13943: +13943: +13943: = integer_sequence<_Tp, __integer_pack(_Num)...>; +13943: +13943: +13943: +13943: template +13943: using index_sequence = integer_sequence; +13943: +13943: +13943: template +13943: using make_index_sequence = make_integer_sequence; +13943: +13943: +13943: template +13943: using index_sequence_for = make_index_sequence; +13943: +13943: +13943: +13943: +13943: struct in_place_t { +13943: explicit in_place_t() = default; +13943: }; +13943: +13943: inline constexpr in_place_t in_place{}; +13943: +13943: template struct in_place_type_t +13943: { +13943: explicit in_place_type_t() = default; +13943: }; +13943: +13943: template +13943: inline constexpr in_place_type_t<_Tp> in_place_type{}; +13943: +13943: template struct in_place_index_t +13943: { +13943: explicit in_place_index_t() = default; +13943: }; +13943: +13943: template +13943: inline constexpr in_place_index_t<_Idx> in_place_index{}; +13943: +13943: template +13943: inline constexpr bool __is_in_place_type_v = false; +13943: +13943: template +13943: inline constexpr bool __is_in_place_type_v> = true; +13943: +13943: template +13943: using __is_in_place_type = bool_constant<__is_in_place_type_v<_Tp>>; +13943: +13943: template +13943: inline constexpr bool __is_in_place_index_v = false; +13943: +13943: template +13943: inline constexpr bool __is_in_place_index_v> = true; +13943: +13943: +13943: +13943: +13943: template +13943: struct _Nth_type +13943: { using type = __type_pack_element<_Np, _Types...>; }; +13943: # 283 "/usr/include/c++/14/bits/utility.h" 3 +13943: +13943: } +13943: # 63 "/usr/include/c++/14/bits/stl_pair.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 79 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; +13943: +13943: +13943: inline constexpr piecewise_construct_t piecewise_construct = +13943: piecewise_construct_t(); +13943: +13943: +13943: +13943: +13943: template +13943: struct pair; +13943: +13943: template +13943: class tuple; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct array; +13943: +13943: template +13943: struct _Index_tuple; +13943: +13943: template +13943: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +13943: get(pair<_Tp1, _Tp2>& __in) noexcept; +13943: +13943: template +13943: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +13943: get(pair<_Tp1, _Tp2>&& __in) noexcept; +13943: +13943: template +13943: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +13943: get(const pair<_Tp1, _Tp2>& __in) noexcept; +13943: +13943: template +13943: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +13943: get(const pair<_Tp1, _Tp2>&& __in) noexcept; +13943: +13943: template +13943: constexpr __tuple_element_t<__i, tuple<_Elements...>>& +13943: get(tuple<_Elements...>& __t) noexcept; +13943: +13943: template +13943: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& +13943: get(const tuple<_Elements...>& __t) noexcept; +13943: +13943: template +13943: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& +13943: get(tuple<_Elements...>&& __t) noexcept; +13943: +13943: template +13943: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& +13943: get(const tuple<_Elements...>&& __t) noexcept; +13943: +13943: template +13943: constexpr _Tp& +13943: get(array<_Tp, _Nm>&) noexcept; +13943: +13943: template +13943: constexpr _Tp&& +13943: get(array<_Tp, _Nm>&&) noexcept; +13943: +13943: template +13943: constexpr const _Tp& +13943: get(const array<_Tp, _Nm>&) noexcept; +13943: +13943: template +13943: constexpr const _Tp&& +13943: get(const array<_Tp, _Nm>&&) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _PCC +13943: { +13943: template +13943: static constexpr bool _ConstructiblePair() +13943: { +13943: return __and_, +13943: is_constructible<_T2, const _U2&>>::value; +13943: } +13943: +13943: template +13943: static constexpr bool _ImplicitlyConvertiblePair() +13943: { +13943: return __and_, +13943: is_convertible>::value; +13943: } +13943: +13943: template +13943: static constexpr bool _MoveConstructiblePair() +13943: { +13943: return __and_, +13943: is_constructible<_T2, _U2&&>>::value; +13943: } +13943: +13943: template +13943: static constexpr bool _ImplicitlyMoveConvertiblePair() +13943: { +13943: return __and_, +13943: is_convertible<_U2&&, _T2>>::value; +13943: } +13943: }; +13943: +13943: template +13943: struct _PCC +13943: { +13943: template +13943: static constexpr bool _ConstructiblePair() +13943: { +13943: return false; +13943: } +13943: +13943: template +13943: static constexpr bool _ImplicitlyConvertiblePair() +13943: { +13943: return false; +13943: } +13943: +13943: template +13943: static constexpr bool _MoveConstructiblePair() +13943: { +13943: return false; +13943: } +13943: +13943: template +13943: static constexpr bool _ImplicitlyMoveConvertiblePair() +13943: { +13943: return false; +13943: } +13943: }; +13943: # 260 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template class __pair_base +13943: { +13943: +13943: template friend struct pair; +13943: __pair_base() = default; +13943: ~__pair_base() = default; +13943: __pair_base(const __pair_base&) = default; +13943: __pair_base& operator=(const __pair_base&) = delete; +13943: +13943: }; +13943: # 283 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template +13943: struct pair +13943: : public __pair_base<_T1, _T2> +13943: { +13943: typedef _T1 first_type; +13943: typedef _T2 second_type; +13943: +13943: _T1 first; +13943: _T2 second; +13943: +13943: +13943: constexpr pair(const pair&) = default; +13943: constexpr pair(pair&&) = default; +13943: +13943: template +13943: +13943: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); +13943: +13943: +13943: void +13943: swap(pair& __p) +13943: noexcept(__and_<__is_nothrow_swappable<_T1>, +13943: __is_nothrow_swappable<_T2>>::value) +13943: { +13943: using std::swap; +13943: swap(first, __p.first); +13943: swap(second, __p.second); +13943: } +13943: # 331 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: private: +13943: template +13943: +13943: pair(tuple<_Args1...>&, tuple<_Args2...>&, +13943: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); +13943: public: +13943: # 719 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template , +13943: __is_implicitly_default_constructible<_U2>> +13943: ::value, bool>::type = true> +13943: constexpr pair() +13943: : first(), second() { } +13943: +13943: template , +13943: is_default_constructible<_U2>, +13943: __not_< +13943: __and_<__is_implicitly_default_constructible<_U1>, +13943: __is_implicitly_default_constructible<_U2>>>> +13943: ::value, bool>::type = false> +13943: explicit constexpr pair() +13943: : first(), second() { } +13943: +13943: +13943: +13943: using _PCCP = _PCC; +13943: +13943: +13943: +13943: template() +13943: && _PCCP::template +13943: _ImplicitlyConvertiblePair<_U1, _U2>(), +13943: bool>::type=true> +13943: constexpr pair(const _T1& __a, const _T2& __b) +13943: : first(__a), second(__b) { } +13943: +13943: +13943: template() +13943: && !_PCCP::template +13943: _ImplicitlyConvertiblePair<_U1, _U2>(), +13943: bool>::type=false> +13943: explicit constexpr pair(const _T1& __a, const _T2& __b) +13943: : first(__a), second(__b) { } +13943: +13943: +13943: +13943: template +13943: using _PCCFP = _PCC::value +13943: || !is_same<_T2, _U2>::value, +13943: _T1, _T2>; +13943: +13943: +13943: template::template +13943: _ConstructiblePair<_U1, _U2>() +13943: && _PCCFP<_U1, _U2>::template +13943: _ImplicitlyConvertiblePair<_U1, _U2>(), +13943: bool>::type=true> +13943: constexpr pair(const pair<_U1, _U2>& __p) +13943: : first(__p.first), second(__p.second) +13943: { ; } +13943: +13943: template::template +13943: _ConstructiblePair<_U1, _U2>() +13943: && !_PCCFP<_U1, _U2>::template +13943: _ImplicitlyConvertiblePair<_U1, _U2>(), +13943: bool>::type=false> +13943: explicit constexpr pair(const pair<_U1, _U2>& __p) +13943: : first(__p.first), second(__p.second) +13943: { ; } +13943: # 803 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: private: +13943: +13943: +13943: +13943: struct __zero_as_null_pointer_constant +13943: { +13943: __zero_as_null_pointer_constant(int __zero_as_null_pointer_constant::*) +13943: { } +13943: template::value>> +13943: __zero_as_null_pointer_constant(_Tp) = delete; +13943: }; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: template>, +13943: is_pointer<_T2>, +13943: is_constructible<_T1, _U1>, +13943: __not_>, +13943: is_convertible<_U1, _T1>>::value, +13943: bool> = true> +13943: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +13943: constexpr +13943: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) +13943: : first(std::forward<_U1>(__x)), second(nullptr) +13943: { ; } +13943: +13943: template>, +13943: is_pointer<_T2>, +13943: is_constructible<_T1, _U1>, +13943: __not_>, +13943: __not_>>::value, +13943: bool> = false> +13943: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +13943: explicit constexpr +13943: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) +13943: : first(std::forward<_U1>(__x)), second(nullptr) +13943: { ; } +13943: +13943: template, +13943: __not_>, +13943: is_constructible<_T2, _U2>, +13943: __not_>, +13943: is_convertible<_U2, _T2>>::value, +13943: bool> = true> +13943: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +13943: constexpr +13943: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) +13943: : first(nullptr), second(std::forward<_U2>(__y)) +13943: { ; } +13943: +13943: template, +13943: __not_>, +13943: is_constructible<_T2, _U2>, +13943: __not_>, +13943: __not_>>::value, +13943: bool> = false> +13943: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +13943: explicit constexpr +13943: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) +13943: : first(nullptr), second(std::forward<_U2>(__y)) +13943: { ; } +13943: +13943: +13943: +13943: template() +13943: && _PCCP::template +13943: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +13943: bool>::type=true> +13943: constexpr pair(_U1&& __x, _U2&& __y) +13943: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) +13943: { ; } +13943: +13943: template() +13943: && !_PCCP::template +13943: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +13943: bool>::type=false> +13943: explicit constexpr pair(_U1&& __x, _U2&& __y) +13943: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) +13943: { ; } +13943: +13943: +13943: template::template +13943: _MoveConstructiblePair<_U1, _U2>() +13943: && _PCCFP<_U1, _U2>::template +13943: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +13943: bool>::type=true> +13943: constexpr pair(pair<_U1, _U2>&& __p) +13943: : first(std::forward<_U1>(__p.first)), +13943: second(std::forward<_U2>(__p.second)) +13943: { ; } +13943: +13943: template::template +13943: _MoveConstructiblePair<_U1, _U2>() +13943: && !_PCCFP<_U1, _U2>::template +13943: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +13943: bool>::type=false> +13943: explicit constexpr pair(pair<_U1, _U2>&& __p) +13943: : first(std::forward<_U1>(__p.first)), +13943: second(std::forward<_U2>(__p.second)) +13943: { ; } +13943: +13943: +13943: +13943: pair& +13943: operator=(__conditional_t<__and_, +13943: is_copy_assignable<_T2>>::value, +13943: const pair&, const __nonesuch&> __p) +13943: { +13943: first = __p.first; +13943: second = __p.second; +13943: return *this; +13943: } +13943: +13943: pair& +13943: operator=(__conditional_t<__and_, +13943: is_move_assignable<_T2>>::value, +13943: pair&&, __nonesuch&&> __p) +13943: noexcept(__and_, +13943: is_nothrow_move_assignable<_T2>>::value) +13943: { +13943: first = std::forward(__p.first); +13943: second = std::forward(__p.second); +13943: return *this; +13943: } +13943: +13943: template +13943: typename enable_if<__and_, +13943: is_assignable<_T2&, const _U2&>>::value, +13943: pair&>::type +13943: operator=(const pair<_U1, _U2>& __p) +13943: { +13943: first = __p.first; +13943: second = __p.second; +13943: return *this; +13943: } +13943: +13943: template +13943: typename enable_if<__and_, +13943: is_assignable<_T2&, _U2&&>>::value, +13943: pair&>::type +13943: operator=(pair<_U1, _U2>&& __p) +13943: { +13943: first = std::forward<_U1>(__p.first); +13943: second = std::forward<_U2>(__p.second); +13943: return *this; +13943: } +13943: # 995 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: }; +13943: +13943: +13943: +13943: +13943: template pair(_T1, _T2) -> pair<_T1, _T2>; +13943: # 1031 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template +13943: inline constexpr bool +13943: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +13943: { return __x.first == __y.first && __x.second == __y.second; } +13943: # 1043 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template +13943: inline constexpr bool +13943: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +13943: { return __x.first < __y.first +13943: || (!(__y.first < __x.first) && __x.second < __y.second); } +13943: +13943: +13943: template +13943: inline constexpr bool +13943: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: inline constexpr bool +13943: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: inline constexpr bool +13943: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: inline constexpr bool +13943: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +13943: { return !(__x < __y); } +13943: # 1080 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template +13943: inline +13943: +13943: +13943: typename enable_if<__and_<__is_swappable<_T1>, +13943: __is_swappable<_T2>>::value>::type +13943: +13943: +13943: +13943: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: # 1103 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template +13943: typename enable_if, +13943: __is_swappable<_T2>>::value>::type +13943: swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete; +13943: # 1129 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template +13943: constexpr pair::__type, +13943: typename __decay_and_strip<_T2>::__type> +13943: make_pair(_T1&& __x, _T2&& __y) +13943: { +13943: typedef typename __decay_and_strip<_T1>::__type __ds_type1; +13943: typedef typename __decay_and_strip<_T2>::__type __ds_type2; +13943: typedef pair<__ds_type1, __ds_type2> __pair_type; +13943: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); +13943: } +13943: # 1152 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: template +13943: struct __is_tuple_like_impl> : true_type +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct tuple_size> +13943: : public integral_constant { }; +13943: +13943: +13943: template +13943: struct tuple_element<0, pair<_Tp1, _Tp2>> +13943: { typedef _Tp1 type; }; +13943: +13943: +13943: template +13943: struct tuple_element<1, pair<_Tp1, _Tp2>> +13943: { typedef _Tp2 type; }; +13943: +13943: +13943: +13943: template +13943: struct tuple_element<__i, tuple<_Types...>>; +13943: +13943: +13943: template +13943: inline constexpr size_t tuple_size_v> = 2; +13943: +13943: template +13943: inline constexpr size_t tuple_size_v> = 2; +13943: +13943: template +13943: inline constexpr bool __is_pair = false; +13943: +13943: template +13943: inline constexpr bool __is_pair> = true; +13943: +13943: +13943: +13943: template +13943: struct __pair_get; +13943: +13943: template<> +13943: struct __pair_get<0> +13943: { +13943: template +13943: static constexpr _Tp1& +13943: __get(pair<_Tp1, _Tp2>& __pair) noexcept +13943: { return __pair.first; } +13943: +13943: template +13943: static constexpr _Tp1&& +13943: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept +13943: { return std::forward<_Tp1>(__pair.first); } +13943: +13943: template +13943: static constexpr const _Tp1& +13943: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept +13943: { return __pair.first; } +13943: +13943: template +13943: static constexpr const _Tp1&& +13943: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept +13943: { return std::forward(__pair.first); } +13943: }; +13943: +13943: template<> +13943: struct __pair_get<1> +13943: { +13943: template +13943: static constexpr _Tp2& +13943: __get(pair<_Tp1, _Tp2>& __pair) noexcept +13943: { return __pair.second; } +13943: +13943: template +13943: static constexpr _Tp2&& +13943: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept +13943: { return std::forward<_Tp2>(__pair.second); } +13943: +13943: template +13943: static constexpr const _Tp2& +13943: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept +13943: { return __pair.second; } +13943: +13943: template +13943: static constexpr const _Tp2&& +13943: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept +13943: { return std::forward(__pair.second); } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +13943: get(pair<_Tp1, _Tp2>& __in) noexcept +13943: { return __pair_get<_Int>::__get(__in); } +13943: +13943: template +13943: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +13943: get(pair<_Tp1, _Tp2>&& __in) noexcept +13943: { return __pair_get<_Int>::__move_get(std::move(__in)); } +13943: +13943: template +13943: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +13943: get(const pair<_Tp1, _Tp2>& __in) noexcept +13943: { return __pair_get<_Int>::__const_get(__in); } +13943: +13943: template +13943: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +13943: get(const pair<_Tp1, _Tp2>&& __in) noexcept +13943: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } +13943: +13943: +13943: +13943: template +13943: constexpr _Tp& +13943: get(pair<_Tp, _Up>& __p) noexcept +13943: { return __p.first; } +13943: +13943: template +13943: constexpr const _Tp& +13943: get(const pair<_Tp, _Up>& __p) noexcept +13943: { return __p.first; } +13943: +13943: template +13943: constexpr _Tp&& +13943: get(pair<_Tp, _Up>&& __p) noexcept +13943: { return std::move(__p.first); } +13943: +13943: template +13943: constexpr const _Tp&& +13943: get(const pair<_Tp, _Up>&& __p) noexcept +13943: { return std::move(__p.first); } +13943: +13943: template +13943: constexpr _Tp& +13943: get(pair<_Up, _Tp>& __p) noexcept +13943: { return __p.second; } +13943: +13943: template +13943: constexpr const _Tp& +13943: get(const pair<_Up, _Tp>& __p) noexcept +13943: { return __p.second; } +13943: +13943: template +13943: constexpr _Tp&& +13943: get(pair<_Up, _Tp>&& __p) noexcept +13943: { return std::move(__p.second); } +13943: +13943: template +13943: constexpr const _Tp&& +13943: get(const pair<_Up, _Tp>&& __p) noexcept +13943: { return std::move(__p.second); } +13943: # 1332 "/usr/include/c++/14/bits/stl_pair.h" 3 +13943: +13943: } +13943: # 65 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 1 3 +13943: # 62 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +13943: +13943: # 63 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +13943: # 74 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 93 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +13943: struct input_iterator_tag { }; +13943: +13943: +13943: struct output_iterator_tag { }; +13943: +13943: +13943: struct forward_iterator_tag : public input_iterator_tag { }; +13943: +13943: +13943: +13943: struct bidirectional_iterator_tag : public forward_iterator_tag { }; +13943: +13943: +13943: +13943: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; +13943: # 125 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +13943: template +13943: struct [[__deprecated__]] iterator +13943: { +13943: +13943: typedef _Category iterator_category; +13943: +13943: typedef _Tp value_type; +13943: +13943: typedef _Distance difference_type; +13943: +13943: typedef _Pointer pointer; +13943: +13943: typedef _Reference reference; +13943: }; +13943: # 149 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +13943: template +13943: struct iterator_traits; +13943: +13943: +13943: +13943: +13943: template> +13943: struct __iterator_traits { }; +13943: +13943: +13943: +13943: template +13943: struct __iterator_traits<_Iterator, +13943: __void_t> +13943: { +13943: typedef typename _Iterator::iterator_category iterator_category; +13943: typedef typename _Iterator::value_type value_type; +13943: typedef typename _Iterator::difference_type difference_type; +13943: typedef typename _Iterator::pointer pointer; +13943: typedef typename _Iterator::reference reference; +13943: }; +13943: +13943: +13943: template +13943: struct iterator_traits +13943: : public __iterator_traits<_Iterator> { }; +13943: # 209 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +13943: template +13943: struct iterator_traits<_Tp*> +13943: { +13943: typedef random_access_iterator_tag iterator_category; +13943: typedef _Tp value_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef _Tp* pointer; +13943: typedef _Tp& reference; +13943: }; +13943: +13943: +13943: template +13943: struct iterator_traits +13943: { +13943: typedef random_access_iterator_tag iterator_category; +13943: typedef _Tp value_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef const _Tp* pointer; +13943: typedef const _Tp& reference; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: inline constexpr +13943: typename iterator_traits<_Iter>::iterator_category +13943: __iterator_category(const _Iter&) +13943: { return typename iterator_traits<_Iter>::iterator_category(); } +13943: +13943: +13943: +13943: +13943: template +13943: using __iter_category_t +13943: = typename iterator_traits<_Iter>::iterator_category; +13943: +13943: template +13943: using _RequireInputIter = +13943: __enable_if_t, +13943: input_iterator_tag>::value>; +13943: +13943: template> +13943: struct __is_random_access_iter +13943: : is_base_of +13943: { +13943: typedef is_base_of _Base; +13943: enum { __value = _Base::value }; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 66 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 1 3 +13943: # 62 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +13943: +13943: # 63 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/concept_check.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/concept_check.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/concept_check.h" 3 +13943: # 65 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 2 3 +13943: # 1 "/usr/include/c++/14/debug/assertions.h" 1 3 +13943: # 66 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template struct _List_iterator; +13943: template struct _List_const_iterator; +13943: +13943: +13943: template +13943: inline constexpr +13943: typename iterator_traits<_InputIterator>::difference_type +13943: __distance(_InputIterator __first, _InputIterator __last, +13943: input_iterator_tag) +13943: { +13943: +13943: +13943: +13943: typename iterator_traits<_InputIterator>::difference_type __n = 0; +13943: while (__first != __last) +13943: { +13943: ++__first; +13943: ++__n; +13943: } +13943: return __n; +13943: } +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: inline constexpr +13943: typename iterator_traits<_RandomAccessIterator>::difference_type +13943: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: random_access_iterator_tag) +13943: { +13943: +13943: +13943: +13943: return __last - __first; +13943: } +13943: +13943: +13943: +13943: template +13943: ptrdiff_t +13943: __distance(std::_List_iterator<_Tp>, +13943: std::_List_iterator<_Tp>, +13943: input_iterator_tag); +13943: +13943: template +13943: ptrdiff_t +13943: __distance(std::_List_const_iterator<_Tp>, +13943: std::_List_const_iterator<_Tp>, +13943: input_iterator_tag); +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete; +13943: # 144 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +13943: template +13943: [[__nodiscard__]] __attribute__((__always_inline__)) +13943: inline constexpr +13943: typename iterator_traits<_InputIterator>::difference_type +13943: distance(_InputIterator __first, _InputIterator __last) +13943: { +13943: +13943: return std::__distance(__first, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: template +13943: inline constexpr void +13943: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) +13943: { +13943: +13943: +13943: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); +13943: while (__n--) +13943: ++__i; +13943: } +13943: +13943: template +13943: inline constexpr void +13943: __advance(_BidirectionalIterator& __i, _Distance __n, +13943: bidirectional_iterator_tag) +13943: { +13943: +13943: +13943: +13943: if (__n > 0) +13943: while (__n--) +13943: ++__i; +13943: else +13943: while (__n++) +13943: --__i; +13943: } +13943: +13943: template +13943: inline constexpr void +13943: __advance(_RandomAccessIterator& __i, _Distance __n, +13943: random_access_iterator_tag) +13943: { +13943: +13943: +13943: +13943: if (__builtin_constant_p(__n) && __n == 1) +13943: ++__i; +13943: else if (__builtin_constant_p(__n) && __n == -1) +13943: --__i; +13943: else +13943: __i += __n; +13943: } +13943: +13943: +13943: +13943: template +13943: void +13943: __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; +13943: # 217 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +13943: template +13943: __attribute__((__always_inline__)) +13943: inline constexpr void +13943: advance(_InputIterator& __i, _Distance __n) +13943: { +13943: +13943: typename iterator_traits<_InputIterator>::difference_type __d = __n; +13943: std::__advance(__i, __d, std::__iterator_category(__i)); +13943: } +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] [[__gnu__::__always_inline__]] +13943: inline constexpr _InputIterator +13943: next(_InputIterator __x, typename +13943: iterator_traits<_InputIterator>::difference_type __n = 1) +13943: { +13943: +13943: +13943: std::advance(__x, __n); +13943: return __x; +13943: } +13943: +13943: template +13943: [[__nodiscard__]] [[__gnu__::__always_inline__]] +13943: inline constexpr _BidirectionalIterator +13943: prev(_BidirectionalIterator __x, typename +13943: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) +13943: { +13943: +13943: +13943: +13943: std::advance(__x, -__n); +13943: return __x; +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 67 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_iterator.h" 1 3 +13943: # 67 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: # 1 "/usr/include/c++/14/bits/ptr_traits.h" 1 3 +13943: # 42 "/usr/include/c++/14/bits/ptr_traits.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: class __undefined; +13943: +13943: +13943: +13943: template +13943: struct __get_first_arg +13943: { using type = __undefined; }; +13943: +13943: template class _SomeTemplate, typename _Tp, +13943: typename... _Types> +13943: struct __get_first_arg<_SomeTemplate<_Tp, _Types...>> +13943: { using type = _Tp; }; +13943: +13943: +13943: +13943: template +13943: struct __replace_first_arg +13943: { }; +13943: +13943: template class _SomeTemplate, typename _Up, +13943: typename _Tp, typename... _Types> +13943: struct __replace_first_arg<_SomeTemplate<_Tp, _Types...>, _Up> +13943: { using type = _SomeTemplate<_Up, _Types...>; }; +13943: +13943: +13943: template +13943: struct __ptr_traits_elem : __get_first_arg<_Ptr> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __ptr_traits_elem<_Ptr, __void_t> +13943: { using type = typename _Ptr::element_type; }; +13943: +13943: +13943: template +13943: using __ptr_traits_elem_t = typename __ptr_traits_elem<_Ptr>::type; +13943: +13943: +13943: +13943: +13943: template::value> +13943: struct __ptr_traits_ptr_to +13943: { +13943: using pointer = _Ptr; +13943: using element_type = _Elt; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: static pointer +13943: pointer_to(element_type& __r) +13943: +13943: +13943: +13943: +13943: +13943: { return pointer::pointer_to(__r); } +13943: }; +13943: +13943: +13943: template +13943: struct __ptr_traits_ptr_to<_Ptr, _Elt, true> +13943: { }; +13943: +13943: +13943: template +13943: struct __ptr_traits_ptr_to<_Tp*, _Tp, false> +13943: { +13943: using pointer = _Tp*; +13943: using element_type = _Tp; +13943: +13943: +13943: +13943: +13943: +13943: +13943: static pointer +13943: pointer_to(element_type& __r) noexcept +13943: { return std::addressof(__r); } +13943: }; +13943: +13943: template +13943: struct __ptr_traits_impl : __ptr_traits_ptr_to<_Ptr, _Elt> +13943: { +13943: private: +13943: template +13943: using __diff_t = typename _Tp::difference_type; +13943: +13943: template +13943: using __rebind = __type_identity>; +13943: +13943: public: +13943: +13943: using pointer = _Ptr; +13943: +13943: +13943: using element_type = _Elt; +13943: +13943: +13943: using difference_type = __detected_or_t; +13943: +13943: +13943: template +13943: using rebind = typename __detected_or_t<__replace_first_arg<_Ptr, _Up>, +13943: __rebind, _Ptr, _Up>::type; +13943: }; +13943: +13943: +13943: +13943: template +13943: struct __ptr_traits_impl<_Ptr, __undefined> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct pointer_traits : __ptr_traits_impl<_Ptr, __ptr_traits_elem_t<_Ptr>> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct pointer_traits<_Tp*> : __ptr_traits_ptr_to<_Tp*, _Tp> +13943: { +13943: +13943: typedef _Tp* pointer; +13943: +13943: typedef _Tp element_type; +13943: +13943: typedef ptrdiff_t difference_type; +13943: +13943: template using rebind = _Up*; +13943: }; +13943: +13943: +13943: template +13943: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; +13943: +13943: template +13943: constexpr _Tp* +13943: __to_address(_Tp* __ptr) noexcept +13943: { +13943: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); +13943: return __ptr; +13943: } +13943: +13943: +13943: template +13943: constexpr typename std::pointer_traits<_Ptr>::element_type* +13943: __to_address(const _Ptr& __ptr) +13943: { return std::__to_address(__ptr.operator->()); } +13943: # 257 "/usr/include/c++/14/bits/ptr_traits.h" 3 +13943: +13943: } +13943: # 68 "/usr/include/c++/14/bits/stl_iterator.h" 2 3 +13943: # 85 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 106 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: +13943: # 106 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: # 128 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: class reverse_iterator +13943: : public iterator::iterator_category, +13943: typename iterator_traits<_Iterator>::value_type, +13943: typename iterator_traits<_Iterator>::difference_type, +13943: typename iterator_traits<_Iterator>::pointer, +13943: typename iterator_traits<_Iterator>::reference> +13943: { +13943: template +13943: friend class reverse_iterator; +13943: # 147 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: protected: +13943: _Iterator current; +13943: +13943: typedef iterator_traits<_Iterator> __traits_type; +13943: +13943: public: +13943: typedef _Iterator iterator_type; +13943: typedef typename __traits_type::pointer pointer; +13943: +13943: typedef typename __traits_type::difference_type difference_type; +13943: typedef typename __traits_type::reference reference; +13943: # 178 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: constexpr +13943: reverse_iterator() +13943: noexcept(noexcept(_Iterator())) +13943: : current() +13943: { } +13943: +13943: +13943: +13943: +13943: explicit constexpr +13943: reverse_iterator(iterator_type __x) +13943: noexcept(noexcept(_Iterator(__x))) +13943: : current(__x) +13943: { } +13943: +13943: +13943: +13943: +13943: constexpr +13943: reverse_iterator(const reverse_iterator& __x) +13943: noexcept(noexcept(_Iterator(__x.current))) +13943: : current(__x.current) +13943: { } +13943: +13943: +13943: reverse_iterator& operator=(const reverse_iterator&) = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: +13943: +13943: constexpr +13943: reverse_iterator(const reverse_iterator<_Iter>& __x) +13943: noexcept(noexcept(_Iterator(__x.current))) +13943: : current(__x.current) +13943: { } +13943: +13943: +13943: template +13943: +13943: +13943: +13943: +13943: constexpr +13943: reverse_iterator& +13943: operator=(const reverse_iterator<_Iter>& __x) +13943: noexcept(noexcept(current = __x.current)) +13943: { +13943: current = __x.current; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr iterator_type +13943: base() const +13943: noexcept(noexcept(_Iterator(current))) +13943: { return current; } +13943: # 255 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: [[__nodiscard__]] +13943: constexpr reference +13943: operator*() const +13943: { +13943: _Iterator __tmp = current; +13943: return *--__tmp; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr pointer +13943: operator->() const +13943: +13943: +13943: +13943: +13943: { +13943: +13943: +13943: _Iterator __tmp = current; +13943: --__tmp; +13943: return _S_to_pointer(__tmp); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: constexpr reverse_iterator& +13943: operator++() +13943: { +13943: --current; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: constexpr reverse_iterator +13943: operator++(int) +13943: { +13943: reverse_iterator __tmp = *this; +13943: --current; +13943: return __tmp; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: constexpr reverse_iterator& +13943: operator--() +13943: { +13943: ++current; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: constexpr reverse_iterator +13943: operator--(int) +13943: { +13943: reverse_iterator __tmp = *this; +13943: ++current; +13943: return __tmp; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr reverse_iterator +13943: operator+(difference_type __n) const +13943: { return reverse_iterator(current - __n); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: constexpr reverse_iterator& +13943: operator+=(difference_type __n) +13943: { +13943: current -= __n; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr reverse_iterator +13943: operator-(difference_type __n) const +13943: { return reverse_iterator(current + __n); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: constexpr reverse_iterator& +13943: operator-=(difference_type __n) +13943: { +13943: current += __n; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr reference +13943: operator[](difference_type __n) const +13943: { return *(*this + __n); } +13943: # 415 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: private: +13943: template +13943: static constexpr _Tp* +13943: _S_to_pointer(_Tp* __p) +13943: { return __p; } +13943: +13943: template +13943: static constexpr pointer +13943: _S_to_pointer(_Tp __t) +13943: { return __t.operator->(); } +13943: }; +13943: # 438 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator==(const reverse_iterator<_Iterator>& __x, +13943: const reverse_iterator<_Iterator>& __y) +13943: { return __x.base() == __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator<(const reverse_iterator<_Iterator>& __x, +13943: const reverse_iterator<_Iterator>& __y) +13943: { return __y.base() < __x.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator!=(const reverse_iterator<_Iterator>& __x, +13943: const reverse_iterator<_Iterator>& __y) +13943: { return !(__x == __y); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>(const reverse_iterator<_Iterator>& __x, +13943: const reverse_iterator<_Iterator>& __y) +13943: { return __y < __x; } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator<=(const reverse_iterator<_Iterator>& __x, +13943: const reverse_iterator<_Iterator>& __y) +13943: { return !(__y < __x); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>=(const reverse_iterator<_Iterator>& __x, +13943: const reverse_iterator<_Iterator>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator==(const reverse_iterator<_IteratorL>& __x, +13943: const reverse_iterator<_IteratorR>& __y) +13943: { return __x.base() == __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator<(const reverse_iterator<_IteratorL>& __x, +13943: const reverse_iterator<_IteratorR>& __y) +13943: { return __x.base() > __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator!=(const reverse_iterator<_IteratorL>& __x, +13943: const reverse_iterator<_IteratorR>& __y) +13943: { return __x.base() != __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>(const reverse_iterator<_IteratorL>& __x, +13943: const reverse_iterator<_IteratorR>& __y) +13943: { return __x.base() < __y.base(); } +13943: +13943: template +13943: inline constexpr bool +13943: operator<=(const reverse_iterator<_IteratorL>& __x, +13943: const reverse_iterator<_IteratorR>& __y) +13943: { return __x.base() >= __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>=(const reverse_iterator<_IteratorL>& __x, +13943: const reverse_iterator<_IteratorR>& __y) +13943: { return __x.base() <= __y.base(); } +13943: # 615 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr auto +13943: operator-(const reverse_iterator<_IteratorL>& __x, +13943: const reverse_iterator<_IteratorR>& __y) +13943: -> decltype(__y.base() - __x.base()) +13943: { return __y.base() - __x.base(); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr reverse_iterator<_Iterator> +13943: operator+(typename reverse_iterator<_Iterator>::difference_type __n, +13943: const reverse_iterator<_Iterator>& __x) +13943: { return reverse_iterator<_Iterator>(__x.base() - __n); } +13943: +13943: +13943: +13943: template +13943: inline constexpr reverse_iterator<_Iterator> +13943: __make_reverse_iterator(_Iterator __i) +13943: { return reverse_iterator<_Iterator>(__i); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr reverse_iterator<_Iterator> +13943: make_reverse_iterator(_Iterator __i) +13943: { return reverse_iterator<_Iterator>(__i); } +13943: # 657 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: +13943: auto +13943: __niter_base(reverse_iterator<_Iterator> __it) +13943: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) +13943: { return __make_reverse_iterator(__niter_base(__it.base())); } +13943: +13943: template +13943: struct __is_move_iterator > +13943: : __is_move_iterator<_Iterator> +13943: { }; +13943: +13943: template +13943: +13943: auto +13943: __miter_base(reverse_iterator<_Iterator> __it) +13943: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) +13943: { return __make_reverse_iterator(__miter_base(__it.base())); } +13943: # 688 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: class back_insert_iterator +13943: : public iterator +13943: { +13943: protected: +13943: _Container* container; +13943: +13943: public: +13943: +13943: typedef _Container container_type; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: back_insert_iterator(_Container& __x) +13943: : container(std::__addressof(__x)) { } +13943: # 726 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: +13943: back_insert_iterator& +13943: operator=(const typename _Container::value_type& __value) +13943: { +13943: container->push_back(__value); +13943: return *this; +13943: } +13943: +13943: +13943: back_insert_iterator& +13943: operator=(typename _Container::value_type&& __value) +13943: { +13943: container->push_back(std::move(__value)); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: back_insert_iterator& +13943: operator*() +13943: { return *this; } +13943: +13943: +13943: +13943: back_insert_iterator& +13943: operator++() +13943: { return *this; } +13943: +13943: +13943: +13943: back_insert_iterator +13943: operator++(int) +13943: { return *this; } +13943: }; +13943: # 773 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline back_insert_iterator<_Container> +13943: back_inserter(_Container& __x) +13943: { return back_insert_iterator<_Container>(__x); } +13943: # 789 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: class front_insert_iterator +13943: : public iterator +13943: { +13943: protected: +13943: _Container* container; +13943: +13943: public: +13943: +13943: typedef _Container container_type; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: front_insert_iterator(_Container& __x) +13943: : container(std::__addressof(__x)) { } +13943: # 827 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: +13943: front_insert_iterator& +13943: operator=(const typename _Container::value_type& __value) +13943: { +13943: container->push_front(__value); +13943: return *this; +13943: } +13943: +13943: +13943: front_insert_iterator& +13943: operator=(typename _Container::value_type&& __value) +13943: { +13943: container->push_front(std::move(__value)); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: front_insert_iterator& +13943: operator*() +13943: { return *this; } +13943: +13943: +13943: +13943: front_insert_iterator& +13943: operator++() +13943: { return *this; } +13943: +13943: +13943: +13943: front_insert_iterator +13943: operator++(int) +13943: { return *this; } +13943: }; +13943: # 874 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline front_insert_iterator<_Container> +13943: front_inserter(_Container& __x) +13943: { return front_insert_iterator<_Container>(__x); } +13943: # 894 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: class insert_iterator +13943: : public iterator +13943: { +13943: +13943: +13943: +13943: typedef typename _Container::iterator _Iter; +13943: +13943: protected: +13943: _Container* container; +13943: _Iter iter; +13943: +13943: public: +13943: +13943: typedef _Container container_type; +13943: # 919 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: +13943: insert_iterator(_Container& __x, _Iter __i) +13943: : container(std::__addressof(__x)), iter(__i) {} +13943: # 955 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: +13943: insert_iterator& +13943: operator=(const typename _Container::value_type& __value) +13943: { +13943: iter = container->insert(iter, __value); +13943: ++iter; +13943: return *this; +13943: } +13943: +13943: +13943: insert_iterator& +13943: operator=(typename _Container::value_type&& __value) +13943: { +13943: iter = container->insert(iter, std::move(__value)); +13943: ++iter; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: insert_iterator& +13943: operator*() +13943: { return *this; } +13943: +13943: +13943: +13943: insert_iterator& +13943: operator++() +13943: { return *this; } +13943: +13943: +13943: +13943: insert_iterator& +13943: operator++(int) +13943: { return *this; } +13943: }; +13943: +13943: #pragma GCC diagnostic pop +13943: # 1014 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline insert_iterator<_Container> +13943: inserter(_Container& __x, typename _Container::iterator __i) +13943: { return insert_iterator<_Container>(__x, __i); } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 1037 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: class __normal_iterator +13943: { +13943: protected: +13943: _Iterator _M_current; +13943: +13943: typedef std::iterator_traits<_Iterator> __traits_type; +13943: +13943: +13943: template +13943: using __convertible_from +13943: = std::__enable_if_t::value>; +13943: +13943: +13943: public: +13943: typedef _Iterator iterator_type; +13943: typedef typename __traits_type::iterator_category iterator_category; +13943: typedef typename __traits_type::value_type value_type; +13943: typedef typename __traits_type::difference_type difference_type; +13943: typedef typename __traits_type::reference reference; +13943: typedef typename __traits_type::pointer pointer; +13943: +13943: +13943: +13943: +13943: +13943: constexpr __normal_iterator() noexcept +13943: : _M_current(_Iterator()) { } +13943: +13943: explicit +13943: __normal_iterator(const _Iterator& __i) noexcept +13943: : _M_current(__i) { } +13943: +13943: +13943: +13943: template> +13943: +13943: __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) +13943: noexcept +13943: # 1085 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: : _M_current(__i.base()) { } +13943: +13943: +13943: +13943: reference +13943: operator*() const noexcept +13943: { return *_M_current; } +13943: +13943: +13943: pointer +13943: operator->() const noexcept +13943: { return _M_current; } +13943: +13943: +13943: __normal_iterator& +13943: operator++() noexcept +13943: { +13943: ++_M_current; +13943: return *this; +13943: } +13943: +13943: +13943: __normal_iterator +13943: operator++(int) noexcept +13943: { return __normal_iterator(_M_current++); } +13943: +13943: +13943: +13943: __normal_iterator& +13943: operator--() noexcept +13943: { +13943: --_M_current; +13943: return *this; +13943: } +13943: +13943: +13943: __normal_iterator +13943: operator--(int) noexcept +13943: { return __normal_iterator(_M_current--); } +13943: +13943: +13943: +13943: reference +13943: operator[](difference_type __n) const noexcept +13943: { return _M_current[__n]; } +13943: +13943: +13943: __normal_iterator& +13943: operator+=(difference_type __n) noexcept +13943: { _M_current += __n; return *this; } +13943: +13943: +13943: __normal_iterator +13943: operator+(difference_type __n) const noexcept +13943: { return __normal_iterator(_M_current + __n); } +13943: +13943: +13943: __normal_iterator& +13943: operator-=(difference_type __n) noexcept +13943: { _M_current -= __n; return *this; } +13943: +13943: +13943: __normal_iterator +13943: operator-(difference_type __n) const noexcept +13943: { return __normal_iterator(_M_current - __n); } +13943: +13943: +13943: const _Iterator& +13943: base() const noexcept +13943: { return _M_current; } +13943: }; +13943: # 1205 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, +13943: const __normal_iterator<_IteratorR, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() == __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, +13943: const __normal_iterator<_Iterator, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() == __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, +13943: const __normal_iterator<_IteratorR, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() != __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, +13943: const __normal_iterator<_Iterator, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() != __rhs.base(); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, +13943: const __normal_iterator<_IteratorR, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() < __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, +13943: const __normal_iterator<_Iterator, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() < __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, +13943: const __normal_iterator<_IteratorR, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() > __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, +13943: const __normal_iterator<_Iterator, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() > __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, +13943: const __normal_iterator<_IteratorR, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() <= __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, +13943: const __normal_iterator<_Iterator, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() <= __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, +13943: const __normal_iterator<_IteratorR, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() >= __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, +13943: const __normal_iterator<_Iterator, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() >= __rhs.base(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: +13943: [[__nodiscard__]] +13943: inline auto +13943: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, +13943: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept +13943: -> decltype(__lhs.base() - __rhs.base()) +13943: +13943: +13943: +13943: +13943: +13943: { return __lhs.base() - __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline typename __normal_iterator<_Iterator, _Container>::difference_type +13943: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, +13943: const __normal_iterator<_Iterator, _Container>& __rhs) +13943: noexcept +13943: { return __lhs.base() - __rhs.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline __normal_iterator<_Iterator, _Container> +13943: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type +13943: __n, const __normal_iterator<_Iterator, _Container>& __i) +13943: noexcept +13943: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } +13943: +13943: +13943: } +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: +13943: _Iterator +13943: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) +13943: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) +13943: { return __it.base(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr auto +13943: __to_address(const __gnu_cxx::__normal_iterator<_Iterator, +13943: _Container>& __it) noexcept +13943: -> decltype(std::__to_address(__it.base())) +13943: { return std::__to_address(__it.base()); } +13943: # 1412 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: namespace __detail +13943: { +13943: # 1428 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: } +13943: # 1439 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: class move_iterator +13943: +13943: +13943: +13943: { +13943: _Iterator _M_current; +13943: +13943: using __traits_type = iterator_traits<_Iterator>; +13943: +13943: using __base_ref = typename __traits_type::reference; +13943: +13943: +13943: template +13943: friend class move_iterator; +13943: # 1478 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: public: +13943: using iterator_type = _Iterator; +13943: # 1490 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: typedef typename __traits_type::iterator_category iterator_category; +13943: typedef typename __traits_type::value_type value_type; +13943: typedef typename __traits_type::difference_type difference_type; +13943: +13943: typedef _Iterator pointer; +13943: +13943: +13943: using reference +13943: = __conditional_t::value, +13943: typename remove_reference<__base_ref>::type&&, +13943: __base_ref>; +13943: +13943: +13943: constexpr +13943: move_iterator() +13943: : _M_current() { } +13943: +13943: explicit constexpr +13943: move_iterator(iterator_type __i) +13943: : _M_current(std::move(__i)) { } +13943: +13943: template +13943: +13943: +13943: +13943: constexpr +13943: move_iterator(const move_iterator<_Iter>& __i) +13943: : _M_current(__i._M_current) { } +13943: +13943: template +13943: +13943: +13943: +13943: +13943: constexpr +13943: move_iterator& operator=(const move_iterator<_Iter>& __i) +13943: { +13943: _M_current = __i._M_current; +13943: return *this; +13943: } +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr iterator_type +13943: base() const +13943: { return _M_current; } +13943: # 1548 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: [[__nodiscard__]] +13943: constexpr reference +13943: operator*() const +13943: +13943: +13943: +13943: { return static_cast(*_M_current); } +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr pointer +13943: operator->() const +13943: { return _M_current; } +13943: +13943: constexpr move_iterator& +13943: operator++() +13943: { +13943: ++_M_current; +13943: return *this; +13943: } +13943: +13943: constexpr move_iterator +13943: operator++(int) +13943: { +13943: move_iterator __tmp = *this; +13943: ++_M_current; +13943: return __tmp; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: constexpr move_iterator& +13943: operator--() +13943: { +13943: --_M_current; +13943: return *this; +13943: } +13943: +13943: constexpr move_iterator +13943: operator--(int) +13943: { +13943: move_iterator __tmp = *this; +13943: --_M_current; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr move_iterator +13943: operator+(difference_type __n) const +13943: { return move_iterator(_M_current + __n); } +13943: +13943: constexpr move_iterator& +13943: operator+=(difference_type __n) +13943: { +13943: _M_current += __n; +13943: return *this; +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr move_iterator +13943: operator-(difference_type __n) const +13943: { return move_iterator(_M_current - __n); } +13943: +13943: constexpr move_iterator& +13943: operator-=(difference_type __n) +13943: { +13943: _M_current -= __n; +13943: return *this; +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr reference +13943: operator[](difference_type __n) const +13943: +13943: +13943: +13943: { return std::move(_M_current[__n]); } +13943: # 1662 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: }; +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator==(const move_iterator<_IteratorL>& __x, +13943: const move_iterator<_IteratorR>& __y) +13943: +13943: +13943: +13943: { return __x.base() == __y.base(); } +13943: # 1683 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator!=(const move_iterator<_IteratorL>& __x, +13943: const move_iterator<_IteratorR>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator<(const move_iterator<_IteratorL>& __x, +13943: const move_iterator<_IteratorR>& __y) +13943: +13943: +13943: +13943: { return __x.base() < __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator<=(const move_iterator<_IteratorL>& __x, +13943: const move_iterator<_IteratorR>& __y) +13943: +13943: +13943: +13943: { return !(__y < __x); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>(const move_iterator<_IteratorL>& __x, +13943: const move_iterator<_IteratorR>& __y) +13943: +13943: +13943: +13943: { return __y < __x; } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>=(const move_iterator<_IteratorL>& __x, +13943: const move_iterator<_IteratorR>& __y) +13943: +13943: +13943: +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator==(const move_iterator<_Iterator>& __x, +13943: const move_iterator<_Iterator>& __y) +13943: +13943: { return __x.base() == __y.base(); } +13943: # 1750 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator!=(const move_iterator<_Iterator>& __x, +13943: const move_iterator<_Iterator>& __y) +13943: { return !(__x == __y); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator<(const move_iterator<_Iterator>& __x, +13943: const move_iterator<_Iterator>& __y) +13943: { return __x.base() < __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator<=(const move_iterator<_Iterator>& __x, +13943: const move_iterator<_Iterator>& __y) +13943: { return !(__y < __x); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>(const move_iterator<_Iterator>& __x, +13943: const move_iterator<_Iterator>& __y) +13943: { return __y < __x; } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr bool +13943: operator>=(const move_iterator<_Iterator>& __x, +13943: const move_iterator<_Iterator>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr auto +13943: operator-(const move_iterator<_IteratorL>& __x, +13943: const move_iterator<_IteratorR>& __y) +13943: -> decltype(__x.base() - __y.base()) +13943: { return __x.base() - __y.base(); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr move_iterator<_Iterator> +13943: operator+(typename move_iterator<_Iterator>::difference_type __n, +13943: const move_iterator<_Iterator>& __x) +13943: +13943: +13943: +13943: { return __x + __n; } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr move_iterator<_Iterator> +13943: make_move_iterator(_Iterator __i) +13943: { return move_iterator<_Iterator>(std::move(__i)); } +13943: +13943: template::value_type>::value, +13943: _Iterator, move_iterator<_Iterator>>> +13943: inline constexpr _ReturnType +13943: __make_move_if_noexcept_iterator(_Iterator __i) +13943: { return _ReturnType(__i); } +13943: +13943: +13943: +13943: template::value, +13943: const _Tp*, move_iterator<_Tp*>>> +13943: inline constexpr _ReturnType +13943: __make_move_if_noexcept_iterator(_Tp* __i) +13943: { return _ReturnType(__i); } +13943: # 2964 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: +13943: auto +13943: __niter_base(move_iterator<_Iterator> __it) +13943: -> decltype(make_move_iterator(__niter_base(__it.base()))) +13943: { return make_move_iterator(__niter_base(__it.base())); } +13943: +13943: template +13943: struct __is_move_iterator > +13943: { +13943: enum { __value = 1 }; +13943: typedef __true_type __type; +13943: }; +13943: +13943: template +13943: +13943: auto +13943: __miter_base(move_iterator<_Iterator> __it) +13943: -> decltype(__miter_base(__it.base())) +13943: { return __miter_base(__it.base()); } +13943: # 2996 "/usr/include/c++/14/bits/stl_iterator.h" 3 +13943: template +13943: using __iter_key_t = remove_const_t< +13943: +13943: +13943: +13943: typename iterator_traits<_InputIterator>::value_type::first_type>; +13943: +13943: +13943: template +13943: using __iter_val_t +13943: +13943: +13943: +13943: = typename iterator_traits<_InputIterator>::value_type::second_type; +13943: +13943: +13943: template +13943: struct pair; +13943: +13943: template +13943: using __iter_to_alloc_t +13943: = pair, __iter_val_t<_InputIterator>>; +13943: +13943: +13943: +13943: } +13943: # 68 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/debug/debug.h" 1 3 +13943: # 48 "/usr/include/c++/14/debug/debug.h" 3 +13943: namespace std +13943: { +13943: namespace __debug { } +13943: } +13943: +13943: +13943: +13943: +13943: namespace __gnu_debug +13943: { +13943: using namespace std::__debug; +13943: +13943: template +13943: struct _Safe_iterator; +13943: } +13943: # 70 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/predefined_ops.h" 1 3 +13943: # 35 "/usr/include/c++/14/bits/predefined_ops.h" 3 +13943: namespace __gnu_cxx +13943: { +13943: namespace __ops +13943: { +13943: struct _Iter_less_iter +13943: { +13943: template +13943: constexpr +13943: bool +13943: operator()(_Iterator1 __it1, _Iterator2 __it2) const +13943: { return *__it1 < *__it2; } +13943: }; +13943: +13943: constexpr +13943: inline _Iter_less_iter +13943: __iter_less_iter() +13943: { return _Iter_less_iter(); } +13943: +13943: struct _Iter_less_val +13943: { +13943: +13943: constexpr _Iter_less_val() = default; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: _Iter_less_val(_Iter_less_iter) { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator __it, _Value& __val) const +13943: { return *__it < __val; } +13943: }; +13943: +13943: +13943: inline _Iter_less_val +13943: __iter_less_val() +13943: { return _Iter_less_val(); } +13943: +13943: +13943: inline _Iter_less_val +13943: __iter_comp_val(_Iter_less_iter) +13943: { return _Iter_less_val(); } +13943: +13943: struct _Val_less_iter +13943: { +13943: +13943: constexpr _Val_less_iter() = default; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: _Val_less_iter(_Iter_less_iter) { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Value& __val, _Iterator __it) const +13943: { return __val < *__it; } +13943: }; +13943: +13943: +13943: inline _Val_less_iter +13943: __val_less_iter() +13943: { return _Val_less_iter(); } +13943: +13943: +13943: inline _Val_less_iter +13943: __val_comp_iter(_Iter_less_iter) +13943: { return _Val_less_iter(); } +13943: +13943: struct _Iter_equal_to_iter +13943: { +13943: template +13943: +13943: bool +13943: operator()(_Iterator1 __it1, _Iterator2 __it2) const +13943: { return *__it1 == *__it2; } +13943: }; +13943: +13943: +13943: inline _Iter_equal_to_iter +13943: __iter_equal_to_iter() +13943: { return _Iter_equal_to_iter(); } +13943: +13943: struct _Iter_equal_to_val +13943: { +13943: template +13943: +13943: bool +13943: operator()(_Iterator __it, _Value& __val) const +13943: { return *__it == __val; } +13943: }; +13943: +13943: +13943: inline _Iter_equal_to_val +13943: __iter_equal_to_val() +13943: { return _Iter_equal_to_val(); } +13943: +13943: +13943: inline _Iter_equal_to_val +13943: __iter_comp_val(_Iter_equal_to_iter) +13943: { return _Iter_equal_to_val(); } +13943: +13943: template +13943: struct _Iter_comp_iter +13943: { +13943: _Compare _M_comp; +13943: +13943: explicit constexpr +13943: _Iter_comp_iter(_Compare __comp) +13943: : _M_comp(std::move(__comp)) +13943: { } +13943: +13943: template +13943: constexpr +13943: bool +13943: operator()(_Iterator1 __it1, _Iterator2 __it2) +13943: { return bool(_M_comp(*__it1, *__it2)); } +13943: }; +13943: +13943: template +13943: constexpr +13943: inline _Iter_comp_iter<_Compare> +13943: __iter_comp_iter(_Compare __comp) +13943: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } +13943: +13943: template +13943: struct _Iter_comp_val +13943: { +13943: _Compare _M_comp; +13943: +13943: +13943: explicit +13943: _Iter_comp_val(_Compare __comp) +13943: : _M_comp(std::move(__comp)) +13943: { } +13943: +13943: +13943: explicit +13943: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) +13943: : _M_comp(__comp._M_comp) +13943: { } +13943: +13943: +13943: +13943: explicit +13943: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) +13943: : _M_comp(std::move(__comp._M_comp)) +13943: { } +13943: +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator __it, _Value& __val) +13943: { return bool(_M_comp(*__it, __val)); } +13943: }; +13943: +13943: template +13943: +13943: inline _Iter_comp_val<_Compare> +13943: __iter_comp_val(_Compare __comp) +13943: { return _Iter_comp_val<_Compare>(std::move(__comp)); } +13943: +13943: template +13943: +13943: inline _Iter_comp_val<_Compare> +13943: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) +13943: { return _Iter_comp_val<_Compare>(std::move(__comp)); } +13943: +13943: template +13943: struct _Val_comp_iter +13943: { +13943: _Compare _M_comp; +13943: +13943: +13943: explicit +13943: _Val_comp_iter(_Compare __comp) +13943: : _M_comp(std::move(__comp)) +13943: { } +13943: +13943: +13943: explicit +13943: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) +13943: : _M_comp(__comp._M_comp) +13943: { } +13943: +13943: +13943: +13943: explicit +13943: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) +13943: : _M_comp(std::move(__comp._M_comp)) +13943: { } +13943: +13943: +13943: template +13943: +13943: bool +13943: operator()(_Value& __val, _Iterator __it) +13943: { return bool(_M_comp(__val, *__it)); } +13943: }; +13943: +13943: template +13943: +13943: inline _Val_comp_iter<_Compare> +13943: __val_comp_iter(_Compare __comp) +13943: { return _Val_comp_iter<_Compare>(std::move(__comp)); } +13943: +13943: template +13943: +13943: inline _Val_comp_iter<_Compare> +13943: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) +13943: { return _Val_comp_iter<_Compare>(std::move(__comp)); } +13943: +13943: template +13943: struct _Iter_equals_val +13943: { +13943: _Value& _M_value; +13943: +13943: +13943: explicit +13943: _Iter_equals_val(_Value& __value) +13943: : _M_value(__value) +13943: { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator __it) +13943: { return *__it == _M_value; } +13943: }; +13943: +13943: template +13943: +13943: inline _Iter_equals_val<_Value> +13943: __iter_equals_val(_Value& __val) +13943: { return _Iter_equals_val<_Value>(__val); } +13943: +13943: template +13943: struct _Iter_equals_iter +13943: { +13943: _Iterator1 _M_it1; +13943: +13943: +13943: explicit +13943: _Iter_equals_iter(_Iterator1 __it1) +13943: : _M_it1(__it1) +13943: { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator2 __it2) +13943: { return *__it2 == *_M_it1; } +13943: }; +13943: +13943: template +13943: +13943: inline _Iter_equals_iter<_Iterator> +13943: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) +13943: { return _Iter_equals_iter<_Iterator>(__it); } +13943: +13943: template +13943: struct _Iter_pred +13943: { +13943: _Predicate _M_pred; +13943: +13943: +13943: explicit +13943: _Iter_pred(_Predicate __pred) +13943: : _M_pred(std::move(__pred)) +13943: { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator __it) +13943: { return bool(_M_pred(*__it)); } +13943: }; +13943: +13943: template +13943: +13943: inline _Iter_pred<_Predicate> +13943: __pred_iter(_Predicate __pred) +13943: { return _Iter_pred<_Predicate>(std::move(__pred)); } +13943: +13943: template +13943: struct _Iter_comp_to_val +13943: { +13943: _Compare _M_comp; +13943: _Value& _M_value; +13943: +13943: +13943: _Iter_comp_to_val(_Compare __comp, _Value& __value) +13943: : _M_comp(std::move(__comp)), _M_value(__value) +13943: { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator __it) +13943: { return bool(_M_comp(*__it, _M_value)); } +13943: }; +13943: +13943: template +13943: _Iter_comp_to_val<_Compare, _Value> +13943: +13943: __iter_comp_val(_Compare __comp, _Value &__val) +13943: { +13943: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); +13943: } +13943: +13943: template +13943: struct _Iter_comp_to_iter +13943: { +13943: _Compare _M_comp; +13943: _Iterator1 _M_it1; +13943: +13943: +13943: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) +13943: : _M_comp(std::move(__comp)), _M_it1(__it1) +13943: { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator2 __it2) +13943: { return bool(_M_comp(*__it2, *_M_it1)); } +13943: }; +13943: +13943: template +13943: +13943: inline _Iter_comp_to_iter<_Compare, _Iterator> +13943: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) +13943: { +13943: return _Iter_comp_to_iter<_Compare, _Iterator>( +13943: std::move(__comp._M_comp), __it); +13943: } +13943: +13943: template +13943: struct _Iter_negate +13943: { +13943: _Predicate _M_pred; +13943: +13943: +13943: explicit +13943: _Iter_negate(_Predicate __pred) +13943: : _M_pred(std::move(__pred)) +13943: { } +13943: +13943: template +13943: +13943: bool +13943: operator()(_Iterator __it) +13943: { return !bool(_M_pred(*__it)); } +13943: }; +13943: +13943: template +13943: +13943: inline _Iter_negate<_Predicate> +13943: __negate(_Iter_pred<_Predicate> __pred) +13943: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } +13943: +13943: } +13943: } +13943: # 72 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bit" 1 3 +13943: # 32 "/usr/include/c++/14/bit" 3 +13943: +13943: # 33 "/usr/include/c++/14/bit" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/concepts" 1 3 +13943: # 33 "/usr/include/c++/14/concepts" 3 +13943: +13943: # 34 "/usr/include/c++/14/concepts" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 37 "/usr/include/c++/14/concepts" 2 3 +13943: # 37 "/usr/include/c++/14/bit" 2 3 +13943: # 61 "/usr/include/c++/14/bit" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 62 "/usr/include/c++/14/bit" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 155 "/usr/include/c++/14/bit" 3 +13943: template +13943: constexpr _Tp +13943: __rotl(_Tp __x, int __s) noexcept +13943: { +13943: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +13943: if constexpr ((_Nd & (_Nd - 1)) == 0) +13943: { +13943: +13943: +13943: constexpr unsigned __uNd = _Nd; +13943: const unsigned __r = __s; +13943: return (__x << (__r % __uNd)) | (__x >> ((-__r) % __uNd)); +13943: } +13943: const int __r = __s % _Nd; +13943: if (__r == 0) +13943: return __x; +13943: else if (__r > 0) +13943: return (__x << __r) | (__x >> ((_Nd - __r) % _Nd)); +13943: else +13943: return (__x >> -__r) | (__x << ((_Nd + __r) % _Nd)); +13943: } +13943: +13943: template +13943: constexpr _Tp +13943: __rotr(_Tp __x, int __s) noexcept +13943: { +13943: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +13943: if constexpr ((_Nd & (_Nd - 1)) == 0) +13943: { +13943: +13943: +13943: constexpr unsigned __uNd = _Nd; +13943: const unsigned __r = __s; +13943: return (__x >> (__r % __uNd)) | (__x << ((-__r) % __uNd)); +13943: } +13943: const int __r = __s % _Nd; +13943: if (__r == 0) +13943: return __x; +13943: else if (__r > 0) +13943: return (__x >> __r) | (__x << ((_Nd - __r) % _Nd)); +13943: else +13943: return (__x << -__r) | (__x >> ((_Nd + __r) % _Nd)); +13943: } +13943: +13943: template +13943: constexpr int +13943: __countl_zero(_Tp __x) noexcept +13943: { +13943: using __gnu_cxx::__int_traits; +13943: constexpr auto _Nd = __int_traits<_Tp>::__digits; +13943: +13943: if (__x == 0) +13943: return _Nd; +13943: +13943: constexpr auto _Nd_ull = __int_traits::__digits; +13943: constexpr auto _Nd_ul = __int_traits::__digits; +13943: constexpr auto _Nd_u = __int_traits::__digits; +13943: +13943: if constexpr (_Nd <= _Nd_u) +13943: { +13943: constexpr int __diff = _Nd_u - _Nd; +13943: return __builtin_clz(__x) - __diff; +13943: } +13943: else if constexpr (_Nd <= _Nd_ul) +13943: { +13943: constexpr int __diff = _Nd_ul - _Nd; +13943: return __builtin_clzl(__x) - __diff; +13943: } +13943: else if constexpr (_Nd <= _Nd_ull) +13943: { +13943: constexpr int __diff = _Nd_ull - _Nd; +13943: return __builtin_clzll(__x) - __diff; +13943: } +13943: else +13943: { +13943: static_assert(_Nd <= (2 * _Nd_ull), +13943: "Maximum supported integer size is 128-bit"); +13943: +13943: unsigned long long __high = __x >> _Nd_ull; +13943: if (__high != 0) +13943: { +13943: constexpr int __diff = (2 * _Nd_ull) - _Nd; +13943: return __builtin_clzll(__high) - __diff; +13943: } +13943: constexpr auto __max_ull = __int_traits::__max; +13943: unsigned long long __low = __x & __max_ull; +13943: return (_Nd - _Nd_ull) + __builtin_clzll(__low); +13943: } +13943: } +13943: +13943: template +13943: constexpr int +13943: __countl_one(_Tp __x) noexcept +13943: { +13943: return std::__countl_zero<_Tp>((_Tp)~__x); +13943: } +13943: +13943: template +13943: constexpr int +13943: __countr_zero(_Tp __x) noexcept +13943: { +13943: using __gnu_cxx::__int_traits; +13943: constexpr auto _Nd = __int_traits<_Tp>::__digits; +13943: +13943: if (__x == 0) +13943: return _Nd; +13943: +13943: constexpr auto _Nd_ull = __int_traits::__digits; +13943: constexpr auto _Nd_ul = __int_traits::__digits; +13943: constexpr auto _Nd_u = __int_traits::__digits; +13943: +13943: if constexpr (_Nd <= _Nd_u) +13943: return __builtin_ctz(__x); +13943: else if constexpr (_Nd <= _Nd_ul) +13943: return __builtin_ctzl(__x); +13943: else if constexpr (_Nd <= _Nd_ull) +13943: return __builtin_ctzll(__x); +13943: else +13943: { +13943: static_assert(_Nd <= (2 * _Nd_ull), +13943: "Maximum supported integer size is 128-bit"); +13943: +13943: constexpr auto __max_ull = __int_traits::__max; +13943: unsigned long long __low = __x & __max_ull; +13943: if (__low != 0) +13943: return __builtin_ctzll(__low); +13943: unsigned long long __high = __x >> _Nd_ull; +13943: return __builtin_ctzll(__high) + _Nd_ull; +13943: } +13943: } +13943: +13943: template +13943: constexpr int +13943: __countr_one(_Tp __x) noexcept +13943: { +13943: return std::__countr_zero((_Tp)~__x); +13943: } +13943: +13943: template +13943: constexpr int +13943: __popcount(_Tp __x) noexcept +13943: { +13943: using __gnu_cxx::__int_traits; +13943: constexpr auto _Nd = __int_traits<_Tp>::__digits; +13943: +13943: constexpr auto _Nd_ull = __int_traits::__digits; +13943: constexpr auto _Nd_ul = __int_traits::__digits; +13943: constexpr auto _Nd_u = __int_traits::__digits; +13943: +13943: if constexpr (_Nd <= _Nd_u) +13943: return __builtin_popcount(__x); +13943: else if constexpr (_Nd <= _Nd_ul) +13943: return __builtin_popcountl(__x); +13943: else if constexpr (_Nd <= _Nd_ull) +13943: return __builtin_popcountll(__x); +13943: else +13943: { +13943: static_assert(_Nd <= (2 * _Nd_ull), +13943: "Maximum supported integer size is 128-bit"); +13943: +13943: constexpr auto __max_ull = __int_traits::__max; +13943: unsigned long long __low = __x & __max_ull; +13943: unsigned long long __high = __x >> _Nd_ull; +13943: return __builtin_popcountll(__low) + __builtin_popcountll(__high); +13943: } +13943: } +13943: +13943: template +13943: constexpr bool +13943: __has_single_bit(_Tp __x) noexcept +13943: { return std::__popcount(__x) == 1; } +13943: +13943: template +13943: constexpr _Tp +13943: __bit_ceil(_Tp __x) noexcept +13943: { +13943: using __gnu_cxx::__int_traits; +13943: constexpr auto _Nd = __int_traits<_Tp>::__digits; +13943: if (__x == 0 || __x == 1) +13943: return 1; +13943: auto __shift_exponent = _Nd - std::__countl_zero((_Tp)(__x - 1u)); +13943: +13943: +13943: +13943: +13943: if (!std::__is_constant_evaluated()) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__shift_exponent != __int_traits<_Tp>::__digits)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: using __promoted_type = decltype(__x << 1); +13943: if constexpr (!is_same<__promoted_type, _Tp>::value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: const int __extra_exp = sizeof(__promoted_type) / sizeof(_Tp) / 2; +13943: __shift_exponent |= (__shift_exponent & _Nd) << __extra_exp; +13943: } +13943: return (_Tp)1u << __shift_exponent; +13943: } +13943: +13943: template +13943: constexpr _Tp +13943: __bit_floor(_Tp __x) noexcept +13943: { +13943: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +13943: if (__x == 0) +13943: return 0; +13943: return (_Tp)1u << (_Nd - std::__countl_zero((_Tp)(__x >> 1))); +13943: } +13943: +13943: template +13943: constexpr int +13943: __bit_width(_Tp __x) noexcept +13943: { +13943: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +13943: return _Nd - std::__countl_zero(__x); +13943: } +13943: # 482 "/usr/include/c++/14/bit" 3 +13943: +13943: } +13943: # 77 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr +13943: inline int +13943: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num) +13943: { +13943: +13943: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp"); +13943: # 108 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); +13943: } +13943: # 152 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline void +13943: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) +13943: { +13943: +13943: +13943: +13943: +13943: # 185 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: swap(*__a, *__b); +13943: +13943: } +13943: # 201 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: _ForwardIterator2 +13943: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first1 != __last1; ++__first1, (void)++__first2) +13943: std::iter_swap(__first1, __first2); +13943: return __first2; +13943: } +13943: # 230 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline const _Tp& +13943: min(const _Tp& __a, const _Tp& __b) +13943: { +13943: +13943: +13943: +13943: if (__b < __a) +13943: return __b; +13943: return __a; +13943: } +13943: # 254 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline const _Tp& +13943: max(const _Tp& __a, const _Tp& __b) +13943: { +13943: +13943: +13943: +13943: if (__a < __b) +13943: return __b; +13943: return __a; +13943: } +13943: # 278 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline const _Tp& +13943: min(const _Tp& __a, const _Tp& __b, _Compare __comp) +13943: { +13943: +13943: if (__comp(__b, __a)) +13943: return __b; +13943: return __a; +13943: } +13943: # 300 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline const _Tp& +13943: max(const _Tp& __a, const _Tp& __b, _Compare __comp) +13943: { +13943: +13943: if (__comp(__a, __b)) +13943: return __b; +13943: return __a; +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: inline _Iterator +13943: __niter_base(_Iterator __it) +13943: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) +13943: { return __it; } +13943: # 332 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: decltype(std::__niter_base(std::declval<_Ite>())) +13943: __niter_base(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, +13943: std::random_access_iterator_tag>&) +13943: noexcept(std::is_nothrow_copy_constructible<_Ite>::value); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline _From +13943: __niter_wrap(_From __from, _To __res) +13943: { return __from + (std::__niter_base(__res) - std::__niter_base(__from)); } +13943: +13943: +13943: template +13943: +13943: inline _Iterator +13943: __niter_wrap(const _Iterator&, _Iterator __res) +13943: { return __res; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __copy_move +13943: { +13943: template +13943: +13943: static _OI +13943: __copy_m(_II __first, _II __last, _OI __result) +13943: { +13943: for (; __first != __last; ++__result, (void)++__first) +13943: *__result = *__first; +13943: return __result; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct __copy_move +13943: { +13943: template +13943: +13943: static _OI +13943: __copy_m(_II __first, _II __last, _OI __result) +13943: { +13943: for (; __first != __last; ++__result, (void)++__first) +13943: *__result = std::move(*__first); +13943: return __result; +13943: } +13943: }; +13943: +13943: +13943: template<> +13943: struct __copy_move +13943: { +13943: template +13943: +13943: static _OI +13943: __copy_m(_II __first, _II __last, _OI __result) +13943: { +13943: typedef typename iterator_traits<_II>::difference_type _Distance; +13943: for(_Distance __n = __last - __first; __n > 0; --__n) +13943: { +13943: *__result = *__first; +13943: ++__first; +13943: ++__result; +13943: } +13943: return __result; +13943: } +13943: +13943: template +13943: static void +13943: __assign_one(_Tp* __to, _Up* __from) +13943: { *__to = *__from; } +13943: }; +13943: +13943: +13943: template<> +13943: struct __copy_move +13943: { +13943: template +13943: +13943: static _OI +13943: __copy_m(_II __first, _II __last, _OI __result) +13943: { +13943: typedef typename iterator_traits<_II>::difference_type _Distance; +13943: for(_Distance __n = __last - __first; __n > 0; --__n) +13943: { +13943: *__result = std::move(*__first); +13943: ++__first; +13943: ++__result; +13943: } +13943: return __result; +13943: } +13943: +13943: template +13943: static void +13943: __assign_one(_Tp* __to, _Up* __from) +13943: { *__to = std::move(*__from); } +13943: }; +13943: +13943: +13943: template +13943: struct __copy_move<_IsMove, true, random_access_iterator_tag> +13943: { +13943: template +13943: +13943: static _Up* +13943: __copy_m(_Tp* __first, _Tp* __last, _Up* __result) +13943: { +13943: const ptrdiff_t _Num = __last - __first; +13943: if (__builtin_expect(_Num > 1, true)) +13943: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); +13943: else if (_Num == 1) +13943: std::__copy_move<_IsMove, false, random_access_iterator_tag>:: +13943: __assign_one(__result, __first); +13943: return __result + _Num; +13943: } +13943: }; +13943: +13943: +13943: +13943: template +13943: struct _Deque_iterator; +13943: +13943: struct _Bit_iterator; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct char_traits; +13943: +13943: template +13943: class istreambuf_iterator; +13943: +13943: template +13943: class ostreambuf_iterator; +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type +13943: __copy_move_a2(_CharT*, _CharT*, +13943: ostreambuf_iterator<_CharT, char_traits<_CharT> >); +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type +13943: __copy_move_a2(const _CharT*, const _CharT*, +13943: ostreambuf_iterator<_CharT, char_traits<_CharT> >); +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: _CharT*>::__type +13943: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, +13943: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_char<_CharT>::__value, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +13943: __copy_move_a2( +13943: istreambuf_iterator<_CharT, char_traits<_CharT> >, +13943: istreambuf_iterator<_CharT, char_traits<_CharT> >, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*>); +13943: +13943: +13943: template +13943: +13943: inline _OI +13943: __copy_move_a2(_II __first, _II __last, _OI __result) +13943: { +13943: typedef typename iterator_traits<_II>::iterator_category _Category; +13943: +13943: +13943: +13943: +13943: +13943: return std::__copy_move<_IsMove, __memcpyable<_OI, _II>::__value, +13943: _Category>::__copy_m(__first, __last, __result); +13943: } +13943: +13943: template +13943: _OI +13943: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr>, +13943: _OI); +13943: +13943: template +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +13943: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, +13943: std::_Deque_iterator<_ITp, _IRef, _IPtr>, +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, +13943: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +13943: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); +13943: +13943: template +13943: +13943: inline _OI +13943: __copy_move_a1(_II __first, _II __last, _OI __result) +13943: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } +13943: +13943: template +13943: +13943: inline _OI +13943: __copy_move_a(_II __first, _II __last, _OI __result) +13943: { +13943: return std::__niter_wrap(__result, +13943: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), +13943: std::__niter_base(__last), +13943: std::__niter_base(__result))); +13943: } +13943: +13943: template +13943: +13943: _OI +13943: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +13943: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +13943: _OI); +13943: +13943: template +13943: +13943: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> +13943: __copy_move_a(_II, _II, +13943: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); +13943: +13943: template +13943: +13943: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> +13943: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +13943: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +13943: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); +13943: +13943: template +13943: +13943: _OutputIterator +13943: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result, +13943: bool) +13943: { +13943: if (__n > 0) +13943: { +13943: while (true) +13943: { +13943: *__result = *__first; +13943: ++__result; +13943: if (--__n > 0) +13943: ++__first; +13943: else +13943: break; +13943: } +13943: } +13943: return __result; +13943: } +13943: +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_char<_CharT>::__value, _CharT*>::__type +13943: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, +13943: _Size, _CharT*, bool); +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_char<_CharT>::__value, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +13943: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, _Size, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*>, +13943: bool); +13943: # 639 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline _OI +13943: copy(_II __first, _II __last, _OI __result) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__copy_move_a<__is_move_iterator<_II>::__value> +13943: (std::__miter_base(__first), std::__miter_base(__last), __result); +13943: } +13943: # 672 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline _OI +13943: move(_II __first, _II __last, _OI __result) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__copy_move_a(std::__miter_base(__first), +13943: std::__miter_base(__last), __result); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __copy_move_backward +13943: { +13943: template +13943: +13943: static _BI2 +13943: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { +13943: while (__first != __last) +13943: *--__result = *--__last; +13943: return __result; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct __copy_move_backward +13943: { +13943: template +13943: +13943: static _BI2 +13943: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { +13943: while (__first != __last) +13943: *--__result = std::move(*--__last); +13943: return __result; +13943: } +13943: }; +13943: +13943: +13943: template<> +13943: struct __copy_move_backward +13943: { +13943: template +13943: +13943: static _BI2 +13943: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { +13943: typename iterator_traits<_BI1>::difference_type +13943: __n = __last - __first; +13943: for (; __n > 0; --__n) +13943: *--__result = *--__last; +13943: return __result; +13943: } +13943: }; +13943: +13943: +13943: template<> +13943: struct __copy_move_backward +13943: { +13943: template +13943: +13943: static _BI2 +13943: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { +13943: typename iterator_traits<_BI1>::difference_type +13943: __n = __last - __first; +13943: for (; __n > 0; --__n) +13943: *--__result = std::move(*--__last); +13943: return __result; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> +13943: { +13943: template +13943: +13943: static _Up* +13943: __copy_move_b(_Tp* __first, _Tp* __last, _Up* __result) +13943: { +13943: const ptrdiff_t _Num = __last - __first; +13943: if (__builtin_expect(_Num > 1, true)) +13943: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); +13943: else if (_Num == 1) +13943: std::__copy_move<_IsMove, false, random_access_iterator_tag>:: +13943: __assign_one(__result - 1, __first); +13943: return __result - _Num; +13943: } +13943: }; +13943: +13943: template +13943: +13943: inline _BI2 +13943: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { +13943: typedef typename iterator_traits<_BI1>::iterator_category _Category; +13943: +13943: +13943: +13943: +13943: +13943: return std::__copy_move_backward<_IsMove, +13943: __memcpyable<_BI2, _BI1>::__value, +13943: _Category>::__copy_move_b(__first, +13943: __last, +13943: __result); +13943: } +13943: +13943: template +13943: +13943: inline _BI2 +13943: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } +13943: +13943: template +13943: _OI +13943: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr>, +13943: _OI); +13943: +13943: template +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +13943: __copy_move_backward_a1( +13943: std::_Deque_iterator<_ITp, _IRef, _IPtr>, +13943: std::_Deque_iterator<_ITp, _IRef, _IPtr>, +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, +13943: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +13943: __copy_move_backward_a1(_II, _II, +13943: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); +13943: +13943: template +13943: +13943: inline _OI +13943: __copy_move_backward_a(_II __first, _II __last, _OI __result) +13943: { +13943: return std::__niter_wrap(__result, +13943: std::__copy_move_backward_a1<_IsMove> +13943: (std::__niter_base(__first), std::__niter_base(__last), +13943: std::__niter_base(__result))); +13943: } +13943: +13943: template +13943: +13943: _OI +13943: __copy_move_backward_a( +13943: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +13943: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +13943: _OI); +13943: +13943: template +13943: +13943: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> +13943: __copy_move_backward_a(_II, _II, +13943: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); +13943: +13943: template +13943: +13943: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> +13943: __copy_move_backward_a( +13943: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +13943: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +13943: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); +13943: # 875 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline _BI2 +13943: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> +13943: (std::__miter_base(__first), std::__miter_base(__last), __result); +13943: } +13943: # 910 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline _BI2 +13943: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__copy_move_backward_a(std::__miter_base(__first), +13943: std::__miter_base(__last), +13943: __result); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline typename +13943: __gnu_cxx::__enable_if::__value, void>::__type +13943: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __value) +13943: { +13943: for (; __first != __last; ++__first) +13943: *__first = __value; +13943: } +13943: +13943: template +13943: +13943: inline typename +13943: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type +13943: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __value) +13943: { +13943: const _Tp __tmp = __value; +13943: for (; __first != __last; ++__first) +13943: *__first = __tmp; +13943: } +13943: +13943: +13943: template +13943: +13943: inline typename +13943: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type +13943: __fill_a1(_Tp* __first, _Tp* __last, const _Tp& __c) +13943: { +13943: const _Tp __tmp = __c; +13943: # 971 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: if (const size_t __len = __last - __first) +13943: __builtin_memset(__first, static_cast(__tmp), __len); +13943: } +13943: +13943: template +13943: +13943: inline void +13943: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, +13943: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, +13943: const _Tp& __value) +13943: { std::__fill_a1(__first.base(), __last.base(), __value); } +13943: +13943: template +13943: void +13943: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, +13943: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, +13943: const _VTp&); +13943: +13943: +13943: void +13943: __fill_a1(std::_Bit_iterator, std::_Bit_iterator, +13943: const bool&); +13943: +13943: template +13943: +13943: inline void +13943: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) +13943: { std::__fill_a1(__first, __last, __value); } +13943: +13943: template +13943: +13943: void +13943: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +13943: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +13943: const _Tp&); +13943: # 1019 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline void +13943: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: std::__fill_a(__first, __last, __value); +13943: } +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: +13943: inline constexpr int +13943: __size_to_integer(int __n) { return __n; } +13943: inline constexpr unsigned +13943: __size_to_integer(unsigned __n) { return __n; } +13943: inline constexpr long +13943: __size_to_integer(long __n) { return __n; } +13943: inline constexpr unsigned long +13943: __size_to_integer(unsigned long __n) { return __n; } +13943: inline constexpr long long +13943: __size_to_integer(long long __n) { return __n; } +13943: inline constexpr unsigned long long +13943: __size_to_integer(unsigned long long __n) { return __n; } +13943: # 1073 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: inline constexpr long long +13943: __size_to_integer(float __n) { return (long long)__n; } +13943: inline constexpr long long +13943: __size_to_integer(double __n) { return (long long)__n; } +13943: inline constexpr long long +13943: __size_to_integer(long double __n) { return (long long)__n; } +13943: +13943: +13943: +13943: +13943: #pragma GCC diagnostic pop +13943: +13943: template +13943: +13943: inline typename +13943: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type +13943: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) +13943: { +13943: for (; __n > 0; --__n, (void) ++__first) +13943: *__first = __value; +13943: return __first; +13943: } +13943: +13943: template +13943: +13943: inline typename +13943: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type +13943: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) +13943: { +13943: const _Tp __tmp = __value; +13943: for (; __n > 0; --__n, (void) ++__first) +13943: *__first = __tmp; +13943: return __first; +13943: } +13943: +13943: template +13943: +13943: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> +13943: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, +13943: _Size __n, const _Tp& __value, +13943: std::input_iterator_tag); +13943: +13943: template +13943: +13943: inline _OutputIterator +13943: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, +13943: std::output_iterator_tag) +13943: { +13943: +13943: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); +13943: +13943: return __fill_n_a1(__first, __n, __value); +13943: } +13943: +13943: template +13943: +13943: inline _OutputIterator +13943: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, +13943: std::input_iterator_tag) +13943: { +13943: +13943: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); +13943: +13943: return __fill_n_a1(__first, __n, __value); +13943: } +13943: +13943: template +13943: +13943: inline _OutputIterator +13943: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, +13943: std::random_access_iterator_tag) +13943: { +13943: +13943: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); +13943: +13943: if (__n <= 0) +13943: return __first; +13943: +13943: ; +13943: +13943: std::__fill_a(__first, __first + __n, __value); +13943: return __first + __n; +13943: } +13943: # 1175 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline _OI +13943: fill_n(_OI __first, _Size __n, const _Tp& __value) +13943: { +13943: +13943: +13943: +13943: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: template +13943: struct __equal +13943: { +13943: template +13943: +13943: static bool +13943: equal(_II1 __first1, _II1 __last1, _II2 __first2) +13943: { +13943: for (; __first1 != __last1; ++__first1, (void) ++__first2) +13943: if (!(*__first1 == *__first2)) +13943: return false; +13943: return true; +13943: } +13943: }; +13943: +13943: template<> +13943: struct __equal +13943: { +13943: template +13943: +13943: static bool +13943: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) +13943: { +13943: if (const size_t __len = (__last1 - __first1)) +13943: return !std::__memcmp(__first1, __first2, __len); +13943: return true; +13943: } +13943: }; +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, bool>::__type +13943: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr>, +13943: _II); +13943: +13943: template +13943: bool +13943: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, bool>::__type +13943: __equal_aux1(_II, _II, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr>); +13943: +13943: template +13943: +13943: inline bool +13943: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) +13943: { +13943: typedef typename iterator_traits<_II1>::value_type _ValueType1; +13943: const bool __simple = ((__is_integer<_ValueType1>::__value +13943: || __is_pointer<_ValueType1>::__value) +13943: && __memcmpable<_II1, _II2>::__value); +13943: return std::__equal<__simple>::equal(__first1, __last1, __first2); +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) +13943: { +13943: return std::__equal_aux1(std::__niter_base(__first1), +13943: std::__niter_base(__last1), +13943: std::__niter_base(__first2)); +13943: } +13943: +13943: template +13943: +13943: bool +13943: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +13943: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +13943: _II2); +13943: +13943: template +13943: +13943: bool +13943: __equal_aux(_II1, _II1, +13943: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); +13943: +13943: template +13943: +13943: bool +13943: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +13943: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +13943: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); +13943: +13943: template +13943: struct __lc_rai +13943: { +13943: template +13943: +13943: static _II1 +13943: __newlast1(_II1, _II1 __last1, _II2, _II2) +13943: { return __last1; } +13943: +13943: template +13943: +13943: static bool +13943: __cnd2(_II __first, _II __last) +13943: { return __first != __last; } +13943: }; +13943: +13943: template<> +13943: struct __lc_rai +13943: { +13943: template +13943: +13943: static _RAI1 +13943: __newlast1(_RAI1 __first1, _RAI1 __last1, +13943: _RAI2 __first2, _RAI2 __last2) +13943: { +13943: const typename iterator_traits<_RAI1>::difference_type +13943: __diff1 = __last1 - __first1; +13943: const typename iterator_traits<_RAI2>::difference_type +13943: __diff2 = __last2 - __first2; +13943: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; +13943: } +13943: +13943: template +13943: static bool +13943: __cnd2(_RAI, _RAI) +13943: { return true; } +13943: }; +13943: +13943: template +13943: +13943: bool +13943: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, +13943: _II2 __first2, _II2 __last2, +13943: _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_II1>::iterator_category _Category1; +13943: typedef typename iterator_traits<_II2>::iterator_category _Category2; +13943: typedef std::__lc_rai<_Category1, _Category2> __rai_type; +13943: +13943: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); +13943: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); +13943: ++__first1, (void)++__first2) +13943: { +13943: if (__comp(__first1, __first2)) +13943: return true; +13943: if (__comp(__first2, __first1)) +13943: return false; +13943: } +13943: return __first1 == __last1 && __first2 != __last2; +13943: } +13943: +13943: template +13943: struct __lexicographical_compare +13943: { +13943: template +13943: +13943: static bool +13943: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +13943: { +13943: using __gnu_cxx::__ops::__iter_less_iter; +13943: return std::__lexicographical_compare_impl(__first1, __last1, +13943: __first2, __last2, +13943: __iter_less_iter()); +13943: } +13943: +13943: template +13943: +13943: static int +13943: __3way(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +13943: { +13943: while (__first1 != __last1) +13943: { +13943: if (__first2 == __last2) +13943: return +1; +13943: if (*__first1 < *__first2) +13943: return -1; +13943: if (*__first2 < *__first1) +13943: return +1; +13943: ++__first1; +13943: ++__first2; +13943: } +13943: return int(__first2 == __last2) - 1; +13943: } +13943: }; +13943: +13943: template<> +13943: struct __lexicographical_compare +13943: { +13943: template +13943: +13943: static bool +13943: __lc(const _Tp* __first1, const _Tp* __last1, +13943: const _Up* __first2, const _Up* __last2) +13943: { return __3way(__first1, __last1, __first2, __last2) < 0; } +13943: +13943: template +13943: +13943: static ptrdiff_t +13943: __3way(const _Tp* __first1, const _Tp* __last1, +13943: const _Up* __first2, const _Up* __last2) +13943: { +13943: const size_t __len1 = __last1 - __first1; +13943: const size_t __len2 = __last2 - __first2; +13943: if (const size_t __len = std::min(__len1, __len2)) +13943: if (int __result = std::__memcmp(__first1, __first2, __len)) +13943: return __result; +13943: return ptrdiff_t(__len1 - __len2); +13943: } +13943: }; +13943: +13943: template +13943: +13943: inline bool +13943: __lexicographical_compare_aux1(_II1 __first1, _II1 __last1, +13943: _II2 __first2, _II2 __last2) +13943: { +13943: typedef typename iterator_traits<_II1>::value_type _ValueType1; +13943: typedef typename iterator_traits<_II2>::value_type _ValueType2; +13943: const bool __simple = +13943: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value +13943: && __is_pointer<_II1>::__value +13943: && __is_pointer<_II2>::__value +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ); +13943: +13943: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, +13943: __first2, __last2); +13943: } +13943: +13943: template +13943: bool +13943: __lexicographical_compare_aux1( +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +13943: _Tp2*, _Tp2*); +13943: +13943: template +13943: bool +13943: __lexicographical_compare_aux1(_Tp1*, _Tp1*, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); +13943: +13943: template +13943: bool +13943: __lexicographical_compare_aux1( +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); +13943: +13943: template +13943: +13943: inline bool +13943: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, +13943: _II2 __first2, _II2 __last2) +13943: { +13943: return std::__lexicographical_compare_aux1(std::__niter_base(__first1), +13943: std::__niter_base(__last1), +13943: std::__niter_base(__first2), +13943: std::__niter_base(__last2)); +13943: } +13943: +13943: template +13943: +13943: bool +13943: __lexicographical_compare_aux( +13943: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +13943: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +13943: _II2, _II2); +13943: +13943: template +13943: +13943: bool +13943: __lexicographical_compare_aux( +13943: _II1, _II1, +13943: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, +13943: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); +13943: +13943: template +13943: +13943: bool +13943: __lexicographical_compare_aux( +13943: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +13943: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +13943: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, +13943: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val, _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::difference_type +13943: _DistanceType; +13943: +13943: _DistanceType __len = std::distance(__first, __last); +13943: +13943: while (__len > 0) +13943: { +13943: _DistanceType __half = __len >> 1; +13943: _ForwardIterator __middle = __first; +13943: std::advance(__middle, __half); +13943: if (__comp(__middle, __val)) +13943: { +13943: __first = __middle; +13943: ++__first; +13943: __len = __len - __half - 1; +13943: } +13943: else +13943: __len = __half; +13943: } +13943: return __first; +13943: } +13943: # 1527 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: lower_bound(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__lower_bound(__first, __last, __val, +13943: __gnu_cxx::__ops::__iter_less_val()); +13943: } +13943: +13943: +13943: +13943: template +13943: inline constexpr _Tp +13943: __lg(_Tp __n) +13943: { +13943: +13943: return std::__bit_width(make_unsigned_t<_Tp>(__n)) - 1; +13943: # 1563 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: } +13943: +13943: +13943: # 1579 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: equal(_II1 __first1, _II1 __last1, _II2 __first2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__equal_aux(__first1, __last1, __first2); +13943: } +13943: # 1610 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: equal(_IIter1 __first1, _IIter1 __last1, +13943: _IIter2 __first2, _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first1 != __last1; ++__first1, (void)++__first2) +13943: if (!bool(__binary_pred(*__first1, *__first2))) +13943: return false; +13943: return true; +13943: } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: +13943: +13943: template +13943: +13943: inline bool +13943: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +13943: { +13943: using _RATag = random_access_iterator_tag; +13943: using _Cat1 = typename iterator_traits<_II1>::iterator_category; +13943: using _Cat2 = typename iterator_traits<_II2>::iterator_category; +13943: using _RAIters = __and_, is_same<_Cat2, _RATag>>; +13943: if constexpr (_RAIters::value) +13943: { +13943: if ((__last1 - __first1) != (__last2 - __first2)) +13943: return false; +13943: return std::equal(__first1, __last1, __first2); +13943: } +13943: else +13943: { +13943: for (; __first1 != __last1 && __first2 != __last2; +13943: ++__first1, (void)++__first2) +13943: if (!(*__first1 == *__first2)) +13943: return false; +13943: return __first1 == __last1 && __first2 == __last2; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: inline bool +13943: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: using _RATag = random_access_iterator_tag; +13943: using _Cat1 = typename iterator_traits<_II1>::iterator_category; +13943: using _Cat2 = typename iterator_traits<_II2>::iterator_category; +13943: using _RAIters = __and_, is_same<_Cat2, _RATag>>; +13943: if constexpr (_RAIters::value) +13943: { +13943: if ((__last1 - __first1) != (__last2 - __first2)) +13943: return false; +13943: return std::equal(__first1, __last1, __first2, +13943: __binary_pred); +13943: } +13943: else +13943: { +13943: for (; __first1 != __last1 && __first2 != __last2; +13943: ++__first1, (void)++__first2) +13943: if (!bool(__binary_pred(*__first1, *__first2))) +13943: return false; +13943: return __first1 == __last1 && __first2 == __last2; +13943: } +13943: } +13943: #pragma GCC diagnostic pop +13943: # 1701 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__equal4(__first1, __last1, __first2, __last2); +13943: } +13943: # 1734 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: equal(_IIter1 __first1, _IIter1 __last1, +13943: _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__equal4(__first1, __last1, __first2, __last2, +13943: __binary_pred); +13943: } +13943: # 1766 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: lexicographical_compare(_II1 __first1, _II1 __last1, +13943: _II2 __first2, _II2 __last2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__lexicographical_compare_aux(__first1, __last1, +13943: __first2, __last2); +13943: } +13943: # 1801 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: lexicographical_compare(_II1 __first1, _II1 __last1, +13943: _II2 __first2, _II2 __last2, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__lexicographical_compare_impl +13943: (__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: # 1916 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: pair<_InputIterator1, _InputIterator2> +13943: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _BinaryPredicate __binary_pred) +13943: { +13943: while (__first1 != __last1 && __binary_pred(__first1, __first2)) +13943: { +13943: ++__first1; +13943: ++__first2; +13943: } +13943: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); +13943: } +13943: # 1944 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline pair<_InputIterator1, _InputIterator2> +13943: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__mismatch(__first1, __last1, __first2, +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: # 1978 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline pair<_InputIterator1, _InputIterator2> +13943: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__mismatch(__first1, __last1, __first2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +13943: } +13943: +13943: +13943: template +13943: +13943: pair<_InputIterator1, _InputIterator2> +13943: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2 +13943: && __binary_pred(__first1, __first2)) +13943: { +13943: ++__first1; +13943: ++__first2; +13943: } +13943: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); +13943: } +13943: # 2026 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline pair<_InputIterator1, _InputIterator2> +13943: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__mismatch(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: # 2062 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline pair<_InputIterator1, _InputIterator2> +13943: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__mismatch(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline _InputIterator +13943: __find_if(_InputIterator __first, _InputIterator __last, +13943: _Predicate __pred, input_iterator_tag) +13943: { +13943: while (__first != __last && !__pred(__first)) +13943: ++__first; +13943: return __first; +13943: } +13943: +13943: +13943: template +13943: +13943: _RandomAccessIterator +13943: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Predicate __pred, random_access_iterator_tag) +13943: { +13943: typename iterator_traits<_RandomAccessIterator>::difference_type +13943: __trip_count = (__last - __first) >> 2; +13943: +13943: for (; __trip_count > 0; --__trip_count) +13943: { +13943: if (__pred(__first)) +13943: return __first; +13943: ++__first; +13943: +13943: if (__pred(__first)) +13943: return __first; +13943: ++__first; +13943: +13943: if (__pred(__first)) +13943: return __first; +13943: ++__first; +13943: +13943: if (__pred(__first)) +13943: return __first; +13943: ++__first; +13943: } +13943: +13943: switch (__last - __first) +13943: { +13943: case 3: +13943: if (__pred(__first)) +13943: return __first; +13943: ++__first; +13943: +13943: case 2: +13943: if (__pred(__first)) +13943: return __first; +13943: ++__first; +13943: +13943: case 1: +13943: if (__pred(__first)) +13943: return __first; +13943: ++__first; +13943: +13943: case 0: +13943: default: +13943: return __last; +13943: } +13943: } +13943: +13943: template +13943: +13943: inline _Iterator +13943: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) +13943: { +13943: return __find_if(__first, __last, __pred, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: template +13943: +13943: typename iterator_traits<_InputIterator>::difference_type +13943: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) +13943: { +13943: typename iterator_traits<_InputIterator>::difference_type __n = 0; +13943: for (; __first != __last; ++__first) +13943: if (__pred(__first)) +13943: ++__n; +13943: return __n; +13943: } +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __remove_if(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred) +13943: { +13943: __first = std::__find_if(__first, __last, __pred); +13943: if (__first == __last) +13943: return __first; +13943: _ForwardIterator __result = __first; +13943: ++__first; +13943: for (; __first != __last; ++__first) +13943: if (!__pred(__first)) +13943: { +13943: *__result = std::move(*__first); +13943: ++__result; +13943: } +13943: return __result; +13943: } +13943: +13943: template +13943: +13943: _ForwardIterator1 +13943: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +13943: _BinaryPredicate __predicate) +13943: { +13943: +13943: if (__first1 == __last1 || __first2 == __last2) +13943: return __first1; +13943: +13943: +13943: _ForwardIterator2 __p1(__first2); +13943: if (++__p1 == __last2) +13943: return std::__find_if(__first1, __last1, +13943: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); +13943: +13943: +13943: _ForwardIterator1 __current = __first1; +13943: +13943: for (;;) +13943: { +13943: __first1 = +13943: std::__find_if(__first1, __last1, +13943: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); +13943: +13943: if (__first1 == __last1) +13943: return __last1; +13943: +13943: _ForwardIterator2 __p = __p1; +13943: __current = __first1; +13943: if (++__current == __last1) +13943: return __last1; +13943: +13943: while (__predicate(__current, __p)) +13943: { +13943: if (++__p == __last2) +13943: return __first1; +13943: if (++__current == __last1) +13943: return __last1; +13943: } +13943: ++__first1; +13943: } +13943: return __first1; +13943: } +13943: +13943: +13943: template +13943: +13943: bool +13943: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _BinaryPredicate __pred) +13943: { +13943: +13943: +13943: for (; __first1 != __last1; ++__first1, (void)++__first2) +13943: if (!__pred(__first1, __first2)) +13943: break; +13943: +13943: if (__first1 == __last1) +13943: return true; +13943: +13943: +13943: +13943: _ForwardIterator2 __last2 = __first2; +13943: std::advance(__last2, std::distance(__first1, __last1)); +13943: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) +13943: { +13943: if (__scan != std::__find_if(__first1, __scan, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) +13943: continue; +13943: +13943: auto __matches +13943: = std::__count_if(__first2, __last2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); +13943: if (0 == __matches || +13943: std::__count_if(__scan, __last1, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) +13943: != __matches) +13943: return false; +13943: } +13943: return true; +13943: } +13943: # 2286 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline bool +13943: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__is_permutation(__first1, __last1, __first2, +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: +13943: +13943: +13943: # 2328 "/usr/include/c++/14/bits/stl_algobase.h" 3 +13943: template +13943: +13943: inline _ForwardIterator1 +13943: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +13943: _BinaryPredicate __predicate) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__search(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); +13943: } +13943: +13943: +13943: +13943: } +13943: # 63 "/usr/include/c++/14/deque" 2 3 +13943: # 1 "/usr/include/c++/14/bits/allocator.h" 1 3 +13943: # 46 "/usr/include/c++/14/bits/allocator.h" 3 +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 1 3 +13943: # 33 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 3 +13943: # 1 "/usr/include/c++/14/bits/new_allocator.h" 1 3 +13943: # 41 "/usr/include/c++/14/bits/new_allocator.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 62 "/usr/include/c++/14/bits/new_allocator.h" 3 +13943: template +13943: class __new_allocator +13943: { +13943: public: +13943: typedef _Tp value_type; +13943: typedef std::size_t size_type; +13943: typedef std::ptrdiff_t difference_type; +13943: +13943: typedef _Tp* pointer; +13943: typedef const _Tp* const_pointer; +13943: typedef _Tp& reference; +13943: typedef const _Tp& const_reference; +13943: +13943: template +13943: struct rebind +13943: { typedef __new_allocator<_Tp1> other; }; +13943: +13943: +13943: +13943: +13943: +13943: typedef std::true_type propagate_on_container_move_assignment; +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: +13943: __new_allocator() noexcept { } +13943: +13943: __attribute__((__always_inline__)) +13943: +13943: __new_allocator(const __new_allocator&) noexcept { } +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: +13943: __new_allocator(const __new_allocator<_Tp1>&) noexcept { } +13943: +13943: +13943: __new_allocator& operator=(const __new_allocator&) = default; +13943: +13943: +13943: +13943: ~__new_allocator() noexcept { } +13943: +13943: pointer +13943: address(reference __x) const noexcept +13943: { return std::__addressof(__x); } +13943: +13943: const_pointer +13943: address(const_reference __x) const noexcept +13943: { return std::__addressof(__x); } +13943: # 125 "/usr/include/c++/14/bits/new_allocator.h" 3 +13943: [[__nodiscard__]] _Tp* +13943: allocate(size_type __n, const void* = static_cast(0)) +13943: { +13943: +13943: +13943: +13943: static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types"); +13943: +13943: +13943: if (__builtin_expect(__n > this->_M_max_size(), false)) +13943: { +13943: +13943: +13943: if (__n > (std::size_t(-1) / sizeof(_Tp))) +13943: std::__throw_bad_array_new_length(); +13943: std::__throw_bad_alloc(); +13943: } +13943: +13943: +13943: if (alignof(_Tp) > 8) +13943: { +13943: std::align_val_t __al = std::align_val_t(alignof(_Tp)); +13943: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), +13943: __al)); +13943: } +13943: +13943: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); +13943: } +13943: +13943: +13943: void +13943: deallocate(_Tp* __p, size_type __n __attribute__ ((__unused__))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if (alignof(_Tp) > 8) +13943: { +13943: ::operator delete((__p), (__n) * sizeof(_Tp), +13943: std::align_val_t(alignof(_Tp))); +13943: return; +13943: } +13943: +13943: ::operator delete((__p), (__n) * sizeof(_Tp)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: size_type +13943: max_size() const noexcept +13943: { return _M_max_size(); } +13943: +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: void +13943: construct(_Up* __p, _Args&&... __args) +13943: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) +13943: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: void +13943: destroy(_Up* __p) +13943: noexcept(std::is_nothrow_destructible<_Up>::value) +13943: { __p->~_Up(); } +13943: # 213 "/usr/include/c++/14/bits/new_allocator.h" 3 +13943: template +13943: friend __attribute__((__always_inline__)) bool +13943: operator==(const __new_allocator&, const __new_allocator<_Up>&) +13943: noexcept +13943: { return true; } +13943: +13943: +13943: template +13943: friend __attribute__((__always_inline__)) bool +13943: operator!=(const __new_allocator&, const __new_allocator<_Up>&) +13943: noexcept +13943: { return false; } +13943: +13943: +13943: private: +13943: __attribute__((__always_inline__)) +13943: constexpr size_type +13943: _M_max_size() const noexcept +13943: { +13943: +13943: return std::size_t(0x7fffffff) / sizeof(_Tp); +13943: +13943: +13943: +13943: } +13943: }; +13943: +13943: +13943: } +13943: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 2 3 +13943: +13943: +13943: namespace std +13943: { +13943: # 46 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 3 +13943: template +13943: using __allocator_base = __new_allocator<_Tp>; +13943: } +13943: # 47 "/usr/include/c++/14/bits/allocator.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/memoryfwd.h" 1 3 +13943: # 46 "/usr/include/c++/14/bits/memoryfwd.h" 3 +13943: +13943: # 47 "/usr/include/c++/14/bits/memoryfwd.h" 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 64 "/usr/include/c++/14/bits/memoryfwd.h" 3 +13943: template +13943: class allocator; +13943: +13943: template<> +13943: class allocator; +13943: +13943: +13943: +13943: template +13943: struct uses_allocator; +13943: +13943: template +13943: struct allocator_traits; +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 48 "/usr/include/c++/14/bits/allocator.h" 2 3 +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 72 "/usr/include/c++/14/bits/allocator.h" 3 +13943: template<> +13943: class allocator +13943: { +13943: public: +13943: typedef void value_type; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: +13943: +13943: +13943: typedef void* pointer; +13943: typedef const void* const_pointer; +13943: +13943: template +13943: struct rebind +13943: { typedef allocator<_Tp1> other; }; +13943: +13943: +13943: +13943: +13943: +13943: using propagate_on_container_move_assignment = true_type; +13943: +13943: using is_always_equal +13943: +13943: = true_type; +13943: # 115 "/usr/include/c++/14/bits/allocator.h" 3 +13943: }; +13943: # 127 "/usr/include/c++/14/bits/allocator.h" 3 +13943: template +13943: class allocator : public __allocator_base<_Tp> +13943: { +13943: public: +13943: typedef _Tp value_type; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: +13943: +13943: +13943: typedef _Tp* pointer; +13943: typedef const _Tp* const_pointer; +13943: typedef _Tp& reference; +13943: typedef const _Tp& const_reference; +13943: +13943: template +13943: struct rebind +13943: { typedef allocator<_Tp1> other; }; +13943: +13943: +13943: +13943: +13943: +13943: using propagate_on_container_move_assignment = true_type; +13943: +13943: using is_always_equal +13943: +13943: = true_type; +13943: +13943: +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: +13943: allocator() noexcept { } +13943: +13943: __attribute__((__always_inline__)) +13943: +13943: allocator(const allocator& __a) noexcept +13943: : __allocator_base<_Tp>(__a) { } +13943: +13943: +13943: +13943: allocator& operator=(const allocator&) = default; +13943: +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: +13943: allocator(const allocator<_Tp1>&) noexcept { } +13943: +13943: __attribute__((__always_inline__)) +13943: +13943: +13943: +13943: ~allocator() noexcept { } +13943: # 212 "/usr/include/c++/14/bits/allocator.h" 3 +13943: friend __attribute__((__always_inline__)) +13943: bool +13943: operator==(const allocator&, const allocator&) noexcept +13943: { return true; } +13943: +13943: +13943: friend __attribute__((__always_inline__)) +13943: bool +13943: operator!=(const allocator&, const allocator&) noexcept +13943: { return false; } +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: inline bool +13943: operator==(const allocator<_T1>&, const allocator<_T2>&) +13943: noexcept +13943: { return true; } +13943: +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: inline bool +13943: operator!=(const allocator<_T1>&, const allocator<_T2>&) +13943: noexcept +13943: { return false; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class allocator +13943: { +13943: public: +13943: typedef _Tp value_type; +13943: allocator() { } +13943: template allocator(const allocator<_Up>&) { } +13943: }; +13943: +13943: template +13943: class allocator +13943: { +13943: public: +13943: typedef _Tp value_type; +13943: allocator() { } +13943: template allocator(const allocator<_Up>&) { } +13943: }; +13943: +13943: template +13943: class allocator +13943: { +13943: public: +13943: typedef _Tp value_type; +13943: allocator() { } +13943: template allocator(const allocator<_Up>&) { } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern template class allocator; +13943: extern template class allocator; +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 64 "/usr/include/c++/14/deque" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_construct.h" 1 3 +13943: # 73 "/usr/include/c++/14/bits/stl_construct.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: inline void +13943: destroy_at(_Tp* __location) +13943: { +13943: if constexpr (201703L > 201703L && is_array_v<_Tp>) +13943: { +13943: for (auto& __x : *__location) +13943: std::destroy_at(std::__addressof(__x)); +13943: } +13943: else +13943: __location->~_Tp(); +13943: } +13943: # 106 "/usr/include/c++/14/bits/stl_construct.h" 3 +13943: template +13943: +13943: inline void +13943: _Construct(_Tp* __p, _Args&&... __args) +13943: { +13943: # 119 "/usr/include/c++/14/bits/stl_construct.h" 3 +13943: ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); +13943: } +13943: # 132 "/usr/include/c++/14/bits/stl_construct.h" 3 +13943: template +13943: inline void +13943: _Construct_novalue(_T1* __p) +13943: { ::new((void*)__p) _T1; } +13943: +13943: template +13943: void +13943: _Destroy(_ForwardIterator __first, _ForwardIterator __last); +13943: +13943: +13943: +13943: +13943: template +13943: constexpr inline void +13943: _Destroy(_Tp* __pointer) +13943: { +13943: +13943: +13943: +13943: __pointer->~_Tp(); +13943: +13943: } +13943: +13943: template +13943: struct _Destroy_aux +13943: { +13943: template +13943: static void +13943: __destroy(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: for (; __first != __last; ++__first) +13943: std::_Destroy(std::__addressof(*__first)); +13943: } +13943: }; +13943: +13943: template<> +13943: struct _Destroy_aux +13943: { +13943: template +13943: static void +13943: __destroy(_ForwardIterator, _ForwardIterator) { } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline void +13943: _Destroy(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _Value_type; +13943: +13943: +13943: static_assert(is_destructible<_Value_type>::value, +13943: "value type is destructible"); +13943: +13943: +13943: +13943: +13943: +13943: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: +13943: __destroy(__first, __last); +13943: } +13943: +13943: template +13943: struct _Destroy_n_aux +13943: { +13943: template +13943: static _ForwardIterator +13943: __destroy_n(_ForwardIterator __first, _Size __count) +13943: { +13943: for (; __count > 0; (void)++__first, --__count) +13943: std::_Destroy(std::__addressof(*__first)); +13943: return __first; +13943: } +13943: }; +13943: +13943: template<> +13943: struct _Destroy_n_aux +13943: { +13943: template +13943: static _ForwardIterator +13943: __destroy_n(_ForwardIterator __first, _Size __count) +13943: { +13943: std::advance(__first, __count); +13943: return __first; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline _ForwardIterator +13943: _Destroy_n(_ForwardIterator __first, _Size __count) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _Value_type; +13943: +13943: +13943: static_assert(is_destructible<_Value_type>::value, +13943: "value type is destructible"); +13943: +13943: +13943: +13943: +13943: +13943: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: +13943: __destroy_n(__first, __count); +13943: } +13943: +13943: +13943: template +13943: inline void +13943: destroy(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: std::_Destroy(__first, __last); +13943: } +13943: +13943: template +13943: inline _ForwardIterator +13943: destroy_n(_ForwardIterator __first, _Size __count) +13943: { +13943: return std::_Destroy_n(__first, __count); +13943: } +13943: +13943: +13943: +13943: } +13943: # 65 "/usr/include/c++/14/deque" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_uninitialized.h" 1 3 +13943: # 64 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: # 1 "/usr/include/c++/14/ext/alloc_traits.h" 1 3 +13943: # 32 "/usr/include/c++/14/ext/alloc_traits.h" 3 +13943: +13943: # 33 "/usr/include/c++/14/ext/alloc_traits.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/alloc_traits.h" 1 3 +13943: # 46 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: # 52 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++14-extensions" +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: +13943: +13943: struct __allocator_traits_base +13943: { +13943: template +13943: struct __rebind : __replace_first_arg<_Tp, _Up> +13943: { +13943: static_assert(is_same< +13943: typename __replace_first_arg<_Tp, typename _Tp::value_type>::type, +13943: _Tp>::value, +13943: "allocator_traits::rebind_alloc must be A"); +13943: }; +13943: +13943: template +13943: struct __rebind<_Tp, _Up, +13943: __void_t::other>> +13943: { +13943: using type = typename _Tp::template rebind<_Up>::other; +13943: +13943: static_assert(is_same< +13943: typename _Tp::template rebind::other, +13943: _Tp>::value, +13943: "allocator_traits::rebind_alloc must be A"); +13943: }; +13943: +13943: protected: +13943: template +13943: using __pointer = typename _Tp::pointer; +13943: template +13943: using __c_pointer = typename _Tp::const_pointer; +13943: template +13943: using __v_pointer = typename _Tp::void_pointer; +13943: template +13943: using __cv_pointer = typename _Tp::const_void_pointer; +13943: template +13943: using __pocca = typename _Tp::propagate_on_container_copy_assignment; +13943: template +13943: using __pocma = typename _Tp::propagate_on_container_move_assignment; +13943: template +13943: using __pocs = typename _Tp::propagate_on_container_swap; +13943: template +13943: using __equal = __type_identity; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: using __construct_t +13943: = decltype(std::declval<_Alloc&>().construct(std::declval<_Tp*>(), +13943: std::declval<_Args>()...)); +13943: template +13943: static constexpr bool __has_construct_impl = false; +13943: template +13943: static constexpr bool +13943: __has_construct_impl<_Alloc, _Tp, +13943: __void_t<__construct_t<_Alloc, _Tp, _Args...>>, +13943: _Args...> +13943: = true; +13943: template +13943: static constexpr bool __has_construct +13943: = __has_construct_impl<_Alloc, _Tp, void, _Args...>; +13943: template +13943: using __new_expr_t +13943: = decltype(::new((void*)0) _Tp(std::declval<_Args>()...)); +13943: template +13943: static constexpr bool __has_new_expr = false; +13943: template +13943: static constexpr bool +13943: __has_new_expr<_Tp, __void_t<__new_expr_t<_Tp, _Args...>>, _Args...> +13943: = true; +13943: template +13943: static constexpr bool __can_construct +13943: = __has_construct<_Alloc, _Tp, _Args...> +13943: || __has_new_expr<_Tp, void, _Args...>; +13943: }; +13943: +13943: template +13943: using __alloc_rebind +13943: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; +13943: # 143 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: struct allocator_traits : __allocator_traits_base +13943: { +13943: +13943: typedef _Alloc allocator_type; +13943: +13943: typedef typename _Alloc::value_type value_type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: using pointer = __detected_or_t; +13943: +13943: private: +13943: +13943: template class _Func, typename _Tp, typename = void> +13943: struct _Ptr +13943: { +13943: using type = typename pointer_traits::template rebind<_Tp>; +13943: }; +13943: +13943: template class _Func, typename _Tp> +13943: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> +13943: { +13943: using type = _Func<_Alloc>; +13943: }; +13943: +13943: +13943: template +13943: struct _Diff +13943: { using type = typename pointer_traits<_PtrT>::difference_type; }; +13943: +13943: template +13943: struct _Diff<_A2, _PtrT, __void_t> +13943: { using type = typename _A2::difference_type; }; +13943: +13943: +13943: template +13943: struct _Size : make_unsigned<_DiffT> { }; +13943: +13943: template +13943: struct _Size<_A2, _DiffT, __void_t> +13943: { using type = typename _A2::size_type; }; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using void_pointer = typename _Ptr<__v_pointer, void>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using difference_type = typename _Diff<_Alloc, pointer>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using size_type = typename _Size<_Alloc, difference_type>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using propagate_on_container_copy_assignment +13943: = __detected_or_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using propagate_on_container_move_assignment +13943: = __detected_or_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using propagate_on_container_swap +13943: = __detected_or_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using is_always_equal +13943: = typename __detected_or_t, __equal, _Alloc>::type; +13943: +13943: template +13943: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; +13943: template +13943: using rebind_traits = allocator_traits>; +13943: +13943: private: +13943: template +13943: static constexpr auto +13943: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) +13943: -> decltype(__a.allocate(__n, __hint)) +13943: { return __a.allocate(__n, __hint); } +13943: +13943: template +13943: static constexpr pointer +13943: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) +13943: { return __a.allocate(__n); } +13943: +13943: +13943: template +13943: static constexpr auto +13943: _S_destroy(_Alloc2& __a, _Tp* __p, int) +13943: noexcept(noexcept(__a.destroy(__p))) +13943: -> decltype(__a.destroy(__p)) +13943: { __a.destroy(__p); } +13943: +13943: template +13943: static constexpr void +13943: _S_destroy(_Alloc2&, _Tp* __p, ...) +13943: noexcept(std::is_nothrow_destructible<_Tp>::value) +13943: { std::_Destroy(__p); } +13943: +13943: template +13943: static constexpr auto +13943: _S_max_size(_Alloc2& __a, int) +13943: -> decltype(__a.max_size()) +13943: { return __a.max_size(); } +13943: +13943: template +13943: static constexpr size_type +13943: _S_max_size(_Alloc2&, ...) +13943: { +13943: +13943: +13943: return __gnu_cxx::__numeric_traits::__max +13943: / sizeof(value_type); +13943: } +13943: +13943: template +13943: static constexpr auto +13943: _S_select(_Alloc2& __a, int) +13943: -> decltype(__a.select_on_container_copy_construction()) +13943: { return __a.select_on_container_copy_construction(); } +13943: +13943: template +13943: static constexpr _Alloc2 +13943: _S_select(_Alloc2& __a, ...) +13943: { return __a; } +13943: +13943: public: +13943: # 333 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: [[__nodiscard__]] static pointer +13943: allocate(_Alloc& __a, size_type __n) +13943: { return __a.allocate(__n); } +13943: # 348 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: [[__nodiscard__]] static pointer +13943: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) +13943: { return _S_allocate(__a, __n, __hint, 0); } +13943: # 360 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: static void +13943: deallocate(_Alloc& __a, pointer __p, size_type __n) +13943: { __a.deallocate(__p, __n); } +13943: # 375 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: static +13943: __enable_if_t<__can_construct<_Alloc, _Tp, _Args...>> +13943: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) +13943: noexcept(_S_nothrow_construct<_Tp, _Args...>()) +13943: { +13943: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) +13943: __a.construct(__p, std::forward<_Args>(__args)...); +13943: else +13943: std::_Construct(__p, std::forward<_Args>(__args)...); +13943: } +13943: # 395 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: static void +13943: destroy(_Alloc& __a, _Tp* __p) +13943: noexcept(noexcept(_S_destroy(__a, __p, 0))) +13943: { _S_destroy(__a, __p, 0); } +13943: # 409 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: static size_type +13943: max_size(const _Alloc& __a) noexcept +13943: { return _S_max_size(__a, 0); } +13943: # 421 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: static _Alloc +13943: select_on_container_copy_construction(const _Alloc& __rhs) +13943: { return _S_select(__rhs, 0); } +13943: +13943: private: +13943: +13943: template +13943: static constexpr bool +13943: _S_nothrow_construct(_Alloc* __a = nullptr, _Tp* __p = nullptr) +13943: { +13943: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) +13943: return noexcept(__a->construct(__p, std::declval<_Args>()...)); +13943: else +13943: return __is_nothrow_new_constructible<_Tp, _Args...>; +13943: } +13943: # 449 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: }; +13943: #pragma GCC diagnostic pop +13943: # 460 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: struct allocator_traits> +13943: { +13943: +13943: using allocator_type = allocator<_Tp>; +13943: +13943: +13943: using value_type = _Tp; +13943: +13943: +13943: using pointer = _Tp*; +13943: +13943: +13943: using const_pointer = const _Tp*; +13943: +13943: +13943: using void_pointer = void*; +13943: +13943: +13943: using const_void_pointer = const void*; +13943: +13943: +13943: using difference_type = std::ptrdiff_t; +13943: +13943: +13943: using size_type = std::size_t; +13943: +13943: +13943: using propagate_on_container_copy_assignment = false_type; +13943: +13943: +13943: using propagate_on_container_move_assignment = true_type; +13943: +13943: +13943: using propagate_on_container_swap = false_type; +13943: +13943: +13943: using is_always_equal = true_type; +13943: +13943: template +13943: using rebind_alloc = allocator<_Up>; +13943: +13943: template +13943: using rebind_traits = allocator_traits>; +13943: # 512 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: [[__nodiscard__,__gnu__::__always_inline__]] +13943: static pointer +13943: allocate(allocator_type& __a, size_type __n) +13943: { return __a.allocate(__n); } +13943: # 527 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: [[__nodiscard__,__gnu__::__always_inline__]] +13943: static pointer +13943: allocate(allocator_type& __a, size_type __n, +13943: [[maybe_unused]] const_void_pointer __hint) +13943: { +13943: +13943: return __a.allocate(__n, __hint); +13943: +13943: +13943: +13943: } +13943: # 547 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: [[__gnu__::__always_inline__]] +13943: static void +13943: deallocate(allocator_type& __a, pointer __p, size_type __n) +13943: { __a.deallocate(__p, __n); } +13943: # 563 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: [[__gnu__::__always_inline__]] +13943: static void +13943: construct(allocator_type& __a __attribute__((__unused__)), +13943: _Up* __p, _Args&&... __args) +13943: +13943: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) +13943: +13943: +13943: +13943: { +13943: +13943: __a.construct(__p, std::forward<_Args>(__args)...); +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 590 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: [[__gnu__::__always_inline__]] +13943: static void +13943: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) +13943: noexcept(is_nothrow_destructible<_Up>::value) +13943: { +13943: +13943: __a.destroy(__p); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__gnu__::__always_inline__]] +13943: static size_type +13943: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept +13943: { +13943: +13943: return __a.max_size(); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__gnu__::__always_inline__]] +13943: static allocator_type +13943: select_on_container_copy_construction(const allocator_type& __rhs) +13943: { return __rhs; } +13943: }; +13943: # 637 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template<> +13943: struct allocator_traits> +13943: { +13943: +13943: using allocator_type = allocator; +13943: +13943: +13943: using value_type = void; +13943: +13943: +13943: using pointer = void*; +13943: +13943: +13943: using const_pointer = const void*; +13943: +13943: +13943: using void_pointer = void*; +13943: +13943: +13943: using const_void_pointer = const void*; +13943: +13943: +13943: using difference_type = std::ptrdiff_t; +13943: +13943: +13943: using size_type = std::size_t; +13943: +13943: +13943: using propagate_on_container_copy_assignment = false_type; +13943: +13943: +13943: using propagate_on_container_move_assignment = true_type; +13943: +13943: +13943: using propagate_on_container_swap = false_type; +13943: +13943: +13943: using is_always_equal = true_type; +13943: +13943: template +13943: using rebind_alloc = allocator<_Up>; +13943: +13943: template +13943: using rebind_traits = allocator_traits>; +13943: +13943: +13943: static void* +13943: allocate(allocator_type&, size_type, const void* = nullptr) = delete; +13943: +13943: +13943: static void +13943: deallocate(allocator_type&, void*, size_type) = delete; +13943: # 701 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: [[__gnu__::__always_inline__]] +13943: static void +13943: construct(allocator_type&, _Up* __p, _Args&&... __args) +13943: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) +13943: { std::_Construct(__p, std::forward<_Args>(__args)...); } +13943: # 715 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: [[__gnu__::__always_inline__]] +13943: static void +13943: destroy(allocator_type&, _Up* __p) +13943: noexcept(is_nothrow_destructible<_Up>::value) +13943: { std::_Destroy(__p); } +13943: +13943: +13943: static size_type +13943: max_size(const allocator_type&) = delete; +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__gnu__::__always_inline__]] +13943: static allocator_type +13943: select_on_container_copy_construction(const allocator_type& __rhs) +13943: { return __rhs; } +13943: }; +13943: # 753 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr inline void +13943: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) +13943: { +13943: using __traits = allocator_traits<_Alloc>; +13943: using __pocca = +13943: typename __traits::propagate_on_container_copy_assignment::type; +13943: +13943: if constexpr (__pocca::value) +13943: __one = __two; +13943: +13943: +13943: +13943: } +13943: +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr _Alloc +13943: __alloc_on_copy(const _Alloc& __a) +13943: { +13943: typedef allocator_traits<_Alloc> __traits; +13943: return __traits::select_on_container_copy_construction(__a); +13943: } +13943: # 790 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr inline void +13943: __alloc_on_move(_Alloc& __one, _Alloc& __two) +13943: { +13943: using __traits = allocator_traits<_Alloc>; +13943: using __pocma +13943: = typename __traits::propagate_on_container_move_assignment::type; +13943: +13943: if constexpr (__pocma::value) +13943: __one = std::move(__two); +13943: +13943: +13943: +13943: } +13943: # 821 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr inline void +13943: __alloc_on_swap(_Alloc& __one, _Alloc& __two) +13943: { +13943: using __traits = allocator_traits<_Alloc>; +13943: using __pocs = typename __traits::propagate_on_container_swap::type; +13943: +13943: if constexpr (__pocs::value) +13943: { +13943: using std::swap; +13943: swap(__one, __two); +13943: } +13943: +13943: +13943: +13943: } +13943: +13943: template, +13943: typename = void> +13943: struct __is_alloc_insertable_impl +13943: : false_type +13943: { }; +13943: +13943: template +13943: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, +13943: __void_t::construct( +13943: std::declval<_Alloc&>(), std::declval<_ValueT*>(), +13943: std::declval<_Tp>()))>> +13943: : true_type +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_copy_insertable +13943: : __is_alloc_insertable_impl<_Alloc, +13943: typename _Alloc::value_type const&>::type +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct __is_copy_insertable> +13943: : is_copy_constructible<_Tp> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_move_insertable +13943: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct __is_move_insertable> +13943: : is_move_constructible<_Tp> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct __is_allocator : false_type { }; +13943: +13943: template +13943: struct __is_allocator<_Alloc, +13943: __void_t().allocate(size_t{}))>> +13943: : true_type { }; +13943: +13943: template +13943: using _RequireAllocator +13943: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; +13943: +13943: template +13943: using _RequireNotAllocator +13943: = typename enable_if::value, _Alloc>::type; +13943: # 918 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: struct __alloc_swap +13943: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; +13943: +13943: template +13943: struct __alloc_swap<_Alloc, false> +13943: { +13943: static void +13943: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept +13943: { +13943: +13943: if (__one != __two) +13943: swap(__one, __two); +13943: } +13943: }; +13943: +13943: +13943: template, +13943: is_nothrow_move_constructible>::value> +13943: struct __shrink_to_fit_aux +13943: { static bool _S_do_it(_Tp&) noexcept { return false; } }; +13943: +13943: template +13943: struct __shrink_to_fit_aux<_Tp, true> +13943: { +13943: +13943: static bool +13943: _S_do_it(_Tp& __c) noexcept +13943: { +13943: +13943: try +13943: { +13943: _Tp(__make_move_if_noexcept_iterator(__c.begin()), +13943: __make_move_if_noexcept_iterator(__c.end()), +13943: __c.get_allocator()).swap(__c); +13943: return true; +13943: } +13943: catch(...) +13943: { return false; } +13943: +13943: +13943: +13943: } +13943: }; +13943: # 971 "/usr/include/c++/14/bits/alloc_traits.h" 3 +13943: template +13943: +13943: void +13943: _Destroy(_ForwardIterator __first, _ForwardIterator __last, +13943: _Allocator& __alloc) +13943: { +13943: for (; __first != __last; ++__first) +13943: +13943: +13943: +13943: allocator_traits<_Allocator>::destroy(__alloc, +13943: std::__addressof(*__first)); +13943: +13943: } +13943: +13943: +13943: template +13943: __attribute__((__always_inline__)) +13943: inline void +13943: _Destroy(_ForwardIterator __first, _ForwardIterator __last, +13943: allocator<_Tp>&) +13943: { +13943: std::_Destroy(__first, __last); +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 35 "/usr/include/c++/14/ext/alloc_traits.h" 2 3 +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __alloc_traits +13943: +13943: : std::allocator_traits<_Alloc> +13943: +13943: { +13943: typedef _Alloc allocator_type; +13943: +13943: typedef std::allocator_traits<_Alloc> _Base_type; +13943: typedef typename _Base_type::value_type value_type; +13943: typedef typename _Base_type::pointer pointer; +13943: typedef typename _Base_type::const_pointer const_pointer; +13943: typedef typename _Base_type::size_type size_type; +13943: typedef typename _Base_type::difference_type difference_type; +13943: +13943: typedef value_type& reference; +13943: typedef const value_type& const_reference; +13943: using _Base_type::allocate; +13943: using _Base_type::deallocate; +13943: using _Base_type::construct; +13943: using _Base_type::destroy; +13943: using _Base_type::max_size; +13943: +13943: private: +13943: template +13943: using __is_custom_pointer +13943: = std::__and_, +13943: std::__not_>>; +13943: +13943: public: +13943: +13943: template +13943: [[__gnu__::__always_inline__]] +13943: static constexpr +13943: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> +13943: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) +13943: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), +13943: std::forward<_Args>(__args)...))) +13943: { +13943: _Base_type::construct(__a, std::__to_address(__p), +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: template +13943: [[__gnu__::__always_inline__]] +13943: static constexpr +13943: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> +13943: destroy(_Alloc& __a, _Ptr __p) +13943: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) +13943: { _Base_type::destroy(__a, std::__to_address(__p)); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) +13943: { return _Base_type::select_on_container_copy_construction(__a); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: static constexpr void _S_on_swap(_Alloc& __a, _Alloc& __b) +13943: { std::__alloc_on_swap(__a, __b); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: static constexpr bool _S_propagate_on_copy_assign() +13943: { return _Base_type::propagate_on_container_copy_assignment::value; } +13943: +13943: [[__gnu__::__always_inline__]] +13943: static constexpr bool _S_propagate_on_move_assign() +13943: { return _Base_type::propagate_on_container_move_assignment::value; } +13943: +13943: [[__gnu__::__always_inline__]] +13943: static constexpr bool _S_propagate_on_swap() +13943: { return _Base_type::propagate_on_container_swap::value; } +13943: +13943: [[__gnu__::__always_inline__]] +13943: static constexpr bool _S_always_equal() +13943: { return _Base_type::is_always_equal::value; } +13943: +13943: __attribute__((__always_inline__)) +13943: static constexpr bool _S_nothrow_move() +13943: { return _S_propagate_on_move_assign() || _S_always_equal(); } +13943: +13943: template +13943: struct rebind +13943: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; +13943: # 180 "/usr/include/c++/14/ext/alloc_traits.h" 3 +13943: }; +13943: +13943: +13943: } +13943: # 65 "/usr/include/c++/14/bits/stl_uninitialized.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 81 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: constexpr bool +13943: __check_constructible() +13943: { +13943: +13943: +13943: +13943: +13943: +13943: static_assert(is_constructible<_ValueType, _Tp>::value, +13943: "result type must be constructible from input type"); +13943: +13943: return true; +13943: } +13943: # 110 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: +13943: _ForwardIterator +13943: __do_uninit_copy(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result) +13943: { +13943: _ForwardIterator __cur = __result; +13943: try +13943: { +13943: for (; __first != __last; ++__first, (void)++__cur) +13943: std::_Construct(std::__addressof(*__cur), *__first); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__result, __cur); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: struct __uninitialized_copy +13943: { +13943: template +13943: static _ForwardIterator +13943: __uninit_copy(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result) +13943: { return std::__do_uninit_copy(__first, __last, __result); } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_copy +13943: { +13943: template +13943: static _ForwardIterator +13943: __uninit_copy(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result) +13943: { return std::copy(__first, __last, __result); } +13943: }; +13943: # 161 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline _ForwardIterator +13943: uninitialized_copy(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result) +13943: { +13943: typedef typename iterator_traits<_InputIterator>::value_type +13943: _ValueType1; +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType2; +13943: +13943: +13943: +13943: +13943: const bool __can_memmove = __is_trivial(_ValueType1); +13943: +13943: +13943: +13943: +13943: using _From = decltype(*__first); +13943: +13943: const bool __assignable +13943: = __is_trivial(_ValueType2) && __is_assignable(_ValueType2&, _From) && std::__check_constructible<_ValueType2, _From>(); +13943: +13943: return std::__uninitialized_copy<__can_memmove && __assignable>:: +13943: __uninit_copy(__first, __last, __result); +13943: } +13943: +13943: +13943: +13943: template +13943: void +13943: __do_uninit_fill(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __x) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: for (; __cur != __last; ++__cur) +13943: std::_Construct(std::__addressof(*__cur), __x); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: struct __uninitialized_fill +13943: { +13943: template +13943: static void +13943: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __x) +13943: { std::__do_uninit_fill(__first, __last, __x); } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_fill +13943: { +13943: template +13943: static void +13943: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __x) +13943: { std::fill(__first, __last, __x); } +13943: }; +13943: # 239 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline void +13943: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __x) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType; +13943: +13943: +13943: +13943: const bool __can_fill +13943: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>(); +13943: +13943: std::__uninitialized_fill<__can_fill>:: +13943: __uninit_fill(__first, __last, __x); +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __do_uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: for (; __n > 0; --__n, (void) ++__cur) +13943: std::_Construct(std::__addressof(*__cur), __x); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: struct __uninitialized_fill_n +13943: { +13943: template +13943: static _ForwardIterator +13943: __uninit_fill_n(_ForwardIterator __first, _Size __n, +13943: const _Tp& __x) +13943: { return std::__do_uninit_fill_n(__first, __n, __x); } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_fill_n +13943: { +13943: template +13943: static _ForwardIterator +13943: __uninit_fill_n(_ForwardIterator __first, _Size __n, +13943: const _Tp& __x) +13943: { return std::fill_n(__first, __n, __x); } +13943: }; +13943: # 310 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline _ForwardIterator +13943: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType; +13943: +13943: +13943: +13943: const bool __can_fill +13943: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>() +13943: +13943: +13943: +13943: && __is_integer<_Size>::__value; +13943: +13943: return __uninitialized_fill_n<__can_fill>:: +13943: __uninit_fill_n(__first, __n, __x); +13943: } +13943: # 340 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: +13943: _ForwardIterator +13943: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result, _Allocator& __alloc) +13943: { +13943: _ForwardIterator __cur = __result; +13943: try +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +13943: for (; __first != __last; ++__first, (void)++__cur) +13943: __traits::construct(__alloc, std::__addressof(*__cur), *__first); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__result, __cur, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result, allocator<_Tp>&) +13943: { +13943: +13943: +13943: +13943: +13943: return std::uninitialized_copy(__first, __last, __result); +13943: } +13943: +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result, _Allocator& __alloc) +13943: { +13943: return std::__uninitialized_copy_a(std::make_move_iterator(__first), +13943: std::make_move_iterator(__last), +13943: __result, __alloc); +13943: } +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __uninitialized_move_if_noexcept_a(_InputIterator __first, +13943: _InputIterator __last, +13943: _ForwardIterator __result, +13943: _Allocator& __alloc) +13943: { +13943: return std::__uninitialized_copy_a +13943: (std::__make_move_if_noexcept_iterator(__first), +13943: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); +13943: } +13943: +13943: template +13943: +13943: void +13943: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __x, _Allocator& __alloc) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +13943: for (; __cur != __last; ++__cur) +13943: __traits::construct(__alloc, std::__addressof(*__cur), __x); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: inline void +13943: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __x, allocator<_Tp2>&) +13943: { +13943: +13943: +13943: +13943: +13943: std::uninitialized_fill(__first, __last, __x); +13943: } +13943: +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, +13943: const _Tp& __x, _Allocator& __alloc) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +13943: for (; __n > 0; --__n, (void) ++__cur) +13943: __traits::construct(__alloc, std::__addressof(*__cur), __x); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, +13943: const _Tp& __x, allocator<_Tp2>&) +13943: { +13943: +13943: +13943: +13943: +13943: return std::uninitialized_fill_n(__first, __n, __x); +13943: } +13943: # 485 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline _ForwardIterator +13943: __uninitialized_copy_move(_InputIterator1 __first1, +13943: _InputIterator1 __last1, +13943: _InputIterator2 __first2, +13943: _InputIterator2 __last2, +13943: _ForwardIterator __result, +13943: _Allocator& __alloc) +13943: { +13943: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, +13943: __result, +13943: __alloc); +13943: try +13943: { +13943: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__result, __mid, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline _ForwardIterator +13943: __uninitialized_move_copy(_InputIterator1 __first1, +13943: _InputIterator1 __last1, +13943: _InputIterator2 __first2, +13943: _InputIterator2 __last2, +13943: _ForwardIterator __result, +13943: _Allocator& __alloc) +13943: { +13943: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, +13943: __result, +13943: __alloc); +13943: try +13943: { +13943: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__result, __mid, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: inline _ForwardIterator +13943: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, +13943: const _Tp& __x, _InputIterator __first, +13943: _InputIterator __last, _Allocator& __alloc) +13943: { +13943: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); +13943: try +13943: { +13943: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__result, __mid, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: inline void +13943: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, +13943: _ForwardIterator __first2, +13943: _ForwardIterator __last2, const _Tp& __x, +13943: _Allocator& __alloc) +13943: { +13943: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, +13943: __first2, +13943: __alloc); +13943: try +13943: { +13943: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first2, __mid2, __alloc); +13943: throw; +13943: } +13943: } +13943: # 592 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: struct __uninitialized_default_1 +13943: { +13943: template +13943: static void +13943: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: for (; __cur != __last; ++__cur) +13943: std::_Construct(std::__addressof(*__cur)); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur); +13943: throw; +13943: } +13943: } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_default_1 +13943: { +13943: template +13943: static void +13943: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: if (__first == __last) +13943: return; +13943: +13943: typename iterator_traits<_ForwardIterator>::value_type* __val +13943: = std::__addressof(*__first); +13943: std::_Construct(__val); +13943: if (++__first != __last) +13943: std::fill(__first, __last, *__val); +13943: } +13943: }; +13943: +13943: template +13943: struct __uninitialized_default_n_1 +13943: { +13943: template +13943: +13943: static _ForwardIterator +13943: __uninit_default_n(_ForwardIterator __first, _Size __n) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: for (; __n > 0; --__n, (void) ++__cur) +13943: std::_Construct(std::__addressof(*__cur)); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur); +13943: throw; +13943: } +13943: } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_default_n_1 +13943: { +13943: template +13943: +13943: static _ForwardIterator +13943: __uninit_default_n(_ForwardIterator __first, _Size __n) +13943: { +13943: if (__n > 0) +13943: { +13943: typename iterator_traits<_ForwardIterator>::value_type* __val +13943: = std::__addressof(*__first); +13943: std::_Construct(__val); +13943: ++__first; +13943: __first = std::fill_n(__first, __n - 1, *__val); +13943: } +13943: return __first; +13943: } +13943: }; +13943: +13943: +13943: +13943: template +13943: inline void +13943: __uninitialized_default(_ForwardIterator __first, +13943: _ForwardIterator __last) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType; +13943: +13943: const bool __assignable = is_copy_assignable<_ValueType>::value; +13943: +13943: std::__uninitialized_default_1<__is_trivial(_ValueType) +13943: && __assignable>:: +13943: __uninit_default(__first, __last); +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __uninitialized_default_n(_ForwardIterator __first, _Size __n) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType; +13943: +13943: constexpr bool __can_fill +13943: = __and_, is_copy_assignable<_ValueType>>::value; +13943: +13943: return __uninitialized_default_n_1<__is_trivial(_ValueType) +13943: && __can_fill>:: +13943: __uninit_default_n(__first, __n); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: __uninitialized_default_a(_ForwardIterator __first, +13943: _ForwardIterator __last, +13943: _Allocator& __alloc) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +13943: for (; __cur != __last; ++__cur) +13943: __traits::construct(__alloc, std::__addressof(*__cur)); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: inline void +13943: __uninitialized_default_a(_ForwardIterator __first, +13943: _ForwardIterator __last, +13943: allocator<_Tp>&) +13943: { std::__uninitialized_default(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _ForwardIterator +13943: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, +13943: _Allocator& __alloc) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +13943: for (; __n > 0; --__n, (void) ++__cur) +13943: __traits::construct(__alloc, std::__addressof(*__cur)); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur, __alloc); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, +13943: allocator<_Tp>&) +13943: { return std::__uninitialized_default_n(__first, __n); } +13943: +13943: +13943: template +13943: struct __uninitialized_default_novalue_1 +13943: { +13943: template +13943: static void +13943: __uninit_default_novalue(_ForwardIterator __first, +13943: _ForwardIterator __last) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: for (; __cur != __last; ++__cur) +13943: std::_Construct_novalue(std::__addressof(*__cur)); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur); +13943: throw; +13943: } +13943: } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_default_novalue_1 +13943: { +13943: template +13943: static void +13943: __uninit_default_novalue(_ForwardIterator, _ForwardIterator) +13943: { +13943: } +13943: }; +13943: +13943: template +13943: struct __uninitialized_default_novalue_n_1 +13943: { +13943: template +13943: static _ForwardIterator +13943: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) +13943: { +13943: _ForwardIterator __cur = __first; +13943: try +13943: { +13943: for (; __n > 0; --__n, (void) ++__cur) +13943: std::_Construct_novalue(std::__addressof(*__cur)); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur); +13943: throw; +13943: } +13943: } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_default_novalue_n_1 +13943: { +13943: template +13943: static _ForwardIterator +13943: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) +13943: { return std::next(__first, __n); } +13943: }; +13943: +13943: +13943: +13943: template +13943: inline void +13943: __uninitialized_default_novalue(_ForwardIterator __first, +13943: _ForwardIterator __last) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType; +13943: +13943: std::__uninitialized_default_novalue_1< +13943: is_trivially_default_constructible<_ValueType>::value>:: +13943: __uninit_default_novalue(__first, __last); +13943: } +13943: +13943: +13943: +13943: template +13943: inline _ForwardIterator +13943: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType; +13943: +13943: return __uninitialized_default_novalue_n_1< +13943: is_trivially_default_constructible<_ValueType>::value>:: +13943: __uninit_default_novalue_n(__first, __n); +13943: } +13943: +13943: template +13943: _ForwardIterator +13943: __uninitialized_copy_n(_InputIterator __first, _Size __n, +13943: _ForwardIterator __result, input_iterator_tag) +13943: { +13943: _ForwardIterator __cur = __result; +13943: try +13943: { +13943: for (; __n > 0; --__n, (void) ++__first, ++__cur) +13943: std::_Construct(std::__addressof(*__cur), *__first); +13943: return __cur; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__result, __cur); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: inline _ForwardIterator +13943: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, +13943: _ForwardIterator __result, +13943: random_access_iterator_tag) +13943: { return std::uninitialized_copy(__first, __first + __n, __result); } +13943: +13943: template +13943: pair<_InputIterator, _ForwardIterator> +13943: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, +13943: _ForwardIterator __result, input_iterator_tag) +13943: { +13943: _ForwardIterator __cur = __result; +13943: try +13943: { +13943: for (; __n > 0; --__n, (void) ++__first, ++__cur) +13943: std::_Construct(std::__addressof(*__cur), *__first); +13943: return {__first, __cur}; +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__result, __cur); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: inline pair<_RandomAccessIterator, _ForwardIterator> +13943: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, +13943: _ForwardIterator __result, +13943: random_access_iterator_tag) +13943: { +13943: auto __second_res = uninitialized_copy(__first, __first + __n, __result); +13943: auto __first_res = std::next(__first, __n); +13943: return {__first_res, __second_res}; +13943: } +13943: # 946 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline _ForwardIterator +13943: uninitialized_copy_n(_InputIterator __first, _Size __n, +13943: _ForwardIterator __result) +13943: { return std::__uninitialized_copy_n(__first, __n, __result, +13943: std::__iterator_category(__first)); } +13943: +13943: +13943: template +13943: inline pair<_InputIterator, _ForwardIterator> +13943: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, +13943: _ForwardIterator __result) +13943: { +13943: return +13943: std::__uninitialized_copy_n_pair(__first, __n, __result, +13943: std::__iterator_category(__first)); +13943: } +13943: # 973 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline void +13943: uninitialized_default_construct(_ForwardIterator __first, +13943: _ForwardIterator __last) +13943: { +13943: __uninitialized_default_novalue(__first, __last); +13943: } +13943: # 988 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline _ForwardIterator +13943: uninitialized_default_construct_n(_ForwardIterator __first, _Size __count) +13943: { +13943: return __uninitialized_default_novalue_n(__first, __count); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline void +13943: uninitialized_value_construct(_ForwardIterator __first, +13943: _ForwardIterator __last) +13943: { +13943: return __uninitialized_default(__first, __last); +13943: } +13943: # 1016 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline _ForwardIterator +13943: uninitialized_value_construct_n(_ForwardIterator __first, _Size __count) +13943: { +13943: return __uninitialized_default_n(__first, __count); +13943: } +13943: # 1031 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline _ForwardIterator +13943: uninitialized_move(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result) +13943: { +13943: return std::uninitialized_copy +13943: (std::make_move_iterator(__first), +13943: std::make_move_iterator(__last), __result); +13943: } +13943: # 1049 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: template +13943: inline pair<_InputIterator, _ForwardIterator> +13943: uninitialized_move_n(_InputIterator __first, _Size __count, +13943: _ForwardIterator __result) +13943: { +13943: auto __res = std::__uninitialized_copy_n_pair +13943: (std::make_move_iterator(__first), +13943: __count, __result); +13943: return {__res.first.base(), __res.second}; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline void +13943: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, +13943: _Allocator& __alloc) +13943: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, +13943: __dest, std::move(*__orig))) +13943: && noexcept(std::allocator_traits<_Allocator>::destroy( +13943: __alloc, std::__addressof(*__orig)))) +13943: { +13943: typedef std::allocator_traits<_Allocator> __traits; +13943: __traits::construct(__alloc, __dest, std::move(*__orig)); +13943: __traits::destroy(__alloc, std::__addressof(*__orig)); +13943: } +13943: +13943: +13943: +13943: template +13943: struct __is_bitwise_relocatable +13943: : is_trivial<_Tp> { }; +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __relocate_a_1(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result, _Allocator& __alloc) +13943: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), +13943: std::addressof(*__first), +13943: __alloc))) +13943: { +13943: typedef typename iterator_traits<_InputIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType2; +13943: static_assert(std::is_same<_ValueType, _ValueType2>::value, +13943: "relocation is only possible for values of the same type"); +13943: _ForwardIterator __cur = __result; +13943: for (; __first != __last; ++__first, (void)++__cur) +13943: std::__relocate_object_a(std::__addressof(*__cur), +13943: std::__addressof(*__first), __alloc); +13943: return __cur; +13943: } +13943: +13943: +13943: template +13943: +13943: inline __enable_if_t::value, _Tp*> +13943: __relocate_a_1(_Tp* __first, _Tp* __last, +13943: _Tp* __result, +13943: [[__maybe_unused__]] allocator<_Up>& __alloc) noexcept +13943: { +13943: ptrdiff_t __count = __last - __first; +13943: if (__count > 0) +13943: { +13943: # 1129 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +13943: __builtin_memcpy(__result, __first, __count * sizeof(_Tp)); +13943: } +13943: return __result + __count; +13943: } +13943: +13943: +13943: template +13943: +13943: inline _ForwardIterator +13943: __relocate_a(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result, _Allocator& __alloc) +13943: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), +13943: std::__niter_base(__last), +13943: std::__niter_base(__result), __alloc))) +13943: { +13943: return std::__relocate_a_1(std::__niter_base(__first), +13943: std::__niter_base(__last), +13943: std::__niter_base(__result), __alloc); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 66 "/usr/include/c++/14/deque" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_deque.h" 1 3 +13943: # 63 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: # 1 "/usr/include/c++/14/initializer_list" 1 3 +13943: # 33 "/usr/include/c++/14/initializer_list" 3 +13943: +13943: # 34 "/usr/include/c++/14/initializer_list" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: template +13943: class initializer_list +13943: { +13943: public: +13943: typedef _E value_type; +13943: typedef const _E& reference; +13943: typedef const _E& const_reference; +13943: typedef size_t size_type; +13943: typedef const _E* iterator; +13943: typedef const _E* const_iterator; +13943: +13943: private: +13943: iterator _M_array; +13943: size_type _M_len; +13943: +13943: +13943: constexpr initializer_list(const_iterator __a, size_type __l) +13943: : _M_array(__a), _M_len(__l) { } +13943: +13943: public: +13943: constexpr initializer_list() noexcept +13943: : _M_array(0), _M_len(0) { } +13943: +13943: +13943: constexpr size_type +13943: size() const noexcept { return _M_len; } +13943: +13943: +13943: constexpr const_iterator +13943: begin() const noexcept { return _M_array; } +13943: +13943: +13943: constexpr const_iterator +13943: end() const noexcept { return begin() + size(); } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr const _Tp* +13943: begin(initializer_list<_Tp> __ils) noexcept +13943: { return __ils.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr const _Tp* +13943: end(initializer_list<_Tp> __ils) noexcept +13943: { return __ils.end(); } +13943: } +13943: # 64 "/usr/include/c++/14/bits/stl_deque.h" 2 3 +13943: # 72 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: # 95 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: constexpr inline size_t +13943: __deque_buf_size(size_t __size) +13943: { return (__size < 512 +13943: ? size_t(512 / __size) : size_t(1)); } +13943: # 112 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: struct _Deque_iterator +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: private: +13943: template +13943: using __iter = _Deque_iterator<_Tp, _CvTp&, __ptr_rebind<_Ptr, _CvTp>>; +13943: public: +13943: typedef __iter<_Tp> iterator; +13943: typedef __iter const_iterator; +13943: typedef __ptr_rebind<_Ptr, _Tp> _Elt_pointer; +13943: typedef __ptr_rebind<_Ptr, _Elt_pointer> _Map_pointer; +13943: +13943: +13943: static size_t _S_buffer_size() noexcept +13943: { return __deque_buf_size(sizeof(_Tp)); } +13943: +13943: typedef std::random_access_iterator_tag iterator_category; +13943: typedef _Tp value_type; +13943: typedef _Ptr pointer; +13943: typedef _Ref reference; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef _Deque_iterator _Self; +13943: +13943: _Elt_pointer _M_cur; +13943: _Elt_pointer _M_first; +13943: _Elt_pointer _M_last; +13943: _Map_pointer _M_node; +13943: +13943: _Deque_iterator(_Elt_pointer __x, _Map_pointer __y) noexcept +13943: : _M_cur(__x), _M_first(*__y), +13943: _M_last(*__y + _S_buffer_size()), _M_node(__y) { } +13943: +13943: _Deque_iterator() noexcept +13943: : _M_cur(), _M_first(), _M_last(), _M_node() { } +13943: # 161 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template, +13943: is_same<_Iter, iterator>>> +13943: _Deque_iterator(const _Iter& __x) noexcept +13943: : _M_cur(__x._M_cur), _M_first(__x._M_first), +13943: _M_last(__x._M_last), _M_node(__x._M_node) { } +13943: +13943: _Deque_iterator(const _Deque_iterator& __x) noexcept +13943: : _M_cur(__x._M_cur), _M_first(__x._M_first), +13943: _M_last(__x._M_last), _M_node(__x._M_node) { } +13943: +13943: _Deque_iterator& operator=(const _Deque_iterator&) = default; +13943: +13943: +13943: iterator +13943: _M_const_cast() const noexcept +13943: { return iterator(_M_cur, _M_node); } +13943: +13943: [[__nodiscard__]] +13943: reference +13943: operator*() const noexcept +13943: { return *_M_cur; } +13943: +13943: [[__nodiscard__]] +13943: pointer +13943: operator->() const noexcept +13943: { return _M_cur; } +13943: +13943: _Self& +13943: operator++() noexcept +13943: { +13943: ++_M_cur; +13943: if (_M_cur == _M_last) +13943: { +13943: _M_set_node(_M_node + 1); +13943: _M_cur = _M_first; +13943: } +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator++(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: ++*this; +13943: return __tmp; +13943: } +13943: +13943: _Self& +13943: operator--() noexcept +13943: { +13943: if (_M_cur == _M_first) +13943: { +13943: _M_set_node(_M_node - 1); +13943: _M_cur = _M_last; +13943: } +13943: --_M_cur; +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator--(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: --*this; +13943: return __tmp; +13943: } +13943: +13943: _Self& +13943: operator+=(difference_type __n) noexcept +13943: { +13943: const difference_type __offset = __n + (_M_cur - _M_first); +13943: if (__offset >= 0 && __offset < difference_type(_S_buffer_size())) +13943: _M_cur += __n; +13943: else +13943: { +13943: const difference_type __node_offset = +13943: __offset > 0 ? __offset / difference_type(_S_buffer_size()) +13943: : -difference_type((-__offset - 1) +13943: / _S_buffer_size()) - 1; +13943: _M_set_node(_M_node + __node_offset); +13943: _M_cur = _M_first + (__offset - __node_offset +13943: * difference_type(_S_buffer_size())); +13943: } +13943: return *this; +13943: } +13943: +13943: _Self& +13943: operator-=(difference_type __n) noexcept +13943: { return *this += -__n; } +13943: +13943: [[__nodiscard__]] +13943: reference +13943: operator[](difference_type __n) const noexcept +13943: { return *(*this + __n); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: _M_set_node(_Map_pointer __new_node) noexcept +13943: { +13943: _M_node = __new_node; +13943: _M_first = *__new_node; +13943: _M_last = _M_first + difference_type(_S_buffer_size()); +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator==(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_cur == __y._M_cur; } +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: friend bool +13943: operator==(const _Self& __x, +13943: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +13943: noexcept +13943: { return __x._M_cur == __y._M_cur; } +13943: # 296 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: [[__nodiscard__]] +13943: friend bool +13943: operator!=(const _Self& __x, const _Self& __y) noexcept +13943: { return !(__x == __y); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: friend bool +13943: operator!=(const _Self& __x, +13943: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +13943: noexcept +13943: { return !(__x == __y); } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator<(const _Self& __x, const _Self& __y) noexcept +13943: { +13943: return (__x._M_node == __y._M_node) +13943: ? (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: friend bool +13943: operator<(const _Self& __x, +13943: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +13943: noexcept +13943: { +13943: return (__x._M_node == __y._M_node) +13943: ? (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node); +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator>(const _Self& __x, const _Self& __y) noexcept +13943: { return __y < __x; } +13943: +13943: template +13943: [[__nodiscard__]] +13943: friend bool +13943: operator>(const _Self& __x, +13943: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +13943: noexcept +13943: { return __y < __x; } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator<=(const _Self& __x, const _Self& __y) noexcept +13943: { return !(__y < __x); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: friend bool +13943: operator<=(const _Self& __x, +13943: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +13943: noexcept +13943: { return !(__y < __x); } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator>=(const _Self& __x, const _Self& __y) noexcept +13943: { return !(__x < __y); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: friend bool +13943: operator>=(const _Self& __x, +13943: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +13943: noexcept +13943: { return !(__x < __y); } +13943: +13943: +13943: [[__nodiscard__]] +13943: friend difference_type +13943: operator-(const _Self& __x, const _Self& __y) noexcept +13943: { +13943: return difference_type(_S_buffer_size()) +13943: * (__x._M_node - __y._M_node - bool(__x._M_node)) +13943: + (__x._M_cur - __x._M_first) +13943: + (__y._M_last - __y._M_cur); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: friend difference_type +13943: operator-(const _Self& __x, +13943: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +13943: noexcept +13943: { +13943: return difference_type(_S_buffer_size()) +13943: * (__x._M_node - __y._M_node - bool(__x._M_node)) +13943: + (__x._M_cur - __x._M_first) +13943: + (__y._M_last - __y._M_cur); +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend _Self +13943: operator+(const _Self& __x, difference_type __n) noexcept +13943: { +13943: _Self __tmp = __x; +13943: __tmp += __n; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend _Self +13943: operator-(const _Self& __x, difference_type __n) noexcept +13943: { +13943: _Self __tmp = __x; +13943: __tmp -= __n; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend _Self +13943: operator+(difference_type __n, const _Self& __x) noexcept +13943: { return __x + __n; } +13943: }; +13943: # 429 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: class _Deque_base +13943: { +13943: protected: +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_Tp>::other _Tp_alloc_type; +13943: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; +13943: +13943: +13943: +13943: +13943: +13943: typedef typename _Alloc_traits::pointer _Ptr; +13943: typedef typename _Alloc_traits::const_pointer _Ptr_const; +13943: +13943: +13943: typedef typename _Alloc_traits::template rebind<_Ptr>::other +13943: _Map_alloc_type; +13943: typedef __gnu_cxx::__alloc_traits<_Map_alloc_type> _Map_alloc_traits; +13943: +13943: typedef _Alloc allocator_type; +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_get_Tp_allocator()); } +13943: +13943: typedef _Deque_iterator<_Tp, _Tp&, _Ptr> iterator; +13943: typedef _Deque_iterator<_Tp, const _Tp&, _Ptr_const> const_iterator; +13943: +13943: _Deque_base() +13943: : _M_impl() +13943: { _M_initialize_map(0); } +13943: +13943: _Deque_base(size_t __num_elements) +13943: : _M_impl() +13943: { _M_initialize_map(__num_elements); } +13943: +13943: _Deque_base(const allocator_type& __a, size_t __num_elements) +13943: : _M_impl(__a) +13943: { _M_initialize_map(__num_elements); } +13943: +13943: _Deque_base(const allocator_type& __a) +13943: : _M_impl(__a) +13943: { } +13943: +13943: +13943: _Deque_base(_Deque_base&& __x) +13943: : _M_impl(std::move(__x._M_get_Tp_allocator())) +13943: { +13943: _M_initialize_map(0); +13943: if (__x._M_impl._M_map) +13943: this->_M_impl._M_swap_data(__x._M_impl); +13943: } +13943: +13943: _Deque_base(_Deque_base&& __x, const allocator_type& __a) +13943: : _M_impl(std::move(__x._M_impl), _Tp_alloc_type(__a)) +13943: { __x._M_initialize_map(0); } +13943: +13943: _Deque_base(_Deque_base&& __x, const allocator_type& __a, size_t __n) +13943: : _M_impl(__a) +13943: { +13943: if (__x.get_allocator() == __a) +13943: { +13943: if (__x._M_impl._M_map) +13943: { +13943: _M_initialize_map(0); +13943: this->_M_impl._M_swap_data(__x._M_impl); +13943: } +13943: } +13943: else +13943: { +13943: _M_initialize_map(__n); +13943: } +13943: } +13943: +13943: +13943: ~_Deque_base() noexcept; +13943: +13943: typedef typename iterator::_Map_pointer _Map_pointer; +13943: +13943: struct _Deque_impl_data +13943: { +13943: _Map_pointer _M_map; +13943: size_t _M_map_size; +13943: iterator _M_start; +13943: iterator _M_finish; +13943: +13943: _Deque_impl_data() noexcept +13943: : _M_map(), _M_map_size(), _M_start(), _M_finish() +13943: { } +13943: +13943: +13943: _Deque_impl_data(const _Deque_impl_data&) = default; +13943: _Deque_impl_data& +13943: operator=(const _Deque_impl_data&) = default; +13943: +13943: _Deque_impl_data(_Deque_impl_data&& __x) noexcept +13943: : _Deque_impl_data(__x) +13943: { __x = _Deque_impl_data(); } +13943: +13943: +13943: void +13943: _M_swap_data(_Deque_impl_data& __x) noexcept +13943: { +13943: +13943: +13943: std::swap(*this, __x); +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: struct _Deque_impl +13943: : public _Tp_alloc_type, public _Deque_impl_data +13943: { +13943: _Deque_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) +13943: +13943: : _Tp_alloc_type() +13943: { } +13943: +13943: _Deque_impl(const _Tp_alloc_type& __a) noexcept +13943: : _Tp_alloc_type(__a) +13943: { } +13943: +13943: +13943: _Deque_impl(_Deque_impl&&) = default; +13943: +13943: _Deque_impl(_Tp_alloc_type&& __a) noexcept +13943: : _Tp_alloc_type(std::move(__a)) +13943: { } +13943: +13943: _Deque_impl(_Deque_impl&& __d, _Tp_alloc_type&& __a) +13943: : _Tp_alloc_type(std::move(__a)), _Deque_impl_data(std::move(__d)) +13943: { } +13943: +13943: }; +13943: +13943: _Tp_alloc_type& +13943: _M_get_Tp_allocator() noexcept +13943: { return this->_M_impl; } +13943: +13943: const _Tp_alloc_type& +13943: _M_get_Tp_allocator() const noexcept +13943: { return this->_M_impl; } +13943: +13943: _Map_alloc_type +13943: _M_get_map_allocator() const noexcept +13943: { return _Map_alloc_type(_M_get_Tp_allocator()); } +13943: +13943: _Ptr +13943: _M_allocate_node() +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits; +13943: return _Traits::allocate(_M_impl, __deque_buf_size(sizeof(_Tp))); +13943: } +13943: +13943: void +13943: _M_deallocate_node(_Ptr __p) noexcept +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits; +13943: _Traits::deallocate(_M_impl, __p, __deque_buf_size(sizeof(_Tp))); +13943: } +13943: +13943: _Map_pointer +13943: _M_allocate_map(size_t __n) +13943: { +13943: _Map_alloc_type __map_alloc = _M_get_map_allocator(); +13943: return _Map_alloc_traits::allocate(__map_alloc, __n); +13943: } +13943: +13943: void +13943: _M_deallocate_map(_Map_pointer __p, size_t __n) noexcept +13943: { +13943: _Map_alloc_type __map_alloc = _M_get_map_allocator(); +13943: _Map_alloc_traits::deallocate(__map_alloc, __p, __n); +13943: } +13943: +13943: void _M_initialize_map(size_t); +13943: void _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish); +13943: void _M_destroy_nodes(_Map_pointer __nstart, +13943: _Map_pointer __nfinish) noexcept; +13943: enum { _S_initial_map_size = 8 }; +13943: +13943: _Deque_impl _M_impl; +13943: }; +13943: +13943: template +13943: _Deque_base<_Tp, _Alloc>:: +13943: ~_Deque_base() noexcept +13943: { +13943: if (this->_M_impl._M_map) +13943: { +13943: _M_destroy_nodes(this->_M_impl._M_start._M_node, +13943: this->_M_impl._M_finish._M_node + 1); +13943: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +13943: } +13943: } +13943: # 636 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: void +13943: _Deque_base<_Tp, _Alloc>:: +13943: _M_initialize_map(size_t __num_elements) +13943: { +13943: const size_t __num_nodes = (__num_elements / __deque_buf_size(sizeof(_Tp)) +13943: + 1); +13943: +13943: this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size, +13943: size_t(__num_nodes + 2)); +13943: this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size); +13943: +13943: +13943: +13943: +13943: +13943: +13943: _Map_pointer __nstart = (this->_M_impl._M_map +13943: + (this->_M_impl._M_map_size - __num_nodes) / 2); +13943: _Map_pointer __nfinish = __nstart + __num_nodes; +13943: +13943: try +13943: { _M_create_nodes(__nstart, __nfinish); } +13943: catch(...) +13943: { +13943: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +13943: this->_M_impl._M_map = _Map_pointer(); +13943: this->_M_impl._M_map_size = 0; +13943: throw; +13943: } +13943: +13943: this->_M_impl._M_start._M_set_node(__nstart); +13943: this->_M_impl._M_finish._M_set_node(__nfinish - 1); +13943: this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first; +13943: this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first +13943: + __num_elements +13943: % __deque_buf_size(sizeof(_Tp))); +13943: } +13943: +13943: template +13943: void +13943: _Deque_base<_Tp, _Alloc>:: +13943: _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish) +13943: { +13943: _Map_pointer __cur; +13943: try +13943: { +13943: for (__cur = __nstart; __cur < __nfinish; ++__cur) +13943: *__cur = this->_M_allocate_node(); +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(__nstart, __cur); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: void +13943: _Deque_base<_Tp, _Alloc>:: +13943: _M_destroy_nodes(_Map_pointer __nstart, +13943: _Map_pointer __nfinish) noexcept +13943: { +13943: for (_Map_pointer __n = __nstart; __n < __nfinish; ++__n) +13943: _M_deallocate_node(*__n); +13943: } +13943: # 787 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template > +13943: class deque : protected _Deque_base<_Tp, _Alloc> +13943: { +13943: # 800 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: static_assert(is_same::type, _Tp>::value, +13943: "std::deque must have a non-const, non-volatile value_type"); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef _Deque_base<_Tp, _Alloc> _Base; +13943: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; +13943: typedef typename _Base::_Alloc_traits _Alloc_traits; +13943: typedef typename _Base::_Map_pointer _Map_pointer; +13943: +13943: public: +13943: typedef _Tp value_type; +13943: typedef typename _Alloc_traits::pointer pointer; +13943: typedef typename _Alloc_traits::const_pointer const_pointer; +13943: typedef typename _Alloc_traits::reference reference; +13943: typedef typename _Alloc_traits::const_reference const_reference; +13943: typedef typename _Base::iterator iterator; +13943: typedef typename _Base::const_iterator const_iterator; +13943: typedef std::reverse_iterator const_reverse_iterator; +13943: typedef std::reverse_iterator reverse_iterator; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef _Alloc allocator_type; +13943: +13943: private: +13943: static size_t _S_buffer_size() noexcept +13943: { return __deque_buf_size(sizeof(_Tp)); } +13943: +13943: +13943: using _Base::_M_initialize_map; +13943: using _Base::_M_create_nodes; +13943: using _Base::_M_destroy_nodes; +13943: using _Base::_M_allocate_node; +13943: using _Base::_M_deallocate_node; +13943: using _Base::_M_allocate_map; +13943: using _Base::_M_deallocate_map; +13943: using _Base::_M_get_Tp_allocator; +13943: +13943: +13943: +13943: +13943: +13943: using _Base::_M_impl; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: deque() = default; +13943: # 864 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: explicit +13943: deque(const allocator_type& __a) +13943: : _Base(__a, 0) { } +13943: # 877 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: explicit +13943: deque(size_type __n, const allocator_type& __a = allocator_type()) +13943: : _Base(__a, _S_check_init_len(__n, __a)) +13943: { _M_default_initialize(); } +13943: # 890 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: deque(size_type __n, const value_type& __value, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(__a, _S_check_init_len(__n, __a)) +13943: { _M_fill_initialize(__value); } +13943: # 917 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: deque(const deque& __x) +13943: : _Base(_Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator()), +13943: __x.size()) +13943: { std::__uninitialized_copy_a(__x.begin(), __x.end(), +13943: this->_M_impl._M_start, +13943: _M_get_Tp_allocator()); } +13943: # 933 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: deque(deque&&) = default; +13943: +13943: +13943: deque(const deque& __x, const __type_identity_t& __a) +13943: : _Base(__a, __x.size()) +13943: { std::__uninitialized_copy_a(__x.begin(), __x.end(), +13943: this->_M_impl._M_start, +13943: _M_get_Tp_allocator()); } +13943: +13943: +13943: deque(deque&& __x, const __type_identity_t& __a) +13943: : deque(std::move(__x), __a, typename _Alloc_traits::is_always_equal{}) +13943: { } +13943: +13943: private: +13943: deque(deque&& __x, const allocator_type& __a, true_type) +13943: : _Base(std::move(__x), __a) +13943: { } +13943: +13943: deque(deque&& __x, const allocator_type& __a, false_type) +13943: : _Base(std::move(__x), __a, __x.size()) +13943: { +13943: if (__x.get_allocator() != __a && !__x.empty()) +13943: { +13943: std::__uninitialized_move_a(__x.begin(), __x.end(), +13943: this->_M_impl._M_start, +13943: _M_get_Tp_allocator()); +13943: __x.clear(); +13943: } +13943: } +13943: +13943: public: +13943: # 976 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: deque(initializer_list __l, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(__a) +13943: { +13943: _M_range_initialize(__l.begin(), __l.end(), +13943: random_access_iterator_tag()); +13943: } +13943: # 1001 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template> +13943: deque(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(__a) +13943: { +13943: _M_range_initialize(__first, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: # 1027 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: ~deque() +13943: { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); } +13943: # 1039 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: deque& +13943: operator=(const deque& __x); +13943: # 1051 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: deque& +13943: operator=(deque&& __x) noexcept(_Alloc_traits::_S_always_equal()) +13943: { +13943: using __always_equal = typename _Alloc_traits::is_always_equal; +13943: _M_move_assign1(std::move(__x), __always_equal{}); +13943: return *this; +13943: } +13943: # 1070 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: deque& +13943: operator=(initializer_list __l) +13943: { +13943: _M_assign_aux(__l.begin(), __l.end(), +13943: random_access_iterator_tag()); +13943: return *this; +13943: } +13943: # 1089 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: assign(size_type __n, const value_type& __val) +13943: { _M_fill_assign(__n, __val); } +13943: # 1106 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template> +13943: void +13943: assign(_InputIterator __first, _InputIterator __last) +13943: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +13943: # 1133 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: assign(initializer_list __l) +13943: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return _Base::get_allocator(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: begin() noexcept +13943: { return this->_M_impl._M_start; } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: begin() const noexcept +13943: { return this->_M_impl._M_start; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: end() noexcept +13943: { return this->_M_impl._M_finish; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: end() const noexcept +13943: { return this->_M_impl._M_finish; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return reverse_iterator(this->_M_impl._M_finish); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(this->_M_impl._M_finish); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rend() noexcept +13943: { return reverse_iterator(this->_M_impl._M_start); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(this->_M_impl._M_start); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cbegin() const noexcept +13943: { return this->_M_impl._M_start; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cend() const noexcept +13943: { return this->_M_impl._M_finish; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crbegin() const noexcept +13943: { return const_reverse_iterator(this->_M_impl._M_finish); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crend() const noexcept +13943: { return const_reverse_iterator(this->_M_impl._M_start); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: size() const noexcept +13943: { return this->_M_impl._M_finish - this->_M_impl._M_start; } +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: max_size() const noexcept +13943: { return _S_max_size(_M_get_Tp_allocator()); } +13943: # 1287 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: resize(size_type __new_size) +13943: { +13943: const size_type __len = size(); +13943: if (__new_size > __len) +13943: _M_default_append(__new_size - __len); +13943: else if (__new_size < __len) +13943: _M_erase_at_end(this->_M_impl._M_start +13943: + difference_type(__new_size)); +13943: } +13943: # 1309 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: resize(size_type __new_size, const value_type& __x) +13943: # 1326 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: { +13943: const size_type __len = size(); +13943: if (__new_size > __len) +13943: _M_fill_insert(this->_M_impl._M_finish, __new_size - __len, __x); +13943: else if (__new_size < __len) +13943: _M_erase_at_end(this->_M_impl._M_start +13943: + difference_type(__new_size)); +13943: } +13943: +13943: +13943: +13943: void +13943: shrink_to_fit() noexcept +13943: { _M_shrink_to_fit(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return this->_M_impl._M_finish == this->_M_impl._M_start; } +13943: # 1362 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: [[__nodiscard__]] +13943: reference +13943: operator[](size_type __n) noexcept +13943: { +13943: ; +13943: return this->_M_impl._M_start[difference_type(__n)]; +13943: } +13943: # 1381 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: [[__nodiscard__]] +13943: const_reference +13943: operator[](size_type __n) const noexcept +13943: { +13943: ; +13943: return this->_M_impl._M_start[difference_type(__n)]; +13943: } +13943: +13943: protected: +13943: +13943: void +13943: _M_range_check(size_type __n) const +13943: { +13943: if (__n >= this->size()) +13943: __throw_out_of_range_fmt(("deque::_M_range_check: __n " "(which is %zu)>= this->size() " "(which is %zu)") +13943: +13943: , +13943: __n, this->size()); +13943: } +13943: +13943: public: +13943: # 1413 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: reference +13943: at(size_type __n) +13943: { +13943: _M_range_check(__n); +13943: return (*this)[__n]; +13943: } +13943: # 1431 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: const_reference +13943: at(size_type __n) const +13943: { +13943: _M_range_check(__n); +13943: return (*this)[__n]; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: front() noexcept +13943: { +13943: ; +13943: return *begin(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: front() const noexcept +13943: { +13943: ; +13943: return *begin(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: back() noexcept +13943: { +13943: ; +13943: iterator __tmp = end(); +13943: --__tmp; +13943: return *__tmp; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: back() const noexcept +13943: { +13943: ; +13943: const_iterator __tmp = end(); +13943: --__tmp; +13943: return *__tmp; +13943: } +13943: # 1500 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: push_front(const value_type& __x) +13943: { +13943: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) +13943: { +13943: _Alloc_traits::construct(this->_M_impl, +13943: this->_M_impl._M_start._M_cur - 1, +13943: __x); +13943: --this->_M_impl._M_start._M_cur; +13943: } +13943: else +13943: _M_push_front_aux(__x); +13943: } +13943: +13943: +13943: void +13943: push_front(value_type&& __x) +13943: { emplace_front(std::move(__x)); } +13943: +13943: template +13943: +13943: reference +13943: +13943: +13943: +13943: emplace_front(_Args&&... __args); +13943: # 1537 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: push_back(const value_type& __x) +13943: { +13943: if (this->_M_impl._M_finish._M_cur +13943: != this->_M_impl._M_finish._M_last - 1) +13943: { +13943: _Alloc_traits::construct(this->_M_impl, +13943: this->_M_impl._M_finish._M_cur, __x); +13943: ++this->_M_impl._M_finish._M_cur; +13943: } +13943: else +13943: _M_push_back_aux(__x); +13943: } +13943: +13943: +13943: void +13943: push_back(value_type&& __x) +13943: { emplace_back(std::move(__x)); } +13943: +13943: template +13943: +13943: reference +13943: +13943: +13943: +13943: emplace_back(_Args&&... __args); +13943: # 1573 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: pop_front() noexcept +13943: { +13943: ; +13943: if (this->_M_impl._M_start._M_cur +13943: != this->_M_impl._M_start._M_last - 1) +13943: { +13943: _Alloc_traits::destroy(_M_get_Tp_allocator(), +13943: this->_M_impl._M_start._M_cur); +13943: ++this->_M_impl._M_start._M_cur; +13943: } +13943: else +13943: _M_pop_front_aux(); +13943: } +13943: # 1596 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: pop_back() noexcept +13943: { +13943: ; +13943: if (this->_M_impl._M_finish._M_cur +13943: != this->_M_impl._M_finish._M_first) +13943: { +13943: --this->_M_impl._M_finish._M_cur; +13943: _Alloc_traits::destroy(_M_get_Tp_allocator(), +13943: this->_M_impl._M_finish._M_cur); +13943: } +13943: else +13943: _M_pop_back_aux(); +13943: } +13943: # 1621 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: iterator +13943: emplace(const_iterator __position, _Args&&... __args); +13943: # 1634 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: iterator +13943: insert(const_iterator __position, const value_type& __x); +13943: # 1660 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: iterator +13943: insert(const_iterator __position, value_type&& __x) +13943: { return emplace(__position, std::move(__x)); } +13943: # 1674 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: iterator +13943: insert(const_iterator __p, initializer_list __l) +13943: { +13943: auto __offset = __p - cbegin(); +13943: _M_range_insert_aux(__p._M_const_cast(), __l.begin(), __l.end(), +13943: std::random_access_iterator_tag()); +13943: return begin() + __offset; +13943: } +13943: # 1693 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: iterator +13943: insert(const_iterator __position, size_type __n, const value_type& __x) +13943: { +13943: difference_type __offset = __position - cbegin(); +13943: _M_fill_insert(__position._M_const_cast(), __n, __x); +13943: return begin() + __offset; +13943: } +13943: # 1727 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template> +13943: iterator +13943: insert(const_iterator __position, _InputIterator __first, +13943: _InputIterator __last) +13943: { +13943: difference_type __offset = __position - cbegin(); +13943: _M_range_insert_aux(__position._M_const_cast(), __first, __last, +13943: std::__iterator_category(__first)); +13943: return begin() + __offset; +13943: } +13943: # 1773 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: iterator +13943: +13943: erase(const_iterator __position) +13943: +13943: +13943: +13943: { return _M_erase(__position._M_const_cast()); } +13943: # 1797 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: iterator +13943: +13943: erase(const_iterator __first, const_iterator __last) +13943: +13943: +13943: +13943: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } +13943: # 1816 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: swap(deque& __x) noexcept +13943: { +13943: +13943: 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) +13943: ; +13943: +13943: _M_impl._M_swap_data(__x._M_impl); +13943: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), +13943: __x._M_get_Tp_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_erase_at_end(begin()); } +13943: +13943: protected: +13943: # 1866 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: static size_t +13943: _S_check_init_len(size_t __n, const allocator_type& __a) +13943: { +13943: if (__n > _S_max_size(__a)) +13943: __throw_length_error( +13943: ("cannot create std::deque larger than max_size()")); +13943: return __n; +13943: } +13943: +13943: static size_type +13943: _S_max_size(const _Tp_alloc_type& __a) noexcept +13943: { +13943: const size_t __diffmax = __gnu_cxx::__numeric_traits::__max; +13943: const size_t __allocmax = _Alloc_traits::max_size(__a); +13943: return (std::min)(__diffmax, __allocmax); +13943: } +13943: # 1895 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: void +13943: _M_range_initialize(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag); +13943: +13943: +13943: template +13943: void +13943: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag); +13943: # 1917 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: _M_fill_initialize(const value_type& __value); +13943: +13943: +13943: +13943: void +13943: _M_default_initialize(); +13943: # 1948 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: void +13943: _M_assign_aux(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag); +13943: +13943: +13943: template +13943: void +13943: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag) +13943: { +13943: const size_type __len = std::distance(__first, __last); +13943: if (__len > size()) +13943: { +13943: _ForwardIterator __mid = __first; +13943: std::advance(__mid, size()); +13943: std::copy(__first, __mid, begin()); +13943: _M_range_insert_aux(end(), __mid, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: else +13943: _M_erase_at_end(std::copy(__first, __last, begin())); +13943: } +13943: +13943: +13943: +13943: void +13943: _M_fill_assign(size_type __n, const value_type& __val) +13943: { +13943: if (__n > size()) +13943: { +13943: std::fill(begin(), end(), __val); +13943: _M_fill_insert(end(), __n - size(), __val); +13943: } +13943: else +13943: { +13943: _M_erase_at_end(begin() + difference_type(__n)); +13943: std::fill(begin(), end(), __val); +13943: } +13943: } +13943: # 1996 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: void _M_push_back_aux(_Args&&... __args); +13943: +13943: template +13943: void _M_push_front_aux(_Args&&... __args); +13943: +13943: +13943: void _M_pop_back_aux(); +13943: +13943: void _M_pop_front_aux(); +13943: # 2035 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: void +13943: _M_range_insert_aux(iterator __pos, _InputIterator __first, +13943: _InputIterator __last, std::input_iterator_tag); +13943: +13943: +13943: template +13943: void +13943: _M_range_insert_aux(iterator __pos, _ForwardIterator __first, +13943: _ForwardIterator __last, std::forward_iterator_tag); +13943: +13943: +13943: +13943: +13943: void +13943: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: _M_insert_aux(iterator __pos, const value_type& __x) +13943: { return _M_emplace_aux(__pos, __x); } +13943: +13943: template +13943: iterator +13943: _M_emplace_aux(iterator __pos, _Args&&... __args); +13943: +13943: +13943: +13943: void +13943: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x); +13943: +13943: +13943: template +13943: void +13943: _M_insert_aux(iterator __pos, +13943: _ForwardIterator __first, _ForwardIterator __last, +13943: size_type __n); +13943: +13943: +13943: +13943: +13943: void +13943: _M_destroy_data_aux(iterator __first, iterator __last); +13943: +13943: +13943: +13943: template +13943: void +13943: _M_destroy_data(iterator __first, iterator __last, const _Alloc1&) +13943: { _M_destroy_data_aux(__first, __last); } +13943: +13943: void +13943: _M_destroy_data(iterator __first, iterator __last, +13943: const std::allocator<_Tp>&) +13943: { +13943: if (!__has_trivial_destructor(value_type)) +13943: _M_destroy_data_aux(__first, __last); +13943: } +13943: +13943: +13943: void +13943: _M_erase_at_begin(iterator __pos) +13943: { +13943: _M_destroy_data(begin(), __pos, _M_get_Tp_allocator()); +13943: _M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node); +13943: this->_M_impl._M_start = __pos; +13943: } +13943: +13943: +13943: +13943: void +13943: _M_erase_at_end(iterator __pos) +13943: { +13943: _M_destroy_data(__pos, end(), _M_get_Tp_allocator()); +13943: _M_destroy_nodes(__pos._M_node + 1, +13943: this->_M_impl._M_finish._M_node + 1); +13943: this->_M_impl._M_finish = __pos; +13943: } +13943: +13943: iterator +13943: _M_erase(iterator __pos); +13943: +13943: iterator +13943: _M_erase(iterator __first, iterator __last); +13943: +13943: +13943: +13943: void +13943: _M_default_append(size_type __n); +13943: +13943: bool +13943: _M_shrink_to_fit(); +13943: +13943: +13943: +13943: +13943: iterator +13943: _M_reserve_elements_at_front(size_type __n) +13943: { +13943: const size_type __vacancies = this->_M_impl._M_start._M_cur +13943: - this->_M_impl._M_start._M_first; +13943: if (__n > __vacancies) +13943: _M_new_elements_at_front(__n - __vacancies); +13943: return this->_M_impl._M_start - difference_type(__n); +13943: } +13943: +13943: iterator +13943: _M_reserve_elements_at_back(size_type __n) +13943: { +13943: const size_type __vacancies = (this->_M_impl._M_finish._M_last +13943: - this->_M_impl._M_finish._M_cur) - 1; +13943: if (__n > __vacancies) +13943: _M_new_elements_at_back(__n - __vacancies); +13943: return this->_M_impl._M_finish + difference_type(__n); +13943: } +13943: +13943: void +13943: _M_new_elements_at_front(size_type __new_elements); +13943: +13943: void +13943: _M_new_elements_at_back(size_type __new_elements); +13943: # 2171 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: void +13943: _M_reserve_map_at_back(size_type __nodes_to_add = 1) +13943: { +13943: if (__nodes_to_add + 1 > this->_M_impl._M_map_size +13943: - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map)) +13943: _M_reallocate_map(__nodes_to_add, false); +13943: } +13943: +13943: void +13943: _M_reserve_map_at_front(size_type __nodes_to_add = 1) +13943: { +13943: if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node +13943: - this->_M_impl._M_map)) +13943: _M_reallocate_map(__nodes_to_add, true); +13943: } +13943: +13943: void +13943: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front); +13943: +13943: +13943: +13943: +13943: +13943: void +13943: _M_move_assign1(deque&& __x, true_type) noexcept +13943: { +13943: this->_M_impl._M_swap_data(__x._M_impl); +13943: __x.clear(); +13943: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: _M_move_assign1(deque&& __x, false_type) +13943: { +13943: if (_M_get_Tp_allocator() == __x._M_get_Tp_allocator()) +13943: return _M_move_assign1(std::move(__x), true_type()); +13943: +13943: constexpr bool __move_storage = +13943: _Alloc_traits::_S_propagate_on_move_assign(); +13943: _M_move_assign2(std::move(__x), __bool_constant<__move_storage>()); +13943: } +13943: +13943: +13943: +13943: template +13943: void +13943: _M_replace_map(_Args&&... __args) +13943: { +13943: +13943: deque __newobj(std::forward<_Args>(__args)...); +13943: +13943: clear(); +13943: _M_deallocate_node(*begin()._M_node); +13943: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +13943: this->_M_impl._M_map = nullptr; +13943: this->_M_impl._M_map_size = 0; +13943: +13943: this->_M_impl._M_swap_data(__newobj._M_impl); +13943: } +13943: +13943: +13943: void +13943: _M_move_assign2(deque&& __x, true_type) +13943: { +13943: +13943: auto __alloc = __x._M_get_Tp_allocator(); +13943: +13943: +13943: _M_replace_map(std::move(__x)); +13943: +13943: _M_get_Tp_allocator() = std::move(__alloc); +13943: } +13943: +13943: +13943: +13943: void +13943: _M_move_assign2(deque&& __x, false_type) +13943: { +13943: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) +13943: { +13943: +13943: +13943: _M_replace_map(std::move(__x), __x.get_allocator()); +13943: } +13943: else +13943: { +13943: +13943: +13943: _M_assign_aux(std::make_move_iterator(__x.begin()), +13943: std::make_move_iterator(__x.end()), +13943: std::random_access_iterator_tag()); +13943: __x.clear(); +13943: } +13943: } +13943: +13943: }; +13943: +13943: +13943: template::value_type, +13943: typename _Allocator = allocator<_ValT>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireAllocator<_Allocator>> +13943: deque(_InputIterator, _InputIterator, _Allocator = _Allocator()) +13943: -> deque<_ValT, _Allocator>; +13943: # 2291 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +13943: { return __x.size() == __y.size() +13943: && std::equal(__x.begin(), __x.end(), __y.begin()); } +13943: # 2331 "/usr/include/c++/14/bits/stl_deque.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +13943: { return std::lexicographical_compare(__x.begin(), __x.end(), +13943: __y.begin(), __y.end()); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_bitwise_relocatable> +13943: : true_type { }; +13943: +13943: +13943: +13943: } +13943: # 67 "/usr/include/c++/14/deque" 2 3 +13943: # 1 "/usr/include/c++/14/bits/refwrap.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/refwrap.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/refwrap.h" 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/invoke.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/invoke.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/invoke.h" 3 +13943: # 42 "/usr/include/c++/14/bits/invoke.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 53 "/usr/include/c++/14/bits/invoke.h" 3 +13943: template::type> +13943: constexpr _Up&& +13943: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept +13943: { return static_cast<_Up&&>(__t); } +13943: +13943: template +13943: constexpr _Res +13943: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) +13943: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } +13943: +13943: template +13943: constexpr _Res +13943: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, +13943: _Args&&... __args) +13943: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } +13943: +13943: template +13943: constexpr _Res +13943: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, +13943: _Args&&... __args) +13943: { +13943: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); +13943: } +13943: +13943: template +13943: constexpr _Res +13943: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) +13943: { return __invfwd<_Tp>(__t).*__f; } +13943: +13943: template +13943: constexpr _Res +13943: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) +13943: { return (*std::forward<_Tp>(__t)).*__f; } +13943: +13943: +13943: template +13943: constexpr typename __invoke_result<_Callable, _Args...>::type +13943: __invoke(_Callable&& __fn, _Args&&... __args) +13943: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) +13943: { +13943: using __result = __invoke_result<_Callable, _Args...>; +13943: using __type = typename __result::type; +13943: using __tag = typename __result::__invoke_type; +13943: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: +13943: template +13943: constexpr enable_if_t, _Res> +13943: __invoke_r(_Callable&& __fn, _Args&&... __args) +13943: noexcept(is_nothrow_invocable_r_v<_Res, _Callable, _Args...>) +13943: { +13943: using __result = __invoke_result<_Callable, _Args...>; +13943: using __type = typename __result::type; +13943: using __tag = typename __result::__invoke_type; +13943: if constexpr (is_void_v<_Res>) +13943: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), +13943: std::forward<_Args>(__args)...); +13943: else +13943: return std::__invoke_impl<__type>(__tag{}, +13943: std::forward<_Callable>(__fn), +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 155 "/usr/include/c++/14/bits/invoke.h" 3 +13943: +13943: } +13943: # 39 "/usr/include/c++/14/bits/refwrap.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_function.h" 1 3 +13943: # 63 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 116 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: template +13943: struct unary_function +13943: { +13943: +13943: typedef _Arg argument_type; +13943: +13943: +13943: typedef _Result result_type; +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct binary_function +13943: { +13943: +13943: typedef _Arg1 first_argument_type; +13943: +13943: +13943: typedef _Arg2 second_argument_type; +13943: +13943: +13943: typedef _Result result_type; +13943: } __attribute__ ((__deprecated__)); +13943: # 157 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: struct __is_transparent; +13943: +13943: template +13943: struct plus; +13943: +13943: template +13943: struct minus; +13943: +13943: template +13943: struct multiplies; +13943: +13943: template +13943: struct divides; +13943: +13943: template +13943: struct modulus; +13943: +13943: template +13943: struct negate; +13943: +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: template +13943: struct plus : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x + __y; } +13943: }; +13943: +13943: +13943: template +13943: struct minus : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x - __y; } +13943: }; +13943: +13943: +13943: template +13943: struct multiplies : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x * __y; } +13943: }; +13943: +13943: +13943: template +13943: struct divides : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x / __y; } +13943: }; +13943: +13943: +13943: template +13943: struct modulus : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x % __y; } +13943: }; +13943: +13943: +13943: template +13943: struct negate : public unary_function<_Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x) const +13943: { return -__x; } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: template<> +13943: struct plus +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct minus +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct multiplies +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct divides +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct modulus +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct negate +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t) const +13943: noexcept(noexcept(-std::forward<_Tp>(__t))) +13943: -> decltype(-std::forward<_Tp>(__t)) +13943: { return -std::forward<_Tp>(__t); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: # 346 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: template +13943: struct equal_to; +13943: +13943: template +13943: struct not_equal_to; +13943: +13943: template +13943: struct greater; +13943: +13943: template +13943: struct less; +13943: +13943: template +13943: struct greater_equal; +13943: +13943: template +13943: struct less_equal; +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: template +13943: struct equal_to : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x == __y; } +13943: }; +13943: +13943: +13943: template +13943: struct not_equal_to : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x != __y; } +13943: }; +13943: +13943: +13943: template +13943: struct greater : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x > __y; } +13943: }; +13943: +13943: +13943: template +13943: struct less : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x < __y; } +13943: }; +13943: +13943: +13943: template +13943: struct greater_equal : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x >= __y; } +13943: }; +13943: +13943: +13943: template +13943: struct less_equal : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x <= __y; } +13943: }; +13943: +13943: +13943: template +13943: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +13943: { +13943: constexpr bool +13943: operator()(_Tp* __x, _Tp* __y) const noexcept +13943: { +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __x > __y; +13943: +13943: return (unsigned int)__x > (unsigned int)__y; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +13943: { +13943: constexpr bool +13943: operator()(_Tp* __x, _Tp* __y) const noexcept +13943: { +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __x < __y; +13943: +13943: return (unsigned int)__x < (unsigned int)__y; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +13943: { +13943: constexpr bool +13943: operator()(_Tp* __x, _Tp* __y) const noexcept +13943: { +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __x >= __y; +13943: +13943: return (unsigned int)__x >= (unsigned int)__y; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +13943: { +13943: constexpr bool +13943: operator()(_Tp* __x, _Tp* __y) const noexcept +13943: { +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __x <= __y; +13943: +13943: return (unsigned int)__x <= (unsigned int)__y; +13943: } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: template<> +13943: struct equal_to +13943: { +13943: template +13943: constexpr auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct not_equal_to +13943: { +13943: template +13943: constexpr auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct greater +13943: { +13943: template +13943: constexpr auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) +13943: { +13943: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +13943: __ptr_cmp<_Tp, _Up>{}); +13943: } +13943: +13943: template +13943: constexpr bool +13943: operator()(_Tp* __t, _Up* __u) const noexcept +13943: { return greater>{}(__t, __u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: +13943: private: +13943: template +13943: static constexpr decltype(auto) +13943: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +13943: { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } +13943: +13943: template +13943: static constexpr bool +13943: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +13943: { +13943: return greater{}( +13943: static_cast(std::forward<_Tp>(__t)), +13943: static_cast(std::forward<_Up>(__u))); +13943: } +13943: +13943: +13943: template +13943: struct __not_overloaded2 : true_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded2<_Tp, _Up, __void_t< +13943: decltype(std::declval<_Tp>().operator>(std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +13943: +13943: +13943: template +13943: struct __not_overloaded<_Tp, _Up, __void_t< +13943: decltype(operator>(std::declval<_Tp>(), std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: template +13943: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +13943: is_convertible<_Tp, const volatile void*>, +13943: is_convertible<_Up, const volatile void*>>; +13943: }; +13943: +13943: +13943: template<> +13943: struct less +13943: { +13943: template +13943: constexpr auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) +13943: { +13943: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +13943: __ptr_cmp<_Tp, _Up>{}); +13943: } +13943: +13943: template +13943: constexpr bool +13943: operator()(_Tp* __t, _Up* __u) const noexcept +13943: { return less>{}(__t, __u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: +13943: private: +13943: template +13943: static constexpr decltype(auto) +13943: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +13943: { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } +13943: +13943: template +13943: static constexpr bool +13943: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +13943: { +13943: return less{}( +13943: static_cast(std::forward<_Tp>(__t)), +13943: static_cast(std::forward<_Up>(__u))); +13943: } +13943: +13943: +13943: template +13943: struct __not_overloaded2 : true_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded2<_Tp, _Up, __void_t< +13943: decltype(std::declval<_Tp>().operator<(std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +13943: +13943: +13943: template +13943: struct __not_overloaded<_Tp, _Up, __void_t< +13943: decltype(operator<(std::declval<_Tp>(), std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: template +13943: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +13943: is_convertible<_Tp, const volatile void*>, +13943: is_convertible<_Up, const volatile void*>>; +13943: }; +13943: +13943: +13943: template<> +13943: struct greater_equal +13943: { +13943: template +13943: constexpr auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) +13943: { +13943: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +13943: __ptr_cmp<_Tp, _Up>{}); +13943: } +13943: +13943: template +13943: constexpr bool +13943: operator()(_Tp* __t, _Up* __u) const noexcept +13943: { return greater_equal>{}(__t, __u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: +13943: private: +13943: template +13943: static constexpr decltype(auto) +13943: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +13943: { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } +13943: +13943: template +13943: static constexpr bool +13943: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +13943: { +13943: return greater_equal{}( +13943: static_cast(std::forward<_Tp>(__t)), +13943: static_cast(std::forward<_Up>(__u))); +13943: } +13943: +13943: +13943: template +13943: struct __not_overloaded2 : true_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded2<_Tp, _Up, __void_t< +13943: decltype(std::declval<_Tp>().operator>=(std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +13943: +13943: +13943: template +13943: struct __not_overloaded<_Tp, _Up, __void_t< +13943: decltype(operator>=(std::declval<_Tp>(), std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: template +13943: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +13943: is_convertible<_Tp, const volatile void*>, +13943: is_convertible<_Up, const volatile void*>>; +13943: }; +13943: +13943: +13943: template<> +13943: struct less_equal +13943: { +13943: template +13943: constexpr auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) +13943: { +13943: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +13943: __ptr_cmp<_Tp, _Up>{}); +13943: } +13943: +13943: template +13943: constexpr bool +13943: operator()(_Tp* __t, _Up* __u) const noexcept +13943: { return less_equal>{}(__t, __u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: +13943: private: +13943: template +13943: static constexpr decltype(auto) +13943: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +13943: { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } +13943: +13943: template +13943: static constexpr bool +13943: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +13943: { +13943: return less_equal{}( +13943: static_cast(std::forward<_Tp>(__t)), +13943: static_cast(std::forward<_Up>(__u))); +13943: } +13943: +13943: +13943: template +13943: struct __not_overloaded2 : true_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded2<_Tp, _Up, __void_t< +13943: decltype(std::declval<_Tp>().operator<=(std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: +13943: template +13943: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +13943: +13943: +13943: template +13943: struct __not_overloaded<_Tp, _Up, __void_t< +13943: decltype(operator<=(std::declval<_Tp>(), std::declval<_Up>()))>> +13943: : false_type { }; +13943: +13943: template +13943: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +13943: is_convertible<_Tp, const volatile void*>, +13943: is_convertible<_Up, const volatile void*>>; +13943: }; +13943: # 778 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: template +13943: struct logical_and; +13943: +13943: template +13943: struct logical_or; +13943: +13943: template +13943: struct logical_not; +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: template +13943: struct logical_and : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x && __y; } +13943: }; +13943: +13943: +13943: template +13943: struct logical_or : public binary_function<_Tp, _Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x || __y; } +13943: }; +13943: +13943: +13943: template +13943: struct logical_not : public unary_function<_Tp, bool> +13943: { +13943: constexpr +13943: bool +13943: operator()(const _Tp& __x) const +13943: { return !__x; } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: template<> +13943: struct logical_and +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct logical_or +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: template<> +13943: struct logical_not +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t) const +13943: noexcept(noexcept(!std::forward<_Tp>(__t))) +13943: -> decltype(!std::forward<_Tp>(__t)) +13943: { return !std::forward<_Tp>(__t); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct bit_and; +13943: +13943: template +13943: struct bit_or; +13943: +13943: template +13943: struct bit_xor; +13943: +13943: template +13943: struct bit_not; +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: +13943: template +13943: struct bit_and : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x & __y; } +13943: }; +13943: +13943: template +13943: struct bit_or : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x | __y; } +13943: }; +13943: +13943: template +13943: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x, const _Tp& __y) const +13943: { return __x ^ __y; } +13943: }; +13943: +13943: template +13943: struct bit_not : public unary_function<_Tp, _Tp> +13943: { +13943: constexpr +13943: _Tp +13943: operator()(const _Tp& __x) const +13943: { return ~__x; } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: template <> +13943: struct bit_and +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: template <> +13943: struct bit_or +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: template <> +13943: struct bit_xor +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t, _Up&& __u) const +13943: noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) +13943: -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) +13943: { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: template <> +13943: struct bit_not +13943: { +13943: template +13943: constexpr +13943: auto +13943: operator()(_Tp&& __t) const +13943: noexcept(noexcept(~std::forward<_Tp>(__t))) +13943: -> decltype(~std::forward<_Tp>(__t)) +13943: { return ~std::forward<_Tp>(__t); } +13943: +13943: typedef __is_transparent is_transparent; +13943: }; +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: # 1020 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: template +13943: class [[__deprecated__]] unary_negate +13943: : public unary_function +13943: { +13943: protected: +13943: _Predicate _M_pred; +13943: +13943: public: +13943: constexpr +13943: explicit +13943: unary_negate(const _Predicate& __x) : _M_pred(__x) { } +13943: +13943: constexpr +13943: bool +13943: operator()(const typename _Predicate::argument_type& __x) const +13943: { return !_M_pred(__x); } +13943: }; +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::not_fn" "' instead"))) +13943: constexpr +13943: inline unary_negate<_Predicate> +13943: not1(const _Predicate& __pred) +13943: { return unary_negate<_Predicate>(__pred); } +13943: +13943: +13943: template +13943: class [[__deprecated__]] binary_negate +13943: : public binary_function +13943: { +13943: protected: +13943: _Predicate _M_pred; +13943: +13943: public: +13943: constexpr +13943: explicit +13943: binary_negate(const _Predicate& __x) : _M_pred(__x) { } +13943: +13943: constexpr +13943: bool +13943: operator()(const typename _Predicate::first_argument_type& __x, +13943: const typename _Predicate::second_argument_type& __y) const +13943: { return !_M_pred(__x, __y); } +13943: }; +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::not_fn" "' instead"))) +13943: constexpr +13943: inline binary_negate<_Predicate> +13943: not2(const _Predicate& __pred) +13943: { return binary_negate<_Predicate>(__pred); } +13943: # 1101 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: template +13943: class pointer_to_unary_function : public unary_function<_Arg, _Result> +13943: { +13943: protected: +13943: _Result (*_M_ptr)(_Arg); +13943: +13943: public: +13943: pointer_to_unary_function() { } +13943: +13943: explicit +13943: pointer_to_unary_function(_Result (*__x)(_Arg)) +13943: : _M_ptr(__x) { } +13943: +13943: _Result +13943: operator()(_Arg __x) const +13943: { return _M_ptr(__x); } +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) +13943: inline pointer_to_unary_function<_Arg, _Result> +13943: ptr_fun(_Result (*__x)(_Arg)) +13943: { return pointer_to_unary_function<_Arg, _Result>(__x); } +13943: +13943: +13943: template +13943: class pointer_to_binary_function +13943: : public binary_function<_Arg1, _Arg2, _Result> +13943: { +13943: protected: +13943: _Result (*_M_ptr)(_Arg1, _Arg2); +13943: +13943: public: +13943: pointer_to_binary_function() { } +13943: +13943: explicit +13943: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) +13943: : _M_ptr(__x) { } +13943: +13943: _Result +13943: operator()(_Arg1 __x, _Arg2 __y) const +13943: { return _M_ptr(__x, __y); } +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) +13943: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> +13943: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) +13943: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } +13943: +13943: +13943: template +13943: struct _Identity +13943: : public unary_function<_Tp, _Tp> +13943: { +13943: _Tp& +13943: operator()(_Tp& __x) const +13943: { return __x; } +13943: +13943: const _Tp& +13943: operator()(const _Tp& __x) const +13943: { return __x; } +13943: }; +13943: +13943: +13943: template struct _Identity : _Identity<_Tp> { }; +13943: +13943: template +13943: struct _Select1st +13943: : public unary_function<_Pair, typename _Pair::first_type> +13943: { +13943: typename _Pair::first_type& +13943: operator()(_Pair& __x) const +13943: { return __x.first; } +13943: +13943: const typename _Pair::first_type& +13943: operator()(const _Pair& __x) const +13943: { return __x.first; } +13943: +13943: +13943: template +13943: typename _Pair2::first_type& +13943: operator()(_Pair2& __x) const +13943: { return __x.first; } +13943: +13943: template +13943: const typename _Pair2::first_type& +13943: operator()(const _Pair2& __x) const +13943: { return __x.first; } +13943: +13943: }; +13943: +13943: template +13943: struct _Select2nd +13943: : public unary_function<_Pair, typename _Pair::second_type> +13943: { +13943: typename _Pair::second_type& +13943: operator()(_Pair& __x) const +13943: { return __x.second; } +13943: +13943: const typename _Pair::second_type& +13943: operator()(const _Pair& __x) const +13943: { return __x.second; } +13943: }; +13943: # 1228 "/usr/include/c++/14/bits/stl_function.h" 3 +13943: template +13943: class mem_fun_t : public unary_function<_Tp*, _Ret> +13943: { +13943: public: +13943: explicit +13943: mem_fun_t(_Ret (_Tp::*__pf)()) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(_Tp* __p) const +13943: { return (__p->*_M_f)(); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)(); +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: class const_mem_fun_t : public unary_function +13943: { +13943: public: +13943: explicit +13943: const_mem_fun_t(_Ret (_Tp::*__pf)() const) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(const _Tp* __p) const +13943: { return (__p->*_M_f)(); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)() const; +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: class mem_fun_ref_t : public unary_function<_Tp, _Ret> +13943: { +13943: public: +13943: explicit +13943: mem_fun_ref_t(_Ret (_Tp::*__pf)()) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(_Tp& __r) const +13943: { return (__r.*_M_f)(); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)(); +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> +13943: { +13943: public: +13943: explicit +13943: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(const _Tp& __r) const +13943: { return (__r.*_M_f)(); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)() const; +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> +13943: { +13943: public: +13943: explicit +13943: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(_Tp* __p, _Arg __x) const +13943: { return (__p->*_M_f)(__x); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)(_Arg); +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: class const_mem_fun1_t : public binary_function +13943: { +13943: public: +13943: explicit +13943: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(const _Tp* __p, _Arg __x) const +13943: { return (__p->*_M_f)(__x); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)(_Arg) const; +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> +13943: { +13943: public: +13943: explicit +13943: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(_Tp& __r, _Arg __x) const +13943: { return (__r.*_M_f)(__x); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)(_Arg); +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: template +13943: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> +13943: { +13943: public: +13943: explicit +13943: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) +13943: : _M_f(__pf) { } +13943: +13943: _Ret +13943: operator()(const _Tp& __r, _Arg __x) const +13943: { return (__r.*_M_f)(__x); } +13943: +13943: private: +13943: _Ret (_Tp::*_M_f)(_Arg) const; +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline mem_fun_t<_Ret, _Tp> +13943: mem_fun(_Ret (_Tp::*__f)()) +13943: { return mem_fun_t<_Ret, _Tp>(__f); } +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline const_mem_fun_t<_Ret, _Tp> +13943: mem_fun(_Ret (_Tp::*__f)() const) +13943: { return const_mem_fun_t<_Ret, _Tp>(__f); } +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline mem_fun_ref_t<_Ret, _Tp> +13943: mem_fun_ref(_Ret (_Tp::*__f)()) +13943: { return mem_fun_ref_t<_Ret, _Tp>(__f); } +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline const_mem_fun_ref_t<_Ret, _Tp> +13943: mem_fun_ref(_Ret (_Tp::*__f)() const) +13943: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline mem_fun1_t<_Ret, _Tp, _Arg> +13943: mem_fun(_Ret (_Tp::*__f)(_Arg)) +13943: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline const_mem_fun1_t<_Ret, _Tp, _Arg> +13943: mem_fun(_Ret (_Tp::*__f)(_Arg) const) +13943: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> +13943: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) +13943: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +13943: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> +13943: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) +13943: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: template> +13943: struct __has_is_transparent +13943: { }; +13943: +13943: template +13943: struct __has_is_transparent<_Func, _SfinaeType, +13943: __void_t> +13943: { typedef void type; }; +13943: +13943: template +13943: using __has_is_transparent_t +13943: = typename __has_is_transparent<_Func, _SfinaeType>::type; +13943: +13943: +13943: +13943: } +13943: +13943: +13943: # 1 "/usr/include/c++/14/backward/binders.h" 1 3 +13943: # 60 "/usr/include/c++/14/backward/binders.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 107 "/usr/include/c++/14/backward/binders.h" 3 +13943: template +13943: class binder1st +13943: : public unary_function +13943: { +13943: protected: +13943: _Operation op; +13943: typename _Operation::first_argument_type value; +13943: +13943: public: +13943: binder1st(const _Operation& __x, +13943: const typename _Operation::first_argument_type& __y) +13943: : op(__x), value(__y) { } +13943: +13943: typename _Operation::result_type +13943: operator()(const typename _Operation::second_argument_type& __x) const +13943: { return op(value, __x); } +13943: +13943: +13943: +13943: typename _Operation::result_type +13943: operator()(typename _Operation::second_argument_type& __x) const +13943: { return op(value, __x); } +13943: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) +13943: inline binder1st<_Operation> +13943: bind1st(const _Operation& __fn, const _Tp& __x) +13943: { +13943: typedef typename _Operation::first_argument_type _Arg1_type; +13943: return binder1st<_Operation>(__fn, _Arg1_type(__x)); +13943: } +13943: +13943: +13943: template +13943: class binder2nd +13943: : public unary_function +13943: { +13943: protected: +13943: _Operation op; +13943: typename _Operation::second_argument_type value; +13943: +13943: public: +13943: binder2nd(const _Operation& __x, +13943: const typename _Operation::second_argument_type& __y) +13943: : op(__x), value(__y) { } +13943: +13943: typename _Operation::result_type +13943: operator()(const typename _Operation::first_argument_type& __x) const +13943: { return op(__x, value); } +13943: +13943: +13943: +13943: typename _Operation::result_type +13943: operator()(typename _Operation::first_argument_type& __x) const +13943: { return op(__x, value); } +13943: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) +13943: inline binder2nd<_Operation> +13943: bind2nd(const _Operation& __fn, const _Tp& __x) +13943: { +13943: typedef typename _Operation::second_argument_type _Arg2_type; +13943: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); +13943: } +13943: +13943: +13943: +13943: } +13943: +13943: #pragma GCC diagnostic pop +13943: # 1436 "/usr/include/c++/14/bits/stl_function.h" 2 3 +13943: # 40 "/usr/include/c++/14/bits/refwrap.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 56 "/usr/include/c++/14/bits/refwrap.h" 3 +13943: template +13943: struct _Maybe_unary_or_binary_function { }; +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: template +13943: struct _Maybe_unary_or_binary_function<_Res, _T1> +13943: : std::unary_function<_T1, _Res> { }; +13943: +13943: +13943: template +13943: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> +13943: : std::binary_function<_T1, _T2, _Res> { }; +13943: +13943: #pragma GCC diagnostic pop +13943: +13943: template +13943: struct _Mem_fn_traits; +13943: +13943: template +13943: struct _Mem_fn_traits_base +13943: { +13943: using __result_type = _Res; +13943: using __maybe_type +13943: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; +13943: using __arity = integral_constant; +13943: }; +13943: # 107 "/usr/include/c++/14/bits/refwrap.h" 3 +13943: 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; }; +13943: 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; }; +13943: 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; }; +13943: +13943: +13943: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; +13943: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; +13943: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: struct _Maybe_get_result_type +13943: { }; +13943: +13943: template +13943: struct _Maybe_get_result_type<_Functor, +13943: __void_t> +13943: { typedef typename _Functor::result_type result_type; }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Weak_result_type_impl +13943: : _Maybe_get_result_type<_Functor> +13943: { }; +13943: +13943: +13943: template +13943: struct _Weak_result_type_impl<_Res(_ArgTypes...) noexcept (_NE)> +13943: { typedef _Res result_type; }; +13943: +13943: +13943: template +13943: struct _Weak_result_type_impl<_Res(_ArgTypes......) noexcept (_NE)> +13943: { typedef _Res result_type; }; +13943: +13943: +13943: template +13943: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) noexcept (_NE)> +13943: { typedef _Res result_type; }; +13943: +13943: +13943: template +13943: struct +13943: _Weak_result_type_impl<_Res(*)(_ArgTypes......) noexcept (_NE)> +13943: { typedef _Res result_type; }; +13943: +13943: +13943: template::value> +13943: struct _Weak_result_type_memfun +13943: : _Weak_result_type_impl<_Functor> +13943: { }; +13943: +13943: +13943: template +13943: struct _Weak_result_type_memfun<_MemFunPtr, true> +13943: { +13943: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; +13943: }; +13943: +13943: +13943: template +13943: struct _Weak_result_type_memfun<_Func _Class::*, false> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Weak_result_type +13943: : _Weak_result_type_memfun::type> +13943: { }; +13943: +13943: +13943: +13943: template> +13943: struct _Refwrap_base_arg1 +13943: { }; +13943: +13943: +13943: template +13943: struct _Refwrap_base_arg1<_Tp, +13943: __void_t> +13943: { +13943: typedef typename _Tp::argument_type argument_type; +13943: }; +13943: +13943: +13943: template> +13943: struct _Refwrap_base_arg2 +13943: { }; +13943: +13943: +13943: template +13943: struct _Refwrap_base_arg2<_Tp, +13943: __void_t> +13943: { +13943: typedef typename _Tp::first_argument_type first_argument_type; +13943: typedef typename _Tp::second_argument_type second_argument_type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Reference_wrapper_base +13943: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> +13943: { }; +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1) noexcept (_NE)> +13943: : unary_function<_T1, _Res> +13943: { }; +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1) const> +13943: : unary_function<_T1, _Res> +13943: { }; +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1) volatile> +13943: : unary_function<_T1, _Res> +13943: { }; +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1) const volatile> +13943: : unary_function<_T1, _Res> +13943: { }; +13943: +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1, _T2) noexcept (_NE)> +13943: : binary_function<_T1, _T2, _Res> +13943: { }; +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1, _T2) const> +13943: : binary_function<_T1, _T2, _Res> +13943: { }; +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> +13943: : binary_function<_T1, _T2, _Res> +13943: { }; +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> +13943: : binary_function<_T1, _T2, _Res> +13943: { }; +13943: +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(*)(_T1) noexcept (_NE)> +13943: : unary_function<_T1, _Res> +13943: { }; +13943: +13943: +13943: template +13943: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) noexcept (_NE)> +13943: : binary_function<_T1, _T2, _Res> +13943: { }; +13943: +13943: template::value> +13943: struct _Reference_wrapper_base_memfun +13943: : _Reference_wrapper_base<_Tp> +13943: { }; +13943: +13943: template +13943: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> +13943: : _Mem_fn_traits<_MemFunPtr>::__maybe_type +13943: { +13943: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; +13943: }; +13943: #pragma GCC diagnostic pop +13943: # 306 "/usr/include/c++/14/bits/refwrap.h" 3 +13943: template +13943: class reference_wrapper +13943: +13943: +13943: +13943: : public _Reference_wrapper_base_memfun::type> +13943: +13943: { +13943: _Tp* _M_data; +13943: +13943: +13943: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } +13943: +13943: static void _S_fun(_Tp&&) = delete; +13943: +13943: template> +13943: using __not_same +13943: = typename enable_if::value>::type; +13943: +13943: public: +13943: typedef _Tp type; +13943: +13943: +13943: +13943: +13943: template, typename +13943: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> +13943: +13943: reference_wrapper(_Up&& __uref) +13943: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) +13943: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) +13943: { } +13943: +13943: reference_wrapper(const reference_wrapper&) = default; +13943: +13943: reference_wrapper& +13943: operator=(const reference_wrapper&) = default; +13943: +13943: +13943: operator _Tp&() const noexcept +13943: { return this->get(); } +13943: +13943: +13943: _Tp& +13943: get() const noexcept +13943: { return *_M_data; } +13943: +13943: template +13943: +13943: typename __invoke_result<_Tp&, _Args...>::type +13943: operator()(_Args&&... __args) const +13943: noexcept(__is_nothrow_invocable<_Tp&, _Args...>::value) +13943: { +13943: +13943: +13943: +13943: +13943: return std::__invoke(get(), std::forward<_Args>(__args)...); +13943: } +13943: # 412 "/usr/include/c++/14/bits/refwrap.h" 3 +13943: }; +13943: +13943: +13943: template +13943: reference_wrapper(_Tp&) -> reference_wrapper<_Tp>; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline reference_wrapper<_Tp> +13943: ref(_Tp& __t) noexcept +13943: { return reference_wrapper<_Tp>(__t); } +13943: +13943: +13943: template +13943: +13943: inline reference_wrapper +13943: cref(const _Tp& __t) noexcept +13943: { return reference_wrapper(__t); } +13943: +13943: template +13943: void ref(const _Tp&&) = delete; +13943: +13943: template +13943: void cref(const _Tp&&) = delete; +13943: +13943: +13943: template +13943: +13943: inline reference_wrapper<_Tp> +13943: ref(reference_wrapper<_Tp> __t) noexcept +13943: { return __t; } +13943: +13943: +13943: template +13943: +13943: inline reference_wrapper +13943: cref(reference_wrapper<_Tp> __t) noexcept +13943: { return { __t.get() }; } +13943: +13943: +13943: +13943: +13943: } +13943: # 68 "/usr/include/c++/14/deque" 2 3 +13943: # 1 "/usr/include/c++/14/bits/range_access.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/range_access.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/range_access.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: begin(_Container& __cont) -> decltype(__cont.begin()) +13943: { return __cont.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: begin(const _Container& __cont) -> decltype(__cont.begin()) +13943: { return __cont.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: end(_Container& __cont) -> decltype(__cont.end()) +13943: { return __cont.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: end(const _Container& __cont) -> decltype(__cont.end()) +13943: { return __cont.end(); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr _Tp* +13943: begin(_Tp (&__arr)[_Nm]) noexcept +13943: { return __arr; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr _Tp* +13943: end(_Tp (&__arr)[_Nm]) noexcept +13943: { return __arr + _Nm; } +13943: +13943: +13943: +13943: template class valarray; +13943: +13943: template _Tp* begin(valarray<_Tp>&) noexcept; +13943: template const _Tp* begin(const valarray<_Tp>&) noexcept; +13943: template _Tp* end(valarray<_Tp>&) noexcept; +13943: template const _Tp* end(const valarray<_Tp>&) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: constexpr auto +13943: cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) +13943: -> decltype(std::begin(__cont)) +13943: { return std::begin(__cont); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: constexpr auto +13943: cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) +13943: -> decltype(std::end(__cont)) +13943: { return std::end(__cont); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: rbegin(_Container& __cont) -> decltype(__cont.rbegin()) +13943: { return __cont.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) +13943: { return __cont.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: rend(_Container& __cont) -> decltype(__cont.rend()) +13943: { return __cont.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: rend(const _Container& __cont) -> decltype(__cont.rend()) +13943: { return __cont.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr reverse_iterator<_Tp*> +13943: rbegin(_Tp (&__arr)[_Nm]) noexcept +13943: { return reverse_iterator<_Tp*>(__arr + _Nm); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr reverse_iterator<_Tp*> +13943: rend(_Tp (&__arr)[_Nm]) noexcept +13943: { return reverse_iterator<_Tp*>(__arr); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr reverse_iterator +13943: rbegin(initializer_list<_Tp> __il) noexcept +13943: { return reverse_iterator(__il.end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline constexpr reverse_iterator +13943: rend(initializer_list<_Tp> __il) noexcept +13943: { return reverse_iterator(__il.begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) +13943: { return std::rbegin(__cont); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__, __gnu__::__always_inline__]] +13943: inline constexpr auto +13943: crend(const _Container& __cont) -> decltype(std::rend(__cont)) +13943: { return std::rend(__cont); } +13943: # 259 "/usr/include/c++/14/bits/range_access.h" 3 +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr auto +13943: size(const _Container& __cont) noexcept(noexcept(__cont.size())) +13943: -> decltype(__cont.size()) +13943: { return __cont.size(); } +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr size_t +13943: size(const _Tp (&)[_Nm]) noexcept +13943: { return _Nm; } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr auto +13943: empty(const _Container& __cont) noexcept(noexcept(__cont.empty())) +13943: -> decltype(__cont.empty()) +13943: { return __cont.empty(); } +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr bool +13943: empty(const _Tp (&)[_Nm]) noexcept +13943: { return false; } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr bool +13943: empty(initializer_list<_Tp> __il) noexcept +13943: { return __il.size() == 0;} +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr auto +13943: data(_Container& __cont) noexcept(noexcept(__cont.data())) +13943: -> decltype(__cont.data()) +13943: { return __cont.data(); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr auto +13943: data(const _Container& __cont) noexcept(noexcept(__cont.data())) +13943: -> decltype(__cont.data()) +13943: { return __cont.data(); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr _Tp* +13943: data(_Tp (&__array)[_Nm]) noexcept +13943: { return __array; } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard, __gnu__::__always_inline__]] +13943: constexpr const _Tp* +13943: data(initializer_list<_Tp> __il) noexcept +13943: { return __il.begin(); } +13943: # 366 "/usr/include/c++/14/bits/range_access.h" 3 +13943: +13943: } +13943: # 69 "/usr/include/c++/14/deque" 2 3 +13943: # 1 "/usr/include/c++/14/bits/deque.tcc" 1 3 +13943: # 61 "/usr/include/c++/14/bits/deque.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_default_initialize() +13943: { +13943: _Map_pointer __cur; +13943: try +13943: { +13943: for (__cur = this->_M_impl._M_start._M_node; +13943: __cur < this->_M_impl._M_finish._M_node; +13943: ++__cur) +13943: std::__uninitialized_default_a(*__cur, *__cur + _S_buffer_size(), +13943: _M_get_Tp_allocator()); +13943: std::__uninitialized_default_a(this->_M_impl._M_finish._M_first, +13943: this->_M_impl._M_finish._M_cur, +13943: _M_get_Tp_allocator()); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), +13943: _M_get_Tp_allocator()); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: deque<_Tp, _Alloc>& +13943: deque<_Tp, _Alloc>:: +13943: operator=(const deque& __x) +13943: { +13943: if (std::__addressof(__x) != this) +13943: { +13943: +13943: if (_Alloc_traits::_S_propagate_on_copy_assign()) +13943: { +13943: if (!_Alloc_traits::_S_always_equal() +13943: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) +13943: { +13943: +13943: +13943: _M_replace_map(__x, __x.get_allocator()); +13943: std::__alloc_on_copy(_M_get_Tp_allocator(), +13943: __x._M_get_Tp_allocator()); +13943: return *this; +13943: } +13943: std::__alloc_on_copy(_M_get_Tp_allocator(), +13943: __x._M_get_Tp_allocator()); +13943: } +13943: +13943: const size_type __len = size(); +13943: if (__len >= __x.size()) +13943: _M_erase_at_end(std::copy(__x.begin(), __x.end(), +13943: this->_M_impl._M_start)); +13943: else +13943: { +13943: const_iterator __mid = __x.begin() + difference_type(__len); +13943: std::copy(__x.begin(), __mid, this->_M_impl._M_start); +13943: _M_range_insert_aux(this->_M_impl._M_finish, __mid, __x.end(), +13943: std::random_access_iterator_tag()); +13943: } +13943: } +13943: return *this; +13943: } +13943: +13943: +13943: template +13943: template +13943: +13943: typename deque<_Tp, _Alloc>::reference +13943: +13943: +13943: +13943: deque<_Tp, _Alloc>:: +13943: emplace_front(_Args&&... __args) +13943: { +13943: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) +13943: { +13943: _Alloc_traits::construct(this->_M_impl, +13943: this->_M_impl._M_start._M_cur - 1, +13943: std::forward<_Args>(__args)...); +13943: --this->_M_impl._M_start._M_cur; +13943: } +13943: else +13943: _M_push_front_aux(std::forward<_Args>(__args)...); +13943: +13943: return front(); +13943: +13943: } +13943: +13943: template +13943: template +13943: +13943: typename deque<_Tp, _Alloc>::reference +13943: +13943: +13943: +13943: deque<_Tp, _Alloc>:: +13943: emplace_back(_Args&&... __args) +13943: { +13943: if (this->_M_impl._M_finish._M_cur +13943: != this->_M_impl._M_finish._M_last - 1) +13943: { +13943: _Alloc_traits::construct(this->_M_impl, +13943: this->_M_impl._M_finish._M_cur, +13943: std::forward<_Args>(__args)...); +13943: ++this->_M_impl._M_finish._M_cur; +13943: } +13943: else +13943: _M_push_back_aux(std::forward<_Args>(__args)...); +13943: +13943: return back(); +13943: +13943: } +13943: +13943: +13943: +13943: template +13943: template +13943: typename deque<_Tp, _Alloc>::iterator +13943: deque<_Tp, _Alloc>:: +13943: emplace(const_iterator __position, _Args&&... __args) +13943: { +13943: if (__position._M_cur == this->_M_impl._M_start._M_cur) +13943: { +13943: emplace_front(std::forward<_Args>(__args)...); +13943: return this->_M_impl._M_start; +13943: } +13943: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) +13943: { +13943: emplace_back(std::forward<_Args>(__args)...); +13943: iterator __tmp = this->_M_impl._M_finish; +13943: --__tmp; +13943: return __tmp; +13943: } +13943: else +13943: return _M_emplace_aux(__position._M_const_cast(), +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: template +13943: typename deque<_Tp, _Alloc>::iterator +13943: deque<_Tp, _Alloc>:: +13943: +13943: insert(const_iterator __position, const value_type& __x) +13943: +13943: +13943: +13943: { +13943: if (__position._M_cur == this->_M_impl._M_start._M_cur) +13943: { +13943: push_front(__x); +13943: return this->_M_impl._M_start; +13943: } +13943: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) +13943: { +13943: push_back(__x); +13943: iterator __tmp = this->_M_impl._M_finish; +13943: --__tmp; +13943: return __tmp; +13943: } +13943: else +13943: return _M_insert_aux(__position._M_const_cast(), __x); +13943: } +13943: +13943: template +13943: typename deque<_Tp, _Alloc>::iterator +13943: deque<_Tp, _Alloc>:: +13943: _M_erase(iterator __position) +13943: { +13943: iterator __next = __position; +13943: ++__next; +13943: const difference_type __index = __position - begin(); +13943: if (static_cast(__index) < (size() >> 1)) +13943: { +13943: if (__position != begin()) +13943: std::move_backward(begin(), __position, __next); +13943: pop_front(); +13943: } +13943: else +13943: { +13943: if (__next != end()) +13943: std::move(__next, end(), __position); +13943: pop_back(); +13943: } +13943: return begin() + __index; +13943: } +13943: +13943: template +13943: typename deque<_Tp, _Alloc>::iterator +13943: deque<_Tp, _Alloc>:: +13943: _M_erase(iterator __first, iterator __last) +13943: { +13943: if (__first == __last) +13943: return __first; +13943: else if (__first == begin() && __last == end()) +13943: { +13943: clear(); +13943: return end(); +13943: } +13943: else +13943: { +13943: const difference_type __n = __last - __first; +13943: const difference_type __elems_before = __first - begin(); +13943: if (static_cast(__elems_before) <= (size() - __n) / 2) +13943: { +13943: if (__first != begin()) +13943: std::move_backward(begin(), __first, __last); +13943: _M_erase_at_begin(begin() + __n); +13943: } +13943: else +13943: { +13943: if (__last != end()) +13943: std::move(__last, end(), __first); +13943: _M_erase_at_end(end() - __n); +13943: } +13943: return begin() + __elems_before; +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_assign_aux(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag) +13943: { +13943: iterator __cur = begin(); +13943: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) +13943: *__cur = *__first; +13943: if (__first == __last) +13943: _M_erase_at_end(__cur); +13943: else +13943: _M_range_insert_aux(end(), __first, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) +13943: { +13943: if (__pos._M_cur == this->_M_impl._M_start._M_cur) +13943: { +13943: iterator __new_start = _M_reserve_elements_at_front(__n); +13943: try +13943: { +13943: std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start, +13943: __x, _M_get_Tp_allocator()); +13943: this->_M_impl._M_start = __new_start; +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(__new_start._M_node, +13943: this->_M_impl._M_start._M_node); +13943: throw; +13943: } +13943: } +13943: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) +13943: { +13943: iterator __new_finish = _M_reserve_elements_at_back(__n); +13943: try +13943: { +13943: std::__uninitialized_fill_a(this->_M_impl._M_finish, +13943: __new_finish, __x, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __new_finish; +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +13943: __new_finish._M_node + 1); +13943: throw; +13943: } +13943: } +13943: else +13943: _M_insert_aux(__pos, __n, __x); +13943: } +13943: +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_default_append(size_type __n) +13943: { +13943: if (__n) +13943: { +13943: iterator __new_finish = _M_reserve_elements_at_back(__n); +13943: try +13943: { +13943: std::__uninitialized_default_a(this->_M_impl._M_finish, +13943: __new_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __new_finish; +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +13943: __new_finish._M_node + 1); +13943: throw; +13943: } +13943: } +13943: } +13943: +13943: template +13943: bool +13943: deque<_Tp, _Alloc>:: +13943: _M_shrink_to_fit() +13943: { +13943: const difference_type __front_capacity +13943: = (this->_M_impl._M_start._M_cur - this->_M_impl._M_start._M_first); +13943: if (__front_capacity == 0) +13943: return false; +13943: +13943: const difference_type __back_capacity +13943: = (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur); +13943: if (__front_capacity + __back_capacity < _S_buffer_size()) +13943: return false; +13943: +13943: return std::__shrink_to_fit_aux::_S_do_it(*this); +13943: } +13943: +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_fill_initialize(const value_type& __value) +13943: { +13943: _Map_pointer __cur; +13943: try +13943: { +13943: for (__cur = this->_M_impl._M_start._M_node; +13943: __cur < this->_M_impl._M_finish._M_node; +13943: ++__cur) +13943: std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(), +13943: __value, _M_get_Tp_allocator()); +13943: std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first, +13943: this->_M_impl._M_finish._M_cur, +13943: __value, _M_get_Tp_allocator()); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), +13943: _M_get_Tp_allocator()); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_range_initialize(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag) +13943: { +13943: this->_M_initialize_map(0); +13943: try +13943: { +13943: for (; __first != __last; ++__first) +13943: +13943: emplace_back(*__first); +13943: +13943: +13943: +13943: } +13943: catch(...) +13943: { +13943: clear(); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag) +13943: { +13943: const size_type __n = std::distance(__first, __last); +13943: this->_M_initialize_map(_S_check_init_len(__n, _M_get_Tp_allocator())); +13943: +13943: _Map_pointer __cur_node; +13943: try +13943: { +13943: for (__cur_node = this->_M_impl._M_start._M_node; +13943: __cur_node < this->_M_impl._M_finish._M_node; +13943: ++__cur_node) +13943: { +13943: if (__n < _S_buffer_size()) +13943: __builtin_unreachable(); +13943: +13943: _ForwardIterator __mid = __first; +13943: std::advance(__mid, _S_buffer_size()); +13943: std::__uninitialized_copy_a(__first, __mid, *__cur_node, +13943: _M_get_Tp_allocator()); +13943: __first = __mid; +13943: } +13943: std::__uninitialized_copy_a(__first, __last, +13943: this->_M_impl._M_finish._M_first, +13943: _M_get_Tp_allocator()); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(this->_M_impl._M_start, +13943: iterator(*__cur_node, __cur_node), +13943: _M_get_Tp_allocator()); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_push_back_aux(_Args&&... __args) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: if (size() == max_size()) +13943: __throw_length_error( +13943: ("cannot create std::deque larger than max_size()")); +13943: +13943: _M_reserve_map_at_back(); +13943: *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); +13943: try +13943: { +13943: +13943: _Alloc_traits::construct(this->_M_impl, +13943: this->_M_impl._M_finish._M_cur, +13943: std::forward<_Args>(__args)...); +13943: +13943: +13943: +13943: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node +13943: + 1); +13943: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first; +13943: } +13943: catch(...) +13943: { +13943: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1)); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_push_front_aux(_Args&&... __args) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: if (size() == max_size()) +13943: __throw_length_error( +13943: ("cannot create std::deque larger than max_size()")); +13943: +13943: _M_reserve_map_at_front(); +13943: *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node(); +13943: try +13943: { +13943: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node +13943: - 1); +13943: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1; +13943: +13943: _Alloc_traits::construct(this->_M_impl, +13943: this->_M_impl._M_start._M_cur, +13943: std::forward<_Args>(__args)...); +13943: +13943: +13943: +13943: } +13943: catch(...) +13943: { +13943: ++this->_M_impl._M_start; +13943: _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1)); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: void deque<_Tp, _Alloc>:: +13943: _M_pop_back_aux() +13943: { +13943: _M_deallocate_node(this->_M_impl._M_finish._M_first); +13943: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1); +13943: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1; +13943: _Alloc_traits::destroy(_M_get_Tp_allocator(), +13943: this->_M_impl._M_finish._M_cur); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: void deque<_Tp, _Alloc>:: +13943: _M_pop_front_aux() +13943: { +13943: _Alloc_traits::destroy(_M_get_Tp_allocator(), +13943: this->_M_impl._M_start._M_cur); +13943: _M_deallocate_node(this->_M_impl._M_start._M_first); +13943: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1); +13943: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first; +13943: } +13943: +13943: template +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_range_insert_aux(iterator __pos, +13943: _InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag) +13943: { std::copy(__first, __last, std::inserter(*this, __pos)); } +13943: +13943: template +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_range_insert_aux(iterator __pos, +13943: _ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag) +13943: { +13943: const size_type __n = std::distance(__first, __last); +13943: if (__builtin_expect(__n == 0, 0)) +13943: return; +13943: +13943: if (__pos._M_cur == this->_M_impl._M_start._M_cur) +13943: { +13943: iterator __new_start = _M_reserve_elements_at_front(__n); +13943: try +13943: { +13943: std::__uninitialized_copy_a(__first, __last, __new_start, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_start = __new_start; +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(__new_start._M_node, +13943: this->_M_impl._M_start._M_node); +13943: throw; +13943: } +13943: } +13943: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) +13943: { +13943: iterator __new_finish = _M_reserve_elements_at_back(__n); +13943: try +13943: { +13943: std::__uninitialized_copy_a(__first, __last, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __new_finish; +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +13943: __new_finish._M_node + 1); +13943: throw; +13943: } +13943: } +13943: else +13943: _M_insert_aux(__pos, __first, __last, __n); +13943: } +13943: +13943: template +13943: +13943: template +13943: typename deque<_Tp, _Alloc>::iterator +13943: deque<_Tp, _Alloc>:: +13943: _M_emplace_aux(iterator __pos, _Args&&... __args) +13943: { +13943: value_type __x_copy(std::forward<_Args>(__args)...); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: difference_type __index = __pos - this->_M_impl._M_start; +13943: if (static_cast(__index) < size() / 2) +13943: { +13943: push_front(std::move(front())); +13943: iterator __front1 = this->_M_impl._M_start; +13943: ++__front1; +13943: iterator __front2 = __front1; +13943: ++__front2; +13943: __pos = this->_M_impl._M_start + __index; +13943: iterator __pos1 = __pos; +13943: ++__pos1; +13943: std::move(__front2, __pos1, __front1); +13943: } +13943: else +13943: { +13943: push_back(std::move(back())); +13943: iterator __back1 = this->_M_impl._M_finish; +13943: --__back1; +13943: iterator __back2 = __back1; +13943: --__back2; +13943: __pos = this->_M_impl._M_start + __index; +13943: std::move_backward(__pos, __back2, __back1); +13943: } +13943: *__pos = std::move(__x_copy); +13943: return __pos; +13943: } +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x) +13943: { +13943: const difference_type __elems_before = __pos - this->_M_impl._M_start; +13943: const size_type __length = this->size(); +13943: value_type __x_copy = __x; +13943: if (__elems_before < difference_type(__length / 2)) +13943: { +13943: iterator __new_start = _M_reserve_elements_at_front(__n); +13943: iterator __old_start = this->_M_impl._M_start; +13943: __pos = this->_M_impl._M_start + __elems_before; +13943: try +13943: { +13943: if (__elems_before >= difference_type(__n)) +13943: { +13943: iterator __start_n = (this->_M_impl._M_start +13943: + difference_type(__n)); +13943: std::__uninitialized_move_a(this->_M_impl._M_start, +13943: __start_n, __new_start, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_start = __new_start; +13943: std::move(__start_n, __pos, __old_start); +13943: std::fill(__pos - difference_type(__n), __pos, __x_copy); +13943: } +13943: else +13943: { +13943: std::__uninitialized_move_fill(this->_M_impl._M_start, +13943: __pos, __new_start, +13943: this->_M_impl._M_start, +13943: __x_copy, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_start = __new_start; +13943: std::fill(__old_start, __pos, __x_copy); +13943: } +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(__new_start._M_node, +13943: this->_M_impl._M_start._M_node); +13943: throw; +13943: } +13943: } +13943: else +13943: { +13943: iterator __new_finish = _M_reserve_elements_at_back(__n); +13943: iterator __old_finish = this->_M_impl._M_finish; +13943: const difference_type __elems_after = +13943: difference_type(__length) - __elems_before; +13943: __pos = this->_M_impl._M_finish - __elems_after; +13943: try +13943: { +13943: if (__elems_after > difference_type(__n)) +13943: { +13943: iterator __finish_n = (this->_M_impl._M_finish +13943: - difference_type(__n)); +13943: std::__uninitialized_move_a(__finish_n, +13943: this->_M_impl._M_finish, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __new_finish; +13943: std::move_backward(__pos, __finish_n, __old_finish); +13943: std::fill(__pos, __pos + difference_type(__n), __x_copy); +13943: } +13943: else +13943: { +13943: std::__uninitialized_fill_move(this->_M_impl._M_finish, +13943: __pos + difference_type(__n), +13943: __x_copy, __pos, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __new_finish; +13943: std::fill(__pos, __old_finish, __x_copy); +13943: } +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +13943: __new_finish._M_node + 1); +13943: throw; +13943: } +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_insert_aux(iterator __pos, +13943: _ForwardIterator __first, _ForwardIterator __last, +13943: size_type __n) +13943: { +13943: const difference_type __elemsbefore = __pos - this->_M_impl._M_start; +13943: const size_type __length = size(); +13943: if (static_cast(__elemsbefore) < __length / 2) +13943: { +13943: iterator __new_start = _M_reserve_elements_at_front(__n); +13943: iterator __old_start = this->_M_impl._M_start; +13943: __pos = this->_M_impl._M_start + __elemsbefore; +13943: try +13943: { +13943: if (__elemsbefore >= difference_type(__n)) +13943: { +13943: iterator __start_n = (this->_M_impl._M_start +13943: + difference_type(__n)); +13943: std::__uninitialized_move_a(this->_M_impl._M_start, +13943: __start_n, __new_start, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_start = __new_start; +13943: std::move(__start_n, __pos, __old_start); +13943: std::copy(__first, __last, __pos - difference_type(__n)); +13943: } +13943: else +13943: { +13943: _ForwardIterator __mid = __first; +13943: std::advance(__mid, difference_type(__n) - __elemsbefore); +13943: std::__uninitialized_move_copy(this->_M_impl._M_start, +13943: __pos, __first, __mid, +13943: __new_start, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_start = __new_start; +13943: std::copy(__mid, __last, __old_start); +13943: } +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(__new_start._M_node, +13943: this->_M_impl._M_start._M_node); +13943: throw; +13943: } +13943: } +13943: else +13943: { +13943: iterator __new_finish = _M_reserve_elements_at_back(__n); +13943: iterator __old_finish = this->_M_impl._M_finish; +13943: const difference_type __elemsafter = +13943: difference_type(__length) - __elemsbefore; +13943: __pos = this->_M_impl._M_finish - __elemsafter; +13943: try +13943: { +13943: if (__elemsafter > difference_type(__n)) +13943: { +13943: iterator __finish_n = (this->_M_impl._M_finish +13943: - difference_type(__n)); +13943: std::__uninitialized_move_a(__finish_n, +13943: this->_M_impl._M_finish, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __new_finish; +13943: std::move_backward(__pos, __finish_n, __old_finish); +13943: std::copy(__first, __last, __pos); +13943: } +13943: else +13943: { +13943: _ForwardIterator __mid = __first; +13943: std::advance(__mid, __elemsafter); +13943: std::__uninitialized_copy_move(__mid, __last, __pos, +13943: this->_M_impl._M_finish, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __new_finish; +13943: std::copy(__first, __mid, __pos); +13943: } +13943: } +13943: catch(...) +13943: { +13943: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +13943: __new_finish._M_node + 1); +13943: throw; +13943: } +13943: } +13943: } +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_destroy_data_aux(iterator __first, iterator __last) +13943: { +13943: for (_Map_pointer __node = __first._M_node + 1; +13943: __node < __last._M_node; ++__node) +13943: std::_Destroy(*__node, *__node + _S_buffer_size(), +13943: _M_get_Tp_allocator()); +13943: +13943: if (__first._M_node != __last._M_node) +13943: { +13943: std::_Destroy(__first._M_cur, __first._M_last, +13943: _M_get_Tp_allocator()); +13943: std::_Destroy(__last._M_first, __last._M_cur, +13943: _M_get_Tp_allocator()); +13943: } +13943: else +13943: std::_Destroy(__first._M_cur, __last._M_cur, +13943: _M_get_Tp_allocator()); +13943: } +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_new_elements_at_front(size_type __new_elems) +13943: { +13943: if (this->max_size() - this->size() < __new_elems) +13943: __throw_length_error(("deque::_M_new_elements_at_front")); +13943: +13943: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) +13943: / _S_buffer_size()); +13943: _M_reserve_map_at_front(__new_nodes); +13943: size_type __i; +13943: try +13943: { +13943: for (__i = 1; __i <= __new_nodes; ++__i) +13943: *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node(); +13943: } +13943: catch(...) +13943: { +13943: for (size_type __j = 1; __j < __i; ++__j) +13943: _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j)); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_new_elements_at_back(size_type __new_elems) +13943: { +13943: if (this->max_size() - this->size() < __new_elems) +13943: __throw_length_error(("deque::_M_new_elements_at_back")); +13943: +13943: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) +13943: / _S_buffer_size()); +13943: _M_reserve_map_at_back(__new_nodes); +13943: size_type __i; +13943: try +13943: { +13943: for (__i = 1; __i <= __new_nodes; ++__i) +13943: *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node(); +13943: } +13943: catch(...) +13943: { +13943: for (size_type __j = 1; __j < __i; ++__j) +13943: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j)); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: void +13943: deque<_Tp, _Alloc>:: +13943: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front) +13943: { +13943: const size_type __old_num_nodes +13943: = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1; +13943: const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; +13943: +13943: _Map_pointer __new_nstart; +13943: if (this->_M_impl._M_map_size > 2 * __new_num_nodes) +13943: { +13943: __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size +13943: - __new_num_nodes) / 2 +13943: + (__add_at_front ? __nodes_to_add : 0); +13943: if (__new_nstart < this->_M_impl._M_start._M_node) +13943: std::copy(this->_M_impl._M_start._M_node, +13943: this->_M_impl._M_finish._M_node + 1, +13943: __new_nstart); +13943: else +13943: std::copy_backward(this->_M_impl._M_start._M_node, +13943: this->_M_impl._M_finish._M_node + 1, +13943: __new_nstart + __old_num_nodes); +13943: } +13943: else +13943: { +13943: size_type __new_map_size = this->_M_impl._M_map_size +13943: + std::max(this->_M_impl._M_map_size, +13943: __nodes_to_add) + 2; +13943: +13943: _Map_pointer __new_map = this->_M_allocate_map(__new_map_size); +13943: __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 +13943: + (__add_at_front ? __nodes_to_add : 0); +13943: std::copy(this->_M_impl._M_start._M_node, +13943: this->_M_impl._M_finish._M_node + 1, +13943: __new_nstart); +13943: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +13943: +13943: this->_M_impl._M_map = __new_map; +13943: this->_M_impl._M_map_size = __new_map_size; +13943: } +13943: +13943: this->_M_impl._M_start._M_set_node(__new_nstart); +13943: this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>& __first, +13943: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>& __last, +13943: const _VTp& __value) +13943: { +13943: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter; +13943: if (__first._M_node != __last._M_node) +13943: { +13943: std::__fill_a1(__first._M_cur, __first._M_last, __value); +13943: +13943: for (typename _Iter::_Map_pointer __node = __first._M_node + 1; +13943: __node < __last._M_node; ++__node) +13943: std::__fill_a1(*__node, *__node + _Iter::_S_buffer_size(), __value); +13943: +13943: std::__fill_a1(__last._M_first, __last._M_cur, __value); +13943: } +13943: else +13943: std::__fill_a1(__first._M_cur, __last._M_cur, __value); +13943: } +13943: +13943: template +13943: _OI +13943: __copy_move_dit(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +13943: _OI __result) +13943: { +13943: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +13943: if (__first._M_node != __last._M_node) +13943: { +13943: __result +13943: = std::__copy_move_a1<_IsMove>(__first._M_cur, __first._M_last, +13943: __result); +13943: +13943: for (typename _Iter::_Map_pointer __node = __first._M_node + 1; +13943: __node != __last._M_node; ++__node) +13943: __result +13943: = std::__copy_move_a1<_IsMove>(*__node, +13943: *__node + _Iter::_S_buffer_size(), +13943: __result); +13943: +13943: return std::__copy_move_a1<_IsMove>(__last._M_first, __last._M_cur, +13943: __result); +13943: } +13943: +13943: return std::__copy_move_a1<_IsMove>(__first._M_cur, __last._M_cur, +13943: __result); +13943: } +13943: +13943: template +13943: _OI +13943: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +13943: _OI __result) +13943: { return __copy_move_dit<_IsMove>(__first, __last, __result); } +13943: +13943: template +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +13943: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr> __first, +13943: std::_Deque_iterator<_ITp, _IRef, _IPtr> __last, +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*> __result) +13943: { return __copy_move_dit<_IsMove>(__first, __last, __result); } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, +13943: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +13943: __copy_move_a1(_II __first, _II __last, +13943: std::_Deque_iterator<_Tp, _Tp&, _Tp*> __result) +13943: { +13943: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter; +13943: typedef typename _Iter::difference_type difference_type; +13943: +13943: difference_type __len = __last - __first; +13943: while (__len > 0) +13943: { +13943: const difference_type __clen +13943: = std::min(__len, __result._M_last - __result._M_cur); +13943: std::__copy_move_a1<_IsMove>(__first, __first + __clen, +13943: __result._M_cur); +13943: +13943: __first += __clen; +13943: __result += __clen; +13943: __len -= __clen; +13943: } +13943: +13943: return __result; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_char<_CharT>::__value, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +13943: __copy_move_a2( +13943: istreambuf_iterator<_CharT, char_traits<_CharT> > __first, +13943: istreambuf_iterator<_CharT, char_traits<_CharT> > __last, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*> __result) +13943: { +13943: if (__first == __last) +13943: return __result; +13943: +13943: for (;;) +13943: { +13943: const std::ptrdiff_t __len = __result._M_last - __result._M_cur; +13943: const std::ptrdiff_t __nb +13943: = std::__copy_n_a(__first, __len, __result._M_cur, false) +13943: - __result._M_cur; +13943: __result += __nb; +13943: +13943: if (__nb != __len) +13943: break; +13943: } +13943: +13943: return __result; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_char<_CharT>::__value, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +13943: __copy_n_a( +13943: istreambuf_iterator<_CharT, char_traits<_CharT> > __it, _Size __size, +13943: std::_Deque_iterator<_CharT, _CharT&, _CharT*> __result, +13943: bool __strict) +13943: { +13943: if (__size == 0) +13943: return __result; +13943: +13943: do +13943: { +13943: const _Size __len +13943: = std::min<_Size>(__result._M_last - __result._M_cur, __size); +13943: std::__copy_n_a(__it, __len, __result._M_cur, __strict); +13943: __result += __len; +13943: __size -= __len; +13943: } +13943: while (__size != 0); +13943: return __result; +13943: } +13943: +13943: template +13943: _OI +13943: __copy_move_backward_dit( +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +13943: _OI __result) +13943: { +13943: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +13943: if (__first._M_node != __last._M_node) +13943: { +13943: __result = std::__copy_move_backward_a1<_IsMove>( +13943: __last._M_first, __last._M_cur, __result); +13943: +13943: for (typename _Iter::_Map_pointer __node = __last._M_node - 1; +13943: __node != __first._M_node; --__node) +13943: __result = std::__copy_move_backward_a1<_IsMove>( +13943: *__node, *__node + _Iter::_S_buffer_size(), __result); +13943: +13943: return std::__copy_move_backward_a1<_IsMove>( +13943: __first._M_cur, __first._M_last, __result); +13943: } +13943: +13943: return std::__copy_move_backward_a1<_IsMove>( +13943: __first._M_cur, __last._M_cur, __result); +13943: } +13943: +13943: template +13943: _OI +13943: __copy_move_backward_a1( +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +13943: _OI __result) +13943: { return __copy_move_backward_dit<_IsMove>(__first, __last, __result); } +13943: +13943: template +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +13943: __copy_move_backward_a1( +13943: std::_Deque_iterator<_ITp, _IRef, _IPtr> __first, +13943: std::_Deque_iterator<_ITp, _IRef, _IPtr> __last, +13943: std::_Deque_iterator<_OTp, _OTp&, _OTp*> __result) +13943: { return __copy_move_backward_dit<_IsMove>(__first, __last, __result); } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, +13943: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +13943: __copy_move_backward_a1(_II __first, _II __last, +13943: std::_Deque_iterator<_Tp, _Tp&, _Tp*> __result) +13943: { +13943: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter; +13943: typedef typename _Iter::difference_type difference_type; +13943: +13943: difference_type __len = __last - __first; +13943: while (__len > 0) +13943: { +13943: difference_type __rlen = __result._M_cur - __result._M_first; +13943: _Tp* __rend = __result._M_cur; +13943: if (!__rlen) +13943: { +13943: __rlen = _Iter::_S_buffer_size(); +13943: __rend = *(__result._M_node - 1) + __rlen; +13943: } +13943: +13943: const difference_type __clen = std::min(__len, __rlen); +13943: std::__copy_move_backward_a1<_IsMove>(__last - __clen, __last, __rend); +13943: +13943: __last -= __clen; +13943: __result -= __clen; +13943: __len -= __clen; +13943: } +13943: +13943: return __result; +13943: } +13943: +13943: template +13943: bool +13943: __equal_dit( +13943: const std::_Deque_iterator<_Tp, _Ref, _Ptr>& __first1, +13943: const std::_Deque_iterator<_Tp, _Ref, _Ptr>& __last1, +13943: _II __first2) +13943: { +13943: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +13943: if (__first1._M_node != __last1._M_node) +13943: { +13943: if (!std::__equal_aux1(__first1._M_cur, __first1._M_last, __first2)) +13943: return false; +13943: +13943: __first2 += __first1._M_last - __first1._M_cur; +13943: for (typename _Iter::_Map_pointer __node = __first1._M_node + 1; +13943: __node != __last1._M_node; +13943: __first2 += _Iter::_S_buffer_size(), ++__node) +13943: if (!std::__equal_aux1(*__node, *__node + _Iter::_S_buffer_size(), +13943: __first2)) +13943: return false; +13943: +13943: return std::__equal_aux1(__last1._M_first, __last1._M_cur, __first2); +13943: } +13943: +13943: return std::__equal_aux1(__first1._M_cur, __last1._M_cur, __first2); +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, bool>::__type +13943: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first1, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last1, +13943: _II __first2) +13943: { return std::__equal_dit(__first1, __last1, __first2); } +13943: +13943: template +13943: bool +13943: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1, +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2) +13943: { return std::__equal_dit(__first1, __last1, __first2); } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if< +13943: __is_random_access_iter<_II>::__value, bool>::__type +13943: __equal_aux1(_II __first1, _II __last1, +13943: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first2) +13943: { +13943: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +13943: typedef typename _Iter::difference_type difference_type; +13943: +13943: difference_type __len = __last1 - __first1; +13943: while (__len > 0) +13943: { +13943: const difference_type __clen +13943: = std::min(__len, __first2._M_last - __first2._M_cur); +13943: if (!std::__equal_aux1(__first1, __first1 + __clen, __first2._M_cur)) +13943: return false; +13943: +13943: __first1 += __clen; +13943: __len -= __clen; +13943: __first2 += __clen; +13943: } +13943: +13943: return true; +13943: } +13943: +13943: template +13943: int +13943: __lex_cmp_dit( +13943: std::_Deque_iterator<_Tp1, _Ref, _Ptr> __first1, +13943: std::_Deque_iterator<_Tp1, _Ref, _Ptr> __last1, +13943: const _Tp2* __first2, const _Tp2* __last2) +13943: { +13943: const bool __simple = +13943: (__is_memcmp_ordered_with<_Tp1, _Tp2>::__value +13943: && __is_pointer<_Ptr>::__value +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ); +13943: typedef std::__lexicographical_compare<__simple> _Lc; +13943: +13943: while (__first1._M_node != __last1._M_node) +13943: { +13943: const ptrdiff_t __len1 = __first1._M_last - __first1._M_cur; +13943: const ptrdiff_t __len2 = __last2 - __first2; +13943: const ptrdiff_t __len = std::min(__len1, __len2); +13943: +13943: if (int __ret = _Lc::__3way(__first1._M_cur, __first1._M_last, +13943: __first2, __first2 + __len)) +13943: return __ret; +13943: +13943: __first1 += __len; +13943: __first2 += __len; +13943: } +13943: return _Lc::__3way(__first1._M_cur, __last1._M_cur, +13943: __first2, __last2); +13943: } +13943: +13943: template +13943: inline bool +13943: __lexicographical_compare_aux1( +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1, +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1, +13943: _Tp2* __first2, _Tp2* __last2) +13943: { return std::__lex_cmp_dit(__first1, __last1, __first2, __last2) < 0; } +13943: +13943: template +13943: inline bool +13943: __lexicographical_compare_aux1(_Tp1* __first1, _Tp1* __last1, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __last2) +13943: { return std::__lex_cmp_dit(__first2, __last2, __first1, __last1) > 0; } +13943: +13943: template +13943: inline bool +13943: __lexicographical_compare_aux1( +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1, +13943: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2, +13943: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __last2) +13943: { +13943: const bool __simple = +13943: (__is_memcmp_ordered_with<_Tp1, _Tp2>::__value +13943: && __is_pointer<_Ptr1>::__value +13943: && __is_pointer<_Ptr2>::__value +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ); +13943: typedef std::__lexicographical_compare<__simple> _Lc; +13943: +13943: while (__first1 != __last1) +13943: { +13943: const ptrdiff_t __len2 = __first2._M_node == __last2._M_node +13943: ? __last2._M_cur - __first2._M_cur +13943: : __first2._M_last - __first2._M_cur; +13943: if (__len2 == 0) +13943: return false; +13943: const ptrdiff_t __len1 = __first1._M_node == __last1._M_node +13943: ? __last1._M_cur - __first1._M_cur +13943: : __first1._M_last - __first1._M_cur; +13943: const ptrdiff_t __len = std::min(__len1, __len2); +13943: if (int __ret = _Lc::__3way(__first1._M_cur, __first1._M_cur + __len, +13943: __first2._M_cur, __first2._M_cur + __len)) +13943: return __ret < 0; +13943: +13943: __first1 += __len; +13943: __first2 += __len; +13943: } +13943: +13943: return __last2 != __first2; +13943: } +13943: +13943: +13943: } +13943: # 70 "/usr/include/c++/14/deque" 2 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 75 "/usr/include/c++/14/deque" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/memory_resource.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cstddef" 1 3 +13943: # 42 "/usr/include/c++/14/cstddef" 3 +13943: +13943: # 43 "/usr/include/c++/14/cstddef" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 145 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +13943: typedef int ptrdiff_t; +13943: # 214 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +13943: typedef unsigned int size_t; +13943: # 425 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +13943: typedef struct { +13943: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); +13943: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); +13943: # 436 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +13943: } max_align_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef decltype(nullptr) nullptr_t; +13943: # 51 "/usr/include/c++/14/cstddef" 2 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 54 "/usr/include/c++/14/cstddef" 2 3 +13943: +13943: extern "C++" +13943: { +13943: +13943: namespace std +13943: { +13943: +13943: using ::max_align_t; +13943: } +13943: +13943: +13943: +13943: namespace std +13943: { +13943: +13943: +13943: enum class byte : unsigned char {}; +13943: +13943: template struct __byte_operand { }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: +13943: +13943: +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: template<> struct __byte_operand { using __type = byte; }; +13943: # 109 "/usr/include/c++/14/cstddef" 3 +13943: template +13943: struct __byte_operand +13943: : __byte_operand<_IntegerType> { }; +13943: template +13943: struct __byte_operand +13943: : __byte_operand<_IntegerType> { }; +13943: template +13943: struct __byte_operand +13943: : __byte_operand<_IntegerType> { }; +13943: +13943: template +13943: using __byte_op_t = typename __byte_operand<_IntegerType>::__type; +13943: +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr __byte_op_t<_IntegerType> +13943: operator<<(byte __b, _IntegerType __shift) noexcept +13943: { return (byte)(unsigned char)((unsigned)__b << __shift); } +13943: +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr __byte_op_t<_IntegerType> +13943: operator>>(byte __b, _IntegerType __shift) noexcept +13943: { return (byte)(unsigned char)((unsigned)__b >> __shift); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: constexpr byte +13943: operator|(byte __l, byte __r) noexcept +13943: { return (byte)(unsigned char)((unsigned)__l | (unsigned)__r); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: constexpr byte +13943: operator&(byte __l, byte __r) noexcept +13943: { return (byte)(unsigned char)((unsigned)__l & (unsigned)__r); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: constexpr byte +13943: operator^(byte __l, byte __r) noexcept +13943: { return (byte)(unsigned char)((unsigned)__l ^ (unsigned)__r); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: constexpr byte +13943: operator~(byte __b) noexcept +13943: { return (byte)(unsigned char)~(unsigned)__b; } +13943: +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr __byte_op_t<_IntegerType>& +13943: operator<<=(byte& __b, _IntegerType __shift) noexcept +13943: { return __b = __b << __shift; } +13943: +13943: template +13943: [[__gnu__::__always_inline__]] +13943: constexpr __byte_op_t<_IntegerType>& +13943: operator>>=(byte& __b, _IntegerType __shift) noexcept +13943: { return __b = __b >> __shift; } +13943: +13943: [[__gnu__::__always_inline__]] +13943: constexpr byte& +13943: operator|=(byte& __l, byte __r) noexcept +13943: { return __l = __l | __r; } +13943: +13943: [[__gnu__::__always_inline__]] +13943: constexpr byte& +13943: operator&=(byte& __l, byte __r) noexcept +13943: { return __l = __l & __r; } +13943: +13943: [[__gnu__::__always_inline__]] +13943: constexpr byte& +13943: operator^=(byte& __l, byte __r) noexcept +13943: { return __l = __l ^ __r; } +13943: +13943: template +13943: [[nodiscard,__gnu__::__always_inline__]] +13943: constexpr _IntegerType +13943: to_integer(__byte_op_t<_IntegerType> __b) noexcept +13943: { return _IntegerType(__b); } +13943: +13943: +13943: } +13943: +13943: } +13943: # 39 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/uses_allocator.h" 1 3 +13943: # 40 "/usr/include/c++/14/bits/uses_allocator.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: struct __erased_type { }; +13943: +13943: +13943: +13943: +13943: template +13943: using __is_erased_or_convertible +13943: = __or_, is_same<_Tp, __erased_type>>; +13943: +13943: +13943: struct allocator_arg_t { explicit allocator_arg_t() = default; }; +13943: +13943: inline constexpr allocator_arg_t allocator_arg = +13943: allocator_arg_t(); +13943: +13943: template> +13943: struct __uses_allocator_helper +13943: : false_type { }; +13943: +13943: template +13943: struct __uses_allocator_helper<_Tp, _Alloc, +13943: __void_t> +13943: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type +13943: { }; +13943: +13943: +13943: template +13943: struct uses_allocator +13943: : __uses_allocator_helper<_Tp, _Alloc>::type +13943: { }; +13943: +13943: struct __uses_alloc_base { }; +13943: +13943: struct __uses_alloc0 : __uses_alloc_base +13943: { +13943: struct _Sink { void operator=(const void*) { } } _M_a; +13943: }; +13943: +13943: template +13943: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; +13943: +13943: template +13943: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; +13943: +13943: template +13943: struct __uses_alloc; +13943: +13943: template +13943: struct __uses_alloc +13943: : __conditional_t< +13943: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, +13943: __uses_alloc1<_Alloc>, +13943: __uses_alloc2<_Alloc>> +13943: { +13943: +13943: +13943: static_assert(__or_< +13943: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, +13943: is_constructible<_Tp, _Args..., const _Alloc&>>::value, +13943: "construction with an allocator must be possible" +13943: " if uses_allocator is true"); +13943: }; +13943: +13943: template +13943: struct __uses_alloc +13943: : __uses_alloc0 { }; +13943: +13943: template +13943: using __uses_alloc_t = +13943: __uses_alloc::value, _Tp, _Alloc, _Args...>; +13943: +13943: template +13943: +13943: inline __uses_alloc_t<_Tp, _Alloc, _Args...> +13943: __use_alloc(const _Alloc& __a) +13943: { +13943: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; +13943: __ret._M_a = std::__addressof(__a); +13943: return __ret; +13943: } +13943: +13943: template +13943: void +13943: __use_alloc(const _Alloc&&) = delete; +13943: +13943: +13943: template +13943: inline constexpr bool uses_allocator_v = +13943: uses_allocator<_Tp, _Alloc>::value; +13943: +13943: +13943: template class _Predicate, +13943: typename _Tp, typename _Alloc, typename... _Args> +13943: struct __is_uses_allocator_predicate +13943: : __conditional_t::value, +13943: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, +13943: _Predicate<_Tp, _Args..., _Alloc>>, +13943: _Predicate<_Tp, _Args...>> { }; +13943: +13943: template +13943: struct __is_uses_allocator_constructible +13943: : __is_uses_allocator_predicate +13943: { }; +13943: +13943: +13943: template +13943: inline constexpr bool __is_uses_allocator_constructible_v = +13943: __is_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; +13943: +13943: +13943: template +13943: struct __is_nothrow_uses_allocator_constructible +13943: : __is_uses_allocator_predicate +13943: { }; +13943: +13943: +13943: +13943: template +13943: inline constexpr bool +13943: __is_nothrow_uses_allocator_constructible_v = +13943: __is_nothrow_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; +13943: +13943: +13943: template +13943: void __uses_allocator_construct_impl(__uses_alloc0, _Tp* __ptr, +13943: _Args&&... __args) +13943: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } +13943: +13943: template +13943: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, +13943: _Args&&... __args) +13943: { +13943: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: template +13943: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, +13943: _Args&&... __args) +13943: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } +13943: +13943: template +13943: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, +13943: _Args&&... __args) +13943: { +13943: std::__uses_allocator_construct_impl( +13943: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: +13943: } +13943: # 41 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/uses_allocator_args.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/uses_allocator_args.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/uses_allocator_args.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 36 "/usr/include/c++/14/bits/uses_allocator_args.h" 2 3 +13943: # 42 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/tuple" 1 3 +13943: # 32 "/usr/include/c++/14/tuple" 3 +13943: +13943: # 33 "/usr/include/c++/14/tuple" 3 +13943: # 54 "/usr/include/c++/14/tuple" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 55 "/usr/include/c++/14/tuple" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class tuple; +13943: +13943: template +13943: struct __is_empty_non_tuple : is_empty<_Tp> { }; +13943: +13943: +13943: template +13943: struct __is_empty_non_tuple> : false_type { }; +13943: +13943: +13943: template +13943: using __empty_not_final +13943: = __conditional_t<__is_final(_Tp), false_type, +13943: __is_empty_non_tuple<_Tp>>; +13943: +13943: template::value> +13943: struct _Head_base; +13943: +13943: +13943: template +13943: struct _Head_base<_Idx, _Head, true> +13943: { +13943: constexpr _Head_base() +13943: : _M_head_impl() { } +13943: +13943: constexpr _Head_base(const _Head& __h) +13943: : _M_head_impl(__h) { } +13943: +13943: constexpr _Head_base(const _Head_base&) = default; +13943: constexpr _Head_base(_Head_base&&) = default; +13943: +13943: template +13943: constexpr _Head_base(_UHead&& __h) +13943: : _M_head_impl(std::forward<_UHead>(__h)) { } +13943: +13943: +13943: _Head_base(allocator_arg_t, __uses_alloc0) +13943: : _M_head_impl() { } +13943: +13943: template +13943: +13943: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) +13943: : _M_head_impl(allocator_arg, *__a._M_a) { } +13943: +13943: template +13943: +13943: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) +13943: : _M_head_impl(*__a._M_a) { } +13943: +13943: template +13943: +13943: _Head_base(__uses_alloc0, _UHead&& __uhead) +13943: : _M_head_impl(std::forward<_UHead>(__uhead)) { } +13943: +13943: template +13943: +13943: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) +13943: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) +13943: { } +13943: +13943: template +13943: +13943: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) +13943: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } +13943: +13943: static constexpr _Head& +13943: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } +13943: +13943: static constexpr const _Head& +13943: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } +13943: +13943: [[__no_unique_address__]] _Head _M_head_impl; +13943: }; +13943: # 195 "/usr/include/c++/14/tuple" 3 +13943: template +13943: struct _Head_base<_Idx, _Head, false> +13943: { +13943: constexpr _Head_base() +13943: : _M_head_impl() { } +13943: +13943: constexpr _Head_base(const _Head& __h) +13943: : _M_head_impl(__h) { } +13943: +13943: constexpr _Head_base(const _Head_base&) = default; +13943: constexpr _Head_base(_Head_base&&) = default; +13943: +13943: template +13943: constexpr _Head_base(_UHead&& __h) +13943: : _M_head_impl(std::forward<_UHead>(__h)) { } +13943: +13943: +13943: _Head_base(allocator_arg_t, __uses_alloc0) +13943: : _M_head_impl() { } +13943: +13943: template +13943: +13943: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) +13943: : _M_head_impl(allocator_arg, *__a._M_a) { } +13943: +13943: template +13943: +13943: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) +13943: : _M_head_impl(*__a._M_a) { } +13943: +13943: template +13943: +13943: _Head_base(__uses_alloc0, _UHead&& __uhead) +13943: : _M_head_impl(std::forward<_UHead>(__uhead)) { } +13943: +13943: template +13943: +13943: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) +13943: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) +13943: { } +13943: +13943: template +13943: +13943: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) +13943: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } +13943: +13943: static constexpr _Head& +13943: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } +13943: +13943: static constexpr const _Head& +13943: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } +13943: +13943: _Head _M_head_impl; +13943: }; +13943: # 274 "/usr/include/c++/14/tuple" 3 +13943: template +13943: struct _Tuple_impl; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Tuple_impl<_Idx, _Head, _Tail...> +13943: : public _Tuple_impl<_Idx + 1, _Tail...>, +13943: private _Head_base<_Idx, _Head> +13943: { +13943: template friend struct _Tuple_impl; +13943: +13943: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; +13943: typedef _Head_base<_Idx, _Head> _Base; +13943: +13943: static constexpr _Head& +13943: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +13943: +13943: static constexpr const _Head& +13943: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +13943: +13943: static constexpr _Inherited& +13943: _M_tail(_Tuple_impl& __t) noexcept { return __t; } +13943: +13943: static constexpr const _Inherited& +13943: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } +13943: +13943: constexpr _Tuple_impl() +13943: : _Inherited(), _Base() { } +13943: +13943: explicit constexpr +13943: _Tuple_impl(const _Head& __head, const _Tail&... __tail) +13943: : _Inherited(__tail...), _Base(__head) +13943: { } +13943: +13943: template> +13943: explicit constexpr +13943: _Tuple_impl(_UHead&& __head, _UTail&&... __tail) +13943: : _Inherited(std::forward<_UTail>(__tail)...), +13943: _Base(std::forward<_UHead>(__head)) +13943: { } +13943: +13943: constexpr _Tuple_impl(const _Tuple_impl&) = default; +13943: +13943: +13943: +13943: _Tuple_impl& operator=(const _Tuple_impl&) = delete; +13943: +13943: _Tuple_impl(_Tuple_impl&&) = default; +13943: +13943: template +13943: constexpr +13943: _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) +13943: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), +13943: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) +13943: : _Inherited(std::move +13943: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), +13943: _Base(std::forward<_UHead> +13943: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) +13943: { } +13943: # 370 "/usr/include/c++/14/tuple" 3 +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) +13943: : _Inherited(__tag, __a), +13943: _Base(__tag, __use_alloc<_Head>(__a)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +13943: const _Head& __head, const _Tail&... __tail) +13943: : _Inherited(__tag, __a, __tail...), +13943: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) +13943: { } +13943: +13943: template> +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +13943: _UHead&& __head, _UTail&&... __tail) +13943: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), +13943: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +13943: std::forward<_UHead>(__head)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +13943: const _Tuple_impl& __in) +13943: : _Inherited(__tag, __a, _M_tail(__in)), +13943: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +13943: _Tuple_impl&& __in) +13943: : _Inherited(__tag, __a, std::move(_M_tail(__in))), +13943: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), +13943: std::forward<_Head>(_M_head(__in))) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +13943: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) +13943: : _Inherited(__tag, __a, +13943: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), +13943: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), +13943: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +13943: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) +13943: : _Inherited(__tag, __a, std::move +13943: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), +13943: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +13943: std::forward<_UHead> +13943: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) +13943: { } +13943: # 465 "/usr/include/c++/14/tuple" 3 +13943: template +13943: +13943: void +13943: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) +13943: { +13943: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); +13943: _M_tail(*this)._M_assign( +13943: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); +13943: } +13943: +13943: template +13943: +13943: void +13943: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) +13943: { +13943: _M_head(*this) = std::forward<_UHead> +13943: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); +13943: _M_tail(*this)._M_assign( +13943: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); +13943: } +13943: # 525 "/usr/include/c++/14/tuple" 3 +13943: protected: +13943: +13943: void +13943: _M_swap(_Tuple_impl& __in) +13943: { +13943: using std::swap; +13943: swap(_M_head(*this), _M_head(__in)); +13943: _Inherited::_M_swap(_M_tail(__in)); +13943: } +13943: # 544 "/usr/include/c++/14/tuple" 3 +13943: }; +13943: +13943: +13943: template +13943: struct _Tuple_impl<_Idx, _Head> +13943: : private _Head_base<_Idx, _Head> +13943: { +13943: template friend struct _Tuple_impl; +13943: +13943: typedef _Head_base<_Idx, _Head> _Base; +13943: +13943: static constexpr _Head& +13943: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +13943: +13943: static constexpr const _Head& +13943: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +13943: +13943: constexpr +13943: _Tuple_impl() +13943: : _Base() { } +13943: +13943: explicit constexpr +13943: _Tuple_impl(const _Head& __head) +13943: : _Base(__head) +13943: { } +13943: +13943: template +13943: explicit constexpr +13943: _Tuple_impl(_UHead&& __head) +13943: : _Base(std::forward<_UHead>(__head)) +13943: { } +13943: +13943: constexpr _Tuple_impl(const _Tuple_impl&) = default; +13943: +13943: +13943: +13943: _Tuple_impl& operator=(const _Tuple_impl&) = delete; +13943: +13943: +13943: +13943: +13943: constexpr +13943: _Tuple_impl(_Tuple_impl&& __in) +13943: noexcept(is_nothrow_move_constructible<_Head>::value) +13943: : _Base(static_cast<_Base&&>(__in)) +13943: { } +13943: +13943: +13943: template +13943: constexpr +13943: _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) +13943: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) +13943: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) +13943: { } +13943: # 626 "/usr/include/c++/14/tuple" 3 +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) +13943: : _Base(__tag, __use_alloc<_Head>(__a)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +13943: const _Head& __head) +13943: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), __head) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +13943: _UHead&& __head) +13943: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +13943: std::forward<_UHead>(__head)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +13943: const _Tuple_impl& __in) +13943: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), _M_head(__in)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +13943: _Tuple_impl&& __in) +13943: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), +13943: std::forward<_Head>(_M_head(__in))) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +13943: const _Tuple_impl<_Idx, _UHead>& __in) +13943: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), +13943: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) +13943: { } +13943: +13943: template +13943: +13943: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +13943: _Tuple_impl<_Idx, _UHead>&& __in) +13943: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +13943: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) +13943: { } +13943: # 705 "/usr/include/c++/14/tuple" 3 +13943: template +13943: +13943: void +13943: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) +13943: { +13943: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); +13943: } +13943: +13943: template +13943: +13943: void +13943: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) +13943: { +13943: _M_head(*this) +13943: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); +13943: } +13943: # 751 "/usr/include/c++/14/tuple" 3 +13943: protected: +13943: +13943: void +13943: _M_swap(_Tuple_impl& __in) +13943: { +13943: using std::swap; +13943: swap(_M_head(*this), _M_head(__in)); +13943: } +13943: # 768 "/usr/include/c++/14/tuple" 3 +13943: }; +13943: +13943: +13943: +13943: template +13943: struct _TupleConstraints +13943: { +13943: template +13943: using __constructible = __and_...>; +13943: +13943: template +13943: using __convertible = __and_...>; +13943: +13943: +13943: +13943: +13943: template +13943: static constexpr bool __is_implicitly_constructible() +13943: { +13943: return __and_<__constructible<_UTypes...>, +13943: __convertible<_UTypes...> +13943: >::value; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: static constexpr bool __is_explicitly_constructible() +13943: { +13943: return __and_<__constructible<_UTypes...>, +13943: __not_<__convertible<_UTypes...>> +13943: >::value; +13943: } +13943: +13943: static constexpr bool __is_implicitly_default_constructible() +13943: { +13943: return __and_... +13943: >::value; +13943: } +13943: +13943: static constexpr bool __is_explicitly_default_constructible() +13943: { +13943: return __and_..., +13943: __not_<__and_< +13943: std::__is_implicitly_default_constructible<_Types>...> +13943: >>::value; +13943: } +13943: }; +13943: +13943: +13943: +13943: template +13943: struct _TupleConstraints +13943: { +13943: template +13943: static constexpr bool __is_implicitly_constructible() +13943: { return false; } +13943: +13943: template +13943: static constexpr bool __is_explicitly_constructible() +13943: { return false; } +13943: }; +13943: +13943: +13943: template +13943: class tuple : public _Tuple_impl<0, _Elements...> +13943: { +13943: using _Inherited = _Tuple_impl<0, _Elements...>; +13943: # 1351 "/usr/include/c++/14/tuple" 3 +13943: template +13943: using _TCC = _TupleConstraints<_Cond, _Elements...>; +13943: +13943: +13943: template +13943: using _ImplicitDefaultCtor = __enable_if_t< +13943: _TCC<_Dummy>::__is_implicitly_default_constructible(), +13943: bool>; +13943: +13943: +13943: template +13943: using _ExplicitDefaultCtor = __enable_if_t< +13943: _TCC<_Dummy>::__is_explicitly_default_constructible(), +13943: bool>; +13943: +13943: +13943: template +13943: using _ImplicitCtor = __enable_if_t< +13943: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), +13943: bool>; +13943: +13943: +13943: template +13943: using _ExplicitCtor = __enable_if_t< +13943: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), +13943: bool>; +13943: +13943: +13943: template +13943: static constexpr bool __nothrow_constructible() +13943: { +13943: return +13943: __and_...>::value; +13943: } +13943: +13943: +13943: template +13943: static constexpr bool __valid_args() +13943: { +13943: return sizeof...(_Elements) == 1 +13943: && !is_same>::value; +13943: } +13943: +13943: +13943: template +13943: static constexpr bool __valid_args() +13943: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } +13943: # 1408 "/usr/include/c++/14/tuple" 3 +13943: template> +13943: struct _UseOtherCtor +13943: : false_type +13943: { }; +13943: +13943: +13943: template +13943: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> +13943: : __or_, is_constructible<_Tp, _Tuple>>::type +13943: { }; +13943: +13943: +13943: template +13943: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> +13943: : true_type +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: static constexpr bool __use_other_ctor() +13943: { return _UseOtherCtor<_Tuple>::value; } +13943: # 1454 "/usr/include/c++/14/tuple" 3 +13943: public: +13943: template::value> = true> +13943: constexpr +13943: tuple() +13943: noexcept(__and_...>::value) +13943: : _Inherited() { } +13943: +13943: template::value> = false> +13943: explicit constexpr +13943: tuple() +13943: noexcept(__and_...>::value) +13943: : _Inherited() { } +13943: +13943: template= 1), +13943: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> +13943: constexpr +13943: tuple(const _Elements&... __elements) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(__elements...) { } +13943: +13943: template= 1), +13943: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> +13943: explicit constexpr +13943: tuple(const _Elements&... __elements) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(__elements...) { } +13943: +13943: template(), +13943: _ImplicitCtor<_Valid, _UElements...> = true> +13943: constexpr +13943: tuple(_UElements&&... __elements) +13943: noexcept(__nothrow_constructible<_UElements...>()) +13943: : _Inherited(std::forward<_UElements>(__elements)...) +13943: { ; } +13943: +13943: template(), +13943: _ExplicitCtor<_Valid, _UElements...> = false> +13943: explicit constexpr +13943: tuple(_UElements&&... __elements) +13943: noexcept(__nothrow_constructible<_UElements...>()) +13943: : _Inherited(std::forward<_UElements>(__elements)...) +13943: { ; } +13943: +13943: constexpr tuple(const tuple&) = default; +13943: +13943: constexpr tuple(tuple&&) = default; +13943: +13943: template&>(), +13943: _ImplicitCtor<_Valid, const _UElements&...> = true> +13943: constexpr +13943: tuple(const tuple<_UElements...>& __in) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(static_cast&>(__in)) +13943: { ; } +13943: +13943: template&>(), +13943: _ExplicitCtor<_Valid, const _UElements&...> = false> +13943: explicit constexpr +13943: tuple(const tuple<_UElements...>& __in) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(static_cast&>(__in)) +13943: { ; } +13943: +13943: template&&>(), +13943: _ImplicitCtor<_Valid, _UElements...> = true> +13943: constexpr +13943: tuple(tuple<_UElements...>&& __in) +13943: noexcept(__nothrow_constructible<_UElements...>()) +13943: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +13943: { ; } +13943: +13943: template&&>(), +13943: _ExplicitCtor<_Valid, _UElements...> = false> +13943: explicit constexpr +13943: tuple(tuple<_UElements...>&& __in) +13943: noexcept(__nothrow_constructible<_UElements...>()) +13943: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +13943: { ; } +13943: +13943: +13943: +13943: template::value> = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a) +13943: : _Inherited(__tag, __a) { } +13943: +13943: template::value> = false> +13943: +13943: explicit +13943: tuple(allocator_arg_t __tag, const _Alloc& __a) +13943: : _Inherited(__tag, __a) { } +13943: +13943: template= 1), +13943: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const _Elements&... __elements) +13943: : _Inherited(__tag, __a, __elements...) { } +13943: +13943: template= 1), +13943: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> +13943: +13943: explicit +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const _Elements&... __elements) +13943: : _Inherited(__tag, __a, __elements...) { } +13943: +13943: template(), +13943: _ImplicitCtor<_Valid, _UElements...> = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: _UElements&&... __elements) +13943: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) +13943: { ; } +13943: +13943: template(), +13943: _ExplicitCtor<_Valid, _UElements...> = false> +13943: +13943: explicit +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: _UElements&&... __elements) +13943: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) +13943: { ; } +13943: +13943: template +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) +13943: : _Inherited(__tag, __a, static_cast(__in)) { } +13943: +13943: template +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) +13943: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } +13943: +13943: template&>(), +13943: _ImplicitCtor<_Valid, const _UElements&...> = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const tuple<_UElements...>& __in) +13943: : _Inherited(__tag, __a, +13943: static_cast&>(__in)) +13943: { ; } +13943: +13943: template&>(), +13943: _ExplicitCtor<_Valid, const _UElements&...> = false> +13943: +13943: explicit +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const tuple<_UElements...>& __in) +13943: : _Inherited(__tag, __a, +13943: static_cast&>(__in)) +13943: { ; } +13943: +13943: template&&>(), +13943: _ImplicitCtor<_Valid, _UElements...> = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: tuple<_UElements...>&& __in) +13943: : _Inherited(__tag, __a, +13943: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +13943: { ; } +13943: +13943: template&&>(), +13943: _ExplicitCtor<_Valid, _UElements...> = false> +13943: +13943: explicit +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: tuple<_UElements...>&& __in) +13943: : _Inherited(__tag, __a, +13943: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +13943: { ; } +13943: # 1886 "/usr/include/c++/14/tuple" 3 +13943: private: +13943: template +13943: static constexpr +13943: __enable_if_t +13943: __assignable() +13943: { return __and_...>::value; } +13943: +13943: +13943: template +13943: static constexpr bool __nothrow_assignable() +13943: { +13943: return +13943: __and_...>::value; +13943: } +13943: +13943: public: +13943: +13943: +13943: tuple& +13943: operator=(__conditional_t<__assignable(), +13943: const tuple&, +13943: const __nonesuch&> __in) +13943: noexcept(__nothrow_assignable()) +13943: { +13943: this->_M_assign(__in); +13943: return *this; +13943: } +13943: +13943: +13943: tuple& +13943: operator=(__conditional_t<__assignable<_Elements...>(), +13943: tuple&&, +13943: __nonesuch&&> __in) +13943: noexcept(__nothrow_assignable<_Elements...>()) +13943: { +13943: this->_M_assign(std::move(__in)); +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: __enable_if_t<__assignable(), tuple&> +13943: operator=(const tuple<_UElements...>& __in) +13943: noexcept(__nothrow_assignable()) +13943: { +13943: this->_M_assign(__in); +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: __enable_if_t<__assignable<_UElements...>(), tuple&> +13943: operator=(tuple<_UElements...>&& __in) +13943: noexcept(__nothrow_assignable<_UElements...>()) +13943: { +13943: this->_M_assign(std::move(__in)); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: swap(tuple& __in) +13943: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) +13943: { _Inherited::_M_swap(__in); } +13943: # 1966 "/usr/include/c++/14/tuple" 3 +13943: }; +13943: +13943: +13943: template +13943: tuple(_UTypes...) -> tuple<_UTypes...>; +13943: template +13943: tuple(pair<_T1, _T2>) -> tuple<_T1, _T2>; +13943: template +13943: tuple(allocator_arg_t, _Alloc, _UTypes...) -> tuple<_UTypes...>; +13943: template +13943: tuple(allocator_arg_t, _Alloc, pair<_T1, _T2>) -> tuple<_T1, _T2>; +13943: template +13943: tuple(allocator_arg_t, _Alloc, tuple<_UTypes...>) -> tuple<_UTypes...>; +13943: +13943: +13943: +13943: template<> +13943: class tuple<> +13943: { +13943: public: +13943: +13943: void swap(tuple&) noexcept { } +13943: +13943: +13943: +13943: +13943: +13943: tuple() = default; +13943: +13943: template +13943: +13943: tuple(allocator_arg_t, const _Alloc&) noexcept { } +13943: template +13943: +13943: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> +13943: { +13943: typedef _Tuple_impl<0, _T1, _T2> _Inherited; +13943: +13943: +13943: template +13943: using _ImplicitDefaultCtor = __enable_if_t< +13943: _TupleConstraints<_Dummy, _U1, _U2>:: +13943: __is_implicitly_default_constructible(), +13943: bool>; +13943: +13943: +13943: template +13943: using _ExplicitDefaultCtor = __enable_if_t< +13943: _TupleConstraints<_Dummy, _U1, _U2>:: +13943: __is_explicitly_default_constructible(), +13943: bool>; +13943: +13943: template +13943: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; +13943: +13943: +13943: template +13943: using _ImplicitCtor = __enable_if_t< +13943: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), +13943: bool>; +13943: +13943: +13943: template +13943: using _ExplicitCtor = __enable_if_t< +13943: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), +13943: bool>; +13943: +13943: template +13943: static constexpr bool __assignable() +13943: { +13943: return __and_, +13943: is_assignable<_T2&, _U2>>::value; +13943: } +13943: +13943: template +13943: static constexpr bool __nothrow_assignable() +13943: { +13943: return __and_, +13943: is_nothrow_assignable<_T2&, _U2>>::value; +13943: } +13943: +13943: template +13943: static constexpr bool __nothrow_constructible() +13943: { +13943: return __and_, +13943: is_nothrow_constructible<_T2, _U2>>::value; +13943: } +13943: +13943: static constexpr bool __nothrow_default_constructible() +13943: { +13943: return __and_, +13943: is_nothrow_default_constructible<_T2>>::value; +13943: } +13943: +13943: template +13943: static constexpr bool __is_alloc_arg() +13943: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } +13943: # 2085 "/usr/include/c++/14/tuple" 3 +13943: public: +13943: template = true> +13943: constexpr +13943: tuple() +13943: noexcept(__nothrow_default_constructible()) +13943: : _Inherited() { } +13943: +13943: template = false> +13943: explicit constexpr +13943: tuple() +13943: noexcept(__nothrow_default_constructible()) +13943: : _Inherited() { } +13943: +13943: template = true> +13943: constexpr +13943: tuple(const _T1& __a1, const _T2& __a2) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(__a1, __a2) { } +13943: +13943: template = false> +13943: explicit constexpr +13943: tuple(const _T1& __a1, const _T2& __a2) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(__a1, __a2) { } +13943: +13943: template(), _U1, _U2> = true> +13943: constexpr +13943: tuple(_U1&& __a1, _U2&& __a2) +13943: noexcept(__nothrow_constructible<_U1, _U2>()) +13943: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) +13943: { ; } +13943: +13943: template(), _U1, _U2> = false> +13943: explicit constexpr +13943: tuple(_U1&& __a1, _U2&& __a2) +13943: noexcept(__nothrow_constructible<_U1, _U2>()) +13943: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) +13943: { ; } +13943: +13943: constexpr tuple(const tuple&) = default; +13943: +13943: constexpr tuple(tuple&&) = default; +13943: +13943: template = true> +13943: constexpr +13943: tuple(const tuple<_U1, _U2>& __in) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(static_cast&>(__in)) +13943: { ; } +13943: +13943: template = false> +13943: explicit constexpr +13943: tuple(const tuple<_U1, _U2>& __in) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(static_cast&>(__in)) +13943: { ; } +13943: +13943: template = true> +13943: constexpr +13943: tuple(tuple<_U1, _U2>&& __in) +13943: noexcept(__nothrow_constructible<_U1, _U2>()) +13943: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +13943: { ; } +13943: +13943: template = false> +13943: explicit constexpr +13943: tuple(tuple<_U1, _U2>&& __in) +13943: noexcept(__nothrow_constructible<_U1, _U2>()) +13943: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +13943: { ; } +13943: +13943: template = true> +13943: constexpr +13943: tuple(const pair<_U1, _U2>& __in) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(__in.first, __in.second) +13943: { ; } +13943: +13943: template = false> +13943: explicit constexpr +13943: tuple(const pair<_U1, _U2>& __in) +13943: noexcept(__nothrow_constructible()) +13943: : _Inherited(__in.first, __in.second) +13943: { ; } +13943: +13943: template = true> +13943: constexpr +13943: tuple(pair<_U1, _U2>&& __in) +13943: noexcept(__nothrow_constructible<_U1, _U2>()) +13943: : _Inherited(std::forward<_U1>(__in.first), +13943: std::forward<_U2>(__in.second)) +13943: { ; } +13943: +13943: template = false> +13943: explicit constexpr +13943: tuple(pair<_U1, _U2>&& __in) +13943: noexcept(__nothrow_constructible<_U1, _U2>()) +13943: : _Inherited(std::forward<_U1>(__in.first), +13943: std::forward<_U2>(__in.second)) +13943: { ; } +13943: +13943: +13943: +13943: template::value, _T1, _T2> = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a) +13943: : _Inherited(__tag, __a) { } +13943: +13943: template::value, _T1, _T2> = false> +13943: +13943: explicit +13943: tuple(allocator_arg_t __tag, const _Alloc& __a) +13943: : _Inherited(__tag, __a) { } +13943: +13943: template = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const _T1& __a1, const _T2& __a2) +13943: : _Inherited(__tag, __a, __a1, __a2) { } +13943: +13943: template = false> +13943: explicit +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const _T1& __a1, const _T2& __a2) +13943: : _Inherited(__tag, __a, __a1, __a2) { } +13943: +13943: template = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) +13943: : _Inherited(__tag, __a, std::forward<_U1>(__a1), +13943: std::forward<_U2>(__a2)) +13943: { ; } +13943: +13943: template = false> +13943: explicit +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: _U1&& __a1, _U2&& __a2) +13943: : _Inherited(__tag, __a, std::forward<_U1>(__a1), +13943: std::forward<_U2>(__a2)) +13943: { ; } +13943: +13943: template +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) +13943: : _Inherited(__tag, __a, static_cast(__in)) { } +13943: +13943: template +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) +13943: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } +13943: +13943: template = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const tuple<_U1, _U2>& __in) +13943: : _Inherited(__tag, __a, +13943: static_cast&>(__in)) +13943: { ; } +13943: +13943: template = false> +13943: explicit +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const tuple<_U1, _U2>& __in) +13943: : _Inherited(__tag, __a, +13943: static_cast&>(__in)) +13943: { ; } +13943: +13943: template = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) +13943: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +13943: { ; } +13943: +13943: template = false> +13943: explicit +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) +13943: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +13943: { ; } +13943: +13943: template = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const pair<_U1, _U2>& __in) +13943: : _Inherited(__tag, __a, __in.first, __in.second) +13943: { ; } +13943: +13943: template = false> +13943: explicit +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, +13943: const pair<_U1, _U2>& __in) +13943: : _Inherited(__tag, __a, __in.first, __in.second) +13943: { ; } +13943: +13943: template = true> +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) +13943: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), +13943: std::forward<_U2>(__in.second)) +13943: { ; } +13943: +13943: template = false> +13943: explicit +13943: +13943: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) +13943: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), +13943: std::forward<_U2>(__in.second)) +13943: { ; } +13943: +13943: +13943: +13943: +13943: tuple& +13943: operator=(__conditional_t<__assignable(), +13943: const tuple&, +13943: const __nonesuch&> __in) +13943: noexcept(__nothrow_assignable()) +13943: { +13943: this->_M_assign(__in); +13943: return *this; +13943: } +13943: +13943: +13943: tuple& +13943: operator=(__conditional_t<__assignable<_T1, _T2>(), +13943: tuple&&, +13943: __nonesuch&&> __in) +13943: noexcept(__nothrow_assignable<_T1, _T2>()) +13943: { +13943: this->_M_assign(std::move(__in)); +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: __enable_if_t<__assignable(), tuple&> +13943: operator=(const tuple<_U1, _U2>& __in) +13943: noexcept(__nothrow_assignable()) +13943: { +13943: this->_M_assign(__in); +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: __enable_if_t<__assignable<_U1, _U2>(), tuple&> +13943: operator=(tuple<_U1, _U2>&& __in) +13943: noexcept(__nothrow_assignable<_U1, _U2>()) +13943: { +13943: this->_M_assign(std::move(__in)); +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: __enable_if_t<__assignable(), tuple&> +13943: operator=(const pair<_U1, _U2>& __in) +13943: noexcept(__nothrow_assignable()) +13943: { +13943: this->_M_head(*this) = __in.first; +13943: this->_M_tail(*this)._M_head(*this) = __in.second; +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: __enable_if_t<__assignable<_U1, _U2>(), tuple&> +13943: operator=(pair<_U1, _U2>&& __in) +13943: noexcept(__nothrow_assignable<_U1, _U2>()) +13943: { +13943: this->_M_head(*this) = std::forward<_U1>(__in.first); +13943: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); +13943: return *this; +13943: } +13943: +13943: +13943: void +13943: swap(tuple& __in) +13943: noexcept(__and_<__is_nothrow_swappable<_T1>, +13943: __is_nothrow_swappable<_T2>>::value) +13943: { _Inherited::_M_swap(__in); } +13943: }; +13943: +13943: +13943: +13943: template +13943: struct tuple_size> +13943: : public integral_constant { }; +13943: +13943: +13943: template +13943: inline constexpr size_t tuple_size_v> +13943: = sizeof...(_Types); +13943: +13943: template +13943: inline constexpr size_t tuple_size_v> +13943: = sizeof...(_Types); +13943: +13943: +13943: +13943: template +13943: struct tuple_element<__i, tuple<_Types...>> +13943: { +13943: static_assert(__i < sizeof...(_Types), "tuple index must be in range"); +13943: +13943: using type = typename _Nth_type<__i, _Types...>::type; +13943: }; +13943: +13943: template +13943: constexpr _Head& +13943: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept +13943: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } +13943: +13943: template +13943: constexpr const _Head& +13943: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept +13943: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } +13943: +13943: +13943: template +13943: __enable_if_t<(__i >= sizeof...(_Types))> +13943: __get_helper(const tuple<_Types...>&) = delete; +13943: +13943: +13943: template +13943: constexpr __tuple_element_t<__i, tuple<_Elements...>>& +13943: get(tuple<_Elements...>& __t) noexcept +13943: { return std::__get_helper<__i>(__t); } +13943: +13943: +13943: template +13943: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& +13943: get(const tuple<_Elements...>& __t) noexcept +13943: { return std::__get_helper<__i>(__t); } +13943: +13943: +13943: template +13943: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& +13943: get(tuple<_Elements...>&& __t) noexcept +13943: { +13943: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; +13943: return std::forward<__element_type>(std::__get_helper<__i>(__t)); +13943: } +13943: +13943: +13943: template +13943: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& +13943: get(const tuple<_Elements...>&& __t) noexcept +13943: { +13943: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; +13943: return std::forward(std::__get_helper<__i>(__t)); +13943: } +13943: +13943: +13943: +13943: template +13943: constexpr __enable_if_t<(__i >= sizeof...(_Elements))> +13943: get(const tuple<_Elements...>&) = delete; +13943: +13943: +13943: +13943: +13943: template +13943: constexpr _Tp& +13943: get(tuple<_Types...>& __t) noexcept +13943: { +13943: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +13943: static_assert(__idx < sizeof...(_Types), +13943: "the type T in std::get must occur exactly once in the tuple"); +13943: return std::__get_helper<__idx>(__t); +13943: } +13943: +13943: +13943: template +13943: constexpr _Tp&& +13943: get(tuple<_Types...>&& __t) noexcept +13943: { +13943: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +13943: static_assert(__idx < sizeof...(_Types), +13943: "the type T in std::get must occur exactly once in the tuple"); +13943: return std::forward<_Tp>(std::__get_helper<__idx>(__t)); +13943: } +13943: +13943: +13943: template +13943: constexpr const _Tp& +13943: get(const tuple<_Types...>& __t) noexcept +13943: { +13943: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +13943: static_assert(__idx < sizeof...(_Types), +13943: "the type T in std::get must occur exactly once in the tuple"); +13943: return std::__get_helper<__idx>(__t); +13943: } +13943: +13943: +13943: +13943: template +13943: constexpr const _Tp&& +13943: get(const tuple<_Types...>&& __t) noexcept +13943: { +13943: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +13943: static_assert(__idx < sizeof...(_Types), +13943: "the type T in std::get must occur exactly once in the tuple"); +13943: return std::forward(std::__get_helper<__idx>(__t)); +13943: } +13943: +13943: +13943: +13943: template +13943: struct __tuple_compare +13943: { +13943: static constexpr bool +13943: __eq(const _Tp& __t, const _Up& __u) +13943: { +13943: return bool(std::get<__i>(__t) == std::get<__i>(__u)) +13943: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); +13943: } +13943: +13943: static constexpr bool +13943: __less(const _Tp& __t, const _Up& __u) +13943: { +13943: return bool(std::get<__i>(__t) < std::get<__i>(__u)) +13943: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) +13943: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); +13943: } +13943: }; +13943: +13943: template +13943: struct __tuple_compare<_Tp, _Up, __size, __size> +13943: { +13943: static constexpr bool +13943: __eq(const _Tp&, const _Up&) { return true; } +13943: +13943: static constexpr bool +13943: __less(const _Tp&, const _Up&) { return false; } +13943: }; +13943: +13943: template +13943: constexpr bool +13943: operator==(const tuple<_TElements...>& __t, +13943: const tuple<_UElements...>& __u) +13943: { +13943: static_assert(sizeof...(_TElements) == sizeof...(_UElements), +13943: "tuple objects can only be compared if they have equal sizes."); +13943: using __compare = __tuple_compare, +13943: tuple<_UElements...>, +13943: 0, sizeof...(_TElements)>; +13943: return __compare::__eq(__t, __u); +13943: } +13943: # 2596 "/usr/include/c++/14/tuple" 3 +13943: template +13943: constexpr bool +13943: operator<(const tuple<_TElements...>& __t, +13943: const tuple<_UElements...>& __u) +13943: { +13943: static_assert(sizeof...(_TElements) == sizeof...(_UElements), +13943: "tuple objects can only be compared if they have equal sizes."); +13943: using __compare = __tuple_compare, +13943: tuple<_UElements...>, +13943: 0, sizeof...(_TElements)>; +13943: return __compare::__less(__t, __u); +13943: } +13943: +13943: template +13943: constexpr bool +13943: operator!=(const tuple<_TElements...>& __t, +13943: const tuple<_UElements...>& __u) +13943: { return !(__t == __u); } +13943: +13943: template +13943: constexpr bool +13943: operator>(const tuple<_TElements...>& __t, +13943: const tuple<_UElements...>& __u) +13943: { return __u < __t; } +13943: +13943: template +13943: constexpr bool +13943: operator<=(const tuple<_TElements...>& __t, +13943: const tuple<_UElements...>& __u) +13943: { return !(__u < __t); } +13943: +13943: template +13943: constexpr bool +13943: operator>=(const tuple<_TElements...>& __t, +13943: const tuple<_UElements...>& __u) +13943: { return !(__t < __u); } +13943: +13943: +13943: +13943: +13943: template +13943: constexpr tuple::__type...> +13943: make_tuple(_Elements&&... __args) +13943: { +13943: typedef tuple::__type...> +13943: __result_type; +13943: return __result_type(std::forward<_Elements>(__args)...); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: constexpr tuple<_Elements&&...> +13943: forward_as_tuple(_Elements&&... __args) noexcept +13943: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } +13943: +13943: +13943: template +13943: struct __make_tuple_impl; +13943: +13943: template +13943: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> +13943: : __make_tuple_impl<_Idx + 1, +13943: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, +13943: _Tuple, _Nm> +13943: { }; +13943: +13943: template +13943: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> +13943: { +13943: typedef tuple<_Tp...> __type; +13943: }; +13943: +13943: template +13943: struct __do_make_tuple +13943: : __make_tuple_impl<0, tuple<>, _Tuple, tuple_size<_Tuple>::value> +13943: { }; +13943: +13943: +13943: template +13943: struct __make_tuple +13943: : public __do_make_tuple<__remove_cvref_t<_Tuple>> +13943: { }; +13943: +13943: +13943: template +13943: struct __combine_tuples; +13943: +13943: template<> +13943: struct __combine_tuples<> +13943: { +13943: typedef tuple<> __type; +13943: }; +13943: +13943: template +13943: struct __combine_tuples> +13943: { +13943: typedef tuple<_Ts...> __type; +13943: }; +13943: +13943: template +13943: struct __combine_tuples, tuple<_T2s...>, _Rem...> +13943: { +13943: typedef typename __combine_tuples, +13943: _Rem...>::__type __type; +13943: }; +13943: +13943: +13943: template +13943: struct __tuple_cat_result +13943: { +13943: typedef typename __combine_tuples +13943: ::__type...>::__type __type; +13943: }; +13943: +13943: +13943: +13943: template +13943: struct __make_1st_indices; +13943: +13943: template<> +13943: struct __make_1st_indices<> +13943: { +13943: typedef _Index_tuple<> __type; +13943: }; +13943: +13943: template +13943: struct __make_1st_indices<_Tp, _Tpls...> +13943: { +13943: typedef typename _Build_index_tuple::type>::value>::__type __type; +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __tuple_concater; +13943: +13943: template +13943: struct __tuple_concater<_Ret, _Index_tuple<_Is...>, _Tp, _Tpls...> +13943: { +13943: template +13943: static constexpr _Ret +13943: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) +13943: { +13943: typedef typename __make_1st_indices<_Tpls...>::__type __idx; +13943: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; +13943: return __next::_S_do(std::forward<_Tpls>(__tps)..., +13943: std::forward<_Us>(__us)..., +13943: std::get<_Is>(std::forward<_Tp>(__tp))...); +13943: } +13943: }; +13943: +13943: template +13943: struct __tuple_concater<_Ret, _Index_tuple<>> +13943: { +13943: template +13943: static constexpr _Ret +13943: _S_do(_Us&&... __us) +13943: { +13943: return _Ret(std::forward<_Us>(__us)...); +13943: } +13943: }; +13943: +13943: template +13943: struct __is_tuple_like_impl> : true_type +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template...>::value>::type> +13943: +13943: constexpr auto +13943: tuple_cat(_Tpls&&... __tpls) +13943: -> typename __tuple_cat_result<_Tpls...>::__type +13943: { +13943: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; +13943: typedef typename __make_1st_indices<_Tpls...>::__type __idx; +13943: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; +13943: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: constexpr tuple<_Elements&...> +13943: tie(_Elements&... __args) noexcept +13943: { return tuple<_Elements&...>(__args...); } +13943: +13943: +13943: template +13943: +13943: inline +13943: +13943: +13943: typename enable_if<__and_<__is_swappable<_Elements>...>::value +13943: >::type +13943: +13943: +13943: +13943: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: # 2818 "/usr/include/c++/14/tuple" 3 +13943: template +13943: +13943: typename enable_if...>::value>::type +13943: swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct _Swallow_assign +13943: { +13943: template +13943: constexpr const _Swallow_assign& +13943: operator=(const _Tp&) const +13943: { return *this; } +13943: }; +13943: # 2853 "/usr/include/c++/14/tuple" 3 +13943: inline constexpr _Swallow_assign ignore{}; +13943: +13943: +13943: template +13943: struct uses_allocator, _Alloc> : true_type { }; +13943: # 2868 "/usr/include/c++/14/tuple" 3 +13943: template +13943: template +13943: +13943: inline +13943: pair<_T1, _T2>:: +13943: pair(piecewise_construct_t, +13943: tuple<_Args1...> __first, tuple<_Args2...> __second) +13943: : pair(__first, __second, +13943: typename _Build_index_tuple::__type(), +13943: typename _Build_index_tuple::__type()) +13943: { } +13943: +13943: template +13943: template +13943: inline +13943: pair<_T1, _T2>:: +13943: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, +13943: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) +13943: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), +13943: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template class _Trait, typename _Tp, typename _Tuple> +13943: inline constexpr bool __unpack_std_tuple = false; +13943: +13943: template class _Trait, typename _Tp, typename... _Up> +13943: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, tuple<_Up...>> +13943: = _Trait<_Tp, _Up...>::value; +13943: +13943: template class _Trait, typename _Tp, typename... _Up> +13943: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, tuple<_Up...>&> +13943: = _Trait<_Tp, _Up&...>::value; +13943: +13943: template class _Trait, typename _Tp, typename... _Up> +13943: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, const tuple<_Up...>> +13943: = _Trait<_Tp, const _Up...>::value; +13943: +13943: template class _Trait, typename _Tp, typename... _Up> +13943: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, const tuple<_Up...>&> +13943: = _Trait<_Tp, const _Up&...>::value; +13943: +13943: +13943: +13943: template +13943: constexpr decltype(auto) +13943: __apply_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Idx...>) +13943: { +13943: return std::__invoke(std::forward<_Fn>(__f), +13943: std::get<_Idx>(std::forward<_Tuple>(__t))...); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: constexpr decltype(auto) +13943: apply(_Fn&& __f, _Tuple&& __t) +13943: noexcept(__unpack_std_tuple) +13943: { +13943: using _Indices +13943: = make_index_sequence>>; +13943: return std::__apply_impl(std::forward<_Fn>(__f), +13943: std::forward<_Tuple>(__t), +13943: _Indices{}); +13943: } +13943: +13943: +13943: +13943: template +13943: constexpr _Tp +13943: __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>) +13943: { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: constexpr _Tp +13943: make_from_tuple(_Tuple&& __t) +13943: noexcept(__unpack_std_tuple) +13943: { +13943: constexpr size_t __n = tuple_size_v>; +13943: +13943: if constexpr (__n == 1) +13943: { +13943: using _Elt = decltype(std::get<0>(std::declval<_Tuple>())); +13943: static_assert(!__reference_constructs_from_temporary(_Tp, _Elt)); +13943: } +13943: +13943: return __make_from_tuple_impl<_Tp>(std::forward<_Tuple>(__t), +13943: make_index_sequence<__n>{}); +13943: } +13943: # 3030 "/usr/include/c++/14/tuple" 3 +13943: +13943: } +13943: # 48 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: class memory_resource +13943: { +13943: static constexpr size_t _S_max_align = alignof(max_align_t); +13943: +13943: public: +13943: memory_resource() = default; +13943: memory_resource(const memory_resource&) = default; +13943: virtual ~memory_resource(); +13943: +13943: memory_resource& operator=(const memory_resource&) = default; +13943: +13943: [[nodiscard]] +13943: void* +13943: allocate(size_t __bytes, size_t __alignment = _S_max_align) +13943: __attribute__((__returns_nonnull__,__alloc_size__(2),__alloc_align__(3))) +13943: { return ::operator new(__bytes, do_allocate(__bytes, __alignment)); } +13943: +13943: void +13943: deallocate(void* __p, size_t __bytes, size_t __alignment = _S_max_align) +13943: __attribute__((__nonnull__)) +13943: { return do_deallocate(__p, __bytes, __alignment); } +13943: +13943: [[nodiscard]] +13943: bool +13943: is_equal(const memory_resource& __other) const noexcept +13943: { return do_is_equal(__other); } +13943: +13943: private: +13943: virtual void* +13943: do_allocate(size_t __bytes, size_t __alignment) = 0; +13943: +13943: virtual void +13943: do_deallocate(void* __p, size_t __bytes, size_t __alignment) = 0; +13943: +13943: virtual bool +13943: do_is_equal(const memory_resource& __other) const noexcept = 0; +13943: }; +13943: +13943: [[nodiscard]] +13943: inline bool +13943: operator==(const memory_resource& __a, const memory_resource& __b) noexcept +13943: { return &__a == &__b || __a.is_equal(__b); } +13943: +13943: +13943: [[nodiscard]] +13943: inline bool +13943: operator!=(const memory_resource& __a, const memory_resource& __b) noexcept +13943: { return !(__a == __b); } +13943: # 119 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: template +13943: class polymorphic_allocator +13943: { +13943: +13943: +13943: template +13943: struct __not_pair { using type = void; }; +13943: +13943: template +13943: struct __not_pair> { }; +13943: +13943: public: +13943: using value_type = _Tp; +13943: +13943: polymorphic_allocator() noexcept +13943: { +13943: extern memory_resource* get_default_resource() noexcept +13943: __attribute__((__returns_nonnull__)); +13943: _M_resource = get_default_resource(); +13943: } +13943: +13943: polymorphic_allocator(memory_resource* __r) noexcept +13943: __attribute__((__nonnull__)) +13943: : _M_resource(__r) +13943: { ; } +13943: +13943: polymorphic_allocator(const polymorphic_allocator& __other) = default; +13943: +13943: template +13943: polymorphic_allocator(const polymorphic_allocator<_Up>& __x) noexcept +13943: : _M_resource(__x.resource()) +13943: { } +13943: +13943: polymorphic_allocator& +13943: operator=(const polymorphic_allocator&) = delete; +13943: +13943: [[nodiscard]] +13943: _Tp* +13943: allocate(size_t __n) +13943: __attribute__((__returns_nonnull__)) +13943: { +13943: if ((__gnu_cxx::__int_traits::__max / sizeof(_Tp)) < __n) +13943: std::__throw_bad_array_new_length(); +13943: return static_cast<_Tp*>(_M_resource->allocate(__n * sizeof(_Tp), +13943: alignof(_Tp))); +13943: } +13943: +13943: void +13943: deallocate(_Tp* __p, size_t __n) noexcept +13943: __attribute__((__nonnull__)) +13943: { _M_resource->deallocate(__p, __n * sizeof(_Tp), alignof(_Tp)); } +13943: # 224 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: template +13943: __attribute__((__nonnull__)) +13943: typename __not_pair<_Tp1>::type +13943: construct(_Tp1* __p, _Args&&... __args) +13943: { +13943: +13943: +13943: using __use_tag +13943: = std::__uses_alloc_t<_Tp1, polymorphic_allocator, _Args...>; +13943: if constexpr (is_base_of_v<__uses_alloc0, __use_tag>) +13943: ::new(__p) _Tp1(std::forward<_Args>(__args)...); +13943: else if constexpr (is_base_of_v<__uses_alloc1_, __use_tag>) +13943: ::new(__p) _Tp1(allocator_arg, *this, +13943: std::forward<_Args>(__args)...); +13943: else +13943: ::new(__p) _Tp1(std::forward<_Args>(__args)..., *this); +13943: } +13943: +13943: template +13943: __attribute__((__nonnull__)) +13943: void +13943: construct(pair<_Tp1, _Tp2>* __p, piecewise_construct_t, +13943: tuple<_Args1...> __x, tuple<_Args2...> __y) +13943: { +13943: auto __x_tag = +13943: __use_alloc<_Tp1, polymorphic_allocator, _Args1...>(*this); +13943: auto __y_tag = +13943: __use_alloc<_Tp2, polymorphic_allocator, _Args2...>(*this); +13943: index_sequence_for<_Args1...> __x_i; +13943: index_sequence_for<_Args2...> __y_i; +13943: +13943: ::new(__p) pair<_Tp1, _Tp2>(piecewise_construct, +13943: _S_construct_p(__x_tag, __x_i, __x), +13943: _S_construct_p(__y_tag, __y_i, __y)); +13943: } +13943: +13943: template +13943: __attribute__((__nonnull__)) +13943: void +13943: construct(pair<_Tp1, _Tp2>* __p) +13943: { this->construct(__p, piecewise_construct, tuple<>(), tuple<>()); } +13943: +13943: template +13943: __attribute__((__nonnull__)) +13943: void +13943: construct(pair<_Tp1, _Tp2>* __p, _Up&& __x, _Vp&& __y) +13943: { +13943: this->construct(__p, piecewise_construct, +13943: std::forward_as_tuple(std::forward<_Up>(__x)), +13943: std::forward_as_tuple(std::forward<_Vp>(__y))); +13943: } +13943: +13943: template +13943: __attribute__((__nonnull__)) +13943: void +13943: construct(pair<_Tp1, _Tp2>* __p, const std::pair<_Up, _Vp>& __pr) +13943: { +13943: this->construct(__p, piecewise_construct, +13943: std::forward_as_tuple(__pr.first), +13943: std::forward_as_tuple(__pr.second)); +13943: } +13943: +13943: template +13943: __attribute__((__nonnull__)) +13943: void +13943: construct(pair<_Tp1, _Tp2>* __p, pair<_Up, _Vp>&& __pr) +13943: { +13943: this->construct(__p, piecewise_construct, +13943: std::forward_as_tuple(std::forward<_Up>(__pr.first)), +13943: std::forward_as_tuple(std::forward<_Vp>(__pr.second))); +13943: } +13943: # 307 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: template +13943: __attribute__((__nonnull__)) +13943: void +13943: destroy(_Up* __p) +13943: { __p->~_Up(); } +13943: +13943: polymorphic_allocator +13943: select_on_container_copy_construction() const noexcept +13943: { return polymorphic_allocator(); } +13943: +13943: memory_resource* +13943: resource() const noexcept +13943: __attribute__((__returns_nonnull__)) +13943: { return _M_resource; } +13943: +13943: +13943: +13943: [[nodiscard]] +13943: friend bool +13943: operator==(const polymorphic_allocator& __a, +13943: const polymorphic_allocator& __b) noexcept +13943: { return *__a.resource() == *__b.resource(); } +13943: +13943: +13943: [[nodiscard]] +13943: friend bool +13943: operator!=(const polymorphic_allocator& __a, +13943: const polymorphic_allocator& __b) noexcept +13943: { return !(__a == __b); } +13943: +13943: +13943: private: +13943: +13943: using __uses_alloc1_ = __uses_alloc1; +13943: using __uses_alloc2_ = __uses_alloc2; +13943: +13943: template +13943: static tuple<_Args&&...> +13943: _S_construct_p(__uses_alloc0, _Ind, tuple<_Args...>& __t) +13943: { return std::move(__t); } +13943: +13943: template +13943: static tuple +13943: _S_construct_p(__uses_alloc1_ __ua, index_sequence<_Ind...>, +13943: tuple<_Args...>& __t) +13943: { +13943: return { +13943: allocator_arg, *__ua._M_a, std::get<_Ind>(std::move(__t))... +13943: }; +13943: } +13943: +13943: template +13943: static tuple<_Args&&..., polymorphic_allocator> +13943: _S_construct_p(__uses_alloc2_ __ua, index_sequence<_Ind...>, +13943: tuple<_Args...>& __t) +13943: { return { std::get<_Ind>(std::move(__t))..., *__ua._M_a }; } +13943: +13943: +13943: memory_resource* _M_resource; +13943: }; +13943: +13943: template +13943: [[nodiscard]] +13943: inline bool +13943: operator==(const polymorphic_allocator<_Tp1>& __a, +13943: const polymorphic_allocator<_Tp2>& __b) noexcept +13943: { return *__a.resource() == *__b.resource(); } +13943: +13943: +13943: template +13943: [[nodiscard]] +13943: inline bool +13943: operator!=(const polymorphic_allocator<_Tp1>& __a, +13943: const polymorphic_allocator<_Tp2>& __b) noexcept +13943: { return !(__a == __b); } +13943: +13943: +13943: } +13943: +13943: template struct allocator_traits; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct allocator_traits> +13943: { +13943: +13943: using allocator_type = pmr::polymorphic_allocator<_Tp>; +13943: +13943: +13943: using value_type = _Tp; +13943: +13943: +13943: using pointer = _Tp*; +13943: +13943: +13943: using const_pointer = const _Tp*; +13943: +13943: +13943: using void_pointer = void*; +13943: +13943: +13943: using const_void_pointer = const void*; +13943: +13943: +13943: using difference_type = std::ptrdiff_t; +13943: +13943: +13943: using size_type = std::size_t; +13943: +13943: +13943: +13943: +13943: +13943: using propagate_on_container_copy_assignment = false_type; +13943: using propagate_on_container_move_assignment = false_type; +13943: using propagate_on_container_swap = false_type; +13943: +13943: static allocator_type +13943: select_on_container_copy_construction(const allocator_type&) noexcept +13943: { return allocator_type(); } +13943: +13943: +13943: +13943: using is_always_equal = false_type; +13943: +13943: template +13943: using rebind_alloc = pmr::polymorphic_allocator<_Up>; +13943: +13943: template +13943: using rebind_traits = allocator_traits>; +13943: # 450 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: [[nodiscard]] static pointer +13943: allocate(allocator_type& __a, size_type __n) +13943: { return __a.allocate(__n); } +13943: # 465 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: [[nodiscard]] static pointer +13943: allocate(allocator_type& __a, size_type __n, const_void_pointer) +13943: { return __a.allocate(__n); } +13943: # 477 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: static void +13943: deallocate(allocator_type& __a, pointer __p, size_type __n) +13943: { __a.deallocate(__p, __n); } +13943: # 492 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: template +13943: static void +13943: construct(allocator_type& __a, _Up* __p, _Args&&... __args) +13943: { __a.construct(__p, std::forward<_Args>(__args)...); } +13943: # 504 "/usr/include/c++/14/bits/memory_resource.h" 3 +13943: template +13943: static void +13943: destroy(allocator_type&, _Up* __p) +13943: noexcept(is_nothrow_destructible<_Up>::value) +13943: { __p->~_Up(); } +13943: +13943: +13943: +13943: +13943: +13943: static size_type +13943: max_size(const allocator_type&) noexcept +13943: { return size_t(-1) / sizeof(value_type); } +13943: }; +13943: +13943: +13943: } +13943: # 82 "/usr/include/c++/14/deque" 2 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr +13943: { +13943: template +13943: using deque = std::deque<_Tp, polymorphic_allocator<_Tp>>; +13943: } +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/usr/include/c++/14/functional" 1 3 +13943: # 46 "/usr/include/c++/14/functional" 3 +13943: +13943: # 47 "/usr/include/c++/14/functional" 3 +13943: # 55 "/usr/include/c++/14/functional" 3 +13943: # 1 "/usr/include/c++/14/bits/functional_hash.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/functional_hash.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/functional_hash.h" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/hash_bytes.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/hash_bytes.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/hash_bytes.h" 3 +13943: +13943: +13943: +13943: namespace std +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t +13943: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); +13943: +13943: +13943: +13943: +13943: +13943: size_t +13943: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); +13943: +13943: +13943: } +13943: # 37 "/usr/include/c++/14/bits/functional_hash.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 50 "/usr/include/c++/14/bits/functional_hash.h" 3 +13943: template +13943: struct __hash_base +13943: { +13943: typedef _Result result_type [[__deprecated__]]; +13943: typedef _Arg argument_type [[__deprecated__]]; +13943: }; +13943: +13943: +13943: template +13943: struct hash; +13943: +13943: template +13943: struct __poison_hash +13943: { +13943: static constexpr bool __enable_hash_call = false; +13943: private: +13943: +13943: __poison_hash(__poison_hash&&); +13943: ~__poison_hash(); +13943: }; +13943: +13943: template +13943: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> +13943: { +13943: static constexpr bool __enable_hash_call = true; +13943: }; +13943: +13943: +13943: template::value> +13943: struct __hash_enum +13943: { +13943: private: +13943: +13943: __hash_enum(__hash_enum&&); +13943: ~__hash_enum(); +13943: }; +13943: +13943: +13943: template +13943: struct __hash_enum<_Tp, true> : public __hash_base +13943: { +13943: size_t +13943: operator()(_Tp __val) const noexcept +13943: { +13943: using __type = typename underlying_type<_Tp>::type; +13943: return hash<__type>{}(static_cast<__type>(__val)); +13943: } +13943: }; +13943: +13943: +13943: +13943: template +13943: struct hash : __hash_enum<_Tp> +13943: { }; +13943: +13943: +13943: template +13943: struct hash<_Tp*> : public __hash_base +13943: { +13943: size_t +13943: operator()(_Tp* __p) const noexcept +13943: { return reinterpret_cast(__p); } +13943: }; +13943: # 125 "/usr/include/c++/14/bits/functional_hash.h" 3 +13943: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; +13943: +13943: +13943: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; +13943: # 201 "/usr/include/c++/14/bits/functional_hash.h" 3 +13943: struct _Hash_impl +13943: { +13943: static size_t +13943: hash(const void* __ptr, size_t __clength, +13943: size_t __seed = static_cast(0xc70f6907UL)) +13943: { return _Hash_bytes(__ptr, __clength, __seed); } +13943: +13943: template +13943: static size_t +13943: hash(const _Tp& __val) +13943: { return hash(&__val, sizeof(__val)); } +13943: +13943: template +13943: static size_t +13943: __hash_combine(const _Tp& __val, size_t __hash) +13943: { return hash(&__val, sizeof(__val), __hash); } +13943: }; +13943: +13943: +13943: struct _Fnv_hash_impl +13943: { +13943: static size_t +13943: hash(const void* __ptr, size_t __clength, +13943: size_t __seed = static_cast(2166136261UL)) +13943: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } +13943: +13943: template +13943: static size_t +13943: hash(const _Tp& __val) +13943: { return hash(&__val, sizeof(__val)); } +13943: +13943: template +13943: static size_t +13943: __hash_combine(const _Tp& __val, size_t __hash) +13943: { return hash(&__val, sizeof(__val), __hash); } +13943: }; +13943: +13943: +13943: template<> +13943: struct hash : public __hash_base +13943: { +13943: size_t +13943: operator()(float __val) const noexcept +13943: { +13943: +13943: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; +13943: } +13943: }; +13943: +13943: +13943: template<> +13943: struct hash : public __hash_base +13943: { +13943: size_t +13943: operator()(double __val) const noexcept +13943: { +13943: +13943: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; +13943: } +13943: }; +13943: +13943: +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: __attribute__ ((__pure__)) size_t +13943: operator()(long double __val) const noexcept; +13943: }; +13943: +13943: +13943: template<> +13943: struct hash : public __hash_base +13943: { +13943: size_t +13943: operator()(nullptr_t) const noexcept +13943: { return 0; } +13943: }; +13943: # 294 "/usr/include/c++/14/bits/functional_hash.h" 3 +13943: template +13943: struct __is_fast_hash : public std::true_type +13943: { }; +13943: +13943: template<> +13943: struct __is_fast_hash> : public std::false_type +13943: { }; +13943: +13943: +13943: } +13943: # 56 "/usr/include/c++/14/functional" 2 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/std_function.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/std_function.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/std_function.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/typeinfo" 1 3 +13943: # 32 "/usr/include/c++/14/typeinfo" 3 +13943: +13943: # 33 "/usr/include/c++/14/typeinfo" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 41 "/usr/include/c++/14/typeinfo" 2 3 +13943: +13943: #pragma GCC visibility push(default) +13943: +13943: extern "C++" { +13943: +13943: namespace __cxxabiv1 +13943: { +13943: class __class_type_info; +13943: } +13943: # 83 "/usr/include/c++/14/typeinfo" 3 +13943: namespace std +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: class type_info +13943: { +13943: public: +13943: +13943: +13943: +13943: +13943: virtual ~type_info(); +13943: +13943: +13943: +13943: const char* name() const noexcept +13943: { return __name[0] == '*' ? __name + 1 : __name; } +13943: +13943: +13943: +13943: bool before(const type_info& __arg) const noexcept; +13943: +13943: +13943: bool operator==(const type_info& __arg) const noexcept; +13943: +13943: +13943: bool operator!=(const type_info& __arg) const noexcept +13943: { return !operator==(__arg); } +13943: +13943: +13943: +13943: size_t hash_code() const noexcept +13943: { +13943: +13943: return _Hash_bytes(name(), __builtin_strlen(name()), +13943: static_cast(0xc70f6907UL)); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: virtual bool __is_pointer_p() const; +13943: +13943: +13943: virtual bool __is_function_p() const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, +13943: unsigned __outer) const; +13943: +13943: +13943: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, +13943: void **__obj_ptr) const; +13943: +13943: protected: +13943: const char *__name; +13943: +13943: explicit type_info(const char *__n): __name(__n) { } +13943: +13943: private: +13943: +13943: +13943: type_info& operator=(const type_info&) = delete; +13943: type_info(const type_info&) = delete; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool __equal(const type_info&) const noexcept; +13943: +13943: }; +13943: # 219 "/usr/include/c++/14/typeinfo" 3 +13943: class bad_cast : public exception +13943: { +13943: public: +13943: bad_cast() noexcept { } +13943: +13943: +13943: +13943: virtual ~bad_cast() noexcept; +13943: +13943: +13943: virtual const char* what() const noexcept; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: class bad_typeid : public exception +13943: { +13943: public: +13943: bad_typeid () noexcept { } +13943: +13943: +13943: +13943: virtual ~bad_typeid() noexcept; +13943: +13943: +13943: virtual const char* what() const noexcept; +13943: }; +13943: } +13943: +13943: } +13943: +13943: #pragma GCC visibility pop +13943: # 41 "/usr/include/c++/14/bits/std_function.h" 2 3 +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class bad_function_call : public std::exception +13943: { +13943: public: +13943: virtual ~bad_function_call() noexcept; +13943: +13943: const char* what() const noexcept; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __is_location_invariant +13943: : is_trivially_copyable<_Tp>::type +13943: { }; +13943: +13943: class _Undefined_class; +13943: +13943: union _Nocopy_types +13943: { +13943: void* _M_object; +13943: const void* _M_const_object; +13943: void (*_M_function_pointer)(); +13943: void (_Undefined_class::*_M_member_pointer)(); +13943: }; +13943: +13943: union [[gnu::may_alias]] _Any_data +13943: { +13943: void* _M_access() noexcept { return &_M_pod_data[0]; } +13943: const void* _M_access() const noexcept { return &_M_pod_data[0]; } +13943: +13943: template +13943: _Tp& +13943: _M_access() noexcept +13943: { return *static_cast<_Tp*>(_M_access()); } +13943: +13943: template +13943: const _Tp& +13943: _M_access() const noexcept +13943: { return *static_cast(_M_access()); } +13943: +13943: _Nocopy_types _M_unused; +13943: char _M_pod_data[sizeof(_Nocopy_types)]; +13943: }; +13943: +13943: enum _Manager_operation +13943: { +13943: __get_type_info, +13943: __get_functor_ptr, +13943: __clone_functor, +13943: __destroy_functor +13943: }; +13943: +13943: template +13943: class function; +13943: +13943: +13943: class _Function_base +13943: { +13943: public: +13943: static const size_t _M_max_size = sizeof(_Nocopy_types); +13943: static const size_t _M_max_align = __alignof__(_Nocopy_types); +13943: +13943: template +13943: class _Base_manager +13943: { +13943: protected: +13943: static const bool __stored_locally = +13943: (__is_location_invariant<_Functor>::value +13943: && sizeof(_Functor) <= _M_max_size +13943: && __alignof__(_Functor) <= _M_max_align +13943: && (_M_max_align % __alignof__(_Functor) == 0)); +13943: +13943: using _Local_storage = integral_constant; +13943: +13943: +13943: static _Functor* +13943: _M_get_pointer(const _Any_data& __source) noexcept +13943: { +13943: if constexpr (__stored_locally) +13943: { +13943: const _Functor& __f = __source._M_access<_Functor>(); +13943: return const_cast<_Functor*>(std::__addressof(__f)); +13943: } +13943: else +13943: return __source._M_access<_Functor*>(); +13943: } +13943: +13943: private: +13943: +13943: +13943: template +13943: static void +13943: _M_create(_Any_data& __dest, _Fn&& __f, true_type) +13943: { +13943: ::new (__dest._M_access()) _Functor(std::forward<_Fn>(__f)); +13943: } +13943: +13943: +13943: template +13943: static void +13943: _M_create(_Any_data& __dest, _Fn&& __f, false_type) +13943: { +13943: __dest._M_access<_Functor*>() +13943: = new _Functor(std::forward<_Fn>(__f)); +13943: } +13943: +13943: +13943: static void +13943: _M_destroy(_Any_data& __victim, true_type) +13943: { +13943: __victim._M_access<_Functor>().~_Functor(); +13943: } +13943: +13943: +13943: static void +13943: _M_destroy(_Any_data& __victim, false_type) +13943: { +13943: delete __victim._M_access<_Functor*>(); +13943: } +13943: +13943: public: +13943: static bool +13943: _M_manager(_Any_data& __dest, const _Any_data& __source, +13943: _Manager_operation __op) +13943: { +13943: switch (__op) +13943: { +13943: case __get_type_info: +13943: +13943: __dest._M_access() = &typeid(_Functor); +13943: +13943: +13943: +13943: break; +13943: +13943: case __get_functor_ptr: +13943: __dest._M_access<_Functor*>() = _M_get_pointer(__source); +13943: break; +13943: +13943: case __clone_functor: +13943: _M_init_functor(__dest, +13943: *const_cast(_M_get_pointer(__source))); +13943: break; +13943: +13943: case __destroy_functor: +13943: _M_destroy(__dest, _Local_storage()); +13943: break; +13943: } +13943: return false; +13943: } +13943: +13943: template +13943: static void +13943: _M_init_functor(_Any_data& __functor, _Fn&& __f) +13943: noexcept(__and_<_Local_storage, +13943: is_nothrow_constructible<_Functor, _Fn>>::value) +13943: { +13943: _M_create(__functor, std::forward<_Fn>(__f), _Local_storage()); +13943: } +13943: +13943: template +13943: static bool +13943: _M_not_empty_function(const function<_Signature>& __f) noexcept +13943: { return static_cast(__f); } +13943: +13943: template +13943: static bool +13943: _M_not_empty_function(_Tp* __fp) noexcept +13943: { return __fp != nullptr; } +13943: +13943: template +13943: static bool +13943: _M_not_empty_function(_Tp _Class::* __mp) noexcept +13943: { return __mp != nullptr; } +13943: +13943: template +13943: static bool +13943: _M_not_empty_function(const _Tp&) noexcept +13943: { return true; } +13943: }; +13943: +13943: _Function_base() = default; +13943: +13943: ~_Function_base() +13943: { +13943: if (_M_manager) +13943: _M_manager(_M_functor, _M_functor, __destroy_functor); +13943: } +13943: +13943: bool _M_empty() const { return !_M_manager; } +13943: +13943: using _Manager_type +13943: = bool (*)(_Any_data&, const _Any_data&, _Manager_operation); +13943: +13943: _Any_data _M_functor{}; +13943: _Manager_type _M_manager{}; +13943: }; +13943: +13943: template +13943: class _Function_handler; +13943: +13943: template +13943: class _Function_handler<_Res(_ArgTypes...), _Functor> +13943: : public _Function_base::_Base_manager<_Functor> +13943: { +13943: using _Base = _Function_base::_Base_manager<_Functor>; +13943: +13943: public: +13943: static bool +13943: _M_manager(_Any_data& __dest, const _Any_data& __source, +13943: _Manager_operation __op) +13943: { +13943: switch (__op) +13943: { +13943: +13943: case __get_type_info: +13943: __dest._M_access() = &typeid(_Functor); +13943: break; +13943: +13943: case __get_functor_ptr: +13943: __dest._M_access<_Functor*>() = _Base::_M_get_pointer(__source); +13943: break; +13943: +13943: default: +13943: _Base::_M_manager(__dest, __source, __op); +13943: } +13943: return false; +13943: } +13943: +13943: static _Res +13943: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) +13943: { +13943: return std::__invoke_r<_Res>(*_Base::_M_get_pointer(__functor), +13943: std::forward<_ArgTypes>(__args)...); +13943: } +13943: +13943: template +13943: static constexpr bool +13943: _S_nothrow_init() noexcept +13943: { +13943: return __and_>::value; +13943: } +13943: }; +13943: +13943: +13943: template<> +13943: class _Function_handler +13943: { +13943: public: +13943: static bool +13943: _M_manager(_Any_data&, const _Any_data&, _Manager_operation) +13943: { return false; } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template::value> +13943: struct _Target_handler +13943: : _Function_handler<_Signature, typename remove_cv<_Functor>::type> +13943: { }; +13943: +13943: template +13943: struct _Target_handler<_Signature, _Functor, false> +13943: : _Function_handler +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class function<_Res(_ArgTypes...)> +13943: : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, +13943: private _Function_base +13943: { +13943: +13943: +13943: template, function>::value> +13943: using _Decay_t +13943: = typename __enable_if_t>::type; +13943: +13943: template, +13943: typename _Res2 = __invoke_result<_DFunc&, _ArgTypes...>> +13943: struct _Callable +13943: : __is_invocable_impl<_Res2, _Res>::type +13943: { }; +13943: +13943: template +13943: using _Requires = __enable_if_t<_Cond::value, _Tp>; +13943: +13943: template +13943: using _Handler +13943: = _Function_handler<_Res(_ArgTypes...), __decay_t<_Functor>>; +13943: +13943: public: +13943: typedef _Res result_type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: function() noexcept +13943: : _Function_base() { } +13943: +13943: +13943: +13943: +13943: +13943: function(nullptr_t) noexcept +13943: : _Function_base() { } +13943: # 386 "/usr/include/c++/14/bits/std_function.h" 3 +13943: function(const function& __x) +13943: : _Function_base() +13943: { +13943: if (static_cast(__x)) +13943: { +13943: __x._M_manager(_M_functor, __x._M_functor, __clone_functor); +13943: _M_invoker = __x._M_invoker; +13943: _M_manager = __x._M_manager; +13943: } +13943: } +13943: # 404 "/usr/include/c++/14/bits/std_function.h" 3 +13943: function(function&& __x) noexcept +13943: : _Function_base(), _M_invoker(__x._M_invoker) +13943: { +13943: if (static_cast(__x)) +13943: { +13943: _M_functor = __x._M_functor; +13943: _M_manager = __x._M_manager; +13943: __x._M_manager = nullptr; +13943: __x._M_invoker = nullptr; +13943: } +13943: } +13943: # 433 "/usr/include/c++/14/bits/std_function.h" 3 +13943: template>> +13943: function(_Functor&& __f) +13943: noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>()) +13943: : _Function_base() +13943: { +13943: static_assert(is_copy_constructible<__decay_t<_Functor>>::value, +13943: "std::function target must be copy-constructible"); +13943: static_assert(is_constructible<__decay_t<_Functor>, _Functor>::value, +13943: "std::function target must be constructible from the " +13943: "constructor argument"); +13943: +13943: using _My_handler = _Handler<_Functor>; +13943: +13943: if (_My_handler::_M_not_empty_function(__f)) +13943: { +13943: _My_handler::_M_init_functor(_M_functor, +13943: std::forward<_Functor>(__f)); +13943: _M_invoker = &_My_handler::_M_invoke; +13943: _M_manager = &_My_handler::_M_manager; +13943: } +13943: } +13943: # 468 "/usr/include/c++/14/bits/std_function.h" 3 +13943: function& +13943: operator=(const function& __x) +13943: { +13943: function(__x).swap(*this); +13943: return *this; +13943: } +13943: # 486 "/usr/include/c++/14/bits/std_function.h" 3 +13943: function& +13943: operator=(function&& __x) noexcept +13943: { +13943: function(std::move(__x)).swap(*this); +13943: return *this; +13943: } +13943: # 500 "/usr/include/c++/14/bits/std_function.h" 3 +13943: function& +13943: operator=(nullptr_t) noexcept +13943: { +13943: if (_M_manager) +13943: { +13943: _M_manager(_M_functor, _M_functor, __destroy_functor); +13943: _M_manager = nullptr; +13943: _M_invoker = nullptr; +13943: } +13943: return *this; +13943: } +13943: # 529 "/usr/include/c++/14/bits/std_function.h" 3 +13943: template +13943: _Requires<_Callable<_Functor>, function&> +13943: operator=(_Functor&& __f) +13943: noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>()) +13943: { +13943: function(std::forward<_Functor>(__f)).swap(*this); +13943: return *this; +13943: } +13943: +13943: +13943: template +13943: function& +13943: operator=(reference_wrapper<_Functor> __f) noexcept +13943: { +13943: function(__f).swap(*this); +13943: return *this; +13943: } +13943: # 556 "/usr/include/c++/14/bits/std_function.h" 3 +13943: void swap(function& __x) noexcept +13943: { +13943: std::swap(_M_functor, __x._M_functor); +13943: std::swap(_M_manager, __x._M_manager); +13943: std::swap(_M_invoker, __x._M_invoker); +13943: } +13943: # 573 "/usr/include/c++/14/bits/std_function.h" 3 +13943: explicit operator bool() const noexcept +13943: { return !_M_empty(); } +13943: # 586 "/usr/include/c++/14/bits/std_function.h" 3 +13943: _Res +13943: operator()(_ArgTypes... __args) const +13943: { +13943: if (_M_empty()) +13943: __throw_bad_function_call(); +13943: return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...); +13943: } +13943: # 605 "/usr/include/c++/14/bits/std_function.h" 3 +13943: const type_info& +13943: target_type() const noexcept +13943: { +13943: if (_M_manager) +13943: { +13943: _Any_data __typeinfo_result; +13943: _M_manager(__typeinfo_result, _M_functor, __get_type_info); +13943: if (auto __ti = __typeinfo_result._M_access()) +13943: return *__ti; +13943: } +13943: return typeid(void); +13943: } +13943: # 630 "/usr/include/c++/14/bits/std_function.h" 3 +13943: template +13943: _Functor* +13943: target() noexcept +13943: { +13943: const function* __const_this = this; +13943: const _Functor* __func = __const_this->template target<_Functor>(); +13943: +13943: +13943: return *const_cast<_Functor**>(&__func); +13943: } +13943: +13943: template +13943: const _Functor* +13943: target() const noexcept +13943: { +13943: if constexpr (is_object<_Functor>::value) +13943: { +13943: +13943: +13943: using _Handler = _Target_handler<_Res(_ArgTypes...), _Functor>; +13943: +13943: if (_M_manager == &_Handler::_M_manager +13943: +13943: || (_M_manager && typeid(_Functor) == target_type()) +13943: +13943: ) +13943: { +13943: _Any_data __ptr; +13943: _M_manager(__ptr, _M_functor, __get_functor_ptr); +13943: return __ptr._M_access(); +13943: } +13943: } +13943: return nullptr; +13943: } +13943: +13943: +13943: private: +13943: using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...); +13943: _Invoker_type _M_invoker = nullptr; +13943: }; +13943: +13943: +13943: template +13943: struct __function_guide_helper +13943: { }; +13943: +13943: template +13943: struct __function_guide_helper< +13943: _Res (_Tp::*) (_Args...) noexcept(_Nx) +13943: > +13943: { using type = _Res(_Args...); }; +13943: +13943: template +13943: struct __function_guide_helper< +13943: _Res (_Tp::*) (_Args...) & noexcept(_Nx) +13943: > +13943: { using type = _Res(_Args...); }; +13943: +13943: template +13943: struct __function_guide_helper< +13943: _Res (_Tp::*) (_Args...) const noexcept(_Nx) +13943: > +13943: { using type = _Res(_Args...); }; +13943: +13943: template +13943: struct __function_guide_helper< +13943: _Res (_Tp::*) (_Args...) const & noexcept(_Nx) +13943: > +13943: { using type = _Res(_Args...); }; +13943: # 721 "/usr/include/c++/14/bits/std_function.h" 3 +13943: template +13943: using __function_guide_t = typename __function_guide_helper<_Op>::type; +13943: +13943: +13943: template +13943: function(_Res(*)(_ArgTypes...)) -> function<_Res(_ArgTypes...)>; +13943: +13943: template> +13943: function(_Fn) -> function<_Signature>; +13943: # 741 "/usr/include/c++/14/bits/std_function.h" 3 +13943: template +13943: inline bool +13943: operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept +13943: { return !static_cast(__f); } +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept +13943: { return !static_cast(__f); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept +13943: { return static_cast(__f); } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept +13943: { return static_cast(__f); } +13943: # 780 "/usr/include/c++/14/bits/std_function.h" 3 +13943: template +13943: inline void +13943: swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) noexcept +13943: { __x.swap(__y); } +13943: +13943: +13943: namespace __detail::__variant +13943: { +13943: template struct _Never_valueless_alt; +13943: +13943: +13943: +13943: template +13943: struct _Never_valueless_alt> +13943: : std::true_type +13943: { }; +13943: } +13943: +13943: +13943: +13943: } +13943: # 60 "/usr/include/c++/14/functional" 2 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/unordered_map" 1 3 +13943: # 32 "/usr/include/c++/14/unordered_map" 3 +13943: +13943: # 33 "/usr/include/c++/14/unordered_map" 3 +13943: # 41 "/usr/include/c++/14/unordered_map" 3 +13943: # 1 "/usr/include/c++/14/bits/unordered_map.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: # 1 "/usr/include/c++/14/bits/hashtable.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/hashtable.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/hashtable.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/hashtable_policy.h" 1 3 +13943: # 38 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +13943: # 1 "/usr/include/c++/14/ext/aligned_buffer.h" 1 3 +13943: # 32 "/usr/include/c++/14/ext/aligned_buffer.h" 3 +13943: +13943: # 33 "/usr/include/c++/14/ext/aligned_buffer.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace __gnu_cxx +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: struct __aligned_membuf +13943: { +13943: +13943: +13943: +13943: +13943: +13943: struct _Tp2 { _Tp _M_t; }; +13943: +13943: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; +13943: +13943: __aligned_membuf() = default; +13943: +13943: +13943: __aligned_membuf(std::nullptr_t) { } +13943: +13943: void* +13943: _M_addr() noexcept +13943: { return static_cast(&_M_storage); } +13943: +13943: const void* +13943: _M_addr() const noexcept +13943: { return static_cast(&_M_storage); } +13943: +13943: _Tp* +13943: _M_ptr() noexcept +13943: { return static_cast<_Tp*>(_M_addr()); } +13943: +13943: const _Tp* +13943: _M_ptr() const noexcept +13943: { return static_cast(_M_addr()); } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __aligned_buffer +13943: : std::aligned_storage +13943: { +13943: typename +13943: std::aligned_storage::type _M_storage; +13943: +13943: __aligned_buffer() = default; +13943: +13943: +13943: __aligned_buffer(std::nullptr_t) { } +13943: +13943: void* +13943: _M_addr() noexcept +13943: { +13943: return static_cast(&_M_storage); +13943: } +13943: +13943: const void* +13943: _M_addr() const noexcept +13943: { +13943: return static_cast(&_M_storage); +13943: } +13943: +13943: _Tp* +13943: _M_ptr() noexcept +13943: { return static_cast<_Tp*>(_M_addr()); } +13943: +13943: const _Tp* +13943: _M_ptr() const noexcept +13943: { return static_cast(_M_addr()); } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: } +13943: # 39 "/usr/include/c++/14/bits/hashtable_policy.h" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: class _Hashtable; +13943: +13943: namespace __detail +13943: { +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hashtable_base; +13943: +13943: +13943: +13943: template +13943: inline typename std::iterator_traits<_Iterator>::difference_type +13943: __distance_fw(_Iterator __first, _Iterator __last, +13943: std::input_iterator_tag) +13943: { return __first != __last ? 1 : 0; } +13943: +13943: template +13943: inline typename std::iterator_traits<_Iterator>::difference_type +13943: __distance_fw(_Iterator __first, _Iterator __last, +13943: std::forward_iterator_tag) +13943: { return std::distance(__first, __last); } +13943: +13943: template +13943: inline typename std::iterator_traits<_Iterator>::difference_type +13943: __distance_fw(_Iterator __first, _Iterator __last) +13943: { return __distance_fw(__first, __last, +13943: std::__iterator_category(__first)); } +13943: +13943: struct _Identity +13943: { +13943: template +13943: _Tp&& +13943: operator()(_Tp&& __x) const noexcept +13943: { return std::forward<_Tp>(__x); } +13943: }; +13943: +13943: struct _Select1st +13943: { +13943: template +13943: struct __1st_type; +13943: +13943: template +13943: struct __1st_type> +13943: { using type = _Tp; }; +13943: +13943: template +13943: struct __1st_type> +13943: { using type = const _Tp; }; +13943: +13943: template +13943: struct __1st_type<_Pair&> +13943: { using type = typename __1st_type<_Pair>::type&; }; +13943: +13943: template +13943: typename __1st_type<_Tp>::type&& +13943: operator()(_Tp&& __x) const noexcept +13943: { return std::forward<_Tp>(__x).first; } +13943: }; +13943: +13943: template +13943: struct _ConvertToValueType; +13943: +13943: template +13943: struct _ConvertToValueType<_Identity, _Value> +13943: { +13943: template +13943: constexpr _Kt&& +13943: operator()(_Kt&& __k) const noexcept +13943: { return std::forward<_Kt>(__k); } +13943: }; +13943: +13943: template +13943: struct _ConvertToValueType<_Select1st, _Value> +13943: { +13943: constexpr _Value&& +13943: operator()(_Value&& __x) const noexcept +13943: { return std::move(__x); } +13943: +13943: constexpr const _Value& +13943: operator()(const _Value& __x) const noexcept +13943: { return __x; } +13943: +13943: template +13943: constexpr std::pair<_Kt, _Val>&& +13943: operator()(std::pair<_Kt, _Val>&& __x) const noexcept +13943: { return std::move(__x); } +13943: +13943: template +13943: constexpr const std::pair<_Kt, _Val>& +13943: operator()(const std::pair<_Kt, _Val>& __x) const noexcept +13943: { return __x; } +13943: }; +13943: +13943: template +13943: struct _NodeBuilder; +13943: +13943: template<> +13943: struct _NodeBuilder<_Select1st> +13943: { +13943: template +13943: static auto +13943: _S_build(_Kt&& __k, _Arg&& __arg, const _NodeGenerator& __node_gen) +13943: -> typename _NodeGenerator::__node_ptr +13943: { +13943: return __node_gen(std::forward<_Kt>(__k), +13943: std::forward<_Arg>(__arg).second); +13943: } +13943: }; +13943: +13943: template<> +13943: struct _NodeBuilder<_Identity> +13943: { +13943: template +13943: static auto +13943: _S_build(_Kt&& __k, _Arg&&, const _NodeGenerator& __node_gen) +13943: -> typename _NodeGenerator::__node_ptr +13943: { return __node_gen(std::forward<_Kt>(__k)); } +13943: }; +13943: +13943: template +13943: struct _NodePtrGuard +13943: { +13943: _HashtableAlloc& _M_h; +13943: _NodePtr _M_ptr; +13943: +13943: ~_NodePtrGuard() +13943: { +13943: if (_M_ptr) +13943: _M_h._M_deallocate_node_ptr(_M_ptr); +13943: } +13943: }; +13943: +13943: template +13943: struct _Hashtable_alloc; +13943: +13943: +13943: +13943: template +13943: struct _ReuseOrAllocNode +13943: { +13943: private: +13943: using __node_alloc_type = _NodeAlloc; +13943: using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; +13943: using __node_alloc_traits = +13943: typename __hashtable_alloc::__node_alloc_traits; +13943: +13943: public: +13943: using __node_ptr = typename __hashtable_alloc::__node_ptr; +13943: +13943: _ReuseOrAllocNode(__node_ptr __nodes, __hashtable_alloc& __h) +13943: : _M_nodes(__nodes), _M_h(__h) { } +13943: _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; +13943: +13943: ~_ReuseOrAllocNode() +13943: { _M_h._M_deallocate_nodes(_M_nodes); } +13943: +13943: template +13943: __node_ptr +13943: operator()(_Args&&... __args) const +13943: { +13943: if (!_M_nodes) +13943: return _M_h._M_allocate_node(std::forward<_Args>(__args)...); +13943: +13943: __node_ptr __node = _M_nodes; +13943: _M_nodes = _M_nodes->_M_next(); +13943: __node->_M_nxt = nullptr; +13943: auto& __a = _M_h._M_node_allocator(); +13943: __node_alloc_traits::destroy(__a, __node->_M_valptr()); +13943: _NodePtrGuard<__hashtable_alloc, __node_ptr> __guard { _M_h, __node }; +13943: __node_alloc_traits::construct(__a, __node->_M_valptr(), +13943: std::forward<_Args>(__args)...); +13943: __guard._M_ptr = nullptr; +13943: return __node; +13943: } +13943: +13943: private: +13943: mutable __node_ptr _M_nodes; +13943: __hashtable_alloc& _M_h; +13943: }; +13943: +13943: +13943: +13943: template +13943: struct _AllocNode +13943: { +13943: private: +13943: using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; +13943: +13943: public: +13943: using __node_ptr = typename __hashtable_alloc::__node_ptr; +13943: +13943: _AllocNode(__hashtable_alloc& __h) +13943: : _M_h(__h) { } +13943: +13943: template +13943: __node_ptr +13943: operator()(_Args&&... __args) const +13943: { return _M_h._M_allocate_node(std::forward<_Args>(__args)...); } +13943: +13943: private: +13943: __hashtable_alloc& _M_h; +13943: }; +13943: # 285 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +13943: template +13943: struct _Hashtable_traits +13943: { +13943: using __hash_cached = __bool_constant<_Cache_hash_code>; +13943: using __constant_iterators = __bool_constant<_Constant_iterators>; +13943: using __unique_keys = __bool_constant<_Unique_keys>; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hashtable_hash_traits +13943: { +13943: static constexpr std::size_t +13943: __small_size_threshold() noexcept +13943: { return std::__is_fast_hash<_Hash>::value ? 0 : 20; } +13943: }; +13943: # 315 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +13943: struct _Hash_node_base +13943: { +13943: _Hash_node_base* _M_nxt; +13943: +13943: _Hash_node_base() noexcept : _M_nxt() { } +13943: +13943: _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hash_node_value_base +13943: { +13943: typedef _Value value_type; +13943: +13943: __gnu_cxx::__aligned_buffer<_Value> _M_storage; +13943: +13943: [[__gnu__::__always_inline__]] +13943: _Value* +13943: _M_valptr() noexcept +13943: { return _M_storage._M_ptr(); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: const _Value* +13943: _M_valptr() const noexcept +13943: { return _M_storage._M_ptr(); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: _Value& +13943: _M_v() noexcept +13943: { return *_M_valptr(); } +13943: +13943: [[__gnu__::__always_inline__]] +13943: const _Value& +13943: _M_v() const noexcept +13943: { return *_M_valptr(); } +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hash_node_code_cache +13943: { }; +13943: +13943: +13943: +13943: +13943: template<> +13943: struct _Hash_node_code_cache +13943: { std::size_t _M_hash_code; }; +13943: +13943: template +13943: struct _Hash_node_value +13943: : _Hash_node_value_base<_Value> +13943: , _Hash_node_code_cache<_Cache_hash_code> +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hash_node +13943: : _Hash_node_base +13943: , _Hash_node_value<_Value, _Cache_hash_code> +13943: { +13943: _Hash_node* +13943: _M_next() const noexcept +13943: { return static_cast<_Hash_node*>(this->_M_nxt); } +13943: }; +13943: +13943: +13943: template +13943: struct _Node_iterator_base +13943: { +13943: using __node_type = _Hash_node<_Value, _Cache_hash_code>; +13943: +13943: __node_type* _M_cur; +13943: +13943: _Node_iterator_base() : _M_cur(nullptr) { } +13943: _Node_iterator_base(__node_type* __p) noexcept +13943: : _M_cur(__p) { } +13943: +13943: void +13943: _M_incr() noexcept +13943: { _M_cur = _M_cur->_M_next(); } +13943: +13943: friend bool +13943: operator==(const _Node_iterator_base& __x, const _Node_iterator_base& __y) +13943: noexcept +13943: { return __x._M_cur == __y._M_cur; } +13943: +13943: +13943: friend bool +13943: operator!=(const _Node_iterator_base& __x, const _Node_iterator_base& __y) +13943: noexcept +13943: { return __x._M_cur != __y._M_cur; } +13943: +13943: }; +13943: +13943: +13943: template +13943: struct _Node_iterator +13943: : public _Node_iterator_base<_Value, __cache> +13943: { +13943: private: +13943: using __base_type = _Node_iterator_base<_Value, __cache>; +13943: using __node_type = typename __base_type::__node_type; +13943: +13943: public: +13943: using value_type = _Value; +13943: using difference_type = std::ptrdiff_t; +13943: using iterator_category = std::forward_iterator_tag; +13943: +13943: using pointer = __conditional_t<__constant_iterators, +13943: const value_type*, value_type*>; +13943: +13943: using reference = __conditional_t<__constant_iterators, +13943: const value_type&, value_type&>; +13943: +13943: _Node_iterator() = default; +13943: +13943: explicit +13943: _Node_iterator(__node_type* __p) noexcept +13943: : __base_type(__p) { } +13943: +13943: reference +13943: operator*() const noexcept +13943: { return this->_M_cur->_M_v(); } +13943: +13943: pointer +13943: operator->() const noexcept +13943: { return this->_M_cur->_M_valptr(); } +13943: +13943: _Node_iterator& +13943: operator++() noexcept +13943: { +13943: this->_M_incr(); +13943: return *this; +13943: } +13943: +13943: _Node_iterator +13943: operator++(int) noexcept +13943: { +13943: _Node_iterator __tmp(*this); +13943: this->_M_incr(); +13943: return __tmp; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Node_const_iterator +13943: : public _Node_iterator_base<_Value, __cache> +13943: { +13943: private: +13943: using __base_type = _Node_iterator_base<_Value, __cache>; +13943: using __node_type = typename __base_type::__node_type; +13943: +13943: public: +13943: typedef _Value value_type; +13943: typedef std::ptrdiff_t difference_type; +13943: typedef std::forward_iterator_tag iterator_category; +13943: +13943: typedef const value_type* pointer; +13943: typedef const value_type& reference; +13943: +13943: _Node_const_iterator() = default; +13943: +13943: explicit +13943: _Node_const_iterator(__node_type* __p) noexcept +13943: : __base_type(__p) { } +13943: +13943: _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, +13943: __cache>& __x) noexcept +13943: : __base_type(__x._M_cur) { } +13943: +13943: reference +13943: operator*() const noexcept +13943: { return this->_M_cur->_M_v(); } +13943: +13943: pointer +13943: operator->() const noexcept +13943: { return this->_M_cur->_M_valptr(); } +13943: +13943: _Node_const_iterator& +13943: operator++() noexcept +13943: { +13943: this->_M_incr(); +13943: return *this; +13943: } +13943: +13943: _Node_const_iterator +13943: operator++(int) noexcept +13943: { +13943: _Node_const_iterator __tmp(*this); +13943: this->_M_incr(); +13943: return __tmp; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct _Mod_range_hashing +13943: { +13943: typedef std::size_t first_argument_type; +13943: typedef std::size_t second_argument_type; +13943: typedef std::size_t result_type; +13943: +13943: result_type +13943: operator()(first_argument_type __num, +13943: second_argument_type __den) const noexcept +13943: { return __num % __den; } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct _Default_ranged_hash { }; +13943: +13943: +13943: +13943: struct _Prime_rehash_policy +13943: { +13943: using __has_load_factor = true_type; +13943: +13943: _Prime_rehash_policy(float __z = 1.0) noexcept +13943: : _M_max_load_factor(__z), _M_next_resize(0) { } +13943: +13943: float +13943: max_load_factor() const noexcept +13943: { return _M_max_load_factor; } +13943: +13943: +13943: std::size_t +13943: _M_next_bkt(std::size_t __n) const; +13943: +13943: +13943: std::size_t +13943: _M_bkt_for_elements(std::size_t __n) const +13943: { return __builtin_ceil(__n / (double)_M_max_load_factor); } +13943: +13943: +13943: +13943: +13943: +13943: std::pair +13943: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, +13943: std::size_t __n_ins) const; +13943: +13943: typedef std::size_t _State; +13943: +13943: _State +13943: _M_state() const +13943: { return _M_next_resize; } +13943: +13943: void +13943: _M_reset() noexcept +13943: { _M_next_resize = 0; } +13943: +13943: void +13943: _M_reset(_State __state) +13943: { _M_next_resize = __state; } +13943: +13943: static const std::size_t _S_growth_factor = 2; +13943: +13943: float _M_max_load_factor; +13943: mutable std::size_t _M_next_resize; +13943: }; +13943: +13943: +13943: struct _Mask_range_hashing +13943: { +13943: typedef std::size_t first_argument_type; +13943: typedef std::size_t second_argument_type; +13943: typedef std::size_t result_type; +13943: +13943: result_type +13943: operator()(first_argument_type __num, +13943: second_argument_type __den) const noexcept +13943: { return __num & (__den - 1); } +13943: }; +13943: +13943: +13943: inline std::size_t +13943: __clp2(std::size_t __n) noexcept +13943: { +13943: using __gnu_cxx::__int_traits; +13943: +13943: if (__n < 2) +13943: return __n; +13943: const unsigned __lz = sizeof(size_t) > sizeof(long) +13943: ? __builtin_clzll(__n - 1ull) +13943: : __builtin_clzl(__n - 1ul); +13943: +13943: return (size_t(1) << (__int_traits::__digits - __lz - 1)) << 1; +13943: } +13943: +13943: +13943: +13943: struct _Power2_rehash_policy +13943: { +13943: using __has_load_factor = true_type; +13943: +13943: _Power2_rehash_policy(float __z = 1.0) noexcept +13943: : _M_max_load_factor(__z), _M_next_resize(0) { } +13943: +13943: float +13943: max_load_factor() const noexcept +13943: { return _M_max_load_factor; } +13943: +13943: +13943: +13943: std::size_t +13943: _M_next_bkt(std::size_t __n) noexcept +13943: { +13943: if (__n == 0) +13943: +13943: +13943: +13943: return 1; +13943: +13943: const auto __max_width = std::min(sizeof(size_t), 8); +13943: const auto __max_bkt = size_t(1) << (__max_width * 8 - 1); +13943: std::size_t __res = __clp2(__n); +13943: +13943: if (__res == 0) +13943: __res = __max_bkt; +13943: else if (__res == 1) +13943: +13943: +13943: +13943: __res = 2; +13943: +13943: if (__res == __max_bkt) +13943: +13943: +13943: +13943: _M_next_resize = size_t(-1); +13943: else +13943: _M_next_resize +13943: = __builtin_floor(__res * (double)_M_max_load_factor); +13943: +13943: return __res; +13943: } +13943: +13943: +13943: std::size_t +13943: _M_bkt_for_elements(std::size_t __n) const noexcept +13943: { return __builtin_ceil(__n / (double)_M_max_load_factor); } +13943: +13943: +13943: +13943: +13943: +13943: std::pair +13943: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, +13943: std::size_t __n_ins) noexcept +13943: { +13943: if (__n_elt + __n_ins > _M_next_resize) +13943: { +13943: +13943: +13943: +13943: double __min_bkts +13943: = std::max(__n_elt + __n_ins, _M_next_resize ? 0 : 11) +13943: / (double)_M_max_load_factor; +13943: if (__min_bkts >= __n_bkt) +13943: return { true, +13943: _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, +13943: __n_bkt * _S_growth_factor)) }; +13943: +13943: _M_next_resize +13943: = __builtin_floor(__n_bkt * (double)_M_max_load_factor); +13943: return { false, 0 }; +13943: } +13943: else +13943: return { false, 0 }; +13943: } +13943: +13943: typedef std::size_t _State; +13943: +13943: _State +13943: _M_state() const noexcept +13943: { return _M_next_resize; } +13943: +13943: void +13943: _M_reset() noexcept +13943: { _M_next_resize = 0; } +13943: +13943: void +13943: _M_reset(_State __state) noexcept +13943: { _M_next_resize = __state; } +13943: +13943: static const std::size_t _S_growth_factor = 2; +13943: +13943: float _M_max_load_factor; +13943: std::size_t _M_next_resize; +13943: }; +13943: +13943: template +13943: struct _RehashStateGuard +13943: { +13943: _RehashPolicy* _M_guarded_obj; +13943: typename _RehashPolicy::_State _M_prev_state; +13943: +13943: _RehashStateGuard(_RehashPolicy& __policy) +13943: : _M_guarded_obj(std::__addressof(__policy)) +13943: , _M_prev_state(__policy._M_state()) +13943: { } +13943: _RehashStateGuard(const _RehashStateGuard&) = delete; +13943: +13943: ~_RehashStateGuard() +13943: { +13943: if (_M_guarded_obj) +13943: _M_guarded_obj->_M_reset(_M_prev_state); +13943: } +13943: }; +13943: # 761 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +13943: template +13943: struct _Map_base { }; +13943: +13943: +13943: template +13943: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> +13943: { +13943: using mapped_type = _Val; +13943: }; +13943: +13943: +13943: template +13943: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true> +13943: { +13943: private: +13943: using __hashtable_base = _Hashtable_base<_Key, pair, +13943: _Select1st, _Equal, _Hash, +13943: _RangeHash, _Unused, +13943: _Traits>; +13943: +13943: using __hashtable = _Hashtable<_Key, pair, _Alloc, +13943: _Select1st, _Equal, _Hash, _RangeHash, +13943: _Unused, _RehashPolicy, _Traits>; +13943: +13943: using __hash_code = typename __hashtable_base::__hash_code; +13943: +13943: public: +13943: using key_type = typename __hashtable_base::key_type; +13943: using mapped_type = _Val; +13943: +13943: mapped_type& +13943: operator[](const key_type& __k); +13943: +13943: mapped_type& +13943: operator[](key_type&& __k); +13943: +13943: +13943: +13943: mapped_type& +13943: at(const key_type& __k) +13943: { +13943: auto __ite = static_cast<__hashtable*>(this)->find(__k); +13943: if (!__ite._M_cur) +13943: __throw_out_of_range(("unordered_map::at")); +13943: return __ite->second; +13943: } +13943: +13943: const mapped_type& +13943: at(const key_type& __k) const +13943: { +13943: auto __ite = static_cast(this)->find(__k); +13943: if (!__ite._M_cur) +13943: __throw_out_of_range(("unordered_map::at")); +13943: return __ite->second; +13943: } +13943: }; +13943: +13943: template +13943: auto +13943: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: +13943: operator[](const key_type& __k) +13943: -> mapped_type& +13943: { +13943: __hashtable* __h = static_cast<__hashtable*>(this); +13943: __hash_code __code = __h->_M_hash_code(__k); +13943: std::size_t __bkt = __h->_M_bucket_index(__code); +13943: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) +13943: return __node->_M_v().second; +13943: +13943: typename __hashtable::_Scoped_node __node { +13943: __h, +13943: std::piecewise_construct, +13943: std::tuple(__k), +13943: std::tuple<>() +13943: }; +13943: auto __pos +13943: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); +13943: __node._M_node = nullptr; +13943: return __pos->second; +13943: } +13943: +13943: template +13943: auto +13943: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: +13943: operator[](key_type&& __k) +13943: -> mapped_type& +13943: { +13943: __hashtable* __h = static_cast<__hashtable*>(this); +13943: __hash_code __code = __h->_M_hash_code(__k); +13943: std::size_t __bkt = __h->_M_bucket_index(__code); +13943: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) +13943: return __node->_M_v().second; +13943: +13943: typename __hashtable::_Scoped_node __node { +13943: __h, +13943: std::piecewise_construct, +13943: std::forward_as_tuple(std::move(__k)), +13943: std::tuple<>() +13943: }; +13943: auto __pos +13943: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); +13943: __node._M_node = nullptr; +13943: return __pos->second; +13943: } +13943: +13943: +13943: template +13943: struct _Map_base, +13943: _Alloc, _Select1st, _Equal, _Hash, +13943: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> +13943: : _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, _Hash, +13943: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Insert_base +13943: { +13943: protected: +13943: using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, +13943: _Equal, _Hash, _RangeHash, +13943: _Unused, _Traits>; +13943: +13943: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, +13943: _Unused, _RehashPolicy, _Traits>; +13943: +13943: using __hash_cached = typename _Traits::__hash_cached; +13943: using __constant_iterators = typename _Traits::__constant_iterators; +13943: +13943: using __hashtable_alloc = _Hashtable_alloc< +13943: __alloc_rebind<_Alloc, _Hash_node<_Value, +13943: __hash_cached::value>>>; +13943: +13943: using value_type = typename __hashtable_base::value_type; +13943: using size_type = typename __hashtable_base::size_type; +13943: +13943: using __unique_keys = typename _Traits::__unique_keys; +13943: using __node_alloc_type = typename __hashtable_alloc::__node_alloc_type; +13943: using __node_gen_type = _AllocNode<__node_alloc_type>; +13943: +13943: __hashtable& +13943: _M_conjure_hashtable() +13943: { return *(static_cast<__hashtable*>(this)); } +13943: +13943: template +13943: void +13943: _M_insert_range(_InputIterator __first, _InputIterator __last, +13943: const _NodeGetter&, true_type __uks); +13943: +13943: template +13943: void +13943: _M_insert_range(_InputIterator __first, _InputIterator __last, +13943: const _NodeGetter&, false_type __uks); +13943: +13943: public: +13943: using iterator = _Node_iterator<_Value, __constant_iterators::value, +13943: __hash_cached::value>; +13943: +13943: using const_iterator = _Node_const_iterator<_Value, +13943: __constant_iterators::value, +13943: __hash_cached::value>; +13943: +13943: using __ireturn_type = __conditional_t<__unique_keys::value, +13943: std::pair, +13943: iterator>; +13943: +13943: __ireturn_type +13943: insert(const value_type& __v) +13943: { +13943: __hashtable& __h = _M_conjure_hashtable(); +13943: __node_gen_type __node_gen(__h); +13943: return __h._M_insert(__v, __node_gen, __unique_keys{}); +13943: } +13943: +13943: iterator +13943: insert(const_iterator __hint, const value_type& __v) +13943: { +13943: __hashtable& __h = _M_conjure_hashtable(); +13943: __node_gen_type __node_gen(__h); +13943: return __h._M_insert(__hint, __v, __node_gen, __unique_keys{}); +13943: } +13943: +13943: +13943: template +13943: std::pair +13943: try_emplace(const_iterator, _KType&& __k, _Args&&... __args) +13943: { +13943: __hashtable& __h = _M_conjure_hashtable(); +13943: auto __code = __h._M_hash_code(__k); +13943: std::size_t __bkt = __h._M_bucket_index(__code); +13943: if (auto __node = __h._M_find_node(__bkt, __k, __code)) +13943: return { iterator(__node), false }; +13943: +13943: typename __hashtable::_Scoped_node __node { +13943: &__h, +13943: std::piecewise_construct, +13943: std::forward_as_tuple(std::forward<_KType>(__k)), +13943: std::forward_as_tuple(std::forward<_Args>(__args)...) +13943: }; +13943: auto __it +13943: = __h._M_insert_unique_node(__bkt, __code, __node._M_node); +13943: __node._M_node = nullptr; +13943: return { __it, true }; +13943: } +13943: +13943: +13943: void +13943: insert(initializer_list __l) +13943: { this->insert(__l.begin(), __l.end()); } +13943: +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { +13943: __hashtable& __h = _M_conjure_hashtable(); +13943: __node_gen_type __node_gen(__h); +13943: return _M_insert_range(__first, __last, __node_gen, __unique_keys{}); +13943: } +13943: }; +13943: +13943: template +13943: template +13943: void +13943: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>:: +13943: _M_insert_range(_InputIterator __first, _InputIterator __last, +13943: const _NodeGetter& __node_gen, true_type __uks) +13943: { +13943: __hashtable& __h = _M_conjure_hashtable(); +13943: for (; __first != __last; ++__first) +13943: __h._M_insert(*__first, __node_gen, __uks); +13943: } +13943: +13943: template +13943: template +13943: void +13943: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>:: +13943: _M_insert_range(_InputIterator __first, _InputIterator __last, +13943: const _NodeGetter& __node_gen, false_type __uks) +13943: { +13943: using __rehash_guard_t = typename __hashtable::__rehash_guard_t; +13943: using __pair_type = std::pair; +13943: +13943: size_type __n_elt = __detail::__distance_fw(__first, __last); +13943: if (__n_elt == 0) +13943: return; +13943: +13943: __hashtable& __h = _M_conjure_hashtable(); +13943: __rehash_guard_t __rehash_guard(__h._M_rehash_policy); +13943: __pair_type __do_rehash +13943: = __h._M_rehash_policy._M_need_rehash(__h._M_bucket_count, +13943: __h._M_element_count, +13943: __n_elt); +13943: +13943: if (__do_rehash.first) +13943: __h._M_rehash(__do_rehash.second, __uks); +13943: +13943: __rehash_guard._M_guarded_obj = nullptr; +13943: for (; __first != __last; ++__first) +13943: __h._M_insert(*__first, __node_gen, __uks); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Insert; +13943: +13943: +13943: template +13943: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits, true> +13943: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits> +13943: { +13943: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, +13943: _Equal, _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: +13943: using value_type = typename __base_type::value_type; +13943: using iterator = typename __base_type::iterator; +13943: using const_iterator = typename __base_type::const_iterator; +13943: using __ireturn_type = typename __base_type::__ireturn_type; +13943: +13943: using __unique_keys = typename __base_type::__unique_keys; +13943: using __hashtable = typename __base_type::__hashtable; +13943: using __node_gen_type = typename __base_type::__node_gen_type; +13943: +13943: using __base_type::insert; +13943: +13943: __ireturn_type +13943: insert(value_type&& __v) +13943: { +13943: __hashtable& __h = this->_M_conjure_hashtable(); +13943: __node_gen_type __node_gen(__h); +13943: return __h._M_insert(std::move(__v), __node_gen, __unique_keys{}); +13943: } +13943: +13943: iterator +13943: insert(const_iterator __hint, value_type&& __v) +13943: { +13943: __hashtable& __h = this->_M_conjure_hashtable(); +13943: __node_gen_type __node_gen(__h); +13943: return __h._M_insert(__hint, std::move(__v), __node_gen, +13943: __unique_keys{}); +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> +13943: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits> +13943: { +13943: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, +13943: _Equal, _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: using value_type = typename __base_type::value_type; +13943: using iterator = typename __base_type::iterator; +13943: using const_iterator = typename __base_type::const_iterator; +13943: +13943: using __unique_keys = typename __base_type::__unique_keys; +13943: using __hashtable = typename __base_type::__hashtable; +13943: using __ireturn_type = typename __base_type::__ireturn_type; +13943: +13943: using __base_type::insert; +13943: +13943: template +13943: using __is_cons = std::is_constructible; +13943: +13943: template +13943: using _IFcons = std::enable_if<__is_cons<_Pair>::value>; +13943: +13943: template +13943: using _IFconsp = typename _IFcons<_Pair>::type; +13943: +13943: template> +13943: __ireturn_type +13943: insert(_Pair&& __v) +13943: { +13943: __hashtable& __h = this->_M_conjure_hashtable(); +13943: return __h._M_emplace(__unique_keys{}, std::forward<_Pair>(__v)); +13943: } +13943: +13943: template> +13943: iterator +13943: insert(const_iterator __hint, _Pair&& __v) +13943: { +13943: __hashtable& __h = this->_M_conjure_hashtable(); +13943: return __h._M_emplace(__hint, __unique_keys{}, +13943: std::forward<_Pair>(__v)); +13943: } +13943: }; +13943: +13943: template +13943: using __has_load_factor = typename _Policy::__has_load_factor; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: struct _Rehash_base; +13943: +13943: +13943: template +13943: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, +13943: false_type > +13943: { +13943: }; +13943: +13943: +13943: template +13943: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, +13943: true_type > +13943: { +13943: private: +13943: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, +13943: _Equal, _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: +13943: public: +13943: float +13943: max_load_factor() const noexcept +13943: { +13943: const __hashtable* __this = static_cast(this); +13943: return __this->__rehash_policy().max_load_factor(); +13943: } +13943: +13943: void +13943: max_load_factor(float __z) +13943: { +13943: __hashtable* __this = static_cast<__hashtable*>(this); +13943: __this->__rehash_policy(_RehashPolicy(__z)); +13943: } +13943: +13943: void +13943: reserve(std::size_t __n) +13943: { +13943: __hashtable* __this = static_cast<__hashtable*>(this); +13943: __this->rehash(__this->__rehash_policy()._M_bkt_for_elements(__n)); +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hashtable_ebo_helper; +13943: +13943: +13943: template +13943: struct _Hashtable_ebo_helper<_Nm, _Tp, true> +13943: : private _Tp +13943: { +13943: _Hashtable_ebo_helper() noexcept(noexcept(_Tp())) : _Tp() { } +13943: +13943: template +13943: _Hashtable_ebo_helper(_OtherTp&& __tp) +13943: : _Tp(std::forward<_OtherTp>(__tp)) +13943: { } +13943: +13943: const _Tp& _M_cget() const { return static_cast(*this); } +13943: _Tp& _M_get() { return static_cast<_Tp&>(*this); } +13943: }; +13943: +13943: +13943: template +13943: struct _Hashtable_ebo_helper<_Nm, _Tp, false> +13943: { +13943: _Hashtable_ebo_helper() = default; +13943: +13943: template +13943: _Hashtable_ebo_helper(_OtherTp&& __tp) +13943: : _M_tp(std::forward<_OtherTp>(__tp)) +13943: { } +13943: +13943: const _Tp& _M_cget() const { return _M_tp; } +13943: _Tp& _M_get() { return _M_tp; } +13943: +13943: private: +13943: _Tp _M_tp{}; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Local_iterator_base; +13943: # 1303 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +13943: template +13943: struct _Hash_code_base +13943: : private _Hashtable_ebo_helper<1, _Hash> +13943: { +13943: private: +13943: using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>; +13943: +13943: +13943: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, false>; +13943: +13943: public: +13943: typedef _Hash hasher; +13943: +13943: hasher +13943: hash_function() const +13943: { return _M_hash(); } +13943: +13943: protected: +13943: typedef std::size_t __hash_code; +13943: +13943: +13943: +13943: _Hash_code_base() = default; +13943: +13943: _Hash_code_base(const _Hash& __hash) : __ebo_hash(__hash) { } +13943: +13943: __hash_code +13943: _M_hash_code(const _Key& __k) const +13943: { +13943: static_assert(__is_invocable{}, +13943: "hash function must be invocable with an argument of key type"); +13943: return _M_hash()(__k); +13943: } +13943: +13943: template +13943: __hash_code +13943: _M_hash_code_tr(const _Kt& __k) const +13943: { +13943: static_assert(__is_invocable{}, +13943: "hash function must be invocable with an argument of key type"); +13943: return _M_hash()(__k); +13943: } +13943: +13943: __hash_code +13943: _M_hash_code(const _Hash_node_value<_Value, false>& __n) const +13943: { return _M_hash_code(_ExtractKey{}(__n._M_v())); } +13943: +13943: __hash_code +13943: _M_hash_code(const _Hash_node_value<_Value, true>& __n) const +13943: { return __n._M_hash_code; } +13943: +13943: std::size_t +13943: _M_bucket_index(__hash_code __c, std::size_t __bkt_count) const +13943: { return _RangeHash{}(__c, __bkt_count); } +13943: +13943: std::size_t +13943: _M_bucket_index(const _Hash_node_value<_Value, false>& __n, +13943: std::size_t __bkt_count) const +13943: noexcept( noexcept(declval()(declval())) +13943: && noexcept(declval()((__hash_code)0, +13943: (std::size_t)0)) ) +13943: { +13943: return _RangeHash{}(_M_hash_code(_ExtractKey{}(__n._M_v())), +13943: __bkt_count); +13943: } +13943: +13943: std::size_t +13943: _M_bucket_index(const _Hash_node_value<_Value, true>& __n, +13943: std::size_t __bkt_count) const +13943: noexcept( noexcept(declval()((__hash_code)0, +13943: (std::size_t)0)) ) +13943: { return _RangeHash{}(__n._M_hash_code, __bkt_count); } +13943: +13943: void +13943: _M_store_code(_Hash_node_code_cache&, __hash_code) const +13943: { } +13943: +13943: void +13943: _M_copy_code(_Hash_node_code_cache&, +13943: const _Hash_node_code_cache&) const +13943: { } +13943: +13943: void +13943: _M_store_code(_Hash_node_code_cache& __n, __hash_code __c) const +13943: { __n._M_hash_code = __c; } +13943: +13943: void +13943: _M_copy_code(_Hash_node_code_cache& __to, +13943: const _Hash_node_code_cache& __from) const +13943: { __to._M_hash_code = __from._M_hash_code; } +13943: +13943: void +13943: _M_swap(_Hash_code_base& __x) +13943: { std::swap(__ebo_hash::_M_get(), __x.__ebo_hash::_M_get()); } +13943: +13943: const _Hash& +13943: _M_hash() const { return __ebo_hash::_M_cget(); } +13943: }; +13943: +13943: +13943: template +13943: struct _Local_iterator_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, true> +13943: : public _Node_iterator_base<_Value, true> +13943: { +13943: protected: +13943: using __base_node_iter = _Node_iterator_base<_Value, true>; +13943: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, true>; +13943: +13943: _Local_iterator_base() = default; +13943: _Local_iterator_base(const __hash_code_base&, +13943: _Hash_node<_Value, true>* __p, +13943: std::size_t __bkt, std::size_t __bkt_count) +13943: : __base_node_iter(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) +13943: { } +13943: +13943: void +13943: _M_incr() +13943: { +13943: __base_node_iter::_M_incr(); +13943: if (this->_M_cur) +13943: { +13943: std::size_t __bkt +13943: = _RangeHash{}(this->_M_cur->_M_hash_code, _M_bucket_count); +13943: if (__bkt != _M_bucket) +13943: this->_M_cur = nullptr; +13943: } +13943: } +13943: +13943: std::size_t _M_bucket; +13943: std::size_t _M_bucket_count; +13943: +13943: public: +13943: std::size_t +13943: _M_get_bucket() const { return _M_bucket; } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template::value> +13943: struct _Hash_code_storage +13943: { +13943: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; +13943: +13943: _Tp* +13943: _M_h() { return _M_storage._M_ptr(); } +13943: +13943: const _Tp* +13943: _M_h() const { return _M_storage._M_ptr(); } +13943: }; +13943: +13943: +13943: template +13943: struct _Hash_code_storage<_Tp, true> +13943: { +13943: static_assert( std::is_empty<_Tp>::value, "Type must be empty" ); +13943: +13943: +13943: +13943: _Tp* +13943: _M_h() { return reinterpret_cast<_Tp*>(this); } +13943: +13943: const _Tp* +13943: _M_h() const { return reinterpret_cast(this); } +13943: }; +13943: +13943: template +13943: using __hash_code_for_local_iter +13943: = _Hash_code_storage<_Hash_code_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, false>>; +13943: +13943: +13943: template +13943: struct _Local_iterator_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, false> +13943: : __hash_code_for_local_iter<_Key, _Value, _ExtractKey, _Hash, _RangeHash, +13943: _Unused> +13943: , _Node_iterator_base<_Value, false> +13943: { +13943: protected: +13943: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, false>; +13943: using __node_iter_base = _Node_iterator_base<_Value, false>; +13943: +13943: _Local_iterator_base() : _M_bucket_count(-1) { } +13943: +13943: _Local_iterator_base(const __hash_code_base& __base, +13943: _Hash_node<_Value, false>* __p, +13943: std::size_t __bkt, std::size_t __bkt_count) +13943: : __node_iter_base(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) +13943: { _M_init(__base); } +13943: +13943: ~_Local_iterator_base() +13943: { +13943: if (_M_bucket_count != size_t(-1)) +13943: _M_destroy(); +13943: } +13943: +13943: _Local_iterator_base(const _Local_iterator_base& __iter) +13943: : __node_iter_base(__iter._M_cur), _M_bucket(__iter._M_bucket) +13943: , _M_bucket_count(__iter._M_bucket_count) +13943: { +13943: if (_M_bucket_count != size_t(-1)) +13943: _M_init(*__iter._M_h()); +13943: } +13943: +13943: _Local_iterator_base& +13943: operator=(const _Local_iterator_base& __iter) +13943: { +13943: if (_M_bucket_count != -1) +13943: _M_destroy(); +13943: this->_M_cur = __iter._M_cur; +13943: _M_bucket = __iter._M_bucket; +13943: _M_bucket_count = __iter._M_bucket_count; +13943: if (_M_bucket_count != -1) +13943: _M_init(*__iter._M_h()); +13943: return *this; +13943: } +13943: +13943: void +13943: _M_incr() +13943: { +13943: __node_iter_base::_M_incr(); +13943: if (this->_M_cur) +13943: { +13943: std::size_t __bkt = this->_M_h()->_M_bucket_index(*this->_M_cur, +13943: _M_bucket_count); +13943: if (__bkt != _M_bucket) +13943: this->_M_cur = nullptr; +13943: } +13943: } +13943: +13943: std::size_t _M_bucket; +13943: std::size_t _M_bucket_count; +13943: +13943: void +13943: _M_init(const __hash_code_base& __base) +13943: { ::new(this->_M_h()) __hash_code_base(__base); } +13943: +13943: void +13943: _M_destroy() { this->_M_h()->~__hash_code_base(); } +13943: +13943: public: +13943: std::size_t +13943: _M_get_bucket() const { return _M_bucket; } +13943: }; +13943: +13943: +13943: template +13943: struct _Local_iterator +13943: : public _Local_iterator_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, __cache> +13943: { +13943: private: +13943: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, __cache>; +13943: using __hash_code_base = typename __base_type::__hash_code_base; +13943: +13943: public: +13943: using value_type = _Value; +13943: using pointer = __conditional_t<__constant_iterators, +13943: const value_type*, value_type*>; +13943: using reference = __conditional_t<__constant_iterators, +13943: const value_type&, value_type&>; +13943: using difference_type = ptrdiff_t; +13943: using iterator_category = forward_iterator_tag; +13943: +13943: _Local_iterator() = default; +13943: +13943: _Local_iterator(const __hash_code_base& __base, +13943: _Hash_node<_Value, __cache>* __n, +13943: std::size_t __bkt, std::size_t __bkt_count) +13943: : __base_type(__base, __n, __bkt, __bkt_count) +13943: { } +13943: +13943: reference +13943: operator*() const +13943: { return this->_M_cur->_M_v(); } +13943: +13943: pointer +13943: operator->() const +13943: { return this->_M_cur->_M_valptr(); } +13943: +13943: _Local_iterator& +13943: operator++() +13943: { +13943: this->_M_incr(); +13943: return *this; +13943: } +13943: +13943: _Local_iterator +13943: operator++(int) +13943: { +13943: _Local_iterator __tmp(*this); +13943: this->_M_incr(); +13943: return __tmp; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Local_const_iterator +13943: : public _Local_iterator_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, __cache> +13943: { +13943: private: +13943: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, __cache>; +13943: using __hash_code_base = typename __base_type::__hash_code_base; +13943: +13943: public: +13943: typedef _Value value_type; +13943: typedef const value_type* pointer; +13943: typedef const value_type& reference; +13943: typedef std::ptrdiff_t difference_type; +13943: typedef std::forward_iterator_tag iterator_category; +13943: +13943: _Local_const_iterator() = default; +13943: +13943: _Local_const_iterator(const __hash_code_base& __base, +13943: _Hash_node<_Value, __cache>* __n, +13943: std::size_t __bkt, std::size_t __bkt_count) +13943: : __base_type(__base, __n, __bkt, __bkt_count) +13943: { } +13943: +13943: _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, +13943: __constant_iterators, +13943: __cache>& __x) +13943: : __base_type(__x) +13943: { } +13943: +13943: reference +13943: operator*() const +13943: { return this->_M_cur->_M_v(); } +13943: +13943: pointer +13943: operator->() const +13943: { return this->_M_cur->_M_valptr(); } +13943: +13943: _Local_const_iterator& +13943: operator++() +13943: { +13943: this->_M_incr(); +13943: return *this; +13943: } +13943: +13943: _Local_const_iterator +13943: operator++(int) +13943: { +13943: _Local_const_iterator __tmp(*this); +13943: this->_M_incr(); +13943: return __tmp; +13943: } +13943: }; +13943: # 1682 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +13943: template +13943: struct _Hashtable_base +13943: : public _Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHash, +13943: _Unused, _Traits::__hash_cached::value>, +13943: private _Hashtable_ebo_helper<0, _Equal> +13943: { +13943: public: +13943: typedef _Key key_type; +13943: typedef _Value value_type; +13943: typedef _Equal key_equal; +13943: typedef std::size_t size_type; +13943: typedef std::ptrdiff_t difference_type; +13943: +13943: using __traits_type = _Traits; +13943: using __hash_cached = typename __traits_type::__hash_cached; +13943: +13943: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, +13943: _Hash, _RangeHash, _Unused, +13943: __hash_cached::value>; +13943: +13943: using __hash_code = typename __hash_code_base::__hash_code; +13943: +13943: private: +13943: using _EqualEBO = _Hashtable_ebo_helper<0, _Equal>; +13943: +13943: static bool +13943: _S_equals(__hash_code, const _Hash_node_code_cache&) +13943: { return true; } +13943: +13943: static bool +13943: _S_node_equals(const _Hash_node_code_cache&, +13943: const _Hash_node_code_cache&) +13943: { return true; } +13943: +13943: static bool +13943: _S_equals(__hash_code __c, const _Hash_node_code_cache& __n) +13943: { return __c == __n._M_hash_code; } +13943: +13943: static bool +13943: _S_node_equals(const _Hash_node_code_cache& __lhn, +13943: const _Hash_node_code_cache& __rhn) +13943: { return __lhn._M_hash_code == __rhn._M_hash_code; } +13943: +13943: protected: +13943: _Hashtable_base() = default; +13943: +13943: _Hashtable_base(const _Hash& __hash, const _Equal& __eq) +13943: : __hash_code_base(__hash), _EqualEBO(__eq) +13943: { } +13943: +13943: bool +13943: _M_key_equals(const _Key& __k, +13943: const _Hash_node_value<_Value, +13943: __hash_cached::value>& __n) const +13943: { +13943: static_assert(__is_invocable{}, +13943: "key equality predicate must be invocable with two arguments of " +13943: "key type"); +13943: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); +13943: } +13943: +13943: template +13943: bool +13943: _M_key_equals_tr(const _Kt& __k, +13943: const _Hash_node_value<_Value, +13943: __hash_cached::value>& __n) const +13943: { +13943: static_assert( +13943: __is_invocable{}, +13943: "key equality predicate must be invocable with two arguments of " +13943: "key type"); +13943: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); +13943: } +13943: +13943: bool +13943: _M_equals(const _Key& __k, __hash_code __c, +13943: const _Hash_node_value<_Value, __hash_cached::value>& __n) const +13943: { return _S_equals(__c, __n) && _M_key_equals(__k, __n); } +13943: +13943: template +13943: bool +13943: _M_equals_tr(const _Kt& __k, __hash_code __c, +13943: const _Hash_node_value<_Value, +13943: __hash_cached::value>& __n) const +13943: { return _S_equals(__c, __n) && _M_key_equals_tr(__k, __n); } +13943: +13943: bool +13943: _M_node_equals( +13943: const _Hash_node_value<_Value, __hash_cached::value>& __lhn, +13943: const _Hash_node_value<_Value, __hash_cached::value>& __rhn) const +13943: { +13943: return _S_node_equals(__lhn, __rhn) +13943: && _M_key_equals(_ExtractKey{}(__lhn._M_v()), __rhn); +13943: } +13943: +13943: void +13943: _M_swap(_Hashtable_base& __x) +13943: { +13943: __hash_code_base::_M_swap(__x); +13943: std::swap(_EqualEBO::_M_get(), __x._EqualEBO::_M_get()); +13943: } +13943: +13943: const _Equal& +13943: _M_eq() const { return _EqualEBO::_M_cget(); } +13943: }; +13943: # 1798 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +13943: template +13943: struct _Equality; +13943: +13943: +13943: template +13943: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true> +13943: { +13943: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: +13943: bool +13943: _M_equal(const __hashtable&) const; +13943: }; +13943: +13943: template +13943: bool +13943: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: +13943: _M_equal(const __hashtable& __other) const +13943: { +13943: using __node_ptr = typename __hashtable::__node_ptr; +13943: const __hashtable* __this = static_cast(this); +13943: if (__this->size() != __other.size()) +13943: return false; +13943: +13943: for (auto __x_n = __this->_M_begin(); __x_n; __x_n = __x_n->_M_next()) +13943: { +13943: std::size_t __ybkt = __other._M_bucket_index(*__x_n); +13943: auto __prev_n = __other._M_buckets[__ybkt]; +13943: if (!__prev_n) +13943: return false; +13943: +13943: for (__node_ptr __n = static_cast<__node_ptr>(__prev_n->_M_nxt);; +13943: __n = __n->_M_next()) +13943: { +13943: if (__n->_M_v() == __x_n->_M_v()) +13943: break; +13943: +13943: if (!__n->_M_nxt +13943: || __other._M_bucket_index(*__n->_M_next()) != __ybkt) +13943: return false; +13943: } +13943: } +13943: +13943: return true; +13943: } +13943: +13943: +13943: template +13943: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> +13943: { +13943: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: +13943: bool +13943: _M_equal(const __hashtable&) const; +13943: }; +13943: +13943: template +13943: bool +13943: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false>:: +13943: _M_equal(const __hashtable& __other) const +13943: { +13943: using __node_ptr = typename __hashtable::__node_ptr; +13943: using const_iterator = typename __hashtable::const_iterator; +13943: const __hashtable* __this = static_cast(this); +13943: if (__this->size() != __other.size()) +13943: return false; +13943: +13943: for (auto __x_n = __this->_M_begin(); __x_n;) +13943: { +13943: std::size_t __x_count = 1; +13943: auto __x_n_end = __x_n->_M_next(); +13943: for (; __x_n_end +13943: && __this->key_eq()(_ExtractKey{}(__x_n->_M_v()), +13943: _ExtractKey{}(__x_n_end->_M_v())); +13943: __x_n_end = __x_n_end->_M_next()) +13943: ++__x_count; +13943: +13943: std::size_t __ybkt = __other._M_bucket_index(*__x_n); +13943: auto __y_prev_n = __other._M_buckets[__ybkt]; +13943: if (!__y_prev_n) +13943: return false; +13943: +13943: __node_ptr __y_n = static_cast<__node_ptr>(__y_prev_n->_M_nxt); +13943: for (;;) +13943: { +13943: if (__this->key_eq()(_ExtractKey{}(__y_n->_M_v()), +13943: _ExtractKey{}(__x_n->_M_v()))) +13943: break; +13943: +13943: auto __y_ref_n = __y_n; +13943: for (__y_n = __y_n->_M_next(); __y_n; __y_n = __y_n->_M_next()) +13943: if (!__other._M_node_equals(*__y_ref_n, *__y_n)) +13943: break; +13943: +13943: if (!__y_n || __other._M_bucket_index(*__y_n) != __ybkt) +13943: return false; +13943: } +13943: +13943: auto __y_n_end = __y_n; +13943: for (; __y_n_end; __y_n_end = __y_n_end->_M_next()) +13943: if (--__x_count == 0) +13943: break; +13943: +13943: if (__x_count != 0) +13943: return false; +13943: +13943: const_iterator __itx(__x_n), __itx_end(__x_n_end); +13943: const_iterator __ity(__y_n); +13943: if (!std::is_permutation(__itx, __itx_end, __ity)) +13943: return false; +13943: +13943: __x_n = __x_n_end; +13943: } +13943: return true; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hashtable_alloc : private _Hashtable_ebo_helper<0, _NodeAlloc> +13943: { +13943: private: +13943: using __ebo_node_alloc = _Hashtable_ebo_helper<0, _NodeAlloc>; +13943: +13943: template +13943: struct __get_value_type; +13943: template +13943: struct __get_value_type<_Hash_node<_Val, _Cache_hash_code>> +13943: { using type = _Val; }; +13943: +13943: public: +13943: using __node_type = typename _NodeAlloc::value_type; +13943: using __node_alloc_type = _NodeAlloc; +13943: +13943: using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; +13943: +13943: using __value_alloc_traits = typename __node_alloc_traits::template +13943: rebind_traits::type>; +13943: +13943: using __node_ptr = __node_type*; +13943: using __node_base = _Hash_node_base; +13943: using __node_base_ptr = __node_base*; +13943: using __buckets_alloc_type = +13943: __alloc_rebind<__node_alloc_type, __node_base_ptr>; +13943: using __buckets_alloc_traits = std::allocator_traits<__buckets_alloc_type>; +13943: using __buckets_ptr = __node_base_ptr*; +13943: +13943: _Hashtable_alloc() = default; +13943: _Hashtable_alloc(const _Hashtable_alloc&) = default; +13943: _Hashtable_alloc(_Hashtable_alloc&&) = default; +13943: +13943: template +13943: _Hashtable_alloc(_Alloc&& __a) +13943: : __ebo_node_alloc(std::forward<_Alloc>(__a)) +13943: { } +13943: +13943: __node_alloc_type& +13943: _M_node_allocator() +13943: { return __ebo_node_alloc::_M_get(); } +13943: +13943: const __node_alloc_type& +13943: _M_node_allocator() const +13943: { return __ebo_node_alloc::_M_cget(); } +13943: +13943: +13943: template +13943: __node_ptr +13943: _M_allocate_node(_Args&&... __args); +13943: +13943: +13943: void +13943: _M_deallocate_node(__node_ptr __n); +13943: +13943: +13943: void +13943: _M_deallocate_node_ptr(__node_ptr __n); +13943: +13943: +13943: +13943: void +13943: _M_deallocate_nodes(__node_ptr __n); +13943: +13943: __buckets_ptr +13943: _M_allocate_buckets(std::size_t __bkt_count); +13943: +13943: void +13943: _M_deallocate_buckets(__buckets_ptr, std::size_t __bkt_count); +13943: }; +13943: +13943: +13943: +13943: template +13943: template +13943: auto +13943: _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) +13943: -> __node_ptr +13943: { +13943: auto& __alloc = _M_node_allocator(); +13943: auto __nptr = __node_alloc_traits::allocate(__alloc, 1); +13943: __node_ptr __n = std::__to_address(__nptr); +13943: try +13943: { +13943: ::new ((void*)__n) __node_type; +13943: __node_alloc_traits::construct(__alloc, __n->_M_valptr(), +13943: std::forward<_Args>(__args)...); +13943: return __n; +13943: } +13943: catch(...) +13943: { +13943: __n->~__node_type(); +13943: __node_alloc_traits::deallocate(__alloc, __nptr, 1); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: void +13943: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_ptr __n) +13943: { +13943: __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr()); +13943: _M_deallocate_node_ptr(__n); +13943: } +13943: +13943: template +13943: void +13943: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node_ptr(__node_ptr __n) +13943: { +13943: typedef typename __node_alloc_traits::pointer _Ptr; +13943: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); +13943: __n->~__node_type(); +13943: __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); +13943: } +13943: +13943: template +13943: void +13943: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_ptr __n) +13943: { +13943: while (__n) +13943: { +13943: __node_ptr __tmp = __n; +13943: __n = __n->_M_next(); +13943: _M_deallocate_node(__tmp); +13943: } +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(std::size_t __bkt_count) +13943: -> __buckets_ptr +13943: { +13943: __buckets_alloc_type __alloc(_M_node_allocator()); +13943: +13943: auto __ptr = __buckets_alloc_traits::allocate(__alloc, __bkt_count); +13943: __buckets_ptr __p = std::__to_address(__ptr); +13943: __builtin_memset(__p, 0, __bkt_count * sizeof(__node_base_ptr)); +13943: return __p; +13943: } +13943: +13943: template +13943: void +13943: _Hashtable_alloc<_NodeAlloc>:: +13943: _M_deallocate_buckets(__buckets_ptr __bkts, +13943: std::size_t __bkt_count) +13943: { +13943: typedef typename __buckets_alloc_traits::pointer _Ptr; +13943: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); +13943: __buckets_alloc_type __alloc(_M_node_allocator()); +13943: __buckets_alloc_traits::deallocate(__alloc, __ptr, __bkt_count); +13943: } +13943: +13943: +13943: } +13943: +13943: +13943: } +13943: # 36 "/usr/include/c++/14/bits/hashtable.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/enable_special_members.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/enable_special_members.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/enable_special_members.h" 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: struct _Enable_default_constructor_tag +13943: { +13943: explicit constexpr _Enable_default_constructor_tag() = default; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Enable_default_constructor +13943: { +13943: constexpr _Enable_default_constructor() noexcept = default; +13943: constexpr _Enable_default_constructor(_Enable_default_constructor const&) +13943: noexcept = default; +13943: constexpr _Enable_default_constructor(_Enable_default_constructor&&) +13943: noexcept = default; +13943: _Enable_default_constructor& +13943: operator=(_Enable_default_constructor const&) noexcept = default; +13943: _Enable_default_constructor& +13943: operator=(_Enable_default_constructor&&) noexcept = default; +13943: +13943: +13943: constexpr explicit +13943: _Enable_default_constructor(_Enable_default_constructor_tag) { } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Enable_destructor { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Enable_copy_move { }; +13943: # 96 "/usr/include/c++/14/bits/enable_special_members.h" 3 +13943: template +13943: struct _Enable_special_members +13943: : private _Enable_default_constructor<_Default, _Tag>, +13943: private _Enable_destructor<_Destructor, _Tag>, +13943: private _Enable_copy_move<_Copy, _CopyAssignment, +13943: _Move, _MoveAssignment, +13943: _Tag> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct _Enable_default_constructor +13943: { +13943: constexpr _Enable_default_constructor() noexcept = delete; +13943: constexpr _Enable_default_constructor(_Enable_default_constructor const&) +13943: noexcept = default; +13943: constexpr _Enable_default_constructor(_Enable_default_constructor&&) +13943: noexcept = default; +13943: _Enable_default_constructor& +13943: operator=(_Enable_default_constructor const&) noexcept = default; +13943: _Enable_default_constructor& +13943: operator=(_Enable_default_constructor&&) noexcept = default; +13943: +13943: +13943: constexpr explicit +13943: _Enable_default_constructor(_Enable_default_constructor_tag) { } +13943: }; +13943: +13943: template +13943: struct _Enable_destructor +13943: { ~_Enable_destructor() noexcept = delete; }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = default; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = default; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = default; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = default; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = default; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = default; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = default; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = default; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: template +13943: struct _Enable_copy_move +13943: { +13943: constexpr _Enable_copy_move() noexcept = default; +13943: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +13943: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move const&) noexcept = delete; +13943: _Enable_copy_move& +13943: operator=(_Enable_copy_move&&) noexcept = delete; +13943: }; +13943: +13943: +13943: +13943: } +13943: # 37 "/usr/include/c++/14/bits/hashtable.h" 2 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/node_handle.h" 1 3 +13943: # 34 "/usr/include/c++/14/bits/node_handle.h" 3 +13943: +13943: # 35 "/usr/include/c++/14/bits/node_handle.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 37 "/usr/include/c++/14/bits/node_handle.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 64 "/usr/include/c++/14/bits/node_handle.h" 3 +13943: template +13943: class _Node_handle_common +13943: { +13943: using _AllocTraits = allocator_traits<_NodeAlloc>; +13943: +13943: public: +13943: using allocator_type = __alloc_rebind<_NodeAlloc, _Val>; +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return allocator_type(_M_alloc._M_alloc); +13943: } +13943: +13943: explicit operator bool() const noexcept { return _M_ptr != nullptr; } +13943: +13943: [[nodiscard]] bool empty() const noexcept { return _M_ptr == nullptr; } +13943: +13943: +13943: protected: +13943: constexpr _Node_handle_common() noexcept : _M_ptr() { } +13943: +13943: ~_Node_handle_common() +13943: { +13943: if (!empty()) +13943: _M_reset(); +13943: } +13943: +13943: _Node_handle_common(_Node_handle_common&& __nh) noexcept +13943: : _M_ptr(__nh._M_ptr) +13943: { +13943: if (_M_ptr) +13943: _M_move(std::move(__nh)); +13943: } +13943: +13943: _Node_handle_common& +13943: operator=(_Node_handle_common&& __nh) noexcept +13943: { +13943: if (empty()) +13943: { +13943: if (!__nh.empty()) +13943: _M_move(std::move(__nh)); +13943: } +13943: else if (__nh.empty()) +13943: _M_reset(); +13943: else +13943: { +13943: +13943: _AllocTraits::destroy(*_M_alloc, _M_ptr->_M_valptr()); +13943: _AllocTraits::deallocate(*_M_alloc, _M_ptr, 1); +13943: +13943: _M_alloc = __nh._M_alloc.release(); +13943: _M_ptr = __nh._M_ptr; +13943: __nh._M_ptr = nullptr; +13943: } +13943: return *this; +13943: } +13943: +13943: _Node_handle_common(typename _AllocTraits::pointer __ptr, +13943: const _NodeAlloc& __alloc) +13943: : _M_ptr(__ptr), _M_alloc(__alloc) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__ptr != nullptr)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: void +13943: _M_swap(_Node_handle_common& __nh) noexcept +13943: { +13943: if (empty()) +13943: { +13943: if (!__nh.empty()) +13943: _M_move(std::move(__nh)); +13943: } +13943: else if (__nh.empty()) +13943: __nh._M_move(std::move(*this)); +13943: else +13943: { +13943: using std::swap; +13943: swap(_M_ptr, __nh._M_ptr); +13943: _M_alloc.swap(__nh._M_alloc); +13943: } +13943: } +13943: +13943: private: +13943: +13943: +13943: +13943: void +13943: _M_move(_Node_handle_common&& __nh) noexcept +13943: { +13943: ::new (std::__addressof(_M_alloc)) _NodeAlloc(__nh._M_alloc.release()); +13943: _M_ptr = __nh._M_ptr; +13943: __nh._M_ptr = nullptr; +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: _M_reset() noexcept +13943: { +13943: _NodeAlloc __alloc = _M_alloc.release(); +13943: _AllocTraits::destroy(__alloc, _M_ptr->_M_valptr()); +13943: _AllocTraits::deallocate(__alloc, _M_ptr, 1); +13943: _M_ptr = nullptr; +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: release() noexcept +13943: { +13943: _M_alloc.release(); +13943: _M_ptr = nullptr; +13943: } +13943: +13943: protected: +13943: typename _AllocTraits::pointer _M_ptr; +13943: +13943: private: +13943: +13943: +13943: union _Optional_alloc +13943: { +13943: _Optional_alloc() { } +13943: ~_Optional_alloc() { } +13943: +13943: _Optional_alloc(_Optional_alloc&&) = delete; +13943: _Optional_alloc& operator=(_Optional_alloc&&) = delete; +13943: +13943: _Optional_alloc(const _NodeAlloc& __alloc) noexcept +13943: : _M_alloc(__alloc) +13943: { } +13943: +13943: +13943: void +13943: operator=(_NodeAlloc&& __alloc) noexcept +13943: { +13943: using _ATr = _AllocTraits; +13943: if constexpr (_ATr::propagate_on_container_move_assignment::value) +13943: _M_alloc = std::move(__alloc); +13943: else if constexpr (!_AllocTraits::is_always_equal::value) +13943: do { if (std::__is_constant_evaluated() && !bool(_M_alloc == __alloc)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: +13943: void +13943: swap(_Optional_alloc& __other) noexcept +13943: { +13943: using std::swap; +13943: if constexpr (_AllocTraits::propagate_on_container_swap::value) +13943: swap(_M_alloc, __other._M_alloc); +13943: else if constexpr (!_AllocTraits::is_always_equal::value) +13943: do { if (std::__is_constant_evaluated() && !bool(_M_alloc == __other._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: +13943: _NodeAlloc& operator*() noexcept { return _M_alloc; } +13943: +13943: +13943: _NodeAlloc release() noexcept +13943: { +13943: _NodeAlloc __tmp = std::move(_M_alloc); +13943: _M_alloc.~_NodeAlloc(); +13943: return __tmp; +13943: } +13943: +13943: [[__no_unique_address__]] _NodeAlloc _M_alloc; +13943: }; +13943: +13943: [[__no_unique_address__]] _Optional_alloc _M_alloc; +13943: +13943: template +13943: friend class _Rb_tree; +13943: +13943: template +13943: friend class _Hashtable; +13943: +13943: +13943: }; +13943: +13943: +13943: template +13943: class _Node_handle : public _Node_handle_common<_Value, _NodeAlloc> +13943: { +13943: public: +13943: constexpr _Node_handle() noexcept = default; +13943: ~_Node_handle() = default; +13943: _Node_handle(_Node_handle&&) noexcept = default; +13943: +13943: _Node_handle& +13943: operator=(_Node_handle&&) noexcept = default; +13943: +13943: using key_type = _Key; +13943: using mapped_type = typename _Value::second_type; +13943: +13943: key_type& +13943: key() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return *_M_pkey; +13943: } +13943: +13943: mapped_type& +13943: mapped() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return *_M_pmapped; +13943: } +13943: +13943: void +13943: swap(_Node_handle& __nh) noexcept +13943: { +13943: this->_M_swap(__nh); +13943: using std::swap; +13943: swap(_M_pkey, __nh._M_pkey); +13943: swap(_M_pmapped, __nh._M_pmapped); +13943: } +13943: +13943: friend void +13943: swap(_Node_handle& __x, _Node_handle& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: private: +13943: using _AllocTraits = allocator_traits<_NodeAlloc>; +13943: +13943: _Node_handle(typename _AllocTraits::pointer __ptr, +13943: const _NodeAlloc& __alloc) +13943: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc) +13943: { +13943: if (__ptr) +13943: { +13943: auto& __key = const_cast<_Key&>(__ptr->_M_valptr()->first); +13943: _M_pkey = _S_pointer_to(__key); +13943: _M_pmapped = _S_pointer_to(__ptr->_M_valptr()->second); +13943: } +13943: else +13943: { +13943: _M_pkey = nullptr; +13943: _M_pmapped = nullptr; +13943: } +13943: } +13943: +13943: template +13943: using __pointer +13943: = __ptr_rebind>; +13943: +13943: __pointer<_Key> _M_pkey = nullptr; +13943: __pointer _M_pmapped = nullptr; +13943: +13943: template +13943: __pointer<_Tp> +13943: _S_pointer_to(_Tp& __obj) +13943: { return pointer_traits<__pointer<_Tp>>::pointer_to(__obj); } +13943: +13943: const key_type& +13943: _M_key() const noexcept { return key(); } +13943: +13943: template +13943: friend class _Rb_tree; +13943: +13943: template +13943: friend class _Hashtable; +13943: }; +13943: +13943: +13943: template +13943: class _Node_handle<_Value, _Value, _NodeAlloc> +13943: : public _Node_handle_common<_Value, _NodeAlloc> +13943: { +13943: public: +13943: constexpr _Node_handle() noexcept = default; +13943: ~_Node_handle() = default; +13943: _Node_handle(_Node_handle&&) noexcept = default; +13943: +13943: _Node_handle& +13943: operator=(_Node_handle&&) noexcept = default; +13943: +13943: using value_type = _Value; +13943: +13943: value_type& +13943: value() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return *this->_M_ptr->_M_valptr(); +13943: } +13943: +13943: void +13943: swap(_Node_handle& __nh) noexcept +13943: { this->_M_swap(__nh); } +13943: +13943: friend void +13943: swap(_Node_handle& __x, _Node_handle& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: private: +13943: using _AllocTraits = allocator_traits<_NodeAlloc>; +13943: +13943: _Node_handle(typename _AllocTraits::pointer __ptr, +13943: const _NodeAlloc& __alloc) +13943: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc) { } +13943: +13943: const value_type& +13943: _M_key() const noexcept { return value(); } +13943: +13943: template +13943: friend class _Rb_tree; +13943: +13943: template +13943: friend class _Hashtable; +13943: }; +13943: +13943: +13943: template +13943: struct _Node_insert_return +13943: { +13943: _Iterator position = _Iterator(); +13943: bool inserted = false; +13943: _NodeHandle node; +13943: }; +13943: +13943: +13943: +13943: +13943: } +13943: # 40 "/usr/include/c++/14/bits/hashtable.h" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: using __cache_default +13943: = __not_<__and_< +13943: __is_fast_hash<_Hash>, +13943: +13943: __is_nothrow_invocable>>; +13943: +13943: +13943: +13943: +13943: template +13943: using _Hashtable_enable_default_ctor +13943: = _Enable_default_constructor<__and_, +13943: is_default_constructible<_Hash>, +13943: is_default_constructible<_Allocator>>{}, +13943: __detail::_Hash_node_base>; +13943: # 181 "/usr/include/c++/14/bits/hashtable.h" 3 +13943: template +13943: class _Hashtable +13943: : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _Traits>, +13943: public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>, +13943: public __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>, +13943: public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>, +13943: public __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>, +13943: private __detail::_Hashtable_alloc< +13943: __alloc_rebind<_Alloc, +13943: __detail::_Hash_node<_Value, +13943: _Traits::__hash_cached::value>>>, +13943: private _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc> +13943: { +13943: static_assert(is_same::type, _Value>::value, +13943: "unordered container must have a non-const, non-volatile value_type"); +13943: +13943: +13943: +13943: +13943: +13943: using __traits_type = _Traits; +13943: using __hash_cached = typename __traits_type::__hash_cached; +13943: using __constant_iterators = typename __traits_type::__constant_iterators; +13943: using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; +13943: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; +13943: +13943: using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; +13943: +13943: using __node_value_type = +13943: __detail::_Hash_node_value<_Value, __hash_cached::value>; +13943: using __node_ptr = typename __hashtable_alloc::__node_ptr; +13943: using __value_alloc_traits = +13943: typename __hashtable_alloc::__value_alloc_traits; +13943: using __node_alloc_traits = +13943: typename __hashtable_alloc::__node_alloc_traits; +13943: using __node_base = typename __hashtable_alloc::__node_base; +13943: using __node_base_ptr = typename __hashtable_alloc::__node_base_ptr; +13943: using __buckets_ptr = typename __hashtable_alloc::__buckets_ptr; +13943: +13943: using __insert_base = __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, +13943: _Equal, _Hash, +13943: _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: using __enable_default_ctor +13943: = _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc>; +13943: using __rehash_guard_t +13943: = __detail::_RehashStateGuard<_RehashPolicy>; +13943: +13943: public: +13943: typedef _Key key_type; +13943: typedef _Value value_type; +13943: typedef _Alloc allocator_type; +13943: typedef _Equal key_equal; +13943: +13943: +13943: +13943: typedef typename __value_alloc_traits::pointer pointer; +13943: typedef typename __value_alloc_traits::const_pointer const_pointer; +13943: typedef value_type& reference; +13943: typedef const value_type& const_reference; +13943: +13943: using iterator = typename __insert_base::iterator; +13943: +13943: using const_iterator = typename __insert_base::const_iterator; +13943: +13943: using local_iterator = __detail::_Local_iterator; +13943: +13943: using const_local_iterator = __detail::_Local_const_iterator< +13943: key_type, _Value, +13943: _ExtractKey, _Hash, _RangeHash, _Unused, +13943: __constant_iterators::value, __hash_cached::value>; +13943: +13943: private: +13943: using __rehash_type = _RehashPolicy; +13943: +13943: using __unique_keys = typename __traits_type::__unique_keys; +13943: +13943: using __hashtable_base = __detail:: +13943: _Hashtable_base<_Key, _Value, _ExtractKey, +13943: _Equal, _Hash, _RangeHash, _Unused, _Traits>; +13943: +13943: using __hash_code_base = typename __hashtable_base::__hash_code_base; +13943: using __hash_code = typename __hashtable_base::__hash_code; +13943: using __ireturn_type = typename __insert_base::__ireturn_type; +13943: +13943: using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, +13943: _Equal, _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: +13943: using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, +13943: _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: +13943: using __eq_base = __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, +13943: _Equal, _Hash, _RangeHash, _Unused, +13943: _RehashPolicy, _Traits>; +13943: +13943: using __reuse_or_alloc_node_gen_t = +13943: __detail::_ReuseOrAllocNode<__node_alloc_type>; +13943: using __alloc_node_gen_t = +13943: __detail::_AllocNode<__node_alloc_type>; +13943: using __node_builder_t = +13943: __detail::_NodeBuilder<_ExtractKey>; +13943: +13943: +13943: struct _Scoped_node +13943: { +13943: +13943: _Scoped_node(__node_ptr __n, __hashtable_alloc* __h) +13943: : _M_h(__h), _M_node(__n) { } +13943: +13943: +13943: template +13943: _Scoped_node(__hashtable_alloc* __h, _Args&&... __args) +13943: : _M_h(__h), +13943: _M_node(__h->_M_allocate_node(std::forward<_Args>(__args)...)) +13943: { } +13943: +13943: +13943: ~_Scoped_node() { if (_M_node) _M_h->_M_deallocate_node(_M_node); }; +13943: +13943: _Scoped_node(const _Scoped_node&) = delete; +13943: _Scoped_node& operator=(const _Scoped_node&) = delete; +13943: +13943: __hashtable_alloc* _M_h; +13943: __node_ptr _M_node; +13943: }; +13943: +13943: template +13943: static constexpr +13943: __conditional_t::value, +13943: const value_type&, value_type&&> +13943: __fwd_value_for(value_type& __val) noexcept +13943: { return std::move(__val); } +13943: +13943: +13943: +13943: +13943: +13943: struct __hash_code_base_access : __hash_code_base +13943: { using __hash_code_base::_M_bucket_index; }; +13943: +13943: +13943: static_assert(is_nothrow_default_constructible<_RangeHash>::value, +13943: "Functor used to map hash code to bucket index" +13943: " must be nothrow default constructible"); +13943: static_assert(noexcept( +13943: std::declval()((std::size_t)0, (std::size_t)0)), +13943: "Functor used to map hash code to bucket index must be" +13943: " noexcept"); +13943: +13943: +13943: static_assert(is_nothrow_default_constructible<_ExtractKey>::value, +13943: "_ExtractKey must be nothrow default constructible"); +13943: static_assert(noexcept( +13943: std::declval()(std::declval<_Value>())), +13943: "_ExtractKey functor must be noexcept invocable"); +13943: +13943: template +13943: friend struct __detail::_Map_base; +13943: +13943: template +13943: friend struct __detail::_Insert_base; +13943: +13943: template +13943: friend struct __detail::_Insert; +13943: +13943: template +13943: friend struct __detail::_Equality; +13943: +13943: public: +13943: using size_type = typename __hashtable_base::size_type; +13943: using difference_type = typename __hashtable_base::difference_type; +13943: +13943: +13943: using node_type = _Node_handle<_Key, _Value, __node_alloc_type>; +13943: using insert_return_type = _Node_insert_return; +13943: +13943: +13943: private: +13943: __buckets_ptr _M_buckets = &_M_single_bucket; +13943: size_type _M_bucket_count = 1; +13943: __node_base _M_before_begin; +13943: size_type _M_element_count = 0; +13943: _RehashPolicy _M_rehash_policy; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __node_base_ptr _M_single_bucket = nullptr; +13943: +13943: void +13943: _M_update_bbegin() +13943: { +13943: if (auto __begin = _M_begin()) +13943: _M_buckets[_M_bucket_index(*__begin)] = &_M_before_begin; +13943: } +13943: +13943: void +13943: _M_update_bbegin(__node_ptr __n) +13943: { +13943: _M_before_begin._M_nxt = __n; +13943: _M_update_bbegin(); +13943: } +13943: +13943: bool +13943: _M_uses_single_bucket(__buckets_ptr __bkts) const +13943: { return __builtin_expect(__bkts == &_M_single_bucket, false); } +13943: +13943: bool +13943: _M_uses_single_bucket() const +13943: { return _M_uses_single_bucket(_M_buckets); } +13943: +13943: static constexpr size_t +13943: __small_size_threshold() noexcept +13943: { +13943: return +13943: __detail::_Hashtable_hash_traits<_Hash>::__small_size_threshold(); +13943: } +13943: +13943: __hashtable_alloc& +13943: _M_base_alloc() { return *this; } +13943: +13943: __buckets_ptr +13943: _M_allocate_buckets(size_type __bkt_count) +13943: { +13943: if (__builtin_expect(__bkt_count == 1, false)) +13943: { +13943: _M_single_bucket = nullptr; +13943: return &_M_single_bucket; +13943: } +13943: +13943: return __hashtable_alloc::_M_allocate_buckets(__bkt_count); +13943: } +13943: +13943: void +13943: _M_deallocate_buckets(__buckets_ptr __bkts, size_type __bkt_count) +13943: { +13943: if (_M_uses_single_bucket(__bkts)) +13943: return; +13943: +13943: __hashtable_alloc::_M_deallocate_buckets(__bkts, __bkt_count); +13943: } +13943: +13943: void +13943: _M_deallocate_buckets() +13943: { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } +13943: +13943: +13943: +13943: __node_ptr +13943: _M_bucket_begin(size_type __bkt) const +13943: { +13943: __node_base_ptr __n = _M_buckets[__bkt]; +13943: return __n ? static_cast<__node_ptr>(__n->_M_nxt) : nullptr; +13943: } +13943: +13943: __node_ptr +13943: _M_begin() const +13943: { return static_cast<__node_ptr>(_M_before_begin._M_nxt); } +13943: +13943: +13943: +13943: template +13943: void +13943: _M_assign_elements(_Ht&&); +13943: +13943: template +13943: void +13943: _M_assign(_Ht&&, const _NodeGenerator&); +13943: +13943: void +13943: _M_move_assign(_Hashtable&&, true_type); +13943: +13943: void +13943: _M_move_assign(_Hashtable&&, false_type); +13943: +13943: void +13943: _M_reset() noexcept; +13943: +13943: _Hashtable(const _Hash& __h, const _Equal& __eq, +13943: const allocator_type& __a) +13943: : __hashtable_base(__h, __eq), +13943: __hashtable_alloc(__node_alloc_type(__a)), +13943: __enable_default_ctor(_Enable_default_constructor_tag{}) +13943: { } +13943: +13943: template +13943: static constexpr bool +13943: _S_nothrow_move() +13943: { +13943: +13943: +13943: +13943: +13943: +13943: if constexpr (_No_realloc) +13943: if constexpr (is_nothrow_copy_constructible<_Hash>()) +13943: return is_nothrow_copy_constructible<_Equal>(); +13943: return false; +13943: +13943: } +13943: +13943: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, +13943: true_type ) +13943: noexcept(_S_nothrow_move()); +13943: +13943: _Hashtable(_Hashtable&&, __node_alloc_type&&, +13943: false_type ); +13943: +13943: template +13943: _Hashtable(_InputIterator __first, _InputIterator __last, +13943: size_type __bkt_count_hint, +13943: const _Hash&, const _Equal&, const allocator_type&, +13943: true_type __uks); +13943: +13943: template +13943: _Hashtable(_InputIterator __first, _InputIterator __last, +13943: size_type __bkt_count_hint, +13943: const _Hash&, const _Equal&, const allocator_type&, +13943: false_type __uks); +13943: +13943: public: +13943: +13943: _Hashtable() = default; +13943: +13943: _Hashtable(const _Hashtable&); +13943: +13943: _Hashtable(const _Hashtable&, const allocator_type&); +13943: +13943: explicit +13943: _Hashtable(size_type __bkt_count_hint, +13943: const _Hash& __hf = _Hash(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()); +13943: +13943: +13943: _Hashtable(_Hashtable&& __ht) +13943: noexcept(_S_nothrow_move()) +13943: : _Hashtable(std::move(__ht), std::move(__ht._M_node_allocator()), +13943: true_type{}) +13943: { } +13943: +13943: _Hashtable(_Hashtable&& __ht, const allocator_type& __a) +13943: noexcept(_S_nothrow_move<__node_alloc_traits::_S_always_equal()>()) +13943: : _Hashtable(std::move(__ht), __node_alloc_type(__a), +13943: typename __node_alloc_traits::is_always_equal{}) +13943: { } +13943: +13943: explicit +13943: _Hashtable(const allocator_type& __a) +13943: : __hashtable_alloc(__node_alloc_type(__a)), +13943: __enable_default_ctor(_Enable_default_constructor_tag{}) +13943: { } +13943: +13943: template +13943: _Hashtable(_InputIterator __f, _InputIterator __l, +13943: size_type __bkt_count_hint = 0, +13943: const _Hash& __hf = _Hash(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _Hashtable(__f, __l, __bkt_count_hint, __hf, __eql, __a, +13943: __unique_keys{}) +13943: { } +13943: +13943: _Hashtable(initializer_list __l, +13943: size_type __bkt_count_hint = 0, +13943: const _Hash& __hf = _Hash(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _Hashtable(__l.begin(), __l.end(), __bkt_count_hint, +13943: __hf, __eql, __a, __unique_keys{}) +13943: { } +13943: +13943: _Hashtable& +13943: operator=(const _Hashtable& __ht); +13943: +13943: _Hashtable& +13943: operator=(_Hashtable&& __ht) +13943: noexcept(__node_alloc_traits::_S_nothrow_move() +13943: && is_nothrow_move_assignable<_Hash>::value +13943: && is_nothrow_move_assignable<_Equal>::value) +13943: { +13943: constexpr bool __move_storage = +13943: __node_alloc_traits::_S_propagate_on_move_assign() +13943: || __node_alloc_traits::_S_always_equal(); +13943: _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); +13943: return *this; +13943: } +13943: +13943: _Hashtable& +13943: operator=(initializer_list __l) +13943: { +13943: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); +13943: _M_before_begin._M_nxt = nullptr; +13943: clear(); +13943: +13943: +13943: auto __l_bkt_count = _M_rehash_policy._M_bkt_for_elements(__l.size()); +13943: +13943: +13943: if (_M_bucket_count < __l_bkt_count) +13943: rehash(__l_bkt_count); +13943: +13943: this->_M_insert_range(__l.begin(), __l.end(), __roan, __unique_keys{}); +13943: return *this; +13943: } +13943: +13943: ~_Hashtable() noexcept; +13943: +13943: void +13943: swap(_Hashtable&) +13943: noexcept(__and_<__is_nothrow_swappable<_Hash>, +13943: __is_nothrow_swappable<_Equal>>::value); +13943: +13943: +13943: iterator +13943: begin() noexcept +13943: { return iterator(_M_begin()); } +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return const_iterator(_M_begin()); } +13943: +13943: iterator +13943: end() noexcept +13943: { return iterator(nullptr); } +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return const_iterator(nullptr); } +13943: +13943: const_iterator +13943: cbegin() const noexcept +13943: { return const_iterator(_M_begin()); } +13943: +13943: const_iterator +13943: cend() const noexcept +13943: { return const_iterator(nullptr); } +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_element_count; } +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return size() == 0; } +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(this->_M_node_allocator()); } +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return __node_alloc_traits::max_size(this->_M_node_allocator()); } +13943: +13943: +13943: key_equal +13943: key_eq() const +13943: { return this->_M_eq(); } +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket_count() const noexcept +13943: { return _M_bucket_count; } +13943: +13943: size_type +13943: max_bucket_count() const noexcept +13943: { return max_size(); } +13943: +13943: size_type +13943: bucket_size(size_type __bkt) const +13943: { return std::distance(begin(__bkt), end(__bkt)); } +13943: +13943: size_type +13943: bucket(const key_type& __k) const +13943: { return _M_bucket_index(this->_M_hash_code(__k)); } +13943: +13943: local_iterator +13943: begin(size_type __bkt) +13943: { +13943: return local_iterator(*this, _M_bucket_begin(__bkt), +13943: __bkt, _M_bucket_count); +13943: } +13943: +13943: local_iterator +13943: end(size_type __bkt) +13943: { return local_iterator(*this, nullptr, __bkt, _M_bucket_count); } +13943: +13943: const_local_iterator +13943: begin(size_type __bkt) const +13943: { +13943: return const_local_iterator(*this, _M_bucket_begin(__bkt), +13943: __bkt, _M_bucket_count); +13943: } +13943: +13943: const_local_iterator +13943: end(size_type __bkt) const +13943: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } +13943: +13943: +13943: const_local_iterator +13943: cbegin(size_type __bkt) const +13943: { +13943: return const_local_iterator(*this, _M_bucket_begin(__bkt), +13943: __bkt, _M_bucket_count); +13943: } +13943: +13943: const_local_iterator +13943: cend(size_type __bkt) const +13943: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } +13943: +13943: float +13943: load_factor() const noexcept +13943: { +13943: return static_cast(size()) / static_cast(bucket_count()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const _RehashPolicy& +13943: __rehash_policy() const +13943: { return _M_rehash_policy; } +13943: +13943: void +13943: __rehash_policy(const _RehashPolicy& __pol) +13943: { _M_rehash_policy = __pol; } +13943: +13943: +13943: iterator +13943: find(const key_type& __k); +13943: +13943: const_iterator +13943: find(const key_type& __k) const; +13943: +13943: size_type +13943: count(const key_type& __k) const; +13943: +13943: std::pair +13943: equal_range(const key_type& __k); +13943: +13943: std::pair +13943: equal_range(const key_type& __k) const; +13943: # 796 "/usr/include/c++/14/bits/hashtable.h" 3 +13943: private: +13943: +13943: size_type +13943: _M_bucket_index(const __node_value_type& __n) const noexcept +13943: { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } +13943: +13943: size_type +13943: _M_bucket_index(__hash_code __c) const +13943: { return __hash_code_base::_M_bucket_index(__c, _M_bucket_count); } +13943: +13943: __node_base_ptr +13943: _M_find_before_node(const key_type&); +13943: +13943: +13943: +13943: __node_base_ptr +13943: _M_find_before_node(size_type, const key_type&, __hash_code) const; +13943: +13943: template +13943: __node_base_ptr +13943: _M_find_before_node_tr(size_type, const _Kt&, __hash_code) const; +13943: +13943: __node_ptr +13943: _M_find_node(size_type __bkt, const key_type& __key, +13943: __hash_code __c) const +13943: { +13943: __node_base_ptr __before_n = _M_find_before_node(__bkt, __key, __c); +13943: if (__before_n) +13943: return static_cast<__node_ptr>(__before_n->_M_nxt); +13943: return nullptr; +13943: } +13943: +13943: template +13943: __node_ptr +13943: _M_find_node_tr(size_type __bkt, const _Kt& __key, +13943: __hash_code __c) const +13943: { +13943: auto __before_n = _M_find_before_node_tr(__bkt, __key, __c); +13943: if (__before_n) +13943: return static_cast<__node_ptr>(__before_n->_M_nxt); +13943: return nullptr; +13943: } +13943: +13943: +13943: void +13943: _M_insert_bucket_begin(size_type __bkt, __node_ptr __node) +13943: { +13943: if (_M_buckets[__bkt]) +13943: { +13943: +13943: +13943: __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; +13943: _M_buckets[__bkt]->_M_nxt = __node; +13943: } +13943: else +13943: { +13943: +13943: +13943: +13943: __node->_M_nxt = _M_before_begin._M_nxt; +13943: _M_before_begin._M_nxt = __node; +13943: +13943: if (__node->_M_nxt) +13943: +13943: +13943: _M_buckets[_M_bucket_index(*__node->_M_next())] = __node; +13943: +13943: _M_buckets[__bkt] = &_M_before_begin; +13943: } +13943: } +13943: +13943: +13943: void +13943: _M_remove_bucket_begin(size_type __bkt, __node_ptr __next_n, +13943: size_type __next_bkt) +13943: { +13943: if (!__next_n) +13943: _M_buckets[__bkt] = nullptr; +13943: else if (__next_bkt != __bkt) +13943: { +13943: _M_buckets[__next_bkt] = _M_buckets[__bkt]; +13943: _M_buckets[__bkt] = nullptr; +13943: } +13943: } +13943: +13943: +13943: __node_base_ptr +13943: _M_get_previous_node(size_type __bkt, __node_ptr __n); +13943: +13943: pair<__node_ptr, __hash_code> +13943: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: _M_insert_unique_node(size_type __bkt, __hash_code, +13943: __node_ptr __n, size_type __n_elt = 1); +13943: +13943: +13943: +13943: iterator +13943: _M_insert_multi_node(__node_ptr __hint, +13943: __hash_code __code, __node_ptr __n); +13943: +13943: template +13943: std::pair +13943: _M_emplace(true_type __uks, _Args&&... __args); +13943: +13943: template +13943: iterator +13943: _M_emplace(false_type __uks, _Args&&... __args) +13943: { return _M_emplace(cend(), __uks, std::forward<_Args>(__args)...); } +13943: +13943: +13943: template +13943: iterator +13943: _M_emplace(const_iterator, true_type __uks, _Args&&... __args) +13943: { return _M_emplace(__uks, std::forward<_Args>(__args)...).first; } +13943: +13943: template +13943: iterator +13943: _M_emplace(const_iterator, false_type __uks, _Args&&... __args); +13943: +13943: template +13943: std::pair +13943: _M_insert_unique(_Kt&&, _Arg&&, const _NodeGenerator&); +13943: +13943: template +13943: static __conditional_t< +13943: __and_<__is_nothrow_invocable<_Hash&, const key_type&>, +13943: __not_<__is_nothrow_invocable<_Hash&, _Kt>>>::value, +13943: key_type, _Kt&&> +13943: _S_forward_key(_Kt&& __k) +13943: { return std::forward<_Kt>(__k); } +13943: +13943: static const key_type& +13943: _S_forward_key(const key_type& __k) +13943: { return __k; } +13943: +13943: static key_type&& +13943: _S_forward_key(key_type&& __k) +13943: { return std::move(__k); } +13943: +13943: template +13943: std::pair +13943: _M_insert_unique_aux(_Arg&& __arg, const _NodeGenerator& __node_gen) +13943: { +13943: return _M_insert_unique( +13943: _S_forward_key(_ExtractKey{}(std::forward<_Arg>(__arg))), +13943: std::forward<_Arg>(__arg), __node_gen); +13943: } +13943: +13943: template +13943: std::pair +13943: _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen, +13943: true_type ) +13943: { +13943: using __to_value +13943: = __detail::_ConvertToValueType<_ExtractKey, value_type>; +13943: return _M_insert_unique_aux( +13943: __to_value{}(std::forward<_Arg>(__arg)), __node_gen); +13943: } +13943: +13943: template +13943: iterator +13943: _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen, +13943: false_type __uks) +13943: { +13943: using __to_value +13943: = __detail::_ConvertToValueType<_ExtractKey, value_type>; +13943: return _M_insert(cend(), +13943: __to_value{}(std::forward<_Arg>(__arg)), __node_gen, __uks); +13943: } +13943: +13943: +13943: template +13943: iterator +13943: _M_insert(const_iterator, _Arg&& __arg, +13943: const _NodeGenerator& __node_gen, true_type __uks) +13943: { +13943: return +13943: _M_insert(std::forward<_Arg>(__arg), __node_gen, __uks).first; +13943: } +13943: +13943: +13943: template +13943: iterator +13943: _M_insert(const_iterator, _Arg&&, +13943: const _NodeGenerator&, false_type __uks); +13943: +13943: size_type +13943: _M_erase(true_type __uks, const key_type&); +13943: +13943: size_type +13943: _M_erase(false_type __uks, const key_type&); +13943: +13943: iterator +13943: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n); +13943: +13943: public: +13943: +13943: template +13943: __ireturn_type +13943: emplace(_Args&&... __args) +13943: { return _M_emplace(__unique_keys{}, std::forward<_Args>(__args)...); } +13943: +13943: template +13943: iterator +13943: emplace_hint(const_iterator __hint, _Args&&... __args) +13943: { +13943: return _M_emplace(__hint, __unique_keys{}, +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: +13943: +13943: iterator +13943: erase(const_iterator); +13943: +13943: +13943: +13943: iterator +13943: erase(iterator __it) +13943: { return erase(const_iterator(__it)); } +13943: +13943: size_type +13943: erase(const key_type& __k) +13943: { return _M_erase(__unique_keys{}, __k); } +13943: +13943: iterator +13943: erase(const_iterator, const_iterator); +13943: +13943: void +13943: clear() noexcept; +13943: +13943: +13943: +13943: void rehash(size_type __bkt_count); +13943: +13943: +13943: +13943: +13943: +13943: +13943: insert_return_type +13943: _M_reinsert_node(node_type&& __nh) +13943: { +13943: insert_return_type __ret; +13943: if (__nh.empty()) +13943: __ret.position = end(); +13943: else +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __nh.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __node_ptr __n = nullptr; +13943: const key_type& __k = __nh._M_key(); +13943: const size_type __size = size(); +13943: if (__size <= __small_size_threshold()) +13943: { +13943: for (__n = _M_begin(); __n; __n = __n->_M_next()) +13943: if (this->_M_key_equals(__k, *__n)) +13943: break; +13943: } +13943: +13943: __hash_code __code; +13943: size_type __bkt; +13943: if (!__n) +13943: { +13943: __code = this->_M_hash_code(__k); +13943: __bkt = _M_bucket_index(__code); +13943: if (__size > __small_size_threshold()) +13943: __n = _M_find_node(__bkt, __k, __code); +13943: } +13943: +13943: if (__n) +13943: { +13943: __ret.node = std::move(__nh); +13943: __ret.position = iterator(__n); +13943: __ret.inserted = false; +13943: } +13943: else +13943: { +13943: __ret.position +13943: = _M_insert_unique_node(__bkt, __code, __nh._M_ptr); +13943: __nh.release(); +13943: __ret.inserted = true; +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: iterator +13943: _M_reinsert_node_multi(const_iterator __hint, node_type&& __nh) +13943: { +13943: if (__nh.empty()) +13943: return end(); +13943: +13943: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __nh.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: const key_type& __k = __nh._M_key(); +13943: auto __code = this->_M_hash_code(__k); +13943: auto __ret +13943: = _M_insert_multi_node(__hint._M_cur, __code, __nh._M_ptr); +13943: __nh.release(); +13943: return __ret; +13943: } +13943: +13943: private: +13943: node_type +13943: _M_extract_node(size_t __bkt, __node_base_ptr __prev_n) +13943: { +13943: __node_ptr __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +13943: if (__prev_n == _M_buckets[__bkt]) +13943: _M_remove_bucket_begin(__bkt, __n->_M_next(), +13943: __n->_M_nxt ? _M_bucket_index(*__n->_M_next()) : 0); +13943: else if (__n->_M_nxt) +13943: { +13943: size_type __next_bkt = _M_bucket_index(*__n->_M_next()); +13943: if (__next_bkt != __bkt) +13943: _M_buckets[__next_bkt] = __prev_n; +13943: } +13943: +13943: __prev_n->_M_nxt = __n->_M_nxt; +13943: __n->_M_nxt = nullptr; +13943: --_M_element_count; +13943: return { __n, this->_M_node_allocator() }; +13943: } +13943: +13943: +13943: +13943: template +13943: __hash_code +13943: _M_src_hash_code(const _H2&, const key_type& __k, +13943: const __node_value_type& __src_n) const +13943: { +13943: if constexpr (std::is_same_v<_H2, _Hash>) +13943: if constexpr (std::is_empty_v<_Hash>) +13943: return this->_M_hash_code(__src_n); +13943: +13943: return this->_M_hash_code(__k); +13943: } +13943: +13943: public: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: size_t __bkt = _M_bucket_index(*__pos._M_cur); +13943: return _M_extract_node(__bkt, +13943: _M_get_previous_node(__bkt, __pos._M_cur)); +13943: } +13943: +13943: +13943: node_type +13943: extract(const _Key& __k) +13943: { +13943: node_type __nh; +13943: __hash_code __code = this->_M_hash_code(__k); +13943: std::size_t __bkt = _M_bucket_index(__code); +13943: if (__node_base_ptr __prev_node = _M_find_before_node(__bkt, __k, __code)) +13943: __nh = _M_extract_node(__bkt, __prev_node); +13943: return __nh; +13943: } +13943: +13943: +13943: template +13943: void +13943: _M_merge_unique(_Compatible_Hashtable& __src) +13943: { +13943: static_assert(is_same_v, "Node types are compatible"); +13943: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __src.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: auto __n_elt = __src.size(); +13943: for (auto __i = __src.cbegin(), __end = __src.cend(); __i != __end;) +13943: { +13943: auto __pos = __i++; +13943: const size_type __size = size(); +13943: const key_type& __k = _ExtractKey{}(*__pos); +13943: if (__size <= __small_size_threshold()) +13943: { +13943: bool __found = false; +13943: for (auto __n = _M_begin(); __n; __n = __n->_M_next()) +13943: if (this->_M_key_equals(__k, *__n)) +13943: { +13943: __found = true; +13943: break; +13943: } +13943: +13943: if (__found) +13943: { +13943: if (__n_elt != 1) +13943: --__n_elt; +13943: continue; +13943: } +13943: } +13943: +13943: __hash_code __code +13943: = _M_src_hash_code(__src.hash_function(), __k, *__pos._M_cur); +13943: size_type __bkt = _M_bucket_index(__code); +13943: if (__size <= __small_size_threshold() +13943: || _M_find_node(__bkt, __k, __code) == nullptr) +13943: { +13943: auto __nh = __src.extract(__pos); +13943: _M_insert_unique_node(__bkt, __code, __nh._M_ptr, __n_elt); +13943: __nh.release(); +13943: __n_elt = 1; +13943: } +13943: else if (__n_elt != 1) +13943: --__n_elt; +13943: } +13943: } +13943: +13943: +13943: template +13943: void +13943: _M_merge_multi(_Compatible_Hashtable& __src) +13943: { +13943: static_assert(is_same_v, "Node types are compatible"); +13943: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __src.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __node_ptr __hint = nullptr; +13943: this->reserve(size() + __src.size()); +13943: for (auto __i = __src.cbegin(), __end = __src.cend(); __i != __end;) +13943: { +13943: auto __pos = __i++; +13943: const key_type& __k = _ExtractKey{}(*__pos); +13943: __hash_code __code +13943: = _M_src_hash_code(__src.hash_function(), __k, *__pos._M_cur); +13943: auto __nh = __src.extract(__pos); +13943: __hint = _M_insert_multi_node(__hint, __code, __nh._M_ptr)._M_cur; +13943: __nh.release(); +13943: } +13943: } +13943: +13943: +13943: private: +13943: +13943: void _M_rehash(size_type __bkt_count, true_type __uks); +13943: +13943: +13943: void _M_rehash(size_type __bkt_count, false_type __uks); +13943: }; +13943: +13943: +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _Hashtable(size_type __bkt_count_hint, +13943: const _Hash& __h, const _Equal& __eq, const allocator_type& __a) +13943: : _Hashtable(__h, __eq, __a) +13943: { +13943: auto __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count_hint); +13943: if (__bkt_count > _M_bucket_count) +13943: { +13943: _M_buckets = _M_allocate_buckets(__bkt_count); +13943: _M_bucket_count = __bkt_count; +13943: } +13943: } +13943: +13943: template +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _Hashtable(_InputIterator __f, _InputIterator __l, +13943: size_type __bkt_count_hint, +13943: const _Hash& __h, const _Equal& __eq, +13943: const allocator_type& __a, true_type ) +13943: : _Hashtable(__bkt_count_hint, __h, __eq, __a) +13943: { this->insert(__f, __l); } +13943: +13943: template +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _Hashtable(_InputIterator __f, _InputIterator __l, +13943: size_type __bkt_count_hint, +13943: const _Hash& __h, const _Equal& __eq, +13943: const allocator_type& __a, false_type __uks) +13943: : _Hashtable(__h, __eq, __a) +13943: { +13943: auto __nb_elems = __detail::__distance_fw(__f, __l); +13943: auto __bkt_count = +13943: _M_rehash_policy._M_next_bkt( +13943: std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), +13943: __bkt_count_hint)); +13943: +13943: if (__bkt_count > _M_bucket_count) +13943: { +13943: _M_buckets = _M_allocate_buckets(__bkt_count); +13943: _M_bucket_count = __bkt_count; +13943: } +13943: +13943: __alloc_node_gen_t __node_gen(*this); +13943: for (; __f != __l; ++__f) +13943: _M_insert(*__f, __node_gen, __uks); +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: operator=(const _Hashtable& __ht) +13943: -> _Hashtable& +13943: { +13943: if (&__ht == this) +13943: return *this; +13943: +13943: if (__node_alloc_traits::_S_propagate_on_copy_assign()) +13943: { +13943: auto& __this_alloc = this->_M_node_allocator(); +13943: auto& __that_alloc = __ht._M_node_allocator(); +13943: if (!__node_alloc_traits::_S_always_equal() +13943: && __this_alloc != __that_alloc) +13943: { +13943: +13943: this->_M_deallocate_nodes(_M_begin()); +13943: _M_before_begin._M_nxt = nullptr; +13943: _M_deallocate_buckets(); +13943: _M_buckets = nullptr; +13943: std::__alloc_on_copy(__this_alloc, __that_alloc); +13943: __hashtable_base::operator=(__ht); +13943: _M_bucket_count = __ht._M_bucket_count; +13943: _M_element_count = __ht._M_element_count; +13943: _M_rehash_policy = __ht._M_rehash_policy; +13943: __alloc_node_gen_t __alloc_node_gen(*this); +13943: try +13943: { +13943: _M_assign(__ht, __alloc_node_gen); +13943: } +13943: catch(...) +13943: { +13943: +13943: +13943: _M_reset(); +13943: throw; +13943: } +13943: return *this; +13943: } +13943: std::__alloc_on_copy(__this_alloc, __that_alloc); +13943: } +13943: +13943: +13943: _M_assign_elements(__ht); +13943: return *this; +13943: } +13943: +13943: template +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_assign_elements(_Ht&& __ht) +13943: { +13943: __buckets_ptr __former_buckets = nullptr; +13943: std::size_t __former_bucket_count = _M_bucket_count; +13943: __rehash_guard_t __rehash_guard(_M_rehash_policy); +13943: +13943: if (_M_bucket_count != __ht._M_bucket_count) +13943: { +13943: __former_buckets = _M_buckets; +13943: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); +13943: _M_bucket_count = __ht._M_bucket_count; +13943: } +13943: else +13943: __builtin_memset(_M_buckets, 0, +13943: _M_bucket_count * sizeof(__node_base_ptr)); +13943: +13943: try +13943: { +13943: __hashtable_base::operator=(std::forward<_Ht>(__ht)); +13943: _M_element_count = __ht._M_element_count; +13943: _M_rehash_policy = __ht._M_rehash_policy; +13943: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); +13943: _M_before_begin._M_nxt = nullptr; +13943: _M_assign(std::forward<_Ht>(__ht), __roan); +13943: if (__former_buckets) +13943: _M_deallocate_buckets(__former_buckets, __former_bucket_count); +13943: __rehash_guard._M_guarded_obj = nullptr; +13943: } +13943: catch(...) +13943: { +13943: if (__former_buckets) +13943: { +13943: +13943: _M_deallocate_buckets(); +13943: _M_buckets = __former_buckets; +13943: _M_bucket_count = __former_bucket_count; +13943: } +13943: __builtin_memset(_M_buckets, 0, +13943: _M_bucket_count * sizeof(__node_base_ptr)); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_assign(_Ht&& __ht, const _NodeGenerator& __node_gen) +13943: { +13943: __buckets_ptr __buckets = nullptr; +13943: if (!_M_buckets) +13943: _M_buckets = __buckets = _M_allocate_buckets(_M_bucket_count); +13943: +13943: try +13943: { +13943: if (!__ht._M_before_begin._M_nxt) +13943: return; +13943: +13943: +13943: +13943: __node_ptr __ht_n = __ht._M_begin(); +13943: __node_ptr __this_n +13943: = __node_gen(__fwd_value_for<_Ht>(__ht_n->_M_v())); +13943: this->_M_copy_code(*__this_n, *__ht_n); +13943: _M_update_bbegin(__this_n); +13943: +13943: +13943: __node_ptr __prev_n = __this_n; +13943: for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) +13943: { +13943: __this_n = __node_gen(__fwd_value_for<_Ht>(__ht_n->_M_v())); +13943: __prev_n->_M_nxt = __this_n; +13943: this->_M_copy_code(*__this_n, *__ht_n); +13943: size_type __bkt = _M_bucket_index(*__this_n); +13943: if (!_M_buckets[__bkt]) +13943: _M_buckets[__bkt] = __prev_n; +13943: __prev_n = __this_n; +13943: } +13943: } +13943: catch(...) +13943: { +13943: clear(); +13943: if (__buckets) +13943: _M_deallocate_buckets(); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_reset() noexcept +13943: { +13943: _M_rehash_policy._M_reset(); +13943: _M_bucket_count = 1; +13943: _M_single_bucket = nullptr; +13943: _M_buckets = &_M_single_bucket; +13943: _M_before_begin._M_nxt = nullptr; +13943: _M_element_count = 0; +13943: } +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_move_assign(_Hashtable&& __ht, true_type) +13943: { +13943: if (__builtin_expect(std::__addressof(__ht) == this, false)) +13943: return; +13943: +13943: this->_M_deallocate_nodes(_M_begin()); +13943: _M_deallocate_buckets(); +13943: __hashtable_base::operator=(std::move(__ht)); +13943: _M_rehash_policy = __ht._M_rehash_policy; +13943: if (!__ht._M_uses_single_bucket()) +13943: _M_buckets = __ht._M_buckets; +13943: else +13943: { +13943: _M_buckets = &_M_single_bucket; +13943: _M_single_bucket = __ht._M_single_bucket; +13943: } +13943: +13943: _M_bucket_count = __ht._M_bucket_count; +13943: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; +13943: _M_element_count = __ht._M_element_count; +13943: std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); +13943: +13943: +13943: _M_update_bbegin(); +13943: __ht._M_reset(); +13943: } +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_move_assign(_Hashtable&& __ht, false_type) +13943: { +13943: if (__ht._M_node_allocator() == this->_M_node_allocator()) +13943: _M_move_assign(std::move(__ht), true_type{}); +13943: else +13943: { +13943: +13943: _M_assign_elements(std::move(__ht)); +13943: __ht.clear(); +13943: } +13943: } +13943: +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _Hashtable(const _Hashtable& __ht) +13943: : __hashtable_base(__ht), +13943: __map_base(__ht), +13943: __rehash_base(__ht), +13943: __hashtable_alloc( +13943: __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), +13943: __enable_default_ctor(__ht), +13943: _M_buckets(nullptr), +13943: _M_bucket_count(__ht._M_bucket_count), +13943: _M_element_count(__ht._M_element_count), +13943: _M_rehash_policy(__ht._M_rehash_policy) +13943: { +13943: __alloc_node_gen_t __alloc_node_gen(*this); +13943: _M_assign(__ht, __alloc_node_gen); +13943: } +13943: +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, +13943: true_type ) +13943: noexcept(_S_nothrow_move()) +13943: : __hashtable_base(__ht), +13943: __map_base(__ht), +13943: __rehash_base(__ht), +13943: __hashtable_alloc(std::move(__a)), +13943: __enable_default_ctor(__ht), +13943: _M_buckets(__ht._M_buckets), +13943: _M_bucket_count(__ht._M_bucket_count), +13943: _M_before_begin(__ht._M_before_begin._M_nxt), +13943: _M_element_count(__ht._M_element_count), +13943: _M_rehash_policy(__ht._M_rehash_policy) +13943: { +13943: +13943: if (__ht._M_uses_single_bucket()) +13943: { +13943: _M_buckets = &_M_single_bucket; +13943: _M_single_bucket = __ht._M_single_bucket; +13943: } +13943: +13943: +13943: _M_update_bbegin(); +13943: +13943: __ht._M_reset(); +13943: } +13943: +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _Hashtable(const _Hashtable& __ht, const allocator_type& __a) +13943: : __hashtable_base(__ht), +13943: __map_base(__ht), +13943: __rehash_base(__ht), +13943: __hashtable_alloc(__node_alloc_type(__a)), +13943: __enable_default_ctor(__ht), +13943: _M_buckets(), +13943: _M_bucket_count(__ht._M_bucket_count), +13943: _M_element_count(__ht._M_element_count), +13943: _M_rehash_policy(__ht._M_rehash_policy) +13943: { +13943: __alloc_node_gen_t __alloc_node_gen(*this); +13943: _M_assign(__ht, __alloc_node_gen); +13943: } +13943: +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, +13943: false_type ) +13943: : __hashtable_base(__ht), +13943: __map_base(__ht), +13943: __rehash_base(__ht), +13943: __hashtable_alloc(std::move(__a)), +13943: __enable_default_ctor(__ht), +13943: _M_buckets(nullptr), +13943: _M_bucket_count(__ht._M_bucket_count), +13943: _M_element_count(__ht._M_element_count), +13943: _M_rehash_policy(__ht._M_rehash_policy) +13943: { +13943: if (__ht._M_node_allocator() == this->_M_node_allocator()) +13943: { +13943: if (__ht._M_uses_single_bucket()) +13943: { +13943: _M_buckets = &_M_single_bucket; +13943: _M_single_bucket = __ht._M_single_bucket; +13943: } +13943: else +13943: _M_buckets = __ht._M_buckets; +13943: +13943: +13943: +13943: _M_update_bbegin(__ht._M_begin()); +13943: +13943: __ht._M_reset(); +13943: } +13943: else +13943: { +13943: __alloc_node_gen_t __alloc_gen(*this); +13943: +13943: using _Fwd_Ht = __conditional_t< +13943: __move_if_noexcept_cond::value, +13943: const _Hashtable&, _Hashtable&&>; +13943: _M_assign(std::forward<_Fwd_Ht>(__ht), __alloc_gen); +13943: __ht.clear(); +13943: } +13943: } +13943: +13943: template +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: ~_Hashtable() noexcept +13943: { +13943: +13943: +13943: +13943: static_assert(noexcept(declval() +13943: ._M_bucket_index(declval(), +13943: (std::size_t)0)), +13943: "Cache the hash code or qualify your functors involved" +13943: " in hash code and bucket index computation with noexcept"); +13943: +13943: clear(); +13943: _M_deallocate_buckets(); +13943: } +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: swap(_Hashtable& __x) +13943: noexcept(__and_<__is_nothrow_swappable<_Hash>, +13943: __is_nothrow_swappable<_Equal>>::value) +13943: { +13943: +13943: +13943: +13943: this->_M_swap(__x); +13943: +13943: std::__alloc_on_swap(this->_M_node_allocator(), __x._M_node_allocator()); +13943: std::swap(_M_rehash_policy, __x._M_rehash_policy); +13943: +13943: +13943: if (this->_M_uses_single_bucket()) +13943: { +13943: if (!__x._M_uses_single_bucket()) +13943: { +13943: _M_buckets = __x._M_buckets; +13943: __x._M_buckets = &__x._M_single_bucket; +13943: } +13943: } +13943: else if (__x._M_uses_single_bucket()) +13943: { +13943: __x._M_buckets = _M_buckets; +13943: _M_buckets = &_M_single_bucket; +13943: } +13943: else +13943: std::swap(_M_buckets, __x._M_buckets); +13943: +13943: std::swap(_M_bucket_count, __x._M_bucket_count); +13943: std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); +13943: std::swap(_M_element_count, __x._M_element_count); +13943: std::swap(_M_single_bucket, __x._M_single_bucket); +13943: +13943: +13943: +13943: _M_update_bbegin(); +13943: __x._M_update_bbegin(); +13943: } +13943: +13943: template +13943: auto inline +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: find(const key_type& __k) +13943: -> iterator +13943: { +13943: if (size() <= __small_size_threshold()) +13943: { +13943: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +13943: if (this->_M_key_equals(__k, *__it)) +13943: return iterator(__it); +13943: return end(); +13943: } +13943: +13943: __hash_code __code = this->_M_hash_code(__k); +13943: std::size_t __bkt = _M_bucket_index(__code); +13943: return iterator(_M_find_node(__bkt, __k, __code)); +13943: } +13943: +13943: template +13943: auto inline +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: find(const key_type& __k) const +13943: -> const_iterator +13943: { +13943: if (size() <= __small_size_threshold()) +13943: { +13943: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +13943: if (this->_M_key_equals(__k, *__it)) +13943: return const_iterator(__it); +13943: return end(); +13943: } +13943: +13943: __hash_code __code = this->_M_hash_code(__k); +13943: std::size_t __bkt = _M_bucket_index(__code); +13943: return const_iterator(_M_find_node(__bkt, __k, __code)); +13943: } +13943: # 1818 "/usr/include/c++/14/bits/hashtable.h" 3 +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: count(const key_type& __k) const +13943: -> size_type +13943: { +13943: auto __it = find(__k); +13943: if (!__it._M_cur) +13943: return 0; +13943: +13943: if (__unique_keys::value) +13943: return 1; +13943: +13943: size_type __result = 1; +13943: for (auto __ref = __it++; +13943: __it._M_cur && this->_M_node_equals(*__ref._M_cur, *__it._M_cur); +13943: ++__it) +13943: ++__result; +13943: +13943: return __result; +13943: } +13943: # 1891 "/usr/include/c++/14/bits/hashtable.h" 3 +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: equal_range(const key_type& __k) +13943: -> pair +13943: { +13943: auto __ite = find(__k); +13943: if (!__ite._M_cur) +13943: return { __ite, __ite }; +13943: +13943: auto __beg = __ite++; +13943: if (__unique_keys::value) +13943: return { __beg, __ite }; +13943: +13943: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) +13943: ++__ite; +13943: +13943: return { __beg, __ite }; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: equal_range(const key_type& __k) const +13943: -> pair +13943: { +13943: auto __ite = find(__k); +13943: if (!__ite._M_cur) +13943: return { __ite, __ite }; +13943: +13943: auto __beg = __ite++; +13943: if (__unique_keys::value) +13943: return { __beg, __ite }; +13943: +13943: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) +13943: ++__ite; +13943: +13943: return { __beg, __ite }; +13943: } +13943: # 2031 "/usr/include/c++/14/bits/hashtable.h" 3 +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_find_before_node(const key_type& __k) +13943: -> __node_base_ptr +13943: { +13943: __node_base_ptr __prev_p = &_M_before_begin; +13943: if (!__prev_p->_M_nxt) +13943: return nullptr; +13943: +13943: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt); +13943: __p != nullptr; +13943: __p = __p->_M_next()) +13943: { +13943: if (this->_M_key_equals(__k, *__p)) +13943: return __prev_p; +13943: +13943: __prev_p = __p; +13943: } +13943: +13943: return nullptr; +13943: } +13943: +13943: +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_find_before_node(size_type __bkt, const key_type& __k, +13943: __hash_code __code) const +13943: -> __node_base_ptr +13943: { +13943: __node_base_ptr __prev_p = _M_buckets[__bkt]; +13943: if (!__prev_p) +13943: return nullptr; +13943: +13943: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; +13943: __p = __p->_M_next()) +13943: { +13943: if (this->_M_equals(__k, __code, *__p)) +13943: return __prev_p; +13943: +13943: if (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt) +13943: break; +13943: __prev_p = __p; +13943: } +13943: +13943: return nullptr; +13943: } +13943: +13943: template +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_find_before_node_tr(size_type __bkt, const _Kt& __k, +13943: __hash_code __code) const +13943: -> __node_base_ptr +13943: { +13943: __node_base_ptr __prev_p = _M_buckets[__bkt]; +13943: if (!__prev_p) +13943: return nullptr; +13943: +13943: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; +13943: __p = __p->_M_next()) +13943: { +13943: if (this->_M_equals_tr(__k, __code, *__p)) +13943: return __prev_p; +13943: +13943: if (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt) +13943: break; +13943: __prev_p = __p; +13943: } +13943: +13943: return nullptr; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_get_previous_node(size_type __bkt, __node_ptr __n) +13943: -> __node_base_ptr +13943: { +13943: __node_base_ptr __prev_n = _M_buckets[__bkt]; +13943: while (__prev_n->_M_nxt != __n) +13943: __prev_n = __prev_n->_M_nxt; +13943: return __prev_n; +13943: } +13943: +13943: template +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_emplace(true_type , _Args&&... __args) +13943: -> pair +13943: { +13943: +13943: _Scoped_node __node { this, std::forward<_Args>(__args)... }; +13943: const key_type& __k = _ExtractKey{}(__node._M_node->_M_v()); +13943: const size_type __size = size(); +13943: if (__size <= __small_size_threshold()) +13943: { +13943: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +13943: if (this->_M_key_equals(__k, *__it)) +13943: +13943: return { iterator(__it), false }; +13943: } +13943: +13943: __hash_code __code = this->_M_hash_code(__k); +13943: size_type __bkt = _M_bucket_index(__code); +13943: if (__size > __small_size_threshold()) +13943: if (__node_ptr __p = _M_find_node(__bkt, __k, __code)) +13943: +13943: return { iterator(__p), false }; +13943: +13943: +13943: auto __pos = _M_insert_unique_node(__bkt, __code, __node._M_node); +13943: __node._M_node = nullptr; +13943: return { __pos, true }; +13943: } +13943: +13943: template +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_emplace(const_iterator __hint, false_type , +13943: _Args&&... __args) +13943: -> iterator +13943: { +13943: +13943: _Scoped_node __node { this, std::forward<_Args>(__args)... }; +13943: const key_type& __k = _ExtractKey{}(__node._M_node->_M_v()); +13943: +13943: auto __res = this->_M_compute_hash_code(__hint._M_cur, __k); +13943: auto __pos +13943: = _M_insert_multi_node(__res.first, __res.second, __node._M_node); +13943: __node._M_node = nullptr; +13943: return __pos; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const +13943: -> pair<__node_ptr, __hash_code> +13943: { +13943: if (size() <= __small_size_threshold()) +13943: { +13943: if (__hint) +13943: { +13943: for (auto __it = __hint; __it; __it = __it->_M_next()) +13943: if (this->_M_key_equals(__k, *__it)) +13943: return { __it, this->_M_hash_code(*__it) }; +13943: } +13943: +13943: for (auto __it = _M_begin(); __it != __hint; __it = __it->_M_next()) +13943: if (this->_M_key_equals(__k, *__it)) +13943: return { __it, this->_M_hash_code(*__it) }; +13943: +13943: __hint = nullptr; +13943: } +13943: +13943: return { __hint, this->_M_hash_code(__k) }; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_insert_unique_node(size_type __bkt, __hash_code __code, +13943: __node_ptr __node, size_type __n_elt) +13943: -> iterator +13943: { +13943: __rehash_guard_t __rehash_guard(_M_rehash_policy); +13943: std::pair __do_rehash +13943: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, +13943: __n_elt); +13943: +13943: if (__do_rehash.first) +13943: { +13943: _M_rehash(__do_rehash.second, true_type{}); +13943: __bkt = _M_bucket_index(__code); +13943: } +13943: +13943: __rehash_guard._M_guarded_obj = nullptr; +13943: this->_M_store_code(*__node, __code); +13943: +13943: +13943: _M_insert_bucket_begin(__bkt, __node); +13943: ++_M_element_count; +13943: return iterator(__node); +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_insert_multi_node(__node_ptr __hint, +13943: __hash_code __code, __node_ptr __node) +13943: -> iterator +13943: { +13943: __rehash_guard_t __rehash_guard(_M_rehash_policy); +13943: std::pair __do_rehash +13943: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); +13943: +13943: if (__do_rehash.first) +13943: _M_rehash(__do_rehash.second, false_type{}); +13943: +13943: __rehash_guard._M_guarded_obj = nullptr; +13943: this->_M_store_code(*__node, __code); +13943: const key_type& __k = _ExtractKey{}(__node->_M_v()); +13943: size_type __bkt = _M_bucket_index(__code); +13943: +13943: +13943: +13943: __node_base_ptr __prev +13943: = __builtin_expect(__hint != nullptr, false) +13943: && this->_M_equals(__k, __code, *__hint) +13943: ? __hint +13943: : _M_find_before_node(__bkt, __k, __code); +13943: +13943: if (__prev) +13943: { +13943: +13943: __node->_M_nxt = __prev->_M_nxt; +13943: __prev->_M_nxt = __node; +13943: if (__builtin_expect(__prev == __hint, false)) +13943: +13943: +13943: if (__node->_M_nxt +13943: && !this->_M_equals(__k, __code, *__node->_M_next())) +13943: { +13943: size_type __next_bkt = _M_bucket_index(*__node->_M_next()); +13943: if (__next_bkt != __bkt) +13943: _M_buckets[__next_bkt] = __node; +13943: } +13943: } +13943: else +13943: +13943: +13943: +13943: _M_insert_bucket_begin(__bkt, __node); +13943: ++_M_element_count; +13943: return iterator(__node); +13943: } +13943: +13943: +13943: template +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_insert_unique(_Kt&& __k, _Arg&& __v, +13943: const _NodeGenerator& __node_gen) +13943: -> pair +13943: { +13943: const size_type __size = size(); +13943: if (__size <= __small_size_threshold()) +13943: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +13943: if (this->_M_key_equals_tr(__k, *__it)) +13943: return { iterator(__it), false }; +13943: +13943: __hash_code __code = this->_M_hash_code_tr(__k); +13943: size_type __bkt = _M_bucket_index(__code); +13943: +13943: if (__size > __small_size_threshold()) +13943: if (__node_ptr __node = _M_find_node_tr(__bkt, __k, __code)) +13943: return { iterator(__node), false }; +13943: +13943: _Scoped_node __node { +13943: __node_builder_t::_S_build(std::forward<_Kt>(__k), +13943: std::forward<_Arg>(__v), +13943: __node_gen), +13943: this +13943: }; +13943: auto __pos +13943: = _M_insert_unique_node(__bkt, __code, __node._M_node); +13943: __node._M_node = nullptr; +13943: return { __pos, true }; +13943: } +13943: +13943: +13943: template +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_insert(const_iterator __hint, _Arg&& __v, +13943: const _NodeGenerator& __node_gen, +13943: false_type ) +13943: -> iterator +13943: { +13943: +13943: _Scoped_node __node{ __node_gen(std::forward<_Arg>(__v)), this }; +13943: +13943: +13943: auto __res = this->_M_compute_hash_code( +13943: __hint._M_cur, _ExtractKey{}(__node._M_node->_M_v())); +13943: +13943: auto __pos +13943: = _M_insert_multi_node(__res.first, __res.second, __node._M_node); +13943: __node._M_node = nullptr; +13943: return __pos; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: erase(const_iterator __it) +13943: -> iterator +13943: { +13943: __node_ptr __n = __it._M_cur; +13943: std::size_t __bkt = _M_bucket_index(*__n); +13943: +13943: +13943: +13943: +13943: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); +13943: return _M_erase(__bkt, __prev_n, __n); +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n) +13943: -> iterator +13943: { +13943: if (__prev_n == _M_buckets[__bkt]) +13943: _M_remove_bucket_begin(__bkt, __n->_M_next(), +13943: __n->_M_nxt ? _M_bucket_index(*__n->_M_next()) : 0); +13943: else if (__n->_M_nxt) +13943: { +13943: size_type __next_bkt = _M_bucket_index(*__n->_M_next()); +13943: if (__next_bkt != __bkt) +13943: _M_buckets[__next_bkt] = __prev_n; +13943: } +13943: +13943: __prev_n->_M_nxt = __n->_M_nxt; +13943: iterator __result(__n->_M_next()); +13943: this->_M_deallocate_node(__n); +13943: --_M_element_count; +13943: +13943: return __result; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_erase(true_type , const key_type& __k) +13943: -> size_type +13943: { +13943: __node_base_ptr __prev_n; +13943: __node_ptr __n; +13943: std::size_t __bkt; +13943: if (size() <= __small_size_threshold()) +13943: { +13943: __prev_n = _M_find_before_node(__k); +13943: if (!__prev_n) +13943: return 0; +13943: +13943: +13943: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +13943: __bkt = _M_bucket_index(*__n); +13943: } +13943: else +13943: { +13943: __hash_code __code = this->_M_hash_code(__k); +13943: __bkt = _M_bucket_index(__code); +13943: +13943: +13943: __prev_n = _M_find_before_node(__bkt, __k, __code); +13943: if (!__prev_n) +13943: return 0; +13943: +13943: +13943: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +13943: } +13943: +13943: _M_erase(__bkt, __prev_n, __n); +13943: return 1; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_erase(false_type , const key_type& __k) +13943: -> size_type +13943: { +13943: std::size_t __bkt; +13943: __node_base_ptr __prev_n; +13943: __node_ptr __n; +13943: if (size() <= __small_size_threshold()) +13943: { +13943: __prev_n = _M_find_before_node(__k); +13943: if (!__prev_n) +13943: return 0; +13943: +13943: +13943: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +13943: __bkt = _M_bucket_index(*__n); +13943: } +13943: else +13943: { +13943: __hash_code __code = this->_M_hash_code(__k); +13943: __bkt = _M_bucket_index(__code); +13943: +13943: +13943: __prev_n = _M_find_before_node(__bkt, __k, __code); +13943: if (!__prev_n) +13943: return 0; +13943: +13943: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __node_ptr __n_last = __n->_M_next(); +13943: while (__n_last && this->_M_node_equals(*__n, *__n_last)) +13943: __n_last = __n_last->_M_next(); +13943: +13943: std::size_t __n_last_bkt = __n_last ? _M_bucket_index(*__n_last) : __bkt; +13943: +13943: +13943: size_type __result = 0; +13943: do +13943: { +13943: __node_ptr __p = __n->_M_next(); +13943: this->_M_deallocate_node(__n); +13943: __n = __p; +13943: ++__result; +13943: } +13943: while (__n != __n_last); +13943: +13943: _M_element_count -= __result; +13943: if (__prev_n == _M_buckets[__bkt]) +13943: _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); +13943: else if (__n_last_bkt != __bkt) +13943: _M_buckets[__n_last_bkt] = __prev_n; +13943: __prev_n->_M_nxt = __n_last; +13943: return __result; +13943: } +13943: +13943: template +13943: auto +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: erase(const_iterator __first, const_iterator __last) +13943: -> iterator +13943: { +13943: __node_ptr __n = __first._M_cur; +13943: __node_ptr __last_n = __last._M_cur; +13943: if (__n == __last_n) +13943: return iterator(__n); +13943: +13943: std::size_t __bkt = _M_bucket_index(*__n); +13943: +13943: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); +13943: bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); +13943: std::size_t __n_bkt = __bkt; +13943: for (;;) +13943: { +13943: do +13943: { +13943: __node_ptr __tmp = __n; +13943: __n = __n->_M_next(); +13943: this->_M_deallocate_node(__tmp); +13943: --_M_element_count; +13943: if (!__n) +13943: break; +13943: __n_bkt = _M_bucket_index(*__n); +13943: } +13943: while (__n != __last_n && __n_bkt == __bkt); +13943: if (__is_bucket_begin) +13943: _M_remove_bucket_begin(__bkt, __n, __n_bkt); +13943: if (__n == __last_n) +13943: break; +13943: __is_bucket_begin = true; +13943: __bkt = __n_bkt; +13943: } +13943: +13943: if (__n && (__n_bkt != __bkt || __is_bucket_begin)) +13943: _M_buckets[__n_bkt] = __prev_n; +13943: __prev_n->_M_nxt = __n; +13943: return iterator(__n); +13943: } +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: clear() noexcept +13943: { +13943: this->_M_deallocate_nodes(_M_begin()); +13943: __builtin_memset(_M_buckets, 0, +13943: _M_bucket_count * sizeof(__node_base_ptr)); +13943: _M_element_count = 0; +13943: _M_before_begin._M_nxt = nullptr; +13943: } +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: rehash(size_type __bkt_count) +13943: { +13943: __rehash_guard_t __rehash_guard(_M_rehash_policy); +13943: __bkt_count +13943: = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), +13943: __bkt_count); +13943: __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count); +13943: +13943: if (__bkt_count != _M_bucket_count) +13943: { +13943: _M_rehash(__bkt_count, __unique_keys{}); +13943: __rehash_guard._M_guarded_obj = nullptr; +13943: } +13943: } +13943: +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_rehash(size_type __bkt_count, true_type ) +13943: { +13943: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); +13943: __node_ptr __p = _M_begin(); +13943: _M_before_begin._M_nxt = nullptr; +13943: std::size_t __bbegin_bkt = 0; +13943: while (__p) +13943: { +13943: __node_ptr __next = __p->_M_next(); +13943: std::size_t __bkt +13943: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); +13943: if (!__new_buckets[__bkt]) +13943: { +13943: __p->_M_nxt = _M_before_begin._M_nxt; +13943: _M_before_begin._M_nxt = __p; +13943: __new_buckets[__bkt] = &_M_before_begin; +13943: if (__p->_M_nxt) +13943: __new_buckets[__bbegin_bkt] = __p; +13943: __bbegin_bkt = __bkt; +13943: } +13943: else +13943: { +13943: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; +13943: __new_buckets[__bkt]->_M_nxt = __p; +13943: } +13943: +13943: __p = __next; +13943: } +13943: +13943: _M_deallocate_buckets(); +13943: _M_bucket_count = __bkt_count; +13943: _M_buckets = __new_buckets; +13943: } +13943: +13943: +13943: +13943: template +13943: void +13943: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +13943: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +13943: _M_rehash(size_type __bkt_count, false_type ) +13943: { +13943: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); +13943: __node_ptr __p = _M_begin(); +13943: _M_before_begin._M_nxt = nullptr; +13943: std::size_t __bbegin_bkt = 0; +13943: std::size_t __prev_bkt = 0; +13943: __node_ptr __prev_p = nullptr; +13943: bool __check_bucket = false; +13943: +13943: while (__p) +13943: { +13943: __node_ptr __next = __p->_M_next(); +13943: std::size_t __bkt +13943: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); +13943: +13943: if (__prev_p && __prev_bkt == __bkt) +13943: { +13943: +13943: +13943: +13943: __p->_M_nxt = __prev_p->_M_nxt; +13943: __prev_p->_M_nxt = __p; +13943: +13943: +13943: +13943: +13943: +13943: +13943: __check_bucket = true; +13943: } +13943: else +13943: { +13943: if (__check_bucket) +13943: { +13943: +13943: +13943: if (__prev_p->_M_nxt) +13943: { +13943: std::size_t __next_bkt +13943: = __hash_code_base::_M_bucket_index( +13943: *__prev_p->_M_next(), __bkt_count); +13943: if (__next_bkt != __prev_bkt) +13943: __new_buckets[__next_bkt] = __prev_p; +13943: } +13943: __check_bucket = false; +13943: } +13943: +13943: if (!__new_buckets[__bkt]) +13943: { +13943: __p->_M_nxt = _M_before_begin._M_nxt; +13943: _M_before_begin._M_nxt = __p; +13943: __new_buckets[__bkt] = &_M_before_begin; +13943: if (__p->_M_nxt) +13943: __new_buckets[__bbegin_bkt] = __p; +13943: __bbegin_bkt = __bkt; +13943: } +13943: else +13943: { +13943: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; +13943: __new_buckets[__bkt]->_M_nxt = __p; +13943: } +13943: } +13943: __prev_p = __p; +13943: __prev_bkt = __bkt; +13943: __p = __next; +13943: } +13943: +13943: if (__check_bucket && __prev_p->_M_nxt) +13943: { +13943: std::size_t __next_bkt +13943: = __hash_code_base::_M_bucket_index(*__prev_p->_M_next(), +13943: __bkt_count); +13943: if (__next_bkt != __prev_bkt) +13943: __new_buckets[__next_bkt] = __prev_p; +13943: } +13943: +13943: _M_deallocate_buckets(); +13943: _M_bucket_count = __bkt_count; +13943: _M_buckets = __new_buckets; +13943: } +13943: +13943: +13943: template class _Hash_merge_helper { }; +13943: +13943: +13943: +13943: +13943: template +13943: using _RequireNotAllocatorOrIntegral +13943: = __enable_if_t, __is_allocator<_Hash>>::value>; +13943: +13943: +13943: +13943: +13943: } +13943: # 34 "/usr/include/c++/14/bits/unordered_map.h" 2 3 +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>; +13943: +13943: template, +13943: typename _Pred = std::equal_to<_Key>, +13943: typename _Alloc = std::allocator >, +13943: typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>> +13943: using __umap_hashtable = _Hashtable<_Key, std::pair, +13943: _Alloc, __detail::_Select1st, +13943: _Pred, _Hash, +13943: __detail::_Mod_range_hashing, +13943: __detail::_Default_ranged_hash, +13943: __detail::_Prime_rehash_policy, _Tr>; +13943: +13943: +13943: template +13943: using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>; +13943: +13943: template, +13943: typename _Pred = std::equal_to<_Key>, +13943: typename _Alloc = std::allocator >, +13943: typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>> +13943: using __ummap_hashtable = _Hashtable<_Key, std::pair, +13943: _Alloc, __detail::_Select1st, +13943: _Pred, _Hash, +13943: __detail::_Mod_range_hashing, +13943: __detail::_Default_ranged_hash, +13943: __detail::_Prime_rehash_policy, _Tr>; +13943: +13943: template +13943: class unordered_multimap; +13943: # 105 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template, +13943: typename _Pred = equal_to<_Key>, +13943: typename _Alloc = allocator>> +13943: class unordered_map +13943: { +13943: typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; +13943: _Hashtable _M_h; +13943: +13943: public: +13943: +13943: +13943: +13943: typedef typename _Hashtable::key_type key_type; +13943: typedef typename _Hashtable::value_type value_type; +13943: typedef typename _Hashtable::mapped_type mapped_type; +13943: typedef typename _Hashtable::hasher hasher; +13943: typedef typename _Hashtable::key_equal key_equal; +13943: typedef typename _Hashtable::allocator_type allocator_type; +13943: +13943: +13943: +13943: +13943: typedef typename _Hashtable::pointer pointer; +13943: typedef typename _Hashtable::const_pointer const_pointer; +13943: typedef typename _Hashtable::reference reference; +13943: typedef typename _Hashtable::const_reference const_reference; +13943: typedef typename _Hashtable::iterator iterator; +13943: typedef typename _Hashtable::const_iterator const_iterator; +13943: typedef typename _Hashtable::local_iterator local_iterator; +13943: typedef typename _Hashtable::const_local_iterator const_local_iterator; +13943: typedef typename _Hashtable::size_type size_type; +13943: typedef typename _Hashtable::difference_type difference_type; +13943: +13943: +13943: +13943: using node_type = typename _Hashtable::node_type; +13943: using insert_return_type = typename _Hashtable::insert_return_type; +13943: +13943: +13943: +13943: +13943: +13943: unordered_map() = default; +13943: # 157 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: explicit +13943: unordered_map(size_type __n, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__n, __hf, __eql, __a) +13943: { } +13943: # 178 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: unordered_map(_InputIterator __first, _InputIterator __last, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__first, __last, __n, __hf, __eql, __a) +13943: { } +13943: +13943: +13943: unordered_map(const unordered_map&) = default; +13943: +13943: +13943: unordered_map(unordered_map&&) = default; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: unordered_map(const allocator_type& __a) +13943: : _M_h(__a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_map(const unordered_map& __umap, +13943: const allocator_type& __a) +13943: : _M_h(__umap._M_h, __a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_map(unordered_map&& __umap, +13943: const allocator_type& __a) +13943: noexcept( noexcept(_Hashtable(std::move(__umap._M_h), __a)) ) +13943: : _M_h(std::move(__umap._M_h), __a) +13943: { } +13943: # 234 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: unordered_map(initializer_list __l, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__l, __n, __hf, __eql, __a) +13943: { } +13943: +13943: unordered_map(size_type __n, const allocator_type& __a) +13943: : unordered_map(__n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_map(size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_map(__n, __hf, key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_map(_InputIterator __first, _InputIterator __last, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_map(_InputIterator __first, _InputIterator __last, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_map(__first, __last, __n, __hf, key_equal(), __a) +13943: { } +13943: +13943: unordered_map(initializer_list __l, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_map(__l, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_map(initializer_list __l, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_map(__l, __n, __hf, key_equal(), __a) +13943: { } +13943: +13943: +13943: unordered_map& +13943: operator=(const unordered_map&) = default; +13943: +13943: +13943: unordered_map& +13943: operator=(unordered_map&&) = default; +13943: # 296 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: unordered_map& +13943: operator=(initializer_list __l) +13943: { +13943: _M_h = __l; +13943: return *this; +13943: } +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return _M_h.get_allocator(); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_h.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_h.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_h.max_size(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: begin() noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: const_iterator +13943: cbegin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: end() noexcept +13943: { return _M_h.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return _M_h.end(); } +13943: +13943: const_iterator +13943: cend() const noexcept +13943: { return _M_h.end(); } +13943: # 393 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: std::pair +13943: emplace(_Args&&... __args) +13943: { return _M_h.emplace(std::forward<_Args>(__args)...); } +13943: # 424 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_h.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __key) +13943: { return _M_h.extract(__key); } +13943: +13943: +13943: insert_return_type +13943: insert(node_type&& __nh) +13943: { return _M_h._M_reinsert_node(std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator, node_type&& __nh) +13943: { return _M_h._M_reinsert_node(std::move(__nh)).position; } +13943: # 477 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: pair +13943: try_emplace(const key_type& __k, _Args&&... __args) +13943: { +13943: return _M_h.try_emplace(cend(), __k, std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: template +13943: pair +13943: try_emplace(key_type&& __k, _Args&&... __args) +13943: { +13943: return _M_h.try_emplace(cend(), std::move(__k), +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 521 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: iterator +13943: try_emplace(const_iterator __hint, const key_type& __k, +13943: _Args&&... __args) +13943: { +13943: return _M_h.try_emplace(__hint, __k, +13943: std::forward<_Args>(__args)...).first; +13943: } +13943: +13943: +13943: template +13943: iterator +13943: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) +13943: { +13943: return _M_h.try_emplace(__hint, std::move(__k), +13943: std::forward<_Args>(__args)...).first; +13943: } +13943: # 558 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: std::pair +13943: insert(const value_type& __x) +13943: { return _M_h.insert(__x); } +13943: +13943: +13943: +13943: std::pair +13943: insert(value_type&& __x) +13943: { return _M_h.insert(std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, +13943: pair> +13943: insert(_Pair&& __x) +13943: { return _M_h.emplace(std::forward<_Pair>(__x)); } +13943: # 597 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: insert(const_iterator __hint, const value_type& __x) +13943: { return _M_h.insert(__hint, __x); } +13943: +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, value_type&& __x) +13943: { return _M_h.insert(__hint, std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, iterator> +13943: insert(const_iterator __hint, _Pair&& __x) +13943: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } +13943: # 622 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_h.insert(__first, __last); } +13943: # 634 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: insert(initializer_list __l) +13943: { _M_h.insert(__l); } +13943: # 660 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: pair +13943: insert_or_assign(const key_type& __k, _Obj&& __obj) +13943: { +13943: auto __ret = _M_h.try_emplace(cend(), __k, +13943: std::forward<_Obj>(__obj)); +13943: if (!__ret.second) +13943: __ret.first->second = std::forward<_Obj>(__obj); +13943: return __ret; +13943: } +13943: +13943: +13943: template +13943: pair +13943: insert_or_assign(key_type&& __k, _Obj&& __obj) +13943: { +13943: auto __ret = _M_h.try_emplace(cend(), std::move(__k), +13943: std::forward<_Obj>(__obj)); +13943: if (!__ret.second) +13943: __ret.first->second = std::forward<_Obj>(__obj); +13943: return __ret; +13943: } +13943: # 709 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: iterator +13943: insert_or_assign(const_iterator __hint, const key_type& __k, +13943: _Obj&& __obj) +13943: { +13943: auto __ret = _M_h.try_emplace(__hint, __k, std::forward<_Obj>(__obj)); +13943: if (!__ret.second) +13943: __ret.first->second = std::forward<_Obj>(__obj); +13943: return __ret.first; +13943: } +13943: +13943: +13943: template +13943: iterator +13943: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) +13943: { +13943: auto __ret = _M_h.try_emplace(__hint, std::move(__k), +13943: std::forward<_Obj>(__obj)); +13943: if (!__ret.second) +13943: __ret.first->second = std::forward<_Obj>(__obj); +13943: return __ret.first; +13943: } +13943: # 747 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_h.erase(__position); } +13943: +13943: +13943: iterator +13943: erase(iterator __position) +13943: { return _M_h.erase(__position); } +13943: # 769 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_h.erase(__x); } +13943: # 787 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_h.erase(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_h.clear(); } +13943: # 811 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: swap(unordered_map& __x) +13943: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +13943: { _M_h.swap(__x._M_h); } +13943: +13943: +13943: template +13943: friend class std::_Hash_merge_helper; +13943: +13943: template +13943: void +13943: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Hash_merge_helper; +13943: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Hash_merge_helper; +13943: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: hasher +13943: hash_function() const +13943: { return _M_h.hash_function(); } +13943: +13943: +13943: +13943: key_equal +13943: key_eq() const +13943: { return _M_h.key_eq(); } +13943: # 875 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_h.find(__x); } +13943: # 886 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_h.find(__x); } +13943: # 908 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_h.count(__x); } +13943: # 948 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_h.equal_range(__x); } +13943: # 960 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_h.equal_range(__x); } +13943: # 986 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: mapped_type& +13943: operator[](const key_type& __k) +13943: { return _M_h[__k]; } +13943: +13943: mapped_type& +13943: operator[](key_type&& __k) +13943: { return _M_h[std::move(__k)]; } +13943: # 1003 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: mapped_type& +13943: at(const key_type& __k) +13943: { return _M_h.at(__k); } +13943: +13943: const mapped_type& +13943: at(const key_type& __k) const +13943: { return _M_h.at(__k); } +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket_count() const noexcept +13943: { return _M_h.bucket_count(); } +13943: +13943: +13943: size_type +13943: max_bucket_count() const noexcept +13943: { return _M_h.max_bucket_count(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket_size(size_type __n) const +13943: { return _M_h.bucket_size(__n); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket(const key_type& __key) const +13943: { return _M_h.bucket(__key); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: local_iterator +13943: begin(size_type __n) +13943: { return _M_h.begin(__n); } +13943: # 1059 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: const_local_iterator +13943: begin(size_type __n) const +13943: { return _M_h.begin(__n); } +13943: +13943: const_local_iterator +13943: cbegin(size_type __n) const +13943: { return _M_h.cbegin(__n); } +13943: # 1074 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: local_iterator +13943: end(size_type __n) +13943: { return _M_h.end(__n); } +13943: # 1085 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: const_local_iterator +13943: end(size_type __n) const +13943: { return _M_h.end(__n); } +13943: +13943: const_local_iterator +13943: cend(size_type __n) const +13943: { return _M_h.cend(__n); } +13943: +13943: +13943: +13943: +13943: +13943: float +13943: load_factor() const noexcept +13943: { return _M_h.load_factor(); } +13943: +13943: +13943: +13943: float +13943: max_load_factor() const noexcept +13943: { return _M_h.max_load_factor(); } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: max_load_factor(float __z) +13943: { _M_h.max_load_factor(__z); } +13943: # 1122 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: rehash(size_type __n) +13943: { _M_h.rehash(__n); } +13943: # 1133 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: reserve(size_type __n) +13943: { _M_h.reserve(__n); } +13943: +13943: template +13943: friend bool +13943: operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, +13943: const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&); +13943: }; +13943: +13943: +13943: +13943: template>, +13943: typename _Pred = equal_to<__iter_key_t<_InputIterator>>, +13943: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_map(_InputIterator, _InputIterator, +13943: typename unordered_map::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +13943: -> unordered_map<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, +13943: _Hash, _Pred, _Allocator>; +13943: +13943: template, +13943: typename _Pred = equal_to<_Key>, +13943: typename _Allocator = allocator>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_map(initializer_list>, +13943: typename unordered_map::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +13943: -> unordered_map<_Key, _Tp, _Hash, _Pred, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_map(_InputIterator, _InputIterator, +13943: typename unordered_map::size_type, _Allocator) +13943: -> unordered_map<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, +13943: hash<__iter_key_t<_InputIterator>>, +13943: equal_to<__iter_key_t<_InputIterator>>, +13943: _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_map(_InputIterator, _InputIterator, _Allocator) +13943: -> unordered_map<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, +13943: hash<__iter_key_t<_InputIterator>>, +13943: equal_to<__iter_key_t<_InputIterator>>, +13943: _Allocator>; +13943: +13943: template, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_map(_InputIterator, _InputIterator, +13943: typename unordered_map::size_type, +13943: _Hash, _Allocator) +13943: -> unordered_map<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, _Hash, +13943: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +13943: +13943: template> +13943: unordered_map(initializer_list>, +13943: typename unordered_map::size_type, +13943: _Allocator) +13943: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +13943: +13943: template> +13943: unordered_map(initializer_list>, _Allocator) +13943: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_map(initializer_list>, +13943: typename unordered_map::size_type, +13943: _Hash, _Allocator) +13943: -> unordered_map<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; +13943: # 1251 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template, +13943: typename _Pred = equal_to<_Key>, +13943: typename _Alloc = allocator>> +13943: class unordered_multimap +13943: { +13943: typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; +13943: _Hashtable _M_h; +13943: +13943: public: +13943: +13943: +13943: +13943: typedef typename _Hashtable::key_type key_type; +13943: typedef typename _Hashtable::value_type value_type; +13943: typedef typename _Hashtable::mapped_type mapped_type; +13943: typedef typename _Hashtable::hasher hasher; +13943: typedef typename _Hashtable::key_equal key_equal; +13943: typedef typename _Hashtable::allocator_type allocator_type; +13943: +13943: +13943: +13943: +13943: typedef typename _Hashtable::pointer pointer; +13943: typedef typename _Hashtable::const_pointer const_pointer; +13943: typedef typename _Hashtable::reference reference; +13943: typedef typename _Hashtable::const_reference const_reference; +13943: typedef typename _Hashtable::iterator iterator; +13943: typedef typename _Hashtable::const_iterator const_iterator; +13943: typedef typename _Hashtable::local_iterator local_iterator; +13943: typedef typename _Hashtable::const_local_iterator const_local_iterator; +13943: typedef typename _Hashtable::size_type size_type; +13943: typedef typename _Hashtable::difference_type difference_type; +13943: +13943: +13943: +13943: using node_type = typename _Hashtable::node_type; +13943: +13943: +13943: +13943: +13943: +13943: unordered_multimap() = default; +13943: # 1302 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: explicit +13943: unordered_multimap(size_type __n, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__n, __hf, __eql, __a) +13943: { } +13943: # 1323 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: unordered_multimap(_InputIterator __first, _InputIterator __last, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__first, __last, __n, __hf, __eql, __a) +13943: { } +13943: +13943: +13943: unordered_multimap(const unordered_multimap&) = default; +13943: +13943: +13943: unordered_multimap(unordered_multimap&&) = default; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: unordered_multimap(const allocator_type& __a) +13943: : _M_h(__a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_multimap(const unordered_multimap& __ummap, +13943: const allocator_type& __a) +13943: : _M_h(__ummap._M_h, __a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_multimap(unordered_multimap&& __ummap, +13943: const allocator_type& __a) +13943: noexcept( noexcept(_Hashtable(std::move(__ummap._M_h), __a)) ) +13943: : _M_h(std::move(__ummap._M_h), __a) +13943: { } +13943: # 1379 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: unordered_multimap(initializer_list __l, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__l, __n, __hf, __eql, __a) +13943: { } +13943: +13943: unordered_multimap(size_type __n, const allocator_type& __a) +13943: : unordered_multimap(__n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_multimap(size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_multimap(__n, __hf, key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_multimap(_InputIterator __first, _InputIterator __last, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_multimap(_InputIterator __first, _InputIterator __last, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) +13943: { } +13943: +13943: unordered_multimap(initializer_list __l, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_multimap(__l, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_multimap(initializer_list __l, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_multimap(__l, __n, __hf, key_equal(), __a) +13943: { } +13943: +13943: +13943: unordered_multimap& +13943: operator=(const unordered_multimap&) = default; +13943: +13943: +13943: unordered_multimap& +13943: operator=(unordered_multimap&&) = default; +13943: # 1441 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: unordered_multimap& +13943: operator=(initializer_list __l) +13943: { +13943: _M_h = __l; +13943: return *this; +13943: } +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return _M_h.get_allocator(); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_h.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_h.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_h.max_size(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: begin() noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: const_iterator +13943: cbegin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: end() noexcept +13943: { return _M_h.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return _M_h.end(); } +13943: +13943: const_iterator +13943: cend() const noexcept +13943: { return _M_h.end(); } +13943: # 1533 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: iterator +13943: emplace(_Args&&... __args) +13943: { return _M_h.emplace(std::forward<_Args>(__args)...); } +13943: # 1560 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +13943: # 1575 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: insert(const value_type& __x) +13943: { return _M_h.insert(__x); } +13943: +13943: iterator +13943: insert(value_type&& __x) +13943: { return _M_h.insert(std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, iterator> +13943: insert(_Pair&& __x) +13943: { return _M_h.emplace(std::forward<_Pair>(__x)); } +13943: # 1609 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: insert(const_iterator __hint, const value_type& __x) +13943: { return _M_h.insert(__hint, __x); } +13943: +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, value_type&& __x) +13943: { return _M_h.insert(__hint, std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, iterator> +13943: insert(const_iterator __hint, _Pair&& __x) +13943: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } +13943: # 1634 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_h.insert(__first, __last); } +13943: # 1647 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: insert(initializer_list __l) +13943: { _M_h.insert(__l); } +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_h.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __key) +13943: { return _M_h.extract(__key); } +13943: +13943: +13943: iterator +13943: insert(node_type&& __nh) +13943: { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, node_type&& __nh) +13943: { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } +13943: # 1690 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_h.erase(__position); } +13943: +13943: +13943: iterator +13943: erase(iterator __position) +13943: { return _M_h.erase(__position); } +13943: # 1711 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_h.erase(__x); } +13943: # 1730 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_h.erase(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_h.clear(); } +13943: # 1754 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: swap(unordered_multimap& __x) +13943: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +13943: { _M_h.swap(__x._M_h); } +13943: +13943: +13943: template +13943: friend class std::_Hash_merge_helper; +13943: +13943: template +13943: void +13943: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper +13943: = _Hash_merge_helper; +13943: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper +13943: = _Hash_merge_helper; +13943: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: hasher +13943: hash_function() const +13943: { return _M_h.hash_function(); } +13943: +13943: +13943: +13943: key_equal +13943: key_eq() const +13943: { return _M_h.key_eq(); } +13943: # 1820 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_h.find(__x); } +13943: # 1831 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_h.find(__x); } +13943: # 1849 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_h.count(__x); } +13943: # 1887 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_h.equal_range(__x); } +13943: # 1899 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_h.equal_range(__x); } +13943: # 1915 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: size_type +13943: bucket_count() const noexcept +13943: { return _M_h.bucket_count(); } +13943: +13943: +13943: size_type +13943: max_bucket_count() const noexcept +13943: { return _M_h.max_bucket_count(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket_size(size_type __n) const +13943: { return _M_h.bucket_size(__n); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket(const key_type& __key) const +13943: { return _M_h.bucket(__key); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: local_iterator +13943: begin(size_type __n) +13943: { return _M_h.begin(__n); } +13943: # 1959 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: const_local_iterator +13943: begin(size_type __n) const +13943: { return _M_h.begin(__n); } +13943: +13943: const_local_iterator +13943: cbegin(size_type __n) const +13943: { return _M_h.cbegin(__n); } +13943: # 1974 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: local_iterator +13943: end(size_type __n) +13943: { return _M_h.end(__n); } +13943: # 1985 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: const_local_iterator +13943: end(size_type __n) const +13943: { return _M_h.end(__n); } +13943: +13943: const_local_iterator +13943: cend(size_type __n) const +13943: { return _M_h.cend(__n); } +13943: +13943: +13943: +13943: +13943: +13943: float +13943: load_factor() const noexcept +13943: { return _M_h.load_factor(); } +13943: +13943: +13943: +13943: float +13943: max_load_factor() const noexcept +13943: { return _M_h.max_load_factor(); } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: max_load_factor(float __z) +13943: { _M_h.max_load_factor(__z); } +13943: # 2022 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: rehash(size_type __n) +13943: { _M_h.rehash(__n); } +13943: # 2033 "/usr/include/c++/14/bits/unordered_map.h" 3 +13943: void +13943: reserve(size_type __n) +13943: { _M_h.reserve(__n); } +13943: +13943: template +13943: friend bool +13943: operator==(const unordered_multimap<_Key1, _Tp1, +13943: _Hash1, _Pred1, _Alloc1>&, +13943: const unordered_multimap<_Key1, _Tp1, +13943: _Hash1, _Pred1, _Alloc1>&); +13943: }; +13943: +13943: +13943: +13943: template>, +13943: typename _Pred = equal_to<__iter_key_t<_InputIterator>>, +13943: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multimap(_InputIterator, _InputIterator, +13943: unordered_multimap::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), +13943: _Allocator = _Allocator()) +13943: -> unordered_multimap<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, _Hash, _Pred, +13943: _Allocator>; +13943: +13943: template, +13943: typename _Pred = equal_to<_Key>, +13943: typename _Allocator = allocator>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multimap(initializer_list>, +13943: unordered_multimap::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), +13943: _Allocator = _Allocator()) +13943: -> unordered_multimap<_Key, _Tp, _Hash, _Pred, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multimap(_InputIterator, _InputIterator, +13943: unordered_multimap::size_type, _Allocator) +13943: -> unordered_multimap<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, +13943: hash<__iter_key_t<_InputIterator>>, +13943: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multimap(_InputIterator, _InputIterator, _Allocator) +13943: -> unordered_multimap<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, +13943: hash<__iter_key_t<_InputIterator>>, +13943: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +13943: +13943: template, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multimap(_InputIterator, _InputIterator, +13943: unordered_multimap::size_type, _Hash, +13943: _Allocator) +13943: -> unordered_multimap<__iter_key_t<_InputIterator>, +13943: __iter_val_t<_InputIterator>, _Hash, +13943: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +13943: +13943: template> +13943: unordered_multimap(initializer_list>, +13943: unordered_multimap::size_type, +13943: _Allocator) +13943: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +13943: +13943: template> +13943: unordered_multimap(initializer_list>, _Allocator) +13943: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multimap(initializer_list>, +13943: unordered_multimap::size_type, +13943: _Hash, _Allocator) +13943: -> unordered_multimap<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +13943: unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: template +13943: inline void +13943: swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +13943: unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: template +13943: inline bool +13943: operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +13943: { return __x._M_h._M_equal(__y._M_h); } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: inline bool +13943: operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +13943: { return __x._M_h._M_equal(__y._M_h); } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hash_merge_helper< +13943: std::unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>, +13943: _Hash2, _Eq2> +13943: { +13943: private: +13943: template +13943: using unordered_map = std::unordered_map<_Tp...>; +13943: template +13943: using unordered_multimap = std::unordered_multimap<_Tp...>; +13943: +13943: friend unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +13943: { return __map._M_h; } +13943: +13943: static auto& +13943: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +13943: { return __map._M_h; } +13943: }; +13943: +13943: +13943: template +13943: struct _Hash_merge_helper< +13943: std::unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>, +13943: _Hash2, _Eq2> +13943: { +13943: private: +13943: template +13943: using unordered_map = std::unordered_map<_Tp...>; +13943: template +13943: using unordered_multimap = std::unordered_multimap<_Tp...>; +13943: +13943: friend unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +13943: { return __map._M_h; } +13943: +13943: static auto& +13943: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +13943: { return __map._M_h; } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 42 "/usr/include/c++/14/unordered_map" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/erase_if.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/erase_if.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/erase_if.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std +13943: { +13943: +13943: +13943: namespace __detail +13943: { +13943: template +13943: typename _Container::size_type +13943: __erase_nodes_if(_Container& __cont, _UnsafeContainer& __ucont, +13943: _Predicate __pred) +13943: { +13943: typename _Container::size_type __num = 0; +13943: for (auto __iter = __ucont.begin(), __last = __ucont.end(); +13943: __iter != __last;) +13943: { +13943: if (__pred(*__iter)) +13943: { +13943: __iter = __cont.erase(__iter); +13943: ++__num; +13943: } +13943: else +13943: ++__iter; +13943: } +13943: return __num; +13943: } +13943: } +13943: +13943: +13943: } +13943: # 44 "/usr/include/c++/14/unordered_map" 2 3 +13943: # 56 "/usr/include/c++/14/unordered_map" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 57 "/usr/include/c++/14/unordered_map" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr +13943: { +13943: template, +13943: typename _Pred = std::equal_to<_Key>> +13943: using unordered_map +13943: = std::unordered_map<_Key, _Tp, _Hash, _Pred, +13943: polymorphic_allocator>>; +13943: template, +13943: typename _Pred = std::equal_to<_Key>> +13943: using unordered_multimap +13943: = std::unordered_multimap<_Key, _Tp, _Hash, _Pred, +13943: polymorphic_allocator>>; +13943: } +13943: +13943: } +13943: # 64 "/usr/include/c++/14/functional" 2 3 +13943: # 1 "/usr/include/c++/14/vector" 1 3 +13943: # 58 "/usr/include/c++/14/vector" 3 +13943: +13943: # 59 "/usr/include/c++/14/vector" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_vector.h" 1 3 +13943: # 77 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: struct _Vector_base +13943: { +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_Tp>::other _Tp_alloc_type; +13943: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer +13943: pointer; +13943: +13943: struct _Vector_impl_data +13943: { +13943: pointer _M_start; +13943: pointer _M_finish; +13943: pointer _M_end_of_storage; +13943: +13943: +13943: _Vector_impl_data() noexcept +13943: : _M_start(), _M_finish(), _M_end_of_storage() +13943: { } +13943: +13943: +13943: +13943: _Vector_impl_data(_Vector_impl_data&& __x) noexcept +13943: : _M_start(__x._M_start), _M_finish(__x._M_finish), +13943: _M_end_of_storage(__x._M_end_of_storage) +13943: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } +13943: +13943: +13943: +13943: void +13943: _M_copy_data(_Vector_impl_data const& __x) noexcept +13943: { +13943: _M_start = __x._M_start; +13943: _M_finish = __x._M_finish; +13943: _M_end_of_storage = __x._M_end_of_storage; +13943: } +13943: +13943: +13943: void +13943: _M_swap_data(_Vector_impl_data& __x) noexcept +13943: { +13943: +13943: +13943: _Vector_impl_data __tmp; +13943: __tmp._M_copy_data(*this); +13943: _M_copy_data(__x); +13943: __x._M_copy_data(__tmp); +13943: } +13943: }; +13943: +13943: struct _Vector_impl +13943: : public _Tp_alloc_type, public _Vector_impl_data +13943: { +13943: +13943: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) +13943: +13943: +13943: +13943: +13943: : _Tp_alloc_type() +13943: { } +13943: +13943: +13943: _Vector_impl(_Tp_alloc_type const& __a) noexcept +13943: : _Tp_alloc_type(__a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: _Vector_impl(_Vector_impl&& __x) noexcept +13943: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) +13943: { } +13943: +13943: +13943: _Vector_impl(_Tp_alloc_type&& __a) noexcept +13943: : _Tp_alloc_type(std::move(__a)) +13943: { } +13943: +13943: +13943: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept +13943: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) +13943: { } +13943: # 293 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: }; +13943: +13943: public: +13943: typedef _Alloc allocator_type; +13943: +13943: +13943: _Tp_alloc_type& +13943: _M_get_Tp_allocator() noexcept +13943: { return this->_M_impl; } +13943: +13943: +13943: const _Tp_alloc_type& +13943: _M_get_Tp_allocator() const noexcept +13943: { return this->_M_impl; } +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_get_Tp_allocator()); } +13943: +13943: +13943: _Vector_base() = default; +13943: +13943: +13943: +13943: +13943: +13943: _Vector_base(const allocator_type& __a) noexcept +13943: : _M_impl(__a) { } +13943: +13943: +13943: +13943: +13943: _Vector_base(size_t __n) +13943: : _M_impl() +13943: { _M_create_storage(__n); } +13943: +13943: +13943: +13943: _Vector_base(size_t __n, const allocator_type& __a) +13943: : _M_impl(__a) +13943: { _M_create_storage(__n); } +13943: +13943: +13943: _Vector_base(_Vector_base&&) = default; +13943: +13943: +13943: +13943: +13943: _Vector_base(_Tp_alloc_type&& __a) noexcept +13943: : _M_impl(std::move(__a)) { } +13943: +13943: +13943: _Vector_base(_Vector_base&& __x, const allocator_type& __a) +13943: : _M_impl(__a) +13943: { +13943: if (__x.get_allocator() == __a) +13943: this->_M_impl._M_swap_data(__x._M_impl); +13943: else +13943: { +13943: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; +13943: _M_create_storage(__n); +13943: } +13943: } +13943: +13943: +13943: +13943: _Vector_base(const allocator_type& __a, _Vector_base&& __x) +13943: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) +13943: { } +13943: +13943: +13943: +13943: ~_Vector_base() noexcept +13943: { +13943: _M_deallocate(_M_impl._M_start, +13943: _M_impl._M_end_of_storage - _M_impl._M_start); +13943: } +13943: +13943: public: +13943: _Vector_impl _M_impl; +13943: +13943: +13943: pointer +13943: _M_allocate(size_t __n) +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; +13943: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); +13943: } +13943: +13943: +13943: void +13943: _M_deallocate(pointer __p, size_t __n) +13943: { +13943: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; +13943: if (__p) +13943: _Tr::deallocate(_M_impl, __p, __n); +13943: } +13943: +13943: protected: +13943: +13943: +13943: void +13943: _M_create_storage(size_t __n) +13943: { +13943: this->_M_impl._M_start = this->_M_allocate(__n); +13943: this->_M_impl._M_finish = this->_M_impl._M_start; +13943: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; +13943: } +13943: }; +13943: # 427 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template > +13943: class vector : protected _Vector_base<_Tp, _Alloc> +13943: { +13943: # 440 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: static_assert(is_same::type, _Tp>::value, +13943: "std::vector must have a non-const, non-volatile value_type"); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef _Vector_base<_Tp, _Alloc> _Base; +13943: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; +13943: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; +13943: +13943: public: +13943: typedef _Tp value_type; +13943: typedef typename _Base::pointer pointer; +13943: typedef typename _Alloc_traits::const_pointer const_pointer; +13943: typedef typename _Alloc_traits::reference reference; +13943: typedef typename _Alloc_traits::const_reference const_reference; +13943: typedef __gnu_cxx::__normal_iterator iterator; +13943: typedef __gnu_cxx::__normal_iterator +13943: const_iterator; +13943: typedef std::reverse_iterator const_reverse_iterator; +13943: typedef std::reverse_iterator reverse_iterator; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef _Alloc allocator_type; +13943: +13943: private: +13943: +13943: static constexpr bool +13943: _S_nothrow_relocate(true_type) +13943: { +13943: return noexcept(std::__relocate_a(std::declval(), +13943: std::declval(), +13943: std::declval(), +13943: std::declval<_Tp_alloc_type&>())); +13943: } +13943: +13943: static constexpr bool +13943: _S_nothrow_relocate(false_type) +13943: { return false; } +13943: +13943: static constexpr bool +13943: _S_use_relocate() +13943: { +13943: +13943: +13943: +13943: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); +13943: } +13943: +13943: static pointer +13943: _S_do_relocate(pointer __first, pointer __last, pointer __result, +13943: _Tp_alloc_type& __alloc, true_type) noexcept +13943: { +13943: return std::__relocate_a(__first, __last, __result, __alloc); +13943: } +13943: +13943: static pointer +13943: _S_do_relocate(pointer, pointer, pointer __result, +13943: _Tp_alloc_type&, false_type) noexcept +13943: { return __result; } +13943: +13943: static pointer +13943: _S_relocate(pointer __first, pointer __last, pointer __result, +13943: _Tp_alloc_type& __alloc) noexcept +13943: { +13943: +13943: +13943: return std::__relocate_a(__first, __last, __result, __alloc); +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: protected: +13943: using _Base::_M_allocate; +13943: using _Base::_M_deallocate; +13943: using _Base::_M_impl; +13943: using _Base::_M_get_Tp_allocator; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: vector() = default; +13943: # 540 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: explicit +13943: +13943: vector(const allocator_type& __a) noexcept +13943: : _Base(__a) { } +13943: # 554 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: explicit +13943: +13943: vector(size_type __n, const allocator_type& __a = allocator_type()) +13943: : _Base(_S_check_init_len(__n, __a), __a) +13943: { _M_default_initialize(__n); } +13943: # 568 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: vector(size_type __n, const value_type& __value, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(_S_check_init_len(__n, __a), __a) +13943: { _M_fill_initialize(__n, __value); } +13943: # 600 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: vector(const vector& __x) +13943: : _Base(__x.size(), +13943: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) +13943: { +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_copy_a(__x.begin(), __x.end(), +13943: this->_M_impl._M_start, +13943: _M_get_Tp_allocator()); +13943: } +13943: # 620 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: vector(vector&&) noexcept = default; +13943: +13943: +13943: +13943: vector(const vector& __x, const __type_identity_t& __a) +13943: : _Base(__x.size(), __a) +13943: { +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_copy_a(__x.begin(), __x.end(), +13943: this->_M_impl._M_start, +13943: _M_get_Tp_allocator()); +13943: } +13943: +13943: private: +13943: +13943: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept +13943: : _Base(__m, std::move(__rv)) +13943: { } +13943: +13943: +13943: vector(vector&& __rv, const allocator_type& __m, false_type) +13943: : _Base(__m) +13943: { +13943: if (__rv.get_allocator() == __m) +13943: this->_M_impl._M_swap_data(__rv._M_impl); +13943: else if (!__rv.empty()) +13943: { +13943: this->_M_create_storage(__rv.size()); +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_move_a(__rv.begin(), __rv.end(), +13943: this->_M_impl._M_start, +13943: _M_get_Tp_allocator()); +13943: __rv.clear(); +13943: } +13943: } +13943: +13943: public: +13943: +13943: +13943: vector(vector&& __rv, const __type_identity_t& __m) +13943: noexcept( noexcept( +13943: vector(std::declval(), std::declval(), +13943: std::declval())) ) +13943: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) +13943: { } +13943: # 677 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: vector(initializer_list __l, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(__a) +13943: { +13943: _M_range_initialize(__l.begin(), __l.end(), +13943: random_access_iterator_tag()); +13943: } +13943: # 704 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template> +13943: +13943: vector(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(__a) +13943: { +13943: _M_range_initialize(__first, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: # 732 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: ~vector() noexcept +13943: { +13943: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: ; +13943: } +13943: # 749 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: vector& +13943: operator=(const vector& __x); +13943: # 764 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: vector& +13943: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) +13943: { +13943: constexpr bool __move_storage = +13943: _Alloc_traits::_S_propagate_on_move_assign() +13943: || _Alloc_traits::_S_always_equal(); +13943: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); +13943: return *this; +13943: } +13943: # 786 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: vector& +13943: operator=(initializer_list __l) +13943: { +13943: this->_M_assign_aux(__l.begin(), __l.end(), +13943: random_access_iterator_tag()); +13943: return *this; +13943: } +13943: # 806 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: assign(size_type __n, const value_type& __val) +13943: { _M_fill_assign(__n, __val); } +13943: # 824 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template> +13943: +13943: void +13943: assign(_InputIterator __first, _InputIterator __last) +13943: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +13943: # 853 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: assign(initializer_list __l) +13943: { +13943: this->_M_assign_aux(__l.begin(), __l.end(), +13943: random_access_iterator_tag()); +13943: } +13943: +13943: +13943: +13943: using _Base::get_allocator; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: begin() noexcept +13943: { return iterator(this->_M_impl._M_start); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: begin() const noexcept +13943: { return const_iterator(this->_M_impl._M_start); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: end() noexcept +13943: { return iterator(this->_M_impl._M_finish); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: end() const noexcept +13943: { return const_iterator(this->_M_impl._M_finish); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return reverse_iterator(end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rend() noexcept +13943: { return reverse_iterator(begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cbegin() const noexcept +13943: { return const_iterator(this->_M_impl._M_start); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cend() const noexcept +13943: { return const_iterator(this->_M_impl._M_finish); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: size() const noexcept +13943: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: max_size() const noexcept +13943: { return _S_max_size(_M_get_Tp_allocator()); } +13943: # 1011 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: resize(size_type __new_size) +13943: { +13943: if (__new_size > size()) +13943: _M_default_append(__new_size - size()); +13943: else if (__new_size < size()) +13943: _M_erase_at_end(this->_M_impl._M_start + __new_size); +13943: } +13943: # 1032 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: resize(size_type __new_size, const value_type& __x) +13943: { +13943: if (__new_size > size()) +13943: _M_fill_insert(end(), __new_size - size(), __x); +13943: else if (__new_size < size()) +13943: _M_erase_at_end(this->_M_impl._M_start + __new_size); +13943: } +13943: # 1066 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: shrink_to_fit() +13943: { _M_shrink_to_fit(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: capacity() const noexcept +13943: { +13943: return size_type(this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_start); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: bool +13943: empty() const noexcept +13943: { return begin() == end(); } +13943: # 1110 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: reserve(size_type __n); +13943: # 1126 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: [[__nodiscard__]] +13943: reference +13943: operator[](size_type __n) noexcept +13943: { +13943: ; +13943: return *(this->_M_impl._M_start + __n); +13943: } +13943: # 1145 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: [[__nodiscard__]] +13943: const_reference +13943: operator[](size_type __n) const noexcept +13943: { +13943: ; +13943: return *(this->_M_impl._M_start + __n); +13943: } +13943: +13943: protected: +13943: +13943: +13943: void +13943: _M_range_check(size_type __n) const +13943: { +13943: if (__n >= this->size()) +13943: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") +13943: +13943: , +13943: __n, this->size()); +13943: } +13943: +13943: public: +13943: # 1178 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: [[__nodiscard__]] +13943: reference +13943: at(size_type __n) +13943: { +13943: _M_range_check(__n); +13943: return (*this)[__n]; +13943: } +13943: # 1197 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: [[__nodiscard__]] +13943: const_reference +13943: at(size_type __n) const +13943: { +13943: _M_range_check(__n); +13943: return (*this)[__n]; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: front() noexcept +13943: { +13943: ; +13943: return *begin(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: front() const noexcept +13943: { +13943: ; +13943: return *begin(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: back() noexcept +13943: { +13943: ; +13943: return *(end() - 1); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: back() const noexcept +13943: { +13943: ; +13943: return *(end() - 1); +13943: } +13943: # 1260 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: [[__nodiscard__]] +13943: _Tp* +13943: data() noexcept +13943: { return _M_data_ptr(this->_M_impl._M_start); } +13943: +13943: [[__nodiscard__]] +13943: const _Tp* +13943: data() const noexcept +13943: { return _M_data_ptr(this->_M_impl._M_start); } +13943: # 1281 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: push_back(const value_type& __x) +13943: { +13943: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +13943: { +13943: ; +13943: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +13943: __x); +13943: ++this->_M_impl._M_finish; +13943: ; +13943: } +13943: else +13943: _M_realloc_append(__x); +13943: } +13943: +13943: +13943: +13943: void +13943: push_back(value_type&& __x) +13943: { emplace_back(std::move(__x)); } +13943: +13943: template +13943: +13943: +13943: reference +13943: +13943: +13943: +13943: emplace_back(_Args&&... __args); +13943: # 1322 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: pop_back() noexcept +13943: { +13943: ; +13943: --this->_M_impl._M_finish; +13943: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); +13943: ; +13943: } +13943: # 1345 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template +13943: +13943: iterator +13943: emplace(const_iterator __position, _Args&&... __args) +13943: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } +13943: # 1362 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: iterator +13943: insert(const_iterator __position, const value_type& __x); +13943: # 1393 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: iterator +13943: insert(const_iterator __position, value_type&& __x) +13943: { return _M_insert_rval(__position, std::move(__x)); } +13943: # 1411 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: iterator +13943: insert(const_iterator __position, initializer_list __l) +13943: { +13943: auto __offset = __position - cbegin(); +13943: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), +13943: std::random_access_iterator_tag()); +13943: return begin() + __offset; +13943: } +13943: # 1437 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: iterator +13943: insert(const_iterator __position, size_type __n, const value_type& __x) +13943: { +13943: difference_type __offset = __position - cbegin(); +13943: _M_fill_insert(begin() + __offset, __n, __x); +13943: return begin() + __offset; +13943: } +13943: # 1480 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template> +13943: +13943: iterator +13943: insert(const_iterator __position, _InputIterator __first, +13943: _InputIterator __last) +13943: { +13943: difference_type __offset = __position - cbegin(); +13943: _M_range_insert(begin() + __offset, __first, __last, +13943: std::__iterator_category(__first)); +13943: return begin() + __offset; +13943: } +13943: # 1533 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: iterator +13943: +13943: erase(const_iterator __position) +13943: { return _M_erase(begin() + (__position - cbegin())); } +13943: # 1561 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: iterator +13943: +13943: erase(const_iterator __first, const_iterator __last) +13943: { +13943: const auto __beg = begin(); +13943: const auto __cbeg = cbegin(); +13943: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); +13943: } +13943: # 1586 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: +13943: void +13943: swap(vector& __x) noexcept +13943: { +13943: +13943: 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) +13943: ; +13943: +13943: this->_M_impl._M_swap_data(__x._M_impl); +13943: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), +13943: __x._M_get_Tp_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_erase_at_end(this->_M_impl._M_start); } +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: pointer +13943: _M_allocate_and_copy(size_type __n, +13943: _ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: pointer __result = this->_M_allocate(__n); +13943: try +13943: { +13943: std::__uninitialized_copy_a(__first, __last, __result, +13943: _M_get_Tp_allocator()); +13943: return __result; +13943: } +13943: catch(...) +13943: { +13943: _M_deallocate(__result, __n); +13943: throw; +13943: } +13943: } +13943: # 1666 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template +13943: +13943: void +13943: _M_range_initialize(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag) +13943: { +13943: try { +13943: for (; __first != __last; ++__first) +13943: +13943: emplace_back(*__first); +13943: +13943: +13943: +13943: } catch(...) { +13943: clear(); +13943: throw; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: void +13943: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag) +13943: { +13943: const size_type __n = std::distance(__first, __last); +13943: this->_M_impl._M_start +13943: = this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); +13943: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_copy_a(__first, __last, +13943: this->_M_impl._M_start, +13943: _M_get_Tp_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: _M_fill_initialize(size_type __n, const value_type& __value) +13943: { +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, +13943: _M_get_Tp_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: _M_default_initialize(size_type __n) +13943: { +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, +13943: _M_get_Tp_allocator()); +13943: } +13943: # 1732 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template +13943: +13943: void +13943: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) +13943: { _M_fill_assign(__n, __val); } +13943: +13943: +13943: template +13943: +13943: void +13943: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, +13943: __false_type) +13943: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +13943: +13943: +13943: template +13943: +13943: void +13943: _M_assign_aux(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag); +13943: +13943: +13943: template +13943: +13943: void +13943: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag); +13943: +13943: +13943: +13943: +13943: void +13943: _M_fill_assign(size_type __n, const value_type& __val); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, +13943: __true_type) +13943: { _M_fill_insert(__pos, __n, __val); } +13943: +13943: +13943: template +13943: +13943: void +13943: _M_insert_dispatch(iterator __pos, _InputIterator __first, +13943: _InputIterator __last, __false_type) +13943: { +13943: _M_range_insert(__pos, __first, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: +13943: template +13943: +13943: void +13943: _M_range_insert(iterator __pos, _InputIterator __first, +13943: _InputIterator __last, std::input_iterator_tag); +13943: +13943: +13943: template +13943: +13943: void +13943: _M_range_insert(iterator __pos, _ForwardIterator __first, +13943: _ForwardIterator __last, std::forward_iterator_tag); +13943: +13943: +13943: +13943: +13943: void +13943: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); +13943: +13943: +13943: +13943: +13943: void +13943: _M_default_append(size_type __n); +13943: +13943: +13943: bool +13943: _M_shrink_to_fit(); +13943: # 1834 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: struct _Temporary_value +13943: { +13943: template +13943: explicit +13943: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) +13943: { +13943: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: ~_Temporary_value() +13943: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } +13943: +13943: value_type& +13943: _M_val() noexcept { return _M_storage._M_val; } +13943: +13943: private: +13943: _Tp* +13943: _M_ptr() noexcept { return std::__addressof(_M_storage._M_val); } +13943: +13943: union _Storage +13943: { +13943: constexpr _Storage() : _M_byte() { } +13943: ~_Storage() { } +13943: _Storage& operator=(const _Storage&) = delete; +13943: unsigned char _M_byte; +13943: _Tp _M_val; +13943: }; +13943: +13943: vector* _M_this; +13943: _Storage _M_storage; +13943: }; +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: _M_insert_aux(iterator __position, _Arg&& __arg); +13943: +13943: template +13943: +13943: void +13943: _M_realloc_insert(iterator __position, _Args&&... __args); +13943: +13943: template +13943: +13943: void +13943: _M_realloc_append(_Args&&... __args); +13943: +13943: +13943: +13943: iterator +13943: _M_insert_rval(const_iterator __position, value_type&& __v); +13943: +13943: +13943: template +13943: +13943: iterator +13943: _M_emplace_aux(const_iterator __position, _Args&&... __args); +13943: +13943: +13943: +13943: iterator +13943: _M_emplace_aux(const_iterator __position, value_type&& __v) +13943: { return _M_insert_rval(__position, std::move(__v)); } +13943: +13943: +13943: +13943: +13943: size_type +13943: _M_check_len(size_type __n, const char* __s) const +13943: { +13943: if (max_size() - size() < __n) +13943: __throw_length_error((__s)); +13943: +13943: const size_type __len = size() + (std::max)(size(), __n); +13943: return (__len < size() || __len > max_size()) ? max_size() : __len; +13943: } +13943: +13943: +13943: static size_type +13943: _S_check_init_len(size_type __n, const allocator_type& __a) +13943: { +13943: if (__n > _S_max_size(_Tp_alloc_type(__a))) +13943: __throw_length_error( +13943: ("cannot create std::vector larger than max_size()")); +13943: return __n; +13943: } +13943: +13943: static size_type +13943: _S_max_size(const _Tp_alloc_type& __a) noexcept +13943: { +13943: +13943: +13943: +13943: const size_t __diffmax +13943: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); +13943: const size_t __allocmax = _Alloc_traits::max_size(__a); +13943: return (std::min)(__diffmax, __allocmax); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: _M_erase_at_end(pointer __pos) noexcept +13943: { +13943: if (size_type __n = this->_M_impl._M_finish - __pos) +13943: { +13943: std::_Destroy(__pos, this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish = __pos; +13943: ; +13943: } +13943: } +13943: +13943: +13943: iterator +13943: _M_erase(iterator __position); +13943: +13943: +13943: iterator +13943: _M_erase(iterator __first, iterator __last); +13943: +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: void +13943: _M_move_assign(vector&& __x, true_type) noexcept +13943: { +13943: vector __tmp(get_allocator()); +13943: this->_M_impl._M_swap_data(__x._M_impl); +13943: __tmp._M_impl._M_swap_data(__x._M_impl); +13943: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: _M_move_assign(vector&& __x, false_type) +13943: { +13943: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) +13943: _M_move_assign(std::move(__x), true_type()); +13943: else +13943: { +13943: +13943: +13943: this->_M_assign_aux(std::make_move_iterator(__x.begin()), +13943: std::make_move_iterator(__x.end()), +13943: std::random_access_iterator_tag()); +13943: __x.clear(); +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: _Up* +13943: _M_data_ptr(_Up* __ptr) const noexcept +13943: { return __ptr; } +13943: +13943: +13943: template +13943: +13943: typename std::pointer_traits<_Ptr>::element_type* +13943: _M_data_ptr(_Ptr __ptr) const +13943: { return empty() ? nullptr : std::__to_address(__ptr); } +13943: # 2025 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: }; +13943: +13943: +13943: template::value_type, +13943: typename _Allocator = allocator<_ValT>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireAllocator<_Allocator>> +13943: vector(_InputIterator, _InputIterator, _Allocator = _Allocator()) +13943: -> vector<_ValT, _Allocator>; +13943: # 2047 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +13943: { return (__x.size() == __y.size() +13943: && std::equal(__x.begin(), __x.end(), __y.begin())); } +13943: # 2087 "/usr/include/c++/14/bits/stl_vector.h" 3 +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +13943: { return std::lexicographical_compare(__x.begin(), __x.end(), +13943: __y.begin(), __y.end()); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: +13943: inline void +13943: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: +13943: namespace __detail::__variant +13943: { +13943: template struct _Never_valueless_alt; +13943: +13943: +13943: +13943: template +13943: struct _Never_valueless_alt> +13943: : std::is_nothrow_move_assignable> +13943: { }; +13943: } +13943: +13943: +13943: +13943: } +13943: # 67 "/usr/include/c++/14/vector" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_bvector.h" 1 3 +13943: # 68 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: typedef unsigned long _Bit_type; +13943: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; +13943: +13943: __attribute__((__nonnull__)) +13943: +13943: void +13943: __fill_bvector_n(_Bit_type*, size_t, bool) noexcept; +13943: +13943: +13943: +13943: struct _Bit_reference +13943: { +13943: _Bit_type * _M_p; +13943: _Bit_type _M_mask; +13943: +13943: +13943: _Bit_reference(_Bit_type * __x, _Bit_type __y) +13943: : _M_p(__x), _M_mask(__y) { } +13943: +13943: +13943: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } +13943: +13943: +13943: _Bit_reference(const _Bit_reference&) = default; +13943: +13943: +13943: [[__nodiscard__]] +13943: operator bool() const noexcept +13943: { return !!(*_M_p & _M_mask); } +13943: +13943: +13943: _Bit_reference& +13943: operator=(bool __x) noexcept +13943: { +13943: if (__x) +13943: *_M_p |= _M_mask; +13943: else +13943: *_M_p &= ~_M_mask; +13943: return *this; +13943: } +13943: # 125 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: +13943: _Bit_reference& +13943: operator=(const _Bit_reference& __x) noexcept +13943: { return *this = bool(__x); } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: operator==(const _Bit_reference& __x) const +13943: { return bool(*this) == bool(__x); } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: operator<(const _Bit_reference& __x) const +13943: { return !bool(*this) && bool(__x); } +13943: +13943: +13943: void +13943: flip() noexcept +13943: { *_M_p ^= _M_mask; } +13943: +13943: +13943: +13943: friend void +13943: swap(_Bit_reference __x, _Bit_reference __y) noexcept +13943: { +13943: bool __tmp = __x; +13943: __x = __y; +13943: __y = __tmp; +13943: } +13943: +13943: +13943: friend void +13943: swap(_Bit_reference __x, bool& __y) noexcept +13943: { +13943: bool __tmp = __x; +13943: __x = __y; +13943: __y = __tmp; +13943: } +13943: +13943: +13943: friend void +13943: swap(bool& __x, _Bit_reference __y) noexcept +13943: { +13943: bool __tmp = __x; +13943: __x = __y; +13943: __y = __tmp; +13943: } +13943: +13943: }; +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: struct _Bit_iterator_base +13943: : public std::iterator +13943: { +13943: _Bit_type * _M_p; +13943: unsigned int _M_offset; +13943: +13943: inline __attribute__((__always_inline__)) +13943: void +13943: _M_assume_normalized() const +13943: { +13943: +13943: unsigned int __ofst = _M_offset; +13943: __attribute__ ((__assume__ (__ofst < unsigned(_S_word_bit)))); +13943: +13943: } +13943: +13943: +13943: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) +13943: : _M_p(__x), _M_offset(__y) { } +13943: +13943: +13943: void +13943: _M_bump_up() +13943: { +13943: _M_assume_normalized(); +13943: if (_M_offset++ == int(_S_word_bit) - 1) +13943: { +13943: _M_offset = 0; +13943: ++_M_p; +13943: } +13943: } +13943: +13943: +13943: void +13943: _M_bump_down() +13943: { +13943: _M_assume_normalized(); +13943: if (_M_offset-- == 0) +13943: { +13943: _M_offset = int(_S_word_bit) - 1; +13943: --_M_p; +13943: } +13943: } +13943: +13943: +13943: void +13943: _M_incr(ptrdiff_t __i) +13943: { +13943: _M_assume_normalized(); +13943: difference_type __n = __i + _M_offset; +13943: _M_p += __n / int(_S_word_bit); +13943: __n = __n % int(_S_word_bit); +13943: if (__n < 0) +13943: { +13943: __n += int(_S_word_bit); +13943: --_M_p; +13943: } +13943: _M_offset = static_cast(__n); +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +13943: { +13943: __x._M_assume_normalized(); +13943: __y._M_assume_normalized(); +13943: return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; +13943: } +13943: # 260 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: [[__nodiscard__]] +13943: friend bool +13943: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +13943: { +13943: __x._M_assume_normalized(); +13943: __y._M_assume_normalized(); +13943: return __x._M_p < __y._M_p +13943: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +13943: { return !(__x == __y); } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +13943: { return __y < __x; } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +13943: { return !(__y < __x); } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: friend ptrdiff_t +13943: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +13943: { +13943: __x._M_assume_normalized(); +13943: __y._M_assume_normalized(); +13943: return (int(_S_word_bit) * (__x._M_p - __y._M_p) +13943: + __x._M_offset - __y._M_offset); +13943: } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: struct _Bit_iterator : public _Bit_iterator_base +13943: { +13943: typedef _Bit_reference reference; +13943: +13943: +13943: +13943: typedef _Bit_reference* pointer; +13943: +13943: typedef _Bit_iterator iterator; +13943: +13943: +13943: _Bit_iterator() : _Bit_iterator_base(0, 0) { } +13943: +13943: +13943: _Bit_iterator(_Bit_type * __x, unsigned int __y) +13943: : _Bit_iterator_base(__x, __y) { } +13943: +13943: +13943: iterator +13943: _M_const_cast() const +13943: { return *this; } +13943: +13943: [[__nodiscard__]] +13943: reference +13943: operator*() const +13943: { +13943: _M_assume_normalized(); +13943: return reference(_M_p, 1UL << _M_offset); +13943: } +13943: +13943: +13943: iterator& +13943: operator++() +13943: { +13943: _M_bump_up(); +13943: return *this; +13943: } +13943: +13943: +13943: iterator +13943: operator++(int) +13943: { +13943: iterator __tmp = *this; +13943: _M_bump_up(); +13943: return __tmp; +13943: } +13943: +13943: +13943: iterator& +13943: operator--() +13943: { +13943: _M_bump_down(); +13943: return *this; +13943: } +13943: +13943: +13943: iterator +13943: operator--(int) +13943: { +13943: iterator __tmp = *this; +13943: _M_bump_down(); +13943: return __tmp; +13943: } +13943: +13943: +13943: iterator& +13943: operator+=(difference_type __i) +13943: { +13943: _M_incr(__i); +13943: return *this; +13943: } +13943: +13943: +13943: iterator& +13943: operator-=(difference_type __i) +13943: { +13943: *this += -__i; +13943: return *this; +13943: } +13943: +13943: [[__nodiscard__]] +13943: reference +13943: operator[](difference_type __i) const +13943: { return *(*this + __i); } +13943: +13943: [[__nodiscard__]] +13943: friend iterator +13943: operator+(const iterator& __x, difference_type __n) +13943: { +13943: iterator __tmp = __x; +13943: __tmp += __n; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend iterator +13943: operator+(difference_type __n, const iterator& __x) +13943: { return __x + __n; } +13943: +13943: [[__nodiscard__]] +13943: friend iterator +13943: operator-(const iterator& __x, difference_type __n) +13943: { +13943: iterator __tmp = __x; +13943: __tmp -= __n; +13943: return __tmp; +13943: } +13943: }; +13943: +13943: struct _Bit_const_iterator : public _Bit_iterator_base +13943: { +13943: typedef bool reference; +13943: typedef bool const_reference; +13943: +13943: +13943: +13943: typedef const bool* pointer; +13943: +13943: typedef _Bit_const_iterator const_iterator; +13943: +13943: +13943: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } +13943: +13943: +13943: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) +13943: : _Bit_iterator_base(__x, __y) { } +13943: +13943: +13943: _Bit_const_iterator(const _Bit_iterator& __x) +13943: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } +13943: +13943: +13943: _Bit_iterator +13943: _M_const_cast() const +13943: { return _Bit_iterator(_M_p, _M_offset); } +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: operator*() const +13943: { +13943: _M_assume_normalized(); +13943: return _Bit_reference(_M_p, 1UL << _M_offset); +13943: } +13943: +13943: +13943: const_iterator& +13943: operator++() +13943: { +13943: _M_bump_up(); +13943: return *this; +13943: } +13943: +13943: +13943: const_iterator +13943: operator++(int) +13943: { +13943: const_iterator __tmp = *this; +13943: _M_bump_up(); +13943: return __tmp; +13943: } +13943: +13943: +13943: const_iterator& +13943: operator--() +13943: { +13943: _M_bump_down(); +13943: return *this; +13943: } +13943: +13943: +13943: const_iterator +13943: operator--(int) +13943: { +13943: const_iterator __tmp = *this; +13943: _M_bump_down(); +13943: return __tmp; +13943: } +13943: +13943: +13943: const_iterator& +13943: operator+=(difference_type __i) +13943: { +13943: _M_incr(__i); +13943: return *this; +13943: } +13943: +13943: +13943: const_iterator& +13943: operator-=(difference_type __i) +13943: { +13943: *this += -__i; +13943: return *this; +13943: } +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: operator[](difference_type __i) const +13943: { return *(*this + __i); } +13943: +13943: [[__nodiscard__]] +13943: friend const_iterator +13943: operator+(const const_iterator& __x, difference_type __n) +13943: { +13943: const_iterator __tmp = __x; +13943: __tmp += __n; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend const_iterator +13943: operator-(const const_iterator& __x, difference_type __n) +13943: { +13943: const_iterator __tmp = __x; +13943: __tmp -= __n; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend const_iterator +13943: operator+(difference_type __n, const const_iterator& __x) +13943: { return __x + __n; } +13943: }; +13943: +13943: template +13943: struct _Bvector_base +13943: { +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_Bit_type>::other _Bit_alloc_type; +13943: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> +13943: _Bit_alloc_traits; +13943: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; +13943: +13943: struct _Bvector_impl_data +13943: { +13943: +13943: _Bit_iterator _M_start; +13943: # 547 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: _Bit_iterator _M_finish; +13943: _Bit_pointer _M_end_of_storage; +13943: +13943: +13943: _Bvector_impl_data() noexcept +13943: : _M_start(), _M_finish(), _M_end_of_storage() +13943: { } +13943: +13943: +13943: _Bvector_impl_data(const _Bvector_impl_data&) = default; +13943: +13943: _Bvector_impl_data& +13943: operator=(const _Bvector_impl_data&) = default; +13943: +13943: +13943: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept +13943: : _Bvector_impl_data(__x) +13943: { __x._M_reset(); } +13943: +13943: +13943: void +13943: _M_move_data(_Bvector_impl_data&& __x) noexcept +13943: { +13943: *this = __x; +13943: __x._M_reset(); +13943: } +13943: +13943: +13943: +13943: void +13943: _M_reset() noexcept +13943: { *this = _Bvector_impl_data(); } +13943: +13943: +13943: void +13943: _M_swap_data(_Bvector_impl_data& __x) noexcept +13943: { +13943: +13943: +13943: std::swap(*this, __x); +13943: } +13943: }; +13943: +13943: struct _Bvector_impl +13943: : public _Bit_alloc_type, public _Bvector_impl_data +13943: { +13943: +13943: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) +13943: +13943: +13943: +13943: +13943: : _Bit_alloc_type() +13943: { } +13943: +13943: +13943: _Bvector_impl(const _Bit_alloc_type& __a) noexcept +13943: : _Bit_alloc_type(__a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: _Bvector_impl(_Bvector_impl&& __x) noexcept +13943: : _Bit_alloc_type(std::move(__x)), _Bvector_impl_data(std::move(__x)) +13943: { } +13943: +13943: +13943: _Bvector_impl(_Bit_alloc_type&& __a, _Bvector_impl&& __x) noexcept +13943: : _Bit_alloc_type(std::move(__a)), _Bvector_impl_data(std::move(__x)) +13943: { } +13943: +13943: +13943: +13943: _Bit_type* +13943: _M_end_addr() const noexcept +13943: { +13943: if (this->_M_end_of_storage) +13943: return std::__addressof(this->_M_end_of_storage[-1]) + 1; +13943: return 0; +13943: } +13943: }; +13943: +13943: public: +13943: typedef _Alloc allocator_type; +13943: +13943: +13943: _Bit_alloc_type& +13943: _M_get_Bit_allocator() noexcept +13943: { return this->_M_impl; } +13943: +13943: +13943: const _Bit_alloc_type& +13943: _M_get_Bit_allocator() const noexcept +13943: { return this->_M_impl; } +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_get_Bit_allocator()); } +13943: +13943: +13943: _Bvector_base() = default; +13943: +13943: +13943: +13943: +13943: +13943: _Bvector_base(const allocator_type& __a) +13943: : _M_impl(_Bit_alloc_type(__a)) { } +13943: +13943: +13943: _Bvector_base(_Bvector_base&&) = default; +13943: +13943: +13943: _Bvector_base(_Bvector_base&& __x, const allocator_type& __a) noexcept +13943: : _M_impl(_Bit_alloc_type(__a), std::move(__x._M_impl)) +13943: { } +13943: +13943: +13943: +13943: ~_Bvector_base() +13943: { this->_M_deallocate(); } +13943: +13943: protected: +13943: _Bvector_impl _M_impl; +13943: +13943: +13943: _Bit_pointer +13943: _M_allocate(size_t __n) +13943: { +13943: _Bit_pointer __p = _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); +13943: # 688 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: return __p; +13943: } +13943: +13943: +13943: void +13943: _M_deallocate() +13943: { +13943: if (_M_impl._M_start._M_p) +13943: { +13943: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; +13943: _Bit_alloc_traits::deallocate(_M_impl, +13943: _M_impl._M_end_of_storage - __n, +13943: __n); +13943: _M_impl._M_reset(); +13943: } +13943: } +13943: +13943: +13943: +13943: void +13943: _M_move_data(_Bvector_base&& __x) noexcept +13943: { _M_impl._M_move_data(std::move(__x._M_impl)); } +13943: +13943: +13943: constexpr +13943: static size_t +13943: _S_nword(size_t __n) +13943: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } +13943: }; +13943: # 739 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: template +13943: class vector : protected _Bvector_base<_Alloc> +13943: { +13943: typedef _Bvector_base<_Alloc> _Base; +13943: typedef typename _Base::_Bit_pointer _Bit_pointer; +13943: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; +13943: +13943: +13943: friend struct std::hash; +13943: +13943: +13943: public: +13943: typedef bool value_type; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef _Bit_reference reference; +13943: typedef bool const_reference; +13943: typedef _Bit_reference* pointer; +13943: typedef const bool* const_pointer; +13943: typedef _Bit_iterator iterator; +13943: typedef _Bit_const_iterator const_iterator; +13943: typedef std::reverse_iterator const_reverse_iterator; +13943: typedef std::reverse_iterator reverse_iterator; +13943: typedef _Alloc allocator_type; +13943: +13943: +13943: allocator_type +13943: get_allocator() const +13943: { return _Base::get_allocator(); } +13943: +13943: protected: +13943: using _Base::_M_allocate; +13943: using _Base::_M_deallocate; +13943: using _Base::_S_nword; +13943: using _Base::_M_get_Bit_allocator; +13943: +13943: public: +13943: +13943: vector() = default; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: vector(const allocator_type& __a) +13943: : _Base(__a) { } +13943: +13943: +13943: +13943: explicit +13943: vector(size_type __n, const allocator_type& __a = allocator_type()) +13943: : vector(__n, false, __a) +13943: { } +13943: +13943: +13943: vector(size_type __n, const bool& __value, +13943: const allocator_type& __a = allocator_type()) +13943: +13943: +13943: +13943: +13943: +13943: : _Base(__a) +13943: { +13943: _M_initialize(__n); +13943: _M_initialize_value(__value); +13943: } +13943: +13943: +13943: vector(const vector& __x) +13943: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) +13943: { +13943: const_iterator __xbegin = __x.begin(), __xend = __x.end(); +13943: _M_initialize(__x.size()); +13943: _M_copy_aligned(__xbegin, __xend, begin()); +13943: } +13943: +13943: +13943: vector(vector&&) = default; +13943: +13943: private: +13943: +13943: vector(vector&& __x, const allocator_type& __a, true_type) noexcept +13943: : _Base(std::move(__x), __a) +13943: { } +13943: +13943: +13943: vector(vector&& __x, const allocator_type& __a, false_type) +13943: : _Base(__a) +13943: { +13943: if (__x.get_allocator() == __a) +13943: this->_M_move_data(std::move(__x)); +13943: else +13943: { +13943: _M_initialize(__x.size()); +13943: _M_copy_aligned(__x.begin(), __x.end(), begin()); +13943: __x.clear(); +13943: } +13943: } +13943: +13943: public: +13943: +13943: vector(vector&& __x, const __type_identity_t& __a) +13943: noexcept(_Bit_alloc_traits::_S_always_equal()) +13943: : vector(std::move(__x), __a, +13943: typename _Bit_alloc_traits::is_always_equal{}) +13943: { } +13943: +13943: +13943: vector(const vector& __x, const __type_identity_t& __a) +13943: : _Base(__a) +13943: { +13943: _M_initialize(__x.size()); +13943: _M_copy_aligned(__x.begin(), __x.end(), begin()); +13943: } +13943: +13943: +13943: vector(initializer_list __l, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(__a) +13943: { +13943: _M_initialize_range(__l.begin(), __l.end(), +13943: random_access_iterator_tag()); +13943: } +13943: +13943: +13943: +13943: template> +13943: +13943: vector(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(__a) +13943: { +13943: _M_initialize_range(__first, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: # 889 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: +13943: ~vector() noexcept { } +13943: +13943: +13943: vector& +13943: operator=(const vector& __x) +13943: { +13943: if (&__x == this) +13943: return *this; +13943: +13943: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) +13943: { +13943: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) +13943: { +13943: this->_M_deallocate(); +13943: std::__alloc_on_copy(_M_get_Bit_allocator(), +13943: __x._M_get_Bit_allocator()); +13943: _M_initialize(__x.size()); +13943: } +13943: else +13943: std::__alloc_on_copy(_M_get_Bit_allocator(), +13943: __x._M_get_Bit_allocator()); +13943: } +13943: +13943: if (__x.size() > capacity()) +13943: { +13943: this->_M_deallocate(); +13943: _M_initialize(__x.size()); +13943: } +13943: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), +13943: begin()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: vector& +13943: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) +13943: { +13943: if (_Bit_alloc_traits::_S_propagate_on_move_assign() +13943: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) +13943: { +13943: this->_M_deallocate(); +13943: this->_M_move_data(std::move(__x)); +13943: std::__alloc_on_move(_M_get_Bit_allocator(), +13943: __x._M_get_Bit_allocator()); +13943: } +13943: else +13943: { +13943: if (__x.size() > capacity()) +13943: { +13943: this->_M_deallocate(); +13943: _M_initialize(__x.size()); +13943: } +13943: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), +13943: begin()); +13943: __x.clear(); +13943: } +13943: return *this; +13943: } +13943: +13943: +13943: vector& +13943: operator=(initializer_list __l) +13943: { +13943: this->assign(__l.begin(), __l.end()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: assign(size_type __n, const bool& __x) +13943: { _M_fill_assign(__n, __x); } +13943: +13943: +13943: template> +13943: +13943: void +13943: assign(_InputIterator __first, _InputIterator __last) +13943: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +13943: # 987 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: +13943: void +13943: assign(initializer_list __l) +13943: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: begin() noexcept +13943: { return iterator(this->_M_impl._M_start._M_p, 0); } +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: begin() const noexcept +13943: { return const_iterator(this->_M_impl._M_start._M_p, 0); } +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: end() noexcept +13943: { return this->_M_impl._M_finish; } +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: end() const noexcept +13943: { return this->_M_impl._M_finish; } +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return reverse_iterator(end()); } +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rend() noexcept +13943: { return reverse_iterator(begin()); } +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cbegin() const noexcept +13943: { return const_iterator(this->_M_impl._M_start._M_p, 0); } +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cend() const noexcept +13943: { return this->_M_impl._M_finish; } +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: size() const noexcept +13943: { return size_type(end() - begin()); } +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: max_size() const noexcept +13943: { +13943: const size_type __isize = +13943: __gnu_cxx::__numeric_traits::__max +13943: - int(_S_word_bit) + 1; +13943: const size_type __asize +13943: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); +13943: return (__asize <= __isize / int(_S_word_bit) +13943: ? __asize * int(_S_word_bit) : __isize); +13943: } +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: capacity() const noexcept +13943: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) +13943: - begin()); } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: empty() const noexcept +13943: { return begin() == end(); } +13943: +13943: [[__nodiscard__]] +13943: reference +13943: operator[](size_type __n) +13943: { return begin()[__n]; } +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: operator[](size_type __n) const +13943: { return begin()[__n]; } +13943: +13943: protected: +13943: +13943: void +13943: _M_range_check(size_type __n) const +13943: { +13943: if (__n >= this->size()) +13943: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") +13943: +13943: , +13943: __n, this->size()); +13943: } +13943: +13943: public: +13943: [[__nodiscard__]] +13943: reference +13943: at(size_type __n) +13943: { +13943: _M_range_check(__n); +13943: return (*this)[__n]; +13943: } +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: at(size_type __n) const +13943: { +13943: _M_range_check(__n); +13943: return (*this)[__n]; +13943: } +13943: +13943: +13943: void +13943: reserve(size_type __n) +13943: { +13943: if (__n > max_size()) +13943: __throw_length_error(("vector::reserve")); +13943: if (capacity() < __n) +13943: _M_reallocate(__n); +13943: } +13943: +13943: [[__nodiscard__]] +13943: reference +13943: front() +13943: { return *begin(); } +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: front() const +13943: { return *begin(); } +13943: +13943: [[__nodiscard__]] +13943: reference +13943: back() +13943: { return *(end() - 1); } +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: back() const +13943: { return *(end() - 1); } +13943: +13943: +13943: void +13943: push_back(bool __x) +13943: { +13943: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) +13943: *this->_M_impl._M_finish++ = __x; +13943: else +13943: _M_insert_aux(end(), __x); +13943: } +13943: +13943: +13943: void +13943: swap(vector& __x) noexcept +13943: { +13943: +13943: 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) +13943: ; +13943: +13943: this->_M_impl._M_swap_data(__x._M_impl); +13943: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), +13943: __x._M_get_Bit_allocator()); +13943: } +13943: +13943: +13943: +13943: static void +13943: swap(reference __x, reference __y) noexcept +13943: { +13943: bool __tmp = __x; +13943: __x = __y; +13943: __y = __tmp; +13943: } +13943: +13943: +13943: iterator +13943: +13943: insert(const_iterator __position, const bool& __x) +13943: +13943: +13943: +13943: { +13943: const difference_type __n = __position - begin(); +13943: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() +13943: && __position == end()) +13943: *this->_M_impl._M_finish++ = __x; +13943: else +13943: _M_insert_aux(__position._M_const_cast(), __x); +13943: return begin() + __n; +13943: } +13943: +13943: +13943: __attribute__ ((__deprecated__ ("use '" "insert(position, false)" "' instead"))) +13943: iterator +13943: insert(const_iterator __position) +13943: { return this->insert(__position._M_const_cast(), false); } +13943: +13943: +13943: +13943: template> +13943: +13943: iterator +13943: insert(const_iterator __position, +13943: _InputIterator __first, _InputIterator __last) +13943: { +13943: difference_type __offset = __position - cbegin(); +13943: _M_insert_range(__position._M_const_cast(), +13943: __first, __last, +13943: std::__iterator_category(__first)); +13943: return begin() + __offset; +13943: } +13943: # 1237 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: +13943: iterator +13943: insert(const_iterator __position, size_type __n, const bool& __x) +13943: { +13943: difference_type __offset = __position - cbegin(); +13943: _M_fill_insert(__position._M_const_cast(), __n, __x); +13943: return begin() + __offset; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: insert(const_iterator __p, initializer_list __l) +13943: { return this->insert(__p, __l.begin(), __l.end()); } +13943: +13943: +13943: +13943: void +13943: pop_back() +13943: { --this->_M_impl._M_finish; } +13943: +13943: +13943: iterator +13943: +13943: erase(const_iterator __position) +13943: +13943: +13943: +13943: { return _M_erase(__position._M_const_cast()); } +13943: +13943: +13943: iterator +13943: +13943: erase(const_iterator __first, const_iterator __last) +13943: +13943: +13943: +13943: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } +13943: +13943: +13943: void +13943: resize(size_type __new_size, bool __x = bool()) +13943: { +13943: if (__new_size < size()) +13943: _M_erase_at_end(begin() + difference_type(__new_size)); +13943: else +13943: insert(end(), __new_size - size(), __x); +13943: } +13943: +13943: +13943: +13943: void +13943: shrink_to_fit() +13943: { _M_shrink_to_fit(); } +13943: +13943: +13943: +13943: void +13943: flip() noexcept +13943: { +13943: _Bit_type * const __end = this->_M_impl._M_end_addr(); +13943: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) +13943: *__p = ~*__p; +13943: } +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_erase_at_end(begin()); } +13943: +13943: +13943: template +13943: +13943: +13943: reference +13943: +13943: +13943: +13943: emplace_back(_Args&&... __args) +13943: { +13943: push_back(bool(std::forward<_Args>(__args)...)); +13943: +13943: return back(); +13943: +13943: } +13943: +13943: template +13943: +13943: iterator +13943: emplace(const_iterator __pos, _Args&&... __args) +13943: { return insert(__pos, bool(std::forward<_Args>(__args)...)); } +13943: +13943: +13943: protected: +13943: +13943: +13943: iterator +13943: _M_copy_aligned(const_iterator __first, const_iterator __last, +13943: iterator __result) +13943: { +13943: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); +13943: return std::copy(const_iterator(__last._M_p, 0), __last, +13943: iterator(__q, 0)); +13943: } +13943: +13943: +13943: void +13943: _M_initialize(size_type __n) +13943: { +13943: if (__n) +13943: { +13943: _Bit_pointer __q = this->_M_allocate(__n); +13943: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); +13943: iterator __start = iterator(std::__addressof(*__q), 0); +13943: this->_M_impl._M_start = __start; +13943: this->_M_impl._M_finish = __start + difference_type(__n); +13943: } +13943: } +13943: +13943: +13943: void +13943: _M_initialize_value(bool __x) noexcept +13943: { +13943: if (_Bit_type* __p = this->_M_impl._M_start._M_p) +13943: __fill_bvector_n(__p, this->_M_impl._M_end_addr() - __p, __x); +13943: } +13943: +13943: +13943: void +13943: _M_reallocate(size_type __n); +13943: +13943: +13943: +13943: bool +13943: _M_shrink_to_fit(); +13943: # 1398 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: template +13943: +13943: void +13943: _M_initialize_range(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag) +13943: { +13943: for (; __first != __last; ++__first) +13943: push_back(*__first); +13943: } +13943: +13943: template +13943: +13943: void +13943: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag) +13943: { +13943: const size_type __n = std::distance(__first, __last); +13943: _M_initialize(__n); +13943: std::copy(__first, __last, begin()); +13943: } +13943: # 1434 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: +13943: void +13943: _M_fill_assign(size_t __n, bool __x) +13943: { +13943: if (__n > size()) +13943: { +13943: _M_initialize_value(__x); +13943: insert(end(), __n - size(), __x); +13943: } +13943: else +13943: { +13943: _M_erase_at_end(begin() + __n); +13943: _M_initialize_value(__x); +13943: } +13943: } +13943: +13943: template +13943: +13943: void +13943: _M_assign_aux(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag) +13943: { +13943: iterator __cur = begin(); +13943: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) +13943: *__cur = *__first; +13943: if (__first == __last) +13943: _M_erase_at_end(__cur); +13943: else +13943: insert(end(), __first, __last); +13943: } +13943: +13943: template +13943: +13943: void +13943: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag) +13943: { +13943: const size_type __len = std::distance(__first, __last); +13943: if (__len < size()) +13943: _M_erase_at_end(std::copy(__first, __last, begin())); +13943: else +13943: { +13943: _ForwardIterator __mid = __first; +13943: std::advance(__mid, size()); +13943: std::copy(__first, __mid, begin()); +13943: insert(end(), __mid, __last); +13943: } +13943: } +13943: # 1501 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: +13943: void +13943: _M_fill_insert(iterator __position, size_type __n, bool __x); +13943: +13943: template +13943: +13943: void +13943: _M_insert_range(iterator __pos, _InputIterator __first, +13943: _InputIterator __last, std::input_iterator_tag) +13943: { +13943: for (; __first != __last; ++__first) +13943: { +13943: __pos = insert(__pos, *__first); +13943: ++__pos; +13943: } +13943: } +13943: +13943: template +13943: +13943: void +13943: _M_insert_range(iterator __position, _ForwardIterator __first, +13943: _ForwardIterator __last, std::forward_iterator_tag); +13943: +13943: +13943: void +13943: _M_insert_aux(iterator __position, bool __x); +13943: +13943: +13943: size_type +13943: _M_check_len(size_type __n, const char* __s) const +13943: { +13943: if (max_size() - size() < __n) +13943: __throw_length_error((__s)); +13943: +13943: const size_type __len = size() + std::max(size(), __n); +13943: return (__len < size() || __len > max_size()) ? max_size() : __len; +13943: } +13943: +13943: +13943: void +13943: _M_erase_at_end(iterator __pos) +13943: { this->_M_impl._M_finish = __pos; } +13943: +13943: +13943: iterator +13943: _M_erase(iterator __pos); +13943: +13943: +13943: iterator +13943: _M_erase(iterator __first, iterator __last); +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void data() = delete; +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: inline void +13943: __fill_bvector(_Bit_type* __v, unsigned int __first, unsigned int __last, +13943: bool __x) noexcept +13943: { +13943: const _Bit_type __fmask = ~0ul << __first; +13943: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); +13943: const _Bit_type __mask = __fmask & __lmask; +13943: +13943: if (__x) +13943: *__v |= __mask; +13943: else +13943: *__v &= ~__mask; +13943: } +13943: +13943: +13943: __attribute__((__nonnull__)) +13943: +13943: inline void +13943: __fill_bvector_n(_Bit_type* __p, size_t __n, bool __x) noexcept +13943: { +13943: # 1597 "/usr/include/c++/14/bits/stl_bvector.h" 3 +13943: __builtin_memset(__p, __x ? ~0 : 0, __n * sizeof(_Bit_type)); +13943: } +13943: +13943: +13943: +13943: inline void +13943: __fill_a1(std::_Bit_iterator __first, +13943: std::_Bit_iterator __last, const bool& __x) +13943: { +13943: if (__first._M_p != __last._M_p) +13943: { +13943: _Bit_type* __first_p = __first._M_p; +13943: if (__first._M_offset != 0) +13943: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); +13943: +13943: __fill_bvector_n(__first_p, __last._M_p - __first_p, __x); +13943: +13943: if (__last._M_offset != 0) +13943: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); +13943: } +13943: else if (__first._M_offset != __last._M_offset) +13943: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: struct hash> +13943: : public __hash_base> +13943: { +13943: size_t +13943: operator()(const std::vector&) const noexcept; +13943: }; +13943: +13943: +13943: +13943: } +13943: # 68 "/usr/include/c++/14/vector" 2 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/vector.tcc" 1 3 +13943: # 59 "/usr/include/c++/14/bits/vector.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: reserve(size_type __n) +13943: { +13943: if (__n > this->max_size()) +13943: __throw_length_error(("vector::reserve")); +13943: if (this->capacity() < __n) +13943: { +13943: const size_type __old_size = size(); +13943: pointer __tmp; +13943: +13943: if constexpr (_S_use_relocate()) +13943: { +13943: __tmp = this->_M_allocate(__n); +13943: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, +13943: __tmp, _M_get_Tp_allocator()); +13943: } +13943: else +13943: +13943: { +13943: __tmp = _M_allocate_and_copy(__n, +13943: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), +13943: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); +13943: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: } +13943: ; +13943: _M_deallocate(this->_M_impl._M_start, +13943: this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_start); +13943: this->_M_impl._M_start = __tmp; +13943: this->_M_impl._M_finish = __tmp + __old_size; +13943: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; +13943: } +13943: } +13943: +13943: +13943: template +13943: template +13943: +13943: +13943: typename vector<_Tp, _Alloc>::reference +13943: +13943: +13943: +13943: vector<_Tp, _Alloc>:: +13943: emplace_back(_Args&&... __args) +13943: { +13943: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +13943: { +13943: ; +13943: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +13943: std::forward<_Args>(__args)...); +13943: ++this->_M_impl._M_finish; +13943: ; +13943: } +13943: else +13943: _M_realloc_append(std::forward<_Args>(__args)...); +13943: +13943: return back(); +13943: +13943: } +13943: +13943: +13943: template +13943: +13943: typename vector<_Tp, _Alloc>::iterator +13943: vector<_Tp, _Alloc>:: +13943: +13943: insert(const_iterator __position, const value_type& __x) +13943: +13943: +13943: +13943: { +13943: const size_type __n = __position - begin(); +13943: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__position != const_iterator())) std::__glibcxx_assert_fail(); } while (false); +13943: if (!(__position != const_iterator())) +13943: __builtin_unreachable(); +13943: +13943: if (__position == end()) +13943: { +13943: ; +13943: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +13943: __x); +13943: ++this->_M_impl._M_finish; +13943: ; +13943: } +13943: else +13943: { +13943: +13943: const auto __pos = begin() + (__position - cbegin()); +13943: +13943: +13943: _Temporary_value __x_copy(this, __x); +13943: _M_insert_aux(__pos, std::move(__x_copy._M_val())); +13943: +13943: +13943: +13943: } +13943: } +13943: else +13943: +13943: _M_realloc_insert(begin() + (__position - cbegin()), __x); +13943: +13943: +13943: +13943: +13943: return iterator(this->_M_impl._M_start + __n); +13943: } +13943: +13943: template +13943: +13943: typename vector<_Tp, _Alloc>::iterator +13943: vector<_Tp, _Alloc>:: +13943: _M_erase(iterator __position) +13943: { +13943: if (__position + 1 != end()) +13943: std::move(__position + 1, end(), __position); +13943: --this->_M_impl._M_finish; +13943: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); +13943: ; +13943: return __position; +13943: } +13943: +13943: template +13943: +13943: typename vector<_Tp, _Alloc>::iterator +13943: vector<_Tp, _Alloc>:: +13943: _M_erase(iterator __first, iterator __last) +13943: { +13943: if (__first != __last) +13943: { +13943: if (__last != end()) +13943: std::move(__last, end(), __first); +13943: _M_erase_at_end(__first.base() + (end() - __last)); +13943: } +13943: return __first; +13943: } +13943: +13943: template +13943: +13943: vector<_Tp, _Alloc>& +13943: vector<_Tp, _Alloc>:: +13943: operator=(const vector<_Tp, _Alloc>& __x) +13943: { +13943: if (std::__addressof(__x) != this) +13943: { +13943: ; +13943: +13943: if (_Alloc_traits::_S_propagate_on_copy_assign()) +13943: { +13943: if (!_Alloc_traits::_S_always_equal() +13943: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) +13943: { +13943: +13943: this->clear(); +13943: _M_deallocate(this->_M_impl._M_start, +13943: this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_start); +13943: this->_M_impl._M_start = nullptr; +13943: this->_M_impl._M_finish = nullptr; +13943: this->_M_impl._M_end_of_storage = nullptr; +13943: } +13943: std::__alloc_on_copy(_M_get_Tp_allocator(), +13943: __x._M_get_Tp_allocator()); +13943: } +13943: +13943: const size_type __xlen = __x.size(); +13943: if (__xlen > capacity()) +13943: { +13943: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), +13943: __x.end()); +13943: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: _M_deallocate(this->_M_impl._M_start, +13943: this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_start); +13943: this->_M_impl._M_start = __tmp; +13943: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; +13943: } +13943: else if (size() >= __xlen) +13943: { +13943: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), +13943: end(), _M_get_Tp_allocator()); +13943: } +13943: else +13943: { +13943: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), +13943: this->_M_impl._M_start); +13943: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), +13943: __x._M_impl._M_finish, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: } +13943: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_fill_assign(size_t __n, const value_type& __val) +13943: { +13943: const size_type __sz = size(); +13943: if (__n > capacity()) +13943: { +13943: if (__n <= __sz) +13943: __builtin_unreachable(); +13943: vector __tmp(__n, __val, _M_get_Tp_allocator()); +13943: __tmp._M_impl._M_swap_data(this->_M_impl); +13943: } +13943: else if (__n > __sz) +13943: { +13943: std::fill(begin(), end(), __val); +13943: const size_type __add = __n - __sz; +13943: ; +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, +13943: __add, __val, _M_get_Tp_allocator()); +13943: ; +13943: } +13943: else +13943: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); +13943: } +13943: +13943: template +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_assign_aux(_InputIterator __first, _InputIterator __last, +13943: std::input_iterator_tag) +13943: { +13943: pointer __cur(this->_M_impl._M_start); +13943: for (; __first != __last && __cur != this->_M_impl._M_finish; +13943: ++__cur, (void)++__first) +13943: *__cur = *__first; +13943: if (__first == __last) +13943: _M_erase_at_end(__cur); +13943: else +13943: _M_range_insert(end(), __first, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: template +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +13943: std::forward_iterator_tag) +13943: { +13943: const size_type __sz = size(); +13943: const size_type __len = std::distance(__first, __last); +13943: +13943: if (__len > capacity()) +13943: { +13943: if (__len <= __sz) +13943: __builtin_unreachable(); +13943: +13943: _S_check_init_len(__len, _M_get_Tp_allocator()); +13943: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); +13943: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: ; +13943: _M_deallocate(this->_M_impl._M_start, +13943: this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_start); +13943: this->_M_impl._M_start = __tmp; +13943: this->_M_impl._M_finish = this->_M_impl._M_start + __len; +13943: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; +13943: } +13943: else if (__sz >= __len) +13943: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); +13943: else +13943: { +13943: _ForwardIterator __mid = __first; +13943: std::advance(__mid, __sz); +13943: std::copy(__first, __mid, this->_M_impl._M_start); +13943: const size_type __attribute__((__unused__)) __n = __len - __sz; +13943: ; +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_copy_a(__mid, __last, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: ; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: auto +13943: vector<_Tp, _Alloc>:: +13943: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator +13943: { +13943: const auto __n = __position - cbegin(); +13943: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +13943: if (__position == cend()) +13943: { +13943: ; +13943: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +13943: std::move(__v)); +13943: ++this->_M_impl._M_finish; +13943: ; +13943: } +13943: else +13943: _M_insert_aux(begin() + __n, std::move(__v)); +13943: else +13943: _M_realloc_insert(begin() + __n, std::move(__v)); +13943: +13943: return iterator(this->_M_impl._M_start + __n); +13943: } +13943: +13943: template +13943: template +13943: +13943: auto +13943: vector<_Tp, _Alloc>:: +13943: _M_emplace_aux(const_iterator __position, _Args&&... __args) +13943: -> iterator +13943: { +13943: const auto __n = __position - cbegin(); +13943: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +13943: if (__position == cend()) +13943: { +13943: ; +13943: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +13943: std::forward<_Args>(__args)...); +13943: ++this->_M_impl._M_finish; +13943: ; +13943: } +13943: else +13943: { +13943: +13943: +13943: +13943: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); +13943: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); +13943: } +13943: else +13943: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); +13943: +13943: return iterator(this->_M_impl._M_start + __n); +13943: } +13943: +13943: template +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_insert_aux(iterator __position, _Arg&& __arg) +13943: +13943: +13943: +13943: +13943: +13943: +13943: { +13943: ; +13943: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +13943: std::move(*(this->_M_impl._M_finish - 1))); +13943: ++this->_M_impl._M_finish; +13943: ; +13943: +13943: +13943: +13943: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) +13943: +13943: ; +13943: +13943: +13943: +13943: *__position = std::forward<_Arg>(__arg); +13943: +13943: } +13943: +13943: +13943: template +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_realloc_insert(iterator __position, _Args&&... __args) +13943: +13943: +13943: +13943: +13943: +13943: +13943: { +13943: const size_type __len = _M_check_len(1u, "vector::_M_realloc_insert"); +13943: if (__len <= 0) +13943: __builtin_unreachable (); +13943: pointer __old_start = this->_M_impl._M_start; +13943: pointer __old_finish = this->_M_impl._M_finish; +13943: const size_type __elems_before = __position - begin(); +13943: pointer __new_start(this->_M_allocate(__len)); +13943: pointer __new_finish(__new_start); +13943: +13943: +13943: struct _Guard +13943: { +13943: pointer _M_storage; +13943: size_type _M_len; +13943: _Tp_alloc_type& _M_alloc; +13943: +13943: +13943: _Guard(pointer __s, size_type __l, _Tp_alloc_type& __a) +13943: : _M_storage(__s), _M_len(__l), _M_alloc(__a) +13943: { } +13943: +13943: +13943: ~_Guard() +13943: { +13943: if (_M_storage) +13943: __gnu_cxx::__alloc_traits<_Tp_alloc_type>:: +13943: deallocate(_M_alloc, _M_storage, _M_len); +13943: } +13943: +13943: private: +13943: _Guard(const _Guard&); +13943: }; +13943: +13943: { +13943: _Guard __guard(__new_start, __len, _M_impl); +13943: # 505 "/usr/include/c++/14/bits/vector.tcc" 3 +13943: _Alloc_traits::construct(this->_M_impl, +13943: std::__to_address(__new_start + __elems_before), +13943: std::forward<_Args>(__args)...); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if constexpr (_S_use_relocate()) +13943: { +13943: +13943: __new_finish = _S_relocate(__old_start, __position.base(), +13943: __new_start, _M_get_Tp_allocator()); +13943: ++__new_finish; +13943: __new_finish = _S_relocate(__position.base(), __old_finish, +13943: __new_finish, _M_get_Tp_allocator()); +13943: } +13943: else +13943: +13943: { +13943: +13943: struct _Guard_elts +13943: { +13943: pointer _M_first, _M_last; +13943: _Tp_alloc_type& _M_alloc; +13943: +13943: +13943: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) +13943: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) +13943: { } +13943: +13943: +13943: ~_Guard_elts() +13943: { std::_Destroy(_M_first, _M_last, _M_alloc); } +13943: +13943: private: +13943: _Guard_elts(const _Guard_elts&); +13943: }; +13943: +13943: +13943: _Guard_elts __guard_elts(__new_start + __elems_before, _M_impl); +13943: +13943: __new_finish = std::__uninitialized_move_if_noexcept_a( +13943: __old_start, __position.base(), +13943: __new_start, _M_get_Tp_allocator()); +13943: +13943: ++__new_finish; +13943: +13943: __guard_elts._M_first = __new_start; +13943: +13943: __new_finish = std::__uninitialized_move_if_noexcept_a( +13943: __position.base(), __old_finish, +13943: __new_finish, _M_get_Tp_allocator()); +13943: +13943: +13943: __guard_elts._M_first = __old_start; +13943: __guard_elts._M_last = __old_finish; +13943: } +13943: __guard._M_storage = __old_start; +13943: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; +13943: } +13943: +13943: +13943: +13943: this->_M_impl._M_start = __new_start; +13943: this->_M_impl._M_finish = __new_finish; +13943: this->_M_impl._M_end_of_storage = __new_start + __len; +13943: } +13943: +13943: +13943: template +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_realloc_append(_Args&&... __args) +13943: +13943: +13943: +13943: +13943: +13943: +13943: { +13943: const size_type __len = _M_check_len(1u, "vector::_M_realloc_append"); +13943: if (__len <= 0) +13943: __builtin_unreachable (); +13943: pointer __old_start = this->_M_impl._M_start; +13943: pointer __old_finish = this->_M_impl._M_finish; +13943: const size_type __elems = end() - begin(); +13943: pointer __new_start(this->_M_allocate(__len)); +13943: pointer __new_finish(__new_start); +13943: +13943: +13943: struct _Guard +13943: { +13943: pointer _M_storage; +13943: size_type _M_len; +13943: _Tp_alloc_type& _M_alloc; +13943: +13943: +13943: _Guard(pointer __s, size_type __l, _Tp_alloc_type& __a) +13943: : _M_storage(__s), _M_len(__l), _M_alloc(__a) +13943: { } +13943: +13943: +13943: ~_Guard() +13943: { +13943: if (_M_storage) +13943: __gnu_cxx::__alloc_traits<_Tp_alloc_type>:: +13943: deallocate(_M_alloc, _M_storage, _M_len); +13943: } +13943: +13943: private: +13943: _Guard(const _Guard&); +13943: }; +13943: +13943: { +13943: _Guard __guard(__new_start, __len, _M_impl); +13943: # 634 "/usr/include/c++/14/bits/vector.tcc" 3 +13943: _Alloc_traits::construct(this->_M_impl, +13943: std::__to_address(__new_start + __elems), +13943: std::forward<_Args>(__args)...); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if constexpr (_S_use_relocate()) +13943: { +13943: +13943: __new_finish = _S_relocate(__old_start, __old_finish, +13943: __new_start, _M_get_Tp_allocator()); +13943: ++__new_finish; +13943: } +13943: else +13943: +13943: { +13943: +13943: struct _Guard_elts +13943: { +13943: pointer _M_first, _M_last; +13943: _Tp_alloc_type& _M_alloc; +13943: +13943: +13943: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) +13943: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) +13943: { } +13943: +13943: +13943: ~_Guard_elts() +13943: { std::_Destroy(_M_first, _M_last, _M_alloc); } +13943: +13943: private: +13943: _Guard_elts(const _Guard_elts&); +13943: }; +13943: +13943: +13943: _Guard_elts __guard_elts(__new_start + __elems, _M_impl); +13943: +13943: __new_finish = std::__uninitialized_move_if_noexcept_a( +13943: __old_start, __old_finish, +13943: __new_start, _M_get_Tp_allocator()); +13943: +13943: ++__new_finish; +13943: +13943: +13943: __guard_elts._M_first = __old_start; +13943: __guard_elts._M_last = __old_finish; +13943: } +13943: __guard._M_storage = __old_start; +13943: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; +13943: } +13943: +13943: +13943: +13943: this->_M_impl._M_start = __new_start; +13943: this->_M_impl._M_finish = __new_finish; +13943: this->_M_impl._M_end_of_storage = __new_start + __len; +13943: } +13943: +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) +13943: { +13943: if (__n != 0) +13943: { +13943: if (size_type(this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_finish) >= __n) +13943: { +13943: +13943: +13943: +13943: _Temporary_value __tmp(this, __x); +13943: value_type& __x_copy = __tmp._M_val(); +13943: +13943: const size_type __elems_after = end() - __position; +13943: pointer __old_finish(this->_M_impl._M_finish); +13943: if (__elems_after > __n) +13943: { +13943: ; +13943: std::__uninitialized_move_a(__old_finish - __n, +13943: __old_finish, +13943: __old_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish += __n; +13943: ; +13943: std::move_backward(__position.base(), __old_finish - __n, __old_finish) +13943: ; +13943: std::fill(__position.base(), __position.base() + __n, +13943: __x_copy); +13943: } +13943: else +13943: { +13943: ; +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_fill_n_a(__old_finish, +13943: __n - __elems_after, +13943: __x_copy, +13943: _M_get_Tp_allocator()); +13943: ; +13943: std::__uninitialized_move_a(__position.base(), __old_finish, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish += __elems_after; +13943: ; +13943: std::fill(__position.base(), __old_finish, __x_copy); +13943: } +13943: } +13943: else +13943: { +13943: +13943: +13943: pointer __old_start = this->_M_impl._M_start; +13943: pointer __old_finish = this->_M_impl._M_finish; +13943: const pointer __pos = __position.base(); +13943: +13943: const size_type __len = +13943: _M_check_len(__n, "vector::_M_fill_insert"); +13943: const size_type __elems_before = __pos - __old_start; +13943: pointer __new_start(this->_M_allocate(__len)); +13943: pointer __new_finish(__new_start); +13943: try +13943: { +13943: +13943: std::__uninitialized_fill_n_a(__new_start + __elems_before, +13943: __n, __x, +13943: _M_get_Tp_allocator()); +13943: __new_finish = pointer(); +13943: +13943: __new_finish +13943: = std::__uninitialized_move_if_noexcept_a +13943: (__old_start, __pos, __new_start, _M_get_Tp_allocator()); +13943: +13943: __new_finish += __n; +13943: +13943: __new_finish +13943: = std::__uninitialized_move_if_noexcept_a +13943: (__pos, __old_finish, __new_finish, _M_get_Tp_allocator()); +13943: } +13943: catch(...) +13943: { +13943: if (!__new_finish) +13943: std::_Destroy(__new_start + __elems_before, +13943: __new_start + __elems_before + __n, +13943: _M_get_Tp_allocator()); +13943: else +13943: std::_Destroy(__new_start, __new_finish, +13943: _M_get_Tp_allocator()); +13943: _M_deallocate(__new_start, __len); +13943: throw; +13943: } +13943: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); +13943: ; +13943: _M_deallocate(__old_start, +13943: this->_M_impl._M_end_of_storage - __old_start); +13943: this->_M_impl._M_start = __new_start; +13943: this->_M_impl._M_finish = __new_finish; +13943: this->_M_impl._M_end_of_storage = __new_start + __len; +13943: } +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_default_append(size_type __n) +13943: { +13943: if (__n != 0) +13943: { +13943: const size_type __size = size(); +13943: size_type __navail = size_type(this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_finish); +13943: +13943: if (__size > max_size() || __navail > max_size() - __size) +13943: __builtin_unreachable(); +13943: +13943: if (__navail >= __n) +13943: { +13943: ; +13943: this->_M_impl._M_finish = +13943: std::__uninitialized_default_n_a(this->_M_impl._M_finish, +13943: __n, _M_get_Tp_allocator()); +13943: ; +13943: } +13943: else +13943: { +13943: +13943: +13943: pointer __old_start = this->_M_impl._M_start; +13943: pointer __old_finish = this->_M_impl._M_finish; +13943: +13943: const size_type __len = +13943: _M_check_len(__n, "vector::_M_default_append"); +13943: pointer __new_start(this->_M_allocate(__len)); +13943: +13943: +13943: struct _Guard +13943: { +13943: pointer _M_storage; +13943: size_type _M_len; +13943: _Tp_alloc_type& _M_alloc; +13943: +13943: +13943: _Guard(pointer __s, size_type __l, _Tp_alloc_type& __a) +13943: : _M_storage(__s), _M_len(__l), _M_alloc(__a) +13943: { } +13943: +13943: +13943: ~_Guard() +13943: { +13943: if (_M_storage) +13943: __gnu_cxx::__alloc_traits<_Tp_alloc_type>:: +13943: deallocate(_M_alloc, _M_storage, _M_len); +13943: } +13943: +13943: private: +13943: _Guard(const _Guard&); +13943: }; +13943: +13943: { +13943: _Guard __guard(__new_start, __len, _M_impl); +13943: +13943: std::__uninitialized_default_n_a(__new_start + __size, __n, +13943: _M_get_Tp_allocator()); +13943: +13943: if constexpr (_S_use_relocate()) +13943: { +13943: _S_relocate(__old_start, __old_finish, +13943: __new_start, _M_get_Tp_allocator()); +13943: } +13943: else +13943: { +13943: +13943: struct _Guard_elts +13943: { +13943: pointer _M_first, _M_last; +13943: _Tp_alloc_type& _M_alloc; +13943: +13943: +13943: _Guard_elts(pointer __first, size_type __n, +13943: _Tp_alloc_type& __a) +13943: : _M_first(__first), _M_last(__first + __n), _M_alloc(__a) +13943: { } +13943: +13943: +13943: ~_Guard_elts() +13943: { std::_Destroy(_M_first, _M_last, _M_alloc); } +13943: +13943: private: +13943: _Guard_elts(const _Guard_elts&); +13943: }; +13943: _Guard_elts __guard_elts(__new_start + __size, __n, _M_impl); +13943: +13943: std::__uninitialized_move_if_noexcept_a( +13943: __old_start, __old_finish, __new_start, +13943: _M_get_Tp_allocator()); +13943: +13943: __guard_elts._M_first = __old_start; +13943: __guard_elts._M_last = __old_finish; +13943: } +13943: ; +13943: __guard._M_storage = __old_start; +13943: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; +13943: } +13943: +13943: +13943: +13943: this->_M_impl._M_start = __new_start; +13943: this->_M_impl._M_finish = __new_start + __size + __n; +13943: this->_M_impl._M_end_of_storage = __new_start + __len; +13943: } +13943: } +13943: } +13943: +13943: template +13943: +13943: bool +13943: vector<_Tp, _Alloc>:: +13943: _M_shrink_to_fit() +13943: { +13943: if (capacity() == size()) +13943: return false; +13943: ; +13943: return std::__shrink_to_fit_aux::_S_do_it(*this); +13943: } +13943: +13943: +13943: template +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_range_insert(iterator __pos, _InputIterator __first, +13943: _InputIterator __last, std::input_iterator_tag) +13943: { +13943: if (__pos == end()) +13943: { +13943: for (; __first != __last; ++__first) +13943: insert(end(), *__first); +13943: } +13943: else if (__first != __last) +13943: { +13943: vector __tmp(__first, __last, _M_get_Tp_allocator()); +13943: insert(__pos, +13943: std::make_move_iterator(__tmp.begin()), +13943: std::make_move_iterator(__tmp.end())); +13943: } +13943: } +13943: +13943: template +13943: template +13943: +13943: void +13943: vector<_Tp, _Alloc>:: +13943: _M_range_insert(iterator __position, _ForwardIterator __first, +13943: _ForwardIterator __last, std::forward_iterator_tag) +13943: { +13943: if (__first != __last) +13943: { +13943: const size_type __n = std::distance(__first, __last); +13943: if (size_type(this->_M_impl._M_end_of_storage +13943: - this->_M_impl._M_finish) >= __n) +13943: { +13943: const size_type __elems_after = end() - __position; +13943: pointer __old_finish(this->_M_impl._M_finish); +13943: if (__elems_after > __n) +13943: { +13943: ; +13943: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, +13943: this->_M_impl._M_finish, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish += __n; +13943: ; +13943: std::move_backward(__position.base(), __old_finish - __n, __old_finish) +13943: ; +13943: std::copy(__first, __last, __position); +13943: } +13943: else +13943: { +13943: _ForwardIterator __mid = __first; +13943: std::advance(__mid, __elems_after); +13943: ; +13943: std::__uninitialized_copy_a(__mid, __last, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish += __n - __elems_after; +13943: ; +13943: std::__uninitialized_move_a(__position.base(), +13943: __old_finish, +13943: this->_M_impl._M_finish, +13943: _M_get_Tp_allocator()); +13943: this->_M_impl._M_finish += __elems_after; +13943: ; +13943: std::copy(__first, __mid, __position); +13943: } +13943: } +13943: else +13943: { +13943: +13943: +13943: +13943: pointer __old_start = this->_M_impl._M_start; +13943: pointer __old_finish = this->_M_impl._M_finish; +13943: +13943: const size_type __len = +13943: _M_check_len(__n, "vector::_M_range_insert"); +13943: +13943: +13943: +13943: +13943: +13943: pointer __new_start(this->_M_allocate(__len)); +13943: pointer __new_finish(__new_start); +13943: try +13943: { +13943: __new_finish +13943: = std::__uninitialized_move_if_noexcept_a +13943: (__old_start, __position.base(), +13943: __new_start, _M_get_Tp_allocator()); +13943: __new_finish +13943: = std::__uninitialized_copy_a(__first, __last, +13943: __new_finish, +13943: _M_get_Tp_allocator()); +13943: __new_finish +13943: = std::__uninitialized_move_if_noexcept_a +13943: (__position.base(), __old_finish, +13943: __new_finish, _M_get_Tp_allocator()); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__new_start, __new_finish, +13943: _M_get_Tp_allocator()); +13943: _M_deallocate(__new_start, __len); +13943: throw; +13943: } +13943: std::_Destroy(__old_start, __old_finish, +13943: _M_get_Tp_allocator()); +13943: ; +13943: _M_deallocate(__old_start, +13943: this->_M_impl._M_end_of_storage - __old_start); +13943: this->_M_impl._M_start = __new_start; +13943: this->_M_impl._M_finish = __new_finish; +13943: this->_M_impl._M_end_of_storage = __new_start + __len; +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: vector:: +13943: _M_reallocate(size_type __n) +13943: { +13943: _Bit_pointer __q = this->_M_allocate(__n); +13943: iterator __start(std::__addressof(*__q), 0); +13943: iterator __finish(_M_copy_aligned(begin(), end(), __start)); +13943: this->_M_deallocate(); +13943: this->_M_impl._M_start = __start; +13943: this->_M_impl._M_finish = __finish; +13943: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); +13943: } +13943: +13943: template +13943: +13943: void +13943: vector:: +13943: _M_fill_insert(iterator __position, size_type __n, bool __x) +13943: { +13943: if (__n == 0) +13943: return; +13943: if (capacity() - size() >= __n) +13943: { +13943: std::copy_backward(__position, end(), +13943: this->_M_impl._M_finish + difference_type(__n)); +13943: std::fill(__position, __position + difference_type(__n), __x); +13943: this->_M_impl._M_finish += difference_type(__n); +13943: } +13943: else +13943: { +13943: const size_type __len = +13943: _M_check_len(__n, "vector::_M_fill_insert"); +13943: _Bit_pointer __q = this->_M_allocate(__len); +13943: iterator __start(std::__addressof(*__q), 0); +13943: iterator __i = _M_copy_aligned(begin(), __position, __start); +13943: std::fill(__i, __i + difference_type(__n), __x); +13943: iterator __finish = std::copy(__position, end(), +13943: __i + difference_type(__n)); +13943: this->_M_deallocate(); +13943: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); +13943: this->_M_impl._M_start = __start; +13943: this->_M_impl._M_finish = __finish; +13943: } +13943: } +13943: +13943: template +13943: template +13943: +13943: void +13943: vector:: +13943: _M_insert_range(iterator __position, _ForwardIterator __first, +13943: _ForwardIterator __last, std::forward_iterator_tag) +13943: { +13943: if (__first != __last) +13943: { +13943: size_type __n = std::distance(__first, __last); +13943: if (capacity() - size() >= __n) +13943: { +13943: std::copy_backward(__position, end(), +13943: this->_M_impl._M_finish +13943: + difference_type(__n)); +13943: std::copy(__first, __last, __position); +13943: this->_M_impl._M_finish += difference_type(__n); +13943: } +13943: else +13943: { +13943: const size_type __len = +13943: _M_check_len(__n, "vector::_M_insert_range"); +13943: const iterator __begin = begin(), __end = end(); +13943: _Bit_pointer __q = this->_M_allocate(__len); +13943: iterator __start(std::__addressof(*__q), 0); +13943: iterator __i = _M_copy_aligned(__begin, __position, __start); +13943: __i = std::copy(__first, __last, __i); +13943: iterator __finish = std::copy(__position, __end, __i); +13943: this->_M_deallocate(); +13943: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); +13943: this->_M_impl._M_start = __start; +13943: this->_M_impl._M_finish = __finish; +13943: } +13943: } +13943: } +13943: +13943: template +13943: +13943: void +13943: vector:: +13943: _M_insert_aux(iterator __position, bool __x) +13943: { +13943: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) +13943: { +13943: std::copy_backward(__position, this->_M_impl._M_finish, +13943: this->_M_impl._M_finish + 1); +13943: *__position = __x; +13943: ++this->_M_impl._M_finish; +13943: } +13943: else +13943: { +13943: const size_type __len = +13943: _M_check_len(size_type(1), "vector::_M_insert_aux"); +13943: _Bit_pointer __q = this->_M_allocate(__len); +13943: iterator __start(std::__addressof(*__q), 0); +13943: iterator __i = _M_copy_aligned(begin(), __position, __start); +13943: *__i++ = __x; +13943: iterator __finish = std::copy(__position, end(), __i); +13943: this->_M_deallocate(); +13943: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); +13943: this->_M_impl._M_start = __start; +13943: this->_M_impl._M_finish = __finish; +13943: } +13943: } +13943: +13943: template +13943: +13943: typename vector::iterator +13943: vector:: +13943: _M_erase(iterator __position) +13943: { +13943: if (__position + 1 != end()) +13943: std::copy(__position + 1, end(), __position); +13943: --this->_M_impl._M_finish; +13943: return __position; +13943: } +13943: +13943: template +13943: +13943: typename vector::iterator +13943: vector:: +13943: _M_erase(iterator __first, iterator __last) +13943: { +13943: if (__first != __last) +13943: _M_erase_at_end(std::copy(__last, end(), __first)); +13943: return __first; +13943: } +13943: +13943: +13943: template +13943: +13943: bool +13943: vector:: +13943: _M_shrink_to_fit() +13943: { +13943: if (capacity() - size() < int(_S_word_bit)) +13943: return false; +13943: try +13943: { +13943: if (size_type __n = size()) +13943: _M_reallocate(__n); +13943: else +13943: { +13943: this->_M_deallocate(); +13943: this->_M_impl._M_reset(); +13943: } +13943: return true; +13943: } +13943: catch(...) +13943: { return false; } +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: size_t +13943: hash>:: +13943: operator()(const std::vector& __b) const noexcept +13943: { +13943: size_t __hash = 0; +13943: const size_t __words = __b.size() / _S_word_bit; +13943: if (__words) +13943: { +13943: const size_t __clength = __words * sizeof(_Bit_type); +13943: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); +13943: } +13943: +13943: const size_t __extrabits = __b.size() % _S_word_bit; +13943: if (__extrabits) +13943: { +13943: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; +13943: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); +13943: +13943: const size_t __clength +13943: = (__extrabits + 8 - 1) / 8; +13943: if (__words) +13943: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); +13943: else +13943: __hash = std::_Hash_impl::hash(&__hiword, __clength); +13943: } +13943: +13943: return __hash; +13943: } +13943: +13943: +13943: } +13943: # 73 "/usr/include/c++/14/vector" 2 3 +13943: # 84 "/usr/include/c++/14/vector" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 85 "/usr/include/c++/14/vector" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr { +13943: template +13943: using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 65 "/usr/include/c++/14/functional" 2 3 +13943: # 1 "/usr/include/c++/14/array" 1 3 +13943: # 32 "/usr/include/c++/14/array" 3 +13943: +13943: # 33 "/usr/include/c++/14/array" 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/compare" 1 3 +13943: # 33 "/usr/include/c++/14/compare" 3 +13943: +13943: # 34 "/usr/include/c++/14/compare" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 37 "/usr/include/c++/14/compare" 2 3 +13943: # 39 "/usr/include/c++/14/array" 2 3 +13943: # 52 "/usr/include/c++/14/array" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 53 "/usr/include/c++/14/array" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: struct __array_traits +13943: { +13943: using _Type = _Tp[_Nm]; +13943: using _Is_swappable = __is_swappable<_Tp>; +13943: using _Is_nothrow_swappable = __is_nothrow_swappable<_Tp>; +13943: }; +13943: +13943: template +13943: struct __array_traits<_Tp, 0> +13943: { +13943: +13943: struct _Type +13943: { +13943: +13943: __attribute__((__always_inline__,__noreturn__)) +13943: _Tp& operator[](size_t) const noexcept { __builtin_trap(); } +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: constexpr explicit operator _Tp*() const noexcept { return nullptr; } +13943: }; +13943: +13943: using _Is_swappable = true_type; +13943: using _Is_nothrow_swappable = true_type; +13943: }; +13943: # 99 "/usr/include/c++/14/array" 3 +13943: template +13943: struct array +13943: { +13943: typedef _Tp value_type; +13943: typedef value_type* pointer; +13943: typedef const value_type* const_pointer; +13943: typedef value_type& reference; +13943: typedef const value_type& const_reference; +13943: typedef value_type* iterator; +13943: typedef const value_type* const_iterator; +13943: typedef std::size_t size_type; +13943: typedef std::ptrdiff_t difference_type; +13943: typedef std::reverse_iterator reverse_iterator; +13943: typedef std::reverse_iterator const_reverse_iterator; +13943: +13943: +13943: typename __array_traits<_Tp, _Nm>::_Type _M_elems; +13943: +13943: +13943: +13943: +13943: void +13943: fill(const value_type& __u) +13943: { std::fill_n(begin(), size(), __u); } +13943: +13943: void +13943: swap(array& __other) +13943: noexcept(__array_traits<_Tp, _Nm>::_Is_nothrow_swappable::value) +13943: { std::swap_ranges(begin(), end(), __other.begin()); } +13943: +13943: +13943: [[__gnu__::__const__, __nodiscard__]] +13943: constexpr iterator +13943: begin() noexcept +13943: { return iterator(data()); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_iterator +13943: begin() const noexcept +13943: { return const_iterator(data()); } +13943: +13943: [[__gnu__::__const__, __nodiscard__]] +13943: constexpr iterator +13943: end() noexcept +13943: { return iterator(data() + _Nm); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_iterator +13943: end() const noexcept +13943: { return const_iterator(data() + _Nm); } +13943: +13943: [[__gnu__::__const__, __nodiscard__]] +13943: constexpr reverse_iterator +13943: rbegin() noexcept +13943: { return reverse_iterator(end()); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: [[__gnu__::__const__, __nodiscard__]] +13943: constexpr reverse_iterator +13943: rend() noexcept +13943: { return reverse_iterator(begin()); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_iterator +13943: cbegin() const noexcept +13943: { return const_iterator(data()); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_iterator +13943: cend() const noexcept +13943: { return const_iterator(data() + _Nm); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_reverse_iterator +13943: crbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_reverse_iterator +13943: crend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: +13943: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +13943: constexpr size_type +13943: size() const noexcept { return _Nm; } +13943: +13943: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +13943: constexpr size_type +13943: max_size() const noexcept { return _Nm; } +13943: +13943: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +13943: constexpr bool +13943: empty() const noexcept { return size() == 0; } +13943: +13943: +13943: [[__nodiscard__]] +13943: constexpr reference +13943: operator[](size_type __n) noexcept +13943: { +13943: ; +13943: return _M_elems[__n]; +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_reference +13943: operator[](size_type __n) const noexcept +13943: { +13943: +13943: ; +13943: +13943: return _M_elems[__n]; +13943: } +13943: +13943: constexpr reference +13943: at(size_type __n) +13943: { +13943: if (__n >= _Nm) +13943: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") +13943: , +13943: __n, _Nm); +13943: return _M_elems[__n]; +13943: } +13943: +13943: constexpr const_reference +13943: at(size_type __n) const +13943: { +13943: +13943: +13943: return __n < _Nm ? _M_elems[__n] +13943: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") +13943: , +13943: __n, _Nm), +13943: _M_elems[__n]); +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr reference +13943: front() noexcept +13943: { +13943: ; +13943: return _M_elems[(size_type)0]; +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_reference +13943: front() const noexcept +13943: { +13943: +13943: ; +13943: +13943: return _M_elems[(size_type)0]; +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr reference +13943: back() noexcept +13943: { +13943: ; +13943: return _M_elems[_Nm - 1]; +13943: } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_reference +13943: back() const noexcept +13943: { +13943: +13943: ; +13943: +13943: return _M_elems[_Nm - 1]; +13943: } +13943: +13943: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +13943: constexpr pointer +13943: data() noexcept +13943: { return static_cast(_M_elems); } +13943: +13943: [[__nodiscard__]] +13943: constexpr const_pointer +13943: data() const noexcept +13943: { return static_cast(_M_elems); } +13943: }; +13943: +13943: +13943: template +13943: array(_Tp, _Up...) +13943: -> array && ...), _Tp>, +13943: 1 + sizeof...(_Up)>; +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: +13943: inline bool +13943: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +13943: { return std::__equal_aux1(__one.begin(), __one.end(), __two.begin()); } +13943: # 328 "/usr/include/c++/14/array" 3 +13943: template +13943: [[__nodiscard__]] +13943: +13943: inline bool +13943: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +13943: { return !(__one == __two); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: +13943: inline bool +13943: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) +13943: { +13943: return std::lexicographical_compare(__a.begin(), __a.end(), +13943: __b.begin(), __b.end()); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: +13943: inline bool +13943: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +13943: { return __two < __one; } +13943: +13943: template +13943: [[__nodiscard__]] +13943: +13943: inline bool +13943: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +13943: { return !(__one > __two); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: +13943: inline bool +13943: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +13943: { return !(__one < __two); } +13943: +13943: +13943: +13943: template +13943: +13943: inline +13943: +13943: +13943: __enable_if_t<__array_traits<_Tp, _Nm>::_Is_swappable::value> +13943: +13943: +13943: +13943: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) +13943: noexcept(noexcept(__one.swap(__two))) +13943: { __one.swap(__two); } +13943: +13943: +13943: template +13943: __enable_if_t::_Is_swappable::value> +13943: swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: constexpr _Tp& +13943: get(array<_Tp, _Nm>& __arr) noexcept +13943: { +13943: static_assert(_Int < _Nm, "array index is within bounds"); +13943: return __arr._M_elems[_Int]; +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: constexpr _Tp&& +13943: get(array<_Tp, _Nm>&& __arr) noexcept +13943: { +13943: static_assert(_Int < _Nm, "array index is within bounds"); +13943: return std::move(std::get<_Int>(__arr)); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: constexpr const _Tp& +13943: get(const array<_Tp, _Nm>& __arr) noexcept +13943: { +13943: static_assert(_Int < _Nm, "array index is within bounds"); +13943: return __arr._M_elems[_Int]; +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: constexpr const _Tp&& +13943: get(const array<_Tp, _Nm>&& __arr) noexcept +13943: { +13943: static_assert(_Int < _Nm, "array index is within bounds"); +13943: return std::move(std::get<_Int>(__arr)); +13943: } +13943: # 490 "/usr/include/c++/14/array" 3 +13943: template +13943: struct tuple_size> +13943: : public integral_constant { }; +13943: +13943: +13943: template +13943: struct tuple_element<_Ind, array<_Tp, _Nm>> +13943: { +13943: static_assert(_Ind < _Nm, "array index is in range"); +13943: using type = _Tp; +13943: }; +13943: +13943: +13943: template +13943: inline constexpr size_t tuple_size_v> = _Nm; +13943: +13943: template +13943: inline constexpr size_t tuple_size_v> = _Nm; +13943: +13943: +13943: template +13943: struct __is_tuple_like_impl> : true_type +13943: { }; +13943: +13943: +13943: } +13943: # 66 "/usr/include/c++/14/functional" 2 3 +13943: # 88 "/usr/include/c++/14/functional" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 89 "/usr/include/c++/14/functional" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: template struct _Placeholder { }; +13943: # 115 "/usr/include/c++/14/functional" 3 +13943: template +13943: inline invoke_result_t<_Callable, _Args...> +13943: invoke(_Callable&& __fn, _Args&&... __args) +13943: noexcept(is_nothrow_invocable_v<_Callable, _Args...>) +13943: { +13943: return std::__invoke(std::forward<_Callable>(__fn), +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 148 "/usr/include/c++/14/functional" 3 +13943: template::value> +13943: class _Mem_fn_base +13943: : public _Mem_fn_traits<_MemFunPtr>::__maybe_type +13943: { +13943: using _Traits = _Mem_fn_traits<_MemFunPtr>; +13943: +13943: using _Arity = typename _Traits::__arity; +13943: using _Varargs = typename _Traits::__vararg; +13943: +13943: template +13943: friend struct _Bind_check_arity; +13943: +13943: _MemFunPtr _M_pmf; +13943: +13943: public: +13943: +13943: using result_type = typename _Traits::__result_type; +13943: +13943: explicit constexpr +13943: _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { } +13943: +13943: template +13943: +13943: auto +13943: operator()(_Args&&... __args) const +13943: noexcept(noexcept( +13943: std::__invoke(_M_pmf, std::forward<_Args>(__args)...))) +13943: -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...)) +13943: { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); } +13943: }; +13943: +13943: +13943: template +13943: class _Mem_fn_base<_MemObjPtr, false> +13943: { +13943: using _Arity = integral_constant; +13943: using _Varargs = false_type; +13943: +13943: template +13943: friend struct _Bind_check_arity; +13943: +13943: _MemObjPtr _M_pm; +13943: +13943: public: +13943: explicit constexpr +13943: _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { } +13943: +13943: template +13943: +13943: auto +13943: operator()(_Tp&& __obj) const +13943: noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))) +13943: -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj))) +13943: { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); } +13943: }; +13943: +13943: template +13943: struct _Mem_fn; +13943: +13943: template +13943: struct _Mem_fn<_Res _Class::*> +13943: : _Mem_fn_base<_Res _Class::*> +13943: { +13943: using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base; +13943: }; +13943: # 241 "/usr/include/c++/14/functional" 3 +13943: template +13943: +13943: inline _Mem_fn<_Tp _Class::*> +13943: mem_fn(_Tp _Class::* __pm) noexcept +13943: { +13943: return _Mem_fn<_Tp _Class::*>(__pm); +13943: } +13943: # 260 "/usr/include/c++/14/functional" 3 +13943: template +13943: struct is_bind_expression +13943: : public false_type { }; +13943: # 272 "/usr/include/c++/14/functional" 3 +13943: template +13943: struct is_placeholder +13943: : public integral_constant +13943: { }; +13943: +13943: +13943: template inline constexpr bool is_bind_expression_v +13943: = is_bind_expression<_Tp>::value; +13943: template inline constexpr int is_placeholder_v +13943: = is_placeholder<_Tp>::value; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace placeholders +13943: { +13943: # 301 "/usr/include/c++/14/functional" 3 +13943: inline const _Placeholder<1> _1; +13943: inline const _Placeholder<2> _2; +13943: inline const _Placeholder<3> _3; +13943: inline const _Placeholder<4> _4; +13943: inline const _Placeholder<5> _5; +13943: inline const _Placeholder<6> _6; +13943: inline const _Placeholder<7> _7; +13943: inline const _Placeholder<8> _8; +13943: inline const _Placeholder<9> _9; +13943: inline const _Placeholder<10> _10; +13943: inline const _Placeholder<11> _11; +13943: inline const _Placeholder<12> _12; +13943: inline const _Placeholder<13> _13; +13943: inline const _Placeholder<14> _14; +13943: inline const _Placeholder<15> _15; +13943: inline const _Placeholder<16> _16; +13943: inline const _Placeholder<17> _17; +13943: inline const _Placeholder<18> _18; +13943: inline const _Placeholder<19> _19; +13943: inline const _Placeholder<20> _20; +13943: inline const _Placeholder<21> _21; +13943: inline const _Placeholder<22> _22; +13943: inline const _Placeholder<23> _23; +13943: inline const _Placeholder<24> _24; +13943: inline const _Placeholder<25> _25; +13943: inline const _Placeholder<26> _26; +13943: inline const _Placeholder<27> _27; +13943: inline const _Placeholder<28> _28; +13943: inline const _Placeholder<29> _29; +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_placeholder<_Placeholder<_Num> > +13943: : public integral_constant +13943: { }; +13943: +13943: template +13943: struct is_placeholder > +13943: : public integral_constant +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: using _Safe_tuple_element_t +13943: = typename enable_if<(__i < tuple_size<_Tuple>::value), +13943: tuple_element<__i, _Tuple>>::type::type; +13943: # 369 "/usr/include/c++/14/functional" 3 +13943: template::value, +13943: bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> +13943: class _Mu; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class _Mu, false, false> +13943: { +13943: public: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _Tp& +13943: operator()(_CVRef& __arg, _Tuple&) const volatile +13943: { return __arg.get(); } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class _Mu<_Arg, true, false> +13943: { +13943: public: +13943: template +13943: +13943: auto +13943: operator()(_CVArg& __arg, +13943: tuple<_Args...>& __tuple) const volatile +13943: -> decltype(__arg(declval<_Args>()...)) +13943: { +13943: +13943: typedef typename _Build_index_tuple::__type +13943: _Indexes; +13943: return this->__call(__arg, __tuple, _Indexes()); +13943: } +13943: +13943: private: +13943: +13943: +13943: template +13943: +13943: auto +13943: __call(_CVArg& __arg, tuple<_Args...>& __tuple, +13943: const _Index_tuple<_Indexes...>&) const volatile +13943: -> decltype(__arg(declval<_Args>()...)) +13943: { +13943: return __arg(std::get<_Indexes>(std::move(__tuple))...); +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class _Mu<_Arg, false, true> +13943: { +13943: public: +13943: template +13943: +13943: _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&& +13943: operator()(const volatile _Arg&, _Tuple& __tuple) const volatile +13943: { +13943: return +13943: ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple)); +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class _Mu<_Arg, false, false> +13943: { +13943: public: +13943: template +13943: +13943: _CVArg&& +13943: operator()(_CVArg&& __arg, _Tuple&) const volatile +13943: { return std::forward<_CVArg>(__arg); } +13943: }; +13943: +13943: +13943: template +13943: inline auto +13943: __volget(volatile tuple<_Tp...>& __tuple) +13943: -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile& +13943: { return std::get<_Ind>(const_cast&>(__tuple)); } +13943: +13943: +13943: template +13943: inline auto +13943: __volget(const volatile tuple<_Tp...>& __tuple) +13943: -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile& +13943: { return std::get<_Ind>(const_cast&>(__tuple)); } +13943: # 494 "/usr/include/c++/14/functional" 3 +13943: template +13943: class _Bind; +13943: +13943: template +13943: class _Bind<_Functor(_Bound_args...)> +13943: : public _Weak_result_type<_Functor> +13943: { +13943: typedef typename _Build_index_tuple::__type +13943: _Bound_indexes; +13943: +13943: _Functor _M_f; +13943: tuple<_Bound_args...> _M_bound_args; +13943: +13943: +13943: template +13943: +13943: _Result +13943: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) +13943: { +13943: return std::__invoke(_M_f, +13943: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... +13943: ); +13943: } +13943: +13943: +13943: template +13943: +13943: _Result +13943: __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const +13943: { +13943: return std::__invoke(_M_f, +13943: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... +13943: ); +13943: } +13943: +13943: +13943: +13943: template +13943: _Result +13943: __call_v(tuple<_Args...>&& __args, +13943: _Index_tuple<_Indexes...>) volatile +13943: { +13943: return std::__invoke(_M_f, +13943: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... +13943: ); +13943: } +13943: +13943: +13943: template +13943: _Result +13943: __call_c_v(tuple<_Args...>&& __args, +13943: _Index_tuple<_Indexes...>) const volatile +13943: { +13943: return std::__invoke(_M_f, +13943: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... +13943: ); +13943: } +13943: +13943: +13943: template +13943: using _Mu_type = decltype( +13943: _Mu::type>()( +13943: std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) ); +13943: +13943: template +13943: using _Res_type_impl +13943: = __invoke_result_t<_Fn&, _Mu_type<_BArgs, _CallArgs>&&...>; +13943: +13943: template +13943: using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>; +13943: +13943: template +13943: using __dependent = typename +13943: enable_if::value+1), _Functor>::type; +13943: +13943: template class __cv_quals> +13943: using _Res_type_cv = _Res_type_impl< +13943: typename __cv_quals<__dependent<_CallArgs>>::type, +13943: _CallArgs, +13943: typename __cv_quals<_Bound_args>::type...>; +13943: +13943: public: +13943: template +13943: explicit +13943: _Bind(const _Functor& __f, _Args&&... __args) +13943: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: explicit +13943: _Bind(_Functor&& __f, _Args&&... __args) +13943: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: _Bind(const _Bind&) = default; +13943: _Bind(_Bind&&) = default; +13943: +13943: +13943: template>> +13943: +13943: _Result +13943: operator()(_Args&&... __args) +13943: { +13943: return this->__call<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: +13943: template, add_const>> +13943: +13943: _Result +13943: operator()(_Args&&... __args) const +13943: { +13943: return this->__call_c<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: +13943: +13943: template, add_volatile>> +13943: [[deprecated("std::bind does not support volatile in C++17")]] +13943: _Result +13943: operator()(_Args&&... __args) volatile +13943: { +13943: return this->__call_v<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: +13943: template, add_cv>> +13943: [[deprecated("std::bind does not support volatile in C++17")]] +13943: _Result +13943: operator()(_Args&&... __args) const volatile +13943: { +13943: return this->__call_c_v<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: }; +13943: +13943: +13943: template +13943: class _Bind_result; +13943: +13943: template +13943: class _Bind_result<_Result, _Functor(_Bound_args...)> +13943: { +13943: typedef typename _Build_index_tuple::__type +13943: _Bound_indexes; +13943: +13943: _Functor _M_f; +13943: tuple<_Bound_args...> _M_bound_args; +13943: +13943: +13943: template +13943: +13943: _Res +13943: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) +13943: { +13943: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +13943: (std::get<_Indexes>(_M_bound_args), __args)...); +13943: } +13943: +13943: +13943: template +13943: +13943: _Res +13943: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const +13943: { +13943: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +13943: (std::get<_Indexes>(_M_bound_args), __args)...); +13943: } +13943: +13943: +13943: +13943: template +13943: _Res +13943: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile +13943: { +13943: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +13943: (__volget<_Indexes>(_M_bound_args), __args)...); +13943: } +13943: +13943: +13943: template +13943: _Res +13943: __call(tuple<_Args...>&& __args, +13943: _Index_tuple<_Indexes...>) const volatile +13943: { +13943: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +13943: (__volget<_Indexes>(_M_bound_args), __args)...); +13943: } +13943: +13943: +13943: public: +13943: typedef _Result result_type; +13943: +13943: template +13943: explicit +13943: _Bind_result(const _Functor& __f, _Args&&... __args) +13943: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: explicit +13943: _Bind_result(_Functor&& __f, _Args&&... __args) +13943: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: _Bind_result(const _Bind_result&) = default; +13943: _Bind_result(_Bind_result&&) = default; +13943: +13943: +13943: template +13943: +13943: result_type +13943: operator()(_Args&&... __args) +13943: { +13943: return this->__call<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: +13943: template +13943: +13943: result_type +13943: operator()(_Args&&... __args) const +13943: { +13943: return this->__call<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: +13943: +13943: template +13943: [[deprecated("std::bind does not support volatile in C++17")]] +13943: result_type +13943: operator()(_Args&&... __args) volatile +13943: { +13943: return this->__call<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: +13943: template +13943: [[deprecated("std::bind does not support volatile in C++17")]] +13943: result_type +13943: operator()(_Args&&... __args) const volatile +13943: { +13943: return this->__call<_Result>( +13943: std::forward_as_tuple(std::forward<_Args>(__args)...), +13943: _Bound_indexes()); +13943: } +13943: +13943: +13943: +13943: +13943: }; +13943: # 771 "/usr/include/c++/14/functional" 3 +13943: template +13943: struct is_bind_expression<_Bind<_Signature> > +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_bind_expression > +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_bind_expression > +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_bind_expression> +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_bind_expression<_Bind_result<_Result, _Signature>> +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_bind_expression> +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_bind_expression> +13943: : public true_type { }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct is_bind_expression> +13943: : public true_type { }; +13943: +13943: template +13943: struct _Bind_check_arity { }; +13943: +13943: template +13943: struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...> +13943: { +13943: static_assert(sizeof...(_BoundArgs) == sizeof...(_Args), +13943: "Wrong number of arguments for function"); +13943: }; +13943: +13943: template +13943: struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...> +13943: { +13943: static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args), +13943: "Wrong number of arguments for function"); +13943: }; +13943: +13943: template +13943: struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...> +13943: { +13943: using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity; +13943: using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs; +13943: static_assert(_Varargs::value +13943: ? sizeof...(_BoundArgs) >= _Arity::value + 1 +13943: : sizeof...(_BoundArgs) == _Arity::value + 1, +13943: "Wrong number of arguments for pointer-to-member"); +13943: }; +13943: +13943: +13943: +13943: +13943: template::type> +13943: using __is_socketlike = __or_, is_enum<_Tp2>>; +13943: +13943: template +13943: struct _Bind_helper +13943: : _Bind_check_arity::type, _BoundArgs...> +13943: { +13943: typedef typename decay<_Func>::type __func_type; +13943: typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct _Bind_helper +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline typename +13943: _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type +13943: bind(_Func&& __f, _BoundArgs&&... __args) +13943: { +13943: typedef _Bind_helper __helper_type; +13943: return typename __helper_type::type(std::forward<_Func>(__f), +13943: std::forward<_BoundArgs>(__args)...); +13943: } +13943: +13943: template +13943: struct _Bindres_helper +13943: : _Bind_check_arity::type, _BoundArgs...> +13943: { +13943: typedef typename decay<_Func>::type __functor_type; +13943: typedef _Bind_result<_Result, +13943: __functor_type(typename decay<_BoundArgs>::type...)> +13943: type; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline +13943: typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type +13943: bind(_Func&& __f, _BoundArgs&&... __args) +13943: { +13943: typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; +13943: return typename __helper_type::type(std::forward<_Func>(__f), +13943: std::forward<_BoundArgs>(__args)...); +13943: } +13943: # 1121 "/usr/include/c++/14/functional" 3 +13943: template +13943: class _Not_fn +13943: { +13943: template +13943: using __inv_res_t = typename __invoke_result<_Fn2, _Args...>::type; +13943: +13943: template +13943: static decltype(!std::declval<_Tp>()) +13943: _S_not() noexcept(noexcept(!std::declval<_Tp>())); +13943: +13943: public: +13943: template +13943: constexpr +13943: _Not_fn(_Fn2&& __fn, int) +13943: : _M_fn(std::forward<_Fn2>(__fn)) { } +13943: +13943: _Not_fn(const _Not_fn& __fn) = default; +13943: _Not_fn(_Not_fn&& __fn) = default; +13943: ~_Not_fn() = default; +13943: # 1161 "/usr/include/c++/14/functional" 3 +13943: template::value>> decltype(_S_not<__inv_res_t<_Fn &, _Args...>>()) operator()(_Args&&... __args) & noexcept(__is_nothrow_invocable<_Fn &, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn &, _Args...>>())) { return !std::__invoke(std::forward< _Fn & >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) & = delete; +13943: template::value>> decltype(_S_not<__inv_res_t<_Fn const &, _Args...>>()) operator()(_Args&&... __args) const & noexcept(__is_nothrow_invocable<_Fn const &, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn const &, _Args...>>())) { return !std::__invoke(std::forward< _Fn const & >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) const & = delete; +13943: template::value>> decltype(_S_not<__inv_res_t<_Fn &&, _Args...>>()) operator()(_Args&&... __args) && noexcept(__is_nothrow_invocable<_Fn &&, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn && >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) && = delete; +13943: template::value>> decltype(_S_not<__inv_res_t<_Fn const &&, _Args...>>()) operator()(_Args&&... __args) const && noexcept(__is_nothrow_invocable<_Fn const &&, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn const &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn const && >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) const && = delete; +13943: +13943: +13943: private: +13943: _Fn _M_fn; +13943: }; +13943: +13943: template +13943: struct __is_byte_like : false_type { }; +13943: +13943: template +13943: struct __is_byte_like<_Tp, equal_to<_Tp>> +13943: : __bool_constant::value> { }; +13943: +13943: template +13943: struct __is_byte_like<_Tp, equal_to> +13943: : __bool_constant::value> { }; +13943: +13943: +13943: +13943: enum class byte : unsigned char; +13943: +13943: template<> +13943: struct __is_byte_like> +13943: : true_type { }; +13943: +13943: template<> +13943: struct __is_byte_like> +13943: : true_type { }; +13943: # 1209 "/usr/include/c++/14/functional" 3 +13943: template +13943: +13943: inline auto +13943: not_fn(_Fn&& __fn) +13943: noexcept(std::is_nothrow_constructible, _Fn&&>::value) +13943: { +13943: return _Not_fn>{std::forward<_Fn>(__fn), 0}; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: class default_searcher +13943: { +13943: public: +13943: +13943: default_searcher(_ForwardIterator1 __pat_first, +13943: _ForwardIterator1 __pat_last, +13943: _BinaryPredicate __pred = _BinaryPredicate()) +13943: : _M_m(__pat_first, __pat_last, std::move(__pred)) +13943: { } +13943: +13943: template +13943: +13943: pair<_ForwardIterator2, _ForwardIterator2> +13943: operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const +13943: { +13943: _ForwardIterator2 __first_ret = +13943: std::search(__first, __last, std::get<0>(_M_m), std::get<1>(_M_m), +13943: std::get<2>(_M_m)); +13943: auto __ret = std::make_pair(__first_ret, __first_ret); +13943: if (__ret.first != __last) +13943: std::advance(__ret.second, std::distance(std::get<0>(_M_m), +13943: std::get<1>(_M_m))); +13943: return __ret; +13943: } +13943: +13943: private: +13943: tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m; +13943: }; +13943: +13943: +13943: +13943: template +13943: struct __boyer_moore_map_base +13943: { +13943: template +13943: __boyer_moore_map_base(_RAIter __pat, size_t __patlen, +13943: _Hash&& __hf, _Pred&& __pred) +13943: : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) } +13943: { +13943: if (__patlen > 0) +13943: for (__diff_type __i = 0; __i < __patlen - 1; ++__i) +13943: _M_bad_char[__pat[__i]] = __patlen - 1 - __i; +13943: } +13943: +13943: using __diff_type = _Tp; +13943: +13943: __diff_type +13943: _M_lookup(_Key __key, __diff_type __not_found) const +13943: { +13943: auto __iter = _M_bad_char.find(__key); +13943: if (__iter == _M_bad_char.end()) +13943: return __not_found; +13943: return __iter->second; +13943: } +13943: +13943: _Pred +13943: _M_pred() const { return _M_bad_char.key_eq(); } +13943: +13943: std::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char; +13943: }; +13943: +13943: template +13943: struct __boyer_moore_array_base +13943: { +13943: template +13943: __boyer_moore_array_base(_RAIter __pat, size_t __patlen, +13943: _Unused&&, _Pred&& __pred) +13943: : _M_bad_char{ array<_Tp, _Len>{}, std::move(__pred) } +13943: { +13943: std::get<0>(_M_bad_char).fill(__patlen); +13943: if (__patlen > 0) +13943: for (__diff_type __i = 0; __i < __patlen - 1; ++__i) +13943: { +13943: auto __ch = __pat[__i]; +13943: using _UCh = make_unsigned_t; +13943: auto __uch = static_cast<_UCh>(__ch); +13943: std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i; +13943: } +13943: } +13943: +13943: using __diff_type = _Tp; +13943: +13943: template +13943: __diff_type +13943: _M_lookup(_Key __key, __diff_type __not_found) const +13943: { +13943: auto __ukey = static_cast>(__key); +13943: if (__ukey >= _Len) +13943: return __not_found; +13943: return std::get<0>(_M_bad_char)[__ukey]; +13943: } +13943: +13943: const _Pred& +13943: _M_pred() const { return std::get<1>(_M_bad_char); } +13943: +13943: tuple, _Pred> _M_bad_char; +13943: }; +13943: +13943: +13943: +13943: template::value_type, +13943: typename _Diff = typename iterator_traits<_RAIter>::difference_type> +13943: using __boyer_moore_base_t +13943: = __conditional_t<__is_byte_like<_Val, _Pred>::value, +13943: __boyer_moore_array_base<_Diff, 256, _Pred>, +13943: __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>; +13943: +13943: template::value_type>, +13943: typename _BinaryPredicate = equal_to<>> +13943: class boyer_moore_searcher +13943: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> +13943: { +13943: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; +13943: using typename _Base::__diff_type; +13943: +13943: public: +13943: boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, +13943: _Hash __hf = _Hash(), +13943: _BinaryPredicate __pred = _BinaryPredicate()); +13943: +13943: template +13943: pair<_RandomAccessIterator2, _RandomAccessIterator2> +13943: operator()(_RandomAccessIterator2 __first, +13943: _RandomAccessIterator2 __last) const; +13943: +13943: private: +13943: bool +13943: _M_is_prefix(_RAIter __word, __diff_type __len, +13943: __diff_type __pos) +13943: { +13943: const auto& __pred = this->_M_pred(); +13943: __diff_type __suffixlen = __len - __pos; +13943: for (__diff_type __i = 0; __i < __suffixlen; ++__i) +13943: if (!__pred(__word[__i], __word[__pos + __i])) +13943: return false; +13943: return true; +13943: } +13943: +13943: __diff_type +13943: _M_suffix_length(_RAIter __word, __diff_type __len, +13943: __diff_type __pos) +13943: { +13943: const auto& __pred = this->_M_pred(); +13943: __diff_type __i = 0; +13943: while (__pred(__word[__pos - __i], __word[__len - 1 - __i]) +13943: && __i < __pos) +13943: { +13943: ++__i; +13943: } +13943: return __i; +13943: } +13943: +13943: template +13943: __diff_type +13943: _M_bad_char_shift(_Tp __c) const +13943: { return this->_M_lookup(__c, _M_pat_end - _M_pat); } +13943: +13943: _RAIter _M_pat; +13943: _RAIter _M_pat_end; +13943: std::vector<__diff_type> _M_good_suffix; +13943: }; +13943: +13943: template::value_type>, +13943: typename _BinaryPredicate = equal_to<>> +13943: class boyer_moore_horspool_searcher +13943: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> +13943: { +13943: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; +13943: using typename _Base::__diff_type; +13943: +13943: public: +13943: boyer_moore_horspool_searcher(_RAIter __pat, +13943: _RAIter __pat_end, +13943: _Hash __hf = _Hash(), +13943: _BinaryPredicate __pred +13943: = _BinaryPredicate()) +13943: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), +13943: _M_pat(__pat), _M_pat_end(__pat_end) +13943: { } +13943: +13943: template +13943: pair<_RandomAccessIterator2, _RandomAccessIterator2> +13943: operator()(_RandomAccessIterator2 __first, +13943: _RandomAccessIterator2 __last) const +13943: { +13943: const auto& __pred = this->_M_pred(); +13943: auto __patlen = _M_pat_end - _M_pat; +13943: if (__patlen == 0) +13943: return std::make_pair(__first, __first); +13943: auto __len = __last - __first; +13943: while (__len >= __patlen) +13943: { +13943: for (auto __scan = __patlen - 1; +13943: __pred(__first[__scan], _M_pat[__scan]); --__scan) +13943: if (__scan == 0) +13943: return std::make_pair(__first, __first + __patlen); +13943: auto __shift = _M_bad_char_shift(__first[__patlen - 1]); +13943: __len -= __shift; +13943: __first += __shift; +13943: } +13943: return std::make_pair(__last, __last); +13943: } +13943: +13943: private: +13943: template +13943: __diff_type +13943: _M_bad_char_shift(_Tp __c) const +13943: { return this->_M_lookup(__c, _M_pat_end - _M_pat); } +13943: +13943: _RAIter _M_pat; +13943: _RAIter _M_pat_end; +13943: }; +13943: +13943: template +13943: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: +13943: boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end, +13943: _Hash __hf, _BinaryPredicate __pred) +13943: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), +13943: _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat) +13943: { +13943: auto __patlen = __pat_end - __pat; +13943: if (__patlen == 0) +13943: return; +13943: __diff_type __last_prefix = __patlen - 1; +13943: for (__diff_type __p = __patlen - 1; __p >= 0; --__p) +13943: { +13943: if (_M_is_prefix(__pat, __patlen, __p + 1)) +13943: __last_prefix = __p + 1; +13943: _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p); +13943: } +13943: for (__diff_type __p = 0; __p < __patlen - 1; ++__p) +13943: { +13943: auto __slen = _M_suffix_length(__pat, __patlen, __p); +13943: auto __pos = __patlen - 1 - __slen; +13943: if (!__pred(__pat[__p - __slen], __pat[__pos])) +13943: _M_good_suffix[__pos] = __patlen - 1 - __p + __slen; +13943: } +13943: } +13943: +13943: template +13943: template +13943: pair<_RandomAccessIterator2, _RandomAccessIterator2> +13943: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: +13943: operator()(_RandomAccessIterator2 __first, +13943: _RandomAccessIterator2 __last) const +13943: { +13943: auto __patlen = _M_pat_end - _M_pat; +13943: if (__patlen == 0) +13943: return std::make_pair(__first, __first); +13943: const auto& __pred = this->_M_pred(); +13943: __diff_type __i = __patlen - 1; +13943: auto __stringlen = __last - __first; +13943: while (__i < __stringlen) +13943: { +13943: __diff_type __j = __patlen - 1; +13943: while (__j >= 0 && __pred(__first[__i], _M_pat[__j])) +13943: { +13943: --__i; +13943: --__j; +13943: } +13943: if (__j < 0) +13943: { +13943: const auto __match = __first + __i + 1; +13943: return std::make_pair(__match, __match + __patlen); +13943: } +13943: __i += std::max(_M_bad_char_shift(__first[__i]), +13943: _M_good_suffix[__j]); +13943: } +13943: return std::make_pair(__last, __last); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/usr/include/c++/14/memory" 1 3 +13943: # 47 "/usr/include/c++/14/memory" 3 +13943: +13943: # 48 "/usr/include/c++/14/memory" 3 +13943: # 66 "/usr/include/c++/14/memory" 3 +13943: # 1 "/usr/include/c++/14/bits/stl_tempbuf.h" 1 3 +13943: # 65 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: namespace __detail +13943: { +13943: template +13943: inline void +13943: __return_temporary_buffer(_Tp* __p, +13943: size_t __len __attribute__((__unused__))) +13943: { +13943: +13943: ::operator delete(__p, __len * sizeof(_Tp)); +13943: +13943: +13943: +13943: } +13943: } +13943: # 101 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +13943: template +13943: [[__deprecated__]] +13943: pair<_Tp*, ptrdiff_t> +13943: get_temporary_buffer(ptrdiff_t __len) noexcept +13943: { +13943: const ptrdiff_t __max = +13943: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); +13943: if (__len > __max) +13943: __len = __max; +13943: +13943: while (__len > 0) +13943: { +13943: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), +13943: std::nothrow)); +13943: if (__tmp != 0) +13943: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); +13943: __len = __len == 1 ? 0 : ((__len + 1) / 2); +13943: } +13943: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); +13943: } +13943: # 129 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +13943: template +13943: inline void +13943: return_temporary_buffer(_Tp* __p) +13943: { ::operator delete(__p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class _Temporary_buffer +13943: { +13943: +13943: +13943: +13943: public: +13943: typedef _Tp value_type; +13943: typedef value_type* pointer; +13943: typedef pointer iterator; +13943: typedef ptrdiff_t size_type; +13943: +13943: protected: +13943: size_type _M_original_len; +13943: size_type _M_len; +13943: pointer _M_buffer; +13943: +13943: public: +13943: +13943: size_type +13943: size() const +13943: { return _M_len; } +13943: +13943: +13943: size_type +13943: requested_size() const +13943: { return _M_original_len; } +13943: +13943: +13943: iterator +13943: begin() +13943: { return _M_buffer; } +13943: +13943: +13943: iterator +13943: end() +13943: { return _M_buffer + _M_len; } +13943: +13943: +13943: +13943: +13943: +13943: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len); +13943: +13943: ~_Temporary_buffer() +13943: { +13943: std::_Destroy(_M_buffer, _M_buffer + _M_len); +13943: std::__detail::__return_temporary_buffer(_M_buffer, _M_len); +13943: } +13943: +13943: private: +13943: +13943: _Temporary_buffer(const _Temporary_buffer&); +13943: +13943: void +13943: operator=(const _Temporary_buffer&); +13943: }; +13943: +13943: +13943: template +13943: struct __uninitialized_construct_buf_dispatch +13943: { +13943: template +13943: static void +13943: __ucr(_Pointer __first, _Pointer __last, +13943: _ForwardIterator __seed) +13943: { +13943: if (__first == __last) +13943: return; +13943: +13943: _Pointer __cur = __first; +13943: try +13943: { +13943: std::_Construct(std::__addressof(*__first), +13943: std::move(*__seed)); +13943: _Pointer __prev = __cur; +13943: ++__cur; +13943: for(; __cur != __last; ++__cur, ++__prev) +13943: std::_Construct(std::__addressof(*__cur), +13943: std::move(*__prev)); +13943: *__seed = std::move(*__prev); +13943: } +13943: catch(...) +13943: { +13943: std::_Destroy(__first, __cur); +13943: throw; +13943: } +13943: } +13943: }; +13943: +13943: template<> +13943: struct __uninitialized_construct_buf_dispatch +13943: { +13943: template +13943: static void +13943: __ucr(_Pointer, _Pointer, _ForwardIterator) { } +13943: }; +13943: # 247 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +13943: template +13943: inline void +13943: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, +13943: _ForwardIterator __seed) +13943: { +13943: typedef typename std::iterator_traits<_Pointer>::value_type +13943: _ValueType; +13943: +13943: std::__uninitialized_construct_buf_dispatch< +13943: __has_trivial_constructor(_ValueType)>:: +13943: __ucr(__first, __last, __seed); +13943: } +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: template +13943: _Temporary_buffer<_ForwardIterator, _Tp>:: +13943: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len) +13943: : _M_original_len(__original_len), _M_len(0), _M_buffer(0) +13943: { +13943: std::pair __p( +13943: std::get_temporary_buffer(_M_original_len)); +13943: +13943: if (__p.first) +13943: { +13943: try +13943: { +13943: std::__uninitialized_construct_buf(__p.first, __p.first + __p.second, +13943: __seed); +13943: _M_buffer = __p.first; +13943: _M_len = __p.second; +13943: } +13943: catch(...) +13943: { +13943: std::__detail::__return_temporary_buffer(__p.first, __p.second); +13943: throw; +13943: } +13943: } +13943: } +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: } +13943: # 67 "/usr/include/c++/14/memory" 2 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_raw_storage_iter.h" 1 3 +13943: # 59 "/usr/include/c++/14/bits/stl_raw_storage_iter.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: # 64 "/usr/include/c++/14/bits/stl_raw_storage_iter.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class [[__deprecated__]] raw_storage_iterator +13943: : public iterator +13943: { +13943: protected: +13943: _OutputIterator _M_iter; +13943: +13943: public: +13943: explicit +13943: raw_storage_iterator(_OutputIterator __x) +13943: : _M_iter(__x) {} +13943: +13943: raw_storage_iterator& +13943: operator*() { return *this; } +13943: +13943: raw_storage_iterator& +13943: operator=(const _Tp& __element) +13943: { +13943: std::_Construct(std::__addressof(*_M_iter), __element); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: raw_storage_iterator& +13943: operator=(_Tp&& __element) +13943: { +13943: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); +13943: return *this; +13943: } +13943: +13943: +13943: raw_storage_iterator& +13943: operator++() +13943: { +13943: ++_M_iter; +13943: return *this; +13943: } +13943: +13943: raw_storage_iterator +13943: operator++(int) +13943: { +13943: raw_storage_iterator __tmp = *this; +13943: ++_M_iter; +13943: return __tmp; +13943: } +13943: +13943: +13943: +13943: _OutputIterator base() const { return _M_iter; } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: } +13943: # 71 "/usr/include/c++/14/memory" 2 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/align.h" 1 3 +13943: # 36 "/usr/include/c++/14/bits/align.h" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 37 "/usr/include/c++/14/bits/align.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 60 "/usr/include/c++/14/bits/align.h" 3 +13943: inline void* +13943: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept +13943: { +13943: if (__space < __size) +13943: return nullptr; +13943: const auto __intptr = reinterpret_cast(__ptr); +13943: const auto __aligned = (__intptr - 1u + __align) & -__align; +13943: const auto __diff = __aligned - __intptr; +13943: if (__diff > (__space - __size)) +13943: return nullptr; +13943: else +13943: { +13943: __space -= __diff; +13943: return __ptr = reinterpret_cast(__aligned); +13943: } +13943: } +13943: # 106 "/usr/include/c++/14/bits/align.h" 3 +13943: +13943: } +13943: # 75 "/usr/include/c++/14/memory" 2 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/unique_ptr.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 57 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: template class auto_ptr; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct default_delete +13943: { +13943: +13943: constexpr default_delete() noexcept = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template>> +13943: +13943: default_delete(const default_delete<_Up>&) noexcept { } +13943: +13943: +13943: +13943: void +13943: operator()(_Tp* __ptr) const +13943: { +13943: static_assert(!is_void<_Tp>::value, +13943: "can't delete pointer to incomplete type"); +13943: static_assert(sizeof(_Tp)>0, +13943: "can't delete pointer to incomplete type"); +13943: delete __ptr; +13943: } +13943: }; +13943: # 105 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template +13943: struct default_delete<_Tp[]> +13943: { +13943: public: +13943: +13943: constexpr default_delete() noexcept = default; +13943: # 121 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template>> +13943: +13943: default_delete(const default_delete<_Up[]>&) noexcept { } +13943: +13943: +13943: template +13943: +13943: typename enable_if::value>::type +13943: operator()(_Up* __ptr) const +13943: { +13943: static_assert(sizeof(_Tp)>0, +13943: "can't delete pointer to incomplete type"); +13943: delete [] __ptr; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: class __uniq_ptr_impl +13943: { +13943: template +13943: struct _Ptr +13943: { +13943: using type = _Up*; +13943: }; +13943: +13943: template +13943: struct +13943: _Ptr<_Up, _Ep, __void_t::type::pointer>> +13943: { +13943: using type = typename remove_reference<_Ep>::type::pointer; +13943: }; +13943: +13943: public: +13943: using _DeleterConstraint = enable_if< +13943: __and_<__not_>, +13943: is_default_constructible<_Dp>>::value>; +13943: +13943: using pointer = typename _Ptr<_Tp, _Dp>::type; +13943: +13943: static_assert( !is_rvalue_reference<_Dp>::value, +13943: "unique_ptr's deleter type must be a function object type" +13943: " or an lvalue reference type" ); +13943: +13943: __uniq_ptr_impl() = default; +13943: +13943: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } +13943: +13943: template +13943: +13943: __uniq_ptr_impl(pointer __p, _Del&& __d) +13943: : _M_t(__p, std::forward<_Del>(__d)) { } +13943: +13943: +13943: __uniq_ptr_impl(__uniq_ptr_impl&& __u) noexcept +13943: : _M_t(std::move(__u._M_t)) +13943: { __u._M_ptr() = nullptr; } +13943: +13943: +13943: __uniq_ptr_impl& operator=(__uniq_ptr_impl&& __u) noexcept +13943: { +13943: reset(__u.release()); +13943: _M_deleter() = std::forward<_Dp>(__u._M_deleter()); +13943: return *this; +13943: } +13943: +13943: +13943: pointer& _M_ptr() noexcept { return std::get<0>(_M_t); } +13943: +13943: pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } +13943: +13943: _Dp& _M_deleter() noexcept { return std::get<1>(_M_t); } +13943: +13943: const _Dp& _M_deleter() const noexcept { return std::get<1>(_M_t); } +13943: +13943: +13943: void reset(pointer __p) noexcept +13943: { +13943: const pointer __old_p = _M_ptr(); +13943: _M_ptr() = __p; +13943: if (__old_p) +13943: _M_deleter()(__old_p); +13943: } +13943: +13943: +13943: pointer release() noexcept +13943: { +13943: pointer __p = _M_ptr(); +13943: _M_ptr() = nullptr; +13943: return __p; +13943: } +13943: +13943: +13943: void +13943: swap(__uniq_ptr_impl& __rhs) noexcept +13943: { +13943: using std::swap; +13943: swap(this->_M_ptr(), __rhs._M_ptr()); +13943: swap(this->_M_deleter(), __rhs._M_deleter()); +13943: } +13943: +13943: private: +13943: tuple _M_t; +13943: }; +13943: +13943: +13943: template ::value, +13943: bool = is_move_assignable<_Dp>::value> +13943: struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp> +13943: { +13943: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +13943: __uniq_ptr_data(__uniq_ptr_data&&) = default; +13943: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; +13943: }; +13943: +13943: template +13943: struct __uniq_ptr_data<_Tp, _Dp, true, false> : __uniq_ptr_impl<_Tp, _Dp> +13943: { +13943: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +13943: __uniq_ptr_data(__uniq_ptr_data&&) = default; +13943: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; +13943: }; +13943: +13943: template +13943: struct __uniq_ptr_data<_Tp, _Dp, false, true> : __uniq_ptr_impl<_Tp, _Dp> +13943: { +13943: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +13943: __uniq_ptr_data(__uniq_ptr_data&&) = delete; +13943: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; +13943: }; +13943: +13943: template +13943: struct __uniq_ptr_data<_Tp, _Dp, false, false> : __uniq_ptr_impl<_Tp, _Dp> +13943: { +13943: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +13943: __uniq_ptr_data(__uniq_ptr_data&&) = delete; +13943: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template > +13943: class unique_ptr +13943: { +13943: template +13943: using _DeleterConstraint = +13943: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; +13943: +13943: __uniq_ptr_data<_Tp, _Dp> _M_t; +13943: +13943: public: +13943: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; +13943: using element_type = _Tp; +13943: using deleter_type = _Dp; +13943: +13943: private: +13943: +13943: +13943: template +13943: using __safe_conversion_up = __and_< +13943: is_convertible::pointer, pointer>, +13943: __not_> +13943: >; +13943: +13943: public: +13943: +13943: +13943: +13943: template> +13943: constexpr unique_ptr() noexcept +13943: : _M_t() +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: +13943: explicit +13943: unique_ptr(pointer __p) noexcept +13943: : _M_t(__p) +13943: { } +13943: # 322 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template>> +13943: +13943: unique_ptr(pointer __p, const deleter_type& __d) noexcept +13943: : _M_t(__p, __d) { } +13943: # 335 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template>> +13943: +13943: unique_ptr(pointer __p, +13943: __enable_if_t::value, +13943: _Del&&> __d) noexcept +13943: : _M_t(__p, std::move(__d)) +13943: { } +13943: +13943: template::type> +13943: +13943: unique_ptr(pointer, +13943: __enable_if_t::value, +13943: _DelUnref&&>) = delete; +13943: +13943: +13943: template> +13943: constexpr unique_ptr(nullptr_t) noexcept +13943: : _M_t() +13943: { } +13943: +13943: +13943: +13943: +13943: unique_ptr(unique_ptr&&) = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template, +13943: __conditional_t::value, +13943: is_same<_Ep, _Dp>, +13943: is_convertible<_Ep, _Dp>>>> +13943: +13943: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept +13943: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) +13943: { } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: template, +13943: is_same<_Dp, default_delete<_Tp>>>> +13943: unique_ptr(auto_ptr<_Up>&& __u) noexcept; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~unique_ptr() noexcept +13943: { +13943: static_assert(__is_invocable::value, +13943: "unique_ptr's deleter must be invocable with a pointer"); +13943: auto& __ptr = _M_t._M_ptr(); +13943: if (__ptr != nullptr) +13943: get_deleter()(std::move(__ptr)); +13943: __ptr = pointer(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: unique_ptr& operator=(unique_ptr&&) = default; +13943: # 418 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template +13943: +13943: typename enable_if< __and_< +13943: __safe_conversion_up<_Up, _Ep>, +13943: is_assignable +13943: >::value, +13943: unique_ptr&>::type +13943: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept +13943: { +13943: reset(__u.release()); +13943: get_deleter() = std::forward<_Ep>(__u.get_deleter()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: unique_ptr& +13943: operator=(nullptr_t) noexcept +13943: { +13943: reset(); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: typename add_lvalue_reference::type +13943: operator*() const noexcept(noexcept(*std::declval())) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) std::__glibcxx_assert_fail(); } while (false); +13943: return *get(); +13943: } +13943: +13943: +13943: +13943: pointer +13943: operator->() const noexcept +13943: { +13943: ; +13943: return get(); +13943: } +13943: +13943: +13943: +13943: pointer +13943: get() const noexcept +13943: { return _M_t._M_ptr(); } +13943: +13943: +13943: +13943: deleter_type& +13943: get_deleter() noexcept +13943: { return _M_t._M_deleter(); } +13943: +13943: +13943: +13943: const deleter_type& +13943: get_deleter() const noexcept +13943: { return _M_t._M_deleter(); } +13943: +13943: +13943: +13943: explicit operator bool() const noexcept +13943: { return get() == pointer() ? false : true; } +13943: +13943: +13943: +13943: +13943: +13943: pointer +13943: release() noexcept +13943: { return _M_t.release(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: reset(pointer __p = pointer()) noexcept +13943: { +13943: static_assert(__is_invocable::value, +13943: "unique_ptr's deleter must be invocable with a pointer"); +13943: _M_t.reset(std::move(__p)); +13943: } +13943: +13943: +13943: +13943: void +13943: swap(unique_ptr& __u) noexcept +13943: { +13943: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); +13943: _M_t.swap(__u._M_t); +13943: } +13943: +13943: +13943: unique_ptr(const unique_ptr&) = delete; +13943: unique_ptr& operator=(const unique_ptr&) = delete; +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: # 537 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template +13943: class unique_ptr<_Tp[], _Dp> +13943: { +13943: template +13943: using _DeleterConstraint = +13943: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; +13943: +13943: __uniq_ptr_data<_Tp, _Dp> _M_t; +13943: +13943: +13943: template +13943: using __is_derived_Tp +13943: = __and_< is_base_of<_Tp, _Up>, +13943: __not_, __remove_cv_t<_Up>>> >; +13943: +13943: public: +13943: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; +13943: using element_type = _Tp; +13943: using deleter_type = _Dp; +13943: +13943: +13943: +13943: template, +13943: typename _UP_pointer = typename _UPtr::pointer, +13943: typename _UP_element_type = typename _UPtr::element_type> +13943: using __safe_conversion_up = __and_< +13943: is_array<_Up>, +13943: is_same, +13943: is_same<_UP_pointer, _UP_element_type*>, +13943: is_convertible<_UP_element_type(*)[], element_type(*)[]> +13943: >; +13943: +13943: +13943: template +13943: using __safe_conversion_raw = __and_< +13943: __or_<__or_, +13943: is_same<_Up, nullptr_t>>, +13943: __and_, +13943: is_same, +13943: is_convertible< +13943: typename remove_pointer<_Up>::type(*)[], +13943: element_type(*)[]> +13943: > +13943: > +13943: >; +13943: +13943: +13943: +13943: +13943: template> +13943: constexpr unique_ptr() noexcept +13943: : _M_t() +13943: { } +13943: # 599 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template, +13943: typename = typename enable_if< +13943: __safe_conversion_raw<_Up>::value, bool>::type> +13943: +13943: explicit +13943: unique_ptr(_Up __p) noexcept +13943: : _M_t(__p) +13943: { } +13943: # 618 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template, +13943: is_copy_constructible<_Del>>> +13943: +13943: unique_ptr(_Up __p, const deleter_type& __d) noexcept +13943: : _M_t(__p, __d) { } +13943: # 633 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template, +13943: is_move_constructible<_Del>>> +13943: +13943: unique_ptr(_Up __p, +13943: __enable_if_t::value, +13943: _Del&&> __d) noexcept +13943: : _M_t(std::move(__p), std::move(__d)) +13943: { } +13943: +13943: template::type, +13943: typename = _Require<__safe_conversion_raw<_Up>>> +13943: unique_ptr(_Up, +13943: __enable_if_t::value, +13943: _DelUnref&&>) = delete; +13943: +13943: +13943: unique_ptr(unique_ptr&&) = default; +13943: +13943: +13943: template> +13943: constexpr unique_ptr(nullptr_t) noexcept +13943: : _M_t() +13943: { } +13943: +13943: template, +13943: __conditional_t::value, +13943: is_same<_Ep, _Dp>, +13943: is_convertible<_Ep, _Dp>>>> +13943: +13943: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept +13943: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: ~unique_ptr() +13943: { +13943: auto& __ptr = _M_t._M_ptr(); +13943: if (__ptr != nullptr) +13943: get_deleter()(__ptr); +13943: __ptr = pointer(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: unique_ptr& +13943: operator=(unique_ptr&&) = default; +13943: # 697 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template +13943: +13943: typename +13943: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, +13943: is_assignable +13943: >::value, +13943: unique_ptr&>::type +13943: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept +13943: { +13943: reset(__u.release()); +13943: get_deleter() = std::forward<_Ep>(__u.get_deleter()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: unique_ptr& +13943: operator=(nullptr_t) noexcept +13943: { +13943: reset(); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: typename std::add_lvalue_reference::type +13943: operator[](size_t __i) const +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) std::__glibcxx_assert_fail(); } while (false); +13943: return get()[__i]; +13943: } +13943: +13943: +13943: +13943: pointer +13943: get() const noexcept +13943: { return _M_t._M_ptr(); } +13943: +13943: +13943: +13943: deleter_type& +13943: get_deleter() noexcept +13943: { return _M_t._M_deleter(); } +13943: +13943: +13943: +13943: const deleter_type& +13943: get_deleter() const noexcept +13943: { return _M_t._M_deleter(); } +13943: +13943: +13943: +13943: explicit operator bool() const noexcept +13943: { return get() == pointer() ? false : true; } +13943: +13943: +13943: +13943: +13943: +13943: pointer +13943: release() noexcept +13943: { return _M_t.release(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template , +13943: __and_, +13943: is_pointer<_Up>, +13943: is_convertible< +13943: typename remove_pointer<_Up>::type(*)[], +13943: element_type(*)[] +13943: > +13943: > +13943: > +13943: >> +13943: +13943: void +13943: reset(_Up __p) noexcept +13943: { _M_t.reset(std::move(__p)); } +13943: +13943: +13943: void reset(nullptr_t = nullptr) noexcept +13943: { reset(pointer()); } +13943: +13943: +13943: +13943: void +13943: swap(unique_ptr& __u) noexcept +13943: { +13943: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); +13943: _M_t.swap(__u._M_t); +13943: } +13943: +13943: +13943: unique_ptr(const unique_ptr&) = delete; +13943: unique_ptr& operator=(const unique_ptr&) = delete; +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline +13943: +13943: +13943: +13943: typename enable_if<__is_swappable<_Dp>::value>::type +13943: +13943: +13943: +13943: swap(unique_ptr<_Tp, _Dp>& __x, +13943: unique_ptr<_Tp, _Dp>& __y) noexcept +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: typename enable_if::value>::type +13943: swap(unique_ptr<_Tp, _Dp>&, +13943: unique_ptr<_Tp, _Dp>&) = delete; +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const unique_ptr<_Tp, _Dp>& __x, +13943: const unique_ptr<_Up, _Ep>& __y) +13943: { return __x.get() == __y.get(); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept +13943: { return !__x; } +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept +13943: { return !__x; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const unique_ptr<_Tp, _Dp>& __x, +13943: const unique_ptr<_Up, _Ep>& __y) +13943: { return __x.get() != __y.get(); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept +13943: { return (bool)__x; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept +13943: { return (bool)__x; } +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const unique_ptr<_Tp, _Dp>& __x, +13943: const unique_ptr<_Up, _Ep>& __y) +13943: { +13943: typedef typename +13943: std::common_type::pointer, +13943: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; +13943: return std::less<_CT>()(__x.get(), __y.get()); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +13943: { +13943: return std::less::pointer>()(__x.get(), +13943: nullptr); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +13943: { +13943: return std::less::pointer>()(nullptr, +13943: __x.get()); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const unique_ptr<_Tp, _Dp>& __x, +13943: const unique_ptr<_Up, _Ep>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +13943: { return !(nullptr < __x); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +13943: { return !(__x < nullptr); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const unique_ptr<_Tp, _Dp>& __x, +13943: const unique_ptr<_Up, _Ep>& __y) +13943: { return (__y < __x); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +13943: { +13943: return std::less::pointer>()(nullptr, +13943: __x.get()); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +13943: { +13943: return std::less::pointer>()(__x.get(), +13943: nullptr); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const unique_ptr<_Tp, _Dp>& __x, +13943: const unique_ptr<_Up, _Ep>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +13943: { return !(__x < nullptr); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +13943: { return !(nullptr < __x); } +13943: # 1015 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template::__enable_hash_call> +13943: struct __uniq_ptr_hash +13943: +13943: : private __poison_hash<_Ptr> +13943: +13943: { +13943: size_t +13943: operator()(const _Up& __u) const +13943: noexcept(noexcept(std::declval>()(std::declval<_Ptr>()))) +13943: { return hash<_Ptr>()(__u.get()); } +13943: }; +13943: +13943: template +13943: struct __uniq_ptr_hash<_Up, _Ptr, false> +13943: : private __poison_hash<_Ptr> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct hash> +13943: : public __hash_base>, +13943: public __uniq_ptr_hash> +13943: { }; +13943: +13943: +13943: +13943: namespace __detail +13943: { +13943: template +13943: struct _MakeUniq +13943: { typedef unique_ptr<_Tp> __single_object; }; +13943: +13943: template +13943: struct _MakeUniq<_Tp[]> +13943: { typedef unique_ptr<_Tp[]> __array; }; +13943: +13943: template +13943: struct _MakeUniq<_Tp[_Bound]> +13943: { struct __invalid_type { }; }; +13943: +13943: template +13943: using __unique_ptr_t = typename _MakeUniq<_Tp>::__single_object; +13943: template +13943: using __unique_ptr_array_t = typename _MakeUniq<_Tp>::__array; +13943: template +13943: using __invalid_make_unique_t = typename _MakeUniq<_Tp>::__invalid_type; +13943: } +13943: # 1073 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template +13943: +13943: inline __detail::__unique_ptr_t<_Tp> +13943: make_unique(_Args&&... __args) +13943: { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } +13943: # 1088 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template +13943: +13943: inline __detail::__unique_ptr_array_t<_Tp> +13943: make_unique(size_t __num) +13943: { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: __detail::__invalid_make_unique_t<_Tp> +13943: make_unique(_Args&&...) = delete; +13943: # 1159 "/usr/include/c++/14/bits/unique_ptr.h" 3 +13943: template +13943: static constexpr bool __is_unique_ptr = false; +13943: template +13943: static constexpr bool __is_unique_ptr> = true; +13943: +13943: +13943: +13943: +13943: +13943: namespace __detail::__variant +13943: { +13943: template struct _Never_valueless_alt; +13943: +13943: +13943: +13943: template +13943: struct _Never_valueless_alt> +13943: : std::true_type +13943: { }; +13943: } +13943: +13943: +13943: +13943: } +13943: # 79 "/usr/include/c++/14/memory" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/shared_ptr.h" 1 3 +13943: # 52 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: # 1 "/usr/include/c++/14/iosfwd" 1 3 +13943: # 36 "/usr/include/c++/14/iosfwd" 3 +13943: +13943: # 37 "/usr/include/c++/14/iosfwd" 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stringfwd.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/stringfwd.h" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/stringfwd.h" 3 +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct char_traits; +13943: +13943: template<> struct char_traits; +13943: +13943: template<> struct char_traits; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> struct char_traits; +13943: template<> struct char_traits; +13943: +13943: +13943: namespace __cxx11 { +13943: +13943: template, +13943: typename _Alloc = allocator<_CharT> > +13943: class basic_string; +13943: +13943: } +13943: +13943: +13943: typedef basic_string string; +13943: +13943: +13943: typedef basic_string wstring; +13943: # 89 "/usr/include/c++/14/bits/stringfwd.h" 3 +13943: typedef basic_string u16string; +13943: +13943: +13943: typedef basic_string u32string; +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 42 "/usr/include/c++/14/iosfwd" 2 3 +13943: # 1 "/usr/include/c++/14/bits/postypes.h" 1 3 +13943: # 38 "/usr/include/c++/14/bits/postypes.h" 3 +13943: +13943: # 39 "/usr/include/c++/14/bits/postypes.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/cwchar" 1 3 +13943: # 39 "/usr/include/c++/14/cwchar" 3 +13943: +13943: # 40 "/usr/include/c++/14/cwchar" 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/wchar.h" 1 3 4 +13943: # 27 "/usr/include/wchar.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +13943: # 28 "/usr/include/wchar.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +13943: # 52 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 +13943: # 25 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 2 3 4 +13943: # 53 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 2 3 4 +13943: # 31 "/usr/include/wchar.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 36 "/usr/include/wchar.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 1 3 4 +13943: # 40 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 3 4 +13943: typedef __builtin_va_list __gnuc_va_list; +13943: # 39 "/usr/include/wchar.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: typedef __gnuc_va_list va_list; +13943: # 52 "/usr/include/wchar.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 1 3 4 +13943: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 3 4 +13943: typedef unsigned int wint_t; +13943: # 53 "/usr/include/wchar.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 1 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 1 3 4 +13943: # 13 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 3 4 +13943: typedef struct +13943: { +13943: int __count; +13943: union +13943: { +13943: unsigned int __wch; +13943: char __wchb[4]; +13943: } __value; +13943: } __mbstate_t; +13943: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 2 3 4 +13943: +13943: typedef __mbstate_t mbstate_t; +13943: # 54 "/usr/include/wchar.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h" 1 3 4 +13943: +13943: +13943: +13943: struct _IO_FILE; +13943: typedef struct _IO_FILE __FILE; +13943: # 55 "/usr/include/wchar.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/FILE.h" 1 3 4 +13943: +13943: +13943: +13943: struct _IO_FILE; +13943: +13943: +13943: typedef struct _IO_FILE FILE; +13943: # 58 "/usr/include/wchar.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 1 3 4 +13943: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 3 4 +13943: struct __locale_struct +13943: { +13943: +13943: struct __locale_data *__locales[13]; +13943: +13943: +13943: const unsigned short int *__ctype_b; +13943: const int *__ctype_tolower; +13943: const int *__ctype_toupper; +13943: +13943: +13943: const char *__names[13]; +13943: }; +13943: +13943: typedef struct __locale_struct *__locale_t; +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 2 3 4 +13943: +13943: typedef __locale_t locale_t; +13943: # 61 "/usr/include/wchar.h" 2 3 4 +13943: # 90 "/usr/include/wchar.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: struct tm; +13943: +13943: +13943: +13943: extern wchar_t *wcscpy (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern size_t wcslcpy (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); +13943: +13943: +13943: +13943: extern size_t wcslcat (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); +13943: +13943: +13943: +13943: extern wchar_t *wcscat (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern wchar_t *wcsncat (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); +13943: +13943: +13943: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, +13943: size_t __n) noexcept (true); +13943: +13943: +13943: +13943: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, +13943: locale_t __loc) noexcept (true); +13943: +13943: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, +13943: size_t __n, locale_t __loc) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); +13943: +13943: +13943: +13943: extern size_t wcsxfrm (wchar_t *__restrict __s1, +13943: const wchar_t *__restrict __s2, size_t __n) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, +13943: locale_t __loc) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, +13943: size_t __n, locale_t __loc) noexcept (true); +13943: +13943: +13943: extern wchar_t *wcsdup (const wchar_t *__s) noexcept (true) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +13943: +13943: +13943: +13943: +13943: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) +13943: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); +13943: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) +13943: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) +13943: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); +13943: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) +13943: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); +13943: # 206 "/usr/include/wchar.h" 3 4 +13943: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) +13943: noexcept (true) __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) +13943: noexcept (true) __attribute__ ((__pure__)); +13943: +13943: +13943: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) +13943: noexcept (true) __attribute__ ((__pure__)); +13943: +13943: +13943: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) +13943: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); +13943: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, +13943: const wchar_t *__accept) +13943: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) +13943: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); +13943: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, +13943: const wchar_t *__needle) +13943: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wchar_t *wcstok (wchar_t *__restrict __s, +13943: const wchar_t *__restrict __delim, +13943: wchar_t **__restrict __ptr) noexcept (true); +13943: +13943: +13943: extern size_t wcslen (const wchar_t *__s) noexcept (true) __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) +13943: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); +13943: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, +13943: const wchar_t *__needle) +13943: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); +13943: # 265 "/usr/include/wchar.h" 3 4 +13943: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) +13943: noexcept (true) __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) +13943: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); +13943: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, +13943: size_t __n) +13943: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) +13943: noexcept (true) __attribute__ ((__pure__)); +13943: +13943: +13943: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, +13943: const wchar_t *__restrict __s2, size_t __n) noexcept (true); +13943: +13943: +13943: +13943: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) +13943: noexcept (true); +13943: +13943: +13943: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, +13943: const wchar_t *__restrict __s2, size_t __n) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t btowc (int __c) noexcept (true); +13943: +13943: +13943: +13943: extern int wctob (wint_t __c) noexcept (true); +13943: +13943: +13943: +13943: extern int mbsinit (const mbstate_t *__ps) noexcept (true) __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: extern size_t mbrtowc (wchar_t *__restrict __pwc, +13943: const char *__restrict __s, size_t __n, +13943: mbstate_t *__restrict __p) noexcept (true); +13943: +13943: +13943: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, +13943: mbstate_t *__restrict __ps) noexcept (true); +13943: +13943: +13943: extern size_t __mbrlen (const char *__restrict __s, size_t __n, +13943: mbstate_t *__restrict __ps) noexcept (true); +13943: extern size_t mbrlen (const char *__restrict __s, size_t __n, +13943: mbstate_t *__restrict __ps) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t __btowc_alias (int __c) __asm ("btowc"); +13943: extern __inline __attribute__ ((__gnu_inline__)) wint_t +13943: __attribute__ ((__leaf__)) btowc (int __c) noexcept (true) +13943: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' +13943: ? (wint_t) __c : __btowc_alias (__c)); } +13943: +13943: extern int __wctob_alias (wint_t __c) __asm ("wctob"); +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: __attribute__ ((__leaf__)) wctob (wint_t __wc) noexcept (true) +13943: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' +13943: ? (int) __wc : __wctob_alias (__wc)); } +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) size_t +13943: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) noexcept (true) +13943: +13943: { return (__ps != __null +13943: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } +13943: +13943: +13943: +13943: +13943: extern size_t mbsrtowcs (wchar_t *__restrict __dst, +13943: const char **__restrict __src, size_t __len, +13943: mbstate_t *__restrict __ps) noexcept (true); +13943: +13943: +13943: +13943: extern size_t wcsrtombs (char *__restrict __dst, +13943: const wchar_t **__restrict __src, size_t __len, +13943: mbstate_t *__restrict __ps) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, +13943: const char **__restrict __src, size_t __nmc, +13943: size_t __len, mbstate_t *__restrict __ps) noexcept (true); +13943: +13943: +13943: +13943: extern size_t wcsnrtombs (char *__restrict __dst, +13943: const wchar_t **__restrict __src, +13943: size_t __nwc, size_t __len, +13943: mbstate_t *__restrict __ps) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int wcwidth (wchar_t __c) noexcept (true); +13943: +13943: +13943: +13943: extern int wcswidth (const wchar_t *__s, size_t __n) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern double wcstod (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr) noexcept (true); +13943: +13943: +13943: +13943: extern float wcstof (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr) noexcept (true); +13943: extern long double wcstold (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr) noexcept (true); +13943: # 422 "/usr/include/wchar.h" 3 4 +13943: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr) noexcept (true); +13943: # 437 "/usr/include/wchar.h" 3 4 +13943: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr) noexcept (true); +13943: # 455 "/usr/include/wchar.h" 3 4 +13943: extern long int wcstol (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, int __base) noexcept (true); +13943: +13943: +13943: +13943: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, int __base) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: __extension__ +13943: extern long long int wcstoll (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, int __base) +13943: noexcept (true); +13943: +13943: +13943: +13943: __extension__ +13943: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: int __base) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: __extension__ +13943: extern long long int wcstoq (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, int __base) +13943: noexcept (true); +13943: +13943: +13943: +13943: __extension__ +13943: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: int __base) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int wcstol (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstol") +13943: +13943: ; +13943: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoul") +13943: +13943: +13943: ; +13943: __extension__ +13943: extern long long int wcstoll (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") +13943: +13943: +13943: ; +13943: __extension__ +13943: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") +13943: +13943: +13943: ; +13943: +13943: __extension__ +13943: extern long long int wcstoq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") +13943: +13943: ; +13943: __extension__ +13943: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") +13943: +13943: +13943: ; +13943: # 561 "/usr/include/wchar.h" 3 4 +13943: extern long int wcstol_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, int __base, +13943: locale_t __loc) noexcept (true); +13943: +13943: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: int __base, locale_t __loc) noexcept (true); +13943: +13943: __extension__ +13943: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: int __base, locale_t __loc) noexcept (true); +13943: +13943: __extension__ +13943: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: int __base, locale_t __loc) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: 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") +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: ; +13943: __extension__ +13943: 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") +13943: +13943: +13943: +13943: ; +13943: __extension__ +13943: 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") +13943: +13943: +13943: +13943: ; +13943: # 630 "/usr/include/wchar.h" 3 4 +13943: extern double wcstod_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, locale_t __loc) +13943: noexcept (true); +13943: +13943: extern float wcstof_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, locale_t __loc) +13943: noexcept (true); +13943: +13943: extern long double wcstold_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: locale_t __loc) noexcept (true); +13943: # 649 "/usr/include/wchar.h" 3 4 +13943: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: locale_t __loc) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: locale_t __loc) noexcept (true); +13943: # 667 "/usr/include/wchar.h" 3 4 +13943: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, +13943: locale_t __loc) noexcept (true); +13943: # 689 "/usr/include/wchar.h" 3 4 +13943: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src) noexcept (true); +13943: +13943: +13943: +13943: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, size_t __n) +13943: noexcept (true); +13943: # 718 "/usr/include/wchar.h" 3 4 +13943: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) +13943: __attribute__ ((__malloc__)) ; +13943: +13943: +13943: +13943: +13943: +13943: extern int fwide (__FILE *__fp, int __mode) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fwprintf (__FILE *__restrict __stream, +13943: const wchar_t *__restrict __format, ...) +13943: ; +13943: +13943: +13943: +13943: +13943: extern int wprintf (const wchar_t *__restrict __format, ...) +13943: ; +13943: +13943: extern int swprintf (wchar_t *__restrict __s, size_t __n, +13943: const wchar_t *__restrict __format, ...) +13943: noexcept (true) ; +13943: +13943: +13943: +13943: +13943: +13943: extern int vfwprintf (__FILE *__restrict __s, +13943: const wchar_t *__restrict __format, +13943: __gnuc_va_list __arg) +13943: ; +13943: +13943: +13943: +13943: +13943: extern int vwprintf (const wchar_t *__restrict __format, +13943: __gnuc_va_list __arg) +13943: ; +13943: +13943: +13943: extern int vswprintf (wchar_t *__restrict __s, size_t __n, +13943: const wchar_t *__restrict __format, +13943: __gnuc_va_list __arg) +13943: noexcept (true) ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fwscanf (__FILE *__restrict __stream, +13943: const wchar_t *__restrict __format, ...) +13943: ; +13943: +13943: +13943: +13943: +13943: extern int wscanf (const wchar_t *__restrict __format, ...) +13943: ; +13943: +13943: extern int swscanf (const wchar_t *__restrict __s, +13943: const wchar_t *__restrict __format, ...) +13943: noexcept (true) ; +13943: # 795 "/usr/include/wchar.h" 3 4 +13943: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_fwscanf") +13943: +13943: +13943: ; +13943: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_wscanf") +13943: +13943: ; +13943: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_swscanf") +13943: +13943: +13943: ; +13943: # 851 "/usr/include/wchar.h" 3 4 +13943: extern int vfwscanf (__FILE *__restrict __s, +13943: const wchar_t *__restrict __format, +13943: __gnuc_va_list __arg) +13943: ; +13943: +13943: +13943: +13943: +13943: extern int vwscanf (const wchar_t *__restrict __format, +13943: __gnuc_va_list __arg) +13943: ; +13943: +13943: extern int vswscanf (const wchar_t *__restrict __s, +13943: const wchar_t *__restrict __format, +13943: __gnuc_va_list __arg) +13943: noexcept (true) ; +13943: # 875 "/usr/include/wchar.h" 3 4 +13943: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfwscanf") +13943: +13943: +13943: ; +13943: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vwscanf") +13943: +13943: ; +13943: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vswscanf") +13943: +13943: +13943: ; +13943: # 935 "/usr/include/wchar.h" 3 4 +13943: extern wint_t fgetwc (__FILE *__stream); +13943: extern wint_t getwc (__FILE *__stream); +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t getwchar (void); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); +13943: extern wint_t putwc (wchar_t __wc, __FILE *__stream); +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t putwchar (wchar_t __wc); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, +13943: __FILE *__restrict __stream); +13943: +13943: +13943: +13943: +13943: +13943: extern int fputws (const wchar_t *__restrict __ws, +13943: __FILE *__restrict __stream); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); +13943: # 990 "/usr/include/wchar.h" 3 4 +13943: extern wint_t getwc_unlocked (__FILE *__stream); +13943: extern wint_t getwchar_unlocked (void); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t fgetwc_unlocked (__FILE *__stream); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); +13943: # 1016 "/usr/include/wchar.h" 3 4 +13943: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); +13943: extern wint_t putwchar_unlocked (wchar_t __wc); +13943: # 1026 "/usr/include/wchar.h" 3 4 +13943: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, +13943: __FILE *__restrict __stream); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fputws_unlocked (const wchar_t *__restrict __ws, +13943: __FILE *__restrict __stream); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, +13943: const wchar_t *__restrict __format, +13943: const struct tm *__restrict __tp) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, +13943: const wchar_t *__restrict __format, +13943: const struct tm *__restrict __tp, +13943: locale_t __loc) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 3 4 +13943: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, +13943: const wchar_t *__restrict __s2, size_t __n, +13943: size_t __ns1) noexcept (true); +13943: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmemcpy") +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) +13943: ; +13943: +13943: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, +13943: size_t __n, size_t __ns1) noexcept (true); +13943: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) __asm__ ("" "wmemmove") +13943: +13943: ; +13943: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemmove_chk") +13943: +13943: +13943: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) +13943: ; +13943: +13943: +13943: +13943: +13943: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, +13943: const wchar_t *__restrict __s2, size_t __n, +13943: size_t __ns1) noexcept (true); +13943: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmempcpy") +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) +13943: ; +13943: +13943: +13943: +13943: +13943: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, +13943: size_t __ns) noexcept (true); +13943: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) __asm__ ("" "wmemset") +13943: ; +13943: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) noexcept (true) __asm__ ("" "__wmemset_chk") +13943: +13943: +13943: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) +13943: ; +13943: +13943: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, +13943: size_t __n) noexcept (true); +13943: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscpy") +13943: +13943: ; +13943: +13943: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, +13943: size_t __destlen) noexcept (true); +13943: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcpcpy") +13943: +13943: ; +13943: +13943: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, size_t __n, +13943: size_t __destlen) noexcept (true); +13943: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncpy") +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) +13943: ; +13943: +13943: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, size_t __n, +13943: size_t __destlen) noexcept (true); +13943: +13943: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcpncpy") +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) +13943: ; +13943: +13943: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, +13943: size_t __destlen) noexcept (true); +13943: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscat") +13943: +13943: ; +13943: +13943: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, +13943: const wchar_t *__restrict __src, +13943: size_t __n, size_t __destlen) noexcept (true); +13943: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncat") +13943: +13943: +13943: ; +13943: +13943: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, +13943: int __flag, size_t __s_len, +13943: const wchar_t *__restrict __format, ...) +13943: noexcept (true) ; +13943: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) __asm__ ("" "swprintf") +13943: +13943: +13943: ; +13943: +13943: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, +13943: int __flag, size_t __s_len, +13943: const wchar_t *__restrict __format, +13943: __gnuc_va_list __arg) +13943: noexcept (true) ; +13943: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) __asm__ ("" "vswprintf") +13943: +13943: +13943: ; +13943: +13943: +13943: +13943: +13943: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, +13943: const wchar_t *__restrict __format, ...); +13943: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, +13943: ...); +13943: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, +13943: const wchar_t *__restrict __format, +13943: __gnuc_va_list __ap); +13943: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, +13943: __gnuc_va_list __ap); +13943: +13943: +13943: +13943: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, +13943: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +13943: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") +13943: +13943: __attribute__ ((__warn_unused_result__)); +13943: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) +13943: ; +13943: +13943: +13943: +13943: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, +13943: int __n, __FILE *__restrict __stream) +13943: __attribute__ ((__warn_unused_result__)); +13943: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)); +13943: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") +13943: +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) +13943: ; +13943: +13943: +13943: +13943: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, +13943: mbstate_t *__restrict __p, +13943: size_t __buflen) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcrtomb") +13943: +13943: __attribute__ ((__warn_unused_result__)); +13943: +13943: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, +13943: const char **__restrict __src, +13943: size_t __len, mbstate_t *__restrict __ps, +13943: size_t __dstlen) noexcept (true); +13943: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsrtowcs") +13943: +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: +13943: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) +13943: ; +13943: +13943: extern size_t __wcsrtombs_chk (char *__restrict __dst, +13943: const wchar_t **__restrict __src, +13943: size_t __len, mbstate_t *__restrict __ps, +13943: size_t __dstlen) noexcept (true); +13943: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsrtombs") +13943: +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: +13943: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); +13943: +13943: +13943: +13943: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, +13943: const char **__restrict __src, size_t __nmc, +13943: size_t __len, mbstate_t *__restrict __ps, +13943: size_t __dstlen) noexcept (true); +13943: 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") +13943: +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: +13943: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) +13943: ; +13943: +13943: extern size_t __wcsnrtombs_chk (char *__restrict __dst, +13943: const wchar_t **__restrict __src, +13943: size_t __nwc, size_t __len, +13943: mbstate_t *__restrict __ps, size_t __dstlen) +13943: noexcept (true); +13943: 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") +13943: +13943: +13943: +13943: ; +13943: 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") +13943: +13943: +13943: +13943: +13943: +13943: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); +13943: +13943: +13943: +13943: +13943: extern size_t __wcslcpy_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, +13943: size_t __destlen) noexcept (true); +13943: extern size_t __wcslcpy_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcpy") +13943: +13943: ; +13943: +13943: extern size_t __wcslcat_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, +13943: size_t __destlen) noexcept (true); +13943: extern size_t __wcslcat_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcat") +13943: +13943: ; +13943: # 1060 "/usr/include/wchar.h" 2 3 4 +13943: # 1070 "/usr/include/wchar.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wmemcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_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_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wmemmove (wchar_t * __s1, const wchar_t *__s2, size_t __n) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_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_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemmove_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemmove_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wmempcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_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_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmempcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmempcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wmemset (wchar_t * __s, wchar_t __c, size_t __n) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__s, 0)) && (__builtin_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_object_size (__s, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s, 0)) / (sizeof (wchar_t)))) ? __wmemset_chk_warn (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))) : __wmemset_chk (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wcscpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__dest, 2 > 1); +13943: if (__sz != (size_t) -1) +13943: return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); +13943: return __wcscpy_alias (__dest, __src); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wcpcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__dest, 2 > 1); +13943: if (__sz != (size_t) -1) +13943: return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); +13943: return __wcpcpy_alias (__dest, __src); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wcsncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 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_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcsncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcsncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wcpncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 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_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcpncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcpncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wcscat (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__dest, 2 > 1); +13943: if (__sz != (size_t) -1) +13943: return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); +13943: return __wcscat_alias (__dest, __src); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +13943: __attribute__ ((__leaf__)) wcsncat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__dest, 2 > 1); +13943: if (__sz != (size_t) -1) +13943: return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); +13943: return __wcsncat_alias (__dest, __src, __n); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) wcslcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +13943: && (!__builtin_constant_p (__n +13943: > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) +13943: || __n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))) +13943: return __wcslcpy_chk (__dest, __src, __n, +13943: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); +13943: return __wcslcpy_alias (__dest, __src, __n); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) wcslcat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +13943: +13943: { +13943: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +13943: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1) +13943: / sizeof (wchar_t)) +13943: || __n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))) +13943: return __wcslcat_chk (__dest, __src, __n, +13943: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); +13943: return __wcslcat_alias (__dest, __src, __n); +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__s, 2 > 1); +13943: if (__sz != (size_t) -1 || 2 > 1) +13943: return __swprintf_chk (__s, __n, 2 - 1, +13943: __sz / sizeof (wchar_t), __fmt, __builtin_va_arg_pack ()); +13943: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); +13943: } +13943: # 205 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__s, 2 > 1); +13943: if (__sz != (size_t) -1 || 2 > 1) +13943: return __vswprintf_chk (__s, __n, 2 - 1, +13943: __sz / sizeof (wchar_t), __fmt, __ap); +13943: return __vswprintf_alias (__s, __n, __fmt, __ap); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: wprintf (const wchar_t *__restrict __fmt, ...) +13943: { +13943: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) +13943: { +13943: return __fwprintf_chk (__stream, 2 - 1, __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) +13943: { +13943: return __vwprintf_chk (2 - 1, __fmt, __ap); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: vfwprintf (__FILE *__restrict __stream, +13943: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) +13943: { +13943: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * +13943: fgetws (wchar_t * __restrict __s, int __n, +13943: __FILE *__restrict __stream) +13943: +13943: +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__s, 2 > 1); +13943: 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))))))) +13943: return __fgetws_alias (__s, __n, __stream); +13943: +13943: 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))))) +13943: return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); +13943: +13943: return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * +13943: fgetws_unlocked (wchar_t * __restrict __s, +13943: int __n, __FILE *__restrict __stream) +13943: +13943: +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__s, 2 > 1); +13943: 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))))))) +13943: return __fgetws_unlocked_alias (__s, __n, __stream); +13943: +13943: 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))))) +13943: return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, +13943: __stream); +13943: +13943: return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t +13943: __attribute__ ((__leaf__)) wcrtomb (char * __restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) +13943: +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 +13943: && 16 > __builtin_object_size (__s, 2 > 1)) +13943: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); +13943: return __wcrtomb_alias (__s, __wchar, __ps); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsrtowcs_chk (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) wcsrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) +13943: +13943: ; +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) wcsnrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) +13943: +13943: ; +13943: } +13943: # 1071 "/usr/include/wchar.h" 2 3 4 +13943: +13943: +13943: } +13943: # 45 "/usr/include/c++/14/cwchar" 2 3 +13943: # 62 "/usr/include/c++/14/cwchar" 3 +13943: namespace std +13943: { +13943: using ::mbstate_t; +13943: } +13943: # 135 "/usr/include/c++/14/cwchar" 3 +13943: extern "C++" +13943: { +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: using ::wint_t; +13943: +13943: using ::btowc; +13943: using ::fgetwc; +13943: using ::fgetws; +13943: using ::fputwc; +13943: using ::fputws; +13943: using ::fwide; +13943: using ::fwprintf; +13943: using ::fwscanf; +13943: using ::getwc; +13943: using ::getwchar; +13943: using ::mbrlen; +13943: using ::mbrtowc; +13943: using ::mbsinit; +13943: using ::mbsrtowcs; +13943: using ::putwc; +13943: using ::putwchar; +13943: +13943: using ::swprintf; +13943: +13943: using ::swscanf; +13943: using ::ungetwc; +13943: using ::vfwprintf; +13943: +13943: using ::vfwscanf; +13943: +13943: +13943: using ::vswprintf; +13943: +13943: +13943: using ::vswscanf; +13943: +13943: using ::vwprintf; +13943: +13943: using ::vwscanf; +13943: +13943: using ::wcrtomb; +13943: using ::wcscat; +13943: using ::wcscmp; +13943: using ::wcscoll; +13943: using ::wcscpy; +13943: using ::wcscspn; +13943: using ::wcsftime; +13943: using ::wcslen; +13943: using ::wcsncat; +13943: using ::wcsncmp; +13943: using ::wcsncpy; +13943: using ::wcsrtombs; +13943: using ::wcsspn; +13943: using ::wcstod; +13943: +13943: using ::wcstof; +13943: +13943: using ::wcstok; +13943: using ::wcstol; +13943: using ::wcstoul; +13943: using ::wcsxfrm; +13943: using ::wctob; +13943: using ::wmemcmp; +13943: using ::wmemcpy; +13943: using ::wmemmove; +13943: using ::wmemset; +13943: using ::wprintf; +13943: using ::wscanf; +13943: using ::wcschr; +13943: using ::wcspbrk; +13943: using ::wcsrchr; +13943: using ::wcsstr; +13943: using ::wmemchr; +13943: # 234 "/usr/include/c++/14/cwchar" 3 +13943: +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace __gnu_cxx +13943: { +13943: +13943: +13943: +13943: +13943: +13943: using ::wcstold; +13943: # 260 "/usr/include/c++/14/cwchar" 3 +13943: using ::wcstoll; +13943: using ::wcstoull; +13943: +13943: } +13943: +13943: namespace std +13943: { +13943: using ::__gnu_cxx::wcstold; +13943: using ::__gnu_cxx::wcstoll; +13943: using ::__gnu_cxx::wcstoull; +13943: } +13943: # 280 "/usr/include/c++/14/cwchar" 3 +13943: namespace std +13943: { +13943: +13943: using std::wcstof; +13943: +13943: +13943: using std::vfwscanf; +13943: +13943: +13943: using std::vswscanf; +13943: +13943: +13943: using std::vwscanf; +13943: +13943: +13943: +13943: using std::wcstold; +13943: using std::wcstoll; +13943: using std::wcstoull; +13943: +13943: } +13943: # 41 "/usr/include/c++/14/bits/postypes.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 62 "/usr/include/c++/14/bits/postypes.h" 3 +13943: typedef long long int streamoff; +13943: +13943: +13943: +13943: +13943: +13943: typedef ptrdiff_t streamsize; +13943: # 81 "/usr/include/c++/14/bits/postypes.h" 3 +13943: template +13943: class fpos +13943: { +13943: private: +13943: streamoff _M_off; +13943: _StateT _M_state; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: fpos() +13943: : _M_off(0), _M_state() { } +13943: # 103 "/usr/include/c++/14/bits/postypes.h" 3 +13943: fpos(streamoff __off) +13943: : _M_off(__off), _M_state() { } +13943: +13943: +13943: fpos(const fpos&) = default; +13943: fpos& operator=(const fpos&) = default; +13943: ~fpos() = default; +13943: +13943: +13943: +13943: operator streamoff() const { return _M_off; } +13943: +13943: +13943: void +13943: state(_StateT __st) +13943: { _M_state = __st; } +13943: +13943: +13943: _StateT +13943: state() const +13943: { return _M_state; } +13943: +13943: +13943: +13943: +13943: +13943: fpos& +13943: operator+=(streamoff __off) +13943: { +13943: _M_off += __off; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: fpos& +13943: operator-=(streamoff __off) +13943: { +13943: _M_off -= __off; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: fpos +13943: operator+(streamoff __off) const +13943: { +13943: fpos __pos(*this); +13943: __pos += __off; +13943: return __pos; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: fpos +13943: operator-(streamoff __off) const +13943: { +13943: fpos __pos(*this); +13943: __pos -= __off; +13943: return __pos; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: streamoff +13943: operator-(const fpos& __other) const +13943: { return _M_off - __other._M_off; } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) +13943: { return streamoff(__lhs) == streamoff(__rhs); } +13943: +13943: template +13943: inline bool +13943: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) +13943: { return streamoff(__lhs) != streamoff(__rhs); } +13943: +13943: +13943: +13943: +13943: +13943: typedef fpos streampos; +13943: +13943: typedef fpos wstreampos; +13943: # 215 "/usr/include/c++/14/bits/postypes.h" 3 +13943: typedef fpos u16streampos; +13943: +13943: typedef fpos u32streampos; +13943: +13943: +13943: +13943: } +13943: # 43 "/usr/include/c++/14/iosfwd" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 76 "/usr/include/c++/14/iosfwd" 3 +13943: class ios_base; +13943: +13943: template > +13943: class basic_ios; +13943: +13943: template > +13943: class basic_streambuf; +13943: +13943: template > +13943: class basic_istream; +13943: +13943: template > +13943: class basic_ostream; +13943: +13943: template > +13943: class basic_iostream; +13943: +13943: +13943: namespace __cxx11 { +13943: +13943: template, +13943: typename _Alloc = allocator<_CharT> > +13943: class basic_stringbuf; +13943: +13943: template, +13943: typename _Alloc = allocator<_CharT> > +13943: class basic_istringstream; +13943: +13943: template, +13943: typename _Alloc = allocator<_CharT> > +13943: class basic_ostringstream; +13943: +13943: template, +13943: typename _Alloc = allocator<_CharT> > +13943: class basic_stringstream; +13943: +13943: } +13943: +13943: template > +13943: class basic_filebuf; +13943: +13943: template > +13943: class basic_ifstream; +13943: +13943: template > +13943: class basic_ofstream; +13943: +13943: template > +13943: class basic_fstream; +13943: +13943: template > +13943: class istreambuf_iterator; +13943: +13943: template > +13943: class ostreambuf_iterator; +13943: +13943: +13943: +13943: typedef basic_ios ios; +13943: +13943: +13943: typedef basic_streambuf streambuf; +13943: +13943: +13943: typedef basic_istream istream; +13943: +13943: +13943: typedef basic_ostream ostream; +13943: +13943: +13943: typedef basic_iostream iostream; +13943: +13943: +13943: typedef basic_stringbuf stringbuf; +13943: +13943: +13943: typedef basic_istringstream istringstream; +13943: +13943: +13943: typedef basic_ostringstream ostringstream; +13943: +13943: +13943: typedef basic_stringstream stringstream; +13943: +13943: +13943: typedef basic_filebuf filebuf; +13943: +13943: +13943: typedef basic_ifstream ifstream; +13943: +13943: +13943: typedef basic_ofstream ofstream; +13943: +13943: +13943: typedef basic_fstream fstream; +13943: +13943: +13943: +13943: typedef basic_ios wios; +13943: +13943: +13943: typedef basic_streambuf wstreambuf; +13943: +13943: +13943: typedef basic_istream wistream; +13943: +13943: +13943: typedef basic_ostream wostream; +13943: +13943: +13943: typedef basic_iostream wiostream; +13943: +13943: +13943: typedef basic_stringbuf wstringbuf; +13943: +13943: +13943: typedef basic_istringstream wistringstream; +13943: +13943: +13943: typedef basic_ostringstream wostringstream; +13943: +13943: +13943: typedef basic_stringstream wstringstream; +13943: +13943: +13943: typedef basic_filebuf wfilebuf; +13943: +13943: +13943: typedef basic_ifstream wifstream; +13943: +13943: +13943: typedef basic_ofstream wofstream; +13943: +13943: +13943: typedef basic_fstream wfstream; +13943: # 255 "/usr/include/c++/14/iosfwd" 3 +13943: +13943: } +13943: # 53 "/usr/include/c++/14/bits/shared_ptr.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/shared_ptr_base.h" 1 3 +13943: # 53 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: # 1 "/usr/include/c++/14/bits/allocated_ptr.h" 1 3 +13943: # 40 "/usr/include/c++/14/bits/allocated_ptr.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: struct __allocated_ptr +13943: { +13943: using pointer = typename allocator_traits<_Alloc>::pointer; +13943: using value_type = typename allocator_traits<_Alloc>::value_type; +13943: +13943: +13943: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept +13943: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) +13943: { } +13943: +13943: +13943: template>> +13943: __allocated_ptr(_Alloc& __a, _Ptr __ptr) +13943: : _M_alloc(std::__addressof(__a)), +13943: _M_ptr(pointer_traits::pointer_to(*__ptr)) +13943: { } +13943: +13943: +13943: __allocated_ptr(__allocated_ptr&& __gd) noexcept +13943: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) +13943: { __gd._M_ptr = nullptr; } +13943: +13943: +13943: ~__allocated_ptr() +13943: { +13943: if (_M_ptr != nullptr) +13943: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); +13943: } +13943: +13943: +13943: __allocated_ptr& +13943: operator=(std::nullptr_t) noexcept +13943: { +13943: _M_ptr = nullptr; +13943: return *this; +13943: } +13943: +13943: +13943: value_type* get() { return std::__to_address(_M_ptr); } +13943: +13943: private: +13943: _Alloc* _M_alloc; +13943: pointer _M_ptr; +13943: }; +13943: +13943: +13943: template +13943: __allocated_ptr<_Alloc> +13943: __allocate_guarded(_Alloc& __a) +13943: { +13943: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; +13943: } +13943: +13943: +13943: +13943: } +13943: # 54 "/usr/include/c++/14/bits/shared_ptr_base.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/ext/atomicity.h" 1 3 +13943: # 32 "/usr/include/c++/14/ext/atomicity.h" 3 +13943: +13943: # 33 "/usr/include/c++/14/ext/atomicity.h" 3 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 1 3 +13943: # 30 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 3 +13943: #pragma GCC visibility push(default) +13943: # 157 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 3 +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 1 3 +13943: # 35 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +13943: # 1 "/usr/include/pthread.h" 1 3 4 +13943: # 22 "/usr/include/pthread.h" 3 4 +13943: # 1 "/usr/include/sched.h" 1 3 4 +13943: # 29 "/usr/include/sched.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 30 "/usr/include/sched.h" 2 3 4 +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/time_t.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __time64_t time_t; +13943: # 32 "/usr/include/sched.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 1 3 4 +13943: # 35 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/endianness.h" 1 3 4 +13943: # 36 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 2 3 4 +13943: # 7 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: struct timespec +13943: { +13943: +13943: __time64_t tv_sec; +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 3 4 +13943: long int tv_nsec; +13943: int: 32; +13943: +13943: +13943: }; +13943: # 33 "/usr/include/sched.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: typedef __pid_t pid_t; +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 1 3 4 +13943: # 80 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 3 4 +13943: struct sched_param +13943: { +13943: int sched_priority; +13943: }; +13943: # 81 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 2 3 4 +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: extern int clone (int (*__fn) (void *__arg), void *__child_stack, +13943: int __flags, void *__arg, ...) noexcept (true); +13943: +13943: +13943: extern int unshare (int __flags) noexcept (true); +13943: +13943: +13943: extern int sched_getcpu (void) noexcept (true); +13943: +13943: +13943: extern int getcpu (unsigned int *, unsigned int *) noexcept (true); +13943: +13943: +13943: extern int setns (int __fd, int __nstype) noexcept (true); +13943: +13943: +13943: } +13943: # 44 "/usr/include/sched.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 1 3 4 +13943: # 32 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 +13943: typedef unsigned long int __cpu_mask; +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef struct +13943: { +13943: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; +13943: } cpu_set_t; +13943: # 115 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 +13943: extern "C" { +13943: +13943: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) +13943: noexcept (true); +13943: extern cpu_set_t *__sched_cpualloc (size_t __count) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: extern void __sched_cpufree (cpu_set_t *__set) noexcept (true); +13943: +13943: } +13943: # 45 "/usr/include/sched.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C" { +13943: +13943: +13943: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) +13943: noexcept (true); +13943: +13943: +13943: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) noexcept (true); +13943: +13943: +13943: extern int sched_setscheduler (__pid_t __pid, int __policy, +13943: const struct sched_param *__param) noexcept (true); +13943: +13943: +13943: extern int sched_getscheduler (__pid_t __pid) noexcept (true); +13943: +13943: +13943: extern int sched_yield (void) noexcept (true); +13943: +13943: +13943: extern int sched_get_priority_max (int __algorithm) noexcept (true); +13943: +13943: +13943: extern int sched_get_priority_min (int __algorithm) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) noexcept (true) __asm__ ("" "__sched_rr_get_interval64") +13943: +13943: ; +13943: # 130 "/usr/include/sched.h" 3 4 +13943: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, +13943: const cpu_set_t *__cpuset) noexcept (true); +13943: +13943: +13943: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, +13943: cpu_set_t *__cpuset) noexcept (true); +13943: +13943: +13943: } +13943: # 23 "/usr/include/pthread.h" 2 3 4 +13943: # 1 "/usr/include/time.h" 1 3 4 +13943: # 29 "/usr/include/time.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 30 "/usr/include/time.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4 +13943: # 73 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 1 3 4 +13943: # 22 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct timeval +13943: { +13943: +13943: __time64_t tv_sec; +13943: __suseconds64_t tv_usec; +13943: +13943: +13943: +13943: +13943: }; +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 2 3 4 +13943: +13943: +13943: +13943: struct timex +13943: { +13943: +13943: unsigned int modes; +13943: int :32; +13943: long long offset; +13943: long long freq; +13943: long long maxerror; +13943: long long esterror; +13943: int status; +13943: int :32; +13943: long long constant; +13943: long long precision; +13943: long long tolerance; +13943: struct timeval time; +13943: long long tick; +13943: long long ppsfreq; +13943: long long jitter; +13943: int shift; +13943: int :32; +13943: long long stabil; +13943: long long jitcnt; +13943: long long calcnt; +13943: long long errcnt; +13943: long long stbcnt; +13943: +13943: int tai; +13943: +13943: int :32; int :32; int :32; int :32; +13943: int :32; int :32; int :32; int :32; +13943: int :32; int :32; int :32; +13943: # 85 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 +13943: }; +13943: # 74 "/usr/include/arm-linux-gnueabihf/bits/time.h" 2 3 4 +13943: +13943: extern "C" { +13943: +13943: +13943: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __asm__ ("" "__clock_adjtime64") +13943: +13943: __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 34 "/usr/include/time.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __clock_t clock_t; +13943: # 38 "/usr/include/time.h" 2 3 4 +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct tm +13943: { +13943: int tm_sec; +13943: int tm_min; +13943: int tm_hour; +13943: int tm_mday; +13943: int tm_mon; +13943: int tm_year; +13943: int tm_wday; +13943: int tm_yday; +13943: int tm_isdst; +13943: +13943: +13943: long int tm_gmtoff; +13943: const char *tm_zone; +13943: +13943: +13943: +13943: +13943: }; +13943: # 40 "/usr/include/time.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __clockid_t clockid_t; +13943: # 47 "/usr/include/time.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __timer_t timer_t; +13943: # 48 "/usr/include/time.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct itimerspec +13943: { +13943: struct timespec it_interval; +13943: struct timespec it_value; +13943: }; +13943: # 49 "/usr/include/time.h" 2 3 4 +13943: struct sigevent; +13943: # 68 "/usr/include/time.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: extern clock_t clock (void) noexcept (true); +13943: # 85 "/usr/include/time.h" 3 4 +13943: extern time_t time (time_t *__timer) noexcept (true) __asm__ ("" "__time64"); +13943: extern double difftime (time_t __time1, time_t __time0) noexcept (true) __asm__ ("" "__difftime64") +13943: ; +13943: extern time_t mktime (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); +13943: # 99 "/usr/include/time.h" 3 4 +13943: extern size_t strftime (char *__restrict __s, size_t __maxsize, +13943: const char *__restrict __format, +13943: const struct tm *__restrict __tp) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3, 4))); +13943: +13943: +13943: +13943: +13943: extern char *strptime (const char *__restrict __s, +13943: const char *__restrict __fmt, struct tm *__tp) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, +13943: const char *__restrict __format, +13943: const struct tm *__restrict __tp, +13943: locale_t __loc) noexcept (true); +13943: +13943: +13943: +13943: extern char *strptime_l (const char *__restrict __s, +13943: const char *__restrict __fmt, struct tm *__tp, +13943: locale_t __loc) noexcept (true); +13943: # 140 "/usr/include/time.h" 3 4 +13943: extern struct tm*gmtime (const time_t *__timer) noexcept (true) __asm__ ("" "__gmtime64"); +13943: extern struct tm *localtime (const time_t *__timer) noexcept (true) __asm__ ("" "__localtime64") +13943: ; +13943: # 163 "/usr/include/time.h" 3 4 +13943: extern struct tm*gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__gmtime64_r") +13943: +13943: ; +13943: +13943: extern struct tm*localtime_r (const time_t *__restrict __t, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__localtime64_r") +13943: +13943: ; +13943: # 179 "/usr/include/time.h" 3 4 +13943: extern char *asctime (const struct tm *__tp) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *ctime (const time_t *__timer) noexcept (true) __asm__ ("" "__ctime64"); +13943: # 197 "/usr/include/time.h" 3 4 +13943: extern char *asctime_r (const struct tm *__restrict __tp, +13943: char *__restrict __buf) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) noexcept (true) __asm__ ("" "__ctime64_r") +13943: ; +13943: # 217 "/usr/include/time.h" 3 4 +13943: extern char *__tzname[2]; +13943: extern int __daylight; +13943: extern long int __timezone; +13943: +13943: +13943: +13943: +13943: extern char *tzname[2]; +13943: +13943: +13943: +13943: extern void tzset (void) noexcept (true); +13943: +13943: +13943: +13943: extern int daylight; +13943: extern long int timezone; +13943: # 249 "/usr/include/time.h" 3 4 +13943: extern time_t timegm (struct tm *__tp) noexcept (true) __asm__ ("" "__timegm64"); +13943: # 266 "/usr/include/time.h" 3 4 +13943: extern time_t timelocal (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); +13943: +13943: +13943: +13943: +13943: extern int dysize (int __year) noexcept (true) __attribute__ ((__const__)); +13943: # 296 "/usr/include/time.h" 3 4 +13943: extern int nanosleep (const struct timespec *__requested_time, struct timespec *__remaining) __asm__ ("" "__nanosleep64") +13943: +13943: ; +13943: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) noexcept (true) __asm__ ("" "__clock_getres64") +13943: +13943: ; +13943: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_gettime64") +13943: +13943: __attribute__ ((__nonnull__ (2))); +13943: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_settime64") +13943: +13943: __attribute__ ((__nonnull__ (2))); +13943: # 328 "/usr/include/time.h" 3 4 +13943: extern int clock_nanosleep (clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem) __asm__ ("" "__clock_nanosleep_time64") +13943: +13943: +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int timer_create (clockid_t __clock_id, +13943: struct sigevent *__restrict __evp, +13943: timer_t *__restrict __timerid) noexcept (true); +13943: +13943: +13943: extern int timer_delete (timer_t __timerid) noexcept (true); +13943: # 361 "/usr/include/time.h" 3 4 +13943: extern int timer_settime (timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) noexcept (true) __asm__ ("" "__timer_settime64") +13943: +13943: +13943: ; +13943: +13943: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) noexcept (true) __asm__ ("" "__timer_gettime64") +13943: +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int timer_getoverrun (timer_t __timerid) noexcept (true); +13943: # 387 "/usr/include/time.h" 3 4 +13943: extern int timespec_get (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_get64") +13943: __attribute__ ((__nonnull__ (1))); +13943: # 403 "/usr/include/time.h" 3 4 +13943: extern int timespec_getres (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_getres64") +13943: +13943: ; +13943: # 425 "/usr/include/time.h" 3 4 +13943: extern int getdate_err; +13943: # 434 "/usr/include/time.h" 3 4 +13943: extern struct tm *getdate (const char *__string); +13943: # 448 "/usr/include/time.h" 3 4 +13943: extern int getdate_r (const char *__restrict __string, +13943: struct tm *__restrict __resbufp); +13943: +13943: +13943: } +13943: # 24 "/usr/include/pthread.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 1 3 4 +13943: # 44 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 2 3 4 +13943: # 45 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 1 3 4 +13943: # 25 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 3 4 +13943: typedef union +13943: { +13943: __extension__ unsigned long long int __value64; +13943: struct +13943: { +13943: unsigned int __low; +13943: unsigned int __high; +13943: } __value32; +13943: } __atomic_wide_counter; +13943: # 47 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: typedef struct __pthread_internal_list +13943: { +13943: struct __pthread_internal_list *__prev; +13943: struct __pthread_internal_list *__next; +13943: } __pthread_list_t; +13943: +13943: typedef struct __pthread_internal_slist +13943: { +13943: struct __pthread_internal_slist *__next; +13943: } __pthread_slist_t; +13943: # 76 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 +13943: struct __pthread_mutex_s +13943: { +13943: int __lock ; +13943: unsigned int __count; +13943: int __owner; +13943: # 58 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 +13943: int __kind; +13943: +13943: unsigned int __nusers; +13943: +13943: +13943: +13943: +13943: +13943: +13943: __extension__ union +13943: { +13943: int __spins; +13943: __pthread_slist_t __list; +13943: }; +13943: +13943: +13943: }; +13943: # 77 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +13943: # 89 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 1 3 4 +13943: # 29 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 +13943: struct __pthread_rwlock_arch_t +13943: { +13943: unsigned int __readers; +13943: unsigned int __writers; +13943: unsigned int __wrphase_futex; +13943: unsigned int __writers_futex; +13943: unsigned int __pad3; +13943: unsigned int __pad4; +13943: # 45 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 +13943: unsigned char __flags; +13943: unsigned char __shared; +13943: unsigned char __pad1; +13943: unsigned char __pad2; +13943: +13943: int __cur_writer; +13943: }; +13943: # 90 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: struct __pthread_cond_s +13943: { +13943: __atomic_wide_counter __wseq; +13943: __atomic_wide_counter __g1_start; +13943: unsigned int __g_refs[2] ; +13943: unsigned int __g_size[2]; +13943: unsigned int __g1_orig_size; +13943: unsigned int __wrefs; +13943: unsigned int __g_signals[2]; +13943: }; +13943: +13943: typedef unsigned int __tss_t; +13943: typedef unsigned long int __thrd_t; +13943: +13943: typedef struct +13943: { +13943: int __data ; +13943: } __once_flag; +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 2 3 4 +13943: +13943: +13943: +13943: typedef unsigned long int pthread_t; +13943: +13943: +13943: +13943: +13943: typedef union +13943: { +13943: char __size[4]; +13943: int __align; +13943: } pthread_mutexattr_t; +13943: +13943: +13943: +13943: +13943: typedef union +13943: { +13943: char __size[4]; +13943: int __align; +13943: } pthread_condattr_t; +13943: +13943: +13943: +13943: typedef unsigned int pthread_key_t; +13943: +13943: +13943: +13943: typedef int pthread_once_t; +13943: +13943: +13943: union pthread_attr_t +13943: { +13943: char __size[36]; +13943: long int __align; +13943: }; +13943: +13943: typedef union pthread_attr_t pthread_attr_t; +13943: +13943: +13943: +13943: +13943: typedef union +13943: { +13943: struct __pthread_mutex_s __data; +13943: char __size[24]; +13943: long int __align; +13943: } pthread_mutex_t; +13943: +13943: +13943: typedef union +13943: { +13943: struct __pthread_cond_s __data; +13943: char __size[48]; +13943: __extension__ long long int __align; +13943: } pthread_cond_t; +13943: +13943: +13943: +13943: +13943: +13943: typedef union +13943: { +13943: struct __pthread_rwlock_arch_t __data; +13943: char __size[32]; +13943: long int __align; +13943: } pthread_rwlock_t; +13943: +13943: typedef union +13943: { +13943: char __size[8]; +13943: long int __align; +13943: } pthread_rwlockattr_t; +13943: +13943: +13943: +13943: +13943: +13943: typedef volatile int pthread_spinlock_t; +13943: +13943: +13943: +13943: +13943: typedef union +13943: { +13943: char __size[20]; +13943: long int __align; +13943: } pthread_barrier_t; +13943: +13943: typedef union +13943: { +13943: char __size[4]; +13943: int __align; +13943: } pthread_barrierattr_t; +13943: # 27 "/usr/include/pthread.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 1 3 4 +13943: # 33 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4 +13943: typedef int __jmp_buf[64] __attribute__((__aligned__ (8))); +13943: # 28 "/usr/include/pthread.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 29 "/usr/include/pthread.h" 2 3 4 +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: typedef struct +13943: { +13943: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; +13943: } __sigset_t; +13943: # 31 "/usr/include/pthread.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 1 3 4 +13943: # 26 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 3 4 +13943: struct __jmp_buf_tag +13943: { +13943: +13943: +13943: +13943: +13943: __jmp_buf __jmpbuf; +13943: int __mask_was_saved; +13943: __sigset_t __saved_mask; +13943: }; +13943: # 32 "/usr/include/pthread.h" 2 3 4 +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 3 4 +13943: extern "C" { +13943: extern long int __sysconf (int __name) noexcept (true); +13943: } +13943: # 34 "/usr/include/pthread.h" 2 3 4 +13943: +13943: +13943: +13943: enum +13943: { +13943: PTHREAD_CREATE_JOINABLE, +13943: +13943: PTHREAD_CREATE_DETACHED +13943: +13943: }; +13943: +13943: +13943: +13943: enum +13943: { +13943: PTHREAD_MUTEX_TIMED_NP, +13943: PTHREAD_MUTEX_RECURSIVE_NP, +13943: PTHREAD_MUTEX_ERRORCHECK_NP, +13943: PTHREAD_MUTEX_ADAPTIVE_NP +13943: +13943: , +13943: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, +13943: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, +13943: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, +13943: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL +13943: +13943: +13943: +13943: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: enum +13943: { +13943: PTHREAD_MUTEX_STALLED, +13943: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, +13943: PTHREAD_MUTEX_ROBUST, +13943: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: enum +13943: { +13943: PTHREAD_PRIO_NONE, +13943: PTHREAD_PRIO_INHERIT, +13943: PTHREAD_PRIO_PROTECT +13943: }; +13943: # 104 "/usr/include/pthread.h" 3 4 +13943: enum +13943: { +13943: PTHREAD_RWLOCK_PREFER_READER_NP, +13943: PTHREAD_RWLOCK_PREFER_WRITER_NP, +13943: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, +13943: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP +13943: }; +13943: # 124 "/usr/include/pthread.h" 3 4 +13943: enum +13943: { +13943: PTHREAD_INHERIT_SCHED, +13943: +13943: PTHREAD_EXPLICIT_SCHED +13943: +13943: }; +13943: +13943: +13943: +13943: enum +13943: { +13943: PTHREAD_SCOPE_SYSTEM, +13943: +13943: PTHREAD_SCOPE_PROCESS +13943: +13943: }; +13943: +13943: +13943: +13943: enum +13943: { +13943: PTHREAD_PROCESS_PRIVATE, +13943: +13943: PTHREAD_PROCESS_SHARED +13943: +13943: }; +13943: # 159 "/usr/include/pthread.h" 3 4 +13943: struct _pthread_cleanup_buffer +13943: { +13943: void (*__routine) (void *); +13943: void *__arg; +13943: int __canceltype; +13943: struct _pthread_cleanup_buffer *__prev; +13943: }; +13943: +13943: +13943: enum +13943: { +13943: PTHREAD_CANCEL_ENABLE, +13943: +13943: PTHREAD_CANCEL_DISABLE +13943: +13943: }; +13943: enum +13943: { +13943: PTHREAD_CANCEL_DEFERRED, +13943: +13943: PTHREAD_CANCEL_ASYNCHRONOUS +13943: +13943: }; +13943: # 197 "/usr/include/pthread.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: extern int pthread_create (pthread_t *__restrict __newthread, +13943: const pthread_attr_t *__restrict __attr, +13943: void *(*__start_routine) (void *), +13943: void *__restrict __arg) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: +13943: +13943: +13943: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_join (pthread_t __th, void **__thread_return); +13943: +13943: +13943: +13943: +13943: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) noexcept (true); +13943: # 248 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, const struct timespec *__abstime) __asm__ ("" "__pthread_timedjoin_np64") +13943: +13943: +13943: ; +13943: +13943: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, clockid_t __clockid, const struct timespec *__abstime) __asm__ ("" "__pthread_clockjoin_np64") +13943: +13943: +13943: +13943: ; +13943: # 269 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_detach (pthread_t __th) noexcept (true); +13943: +13943: +13943: +13943: extern pthread_t pthread_self (void) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) +13943: noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_attr_init (pthread_attr_t *__attr) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_attr_destroy (pthread_attr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, +13943: int *__detachstate) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, +13943: int __detachstate) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, +13943: size_t *__guardsize) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, +13943: size_t __guardsize) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, +13943: struct sched_param *__restrict __param) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, +13943: const struct sched_param *__restrict +13943: __param) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict +13943: __attr, int *__restrict __policy) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict +13943: __attr, int *__restrict __inherit) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, +13943: int __inherit) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, +13943: int *__restrict __scope) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict +13943: __attr, void **__restrict __stackaddr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, +13943: void *__stackaddr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); +13943: +13943: +13943: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict +13943: __attr, size_t *__restrict __stacksize) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, +13943: size_t __stacksize) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, +13943: void **__restrict __stackaddr, +13943: size_t *__restrict __stacksize) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); +13943: +13943: +13943: +13943: +13943: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, +13943: size_t __stacksize) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, +13943: size_t __cpusetsize, +13943: const cpu_set_t *__cpuset) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: +13943: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, +13943: size_t __cpusetsize, +13943: cpu_set_t *__cpuset) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: extern int pthread_getattr_default_np (pthread_attr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, +13943: const __sigset_t *sigmask); +13943: +13943: +13943: +13943: +13943: extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, +13943: __sigset_t *sigmask); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, +13943: const struct sched_param *__param) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: +13943: +13943: extern int pthread_getschedparam (pthread_t __target_thread, +13943: int *__restrict __policy, +13943: struct sched_param *__restrict __param) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +13943: +13943: +13943: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, +13943: size_t __buflen) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_getconcurrency (void) noexcept (true); +13943: +13943: +13943: extern int pthread_setconcurrency (int __level) noexcept (true); +13943: +13943: +13943: +13943: extern int pthread_yield (void) noexcept (true); +13943: +13943: extern int pthread_yield (void) noexcept (true) __asm__ ("" "sched_yield") +13943: __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, +13943: const cpu_set_t *__cpuset) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: +13943: +13943: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, +13943: cpu_set_t *__cpuset) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: # 509 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_once (pthread_once_t *__once_control, +13943: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); +13943: # 521 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_setcancelstate (int __state, int *__oldstate); +13943: +13943: +13943: +13943: extern int pthread_setcanceltype (int __type, int *__oldtype); +13943: +13943: +13943: extern int pthread_cancel (pthread_t __th); +13943: +13943: +13943: +13943: +13943: extern void pthread_testcancel (void); +13943: +13943: +13943: +13943: +13943: struct __cancel_jmp_buf_tag +13943: { +13943: __jmp_buf __cancel_jmp_buf; +13943: int __mask_was_saved; +13943: }; +13943: +13943: typedef struct +13943: { +13943: struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; +13943: void *__pad[4]; +13943: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); +13943: # 557 "/usr/include/pthread.h" 3 4 +13943: struct __pthread_cleanup_frame +13943: { +13943: void (*__cancel_routine) (void *); +13943: void *__cancel_arg; +13943: int __do_it; +13943: int __cancel_type; +13943: }; +13943: +13943: +13943: +13943: +13943: class __pthread_cleanup_class +13943: { +13943: void (*__cancel_routine) (void *); +13943: void *__cancel_arg; +13943: int __do_it; +13943: int __cancel_type; +13943: +13943: public: +13943: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) +13943: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } +13943: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } +13943: void __setdoit (int __newval) { __do_it = __newval; } +13943: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, +13943: &__cancel_type); } +13943: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } +13943: }; +13943: # 766 "/usr/include/pthread.h" 3 4 +13943: extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) noexcept (true) __asm__ ("" "__sigsetjmp") +13943: +13943: +13943: __attribute__ ((__returns_twice__)); +13943: # 781 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_mutex_init (pthread_mutex_t *__mutex, +13943: const pthread_mutexattr_t *__mutexattr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 805 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_timedlock64") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 2))); +13943: # 823 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_clocklock64") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * +13943: __restrict __mutex, +13943: int *__restrict __prioceiling) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, +13943: int __prioceiling, +13943: int *__restrict __old_ceiling) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: +13943: +13943: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutex_consistent_np (pthread_mutex_t *) noexcept (true) __asm__ ("" "pthread_mutex_consistent") +13943: __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) +13943: ; +13943: # 874 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * +13943: __restrict __attr, +13943: int *__restrict __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, +13943: int __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict +13943: __attr, int *__restrict __kind) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * +13943: __restrict __attr, +13943: int *__restrict __protocol) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, +13943: int __protocol) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * +13943: __restrict __attr, +13943: int *__restrict __prioceiling) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, +13943: int __prioceiling) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, +13943: int *__robustness) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) noexcept (true) __asm__ ("" "pthread_mutexattr_getrobust") +13943: +13943: __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, +13943: int __robustness) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) noexcept (true) __asm__ ("" "pthread_mutexattr_setrobust") +13943: +13943: __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) +13943: ; +13943: # 967 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, +13943: const pthread_rwlockattr_t *__restrict +13943: __attr) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 991 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedrdlock64") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 2))); +13943: # 1010 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockrdlock64") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 1038 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedwrlock64") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 2))); +13943: # 1058 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockwrlock64") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * +13943: __restrict __attr, +13943: int *__restrict __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, +13943: int __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * +13943: __restrict __attr, +13943: int *__restrict __pref) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, +13943: int __pref) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, +13943: const pthread_condattr_t *__restrict __cond_attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_cond_destroy (pthread_cond_t *__cond) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_cond_signal (pthread_cond_t *__cond) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_cond_broadcast (pthread_cond_t *__cond) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, +13943: pthread_mutex_t *__restrict __mutex) +13943: __attribute__ ((__nonnull__ (1, 2))); +13943: # 1151 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __asm__ ("" "__pthread_cond_timedwait64") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 2, 3))); +13943: # 1178 "/usr/include/pthread.h" 3 4 +13943: 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") +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 2, 4))); +13943: # 1194 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_condattr_init (pthread_condattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_condattr_getpshared (const pthread_condattr_t * +13943: __restrict __attr, +13943: int *__restrict __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, +13943: int __pshared) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_condattr_getclock (const pthread_condattr_t * +13943: __restrict __attr, +13943: __clockid_t *__restrict __clock_id) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, +13943: __clockid_t __clock_id) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 1230 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_spin_lock (pthread_spinlock_t *__lock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, +13943: const pthread_barrierattr_t *__restrict +13943: __attr, unsigned int __count) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * +13943: __restrict __attr, +13943: int *__restrict __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, +13943: int __pshared) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 1297 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_key_create (pthread_key_t *__key, +13943: void (*__destr_function) (void *)) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int pthread_key_delete (pthread_key_t __key) noexcept (true); +13943: +13943: +13943: extern void *pthread_getspecific (pthread_key_t __key) noexcept (true); +13943: +13943: +13943: extern int pthread_setspecific (pthread_key_t __key, +13943: const void *__pointer) +13943: noexcept (true) __attribute__ ((__access__ (__none__, 2))); +13943: +13943: +13943: +13943: +13943: extern int pthread_getcpuclockid (pthread_t __thread_id, +13943: __clockid_t *__clock_id) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: # 1332 "/usr/include/pthread.h" 3 4 +13943: extern int pthread_atfork (void (*__prepare) (void), +13943: void (*__parent) (void), +13943: void (*__child) (void)) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) noexcept (true) +13943: { +13943: return __thread1 == __thread2; +13943: } +13943: +13943: +13943: } +13943: # 36 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 2 3 +13943: # 47 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +13943: typedef pthread_t __gthread_t; +13943: typedef pthread_key_t __gthread_key_t; +13943: typedef pthread_once_t __gthread_once_t; +13943: typedef pthread_mutex_t __gthread_mutex_t; +13943: +13943: +13943: +13943: typedef pthread_mutex_t __gthread_recursive_mutex_t; +13943: typedef pthread_cond_t __gthread_cond_t; +13943: typedef struct timespec __gthread_time_t; +13943: # 108 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 312 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +13943: static inline int +13943: __gthread_active_p (void) +13943: { +13943: return 1; +13943: } +13943: # 672 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +13943: static inline int +13943: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), +13943: void *__args) +13943: { +13943: return pthread_create (__threadid, __null, __func, __args); +13943: } +13943: +13943: static inline int +13943: __gthread_join (__gthread_t __threadid, void **__value_ptr) +13943: { +13943: return pthread_join (__threadid, __value_ptr); +13943: } +13943: +13943: static inline int +13943: __gthread_detach (__gthread_t __threadid) +13943: { +13943: return pthread_detach (__threadid); +13943: } +13943: +13943: static inline int +13943: __gthread_equal (__gthread_t __t1, __gthread_t __t2) +13943: { +13943: return pthread_equal (__t1, __t2); +13943: } +13943: +13943: static inline __gthread_t +13943: __gthread_self (void) +13943: { +13943: return pthread_self (); +13943: } +13943: +13943: static inline int +13943: __gthread_yield (void) +13943: { +13943: return sched_yield (); +13943: } +13943: +13943: static inline int +13943: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) +13943: { +13943: if (__gthread_active_p ()) +13943: return pthread_once (__once, __func); +13943: else +13943: return -1; +13943: } +13943: +13943: static inline int +13943: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +13943: { +13943: return pthread_key_create (__key, __dtor); +13943: } +13943: +13943: static inline int +13943: __gthread_key_delete (__gthread_key_t __key) +13943: { +13943: return pthread_key_delete (__key); +13943: } +13943: +13943: static inline void * +13943: __gthread_getspecific (__gthread_key_t __key) +13943: { +13943: return pthread_getspecific (__key); +13943: } +13943: +13943: static inline int +13943: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) +13943: { +13943: return pthread_setspecific (__key, __ptr); +13943: } +13943: +13943: static inline void +13943: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) +13943: { +13943: if (__gthread_active_p ()) +13943: pthread_mutex_init (__mutex, __null); +13943: } +13943: +13943: static inline int +13943: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) +13943: { +13943: if (__gthread_active_p ()) +13943: return pthread_mutex_destroy (__mutex); +13943: else +13943: return 0; +13943: } +13943: +13943: static inline int +13943: __gthread_mutex_lock (__gthread_mutex_t *__mutex) +13943: { +13943: if (__gthread_active_p ()) +13943: return pthread_mutex_lock (__mutex); +13943: else +13943: return 0; +13943: } +13943: +13943: static inline int +13943: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) +13943: { +13943: if (__gthread_active_p ()) +13943: return pthread_mutex_trylock (__mutex); +13943: else +13943: return 0; +13943: } +13943: +13943: +13943: static inline int +13943: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, +13943: const __gthread_time_t *__abs_timeout) +13943: { +13943: if (__gthread_active_p ()) +13943: return pthread_mutex_timedlock (__mutex, __abs_timeout); +13943: else +13943: return 0; +13943: } +13943: +13943: +13943: static inline int +13943: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) +13943: { +13943: if (__gthread_active_p ()) +13943: return pthread_mutex_unlock (__mutex); +13943: else +13943: return 0; +13943: } +13943: # 821 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +13943: static inline int +13943: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +13943: { +13943: return __gthread_mutex_lock (__mutex); +13943: } +13943: +13943: static inline int +13943: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +13943: { +13943: return __gthread_mutex_trylock (__mutex); +13943: } +13943: +13943: +13943: static inline int +13943: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, +13943: const __gthread_time_t *__abs_timeout) +13943: { +13943: return __gthread_mutex_timedlock (__mutex, __abs_timeout); +13943: } +13943: +13943: +13943: static inline int +13943: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +13943: { +13943: return __gthread_mutex_unlock (__mutex); +13943: } +13943: +13943: static inline int +13943: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +13943: { +13943: return __gthread_mutex_destroy (__mutex); +13943: } +13943: # 863 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +13943: static inline int +13943: __gthread_cond_broadcast (__gthread_cond_t *__cond) +13943: { +13943: return pthread_cond_broadcast (__cond); +13943: } +13943: +13943: static inline int +13943: __gthread_cond_signal (__gthread_cond_t *__cond) +13943: { +13943: return pthread_cond_signal (__cond); +13943: } +13943: +13943: static inline int +13943: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +13943: { +13943: return pthread_cond_wait (__cond, __mutex); +13943: } +13943: +13943: static inline int +13943: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, +13943: const __gthread_time_t *__abs_timeout) +13943: { +13943: return pthread_cond_timedwait (__cond, __mutex, __abs_timeout); +13943: } +13943: +13943: static inline int +13943: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, +13943: __gthread_recursive_mutex_t *__mutex) +13943: { +13943: return __gthread_cond_wait (__cond, __mutex); +13943: } +13943: +13943: static inline int +13943: __gthread_cond_destroy (__gthread_cond_t* __cond) +13943: { +13943: return pthread_cond_destroy (__cond); +13943: } +13943: # 158 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 2 3 +13943: +13943: +13943: #pragma GCC visibility pop +13943: # 36 "/usr/include/c++/14/ext/atomicity.h" 2 3 +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/atomic_word.h" 1 3 +13943: # 32 "/usr/include/arm-linux-gnueabihf/c++/14/bits/atomic_word.h" 3 +13943: typedef int _Atomic_word; +13943: # 37 "/usr/include/c++/14/ext/atomicity.h" 2 3 +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: extern char __libc_single_threaded; +13943: +13943: } +13943: # 39 "/usr/include/c++/14/ext/atomicity.h" 2 3 +13943: +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: inline bool +13943: __is_single_threaded() noexcept +13943: { +13943: +13943: +13943: +13943: return ::__libc_single_threaded; +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline _Atomic_word +13943: __attribute__((__always_inline__)) +13943: __exchange_and_add(volatile _Atomic_word* __mem, int __val) +13943: { return __atomic_fetch_add(__mem, __val, 4); } +13943: +13943: inline void +13943: __attribute__((__always_inline__)) +13943: __atomic_add(volatile _Atomic_word* __mem, int __val) +13943: { __atomic_fetch_add(__mem, __val, 4); } +13943: # 80 "/usr/include/c++/14/ext/atomicity.h" 3 +13943: inline _Atomic_word +13943: __attribute__((__always_inline__)) +13943: __exchange_and_add_single(_Atomic_word* __mem, int __val) +13943: { +13943: _Atomic_word __result = *__mem; +13943: *__mem += __val; +13943: return __result; +13943: } +13943: +13943: inline void +13943: __attribute__((__always_inline__)) +13943: __atomic_add_single(_Atomic_word* __mem, int __val) +13943: { *__mem += __val; } +13943: +13943: inline _Atomic_word +13943: __attribute__ ((__always_inline__)) +13943: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) +13943: { +13943: if (__is_single_threaded()) +13943: return __exchange_and_add_single(__mem, __val); +13943: else +13943: return __exchange_and_add(__mem, __val); +13943: } +13943: +13943: inline void +13943: __attribute__ ((__always_inline__)) +13943: __atomic_add_dispatch(_Atomic_word* __mem, int __val) +13943: { +13943: if (__is_single_threaded()) +13943: __atomic_add_single(__mem, __val); +13943: else +13943: __atomic_add(__mem, __val); +13943: } +13943: +13943: +13943: } +13943: # 62 "/usr/include/c++/14/bits/shared_ptr_base.h" 2 3 +13943: # 1 "/usr/include/c++/14/ext/concurrence.h" 1 3 +13943: # 32 "/usr/include/c++/14/ext/concurrence.h" 3 +13943: +13943: # 33 "/usr/include/c++/14/ext/concurrence.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/exception" 1 3 +13943: # 33 "/usr/include/c++/14/exception" 3 +13943: +13943: # 34 "/usr/include/c++/14/exception" 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 40 "/usr/include/c++/14/exception" 2 3 +13943: +13943: extern "C++" { +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: # 54 "/usr/include/c++/14/exception" 3 +13943: class bad_exception : public exception +13943: { +13943: public: +13943: bad_exception() noexcept { } +13943: +13943: +13943: +13943: virtual ~bad_exception() noexcept; +13943: +13943: +13943: virtual const char* +13943: what() const noexcept; +13943: }; +13943: +13943: +13943: typedef void (*terminate_handler) (); +13943: +13943: +13943: terminate_handler set_terminate(terminate_handler) noexcept; +13943: +13943: +13943: +13943: terminate_handler get_terminate() noexcept; +13943: +13943: +13943: +13943: +13943: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); +13943: +13943: +13943: +13943: typedef void (*__attribute__ ((__deprecated__)) unexpected_handler) (); +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((__deprecated__)) +13943: unexpected_handler set_unexpected(unexpected_handler) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((__deprecated__)) +13943: unexpected_handler get_unexpected() noexcept; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((__deprecated__)) +13943: void unexpected() __attribute__ ((__noreturn__,__cold__)); +13943: # 124 "/usr/include/c++/14/exception" 3 +13943: __attribute__ ((__deprecated__ ("use '" "std::uncaught_exceptions()" "' instead"))) +13943: bool uncaught_exception() noexcept __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: int uncaught_exceptions() noexcept __attribute__ ((__pure__)); +13943: +13943: +13943: +13943: } +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 158 "/usr/include/c++/14/exception" 3 +13943: void __verbose_terminate_handler(); +13943: +13943: +13943: } +13943: +13943: } +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/exception_ptr.h" 1 3 +13943: # 36 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: # 1 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 1 3 +13943: # 34 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 3 +13943: +13943: # 35 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 3 +13943: +13943: #pragma GCC visibility push(default) +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 39 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 2 3 +13943: # 50 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 3 +13943: namespace std +13943: { +13943: class type_info; +13943: } +13943: +13943: namespace __cxxabiv1 +13943: { +13943: struct __cxa_refcounted_exception; +13943: +13943: extern "C" +13943: { +13943: +13943: void* +13943: __cxa_allocate_exception(size_t) noexcept; +13943: +13943: void +13943: __cxa_free_exception(void*) noexcept; +13943: +13943: +13943: __cxa_refcounted_exception* +13943: __cxa_init_primary_exception(void *__object, std::type_info *__tinfo, +13943: void ( *__dest) (void *)) +13943: noexcept; +13943: +13943: } +13943: } +13943: +13943: +13943: +13943: #pragma GCC visibility pop +13943: # 37 "/usr/include/c++/14/bits/exception_ptr.h" 2 3 +13943: # 50 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: extern "C++" { +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: class type_info; +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace __exception_ptr +13943: { +13943: class exception_ptr; +13943: } +13943: +13943: using __exception_ptr::exception_ptr; +13943: # 75 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: exception_ptr current_exception() noexcept; +13943: +13943: template +13943: exception_ptr make_exception_ptr(_Ex) noexcept; +13943: +13943: +13943: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); +13943: +13943: namespace __exception_ptr +13943: { +13943: using std::rethrow_exception; +13943: # 97 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: class exception_ptr +13943: { +13943: void* _M_exception_object; +13943: +13943: explicit exception_ptr(void* __e) noexcept; +13943: +13943: void _M_addref() noexcept; +13943: void _M_release() noexcept; +13943: +13943: void *_M_get() const noexcept __attribute__ ((__pure__)); +13943: +13943: friend exception_ptr std::current_exception() noexcept; +13943: friend void std::rethrow_exception(exception_ptr); +13943: template +13943: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; +13943: +13943: public: +13943: exception_ptr() noexcept; +13943: +13943: exception_ptr(const exception_ptr&) noexcept; +13943: +13943: +13943: exception_ptr(nullptr_t) noexcept +13943: : _M_exception_object(nullptr) +13943: { } +13943: +13943: exception_ptr(exception_ptr&& __o) noexcept +13943: : _M_exception_object(__o._M_exception_object) +13943: { __o._M_exception_object = nullptr; } +13943: # 135 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: exception_ptr& +13943: operator=(const exception_ptr&) noexcept; +13943: +13943: +13943: exception_ptr& +13943: operator=(exception_ptr&& __o) noexcept +13943: { +13943: exception_ptr(static_cast(__o)).swap(*this); +13943: return *this; +13943: } +13943: +13943: +13943: ~exception_ptr() noexcept; +13943: +13943: void +13943: swap(exception_ptr&) noexcept; +13943: # 161 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: explicit operator bool() const noexcept +13943: { return _M_exception_object; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const exception_ptr& __x, const exception_ptr& __y) +13943: noexcept +13943: { return __x._M_exception_object == __y._M_exception_object; } +13943: +13943: friend bool +13943: operator!=(const exception_ptr& __x, const exception_ptr& __y) +13943: noexcept +13943: { return __x._M_exception_object != __y._M_exception_object; } +13943: +13943: +13943: const class std::type_info* +13943: __cxa_exception_type() const noexcept +13943: __attribute__ ((__pure__)); +13943: }; +13943: +13943: +13943: inline +13943: exception_ptr::exception_ptr() noexcept +13943: : _M_exception_object(0) +13943: { } +13943: +13943: +13943: inline +13943: exception_ptr::exception_ptr(const exception_ptr& __other) +13943: noexcept +13943: : _M_exception_object(__other._M_exception_object) +13943: { +13943: if (_M_exception_object) +13943: _M_addref(); +13943: } +13943: +13943: +13943: inline +13943: exception_ptr::~exception_ptr() noexcept +13943: { +13943: if (_M_exception_object) +13943: _M_release(); +13943: } +13943: +13943: +13943: inline exception_ptr& +13943: exception_ptr::operator=(const exception_ptr& __other) noexcept +13943: { +13943: exception_ptr(__other).swap(*this); +13943: return *this; +13943: } +13943: +13943: +13943: inline void +13943: exception_ptr::swap(exception_ptr &__other) noexcept +13943: { +13943: void *__tmp = _M_exception_object; +13943: _M_exception_object = __other._M_exception_object; +13943: __other._M_exception_object = __tmp; +13943: } +13943: +13943: +13943: inline void +13943: swap(exception_ptr& __lhs, exception_ptr& __rhs) +13943: { __lhs.swap(__rhs); } +13943: +13943: +13943: template +13943: +13943: inline void +13943: __dest_thunk(void* __x) +13943: { static_cast<_Ex*>(__x)->~_Ex(); } +13943: +13943: +13943: } +13943: +13943: using __exception_ptr::swap; +13943: +13943: +13943: +13943: template +13943: exception_ptr +13943: make_exception_ptr(_Ex __ex) noexcept +13943: { +13943: +13943: using _Ex2 = typename decay<_Ex>::type; +13943: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); +13943: (void) __cxxabiv1::__cxa_init_primary_exception( +13943: __e, const_cast(&typeid(_Ex)), +13943: __exception_ptr::__dest_thunk<_Ex2>); +13943: try +13943: { +13943: ::new (__e) _Ex2(__ex); +13943: return exception_ptr(__e); +13943: } +13943: catch(...) +13943: { +13943: __cxxabiv1::__cxa_free_exception(__e); +13943: return current_exception(); +13943: } +13943: # 276 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: } +13943: # 290 "/usr/include/c++/14/bits/exception_ptr.h" 3 +13943: } +13943: +13943: } +13943: # 167 "/usr/include/c++/14/exception" 2 3 +13943: # 1 "/usr/include/c++/14/bits/nested_exception.h" 1 3 +13943: # 40 "/usr/include/c++/14/bits/nested_exception.h" 3 +13943: extern "C++" { +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: # 59 "/usr/include/c++/14/bits/nested_exception.h" 3 +13943: class nested_exception +13943: { +13943: exception_ptr _M_ptr; +13943: +13943: public: +13943: +13943: nested_exception() noexcept : _M_ptr(current_exception()) { } +13943: +13943: nested_exception(const nested_exception&) noexcept = default; +13943: +13943: nested_exception& operator=(const nested_exception&) noexcept = default; +13943: +13943: virtual ~nested_exception() noexcept; +13943: +13943: +13943: [[noreturn]] +13943: void +13943: rethrow_nested() const +13943: { +13943: if (_M_ptr) +13943: rethrow_exception(_M_ptr); +13943: std::terminate(); +13943: } +13943: +13943: +13943: exception_ptr +13943: nested_ptr() const noexcept +13943: { return _M_ptr; } +13943: }; +13943: +13943: +13943: +13943: template +13943: struct _Nested_exception : public _Except, public nested_exception +13943: { +13943: explicit _Nested_exception(const _Except& __ex) +13943: : _Except(__ex) +13943: { } +13943: +13943: explicit _Nested_exception(_Except&& __ex) +13943: : _Except(static_cast<_Except&&>(__ex)) +13943: { } +13943: }; +13943: # 145 "/usr/include/c++/14/bits/nested_exception.h" 3 +13943: template +13943: [[noreturn]] +13943: inline void +13943: throw_with_nested(_Tp&& __t) +13943: { +13943: using _Up = typename decay<_Tp>::type; +13943: using _CopyConstructible +13943: = __and_, is_move_constructible<_Up>>; +13943: static_assert(_CopyConstructible::value, +13943: "throw_with_nested argument must be CopyConstructible"); +13943: +13943: +13943: if constexpr (is_class_v<_Up>) +13943: if constexpr (!is_final_v<_Up>) +13943: if constexpr (!is_base_of_v) +13943: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; +13943: throw std::forward<_Tp>(__t); +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 203 "/usr/include/c++/14/bits/nested_exception.h" 3 +13943: template +13943: +13943: +13943: +13943: inline void +13943: rethrow_if_nested(const _Ex& __ex) +13943: { +13943: const _Ex* __ptr = __builtin_addressof(__ex); +13943: # 223 "/usr/include/c++/14/bits/nested_exception.h" 3 +13943: if constexpr (!is_polymorphic_v<_Ex>) +13943: return; +13943: else if constexpr (is_base_of_v +13943: && !is_convertible_v<_Ex*, nested_exception*>) +13943: return; +13943: +13943: +13943: +13943: +13943: else if (auto __ne_ptr = dynamic_cast(__ptr)) +13943: __ne_ptr->rethrow_nested(); +13943: +13943: } +13943: +13943: +13943: } +13943: +13943: } +13943: # 168 "/usr/include/c++/14/exception" 2 3 +13943: # 35 "/usr/include/c++/14/ext/concurrence.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; +13943: +13943: +13943: +13943: inline const _Lock_policy __default_lock_policy = +13943: +13943: +13943: +13943: _S_atomic; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class __concurrence_lock_error : public std::exception +13943: { +13943: public: +13943: virtual char const* +13943: what() const throw() +13943: { return "__gnu_cxx::__concurrence_lock_error"; } +13943: }; +13943: +13943: class __concurrence_unlock_error : public std::exception +13943: { +13943: public: +13943: virtual char const* +13943: what() const throw() +13943: { return "__gnu_cxx::__concurrence_unlock_error"; } +13943: }; +13943: +13943: class __concurrence_broadcast_error : public std::exception +13943: { +13943: public: +13943: virtual char const* +13943: what() const throw() +13943: { return "__gnu_cxx::__concurrence_broadcast_error"; } +13943: }; +13943: +13943: class __concurrence_wait_error : public std::exception +13943: { +13943: public: +13943: virtual char const* +13943: what() const throw() +13943: { return "__gnu_cxx::__concurrence_wait_error"; } +13943: }; +13943: +13943: +13943: inline void +13943: __throw_concurrence_lock_error() +13943: { (throw (__concurrence_lock_error())); } +13943: +13943: inline void +13943: __throw_concurrence_unlock_error() +13943: { (throw (__concurrence_unlock_error())); } +13943: +13943: +13943: inline void +13943: __throw_concurrence_broadcast_error() +13943: { (throw (__concurrence_broadcast_error())); } +13943: +13943: inline void +13943: __throw_concurrence_wait_error() +13943: { (throw (__concurrence_wait_error())); } +13943: +13943: +13943: class __mutex +13943: { +13943: private: +13943: +13943: __gthread_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } }; +13943: +13943: +13943: +13943: +13943: __mutex(const __mutex&); +13943: __mutex& operator=(const __mutex&); +13943: +13943: public: +13943: __mutex() +13943: { +13943: +13943: +13943: +13943: +13943: } +13943: # 144 "/usr/include/c++/14/ext/concurrence.h" 3 +13943: void lock() +13943: { +13943: +13943: if (__gthread_active_p()) +13943: { +13943: if (__gthread_mutex_lock(&_M_mutex) != 0) +13943: __throw_concurrence_lock_error(); +13943: } +13943: +13943: } +13943: +13943: void unlock() +13943: { +13943: +13943: if (__gthread_active_p()) +13943: { +13943: if (__gthread_mutex_unlock(&_M_mutex) != 0) +13943: __throw_concurrence_unlock_error(); +13943: } +13943: +13943: } +13943: +13943: __gthread_mutex_t* gthread_mutex(void) +13943: { return &_M_mutex; } +13943: }; +13943: +13943: class __recursive_mutex +13943: { +13943: private: +13943: +13943: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; +13943: +13943: +13943: +13943: +13943: __recursive_mutex(const __recursive_mutex&); +13943: __recursive_mutex& operator=(const __recursive_mutex&); +13943: +13943: public: +13943: __recursive_mutex() +13943: { +13943: +13943: +13943: +13943: +13943: } +13943: # 199 "/usr/include/c++/14/ext/concurrence.h" 3 +13943: void lock() +13943: { +13943: +13943: if (__gthread_active_p()) +13943: { +13943: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) +13943: __throw_concurrence_lock_error(); +13943: } +13943: +13943: } +13943: +13943: void unlock() +13943: { +13943: +13943: if (__gthread_active_p()) +13943: { +13943: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) +13943: __throw_concurrence_unlock_error(); +13943: } +13943: +13943: } +13943: +13943: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) +13943: { return &_M_mutex; } +13943: }; +13943: +13943: +13943: +13943: +13943: class __scoped_lock +13943: { +13943: public: +13943: typedef __mutex __mutex_type; +13943: +13943: private: +13943: __mutex_type& _M_device; +13943: +13943: __scoped_lock(const __scoped_lock&); +13943: __scoped_lock& operator=(const __scoped_lock&); +13943: +13943: public: +13943: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) +13943: { _M_device.lock(); } +13943: +13943: ~__scoped_lock() throw() +13943: { _M_device.unlock(); } +13943: }; +13943: +13943: +13943: class __cond +13943: { +13943: private: +13943: +13943: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; +13943: +13943: +13943: +13943: +13943: __cond(const __cond&); +13943: __cond& operator=(const __cond&); +13943: +13943: public: +13943: __cond() +13943: { +13943: +13943: +13943: +13943: +13943: } +13943: # 277 "/usr/include/c++/14/ext/concurrence.h" 3 +13943: void broadcast() +13943: { +13943: +13943: if (__gthread_active_p()) +13943: { +13943: if (__gthread_cond_broadcast(&_M_cond) != 0) +13943: __throw_concurrence_broadcast_error(); +13943: } +13943: +13943: } +13943: +13943: void wait(__mutex *mutex) +13943: { +13943: +13943: { +13943: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) +13943: __throw_concurrence_wait_error(); +13943: } +13943: +13943: } +13943: +13943: void wait_recursive(__recursive_mutex *mutex) +13943: { +13943: +13943: { +13943: if (__gthread_cond_wait_recursive(&_M_cond, +13943: mutex->gthread_recursive_mutex()) +13943: != 0) +13943: __throw_concurrence_wait_error(); +13943: } +13943: +13943: } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 63 "/usr/include/c++/14/bits/shared_ptr_base.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: # 75 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: template class auto_ptr; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: +13943: +13943: class bad_weak_ptr : public std::exception +13943: { +13943: public: +13943: virtual char const* what() const noexcept; +13943: +13943: virtual ~bad_weak_ptr() noexcept; +13943: }; +13943: +13943: +13943: inline void +13943: __throw_bad_weak_ptr() +13943: { (throw (bad_weak_ptr())); } +13943: +13943: using __gnu_cxx::_Lock_policy; +13943: using __gnu_cxx::__default_lock_policy; +13943: using __gnu_cxx::_S_single; +13943: using __gnu_cxx::_S_mutex; +13943: using __gnu_cxx::_S_atomic; +13943: +13943: +13943: template<_Lock_policy _Lp> +13943: class _Mutex_base +13943: { +13943: protected: +13943: +13943: enum { _S_need_barriers = 0 }; +13943: }; +13943: +13943: template<> +13943: class _Mutex_base<_S_mutex> +13943: : public __gnu_cxx::__mutex +13943: { +13943: protected: +13943: +13943: +13943: +13943: enum { _S_need_barriers = 1 }; +13943: }; +13943: +13943: template<_Lock_policy _Lp = __default_lock_policy> +13943: class _Sp_counted_base +13943: : public _Mutex_base<_Lp> +13943: { +13943: public: +13943: _Sp_counted_base() noexcept +13943: : _M_use_count(1), _M_weak_count(1) { } +13943: +13943: virtual +13943: ~_Sp_counted_base() noexcept +13943: { } +13943: +13943: +13943: +13943: virtual void +13943: _M_dispose() noexcept = 0; +13943: +13943: +13943: virtual void +13943: _M_destroy() noexcept +13943: { delete this; } +13943: +13943: virtual void* +13943: _M_get_deleter(const std::type_info&) noexcept = 0; +13943: +13943: +13943: void +13943: _M_add_ref_copy() +13943: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } +13943: +13943: +13943: void +13943: _M_add_ref_lock() +13943: { +13943: if (!_M_add_ref_lock_nothrow()) +13943: __throw_bad_weak_ptr(); +13943: } +13943: +13943: +13943: bool +13943: _M_add_ref_lock_nothrow() noexcept; +13943: +13943: +13943: void +13943: _M_release() noexcept; +13943: +13943: +13943: void +13943: _M_release_last_use() noexcept +13943: { +13943: ; +13943: _M_dispose(); +13943: +13943: +13943: +13943: +13943: if (_Mutex_base<_Lp>::_S_need_barriers) +13943: { +13943: __atomic_thread_fence (4); +13943: } +13943: +13943: +13943: ; +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, +13943: -1) == 1) +13943: { +13943: ; +13943: _M_destroy(); +13943: } +13943: } +13943: +13943: +13943: __attribute__((__noinline__)) +13943: void +13943: _M_release_last_use_cold() noexcept +13943: { _M_release_last_use(); } +13943: +13943: +13943: void +13943: _M_weak_add_ref() noexcept +13943: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } +13943: +13943: +13943: void +13943: _M_weak_release() noexcept +13943: { +13943: +13943: ; +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) +13943: { +13943: ; +13943: if (_Mutex_base<_Lp>::_S_need_barriers) +13943: { +13943: +13943: +13943: __atomic_thread_fence (4); +13943: } +13943: _M_destroy(); +13943: } +13943: } +13943: +13943: long +13943: _M_get_use_count() const noexcept +13943: { +13943: +13943: +13943: return __atomic_load_n(&_M_use_count, 0); +13943: } +13943: +13943: private: +13943: _Sp_counted_base(_Sp_counted_base const&) = delete; +13943: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; +13943: +13943: _Atomic_word _M_use_count; +13943: _Atomic_word _M_weak_count; +13943: }; +13943: +13943: template<> +13943: inline bool +13943: _Sp_counted_base<_S_single>:: +13943: _M_add_ref_lock_nothrow() noexcept +13943: { +13943: if (_M_use_count == 0) +13943: return false; +13943: ++_M_use_count; +13943: return true; +13943: } +13943: +13943: template<> +13943: inline bool +13943: _Sp_counted_base<_S_mutex>:: +13943: _M_add_ref_lock_nothrow() noexcept +13943: { +13943: __gnu_cxx::__scoped_lock sentry(*this); +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) +13943: { +13943: _M_use_count = 0; +13943: return false; +13943: } +13943: return true; +13943: } +13943: +13943: template<> +13943: inline bool +13943: _Sp_counted_base<_S_atomic>:: +13943: _M_add_ref_lock_nothrow() noexcept +13943: { +13943: +13943: _Atomic_word __count = _M_get_use_count(); +13943: do +13943: { +13943: if (__count == 0) +13943: return false; +13943: +13943: +13943: } +13943: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, +13943: true, 4, +13943: 0)); +13943: return true; +13943: } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_base<_S_single>::_M_add_ref_copy() +13943: { ++_M_use_count; } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_base<_S_single>::_M_release() noexcept +13943: { +13943: if (--_M_use_count == 0) +13943: { +13943: _M_dispose(); +13943: if (--_M_weak_count == 0) +13943: _M_destroy(); +13943: } +13943: } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_base<_S_mutex>::_M_release() noexcept +13943: { +13943: +13943: ; +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) +13943: { +13943: _M_release_last_use(); +13943: } +13943: } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_base<_S_atomic>::_M_release() noexcept +13943: { +13943: ; +13943: +13943: constexpr bool __lock_free +13943: = __atomic_always_lock_free(sizeof(long long), 0) +13943: && __atomic_always_lock_free(sizeof(_Atomic_word), 0); +13943: constexpr bool __double_word +13943: = sizeof(long long) == 2 * sizeof(_Atomic_word); +13943: +13943: +13943: constexpr bool __aligned = __alignof(long long) <= alignof(void*); +13943: if constexpr (__lock_free && __double_word && __aligned) +13943: { +13943: constexpr int __wordbits = 8 * sizeof(_Atomic_word); +13943: constexpr int __shiftbits = __double_word ? __wordbits : 0; +13943: constexpr long long __unique_ref = 1LL + (1LL << __shiftbits); +13943: auto __both_counts = reinterpret_cast(&_M_use_count); +13943: +13943: ; +13943: if (__atomic_load_n(__both_counts, 2) == __unique_ref) +13943: { +13943: +13943: +13943: +13943: +13943: _M_weak_count = _M_use_count = 0; +13943: ; +13943: ; +13943: _M_dispose(); +13943: _M_destroy(); +13943: return; +13943: } +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) +13943: [[__unlikely__]] +13943: { +13943: _M_release_last_use_cold(); +13943: return; +13943: } +13943: } +13943: else +13943: +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) +13943: { +13943: _M_release_last_use(); +13943: } +13943: } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept +13943: { ++_M_weak_count; } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_base<_S_single>::_M_weak_release() noexcept +13943: { +13943: if (--_M_weak_count == 0) +13943: _M_destroy(); +13943: } +13943: +13943: template<> +13943: inline long +13943: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept +13943: { return _M_use_count; } +13943: +13943: +13943: +13943: template +13943: class __shared_ptr; +13943: +13943: template +13943: class __weak_ptr; +13943: +13943: template +13943: class __enable_shared_from_this; +13943: +13943: template +13943: class shared_ptr; +13943: +13943: template +13943: class weak_ptr; +13943: +13943: template +13943: struct owner_less; +13943: +13943: template +13943: class enable_shared_from_this; +13943: +13943: template<_Lock_policy _Lp = __default_lock_policy> +13943: class __weak_count; +13943: +13943: template<_Lock_policy _Lp = __default_lock_policy> +13943: class __shared_count; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> +13943: { +13943: public: +13943: explicit +13943: _Sp_counted_ptr(_Ptr __p) noexcept +13943: : _M_ptr(__p) { } +13943: +13943: virtual void +13943: _M_dispose() noexcept +13943: { delete _M_ptr; } +13943: +13943: virtual void +13943: _M_destroy() noexcept +13943: { delete this; } +13943: +13943: virtual void* +13943: _M_get_deleter(const std::type_info&) noexcept +13943: { return nullptr; } +13943: +13943: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; +13943: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; +13943: +13943: private: +13943: _Ptr _M_ptr; +13943: }; +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_ptr::_M_dispose() noexcept { } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_ptr::_M_dispose() noexcept { } +13943: +13943: template<> +13943: inline void +13943: _Sp_counted_ptr::_M_dispose() noexcept { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Sp_ebo_helper; +13943: +13943: +13943: template +13943: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp +13943: { +13943: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } +13943: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } +13943: +13943: static _Tp& +13943: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } +13943: }; +13943: +13943: +13943: template +13943: struct _Sp_ebo_helper<_Nm, _Tp, false> +13943: { +13943: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } +13943: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } +13943: +13943: static _Tp& +13943: _S_get(_Sp_ebo_helper& __eboh) +13943: { return __eboh._M_tp; } +13943: +13943: private: +13943: _Tp _M_tp; +13943: }; +13943: +13943: +13943: template +13943: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> +13943: { +13943: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> +13943: { +13943: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; +13943: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; +13943: +13943: public: +13943: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept +13943: : _Del_base(std::move(__d)), _Alloc_base(__a), _M_ptr(__p) +13943: { } +13943: +13943: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } +13943: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } +13943: +13943: _Ptr _M_ptr; +13943: }; +13943: +13943: public: +13943: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; +13943: +13943: +13943: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept +13943: : _M_impl(__p, std::move(__d), _Alloc()) { } +13943: +13943: +13943: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept +13943: : _M_impl(__p, std::move(__d), __a) { } +13943: +13943: ~_Sp_counted_deleter() noexcept { } +13943: +13943: virtual void +13943: _M_dispose() noexcept +13943: { _M_impl._M_del()(_M_impl._M_ptr); } +13943: +13943: virtual void +13943: _M_destroy() noexcept +13943: { +13943: __allocator_type __a(_M_impl._M_alloc()); +13943: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; +13943: this->~_Sp_counted_deleter(); +13943: } +13943: +13943: virtual void* +13943: _M_get_deleter(const type_info& __ti [[__gnu__::__unused__]]) noexcept +13943: { +13943: +13943: +13943: +13943: return __ti == typeid(_Deleter) +13943: ? std::__addressof(_M_impl._M_del()) +13943: : nullptr; +13943: +13943: +13943: +13943: } +13943: +13943: private: +13943: +13943: +13943: +13943: _Impl _M_impl; +13943: }; +13943: +13943: +13943: +13943: struct _Sp_make_shared_tag +13943: { +13943: private: +13943: template +13943: friend class _Sp_counted_ptr_inplace; +13943: +13943: static const type_info& +13943: _S_ti() noexcept __attribute__ ((__visibility__ ("default"))) +13943: { +13943: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; +13943: return reinterpret_cast(__tag); +13943: } +13943: +13943: static bool _S_eq(const type_info&) noexcept; +13943: }; +13943: +13943: template +13943: struct _Sp_alloc_shared_tag +13943: { +13943: const _Alloc& _M_a; +13943: }; +13943: +13943: template +13943: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> +13943: { +13943: class _Impl : _Sp_ebo_helper<0, _Alloc> +13943: { +13943: typedef _Sp_ebo_helper<0, _Alloc> _A_base; +13943: +13943: public: +13943: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } +13943: +13943: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } +13943: +13943: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; +13943: }; +13943: +13943: public: +13943: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; +13943: +13943: +13943: template +13943: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) +13943: : _M_impl(__a) +13943: { +13943: +13943: +13943: allocator_traits<_Alloc>::construct(__a, _M_ptr(), +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: ~_Sp_counted_ptr_inplace() noexcept { } +13943: +13943: virtual void +13943: _M_dispose() noexcept +13943: { +13943: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); +13943: } +13943: +13943: +13943: virtual void +13943: _M_destroy() noexcept +13943: { +13943: __allocator_type __a(_M_impl._M_alloc()); +13943: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; +13943: this->~_Sp_counted_ptr_inplace(); +13943: } +13943: +13943: private: +13943: friend class __shared_count<_Lp>; +13943: +13943: +13943: +13943: virtual void* +13943: _M_get_deleter(const std::type_info& __ti) noexcept override +13943: { +13943: auto __ptr = const_cast::type*>(_M_ptr()); +13943: +13943: +13943: +13943: +13943: if (&__ti == &_Sp_make_shared_tag::_S_ti() +13943: || +13943: +13943: __ti == typeid(_Sp_make_shared_tag) +13943: +13943: +13943: +13943: ) +13943: return __ptr; +13943: return nullptr; +13943: } +13943: +13943: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } +13943: +13943: _Impl _M_impl; +13943: }; +13943: # 884 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: struct __sp_array_delete +13943: { +13943: template +13943: void operator()(_Yp* __p) const { delete[] __p; } +13943: }; +13943: +13943: template<_Lock_policy _Lp> +13943: class __shared_count +13943: { +13943: +13943: template +13943: struct __not_alloc_shared_tag { using type = void; }; +13943: +13943: template +13943: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: public: +13943: constexpr __shared_count() noexcept : _M_pi(0) +13943: { } +13943: +13943: template +13943: explicit +13943: __shared_count(_Ptr __p) : _M_pi(0) +13943: { +13943: try +13943: { +13943: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); +13943: } +13943: catch(...) +13943: { +13943: delete __p; +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: __shared_count(_Ptr __p, false_type) +13943: : __shared_count(__p) +13943: { } +13943: +13943: template +13943: __shared_count(_Ptr __p, true_type) +13943: : __shared_count(__p, __sp_array_delete{}, allocator()) +13943: { } +13943: +13943: template::type> +13943: __shared_count(_Ptr __p, _Deleter __d) +13943: : __shared_count(__p, std::move(__d), allocator()) +13943: { } +13943: +13943: template::type> +13943: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) +13943: { +13943: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; +13943: try +13943: { +13943: typename _Sp_cd_type::__allocator_type __a2(__a); +13943: auto __guard = std::__allocate_guarded(__a2); +13943: _Sp_cd_type* __mem = __guard.get(); +13943: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); +13943: _M_pi = __mem; +13943: __guard = nullptr; +13943: } +13943: catch(...) +13943: { +13943: __d(__p); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, +13943: _Args&&... __args) +13943: { +13943: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; +13943: typename _Sp_cp_type::__allocator_type __a2(__a._M_a); +13943: auto __guard = std::__allocate_guarded(__a2); +13943: _Sp_cp_type* __mem = __guard.get(); +13943: auto __pi = ::new (__mem) +13943: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); +13943: __guard = nullptr; +13943: _M_pi = __pi; +13943: __p = __pi->_M_ptr(); +13943: } +13943: # 1022 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: template +13943: explicit +13943: __shared_count(std::auto_ptr<_Tp>&& __r); +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: template +13943: explicit +13943: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) +13943: { +13943: +13943: +13943: if (__r.get() == nullptr) +13943: return; +13943: +13943: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; +13943: using _Del2 = __conditional_t::value, +13943: reference_wrapper::type>, +13943: _Del>; +13943: using _Sp_cd_type +13943: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; +13943: using _Alloc = allocator<_Sp_cd_type>; +13943: using _Alloc_traits = allocator_traits<_Alloc>; +13943: _Alloc __a; +13943: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); +13943: +13943: +13943: +13943: _Alloc_traits::construct(__a, __mem, __r.release(), +13943: std::forward<_Del>(__r.get_deleter())); +13943: _M_pi = __mem; +13943: } +13943: +13943: +13943: explicit __shared_count(const __weak_count<_Lp>& __r); +13943: +13943: +13943: explicit +13943: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept; +13943: +13943: ~__shared_count() noexcept +13943: { +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_release(); +13943: } +13943: +13943: __shared_count(const __shared_count& __r) noexcept +13943: : _M_pi(__r._M_pi) +13943: { +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_add_ref_copy(); +13943: } +13943: +13943: __shared_count& +13943: operator=(const __shared_count& __r) noexcept +13943: { +13943: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +13943: if (__tmp != _M_pi) +13943: { +13943: if (__tmp != nullptr) +13943: __tmp->_M_add_ref_copy(); +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_release(); +13943: _M_pi = __tmp; +13943: } +13943: return *this; +13943: } +13943: +13943: void +13943: _M_swap(__shared_count& __r) noexcept +13943: { +13943: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +13943: __r._M_pi = _M_pi; +13943: _M_pi = __tmp; +13943: } +13943: +13943: long +13943: _M_get_use_count() const noexcept +13943: { return _M_pi ? _M_pi->_M_get_use_count() : 0; } +13943: +13943: bool +13943: _M_unique() const noexcept +13943: { return this->_M_get_use_count() == 1; } +13943: +13943: void* +13943: _M_get_deleter(const std::type_info& __ti) const noexcept +13943: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } +13943: +13943: bool +13943: _M_less(const __shared_count& __rhs) const noexcept +13943: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +13943: +13943: bool +13943: _M_less(const __weak_count<_Lp>& __rhs) const noexcept +13943: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +13943: +13943: +13943: friend inline bool +13943: operator==(const __shared_count& __a, const __shared_count& __b) noexcept +13943: { return __a._M_pi == __b._M_pi; } +13943: +13943: private: +13943: friend class __weak_count<_Lp>; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: _Sp_counted_base<_Lp>* _M_pi; +13943: }; +13943: +13943: +13943: template<_Lock_policy _Lp> +13943: class __weak_count +13943: { +13943: public: +13943: constexpr __weak_count() noexcept : _M_pi(nullptr) +13943: { } +13943: +13943: __weak_count(const __shared_count<_Lp>& __r) noexcept +13943: : _M_pi(__r._M_pi) +13943: { +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_weak_add_ref(); +13943: } +13943: +13943: __weak_count(const __weak_count& __r) noexcept +13943: : _M_pi(__r._M_pi) +13943: { +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_weak_add_ref(); +13943: } +13943: +13943: __weak_count(__weak_count&& __r) noexcept +13943: : _M_pi(__r._M_pi) +13943: { __r._M_pi = nullptr; } +13943: +13943: ~__weak_count() noexcept +13943: { +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_weak_release(); +13943: } +13943: +13943: __weak_count& +13943: operator=(const __shared_count<_Lp>& __r) noexcept +13943: { +13943: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +13943: if (__tmp != nullptr) +13943: __tmp->_M_weak_add_ref(); +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_weak_release(); +13943: _M_pi = __tmp; +13943: return *this; +13943: } +13943: +13943: __weak_count& +13943: operator=(const __weak_count& __r) noexcept +13943: { +13943: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +13943: if (__tmp != nullptr) +13943: __tmp->_M_weak_add_ref(); +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_weak_release(); +13943: _M_pi = __tmp; +13943: return *this; +13943: } +13943: +13943: __weak_count& +13943: operator=(__weak_count&& __r) noexcept +13943: { +13943: if (_M_pi != nullptr) +13943: _M_pi->_M_weak_release(); +13943: _M_pi = __r._M_pi; +13943: __r._M_pi = nullptr; +13943: return *this; +13943: } +13943: +13943: void +13943: _M_swap(__weak_count& __r) noexcept +13943: { +13943: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +13943: __r._M_pi = _M_pi; +13943: _M_pi = __tmp; +13943: } +13943: +13943: long +13943: _M_get_use_count() const noexcept +13943: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } +13943: +13943: bool +13943: _M_less(const __weak_count& __rhs) const noexcept +13943: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +13943: +13943: bool +13943: _M_less(const __shared_count<_Lp>& __rhs) const noexcept +13943: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +13943: +13943: +13943: friend inline bool +13943: operator==(const __weak_count& __a, const __weak_count& __b) noexcept +13943: { return __a._M_pi == __b._M_pi; } +13943: +13943: private: +13943: friend class __shared_count<_Lp>; +13943: +13943: +13943: +13943: +13943: _Sp_counted_base<_Lp>* _M_pi; +13943: }; +13943: +13943: +13943: template<_Lock_policy _Lp> +13943: inline +13943: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) +13943: : _M_pi(__r._M_pi) +13943: { +13943: if (_M_pi == nullptr || !_M_pi->_M_add_ref_lock_nothrow()) +13943: __throw_bad_weak_ptr(); +13943: } +13943: +13943: +13943: template<_Lock_policy _Lp> +13943: inline +13943: __shared_count<_Lp>:: +13943: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept +13943: : _M_pi(__r._M_pi) +13943: { +13943: if (_M_pi && !_M_pi->_M_add_ref_lock_nothrow()) +13943: _M_pi = nullptr; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __sp_compatible_with +13943: : false_type +13943: { }; +13943: +13943: template +13943: struct __sp_compatible_with<_Yp*, _Tp*> +13943: : is_convertible<_Yp*, _Tp*>::type +13943: { }; +13943: +13943: template +13943: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> +13943: : true_type +13943: { }; +13943: +13943: template +13943: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> +13943: : true_type +13943: { }; +13943: +13943: template +13943: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> +13943: : true_type +13943: { }; +13943: +13943: template +13943: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> +13943: : true_type +13943: { }; +13943: +13943: +13943: template +13943: struct __sp_is_constructible_arrN +13943: : false_type +13943: { }; +13943: +13943: template +13943: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> +13943: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type +13943: { }; +13943: +13943: +13943: template +13943: struct __sp_is_constructible_arr +13943: : false_type +13943: { }; +13943: +13943: template +13943: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> +13943: : is_convertible<_Yp(*)[], _Up(*)[]>::type +13943: { }; +13943: +13943: +13943: template +13943: struct __sp_is_constructible; +13943: +13943: +13943: template +13943: struct __sp_is_constructible<_Up[_Nm], _Yp> +13943: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type +13943: { }; +13943: +13943: +13943: template +13943: struct __sp_is_constructible<_Up[], _Yp> +13943: : __sp_is_constructible_arr<_Up, _Yp>::type +13943: { }; +13943: +13943: +13943: template +13943: struct __sp_is_constructible +13943: : is_convertible<_Yp*, _Tp*>::type +13943: { }; +13943: +13943: +13943: +13943: template::value, bool = is_void<_Tp>::value> +13943: class __shared_ptr_access +13943: { +13943: public: +13943: using element_type = _Tp; +13943: +13943: element_type& +13943: operator*() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) std::__glibcxx_assert_fail(); } while (false); +13943: return *_M_get(); +13943: } +13943: +13943: element_type* +13943: operator->() const noexcept +13943: { +13943: ; +13943: return _M_get(); +13943: } +13943: +13943: private: +13943: element_type* +13943: _M_get() const noexcept +13943: { return static_cast*>(this)->get(); } +13943: }; +13943: +13943: +13943: template +13943: class __shared_ptr_access<_Tp, _Lp, false, true> +13943: { +13943: public: +13943: using element_type = _Tp; +13943: +13943: element_type* +13943: operator->() const noexcept +13943: { +13943: auto __ptr = static_cast*>(this)->get(); +13943: ; +13943: return __ptr; +13943: } +13943: }; +13943: +13943: +13943: template +13943: class __shared_ptr_access<_Tp, _Lp, true, false> +13943: { +13943: public: +13943: using element_type = typename remove_extent<_Tp>::type; +13943: # 1408 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: element_type& +13943: operator[](ptrdiff_t __i) const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) std::__glibcxx_assert_fail(); } while (false); +13943: do { if (std::__is_constant_evaluated() && !bool(!extent<_Tp>::value || __i < extent<_Tp>::value)) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_get()[__i]; +13943: } +13943: +13943: private: +13943: element_type* +13943: _M_get() const noexcept +13943: { return static_cast*>(this)->get(); } +13943: }; +13943: +13943: template +13943: class __shared_ptr +13943: : public __shared_ptr_access<_Tp, _Lp> +13943: { +13943: public: +13943: using element_type = typename remove_extent<_Tp>::type; +13943: +13943: private: +13943: +13943: template +13943: using _SafeConv +13943: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; +13943: +13943: +13943: template +13943: using _Compatible = typename +13943: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; +13943: +13943: +13943: template +13943: using _Assignable = _Compatible<_Yp, __shared_ptr&>; +13943: +13943: +13943: template::pointer> +13943: using _UniqCompatible = __enable_if_t<__and_< +13943: __sp_compatible_with<_Yp*, _Tp*>, +13943: is_convertible<_Ptr, element_type*>, +13943: is_move_constructible<_Del> +13943: >::value, _Res>; +13943: +13943: +13943: template +13943: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; +13943: +13943: public: +13943: +13943: +13943: using weak_type = __weak_ptr<_Tp, _Lp>; +13943: +13943: +13943: constexpr __shared_ptr() noexcept +13943: : _M_ptr(0), _M_refcount() +13943: { } +13943: +13943: template> +13943: explicit +13943: __shared_ptr(_Yp* __p) +13943: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) +13943: { +13943: static_assert( !is_void<_Yp>::value, "incomplete type" ); +13943: static_assert( sizeof(_Yp) > 0, "incomplete type" ); +13943: _M_enable_shared_from_this_with(__p); +13943: } +13943: +13943: template> +13943: __shared_ptr(_Yp* __p, _Deleter __d) +13943: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) +13943: { +13943: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, +13943: "deleter expression d(p) is well-formed"); +13943: _M_enable_shared_from_this_with(__p); +13943: } +13943: +13943: template> +13943: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) +13943: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) +13943: { +13943: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, +13943: "deleter expression d(p) is well-formed"); +13943: _M_enable_shared_from_this_with(__p); +13943: } +13943: +13943: template +13943: __shared_ptr(nullptr_t __p, _Deleter __d) +13943: : _M_ptr(0), _M_refcount(__p, std::move(__d)) +13943: { } +13943: +13943: template +13943: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) +13943: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) +13943: { } +13943: +13943: +13943: template +13943: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, +13943: element_type* __p) noexcept +13943: : _M_ptr(__p), _M_refcount(__r._M_refcount) +13943: { } +13943: +13943: +13943: template +13943: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r, +13943: element_type* __p) noexcept +13943: : _M_ptr(__p), _M_refcount() +13943: { +13943: _M_refcount._M_swap(__r._M_refcount); +13943: __r._M_ptr = nullptr; +13943: } +13943: +13943: __shared_ptr(const __shared_ptr&) noexcept = default; +13943: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; +13943: ~__shared_ptr() = default; +13943: +13943: template> +13943: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept +13943: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) +13943: { } +13943: +13943: __shared_ptr(__shared_ptr&& __r) noexcept +13943: : _M_ptr(__r._M_ptr), _M_refcount() +13943: { +13943: _M_refcount._M_swap(__r._M_refcount); +13943: __r._M_ptr = nullptr; +13943: } +13943: +13943: template> +13943: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept +13943: : _M_ptr(__r._M_ptr), _M_refcount() +13943: { +13943: _M_refcount._M_swap(__r._M_refcount); +13943: __r._M_ptr = nullptr; +13943: } +13943: +13943: template> +13943: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) +13943: : _M_refcount(__r._M_refcount) +13943: { +13943: +13943: +13943: _M_ptr = __r._M_ptr; +13943: } +13943: +13943: +13943: template> +13943: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) +13943: : _M_ptr(__r.get()), _M_refcount() +13943: { +13943: auto __raw = __to_address(__r.get()); +13943: _M_refcount = __shared_count<_Lp>(std::move(__r)); +13943: _M_enable_shared_from_this_with(__raw); +13943: } +13943: # 1586 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: template> +13943: __shared_ptr(auto_ptr<_Yp>&& __r); +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } +13943: +13943: template +13943: _Assignable<_Yp> +13943: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept +13943: { +13943: _M_ptr = __r._M_ptr; +13943: _M_refcount = __r._M_refcount; +13943: return *this; +13943: } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: template +13943: _Assignable<_Yp> +13943: operator=(auto_ptr<_Yp>&& __r) +13943: { +13943: __shared_ptr(std::move(__r)).swap(*this); +13943: return *this; +13943: } +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: __shared_ptr& +13943: operator=(__shared_ptr&& __r) noexcept +13943: { +13943: __shared_ptr(std::move(__r)).swap(*this); +13943: return *this; +13943: } +13943: +13943: template +13943: _Assignable<_Yp> +13943: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept +13943: { +13943: __shared_ptr(std::move(__r)).swap(*this); +13943: return *this; +13943: } +13943: +13943: template +13943: _UniqAssignable<_Yp, _Del> +13943: operator=(unique_ptr<_Yp, _Del>&& __r) +13943: { +13943: __shared_ptr(std::move(__r)).swap(*this); +13943: return *this; +13943: } +13943: +13943: void +13943: reset() noexcept +13943: { __shared_ptr().swap(*this); } +13943: +13943: template +13943: _SafeConv<_Yp> +13943: reset(_Yp* __p) +13943: { +13943: +13943: do { if (std::__is_constant_evaluated() && !bool(__p == nullptr || __p != _M_ptr)) std::__glibcxx_assert_fail(); } while (false); +13943: __shared_ptr(__p).swap(*this); +13943: } +13943: +13943: template +13943: _SafeConv<_Yp> +13943: reset(_Yp* __p, _Deleter __d) +13943: { __shared_ptr(__p, std::move(__d)).swap(*this); } +13943: +13943: template +13943: _SafeConv<_Yp> +13943: reset(_Yp* __p, _Deleter __d, _Alloc __a) +13943: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } +13943: +13943: +13943: element_type* +13943: get() const noexcept +13943: { return _M_ptr; } +13943: +13943: +13943: explicit operator bool() const noexcept +13943: { return _M_ptr != nullptr; } +13943: +13943: +13943: bool +13943: unique() const noexcept +13943: { return _M_refcount._M_unique(); } +13943: +13943: +13943: long +13943: use_count() const noexcept +13943: { return _M_refcount._M_get_use_count(); } +13943: +13943: +13943: void +13943: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept +13943: { +13943: std::swap(_M_ptr, __other._M_ptr); +13943: _M_refcount._M_swap(__other._M_refcount); +13943: } +13943: # 1698 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: template +13943: bool +13943: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept +13943: { return _M_refcount._M_less(__rhs._M_refcount); } +13943: +13943: template +13943: bool +13943: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept +13943: { return _M_refcount._M_less(__rhs._M_refcount); } +13943: +13943: +13943: protected: +13943: +13943: template +13943: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) +13943: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) +13943: { _M_enable_shared_from_this_with(_M_ptr); } +13943: +13943: template +13943: friend __shared_ptr<_Tp1, _Lp1> +13943: __allocate_shared(const _Alloc& __a, _Args&&... __args); +13943: # 1732 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) noexcept +13943: : _M_refcount(__r._M_refcount, std::nothrow) +13943: { +13943: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; +13943: } +13943: +13943: friend class __weak_ptr<_Tp, _Lp>; +13943: +13943: private: +13943: +13943: template +13943: using __esft_base_t = decltype(__enable_shared_from_this_base( +13943: std::declval&>(), +13943: std::declval<_Yp*>())); +13943: +13943: +13943: template +13943: struct __has_esft_base +13943: : false_type { }; +13943: +13943: template +13943: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> +13943: : __not_> { }; +13943: +13943: template::type> +13943: typename enable_if<__has_esft_base<_Yp2>::value>::type +13943: _M_enable_shared_from_this_with(_Yp* __p) noexcept +13943: { +13943: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) +13943: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); +13943: } +13943: +13943: template::type> +13943: typename enable_if::value>::type +13943: _M_enable_shared_from_this_with(_Yp*) noexcept +13943: { } +13943: +13943: void* +13943: _M_get_deleter(const std::type_info& __ti) const noexcept +13943: { return _M_refcount._M_get_deleter(__ti); } +13943: +13943: template friend class __shared_ptr; +13943: template friend class __weak_ptr; +13943: +13943: template +13943: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; +13943: +13943: template +13943: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; +13943: # 1789 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: element_type* _M_ptr; +13943: __shared_count<_Lp> _M_refcount; +13943: }; +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator==(const __shared_ptr<_Tp1, _Lp>& __a, +13943: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +13943: { return __a.get() == __b.get(); } +13943: +13943: template +13943: inline bool +13943: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +13943: { return !__a; } +13943: # 1821 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: template +13943: inline bool +13943: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +13943: { return !__a; } +13943: +13943: template +13943: inline bool +13943: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, +13943: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +13943: { return __a.get() != __b.get(); } +13943: +13943: template +13943: inline bool +13943: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +13943: { return (bool)__a; } +13943: +13943: template +13943: inline bool +13943: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +13943: { return (bool)__a; } +13943: +13943: template +13943: inline bool +13943: operator<(const __shared_ptr<_Tp, _Lp>& __a, +13943: const __shared_ptr<_Up, _Lp>& __b) noexcept +13943: { +13943: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; +13943: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; +13943: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; +13943: return less<_Vp>()(__a.get(), __b.get()); +13943: } +13943: +13943: template +13943: inline bool +13943: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +13943: { +13943: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; +13943: return less<_Tp_elt*>()(__a.get(), nullptr); +13943: } +13943: +13943: template +13943: inline bool +13943: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +13943: { +13943: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; +13943: return less<_Tp_elt*>()(nullptr, __a.get()); +13943: } +13943: +13943: template +13943: inline bool +13943: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, +13943: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +13943: { return !(__b < __a); } +13943: +13943: template +13943: inline bool +13943: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +13943: { return !(nullptr < __a); } +13943: +13943: template +13943: inline bool +13943: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +13943: { return !(__a < nullptr); } +13943: +13943: template +13943: inline bool +13943: operator>(const __shared_ptr<_Tp1, _Lp>& __a, +13943: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +13943: { return (__b < __a); } +13943: +13943: template +13943: inline bool +13943: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +13943: { return nullptr < __a; } +13943: +13943: template +13943: inline bool +13943: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +13943: { return __a < nullptr; } +13943: +13943: template +13943: inline bool +13943: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, +13943: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +13943: { return !(__a < __b); } +13943: +13943: template +13943: inline bool +13943: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +13943: { return !(__a < nullptr); } +13943: +13943: template +13943: inline bool +13943: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +13943: { return !(nullptr < __a); } +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept +13943: { __a.swap(__b); } +13943: # 1931 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: template +13943: inline __shared_ptr<_Tp, _Lp> +13943: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +13943: { +13943: using _Sp = __shared_ptr<_Tp, _Lp>; +13943: return _Sp(__r, static_cast(__r.get())); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline __shared_ptr<_Tp, _Lp> +13943: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +13943: { +13943: using _Sp = __shared_ptr<_Tp, _Lp>; +13943: return _Sp(__r, const_cast(__r.get())); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline __shared_ptr<_Tp, _Lp> +13943: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +13943: { +13943: using _Sp = __shared_ptr<_Tp, _Lp>; +13943: if (auto* __p = dynamic_cast(__r.get())) +13943: return _Sp(__r, __p); +13943: return _Sp(); +13943: } +13943: +13943: +13943: template +13943: inline __shared_ptr<_Tp, _Lp> +13943: reinterpret_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +13943: { +13943: using _Sp = __shared_ptr<_Tp, _Lp>; +13943: return _Sp(__r, reinterpret_cast(__r.get())); +13943: } +13943: +13943: +13943: template +13943: class __weak_ptr +13943: { +13943: template +13943: using _Compatible = typename +13943: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; +13943: +13943: +13943: template +13943: using _Assignable = _Compatible<_Yp, __weak_ptr&>; +13943: +13943: public: +13943: using element_type = typename remove_extent<_Tp>::type; +13943: +13943: constexpr __weak_ptr() noexcept +13943: : _M_ptr(nullptr), _M_refcount() +13943: { } +13943: +13943: __weak_ptr(const __weak_ptr&) noexcept = default; +13943: +13943: ~__weak_ptr() = default; +13943: # 2013 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +13943: template> +13943: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept +13943: : _M_refcount(__r._M_refcount) +13943: { _M_ptr = __r.lock().get(); } +13943: +13943: template> +13943: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept +13943: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) +13943: { } +13943: +13943: __weak_ptr(__weak_ptr&& __r) noexcept +13943: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) +13943: { __r._M_ptr = nullptr; } +13943: +13943: template> +13943: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept +13943: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) +13943: { __r._M_ptr = nullptr; } +13943: +13943: __weak_ptr& +13943: operator=(const __weak_ptr& __r) noexcept = default; +13943: +13943: template +13943: _Assignable<_Yp> +13943: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept +13943: { +13943: _M_ptr = __r.lock().get(); +13943: _M_refcount = __r._M_refcount; +13943: return *this; +13943: } +13943: +13943: template +13943: _Assignable<_Yp> +13943: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept +13943: { +13943: _M_ptr = __r._M_ptr; +13943: _M_refcount = __r._M_refcount; +13943: return *this; +13943: } +13943: +13943: __weak_ptr& +13943: operator=(__weak_ptr&& __r) noexcept +13943: { +13943: __weak_ptr(std::move(__r)).swap(*this); +13943: return *this; +13943: } +13943: +13943: template +13943: _Assignable<_Yp> +13943: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept +13943: { +13943: _M_ptr = __r.lock().get(); +13943: _M_refcount = std::move(__r._M_refcount); +13943: __r._M_ptr = nullptr; +13943: return *this; +13943: } +13943: +13943: __shared_ptr<_Tp, _Lp> +13943: lock() const noexcept +13943: { return __shared_ptr(*this, std::nothrow); } +13943: +13943: long +13943: use_count() const noexcept +13943: { return _M_refcount._M_get_use_count(); } +13943: +13943: bool +13943: expired() const noexcept +13943: { return _M_refcount._M_get_use_count() == 0; } +13943: +13943: template +13943: bool +13943: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept +13943: { return _M_refcount._M_less(__rhs._M_refcount); } +13943: +13943: template +13943: bool +13943: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept +13943: { return _M_refcount._M_less(__rhs._M_refcount); } +13943: +13943: void +13943: reset() noexcept +13943: { __weak_ptr().swap(*this); } +13943: +13943: void +13943: swap(__weak_ptr& __s) noexcept +13943: { +13943: std::swap(_M_ptr, __s._M_ptr); +13943: _M_refcount._M_swap(__s._M_refcount); +13943: } +13943: +13943: private: +13943: +13943: void +13943: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept +13943: { +13943: if (use_count() == 0) +13943: { +13943: _M_ptr = __ptr; +13943: _M_refcount = __refcount; +13943: } +13943: } +13943: +13943: template friend class __shared_ptr; +13943: template friend class __weak_ptr; +13943: friend class __enable_shared_from_this<_Tp, _Lp>; +13943: friend class enable_shared_from_this<_Tp>; +13943: +13943: +13943: +13943: +13943: element_type* _M_ptr; +13943: __weak_count<_Lp> _M_refcount; +13943: }; +13943: +13943: +13943: template +13943: inline void +13943: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept +13943: { __a.swap(__b); } +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: template +13943: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> +13943: { +13943: bool +13943: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept +13943: { return __lhs.owner_before(__rhs); } +13943: +13943: bool +13943: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept +13943: { return __lhs.owner_before(__rhs); } +13943: +13943: bool +13943: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept +13943: { return __lhs.owner_before(__rhs); } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: template<> +13943: struct _Sp_owner_less +13943: { +13943: template +13943: auto +13943: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept +13943: -> decltype(__lhs.owner_before(__rhs)) +13943: { return __lhs.owner_before(__rhs); } +13943: +13943: using is_transparent = void; +13943: }; +13943: +13943: template +13943: struct owner_less<__shared_ptr<_Tp, _Lp>> +13943: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> +13943: { }; +13943: +13943: template +13943: struct owner_less<__weak_ptr<_Tp, _Lp>> +13943: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> +13943: { }; +13943: +13943: +13943: template +13943: class __enable_shared_from_this +13943: { +13943: protected: +13943: constexpr __enable_shared_from_this() noexcept { } +13943: +13943: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } +13943: +13943: __enable_shared_from_this& +13943: operator=(const __enable_shared_from_this&) noexcept +13943: { return *this; } +13943: +13943: ~__enable_shared_from_this() { } +13943: +13943: public: +13943: __shared_ptr<_Tp, _Lp> +13943: shared_from_this() +13943: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } +13943: +13943: __shared_ptr +13943: shared_from_this() const +13943: { return __shared_ptr(this->_M_weak_this); } +13943: +13943: +13943: __weak_ptr<_Tp, _Lp> +13943: weak_from_this() noexcept +13943: { return this->_M_weak_this; } +13943: +13943: __weak_ptr +13943: weak_from_this() const noexcept +13943: { return this->_M_weak_this; } +13943: +13943: +13943: private: +13943: template +13943: void +13943: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept +13943: { _M_weak_this._M_assign(__p, __n); } +13943: +13943: friend const __enable_shared_from_this* +13943: __enable_shared_from_this_base(const __shared_count<_Lp>&, +13943: const __enable_shared_from_this* __p) +13943: { return __p; } +13943: +13943: template +13943: friend class __shared_ptr; +13943: +13943: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; +13943: }; +13943: +13943: template +13943: inline __shared_ptr<_Tp, _Lp> +13943: __allocate_shared(const _Alloc& __a, _Args&&... __args) +13943: { +13943: static_assert(!is_array<_Tp>::value, "make_shared not supported"); +13943: +13943: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: template +13943: inline __shared_ptr<_Tp, _Lp> +13943: __make_shared(_Args&&... __args) +13943: { +13943: typedef typename std::remove_const<_Tp>::type _Tp_nc; +13943: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: template +13943: struct hash<__shared_ptr<_Tp, _Lp>> +13943: : public __hash_base> +13943: { +13943: size_t +13943: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept +13943: { +13943: return hash::element_type*>()( +13943: __s.get()); +13943: } +13943: }; +13943: +13943: +13943: } +13943: # 54 "/usr/include/c++/14/bits/shared_ptr.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 68 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: inline std::basic_ostream<_Ch, _Tr>& +13943: operator<<(std::basic_ostream<_Ch, _Tr>& __os, +13943: const __shared_ptr<_Tp, _Lp>& __p) +13943: { +13943: __os << __p.get(); +13943: return __os; +13943: } +13943: +13943: template +13943: inline _Del* +13943: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept +13943: { +13943: +13943: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline _Del* +13943: get_deleter(const shared_ptr<_Tp>& __p) noexcept +13943: { +13943: +13943: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +13943: +13943: +13943: +13943: } +13943: # 111 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: using _NonArray = __enable_if_t::value, _Tp>; +13943: # 174 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: class shared_ptr : public __shared_ptr<_Tp> +13943: { +13943: template +13943: using _Constructible = typename enable_if< +13943: is_constructible<__shared_ptr<_Tp>, _Args...>::value +13943: >::type; +13943: +13943: template +13943: using _Assignable = typename enable_if< +13943: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& +13943: >::type; +13943: +13943: public: +13943: +13943: +13943: using element_type = typename __shared_ptr<_Tp>::element_type; +13943: +13943: +13943: +13943: +13943: using weak_type = weak_ptr<_Tp>; +13943: +13943: +13943: +13943: +13943: +13943: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } +13943: +13943: shared_ptr(const shared_ptr&) noexcept = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: explicit +13943: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } +13943: # 228 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template> +13943: shared_ptr(_Yp* __p, _Deleter __d) +13943: : __shared_ptr<_Tp>(__p, std::move(__d)) { } +13943: # 246 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: shared_ptr(nullptr_t __p, _Deleter __d) +13943: : __shared_ptr<_Tp>(__p, std::move(__d)) { } +13943: # 265 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template> +13943: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) +13943: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } +13943: # 285 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) +13943: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } +13943: # 309 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept +13943: : __shared_ptr<_Tp>(__r, __p) { } +13943: # 348 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template&>> +13943: shared_ptr(const shared_ptr<_Yp>& __r) noexcept +13943: : __shared_ptr<_Tp>(__r) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: shared_ptr(shared_ptr&& __r) noexcept +13943: : __shared_ptr<_Tp>(std::move(__r)) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template>> +13943: shared_ptr(shared_ptr<_Yp>&& __r) noexcept +13943: : __shared_ptr<_Tp>(std::move(__r)) { } +13943: # 378 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template&>> +13943: explicit shared_ptr(const weak_ptr<_Yp>& __r) +13943: : __shared_ptr<_Tp>(__r) { } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: template>> +13943: shared_ptr(auto_ptr<_Yp>&& __r); +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: template>> +13943: shared_ptr(unique_ptr<_Yp, _Del>&& __r) +13943: : __shared_ptr<_Tp>(std::move(__r)) { } +13943: # 411 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } +13943: +13943: shared_ptr& operator=(const shared_ptr&) noexcept = default; +13943: +13943: template +13943: _Assignable&> +13943: operator=(const shared_ptr<_Yp>& __r) noexcept +13943: { +13943: this->__shared_ptr<_Tp>::operator=(__r); +13943: return *this; +13943: } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: template +13943: _Assignable> +13943: operator=(auto_ptr<_Yp>&& __r) +13943: { +13943: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +13943: return *this; +13943: } +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: shared_ptr& +13943: operator=(shared_ptr&& __r) noexcept +13943: { +13943: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +13943: return *this; +13943: } +13943: +13943: template +13943: _Assignable> +13943: operator=(shared_ptr<_Yp>&& __r) noexcept +13943: { +13943: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +13943: return *this; +13943: } +13943: +13943: template +13943: _Assignable> +13943: operator=(unique_ptr<_Yp, _Del>&& __r) +13943: { +13943: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +13943: return *this; +13943: } +13943: +13943: private: +13943: +13943: template +13943: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) +13943: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: friend shared_ptr<_NonArray<_Yp>> +13943: allocate_shared(const _Alloc&, _Args&&...); +13943: +13943: template +13943: friend shared_ptr<_NonArray<_Yp>> +13943: make_shared(_Args&&...); +13943: # 534 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) noexcept +13943: : __shared_ptr<_Tp>(__r, std::nothrow) { } +13943: +13943: friend class weak_ptr<_Tp>; +13943: }; +13943: +13943: +13943: template +13943: shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>; +13943: template +13943: shared_ptr(unique_ptr<_Tp, _Del>) -> shared_ptr<_Tp>; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +13943: { return __a.get() == __b.get(); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +13943: { return !__a; } +13943: # 579 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +13943: { return !__a; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +13943: { return __a.get() != __b.get(); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +13943: { return (bool)__a; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +13943: { return (bool)__a; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +13943: { +13943: using _Tp_elt = typename shared_ptr<_Tp>::element_type; +13943: using _Up_elt = typename shared_ptr<_Up>::element_type; +13943: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; +13943: return less<_Vp>()(__a.get(), __b.get()); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +13943: { +13943: using _Tp_elt = typename shared_ptr<_Tp>::element_type; +13943: return less<_Tp_elt*>()(__a.get(), nullptr); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +13943: { +13943: using _Tp_elt = typename shared_ptr<_Tp>::element_type; +13943: return less<_Tp_elt*>()(nullptr, __a.get()); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +13943: { return !(__b < __a); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +13943: { return !(nullptr < __a); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +13943: { return !(__a < nullptr); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +13943: { return (__b < __a); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +13943: { return nullptr < __a; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +13943: { return __a < nullptr; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +13943: { return !(__a < __b); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +13943: { return !(__a < nullptr); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] inline bool +13943: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +13943: { return !(nullptr < __a); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept +13943: { __a.swap(__b); } +13943: +13943: +13943: +13943: +13943: template +13943: inline shared_ptr<_Tp> +13943: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept +13943: { +13943: using _Sp = shared_ptr<_Tp>; +13943: return _Sp(__r, static_cast(__r.get())); +13943: } +13943: +13943: +13943: template +13943: inline shared_ptr<_Tp> +13943: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept +13943: { +13943: using _Sp = shared_ptr<_Tp>; +13943: return _Sp(__r, const_cast(__r.get())); +13943: } +13943: +13943: +13943: template +13943: inline shared_ptr<_Tp> +13943: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept +13943: { +13943: using _Sp = shared_ptr<_Tp>; +13943: if (auto* __p = dynamic_cast(__r.get())) +13943: return _Sp(__r, __p); +13943: return _Sp(); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: inline shared_ptr<_Tp> +13943: reinterpret_pointer_cast(const shared_ptr<_Up>& __r) noexcept +13943: { +13943: using _Sp = shared_ptr<_Tp>; +13943: return _Sp(__r, reinterpret_cast(__r.get())); +13943: } +13943: # 809 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: class weak_ptr : public __weak_ptr<_Tp> +13943: { +13943: template +13943: using _Constructible = typename enable_if< +13943: is_constructible<__weak_ptr<_Tp>, _Arg>::value +13943: >::type; +13943: +13943: template +13943: using _Assignable = typename enable_if< +13943: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& +13943: >::type; +13943: +13943: public: +13943: constexpr weak_ptr() noexcept = default; +13943: +13943: template&>> +13943: weak_ptr(const shared_ptr<_Yp>& __r) noexcept +13943: : __weak_ptr<_Tp>(__r) { } +13943: +13943: weak_ptr(const weak_ptr&) noexcept = default; +13943: +13943: template&>> +13943: weak_ptr(const weak_ptr<_Yp>& __r) noexcept +13943: : __weak_ptr<_Tp>(__r) { } +13943: +13943: weak_ptr(weak_ptr&&) noexcept = default; +13943: +13943: template>> +13943: weak_ptr(weak_ptr<_Yp>&& __r) noexcept +13943: : __weak_ptr<_Tp>(std::move(__r)) { } +13943: +13943: weak_ptr& +13943: operator=(const weak_ptr& __r) noexcept = default; +13943: +13943: template +13943: _Assignable&> +13943: operator=(const weak_ptr<_Yp>& __r) noexcept +13943: { +13943: this->__weak_ptr<_Tp>::operator=(__r); +13943: return *this; +13943: } +13943: +13943: template +13943: _Assignable&> +13943: operator=(const shared_ptr<_Yp>& __r) noexcept +13943: { +13943: this->__weak_ptr<_Tp>::operator=(__r); +13943: return *this; +13943: } +13943: +13943: weak_ptr& +13943: operator=(weak_ptr&& __r) noexcept = default; +13943: +13943: template +13943: _Assignable> +13943: operator=(weak_ptr<_Yp>&& __r) noexcept +13943: { +13943: this->__weak_ptr<_Tp>::operator=(std::move(__r)); +13943: return *this; +13943: } +13943: +13943: shared_ptr<_Tp> +13943: lock() const noexcept +13943: { return shared_ptr<_Tp>(*this, std::nothrow); } +13943: }; +13943: +13943: +13943: template +13943: weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept +13943: { __a.swap(__b); } +13943: +13943: +13943: +13943: template +13943: struct owner_less; +13943: +13943: +13943: template<> +13943: struct owner_less : _Sp_owner_less +13943: { }; +13943: +13943: +13943: template +13943: struct owner_less> +13943: : public _Sp_owner_less, weak_ptr<_Tp>> +13943: { }; +13943: +13943: +13943: template +13943: struct owner_less> +13943: : public _Sp_owner_less, shared_ptr<_Tp>> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class enable_shared_from_this +13943: { +13943: protected: +13943: constexpr enable_shared_from_this() noexcept { } +13943: +13943: enable_shared_from_this(const enable_shared_from_this&) noexcept { } +13943: +13943: enable_shared_from_this& +13943: operator=(const enable_shared_from_this&) noexcept +13943: { return *this; } +13943: +13943: ~enable_shared_from_this() { } +13943: +13943: public: +13943: shared_ptr<_Tp> +13943: shared_from_this() +13943: { return shared_ptr<_Tp>(this->_M_weak_this); } +13943: +13943: shared_ptr +13943: shared_from_this() const +13943: { return shared_ptr(this->_M_weak_this); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: weak_ptr<_Tp> +13943: weak_from_this() noexcept +13943: { return this->_M_weak_this; } +13943: +13943: weak_ptr +13943: weak_from_this() const noexcept +13943: { return this->_M_weak_this; } +13943: +13943: +13943: +13943: private: +13943: template +13943: void +13943: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept +13943: { _M_weak_this._M_assign(__p, __n); } +13943: +13943: +13943: friend const enable_shared_from_this* +13943: __enable_shared_from_this_base(const __shared_count<>&, +13943: const enable_shared_from_this* __p) +13943: { return __p; } +13943: +13943: template +13943: friend class __shared_ptr; +13943: +13943: mutable weak_ptr<_Tp> _M_weak_this; +13943: }; +13943: # 986 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: inline shared_ptr<_NonArray<_Tp>> +13943: allocate_shared(const _Alloc& __a, _Args&&... __args) +13943: { +13943: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 1001 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: inline shared_ptr<_NonArray<_Tp>> +13943: make_shared(_Args&&... __args) +13943: { +13943: using _Alloc = allocator; +13943: _Alloc __a; +13943: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 1150 "/usr/include/c++/14/bits/shared_ptr.h" 3 +13943: template +13943: struct hash> +13943: : public __hash_base> +13943: { +13943: size_t +13943: operator()(const shared_ptr<_Tp>& __s) const noexcept +13943: { +13943: return std::hash::element_type*>()(__s.get()); +13943: } +13943: }; +13943: +13943: +13943: template +13943: static constexpr bool __is_shared_ptr = false; +13943: template +13943: static constexpr bool __is_shared_ptr> = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace __detail::__variant +13943: { +13943: template struct _Never_valueless_alt; +13943: +13943: +13943: +13943: template +13943: struct _Never_valueless_alt> +13943: : std::true_type +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct _Never_valueless_alt> +13943: : std::true_type +13943: { }; +13943: } +13943: +13943: +13943: +13943: } +13943: # 81 "/usr/include/c++/14/memory" 2 3 +13943: # 1 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 1 3 +13943: # 62 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 74 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: struct _Sp_locker +13943: { +13943: _Sp_locker(const _Sp_locker&) = delete; +13943: _Sp_locker& operator=(const _Sp_locker&) = delete; +13943: +13943: +13943: explicit +13943: _Sp_locker(const void*) noexcept; +13943: _Sp_locker(const void*, const void*) noexcept; +13943: ~_Sp_locker(); +13943: +13943: private: +13943: unsigned char _M_key1; +13943: unsigned char _M_key2; +13943: +13943: +13943: +13943: }; +13943: # 101 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: template +13943: +13943: inline bool +13943: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>*) +13943: { +13943: +13943: return __gthread_active_p() == 0; +13943: +13943: +13943: +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: atomic_is_lock_free(const shared_ptr<_Tp>* __p) +13943: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } +13943: # 130 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: template +13943: +13943: inline shared_ptr<_Tp> +13943: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) +13943: { +13943: _Sp_locker __lock{__p}; +13943: return *__p; +13943: } +13943: +13943: template +13943: +13943: inline shared_ptr<_Tp> +13943: atomic_load(const shared_ptr<_Tp>* __p) +13943: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } +13943: +13943: template +13943: +13943: inline __shared_ptr<_Tp, _Lp> +13943: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) +13943: { +13943: _Sp_locker __lock{__p}; +13943: return *__p; +13943: } +13943: +13943: template +13943: +13943: inline __shared_ptr<_Tp, _Lp> +13943: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) +13943: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } +13943: # 170 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: template +13943: +13943: inline void +13943: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, +13943: memory_order) +13943: { +13943: _Sp_locker __lock{__p}; +13943: __p->swap(__r); +13943: } +13943: +13943: template +13943: +13943: inline void +13943: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) +13943: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } +13943: +13943: template +13943: +13943: inline void +13943: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, +13943: __shared_ptr<_Tp, _Lp> __r, +13943: memory_order) +13943: { +13943: _Sp_locker __lock{__p}; +13943: __p->swap(__r); +13943: } +13943: +13943: template +13943: +13943: inline void +13943: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) +13943: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } +13943: # 211 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: template +13943: +13943: inline shared_ptr<_Tp> +13943: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, +13943: memory_order) +13943: { +13943: _Sp_locker __lock{__p}; +13943: __p->swap(__r); +13943: return __r; +13943: } +13943: +13943: template +13943: +13943: inline shared_ptr<_Tp> +13943: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) +13943: { +13943: return std::atomic_exchange_explicit(__p, std::move(__r), +13943: memory_order_seq_cst); +13943: } +13943: +13943: template +13943: +13943: inline __shared_ptr<_Tp, _Lp> +13943: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, +13943: __shared_ptr<_Tp, _Lp> __r, +13943: memory_order) +13943: { +13943: _Sp_locker __lock{__p}; +13943: __p->swap(__r); +13943: return __r; +13943: } +13943: +13943: template +13943: +13943: inline __shared_ptr<_Tp, _Lp> +13943: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) +13943: { +13943: return std::atomic_exchange_explicit(__p, std::move(__r), +13943: memory_order_seq_cst); +13943: } +13943: # 264 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: template +13943: +13943: bool +13943: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, +13943: shared_ptr<_Tp>* __v, +13943: shared_ptr<_Tp> __w, +13943: memory_order, +13943: memory_order) +13943: { +13943: shared_ptr<_Tp> __x; +13943: _Sp_locker __lock{__p, __v}; +13943: owner_less> __less; +13943: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) +13943: { +13943: __x = std::move(*__p); +13943: *__p = std::move(__w); +13943: return true; +13943: } +13943: __x = std::move(*__v); +13943: *__v = *__p; +13943: return false; +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, +13943: shared_ptr<_Tp> __w) +13943: { +13943: return std::atomic_compare_exchange_strong_explicit(__p, __v, +13943: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, +13943: shared_ptr<_Tp>* __v, +13943: shared_ptr<_Tp> __w, +13943: memory_order __success, +13943: memory_order __failure) +13943: { +13943: return std::atomic_compare_exchange_strong_explicit(__p, __v, +13943: std::move(__w), __success, __failure); +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, +13943: shared_ptr<_Tp> __w) +13943: { +13943: return std::atomic_compare_exchange_weak_explicit(__p, __v, +13943: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +13943: } +13943: +13943: template +13943: +13943: bool +13943: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, +13943: __shared_ptr<_Tp, _Lp>* __v, +13943: __shared_ptr<_Tp, _Lp> __w, +13943: memory_order, +13943: memory_order) +13943: { +13943: __shared_ptr<_Tp, _Lp> __x; +13943: _Sp_locker __lock{__p, __v}; +13943: owner_less<__shared_ptr<_Tp, _Lp>> __less; +13943: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) +13943: { +13943: __x = std::move(*__p); +13943: *__p = std::move(__w); +13943: return true; +13943: } +13943: __x = std::move(*__v); +13943: *__v = *__p; +13943: return false; +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, +13943: __shared_ptr<_Tp, _Lp>* __v, +13943: __shared_ptr<_Tp, _Lp> __w) +13943: { +13943: return std::atomic_compare_exchange_strong_explicit(__p, __v, +13943: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, +13943: __shared_ptr<_Tp, _Lp>* __v, +13943: __shared_ptr<_Tp, _Lp> __w, +13943: memory_order __success, +13943: memory_order __failure) +13943: { +13943: return std::atomic_compare_exchange_strong_explicit(__p, __v, +13943: std::move(__w), __success, __failure); +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, +13943: __shared_ptr<_Tp, _Lp>* __v, +13943: __shared_ptr<_Tp, _Lp> __w) +13943: { +13943: return std::atomic_compare_exchange_weak_explicit(__p, __v, +13943: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +13943: } +13943: # 867 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +13943: +13943: } +13943: # 82 "/usr/include/c++/14/memory" 2 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/backward/auto_ptr.h" 1 3 +13943: # 36 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 47 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: template +13943: struct auto_ptr_ref +13943: { +13943: _Tp1* _M_ptr; +13943: +13943: explicit +13943: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } +13943: } __attribute__ ((__deprecated__)); +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: # 92 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: template +13943: class auto_ptr +13943: { +13943: private: +13943: _Tp* _M_ptr; +13943: +13943: public: +13943: +13943: typedef _Tp element_type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } +13943: # 118 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } +13943: # 130 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: template +13943: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } +13943: # 141 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: auto_ptr& +13943: operator=(auto_ptr& __a) throw() +13943: { +13943: reset(__a.release()); +13943: return *this; +13943: } +13943: # 158 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: template +13943: auto_ptr& +13943: operator=(auto_ptr<_Tp1>& __a) throw() +13943: { +13943: reset(__a.release()); +13943: return *this; +13943: } +13943: # 176 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: ~auto_ptr() { delete _M_ptr; } +13943: # 186 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: element_type& +13943: operator*() const throw() +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) std::__glibcxx_assert_fail(); } while (false); +13943: return *_M_ptr; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: element_type* +13943: operator->() const throw() +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_ptr; +13943: } +13943: # 216 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: element_type* +13943: get() const throw() { return _M_ptr; } +13943: # 230 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: element_type* +13943: release() throw() +13943: { +13943: element_type* __tmp = _M_ptr; +13943: _M_ptr = 0; +13943: return __tmp; +13943: } +13943: # 245 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: void +13943: reset(element_type* __p = 0) throw() +13943: { +13943: if (__p != _M_ptr) +13943: { +13943: delete _M_ptr; +13943: _M_ptr = __p; +13943: } +13943: } +13943: # 270 "/usr/include/c++/14/backward/auto_ptr.h" 3 +13943: auto_ptr(auto_ptr_ref __ref) throw() +13943: : _M_ptr(__ref._M_ptr) { } +13943: +13943: auto_ptr& +13943: operator=(auto_ptr_ref __ref) throw() +13943: { +13943: if (__ref._M_ptr != this->get()) +13943: { +13943: delete _M_ptr; +13943: _M_ptr = __ref._M_ptr; +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: operator auto_ptr_ref<_Tp1>() throw() +13943: { return auto_ptr_ref<_Tp1>(this->release()); } +13943: +13943: template +13943: operator auto_ptr<_Tp1>() throw() +13943: { return auto_ptr<_Tp1>(this->release()); } +13943: } __attribute__ ((__deprecated__ ("use '" "std::unique_ptr" "' instead"))); +13943: +13943: +13943: +13943: template<> +13943: class auto_ptr +13943: { +13943: public: +13943: typedef void element_type; +13943: } __attribute__ ((__deprecated__)); +13943: +13943: +13943: +13943: template<_Lock_policy _Lp> +13943: template +13943: inline +13943: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) +13943: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) +13943: { __r.release(); } +13943: +13943: template +13943: template +13943: inline +13943: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) +13943: : _M_ptr(__r.get()), _M_refcount() +13943: { +13943: +13943: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); +13943: _Tp1* __tmp = __r.get(); +13943: _M_refcount = __shared_count<_Lp>(std::move(__r)); +13943: _M_enable_shared_from_this_with(__tmp); +13943: } +13943: +13943: template +13943: template +13943: inline +13943: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) +13943: : __shared_ptr<_Tp>(std::move(__r)) { } +13943: +13943: +13943: template +13943: template +13943: inline +13943: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept +13943: : _M_t(__u.release(), deleter_type()) { } +13943: +13943: +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: } +13943: # 87 "/usr/include/c++/14/memory" 2 3 +13943: # 115 "/usr/include/c++/14/memory" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 116 "/usr/include/c++/14/memory" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 136 "/usr/include/c++/14/memory" 3 +13943: enum class pointer_safety { relaxed, preferred, strict }; +13943: +13943: +13943: inline void +13943: declare_reachable(void*) { } +13943: +13943: +13943: template +13943: inline _Tp* +13943: undeclare_reachable(_Tp* __p) { return __p; } +13943: +13943: +13943: inline void +13943: declare_no_pointers(char*, size_t) { } +13943: +13943: +13943: inline void +13943: undeclare_no_pointers(char*, size_t) { } +13943: +13943: +13943: inline pointer_safety +13943: get_pointer_safety() noexcept { return pointer_safety::relaxed; } +13943: +13943: +13943: +13943: } +13943: # 171 "/usr/include/c++/14/memory" 3 +13943: # 1 "/usr/include/c++/14/pstl/glue_memory_defs.h" 1 3 +13943: # 13 "/usr/include/c++/14/pstl/glue_memory_defs.h" 3 +13943: # 1 "/usr/include/c++/14/pstl/execution_defs.h" 1 3 +13943: # 15 "/usr/include/c++/14/pstl/execution_defs.h" 3 +13943: namespace __pstl +13943: { +13943: namespace execution +13943: { +13943: inline namespace v1 +13943: { +13943: +13943: +13943: class sequenced_policy +13943: { +13943: }; +13943: +13943: +13943: class parallel_policy +13943: { +13943: }; +13943: +13943: +13943: class parallel_unsequenced_policy +13943: { +13943: }; +13943: +13943: class unsequenced_policy +13943: { +13943: }; +13943: +13943: +13943: inline constexpr sequenced_policy seq{}; +13943: inline constexpr parallel_policy par{}; +13943: inline constexpr parallel_unsequenced_policy par_unseq{}; +13943: inline constexpr unsequenced_policy unseq{}; +13943: +13943: +13943: template +13943: struct is_execution_policy : std::false_type +13943: { +13943: }; +13943: +13943: template <> +13943: struct is_execution_policy<__pstl::execution::sequenced_policy> : std::true_type +13943: { +13943: }; +13943: template <> +13943: struct is_execution_policy<__pstl::execution::parallel_policy> : std::true_type +13943: { +13943: }; +13943: template <> +13943: struct is_execution_policy<__pstl::execution::parallel_unsequenced_policy> : std::true_type +13943: { +13943: }; +13943: template <> +13943: struct is_execution_policy<__pstl::execution::unsequenced_policy> : std::true_type +13943: { +13943: }; +13943: +13943: +13943: template +13943: constexpr bool is_execution_policy_v = __pstl::execution::is_execution_policy<_Tp>::value; +13943: +13943: +13943: } +13943: } +13943: +13943: namespace __internal +13943: { +13943: template +13943: +13943: using __enable_if_execution_policy = +13943: typename std::enable_if<__pstl::execution::is_execution_policy>::value, +13943: _Tp>::type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __serial_tag; +13943: template +13943: struct __parallel_tag; +13943: +13943: } +13943: +13943: } +13943: # 14 "/usr/include/c++/14/pstl/glue_memory_defs.h" 2 3 +13943: +13943: namespace std +13943: { +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: uninitialized_copy(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: uninitialized_copy_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: uninitialized_move(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: uninitialized_move_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: uninitialized_fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: uninitialized_fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, const _Tp& __value); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: destroy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: destroy_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: uninitialized_default_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: uninitialized_default_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: uninitialized_value_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: uninitialized_value_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n); +13943: +13943: } +13943: # 172 "/usr/include/c++/14/memory" 2 3 +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/usr/include/c++/14/string" 1 3 +13943: # 36 "/usr/include/c++/14/string" 3 +13943: +13943: # 37 "/usr/include/c++/14/string" 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/char_traits.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: # 46 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: # 1 "/usr/include/c++/14/cwchar" 1 3 +13943: # 39 "/usr/include/c++/14/cwchar" 3 +13943: +13943: # 40 "/usr/include/c++/14/cwchar" 3 +13943: # 47 "/usr/include/c++/14/bits/char_traits.h" 2 3 +13943: # 64 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: # 68 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wstringop-overflow" +13943: #pragma GCC diagnostic ignored "-Wstringop-overread" +13943: #pragma GCC diagnostic ignored "-Warray-bounds" +13943: # 83 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: template +13943: struct _Char_types +13943: { +13943: typedef unsigned long int_type; +13943: +13943: typedef std::streampos pos_type; +13943: typedef std::streamoff off_type; +13943: typedef std::mbstate_t state_type; +13943: +13943: }; +13943: # 110 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: template +13943: struct char_traits +13943: { +13943: typedef _CharT char_type; +13943: typedef typename _Char_types<_CharT>::int_type int_type; +13943: +13943: typedef typename _Char_types<_CharT>::pos_type pos_type; +13943: typedef typename _Char_types<_CharT>::off_type off_type; +13943: typedef typename _Char_types<_CharT>::state_type state_type; +13943: +13943: +13943: +13943: +13943: +13943: static constexpr void +13943: assign(char_type& __c1, const char_type& __c2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: __c1 = __c2; +13943: } +13943: +13943: static constexpr bool +13943: eq(const char_type& __c1, const char_type& __c2) +13943: { return __c1 == __c2; } +13943: +13943: static constexpr bool +13943: lt(const char_type& __c1, const char_type& __c2) +13943: { return __c1 < __c2; } +13943: +13943: static constexpr int +13943: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); +13943: +13943: static constexpr std::size_t +13943: length(const char_type* __s); +13943: +13943: static constexpr const char_type* +13943: find(const char_type* __s, std::size_t __n, const char_type& __a); +13943: +13943: static char_type* +13943: move(char_type* __s1, const char_type* __s2, std::size_t __n); +13943: +13943: static char_type* +13943: copy(char_type* __s1, const char_type* __s2, std::size_t __n); +13943: +13943: static char_type* +13943: assign(char_type* __s, std::size_t __n, char_type __a); +13943: +13943: static constexpr char_type +13943: to_char_type(const int_type& __c) +13943: { return static_cast(__c); } +13943: +13943: static constexpr int_type +13943: to_int_type(const char_type& __c) +13943: { return static_cast(__c); } +13943: +13943: static constexpr bool +13943: eq_int_type(const int_type& __c1, const int_type& __c2) +13943: { return __c1 == __c2; } +13943: +13943: +13943: static constexpr int_type +13943: eof() +13943: { return static_cast(-1); } +13943: +13943: static constexpr int_type +13943: not_eof(const int_type& __c) +13943: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } +13943: +13943: }; +13943: +13943: template +13943: constexpr int +13943: char_traits<_CharT>:: +13943: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) +13943: { +13943: for (std::size_t __i = 0; __i < __n; ++__i) +13943: if (lt(__s1[__i], __s2[__i])) +13943: return -1; +13943: else if (lt(__s2[__i], __s1[__i])) +13943: return 1; +13943: return 0; +13943: } +13943: +13943: template +13943: constexpr std::size_t +13943: char_traits<_CharT>:: +13943: length(const char_type* __p) +13943: { +13943: std::size_t __i = 0; +13943: while (!eq(__p[__i], char_type())) +13943: ++__i; +13943: return __i; +13943: } +13943: +13943: template +13943: constexpr const typename char_traits<_CharT>::char_type* +13943: char_traits<_CharT>:: +13943: find(const char_type* __s, std::size_t __n, const char_type& __a) +13943: { +13943: for (std::size_t __i = 0; __i < __n; ++__i) +13943: if (eq(__s[__i], __a)) +13943: return __s + __i; +13943: return 0; +13943: } +13943: +13943: template +13943: +13943: typename char_traits<_CharT>::char_type* +13943: char_traits<_CharT>:: +13943: move(char_type* __s1, const char_type* __s2, std::size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: # 246 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: __builtin_memmove(__s1, __s2, __n * sizeof(char_type)); +13943: return __s1; +13943: } +13943: +13943: template +13943: +13943: typename char_traits<_CharT>::char_type* +13943: char_traits<_CharT>:: +13943: copy(char_type* __s1, const char_type* __s2, std::size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: # 266 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: __builtin_memcpy(__s1, __s2, __n * sizeof(char_type)); +13943: return __s1; +13943: } +13943: +13943: template +13943: +13943: typename char_traits<_CharT>::char_type* +13943: char_traits<_CharT>:: +13943: assign(char_type* __s, std::size_t __n, char_type __a) +13943: { +13943: # 285 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: if constexpr (sizeof(_CharT) == 1 && __is_trivial(_CharT)) +13943: { +13943: if (__n) +13943: { +13943: unsigned char __c; +13943: __builtin_memcpy(&__c, __builtin_addressof(__a), 1); +13943: __builtin_memset(__s, __c, __n); +13943: } +13943: } +13943: else +13943: { +13943: for (std::size_t __i = 0; __i < __n; ++__i) +13943: __s[__i] = __a; +13943: } +13943: return __s; +13943: } +13943: +13943: +13943: } +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 322 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: template +13943: struct char_traits : public __gnu_cxx::char_traits<_CharT> +13943: { }; +13943: +13943: +13943: +13943: template<> +13943: struct char_traits +13943: { +13943: typedef char char_type; +13943: typedef int int_type; +13943: +13943: typedef streampos pos_type; +13943: typedef streamoff off_type; +13943: typedef mbstate_t state_type; +13943: +13943: +13943: +13943: +13943: +13943: static constexpr void +13943: assign(char_type& __c1, const char_type& __c2) noexcept +13943: { +13943: +13943: +13943: +13943: +13943: +13943: __c1 = __c2; +13943: } +13943: +13943: static constexpr bool +13943: eq(const char_type& __c1, const char_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: static constexpr bool +13943: lt(const char_type& __c1, const char_type& __c2) noexcept +13943: { +13943: +13943: return (static_cast(__c1) +13943: < static_cast(__c2)); +13943: } +13943: +13943: static constexpr int +13943: compare(const char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return 0; +13943: +13943: if (std::__is_constant_evaluated()) +13943: { +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: if (lt(__s1[__i], __s2[__i])) +13943: return -1; +13943: else if (lt(__s2[__i], __s1[__i])) +13943: return 1; +13943: return 0; +13943: } +13943: +13943: return __builtin_memcmp(__s1, __s2, __n); +13943: } +13943: +13943: static constexpr size_t +13943: length(const char_type* __s) +13943: { +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __gnu_cxx::char_traits::length(__s); +13943: +13943: return __builtin_strlen(__s); +13943: } +13943: +13943: static constexpr const char_type* +13943: find(const char_type* __s, size_t __n, const char_type& __a) +13943: { +13943: if (__n == 0) +13943: return 0; +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __gnu_cxx::char_traits::find(__s, __n, __a); +13943: +13943: return static_cast(__builtin_memchr(__s, __a, __n)); +13943: } +13943: +13943: static char_type* +13943: move(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return static_cast(__builtin_memmove(__s1, __s2, __n)); +13943: } +13943: +13943: static char_type* +13943: copy(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return static_cast(__builtin_memcpy(__s1, __s2, __n)); +13943: } +13943: +13943: static char_type* +13943: assign(char_type* __s, size_t __n, char_type __a) +13943: { +13943: if (__n == 0) +13943: return __s; +13943: +13943: +13943: +13943: +13943: return static_cast(__builtin_memset(__s, __a, __n)); +13943: } +13943: +13943: static constexpr char_type +13943: to_char_type(const int_type& __c) noexcept +13943: { return static_cast(__c); } +13943: +13943: +13943: +13943: static constexpr int_type +13943: to_int_type(const char_type& __c) noexcept +13943: { return static_cast(static_cast(__c)); } +13943: +13943: static constexpr bool +13943: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: +13943: static constexpr int_type +13943: eof() noexcept +13943: { return static_cast(-1); } +13943: +13943: static constexpr int_type +13943: not_eof(const int_type& __c) noexcept +13943: { return (__c == eof()) ? 0 : __c; } +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: template<> +13943: struct char_traits +13943: { +13943: typedef wchar_t char_type; +13943: typedef wint_t int_type; +13943: +13943: typedef streamoff off_type; +13943: typedef wstreampos pos_type; +13943: typedef mbstate_t state_type; +13943: +13943: +13943: +13943: +13943: +13943: static constexpr void +13943: assign(char_type& __c1, const char_type& __c2) noexcept +13943: { +13943: +13943: +13943: +13943: +13943: +13943: __c1 = __c2; +13943: } +13943: +13943: static constexpr bool +13943: eq(const char_type& __c1, const char_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: static constexpr bool +13943: lt(const char_type& __c1, const char_type& __c2) noexcept +13943: { return __c1 < __c2; } +13943: +13943: static constexpr int +13943: compare(const char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return 0; +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __gnu_cxx::char_traits::compare(__s1, __s2, __n); +13943: +13943: return wmemcmp(__s1, __s2, __n); +13943: } +13943: +13943: static constexpr size_t +13943: length(const char_type* __s) +13943: { +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __gnu_cxx::char_traits::length(__s); +13943: +13943: return wcslen(__s); +13943: } +13943: +13943: static constexpr const char_type* +13943: find(const char_type* __s, size_t __n, const char_type& __a) +13943: { +13943: if (__n == 0) +13943: return 0; +13943: +13943: if (std::__is_constant_evaluated()) +13943: return __gnu_cxx::char_traits::find(__s, __n, __a); +13943: +13943: return wmemchr(__s, __a, __n); +13943: } +13943: +13943: static char_type* +13943: move(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return wmemmove(__s1, __s2, __n); +13943: } +13943: +13943: static char_type* +13943: copy(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return wmemcpy(__s1, __s2, __n); +13943: } +13943: +13943: static char_type* +13943: assign(char_type* __s, size_t __n, char_type __a) +13943: { +13943: if (__n == 0) +13943: return __s; +13943: +13943: +13943: +13943: +13943: return wmemset(__s, __a, __n); +13943: } +13943: +13943: static constexpr char_type +13943: to_char_type(const int_type& __c) noexcept +13943: { return char_type(__c); } +13943: +13943: static constexpr int_type +13943: to_int_type(const char_type& __c) noexcept +13943: { return int_type(__c); } +13943: +13943: static constexpr bool +13943: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: +13943: static constexpr int_type +13943: eof() noexcept +13943: { return static_cast((0xffffffffu)); } +13943: +13943: static constexpr int_type +13943: not_eof(const int_type& __c) noexcept +13943: { return eq_int_type(__c, eof()) ? 0 : __c; } +13943: +13943: }; +13943: # 732 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: +13943: } +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template<> +13943: struct char_traits +13943: { +13943: typedef char16_t char_type; +13943: +13943: typedef short unsigned int int_type; +13943: +13943: +13943: +13943: +13943: typedef streamoff off_type; +13943: typedef u16streampos pos_type; +13943: typedef mbstate_t state_type; +13943: +13943: +13943: +13943: +13943: +13943: static constexpr void +13943: assign(char_type& __c1, const char_type& __c2) noexcept +13943: { +13943: +13943: +13943: +13943: +13943: +13943: __c1 = __c2; +13943: } +13943: +13943: static constexpr bool +13943: eq(const char_type& __c1, const char_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: static constexpr bool +13943: lt(const char_type& __c1, const char_type& __c2) noexcept +13943: { return __c1 < __c2; } +13943: +13943: static constexpr int +13943: compare(const char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: if (lt(__s1[__i], __s2[__i])) +13943: return -1; +13943: else if (lt(__s2[__i], __s1[__i])) +13943: return 1; +13943: return 0; +13943: } +13943: +13943: static constexpr size_t +13943: length(const char_type* __s) +13943: { +13943: size_t __i = 0; +13943: while (!eq(__s[__i], char_type())) +13943: ++__i; +13943: return __i; +13943: } +13943: +13943: static constexpr const char_type* +13943: find(const char_type* __s, size_t __n, const char_type& __a) +13943: { +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: if (eq(__s[__i], __a)) +13943: return __s + __i; +13943: return 0; +13943: } +13943: +13943: static char_type* +13943: move(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return (static_cast +13943: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); +13943: } +13943: +13943: static char_type* +13943: copy(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return (static_cast +13943: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); +13943: } +13943: +13943: static char_type* +13943: assign(char_type* __s, size_t __n, char_type __a) +13943: { +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: assign(__s[__i], __a); +13943: return __s; +13943: } +13943: +13943: static constexpr char_type +13943: to_char_type(const int_type& __c) noexcept +13943: { return char_type(__c); } +13943: +13943: static constexpr bool +13943: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: +13943: static constexpr int_type +13943: to_int_type(const char_type& __c) noexcept +13943: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } +13943: +13943: static constexpr int_type +13943: eof() noexcept +13943: { return static_cast(-1); } +13943: +13943: static constexpr int_type +13943: not_eof(const int_type& __c) noexcept +13943: { return eq_int_type(__c, eof()) ? 0 : __c; } +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: template<> +13943: struct char_traits +13943: { +13943: typedef char32_t char_type; +13943: +13943: typedef unsigned int int_type; +13943: +13943: +13943: +13943: +13943: typedef streamoff off_type; +13943: typedef u32streampos pos_type; +13943: typedef mbstate_t state_type; +13943: +13943: +13943: +13943: +13943: +13943: static constexpr void +13943: assign(char_type& __c1, const char_type& __c2) noexcept +13943: { +13943: +13943: +13943: +13943: +13943: +13943: __c1 = __c2; +13943: } +13943: +13943: static constexpr bool +13943: eq(const char_type& __c1, const char_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: static constexpr bool +13943: lt(const char_type& __c1, const char_type& __c2) noexcept +13943: { return __c1 < __c2; } +13943: +13943: static constexpr int +13943: compare(const char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: if (lt(__s1[__i], __s2[__i])) +13943: return -1; +13943: else if (lt(__s2[__i], __s1[__i])) +13943: return 1; +13943: return 0; +13943: } +13943: +13943: static constexpr size_t +13943: length(const char_type* __s) +13943: { +13943: size_t __i = 0; +13943: while (!eq(__s[__i], char_type())) +13943: ++__i; +13943: return __i; +13943: } +13943: +13943: static constexpr const char_type* +13943: find(const char_type* __s, size_t __n, const char_type& __a) +13943: { +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: if (eq(__s[__i], __a)) +13943: return __s + __i; +13943: return 0; +13943: } +13943: +13943: static char_type* +13943: move(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return (static_cast +13943: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); +13943: } +13943: +13943: static char_type* +13943: copy(char_type* __s1, const char_type* __s2, size_t __n) +13943: { +13943: if (__n == 0) +13943: return __s1; +13943: +13943: +13943: +13943: +13943: return (static_cast +13943: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); +13943: } +13943: +13943: static char_type* +13943: assign(char_type* __s, size_t __n, char_type __a) +13943: { +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: assign(__s[__i], __a); +13943: return __s; +13943: } +13943: +13943: static constexpr char_type +13943: to_char_type(const int_type& __c) noexcept +13943: { return char_type(__c); } +13943: +13943: static constexpr int_type +13943: to_int_type(const char_type& __c) noexcept +13943: { return int_type(__c); } +13943: +13943: static constexpr bool +13943: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +13943: { return __c1 == __c2; } +13943: +13943: +13943: static constexpr int_type +13943: eof() noexcept +13943: { return static_cast(-1); } +13943: +13943: static constexpr int_type +13943: not_eof(const int_type& __c) noexcept +13943: { return eq_int_type(__c, eof()) ? 0 : __c; } +13943: +13943: }; +13943: # 1010 "/usr/include/c++/14/bits/char_traits.h" 3 +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: } +13943: # 43 "/usr/include/c++/14/string" 2 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/localefwd.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/localefwd.h" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/localefwd.h" 3 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 1 3 +13943: # 39 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +13943: +13943: # 40 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/clocale" 1 3 +13943: # 39 "/usr/include/c++/14/clocale" 3 +13943: +13943: # 40 "/usr/include/c++/14/clocale" 3 +13943: +13943: +13943: # 1 "/usr/include/locale.h" 1 3 4 +13943: # 28 "/usr/include/locale.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 29 "/usr/include/locale.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 1 3 4 +13943: # 30 "/usr/include/locale.h" 2 3 4 +13943: +13943: extern "C" { +13943: # 51 "/usr/include/locale.h" 3 4 +13943: struct lconv +13943: { +13943: +13943: +13943: char *decimal_point; +13943: char *thousands_sep; +13943: +13943: +13943: +13943: +13943: +13943: char *grouping; +13943: +13943: +13943: +13943: +13943: +13943: char *int_curr_symbol; +13943: char *currency_symbol; +13943: char *mon_decimal_point; +13943: char *mon_thousands_sep; +13943: char *mon_grouping; +13943: char *positive_sign; +13943: char *negative_sign; +13943: char int_frac_digits; +13943: char frac_digits; +13943: +13943: char p_cs_precedes; +13943: +13943: char p_sep_by_space; +13943: +13943: char n_cs_precedes; +13943: +13943: char n_sep_by_space; +13943: +13943: +13943: +13943: +13943: +13943: +13943: char p_sign_posn; +13943: char n_sign_posn; +13943: +13943: +13943: char int_p_cs_precedes; +13943: +13943: char int_p_sep_by_space; +13943: +13943: char int_n_cs_precedes; +13943: +13943: char int_n_sep_by_space; +13943: +13943: +13943: +13943: +13943: +13943: +13943: char int_p_sign_posn; +13943: char int_n_sign_posn; +13943: # 118 "/usr/include/locale.h" 3 4 +13943: }; +13943: +13943: +13943: +13943: extern char *setlocale (int __category, const char *__locale) noexcept (true); +13943: +13943: +13943: extern struct lconv *localeconv (void) noexcept (true); +13943: # 141 "/usr/include/locale.h" 3 4 +13943: extern locale_t newlocale (int __category_mask, const char *__locale, +13943: locale_t __base) noexcept (true); +13943: # 176 "/usr/include/locale.h" 3 4 +13943: extern locale_t duplocale (locale_t __dataset) noexcept (true); +13943: +13943: +13943: +13943: extern void freelocale (locale_t __dataset) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern locale_t uselocale (locale_t __dataset) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 43 "/usr/include/c++/14/clocale" 2 3 +13943: # 51 "/usr/include/c++/14/clocale" 3 +13943: namespace std +13943: { +13943: using ::lconv; +13943: using ::setlocale; +13943: using ::localeconv; +13943: } +13943: # 42 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: extern "C" __typeof(uselocale) __uselocale; +13943: +13943: +13943: } +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: typedef __locale_t __c_locale; +13943: # 73 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +13943: inline int +13943: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), +13943: char* __out, +13943: const int __size __attribute__ ((__unused__)), +13943: const char* __fmt, ...) +13943: { +13943: +13943: __c_locale __old = __gnu_cxx::__uselocale(__cloc); +13943: # 93 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +13943: __builtin_va_list __args; +13943: __builtin_va_start(__args, __fmt); +13943: +13943: +13943: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +13943: +13943: +13943: +13943: +13943: __builtin_va_end(__args); +13943: +13943: +13943: __gnu_cxx::__uselocale(__old); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: return __ret; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 41 "/usr/include/c++/14/bits/localefwd.h" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/cctype" 1 3 +13943: # 39 "/usr/include/c++/14/cctype" 3 +13943: +13943: # 40 "/usr/include/c++/14/cctype" 3 +13943: +13943: +13943: # 1 "/usr/include/ctype.h" 1 3 4 +13943: # 28 "/usr/include/ctype.h" 3 4 +13943: extern "C" { +13943: # 46 "/usr/include/ctype.h" 3 4 +13943: enum +13943: { +13943: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), +13943: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), +13943: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), +13943: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), +13943: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), +13943: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), +13943: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), +13943: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), +13943: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), +13943: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), +13943: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), +13943: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) +13943: }; +13943: # 79 "/usr/include/ctype.h" 3 4 +13943: extern const unsigned short int **__ctype_b_loc (void) +13943: noexcept (true) __attribute__ ((__const__)); +13943: extern const __int32_t **__ctype_tolower_loc (void) +13943: noexcept (true) __attribute__ ((__const__)); +13943: extern const __int32_t **__ctype_toupper_loc (void) +13943: noexcept (true) __attribute__ ((__const__)); +13943: # 108 "/usr/include/ctype.h" 3 4 +13943: extern int isalnum (int) noexcept (true); +13943: extern int isalpha (int) noexcept (true); +13943: extern int iscntrl (int) noexcept (true); +13943: extern int isdigit (int) noexcept (true); +13943: extern int islower (int) noexcept (true); +13943: extern int isgraph (int) noexcept (true); +13943: extern int isprint (int) noexcept (true); +13943: extern int ispunct (int) noexcept (true); +13943: extern int isspace (int) noexcept (true); +13943: extern int isupper (int) noexcept (true); +13943: extern int isxdigit (int) noexcept (true); +13943: +13943: +13943: +13943: extern int tolower (int __c) noexcept (true); +13943: +13943: +13943: extern int toupper (int __c) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int isblank (int) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int isctype (int __c, int __mask) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int isascii (int __c) noexcept (true); +13943: +13943: +13943: +13943: extern int toascii (int __c) noexcept (true); +13943: +13943: +13943: +13943: extern int _toupper (int) noexcept (true); +13943: extern int _tolower (int) noexcept (true); +13943: # 251 "/usr/include/ctype.h" 3 4 +13943: extern int isalnum_l (int, locale_t) noexcept (true); +13943: extern int isalpha_l (int, locale_t) noexcept (true); +13943: extern int iscntrl_l (int, locale_t) noexcept (true); +13943: extern int isdigit_l (int, locale_t) noexcept (true); +13943: extern int islower_l (int, locale_t) noexcept (true); +13943: extern int isgraph_l (int, locale_t) noexcept (true); +13943: extern int isprint_l (int, locale_t) noexcept (true); +13943: extern int ispunct_l (int, locale_t) noexcept (true); +13943: extern int isspace_l (int, locale_t) noexcept (true); +13943: extern int isupper_l (int, locale_t) noexcept (true); +13943: extern int isxdigit_l (int, locale_t) noexcept (true); +13943: +13943: extern int isblank_l (int, locale_t) noexcept (true); +13943: +13943: +13943: +13943: extern int __tolower_l (int __c, locale_t __l) noexcept (true); +13943: extern int tolower_l (int __c, locale_t __l) noexcept (true); +13943: +13943: +13943: extern int __toupper_l (int __c, locale_t __l) noexcept (true); +13943: extern int toupper_l (int __c, locale_t __l) noexcept (true); +13943: # 327 "/usr/include/ctype.h" 3 4 +13943: } +13943: # 43 "/usr/include/c++/14/cctype" 2 3 +13943: # 62 "/usr/include/c++/14/cctype" 3 +13943: namespace std +13943: { +13943: using ::isalnum; +13943: using ::isalpha; +13943: using ::iscntrl; +13943: using ::isdigit; +13943: using ::isgraph; +13943: using ::islower; +13943: using ::isprint; +13943: using ::ispunct; +13943: using ::isspace; +13943: using ::isupper; +13943: using ::isxdigit; +13943: using ::tolower; +13943: using ::toupper; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std +13943: { +13943: using ::isblank; +13943: } +13943: # 43 "/usr/include/c++/14/bits/localefwd.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 55 "/usr/include/c++/14/bits/localefwd.h" 3 +13943: class locale; +13943: +13943: template +13943: bool +13943: has_facet(const locale&) throw(); +13943: +13943: template +13943: const _Facet& +13943: use_facet(const locale&); +13943: +13943: +13943: template +13943: bool +13943: isspace(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: isprint(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: iscntrl(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: isupper(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: islower(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: isalpha(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: isdigit(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: ispunct(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: isxdigit(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: isalnum(_CharT, const locale&); +13943: +13943: template +13943: bool +13943: isgraph(_CharT, const locale&); +13943: +13943: +13943: template +13943: bool +13943: isblank(_CharT, const locale&); +13943: +13943: +13943: template +13943: _CharT +13943: toupper(_CharT, const locale&); +13943: +13943: template +13943: _CharT +13943: tolower(_CharT, const locale&); +13943: +13943: +13943: struct ctype_base; +13943: template +13943: class ctype; +13943: template<> class ctype; +13943: +13943: template<> class ctype; +13943: +13943: template +13943: class ctype_byname; +13943: +13943: +13943: class codecvt_base; +13943: template +13943: class codecvt; +13943: template<> class codecvt; +13943: +13943: template<> class codecvt; +13943: +13943: +13943: template<> class codecvt; +13943: template<> class codecvt; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class codecvt_byname; +13943: +13943: +13943: +13943: template > +13943: class num_get; +13943: template > +13943: class num_put; +13943: +13943: namespace __cxx11 { +13943: template class numpunct; +13943: template class numpunct_byname; +13943: } +13943: +13943: namespace __cxx11 { +13943: +13943: template +13943: class collate; +13943: template +13943: class collate_byname; +13943: } +13943: +13943: +13943: class time_base; +13943: namespace __cxx11 { +13943: template > +13943: class time_get; +13943: template > +13943: class time_get_byname; +13943: } +13943: template > +13943: class time_put; +13943: template > +13943: class time_put_byname; +13943: +13943: +13943: class money_base; +13943: namespace __cxx11 { +13943: template > +13943: class money_get; +13943: template > +13943: class money_put; +13943: } +13943: namespace __cxx11 { +13943: template +13943: class moneypunct; +13943: template +13943: class moneypunct_byname; +13943: } +13943: +13943: +13943: struct messages_base; +13943: namespace __cxx11 { +13943: template +13943: class messages; +13943: template +13943: class messages_byname; +13943: } +13943: +13943: +13943: } +13943: # 46 "/usr/include/c++/14/string" 2 3 +13943: # 1 "/usr/include/c++/14/bits/ostream_insert.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/ostream_insert.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/ostream_insert.h" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/cxxabi_forced.h" 1 3 +13943: # 34 "/usr/include/c++/14/bits/cxxabi_forced.h" 3 +13943: +13943: # 35 "/usr/include/c++/14/bits/cxxabi_forced.h" 3 +13943: +13943: #pragma GCC visibility push(default) +13943: +13943: +13943: namespace __cxxabiv1 +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class __forced_unwind +13943: { +13943: virtual ~__forced_unwind() throw(); +13943: +13943: +13943: virtual void __pure_dummy() = 0; +13943: }; +13943: } +13943: +13943: +13943: #pragma GCC visibility pop +13943: # 37 "/usr/include/c++/14/bits/ostream_insert.h" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: inline void +13943: __ostream_write(basic_ostream<_CharT, _Traits>& __out, +13943: const _CharT* __s, streamsize __n) +13943: { +13943: typedef basic_ostream<_CharT, _Traits> __ostream_type; +13943: typedef typename __ostream_type::ios_base __ios_base; +13943: +13943: const streamsize __put = __out.rdbuf()->sputn(__s, __n); +13943: if (__put != __n) +13943: __out.setstate(__ios_base::badbit); +13943: } +13943: +13943: template +13943: inline void +13943: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) +13943: { +13943: typedef basic_ostream<_CharT, _Traits> __ostream_type; +13943: typedef typename __ostream_type::ios_base __ios_base; +13943: +13943: const _CharT __c = __out.fill(); +13943: for (; __n > 0; --__n) +13943: { +13943: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); +13943: if (_Traits::eq_int_type(__put, _Traits::eof())) +13943: { +13943: __out.setstate(__ios_base::badbit); +13943: break; +13943: } +13943: } +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, +13943: const _CharT* __s, streamsize __n) +13943: { +13943: typedef basic_ostream<_CharT, _Traits> __ostream_type; +13943: typedef typename __ostream_type::ios_base __ios_base; +13943: +13943: typename __ostream_type::sentry __cerb(__out); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: const streamsize __w = __out.width(); +13943: if (__w > __n) +13943: { +13943: const bool __left = ((__out.flags() +13943: & __ios_base::adjustfield) +13943: == __ios_base::left); +13943: if (!__left) +13943: __ostream_fill(__out, __w - __n); +13943: if (__out.good()) +13943: __ostream_write(__out, __s, __n); +13943: if (__left && __out.good()) +13943: __ostream_fill(__out, __w - __n); +13943: } +13943: else +13943: __ostream_write(__out, __s, __n); +13943: __out.width(0); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: __out._M_setstate(__ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { __out._M_setstate(__ios_base::badbit); } +13943: } +13943: return __out; +13943: } +13943: +13943: +13943: +13943: +13943: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); +13943: +13943: +13943: extern template wostream& __ostream_insert(wostream&, const wchar_t*, +13943: streamsize); +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 47 "/usr/include/c++/14/string" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/basic_string.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: # 47 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: # 1 "/usr/include/c++/14/string_view" 1 3 +13943: # 36 "/usr/include/c++/14/string_view" 3 +13943: +13943: # 37 "/usr/include/c++/14/string_view" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 45 "/usr/include/c++/14/string_view" 2 3 +13943: # 64 "/usr/include/c++/14/string_view" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: constexpr size_t +13943: __sv_check(size_t __size, size_t __pos, const char* __s) +13943: { +13943: if (__pos > __size) +13943: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > __size " "(which is %zu)") +13943: , __s, __pos, __size); +13943: return __pos; +13943: } +13943: +13943: +13943: +13943: constexpr size_t +13943: __sv_limit(size_t __size, size_t __pos, size_t __off) noexcept +13943: { +13943: const bool __testoff = __off < __size - __pos; +13943: return __testoff ? __off : __size - __pos; +13943: } +13943: # 105 "/usr/include/c++/14/string_view" 3 +13943: template> +13943: class basic_string_view +13943: { +13943: static_assert(!is_array_v<_CharT>); +13943: static_assert(is_trivial_v<_CharT> && is_standard_layout_v<_CharT>); +13943: static_assert(is_same_v<_CharT, typename _Traits::char_type>); +13943: +13943: public: +13943: +13943: +13943: using traits_type = _Traits; +13943: using value_type = _CharT; +13943: using pointer = value_type*; +13943: using const_pointer = const value_type*; +13943: using reference = value_type&; +13943: using const_reference = const value_type&; +13943: using const_iterator = const value_type*; +13943: using iterator = const_iterator; +13943: using const_reverse_iterator = std::reverse_iterator; +13943: using reverse_iterator = const_reverse_iterator; +13943: using size_type = size_t; +13943: using difference_type = ptrdiff_t; +13943: static constexpr size_type npos = size_type(-1); +13943: +13943: +13943: +13943: constexpr +13943: basic_string_view() noexcept +13943: : _M_len{0}, _M_str{nullptr} +13943: { } +13943: +13943: constexpr basic_string_view(const basic_string_view&) noexcept = default; +13943: +13943: [[__gnu__::__nonnull__]] +13943: constexpr +13943: basic_string_view(const _CharT* __str) noexcept +13943: : _M_len{traits_type::length(__str)}, +13943: _M_str{__str} +13943: { } +13943: +13943: constexpr +13943: basic_string_view(const _CharT* __str, size_type __len) noexcept +13943: : _M_len{__len}, _M_str{__str} +13943: { } +13943: # 180 "/usr/include/c++/14/string_view" 3 +13943: constexpr basic_string_view& +13943: operator=(const basic_string_view&) noexcept = default; +13943: +13943: +13943: +13943: [[nodiscard]] +13943: constexpr const_iterator +13943: begin() const noexcept +13943: { return this->_M_str; } +13943: +13943: [[nodiscard]] +13943: constexpr const_iterator +13943: end() const noexcept +13943: { return this->_M_str + this->_M_len; } +13943: +13943: [[nodiscard]] +13943: constexpr const_iterator +13943: cbegin() const noexcept +13943: { return this->_M_str; } +13943: +13943: [[nodiscard]] +13943: constexpr const_iterator +13943: cend() const noexcept +13943: { return this->_M_str + this->_M_len; } +13943: +13943: [[nodiscard]] +13943: constexpr const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(this->end()); } +13943: +13943: [[nodiscard]] +13943: constexpr const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(this->begin()); } +13943: +13943: [[nodiscard]] +13943: constexpr const_reverse_iterator +13943: crbegin() const noexcept +13943: { return const_reverse_iterator(this->end()); } +13943: +13943: [[nodiscard]] +13943: constexpr const_reverse_iterator +13943: crend() const noexcept +13943: { return const_reverse_iterator(this->begin()); } +13943: +13943: +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: size() const noexcept +13943: { return this->_M_len; } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: length() const noexcept +13943: { return _M_len; } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: max_size() const noexcept +13943: { +13943: return (npos - sizeof(size_type) - sizeof(void*)) +13943: / sizeof(value_type) / 4; +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr bool +13943: empty() const noexcept +13943: { return this->_M_len == 0; } +13943: +13943: +13943: +13943: [[nodiscard]] +13943: constexpr const_reference +13943: operator[](size_type __pos) const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos < this->_M_len)) std::__glibcxx_assert_fail(); } while (false); +13943: return *(this->_M_str + __pos); +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr const_reference +13943: at(size_type __pos) const +13943: { +13943: if (__pos >= _M_len) +13943: __throw_out_of_range_fmt(("basic_string_view::at: __pos " "(which is %zu) >= this->size() " "(which is %zu)") +13943: +13943: , __pos, this->size()); +13943: return *(this->_M_str + __pos); +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr const_reference +13943: front() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(this->_M_len > 0)) std::__glibcxx_assert_fail(); } while (false); +13943: return *this->_M_str; +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr const_reference +13943: back() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(this->_M_len > 0)) std::__glibcxx_assert_fail(); } while (false); +13943: return *(this->_M_str + this->_M_len - 1); +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr const_pointer +13943: data() const noexcept +13943: { return this->_M_str; } +13943: +13943: +13943: +13943: constexpr void +13943: remove_prefix(size_type __n) noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(this->_M_len >= __n)) std::__glibcxx_assert_fail(); } while (false); +13943: this->_M_str += __n; +13943: this->_M_len -= __n; +13943: } +13943: +13943: constexpr void +13943: remove_suffix(size_type __n) noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(this->_M_len >= __n)) std::__glibcxx_assert_fail(); } while (false); +13943: this->_M_len -= __n; +13943: } +13943: +13943: constexpr void +13943: swap(basic_string_view& __sv) noexcept +13943: { +13943: auto __tmp = *this; +13943: *this = __sv; +13943: __sv = __tmp; +13943: } +13943: +13943: +13943: +13943: +13943: size_type +13943: copy(_CharT* __str, size_type __n, size_type __pos = 0) const +13943: { +13943: ; +13943: __pos = std::__sv_check(size(), __pos, "basic_string_view::copy"); +13943: const size_type __rlen = std::min(__n, _M_len - __pos); +13943: +13943: +13943: traits_type::copy(__str, data() + __pos, __rlen); +13943: return __rlen; +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr basic_string_view +13943: substr(size_type __pos = 0, size_type __n = npos) const noexcept(false) +13943: { +13943: __pos = std::__sv_check(size(), __pos, "basic_string_view::substr"); +13943: const size_type __rlen = std::min(__n, _M_len - __pos); +13943: return basic_string_view{_M_str + __pos, __rlen}; +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr int +13943: compare(basic_string_view __str) const noexcept +13943: { +13943: const size_type __rlen = std::min(this->_M_len, __str._M_len); +13943: int __ret = traits_type::compare(this->_M_str, __str._M_str, __rlen); +13943: if (__ret == 0) +13943: __ret = _S_compare(this->_M_len, __str._M_len); +13943: return __ret; +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr int +13943: compare(size_type __pos1, size_type __n1, basic_string_view __str) const +13943: { return this->substr(__pos1, __n1).compare(__str); } +13943: +13943: [[nodiscard]] +13943: constexpr int +13943: compare(size_type __pos1, size_type __n1, +13943: basic_string_view __str, size_type __pos2, size_type __n2) const +13943: { +13943: return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); +13943: } +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr int +13943: compare(const _CharT* __str) const noexcept +13943: { return this->compare(basic_string_view{__str}); } +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr int +13943: compare(size_type __pos1, size_type __n1, const _CharT* __str) const +13943: { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } +13943: +13943: [[nodiscard]] +13943: constexpr int +13943: compare(size_type __pos1, size_type __n1, +13943: const _CharT* __str, size_type __n2) const noexcept(false) +13943: { +13943: return this->substr(__pos1, __n1) +13943: .compare(basic_string_view(__str, __n2)); +13943: } +13943: # 445 "/usr/include/c++/14/string_view" 3 +13943: [[nodiscard]] +13943: constexpr size_type +13943: find(basic_string_view __str, size_type __pos = 0) const noexcept +13943: { return this->find(__str._M_str, __pos, __str._M_len); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find(_CharT __c, size_type __pos = 0) const noexcept; +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr size_type +13943: find(const _CharT* __str, size_type __pos = 0) const noexcept +13943: { return this->find(__str, __pos, traits_type::length(__str)); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: rfind(basic_string_view __str, size_type __pos = npos) const noexcept +13943: { return this->rfind(__str._M_str, __pos, __str._M_len); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: rfind(_CharT __c, size_type __pos = npos) const noexcept; +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr size_type +13943: rfind(const _CharT* __str, size_type __pos = npos) const noexcept +13943: { return this->rfind(__str, __pos, traits_type::length(__str)); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept +13943: { return this->find_first_of(__str._M_str, __pos, __str._M_len); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_first_of(_CharT __c, size_type __pos = 0) const noexcept +13943: { return this->find(__c, __pos); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_first_of(const _CharT* __str, size_type __pos, +13943: size_type __n) const noexcept; +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr size_type +13943: find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept +13943: { return this->find_first_of(__str, __pos, traits_type::length(__str)); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_last_of(basic_string_view __str, +13943: size_type __pos = npos) const noexcept +13943: { return this->find_last_of(__str._M_str, __pos, __str._M_len); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_last_of(_CharT __c, size_type __pos=npos) const noexcept +13943: { return this->rfind(__c, __pos); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_last_of(const _CharT* __str, size_type __pos, +13943: size_type __n) const noexcept; +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr size_type +13943: find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept +13943: { return this->find_last_of(__str, __pos, traits_type::length(__str)); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_first_not_of(basic_string_view __str, +13943: size_type __pos = 0) const noexcept +13943: { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_first_not_of(const _CharT* __str, +13943: size_type __pos, size_type __n) const noexcept; +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr size_type +13943: find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept +13943: { +13943: return this->find_first_not_of(__str, __pos, +13943: traits_type::length(__str)); +13943: } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_last_not_of(basic_string_view __str, +13943: size_type __pos = npos) const noexcept +13943: { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; +13943: +13943: [[nodiscard]] +13943: constexpr size_type +13943: find_last_not_of(const _CharT* __str, +13943: size_type __pos, size_type __n) const noexcept; +13943: +13943: [[nodiscard, __gnu__::__nonnull__]] +13943: constexpr size_type +13943: find_last_not_of(const _CharT* __str, +13943: size_type __pos = npos) const noexcept +13943: { +13943: return this->find_last_not_of(__str, __pos, +13943: traits_type::length(__str)); +13943: } +13943: +13943: private: +13943: +13943: static constexpr int +13943: _S_compare(size_type __n1, size_type __n2) noexcept +13943: { +13943: using __limits = __gnu_cxx::__int_traits; +13943: const difference_type __diff = __n1 - __n2; +13943: if (__diff > __limits::__max) +13943: return __limits::__max; +13943: if (__diff < __limits::__min) +13943: return __limits::__min; +13943: return static_cast(__diff); +13943: } +13943: +13943: size_t _M_len; +13943: const _CharT* _M_str; +13943: }; +13943: # 623 "/usr/include/c++/14/string_view" 3 +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator==(basic_string_view<_CharT, _Traits> __x, +13943: __type_identity_t> __y) +13943: noexcept +13943: { return __x.size() == __y.size() && __x.compare(__y) == 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator==(basic_string_view<_CharT, _Traits> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.size() == __y.size() && __x.compare(__y) == 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator==(__type_identity_t> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.size() == __y.size() && __x.compare(__y) == 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator!=(basic_string_view<_CharT, _Traits> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return !(__x == __y); } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator!=(basic_string_view<_CharT, _Traits> __x, +13943: __type_identity_t> __y) +13943: noexcept +13943: { return !(__x == __y); } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator!=(__type_identity_t> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return !(__x == __y); } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator< (basic_string_view<_CharT, _Traits> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) < 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator< (basic_string_view<_CharT, _Traits> __x, +13943: __type_identity_t> __y) +13943: noexcept +13943: { return __x.compare(__y) < 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator< (__type_identity_t> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) < 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator> (basic_string_view<_CharT, _Traits> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) > 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator> (basic_string_view<_CharT, _Traits> __x, +13943: __type_identity_t> __y) +13943: noexcept +13943: { return __x.compare(__y) > 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator> (__type_identity_t> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) > 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator<=(basic_string_view<_CharT, _Traits> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) <= 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator<=(basic_string_view<_CharT, _Traits> __x, +13943: __type_identity_t> __y) +13943: noexcept +13943: { return __x.compare(__y) <= 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator<=(__type_identity_t> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) <= 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator>=(basic_string_view<_CharT, _Traits> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) >= 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator>=(basic_string_view<_CharT, _Traits> __x, +13943: __type_identity_t> __y) +13943: noexcept +13943: { return __x.compare(__y) >= 0; } +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr bool +13943: operator>=(__type_identity_t> __x, +13943: basic_string_view<_CharT, _Traits> __y) noexcept +13943: { return __x.compare(__y) >= 0; } +13943: +13943: +13943: +13943: +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __os, +13943: basic_string_view<_CharT,_Traits> __str) +13943: { return __ostream_insert(__os, __str.data(), __str.size()); } +13943: +13943: +13943: +13943: +13943: using string_view = basic_string_view; +13943: using wstring_view = basic_string_view; +13943: +13943: +13943: +13943: using u16string_view = basic_string_view; +13943: using u32string_view = basic_string_view; +13943: +13943: +13943: +13943: template +13943: struct hash; +13943: +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: [[nodiscard]] +13943: size_t +13943: operator()(const string_view& __str) const noexcept +13943: { return std::_Hash_impl::hash(__str.data(), __str.length()); } +13943: }; +13943: +13943: template<> +13943: struct __is_fast_hash> : std::false_type +13943: { }; +13943: +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: [[nodiscard]] +13943: size_t +13943: operator()(const wstring_view& __s) const noexcept +13943: { return std::_Hash_impl::hash(__s.data(), +13943: __s.length() * sizeof(wchar_t)); } +13943: }; +13943: +13943: template<> +13943: struct __is_fast_hash> : std::false_type +13943: { }; +13943: # 825 "/usr/include/c++/14/string_view" 3 +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: [[nodiscard]] +13943: size_t +13943: operator()(const u16string_view& __s) const noexcept +13943: { return std::_Hash_impl::hash(__s.data(), +13943: __s.length() * sizeof(char16_t)); } +13943: }; +13943: +13943: template<> +13943: struct __is_fast_hash> : std::false_type +13943: { }; +13943: +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: [[nodiscard]] +13943: size_t +13943: operator()(const u32string_view& __s) const noexcept +13943: { return std::_Hash_impl::hash(__s.data(), +13943: __s.length() * sizeof(char32_t)); } +13943: }; +13943: +13943: template<> +13943: struct __is_fast_hash> : std::false_type +13943: { }; +13943: +13943: inline namespace literals +13943: { +13943: inline namespace string_view_literals +13943: { +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wliteral-suffix" +13943: inline constexpr basic_string_view +13943: operator""sv(const char* __str, size_t __len) noexcept +13943: { return basic_string_view{__str, __len}; } +13943: +13943: inline constexpr basic_string_view +13943: operator""sv(const wchar_t* __str, size_t __len) noexcept +13943: { return basic_string_view{__str, __len}; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline constexpr basic_string_view +13943: operator""sv(const char16_t* __str, size_t __len) noexcept +13943: { return basic_string_view{__str, __len}; } +13943: +13943: inline constexpr basic_string_view +13943: operator""sv(const char32_t* __str, size_t __len) noexcept +13943: { return basic_string_view{__str, __len}; } +13943: +13943: #pragma GCC diagnostic pop +13943: } +13943: } +13943: # 901 "/usr/include/c++/14/string_view" 3 +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/string_view.tcc" 1 3 +13943: # 37 "/usr/include/c++/14/bits/string_view.tcc" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/string_view.tcc" 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept +13943: { +13943: ; +13943: +13943: if (__n == 0) +13943: return __pos <= _M_len ? __pos : npos; +13943: if (__pos >= _M_len) +13943: return npos; +13943: +13943: const _CharT __elem0 = __str[0]; +13943: const _CharT* __first = _M_str + __pos; +13943: const _CharT* const __last = _M_str + _M_len; +13943: size_type __len = _M_len - __pos; +13943: +13943: while (__len >= __n) +13943: { +13943: +13943: __first = traits_type::find(__first, __len - __n + 1, __elem0); +13943: if (!__first) +13943: return npos; +13943: +13943: +13943: +13943: if (traits_type::compare(__first, __str, __n) == 0) +13943: return __first - _M_str; +13943: __len = __last - ++__first; +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find(_CharT __c, size_type __pos) const noexcept +13943: { +13943: size_type __ret = npos; +13943: if (__pos < this->_M_len) +13943: { +13943: const size_type __n = this->_M_len - __pos; +13943: const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c); +13943: if (__p) +13943: __ret = __p - this->_M_str; +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept +13943: { +13943: ; +13943: +13943: if (__n <= this->_M_len) +13943: { +13943: __pos = std::min(size_type(this->_M_len - __n), __pos); +13943: do +13943: { +13943: if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0) +13943: return __pos; +13943: } +13943: while (__pos-- > 0); +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: rfind(_CharT __c, size_type __pos) const noexcept +13943: { +13943: size_type __size = this->_M_len; +13943: if (__size > 0) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: for (++__size; __size-- > 0; ) +13943: if (traits_type::eq(this->_M_str[__size], __c)) +13943: return __size; +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find_first_of(const _CharT* __str, size_type __pos, +13943: size_type __n) const noexcept +13943: { +13943: ; +13943: for (; __n && __pos < this->_M_len; ++__pos) +13943: { +13943: const _CharT* __p = traits_type::find(__str, __n, +13943: this->_M_str[__pos]); +13943: if (__p) +13943: return __pos; +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find_last_of(const _CharT* __str, size_type __pos, +13943: size_type __n) const noexcept +13943: { +13943: ; +13943: size_type __size = this->size(); +13943: if (__size && __n) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: do +13943: { +13943: if (traits_type::find(__str, __n, this->_M_str[__size])) +13943: return __size; +13943: } +13943: while (__size-- != 0); +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find_first_not_of(const _CharT* __str, size_type __pos, +13943: size_type __n) const noexcept +13943: { +13943: ; +13943: for (; __pos < this->_M_len; ++__pos) +13943: if (!traits_type::find(__str, __n, this->_M_str[__pos])) +13943: return __pos; +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find_first_not_of(_CharT __c, size_type __pos) const noexcept +13943: { +13943: for (; __pos < this->_M_len; ++__pos) +13943: if (!traits_type::eq(this->_M_str[__pos], __c)) +13943: return __pos; +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find_last_not_of(const _CharT* __str, size_type __pos, +13943: size_type __n) const noexcept +13943: { +13943: ; +13943: size_type __size = this->_M_len; +13943: if (__size) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: do +13943: { +13943: if (!traits_type::find(__str, __n, this->_M_str[__size])) +13943: return __size; +13943: } +13943: while (__size--); +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: constexpr typename basic_string_view<_CharT, _Traits>::size_type +13943: basic_string_view<_CharT, _Traits>:: +13943: find_last_not_of(_CharT __c, size_type __pos) const noexcept +13943: { +13943: size_type __size = this->_M_len; +13943: if (__size) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: do +13943: { +13943: if (!traits_type::eq(this->_M_str[__size], __c)) +13943: return __size; +13943: } +13943: while (__size--); +13943: } +13943: return npos; +13943: } +13943: +13943: +13943: } +13943: # 905 "/usr/include/c++/14/string_view" 2 3 +13943: # 48 "/usr/include/c++/14/bits/basic_string.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 55 "/usr/include/c++/14/bits/basic_string.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace __cxx11 { +13943: # 85 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: class basic_string +13943: { +13943: +13943: +13943: +13943: +13943: +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_CharT>::other _Char_alloc_type; +13943: +13943: +13943: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; +13943: +13943: +13943: public: +13943: typedef _Traits traits_type; +13943: typedef typename _Traits::char_type value_type; +13943: typedef _Char_alloc_type allocator_type; +13943: typedef typename _Alloc_traits::size_type size_type; +13943: typedef typename _Alloc_traits::difference_type difference_type; +13943: typedef typename _Alloc_traits::reference reference; +13943: typedef typename _Alloc_traits::const_reference const_reference; +13943: typedef typename _Alloc_traits::pointer pointer; +13943: typedef typename _Alloc_traits::const_pointer const_pointer; +13943: typedef __gnu_cxx::__normal_iterator iterator; +13943: typedef __gnu_cxx::__normal_iterator +13943: const_iterator; +13943: typedef std::reverse_iterator const_reverse_iterator; +13943: typedef std::reverse_iterator reverse_iterator; +13943: +13943: +13943: static const size_type npos = static_cast(-1); +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: typedef const_iterator __const_iterator; +13943: +13943: +13943: private: +13943: static pointer +13943: _S_allocate(_Char_alloc_type& __a, size_type __n) +13943: { +13943: pointer __p = _Alloc_traits::allocate(__a, __n); +13943: # 141 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: return __p; +13943: } +13943: +13943: +13943: +13943: typedef basic_string_view<_CharT, _Traits> __sv_type; +13943: +13943: template +13943: using _If_sv = enable_if_t< +13943: __and_, +13943: __not_>, +13943: __not_>>::value, +13943: _Res>; +13943: +13943: +13943: +13943: static __sv_type +13943: _S_to_string_view(__sv_type __svt) noexcept +13943: { return __svt; } +13943: +13943: +13943: +13943: +13943: +13943: struct __sv_wrapper +13943: { +13943: explicit +13943: __sv_wrapper(__sv_type __sv) noexcept : _M_sv(__sv) { } +13943: +13943: __sv_type _M_sv; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: basic_string(__sv_wrapper __svw, const _Alloc& __a) +13943: : basic_string(__svw._M_sv.data(), __svw._M_sv.size(), __a) { } +13943: +13943: +13943: +13943: struct _Alloc_hider : allocator_type +13943: { +13943: +13943: +13943: +13943: +13943: +13943: _Alloc_hider(pointer __dat, const _Alloc& __a) +13943: : allocator_type(__a), _M_p(__dat) { } +13943: +13943: +13943: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) +13943: : allocator_type(std::move(__a)), _M_p(__dat) { } +13943: +13943: +13943: pointer _M_p; +13943: }; +13943: +13943: _Alloc_hider _M_dataplus; +13943: size_type _M_string_length; +13943: +13943: enum { _S_local_capacity = 15 / sizeof(_CharT) }; +13943: +13943: union +13943: { +13943: _CharT _M_local_buf[_S_local_capacity + 1]; +13943: size_type _M_allocated_capacity; +13943: }; +13943: +13943: +13943: void +13943: _M_data(pointer __p) +13943: { _M_dataplus._M_p = __p; } +13943: +13943: +13943: void +13943: _M_length(size_type __length) +13943: { _M_string_length = __length; } +13943: +13943: +13943: pointer +13943: _M_data() const +13943: { return _M_dataplus._M_p; } +13943: +13943: +13943: pointer +13943: _M_local_data() +13943: { +13943: +13943: return std::pointer_traits::pointer_to(*_M_local_buf); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: const_pointer +13943: _M_local_data() const +13943: { +13943: +13943: return std::pointer_traits::pointer_to(*_M_local_buf); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: void +13943: _M_capacity(size_type __capacity) +13943: { _M_allocated_capacity = __capacity; } +13943: +13943: +13943: void +13943: _M_set_length(size_type __n) +13943: { +13943: _M_length(__n); +13943: traits_type::assign(_M_data()[__n], _CharT()); +13943: } +13943: +13943: +13943: bool +13943: _M_is_local() const +13943: { +13943: if (_M_data() == _M_local_data()) +13943: { +13943: if (_M_string_length > _S_local_capacity) +13943: __builtin_unreachable(); +13943: return true; +13943: } +13943: return false; +13943: } +13943: +13943: +13943: +13943: pointer +13943: _M_create(size_type&, size_type); +13943: +13943: +13943: void +13943: _M_dispose() +13943: { +13943: if (!_M_is_local()) +13943: _M_destroy(_M_allocated_capacity); +13943: } +13943: +13943: +13943: void +13943: _M_destroy(size_type __size) throw() +13943: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } +13943: # 321 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: void +13943: _M_construct(_InIterator __beg, _InIterator __end, +13943: std::input_iterator_tag); +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: _M_construct(_FwdIterator __beg, _FwdIterator __end, +13943: std::forward_iterator_tag); +13943: +13943: +13943: void +13943: _M_construct(size_type __req, _CharT __c); +13943: +13943: +13943: allocator_type& +13943: _M_get_allocator() +13943: { return _M_dataplus; } +13943: +13943: +13943: const allocator_type& +13943: _M_get_allocator() const +13943: { return _M_dataplus; } +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: constexpr +13943: void +13943: _M_init_local_buf() noexcept +13943: { +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: __attribute__((__always_inline__)) +13943: constexpr +13943: pointer +13943: _M_use_local_data() noexcept +13943: { +13943: +13943: +13943: +13943: return _M_local_data(); +13943: } +13943: +13943: private: +13943: # 389 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: size_type +13943: _M_check(size_type __pos, const char* __s) const +13943: { +13943: if (__pos > this->size()) +13943: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") +13943: , +13943: __s, __pos, this->size()); +13943: return __pos; +13943: } +13943: +13943: +13943: void +13943: _M_check_length(size_type __n1, size_type __n2, const char* __s) const +13943: { +13943: if (this->max_size() - (this->size() - __n1) < __n2) +13943: __throw_length_error((__s)); +13943: } +13943: +13943: +13943: +13943: +13943: size_type +13943: _M_limit(size_type __pos, size_type __off) const noexcept +13943: { +13943: const bool __testoff = __off < this->size() - __pos; +13943: return __testoff ? __off : this->size() - __pos; +13943: } +13943: +13943: +13943: bool +13943: _M_disjunct(const _CharT* __s) const noexcept +13943: { +13943: return (less()(__s, _M_data()) +13943: || less()(_M_data() + this->size(), __s)); +13943: } +13943: +13943: +13943: +13943: +13943: static void +13943: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) +13943: { +13943: if (__n == 1) +13943: traits_type::assign(*__d, *__s); +13943: else +13943: traits_type::copy(__d, __s, __n); +13943: } +13943: +13943: +13943: static void +13943: _S_move(_CharT* __d, const _CharT* __s, size_type __n) +13943: { +13943: if (__n == 1) +13943: traits_type::assign(*__d, *__s); +13943: else +13943: traits_type::move(__d, __s, __n); +13943: } +13943: +13943: +13943: static void +13943: _S_assign(_CharT* __d, size_type __n, _CharT __c) +13943: { +13943: if (__n == 1) +13943: traits_type::assign(*__d, __c); +13943: else +13943: traits_type::assign(__d, __n, __c); +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: static void +13943: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) +13943: { +13943: for (; __k1 != __k2; ++__k1, (void)++__p) +13943: traits_type::assign(*__p, *__k1); +13943: } +13943: +13943: +13943: static void +13943: _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept +13943: { _S_copy_chars(__p, __k1.base(), __k2.base()); } +13943: +13943: +13943: static void +13943: _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) +13943: noexcept +13943: { _S_copy_chars(__p, __k1.base(), __k2.base()); } +13943: +13943: +13943: static void +13943: _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept +13943: { _S_copy(__p, __k1, __k2 - __k1); } +13943: +13943: +13943: static void +13943: _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) +13943: noexcept +13943: { _S_copy(__p, __k1, __k2 - __k1); } +13943: +13943: +13943: static int +13943: _S_compare(size_type __n1, size_type __n2) noexcept +13943: { +13943: const difference_type __d = difference_type(__n1 - __n2); +13943: +13943: if (__d > __gnu_cxx::__numeric_traits::__max) +13943: return __gnu_cxx::__numeric_traits::__max; +13943: else if (__d < __gnu_cxx::__numeric_traits::__min) +13943: return __gnu_cxx::__numeric_traits::__min; +13943: else +13943: return int(__d); +13943: } +13943: +13943: +13943: void +13943: _M_assign(const basic_string&); +13943: +13943: +13943: void +13943: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, +13943: size_type __len2); +13943: +13943: +13943: void +13943: _M_erase(size_type __pos, size_type __n); +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string() +13943: noexcept(is_nothrow_default_constructible<_Alloc>::value) +13943: : _M_dataplus(_M_local_data()) +13943: { +13943: _M_init_local_buf(); +13943: _M_set_length(0); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: basic_string(const _Alloc& __a) noexcept +13943: : _M_dataplus(_M_local_data(), __a) +13943: { +13943: _M_init_local_buf(); +13943: _M_set_length(0); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string(const basic_string& __str) +13943: : _M_dataplus(_M_local_data(), +13943: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) +13943: { +13943: _M_construct(__str._M_data(), __str._M_data() + __str.length(), +13943: std::forward_iterator_tag()); +13943: } +13943: # 568 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string(const basic_string& __str, size_type __pos, +13943: const _Alloc& __a = _Alloc()) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { +13943: const _CharT* __start = __str._M_data() +13943: + __str._M_check(__pos, "basic_string::basic_string"); +13943: _M_construct(__start, __start + __str._M_limit(__pos, npos), +13943: std::forward_iterator_tag()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string(const basic_string& __str, size_type __pos, +13943: size_type __n) +13943: : _M_dataplus(_M_local_data()) +13943: { +13943: const _CharT* __start = __str._M_data() +13943: + __str._M_check(__pos, "basic_string::basic_string"); +13943: _M_construct(__start, __start + __str._M_limit(__pos, __n), +13943: std::forward_iterator_tag()); +13943: } +13943: # 603 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string(const basic_string& __str, size_type __pos, +13943: size_type __n, const _Alloc& __a) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { +13943: const _CharT* __start +13943: = __str._M_data() + __str._M_check(__pos, "string::string"); +13943: _M_construct(__start, __start + __str._M_limit(__pos, __n), +13943: std::forward_iterator_tag()); +13943: } +13943: # 623 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string(const _CharT* __s, size_type __n, +13943: const _Alloc& __a = _Alloc()) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { +13943: +13943: if (__s == 0 && __n > 0) +13943: std::__throw_logic_error(("basic_string: " "construction from null is not valid") +13943: ); +13943: _M_construct(__s, __s + __n, std::forward_iterator_tag()); +13943: } +13943: # 643 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template> +13943: +13943: +13943: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { +13943: +13943: if (__s == 0) +13943: std::__throw_logic_error(("basic_string: " "construction from null is not valid") +13943: ); +13943: const _CharT* __end = __s + traits_type::length(__s); +13943: _M_construct(__s, __end, forward_iterator_tag()); +13943: } +13943: # 666 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template> +13943: +13943: +13943: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { _M_construct(__n, __c); } +13943: # 681 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string(basic_string&& __str) noexcept +13943: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) +13943: { +13943: if (__str._M_is_local()) +13943: { +13943: _M_init_local_buf(); +13943: traits_type::copy(_M_local_buf, __str._M_local_buf, +13943: __str.length() + 1); +13943: } +13943: else +13943: { +13943: _M_data(__str._M_data()); +13943: _M_capacity(__str._M_allocated_capacity); +13943: } +13943: +13943: +13943: +13943: +13943: _M_length(__str.length()); +13943: __str._M_data(__str._M_use_local_data()); +13943: __str._M_set_length(0); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { _M_construct(__l.begin(), __l.end(), std::forward_iterator_tag()); } +13943: +13943: +13943: basic_string(const basic_string& __str, const _Alloc& __a) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); } +13943: +13943: +13943: basic_string(basic_string&& __str, const _Alloc& __a) +13943: noexcept(_Alloc_traits::_S_always_equal()) +13943: : _M_dataplus(_M_local_data(), __a) +13943: { +13943: if (__str._M_is_local()) +13943: { +13943: _M_init_local_buf(); +13943: traits_type::copy(_M_local_buf, __str._M_local_buf, +13943: __str.length() + 1); +13943: _M_length(__str.length()); +13943: __str._M_set_length(0); +13943: } +13943: else if (_Alloc_traits::_S_always_equal() +13943: || __str.get_allocator() == __a) +13943: { +13943: _M_data(__str._M_data()); +13943: _M_length(__str.length()); +13943: _M_capacity(__str._M_allocated_capacity); +13943: __str._M_data(__str._M_use_local_data()); +13943: __str._M_set_length(0); +13943: } +13943: else +13943: _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); +13943: } +13943: # 759 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template> +13943: +13943: +13943: +13943: +13943: basic_string(_InputIterator __beg, _InputIterator __end, +13943: const _Alloc& __a = _Alloc()) +13943: : _M_dataplus(_M_local_data(), __a), _M_string_length(0) +13943: { +13943: +13943: _M_construct(__beg, __end, std::__iterator_category(__beg)); +13943: +13943: +13943: +13943: +13943: } +13943: # 785 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template>> +13943: +13943: basic_string(const _Tp& __t, size_type __pos, size_type __n, +13943: const _Alloc& __a = _Alloc()) +13943: : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: +13943: explicit +13943: basic_string(const _Tp& __t, const _Alloc& __a = _Alloc()) +13943: : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~basic_string() +13943: { _M_dispose(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: operator=(const basic_string& __str) +13943: { +13943: return this->assign(__str); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: operator=(const _CharT* __s) +13943: { return this->assign(__s); } +13943: # 838 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: operator=(_CharT __c) +13943: { +13943: this->assign(1, __c); +13943: return *this; +13943: } +13943: # 856 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: operator=(basic_string&& __str) +13943: noexcept(_Alloc_traits::_S_nothrow_move()) +13943: { +13943: const bool __equal_allocs = _Alloc_traits::_S_always_equal() +13943: || _M_get_allocator() == __str._M_get_allocator(); +13943: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() +13943: && !__equal_allocs) +13943: { +13943: +13943: _M_destroy(_M_allocated_capacity); +13943: _M_data(_M_local_data()); +13943: _M_set_length(0); +13943: } +13943: +13943: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); +13943: +13943: if (__str._M_is_local()) +13943: { +13943: +13943: +13943: +13943: if (__builtin_expect(std::__addressof(__str) != this, true)) +13943: { +13943: if (__str.size()) +13943: this->_S_copy(_M_data(), __str._M_data(), __str.size()); +13943: _M_set_length(__str.size()); +13943: } +13943: } +13943: else if (_Alloc_traits::_S_propagate_on_move_assign() || __equal_allocs) +13943: { +13943: +13943: pointer __data = nullptr; +13943: size_type __capacity; +13943: if (!_M_is_local()) +13943: { +13943: if (__equal_allocs) +13943: { +13943: +13943: __data = _M_data(); +13943: __capacity = _M_allocated_capacity; +13943: } +13943: else +13943: _M_destroy(_M_allocated_capacity); +13943: } +13943: +13943: _M_data(__str._M_data()); +13943: _M_length(__str.length()); +13943: _M_capacity(__str._M_allocated_capacity); +13943: if (__data) +13943: { +13943: __str._M_data(__data); +13943: __str._M_capacity(__capacity); +13943: } +13943: else +13943: __str._M_data(__str._M_use_local_data()); +13943: } +13943: else +13943: _M_assign(__str); +13943: __str.clear(); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: operator=(initializer_list<_CharT> __l) +13943: { +13943: this->assign(__l.begin(), __l.size()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: operator=(const _Tp& __svt) +13943: { return this->assign(__svt); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: operator __sv_type() const noexcept +13943: { return __sv_type(data(), size()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: begin() noexcept +13943: { return iterator(_M_data()); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: begin() const noexcept +13943: { return const_iterator(_M_data()); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: end() noexcept +13943: { return iterator(_M_data() + this->size()); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: end() const noexcept +13943: { return const_iterator(_M_data() + this->size()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return reverse_iterator(this->end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(this->end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rend() noexcept +13943: { return reverse_iterator(this->begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(this->begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cbegin() const noexcept +13943: { return const_iterator(this->_M_data()); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cend() const noexcept +13943: { return const_iterator(this->_M_data() + this->size()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crbegin() const noexcept +13943: { return const_reverse_iterator(this->end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crend() const noexcept +13943: { return const_reverse_iterator(this->begin()); } +13943: +13943: +13943: public: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: size() const noexcept +13943: { return _M_string_length; } +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: length() const noexcept +13943: { return _M_string_length; } +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: max_size() const noexcept +13943: { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; } +13943: # 1102 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: void +13943: resize(size_type __n, _CharT __c); +13943: # 1116 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: void +13943: resize(size_type __n) +13943: { this->resize(__n, _CharT()); } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: void +13943: shrink_to_fit() noexcept +13943: { reserve(); } +13943: #pragma GCC diagnostic pop +13943: # 1169 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: void +13943: __resize_and_overwrite(size_type __n, _Operation __op); +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: capacity() const noexcept +13943: { +13943: return _M_is_local() ? size_type(_S_local_capacity) +13943: : _M_allocated_capacity; +13943: } +13943: # 1203 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: void +13943: reserve(size_type __res_arg); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: reserve(); +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_set_length(0); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: bool +13943: empty() const noexcept +13943: { return this->size() == 0; } +13943: # 1245 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: const_reference +13943: operator[] (size_type __pos) const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_data()[__pos]; +13943: } +13943: # 1263 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: reference +13943: operator[](size_type __pos) +13943: { +13943: +13943: +13943: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: ; +13943: return _M_data()[__pos]; +13943: } +13943: # 1285 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: const_reference +13943: at(size_type __n) const +13943: { +13943: if (__n >= this->size()) +13943: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") +13943: +13943: , +13943: __n, this->size()); +13943: return _M_data()[__n]; +13943: } +13943: # 1307 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: reference +13943: at(size_type __n) +13943: { +13943: if (__n >= size()) +13943: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") +13943: +13943: , +13943: __n, this->size()); +13943: return _M_data()[__n]; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: front() noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return operator[](0); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: front() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return operator[](0); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: back() noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return operator[](this->size() - 1); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: back() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +13943: return operator[](this->size() - 1); +13943: } +13943: # 1375 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: operator+=(const basic_string& __str) +13943: { return this->append(__str); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: operator+=(const _CharT* __s) +13943: { return this->append(__s); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: operator+=(_CharT __c) +13943: { +13943: this->push_back(__c); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: operator+=(initializer_list<_CharT> __l) +13943: { return this->append(__l.begin(), __l.size()); } +13943: # 1421 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: operator+=(const _Tp& __svt) +13943: { return this->append(__svt); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: append(const basic_string& __str) +13943: { return this->append(__str._M_data(), __str.size()); } +13943: # 1451 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: append(const basic_string& __str, size_type __pos, size_type __n = npos) +13943: { return this->append(__str._M_data() +13943: + __str._M_check(__pos, "basic_string::append"), +13943: __str._M_limit(__pos, __n)); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: append(const _CharT* __s, size_type __n) +13943: { +13943: ; +13943: _M_check_length(size_type(0), __n, "basic_string::append"); +13943: return _M_append(__s, __n); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: append(const _CharT* __s) +13943: { +13943: ; +13943: const size_type __n = traits_type::length(__s); +13943: _M_check_length(size_type(0), __n, "basic_string::append"); +13943: return _M_append(__s, __n); +13943: } +13943: # 1496 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: append(size_type __n, _CharT __c) +13943: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: append(initializer_list<_CharT> __l) +13943: { return this->append(__l.begin(), __l.size()); } +13943: # 1522 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template> +13943: +13943: +13943: +13943: +13943: basic_string& +13943: append(_InputIterator __first, _InputIterator __last) +13943: { return this->replace(end(), end(), __first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: append(const _Tp& __svt) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->append(__sv.data(), __sv.size()); +13943: } +13943: # 1554 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: append(const _Tp& __svt, size_type __pos, size_type __n = npos) +13943: { +13943: __sv_type __sv = __svt; +13943: return _M_append(__sv.data() +13943: + std::__sv_check(__sv.size(), __pos, "basic_string::append"), +13943: std::__sv_limit(__sv.size(), __pos, __n)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: push_back(_CharT __c) +13943: { +13943: const size_type __size = this->size(); +13943: if (__size + 1 > this->capacity()) +13943: this->_M_mutate(__size, size_type(0), 0, size_type(1)); +13943: traits_type::assign(this->_M_data()[__size], __c); +13943: this->_M_set_length(__size + 1); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_string& +13943: assign(const basic_string& __str) +13943: { +13943: +13943: if (_Alloc_traits::_S_propagate_on_copy_assign()) +13943: { +13943: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() +13943: && _M_get_allocator() != __str._M_get_allocator()) +13943: { +13943: +13943: +13943: if (__str.size() <= _S_local_capacity) +13943: { +13943: _M_destroy(_M_allocated_capacity); +13943: _M_data(_M_use_local_data()); +13943: _M_set_length(0); +13943: } +13943: else +13943: { +13943: const auto __len = __str.size(); +13943: auto __alloc = __str._M_get_allocator(); +13943: +13943: auto __ptr = _S_allocate(__alloc, __len + 1); +13943: _M_destroy(_M_allocated_capacity); +13943: _M_data(__ptr); +13943: _M_capacity(__len); +13943: _M_set_length(__len); +13943: } +13943: } +13943: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); +13943: } +13943: +13943: this->_M_assign(__str); +13943: return *this; +13943: } +13943: # 1632 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: assign(basic_string&& __str) +13943: noexcept(_Alloc_traits::_S_nothrow_move()) +13943: { +13943: +13943: +13943: return *this = std::move(__str); +13943: } +13943: # 1656 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: assign(const basic_string& __str, size_type __pos, size_type __n = npos) +13943: { return _M_replace(size_type(0), this->size(), __str._M_data() +13943: + __str._M_check(__pos, "basic_string::assign"), +13943: __str._M_limit(__pos, __n)); } +13943: # 1673 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: assign(const _CharT* __s, size_type __n) +13943: { +13943: ; +13943: return _M_replace(size_type(0), this->size(), __s, __n); +13943: } +13943: # 1690 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: assign(const _CharT* __s) +13943: { +13943: ; +13943: return _M_replace(size_type(0), this->size(), __s, +13943: traits_type::length(__s)); +13943: } +13943: # 1708 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: assign(size_type __n, _CharT __c) +13943: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } +13943: # 1722 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: template> +13943: +13943: basic_string& +13943: assign(_InputIterator __first, _InputIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: if constexpr (__is_one_of<_InputIterator, const_iterator, iterator, +13943: const _CharT*, _CharT*>::value) +13943: +13943: { +13943: ; +13943: return _M_replace(size_type(0), size(), +13943: std::__to_address(__first), __last - __first); +13943: } +13943: else +13943: return *this = basic_string(__first, __last, get_allocator()); +13943: } +13943: #pragma GCC diagnostic pop +13943: # 1759 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: assign(initializer_list<_CharT> __l) +13943: { +13943: +13943: +13943: const size_type __n = __l.size(); +13943: if (__n > capacity()) +13943: *this = basic_string(__l.begin(), __l.end(), get_allocator()); +13943: else +13943: { +13943: if (__n) +13943: _S_copy(_M_data(), __l.begin(), __n); +13943: _M_set_length(__n); +13943: } +13943: return *this; +13943: } +13943: # 1784 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: assign(const _Tp& __svt) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->assign(__sv.data(), __sv.size()); +13943: } +13943: # 1800 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: assign(const _Tp& __svt, size_type __pos, size_type __n = npos) +13943: { +13943: __sv_type __sv = __svt; +13943: return _M_replace(size_type(0), this->size(), +13943: __sv.data() +13943: + std::__sv_check(__sv.size(), __pos, "basic_string::assign"), +13943: std::__sv_limit(__sv.size(), __pos, __n)); +13943: } +13943: # 1829 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: iterator +13943: insert(const_iterator __p, size_type __n, _CharT __c) +13943: { +13943: ; +13943: const size_type __pos = __p - begin(); +13943: this->replace(__p, __p, __n, __c); +13943: return iterator(this->_M_data() + __pos); +13943: } +13943: # 1872 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template> +13943: +13943: iterator +13943: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) +13943: { +13943: ; +13943: const size_type __pos = __p - begin(); +13943: this->replace(__p, __p, __beg, __end); +13943: return iterator(this->_M_data() + __pos); +13943: } +13943: # 1909 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: iterator +13943: insert(const_iterator __p, initializer_list<_CharT> __l) +13943: { return this->insert(__p, __l.begin(), __l.end()); } +13943: # 1937 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: insert(size_type __pos1, const basic_string& __str) +13943: { return this->replace(__pos1, size_type(0), +13943: __str._M_data(), __str.size()); } +13943: # 1961 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: insert(size_type __pos1, const basic_string& __str, +13943: size_type __pos2, size_type __n = npos) +13943: { return this->replace(__pos1, size_type(0), __str._M_data() +13943: + __str._M_check(__pos2, "basic_string::insert"), +13943: __str._M_limit(__pos2, __n)); } +13943: # 1985 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: insert(size_type __pos, const _CharT* __s, size_type __n) +13943: { return this->replace(__pos, size_type(0), __s, __n); } +13943: # 2005 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: insert(size_type __pos, const _CharT* __s) +13943: { +13943: ; +13943: return this->replace(__pos, size_type(0), __s, +13943: traits_type::length(__s)); +13943: } +13943: # 2030 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: insert(size_type __pos, size_type __n, _CharT __c) +13943: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), +13943: size_type(0), __n, __c); } +13943: # 2049 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: iterator +13943: insert(__const_iterator __p, _CharT __c) +13943: { +13943: ; +13943: const size_type __pos = __p - begin(); +13943: _M_replace_aux(__pos, size_type(0), size_type(1), __c); +13943: return iterator(_M_data() + __pos); +13943: } +13943: # 2066 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: insert(size_type __pos, const _Tp& __svt) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->insert(__pos, __sv.data(), __sv.size()); +13943: } +13943: # 2083 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: insert(size_type __pos1, const _Tp& __svt, +13943: size_type __pos2, size_type __n = npos) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->replace(__pos1, size_type(0), +13943: __sv.data() +13943: + std::__sv_check(__sv.size(), __pos2, "basic_string::insert"), +13943: std::__sv_limit(__sv.size(), __pos2, __n)); +13943: } +13943: # 2112 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: erase(size_type __pos = 0, size_type __n = npos) +13943: { +13943: _M_check(__pos, "basic_string::erase"); +13943: if (__n == npos) +13943: this->_M_set_length(__pos); +13943: else if (__n != 0) +13943: this->_M_erase(__pos, _M_limit(__pos, __n)); +13943: return *this; +13943: } +13943: # 2132 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: iterator +13943: erase(__const_iterator __position) +13943: { +13943: +13943: ; +13943: const size_type __pos = __position - begin(); +13943: this->_M_erase(__pos, size_type(1)); +13943: return iterator(_M_data() + __pos); +13943: } +13943: # 2152 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: iterator +13943: erase(__const_iterator __first, __const_iterator __last) +13943: { +13943: +13943: ; +13943: const size_type __pos = __first - begin(); +13943: if (__last == end()) +13943: this->_M_set_length(__pos); +13943: else +13943: this->_M_erase(__pos, __last - __first); +13943: return iterator(this->_M_data() + __pos); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: pop_back() noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +13943: _M_erase(size() - 1, 1); +13943: } +13943: # 2198 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(size_type __pos, size_type __n, const basic_string& __str) +13943: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } +13943: # 2221 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(size_type __pos1, size_type __n1, const basic_string& __str, +13943: size_type __pos2, size_type __n2 = npos) +13943: { return this->replace(__pos1, __n1, __str._M_data() +13943: + __str._M_check(__pos2, "basic_string::replace"), +13943: __str._M_limit(__pos2, __n2)); } +13943: # 2247 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(size_type __pos, size_type __n1, const _CharT* __s, +13943: size_type __n2) +13943: { +13943: ; +13943: return _M_replace(_M_check(__pos, "basic_string::replace"), +13943: _M_limit(__pos, __n1), __s, __n2); +13943: } +13943: # 2273 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(size_type __pos, size_type __n1, const _CharT* __s) +13943: { +13943: ; +13943: return this->replace(__pos, __n1, __s, traits_type::length(__s)); +13943: } +13943: # 2298 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) +13943: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), +13943: _M_limit(__pos, __n1), __n2, __c); } +13943: # 2317 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, +13943: const basic_string& __str) +13943: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } +13943: # 2338 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, +13943: const _CharT* __s, size_type __n) +13943: { +13943: +13943: ; +13943: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); +13943: } +13943: # 2361 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) +13943: { +13943: ; +13943: return this->replace(__i1, __i2, __s, traits_type::length(__s)); +13943: } +13943: # 2383 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, +13943: _CharT __c) +13943: { +13943: +13943: ; +13943: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); +13943: } +13943: # 2409 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template> +13943: +13943: basic_string& +13943: replace(const_iterator __i1, const_iterator __i2, +13943: _InputIterator __k1, _InputIterator __k2) +13943: { +13943: +13943: ; +13943: ; +13943: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, +13943: std::__false_type()); +13943: } +13943: # 2442 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, +13943: _CharT* __k1, _CharT* __k2) +13943: { +13943: +13943: ; +13943: ; +13943: return this->replace(__i1 - begin(), __i2 - __i1, +13943: __k1, __k2 - __k1); +13943: } +13943: +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, +13943: const _CharT* __k1, const _CharT* __k2) +13943: { +13943: +13943: ; +13943: ; +13943: return this->replace(__i1 - begin(), __i2 - __i1, +13943: __k1, __k2 - __k1); +13943: } +13943: +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, +13943: iterator __k1, iterator __k2) +13943: { +13943: +13943: ; +13943: ; +13943: return this->replace(__i1 - begin(), __i2 - __i1, +13943: __k1.base(), __k2 - __k1); +13943: } +13943: +13943: +13943: basic_string& +13943: replace(__const_iterator __i1, __const_iterator __i2, +13943: const_iterator __k1, const_iterator __k2) +13943: { +13943: +13943: ; +13943: ; +13943: return this->replace(__i1 - begin(), __i2 - __i1, +13943: __k1.base(), __k2 - __k1); +13943: } +13943: # 2505 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: basic_string& replace(const_iterator __i1, const_iterator __i2, +13943: initializer_list<_CharT> __l) +13943: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } +13943: # 2519 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: replace(size_type __pos, size_type __n, const _Tp& __svt) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->replace(__pos, __n, __sv.data(), __sv.size()); +13943: } +13943: # 2537 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: replace(size_type __pos1, size_type __n1, const _Tp& __svt, +13943: size_type __pos2, size_type __n2 = npos) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->replace(__pos1, __n1, +13943: __sv.data() +13943: + std::__sv_check(__sv.size(), __pos2, "basic_string::replace"), +13943: std::__sv_limit(__sv.size(), __pos2, __n2)); +13943: } +13943: # 2559 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: _If_sv<_Tp, basic_string&> +13943: replace(const_iterator __i1, const_iterator __i2, const _Tp& __svt) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->replace(__i1 - begin(), __i2 - __i1, __sv); +13943: } +13943: +13943: +13943: private: +13943: template +13943: +13943: basic_string& +13943: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, +13943: _Integer __n, _Integer __val, __true_type) +13943: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } +13943: +13943: template +13943: +13943: basic_string& +13943: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, +13943: _InputIterator __k1, _InputIterator __k2, +13943: __false_type); +13943: +13943: +13943: basic_string& +13943: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, +13943: _CharT __c); +13943: +13943: __attribute__((__noinline__, __noclone__, __cold__)) void +13943: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, +13943: const size_type __len2, const size_type __how_much); +13943: +13943: +13943: basic_string& +13943: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, +13943: const size_type __len2); +13943: +13943: +13943: basic_string& +13943: _M_append(const _CharT* __s, size_type __n); +13943: +13943: public: +13943: # 2616 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: size_type +13943: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; +13943: # 2627 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: +13943: void +13943: swap(basic_string& __s) noexcept; +13943: # 2638 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: const _CharT* +13943: c_str() const noexcept +13943: { return _M_data(); } +13943: # 2651 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: const _CharT* +13943: data() const noexcept +13943: { return _M_data(); } +13943: # 2663 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: _CharT* +13943: data() noexcept +13943: { return _M_data(); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return _M_get_allocator(); } +13943: # 2689 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept; +13943: # 2704 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find(const basic_string& __str, size_type __pos = 0) const +13943: noexcept +13943: { return this->find(__str.data(), __pos, __str.size()); } +13943: # 2717 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, size_type> +13943: find(const _Tp& __svt, size_type __pos = 0) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->find(__sv.data(), __pos, __sv.size()); +13943: } +13943: # 2738 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find(const _CharT* __s, size_type __pos = 0) const noexcept +13943: { +13943: ; +13943: return this->find(__s, __pos, traits_type::length(__s)); +13943: } +13943: # 2756 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find(_CharT __c, size_type __pos = 0) const noexcept; +13943: # 2770 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: rfind(const basic_string& __str, size_type __pos = npos) const +13943: noexcept +13943: { return this->rfind(__str.data(), __pos, __str.size()); } +13943: # 2783 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, size_type> +13943: rfind(const _Tp& __svt, size_type __pos = npos) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->rfind(__sv.data(), __pos, __sv.size()); +13943: } +13943: # 2806 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: rfind(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept; +13943: # 2821 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: rfind(const _CharT* __s, size_type __pos = npos) const +13943: { +13943: ; +13943: return this->rfind(__s, __pos, traits_type::length(__s)); +13943: } +13943: # 2839 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: rfind(_CharT __c, size_type __pos = npos) const noexcept; +13943: # 2854 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_of(const basic_string& __str, size_type __pos = 0) const +13943: noexcept +13943: { return this->find_first_of(__str.data(), __pos, __str.size()); } +13943: # 2868 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, size_type> +13943: find_first_of(const _Tp& __svt, size_type __pos = 0) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->find_first_of(__sv.data(), __pos, __sv.size()); +13943: } +13943: # 2891 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept; +13943: # 2906 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_of(const _CharT* __s, size_type __pos = 0) const +13943: noexcept +13943: { +13943: ; +13943: return this->find_first_of(__s, __pos, traits_type::length(__s)); +13943: } +13943: # 2927 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_of(_CharT __c, size_type __pos = 0) const noexcept +13943: { return this->find(__c, __pos); } +13943: # 2943 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_of(const basic_string& __str, size_type __pos = npos) const +13943: noexcept +13943: { return this->find_last_of(__str.data(), __pos, __str.size()); } +13943: # 2957 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, size_type> +13943: find_last_of(const _Tp& __svt, size_type __pos = npos) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->find_last_of(__sv.data(), __pos, __sv.size()); +13943: } +13943: # 2980 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept; +13943: # 2995 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_of(const _CharT* __s, size_type __pos = npos) const +13943: noexcept +13943: { +13943: ; +13943: return this->find_last_of(__s, __pos, traits_type::length(__s)); +13943: } +13943: # 3016 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_of(_CharT __c, size_type __pos = npos) const noexcept +13943: { return this->rfind(__c, __pos); } +13943: # 3031 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_not_of(const basic_string& __str, size_type __pos = 0) const +13943: noexcept +13943: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } +13943: # 3045 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, size_type> +13943: find_first_not_of(const _Tp& __svt, size_type __pos = 0) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->find_first_not_of(__sv.data(), __pos, __sv.size()); +13943: } +13943: # 3068 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_not_of(const _CharT* __s, size_type __pos, +13943: size_type __n) const noexcept; +13943: # 3083 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_not_of(const _CharT* __s, size_type __pos = 0) const +13943: noexcept +13943: { +13943: ; +13943: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); +13943: } +13943: # 3102 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_first_not_of(_CharT __c, size_type __pos = 0) const +13943: noexcept; +13943: # 3118 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_not_of(const basic_string& __str, size_type __pos = npos) const +13943: noexcept +13943: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } +13943: # 3132 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, size_type> +13943: find_last_not_of(const _Tp& __svt, size_type __pos = npos) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return this->find_last_not_of(__sv.data(), __pos, __sv.size()); +13943: } +13943: # 3155 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_not_of(const _CharT* __s, size_type __pos, +13943: size_type __n) const noexcept; +13943: # 3170 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_not_of(const _CharT* __s, size_type __pos = npos) const +13943: noexcept +13943: { +13943: ; +13943: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); +13943: } +13943: # 3189 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: size_type +13943: find_last_not_of(_CharT __c, size_type __pos = npos) const +13943: noexcept; +13943: # 3206 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: basic_string +13943: substr(size_type __pos = 0, size_type __n = npos) const +13943: { return basic_string(*this, +13943: _M_check(__pos, "basic_string::substr"), __n); } +13943: # 3226 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: int +13943: compare(const basic_string& __str) const +13943: { +13943: const size_type __size = this->size(); +13943: const size_type __osize = __str.size(); +13943: const size_type __len = std::min(__size, __osize); +13943: +13943: int __r = traits_type::compare(_M_data(), __str.data(), __len); +13943: if (!__r) +13943: __r = _S_compare(__size, __osize); +13943: return __r; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, int> +13943: compare(const _Tp& __svt) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: const size_type __size = this->size(); +13943: const size_type __osize = __sv.size(); +13943: const size_type __len = std::min(__size, __osize); +13943: +13943: int __r = traits_type::compare(_M_data(), __sv.data(), __len); +13943: if (!__r) +13943: __r = _S_compare(__size, __osize); +13943: return __r; +13943: } +13943: # 3271 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, int> +13943: compare(size_type __pos, size_type __n, const _Tp& __svt) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return __sv_type(*this).substr(__pos, __n).compare(__sv); +13943: } +13943: # 3291 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _If_sv<_Tp, int> +13943: compare(size_type __pos1, size_type __n1, const _Tp& __svt, +13943: size_type __pos2, size_type __n2 = npos) const +13943: noexcept(is_same<_Tp, __sv_type>::value) +13943: { +13943: __sv_type __sv = __svt; +13943: return __sv_type(*this) +13943: .substr(__pos1, __n1).compare(__sv.substr(__pos2, __n2)); +13943: } +13943: # 3323 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: int +13943: compare(size_type __pos, size_type __n, const basic_string& __str) const +13943: { +13943: _M_check(__pos, "basic_string::compare"); +13943: __n = _M_limit(__pos, __n); +13943: const size_type __osize = __str.size(); +13943: const size_type __len = std::min(__n, __osize); +13943: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); +13943: if (!__r) +13943: __r = _S_compare(__n, __osize); +13943: return __r; +13943: } +13943: # 3360 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: int +13943: compare(size_type __pos1, size_type __n1, const basic_string& __str, +13943: size_type __pos2, size_type __n2 = npos) const +13943: { +13943: _M_check(__pos1, "basic_string::compare"); +13943: __str._M_check(__pos2, "basic_string::compare"); +13943: __n1 = _M_limit(__pos1, __n1); +13943: __n2 = __str._M_limit(__pos2, __n2); +13943: const size_type __len = std::min(__n1, __n2); +13943: int __r = traits_type::compare(_M_data() + __pos1, +13943: __str.data() + __pos2, __len); +13943: if (!__r) +13943: __r = _S_compare(__n1, __n2); +13943: return __r; +13943: } +13943: # 3391 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: int +13943: compare(const _CharT* __s) const noexcept +13943: { +13943: ; +13943: const size_type __size = this->size(); +13943: const size_type __osize = traits_type::length(__s); +13943: const size_type __len = std::min(__size, __osize); +13943: int __r = traits_type::compare(_M_data(), __s, __len); +13943: if (!__r) +13943: __r = _S_compare(__size, __osize); +13943: return __r; +13943: } +13943: # 3426 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: int +13943: compare(size_type __pos, size_type __n1, const _CharT* __s) const +13943: { +13943: ; +13943: _M_check(__pos, "basic_string::compare"); +13943: __n1 = _M_limit(__pos, __n1); +13943: const size_type __osize = traits_type::length(__s); +13943: const size_type __len = std::min(__n1, __osize); +13943: int __r = traits_type::compare(_M_data() + __pos, __s, __len); +13943: if (!__r) +13943: __r = _S_compare(__n1, __osize); +13943: return __r; +13943: } +13943: # 3465 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: int +13943: compare(size_type __pos, size_type __n1, const _CharT* __s, +13943: size_type __n2) const +13943: { +13943: ; +13943: _M_check(__pos, "basic_string::compare"); +13943: __n1 = _M_limit(__pos, __n1); +13943: const size_type __len = std::min(__n1, __n2); +13943: int __r = traits_type::compare(_M_data() + __pos, __s, __len); +13943: if (!__r) +13943: __r = _S_compare(__n1, __n2); +13943: return __r; +13943: } +13943: # 3530 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template friend class basic_stringbuf; +13943: }; +13943: } +13943: +13943: } +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: namespace __cxx11 { +13943: template::value_type, +13943: typename _Allocator = allocator<_CharT>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireAllocator<_Allocator>> +13943: basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator()) +13943: -> basic_string<_CharT, char_traits<_CharT>, _Allocator>; +13943: +13943: +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: basic_string(basic_string_view<_CharT, _Traits>, const _Allocator& = _Allocator()) +13943: -> basic_string<_CharT, _Traits, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: basic_string(basic_string_view<_CharT, _Traits>, +13943: typename basic_string<_CharT, _Traits, _Allocator>::size_type, +13943: typename basic_string<_CharT, _Traits, _Allocator>::size_type, +13943: const _Allocator& = _Allocator()) +13943: -> basic_string<_CharT, _Traits, _Allocator>; +13943: } +13943: +13943: +13943: template +13943: +13943: inline _Str +13943: __str_concat(typename _Str::value_type const* __lhs, +13943: typename _Str::size_type __lhs_len, +13943: typename _Str::value_type const* __rhs, +13943: typename _Str::size_type __rhs_len, +13943: typename _Str::allocator_type const& __a) +13943: { +13943: typedef typename _Str::allocator_type allocator_type; +13943: typedef __gnu_cxx::__alloc_traits _Alloc_traits; +13943: _Str __str(_Alloc_traits::_S_select_on_copy(__a)); +13943: __str.reserve(__lhs_len + __rhs_len); +13943: __str.append(__lhs, __lhs_len); +13943: __str.append(__rhs, __rhs_len); +13943: return __str; +13943: } +13943: # 3595 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { +13943: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +13943: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), +13943: __rhs.c_str(), __rhs.size(), +13943: __lhs.get_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT,_Traits,_Alloc> +13943: operator+(const _CharT* __lhs, +13943: const basic_string<_CharT,_Traits,_Alloc>& __rhs) +13943: { +13943: ; +13943: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +13943: return std::__str_concat<_Str>(__lhs, _Traits::length(__lhs), +13943: __rhs.c_str(), __rhs.size(), +13943: __rhs.get_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT,_Traits,_Alloc> +13943: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs) +13943: { +13943: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +13943: return std::__str_concat<_Str>(__builtin_addressof(__lhs), 1, +13943: __rhs.c_str(), __rhs.size(), +13943: __rhs.get_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const _CharT* __rhs) +13943: { +13943: ; +13943: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +13943: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), +13943: __rhs, _Traits::length(__rhs), +13943: __lhs.get_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) +13943: { +13943: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +13943: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), +13943: __builtin_addressof(__rhs), 1, +13943: __lhs.get_allocator()); +13943: } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { return std::move(__lhs.append(__rhs)); } +13943: +13943: template +13943: +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +13943: { return std::move(__rhs.insert(0, __lhs)); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +13943: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +13943: { +13943: +13943: using _Alloc_traits = allocator_traits<_Alloc>; +13943: bool __use_rhs = false; +13943: if constexpr (typename _Alloc_traits::is_always_equal{}) +13943: __use_rhs = true; +13943: else if (__lhs.get_allocator() == __rhs.get_allocator()) +13943: __use_rhs = true; +13943: if (__use_rhs) +13943: +13943: { +13943: const auto __size = __lhs.size() + __rhs.size(); +13943: if (__size > __lhs.capacity() && __size <= __rhs.capacity()) +13943: return std::move(__rhs.insert(0, __lhs)); +13943: } +13943: return std::move(__lhs.append(__rhs)); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(const _CharT* __lhs, +13943: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +13943: { return std::move(__rhs.insert(0, __lhs)); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(_CharT __lhs, +13943: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +13943: { return std::move(__rhs.insert(0, 1, __lhs)); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +13943: const _CharT* __rhs) +13943: { return std::move(__lhs.append(__rhs)); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline basic_string<_CharT, _Traits, _Alloc> +13943: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +13943: _CharT __rhs) +13943: { return std::move(__lhs.append(1, __rhs)); } +13943: # 3752 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: noexcept +13943: { +13943: return __lhs.size() == __rhs.size() +13943: && !_Traits::compare(__lhs.data(), __rhs.data(), __lhs.size()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const _CharT* __rhs) +13943: { +13943: return __lhs.size() == _Traits::length(__rhs) +13943: && !_Traits::compare(__lhs.data(), __rhs, __lhs.size()); +13943: } +13943: # 3816 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const _CharT* __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { return __rhs == __lhs; } +13943: # 3830 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: noexcept +13943: { return !(__lhs == __rhs); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const _CharT* __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { return !(__rhs == __lhs); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const _CharT* __rhs) +13943: { return !(__lhs == __rhs); } +13943: # 3871 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: noexcept +13943: { return __lhs.compare(__rhs) < 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const _CharT* __rhs) +13943: { return __lhs.compare(__rhs) < 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const _CharT* __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { return __rhs.compare(__lhs) > 0; } +13943: # 3912 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: noexcept +13943: { return __lhs.compare(__rhs) > 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const _CharT* __rhs) +13943: { return __lhs.compare(__rhs) > 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const _CharT* __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { return __rhs.compare(__lhs) < 0; } +13943: # 3953 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: noexcept +13943: { return __lhs.compare(__rhs) <= 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const _CharT* __rhs) +13943: { return __lhs.compare(__rhs) <= 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const _CharT* __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { return __rhs.compare(__lhs) >= 0; } +13943: # 3994 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: noexcept +13943: { return __lhs.compare(__rhs) >= 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: const _CharT* __rhs) +13943: { return __lhs.compare(__rhs) >= 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const _CharT* __lhs, +13943: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: { return __rhs.compare(__lhs) <= 0; } +13943: # 4036 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: +13943: inline void +13943: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, +13943: basic_string<_CharT, _Traits, _Alloc>& __rhs) +13943: noexcept(noexcept(__lhs.swap(__rhs))) +13943: { __lhs.swap(__rhs); } +13943: # 4057 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: operator>>(basic_istream<_CharT, _Traits>& __is, +13943: basic_string<_CharT, _Traits, _Alloc>& __str); +13943: +13943: template<> +13943: basic_istream& +13943: operator>>(basic_istream& __is, basic_string& __str); +13943: # 4075 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __os, +13943: const basic_string<_CharT, _Traits, _Alloc>& __str) +13943: { +13943: +13943: +13943: return __ostream_insert(__os, __str.data(), __str.size()); +13943: } +13943: # 4098 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: getline(basic_istream<_CharT, _Traits>& __is, +13943: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); +13943: # 4115 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: inline basic_istream<_CharT, _Traits>& +13943: getline(basic_istream<_CharT, _Traits>& __is, +13943: basic_string<_CharT, _Traits, _Alloc>& __str) +13943: { return std::getline(__is, __str, __is.widen('\n')); } +13943: +13943: +13943: +13943: template +13943: inline basic_istream<_CharT, _Traits>& +13943: getline(basic_istream<_CharT, _Traits>&& __is, +13943: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) +13943: { return std::getline(__is, __str, __delim); } +13943: +13943: +13943: template +13943: inline basic_istream<_CharT, _Traits>& +13943: getline(basic_istream<_CharT, _Traits>&& __is, +13943: basic_string<_CharT, _Traits, _Alloc>& __str) +13943: { return std::getline(__is, __str); } +13943: +13943: +13943: template<> +13943: basic_istream& +13943: getline(basic_istream& __in, basic_string& __str, +13943: char __delim); +13943: +13943: +13943: template<> +13943: basic_istream& +13943: getline(basic_istream& __in, basic_string& __str, +13943: wchar_t __delim); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/ext/string_conversions.h" 1 3 +13943: # 32 "/usr/include/c++/14/ext/string_conversions.h" 3 +13943: +13943: # 33 "/usr/include/c++/14/ext/string_conversions.h" 3 +13943: # 43 "/usr/include/c++/14/ext/string_conversions.h" 3 +13943: # 1 "/usr/include/c++/14/cstdlib" 1 3 +13943: # 39 "/usr/include/c++/14/cstdlib" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdlib" 3 +13943: # 79 "/usr/include/c++/14/cstdlib" 3 +13943: # 1 "/usr/include/stdlib.h" 1 3 4 +13943: # 26 "/usr/include/stdlib.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +13943: # 27 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 33 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 1 3 4 +13943: # 41 "/usr/include/stdlib.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 1 3 4 +13943: # 42 "/usr/include/stdlib.h" 2 3 4 +13943: # 56 "/usr/include/stdlib.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +13943: # 57 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: typedef struct +13943: { +13943: int quot; +13943: int rem; +13943: } div_t; +13943: +13943: +13943: +13943: typedef struct +13943: { +13943: long int quot; +13943: long int rem; +13943: } ldiv_t; +13943: +13943: +13943: +13943: +13943: +13943: __extension__ typedef struct +13943: { +13943: long long int quot; +13943: long long int rem; +13943: } lldiv_t; +13943: # 98 "/usr/include/stdlib.h" 3 4 +13943: extern size_t __ctype_get_mb_cur_max (void) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern double atof (const char *__nptr) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: extern int atoi (const char *__nptr) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: extern long int atol (const char *__nptr) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: __extension__ extern long long int atoll (const char *__nptr) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern double strtod (const char *__restrict __nptr, +13943: char **__restrict __endptr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern float strtof (const char *__restrict __nptr, +13943: char **__restrict __endptr) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: extern long double strtold (const char *__restrict __nptr, +13943: char **__restrict __endptr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 141 "/usr/include/stdlib.h" 3 4 +13943: extern _Float32 strtof32 (const char *__restrict __nptr, +13943: char **__restrict __endptr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern _Float64 strtof64 (const char *__restrict __nptr, +13943: char **__restrict __endptr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 159 "/usr/include/stdlib.h" 3 4 +13943: extern _Float32x strtof32x (const char *__restrict __nptr, +13943: char **__restrict __endptr) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 177 "/usr/include/stdlib.h" 3 4 +13943: extern long int strtol (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: extern unsigned long int strtoul (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: __extension__ +13943: extern long long int strtoq (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: __extension__ +13943: extern unsigned long long int strtouq (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: __extension__ +13943: extern long long int strtoll (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: __extension__ +13943: extern unsigned long long int strtoull (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtol") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoul") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: +13943: __extension__ +13943: extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: __extension__ +13943: extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: +13943: __extension__ +13943: extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: __extension__ +13943: extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: # 278 "/usr/include/stdlib.h" 3 4 +13943: extern int strfromd (char *__dest, size_t __size, const char *__format, +13943: double __f) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: +13943: extern int strfromf (char *__dest, size_t __size, const char *__format, +13943: float __f) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: +13943: extern int strfroml (char *__dest, size_t __size, const char *__format, +13943: long double __f) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: # 298 "/usr/include/stdlib.h" 3 4 +13943: extern int strfromf32 (char *__dest, size_t __size, const char * __format, +13943: _Float32 __f) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: +13943: +13943: +13943: extern int strfromf64 (char *__dest, size_t __size, const char * __format, +13943: _Float64 __f) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: # 316 "/usr/include/stdlib.h" 3 4 +13943: extern int strfromf32x (char *__dest, size_t __size, const char * __format, +13943: _Float32x __f) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))); +13943: # 340 "/usr/include/stdlib.h" 3 4 +13943: extern long int strtol_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base, +13943: locale_t __loc) noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +13943: +13943: extern unsigned long int strtoul_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, +13943: int __base, locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +13943: +13943: __extension__ +13943: extern long long int strtoll_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base, +13943: locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +13943: +13943: __extension__ +13943: extern unsigned long long int strtoull_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, +13943: int __base, locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +13943: +13943: +13943: +13943: +13943: +13943: extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtol_l") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 4))); +13943: extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoul_l") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 4))); +13943: __extension__ +13943: extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoll_l") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 4))); +13943: __extension__ +13943: 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") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 4))); +13943: # 415 "/usr/include/stdlib.h" 3 4 +13943: extern double strtod_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: extern float strtof_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: extern long double strtold_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, +13943: locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: # 436 "/usr/include/stdlib.h" 3 4 +13943: extern _Float32 strtof32_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, +13943: locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: +13943: +13943: +13943: extern _Float64 strtof64_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, +13943: locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: # 457 "/usr/include/stdlib.h" 3 4 +13943: extern _Float32x strtof32x_l (const char *__restrict __nptr, +13943: char **__restrict __endptr, +13943: locale_t __loc) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +13943: # 480 "/usr/include/stdlib.h" 3 4 +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: __attribute__ ((__leaf__)) atoi (const char *__nptr) noexcept (true) +13943: { +13943: return (int) strtol (__nptr, (char **) __null, 10); +13943: } +13943: extern __inline __attribute__ ((__gnu_inline__)) long int +13943: __attribute__ ((__leaf__)) atol (const char *__nptr) noexcept (true) +13943: { +13943: return strtol (__nptr, (char **) __null, 10); +13943: } +13943: +13943: +13943: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int +13943: __attribute__ ((__leaf__)) atoll (const char *__nptr) noexcept (true) +13943: { +13943: return strtoll (__nptr, (char **) __null, 10); +13943: } +13943: # 505 "/usr/include/stdlib.h" 3 4 +13943: extern char *l64a (long int __n) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: extern long int a64l (const char *__s) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/sys/types.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: typedef __u_char u_char; +13943: typedef __u_short u_short; +13943: typedef __u_int u_int; +13943: typedef __u_long u_long; +13943: typedef __quad_t quad_t; +13943: typedef __u_quad_t u_quad_t; +13943: typedef __fsid_t fsid_t; +13943: +13943: +13943: typedef __loff_t loff_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __ino64_t ino_t; +13943: +13943: +13943: +13943: +13943: typedef __ino64_t ino64_t; +13943: +13943: +13943: +13943: +13943: typedef __dev_t dev_t; +13943: +13943: +13943: +13943: +13943: typedef __gid_t gid_t; +13943: +13943: +13943: +13943: +13943: typedef __mode_t mode_t; +13943: +13943: +13943: +13943: +13943: typedef __nlink_t nlink_t; +13943: +13943: +13943: +13943: +13943: typedef __uid_t uid_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __off64_t off_t; +13943: +13943: +13943: +13943: +13943: typedef __off64_t off64_t; +13943: # 103 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +13943: typedef __id_t id_t; +13943: +13943: +13943: +13943: +13943: typedef __ssize_t ssize_t; +13943: +13943: +13943: +13943: +13943: +13943: typedef __daddr_t daddr_t; +13943: typedef __caddr_t caddr_t; +13943: +13943: +13943: +13943: +13943: +13943: typedef __key_t key_t; +13943: # 134 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +13943: typedef __useconds_t useconds_t; +13943: +13943: +13943: +13943: typedef __suseconds_t suseconds_t; +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 145 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 +13943: +13943: +13943: +13943: typedef unsigned long int ulong; +13943: typedef unsigned short int ushort; +13943: typedef unsigned int uint; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __uint8_t u_int8_t; +13943: typedef __uint16_t u_int16_t; +13943: typedef __uint32_t u_int32_t; +13943: typedef __uint64_t u_int64_t; +13943: +13943: +13943: typedef int register_t __attribute__ ((__mode__ (__word__))); +13943: # 176 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +13943: # 1 "/usr/include/endian.h" 1 3 4 +13943: # 35 "/usr/include/endian.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 1 3 4 +13943: # 33 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 +13943: static __inline __uint16_t +13943: __bswap_16 (__uint16_t __bsx) +13943: { +13943: +13943: return __builtin_bswap16 (__bsx); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: static __inline __uint32_t +13943: __bswap_32 (__uint32_t __bsx) +13943: { +13943: +13943: return __builtin_bswap32 (__bsx); +13943: +13943: +13943: +13943: } +13943: # 69 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 +13943: __extension__ static __inline __uint64_t +13943: __bswap_64 (__uint64_t __bsx) +13943: { +13943: +13943: return __builtin_bswap64 (__bsx); +13943: +13943: +13943: +13943: } +13943: # 36 "/usr/include/endian.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 1 3 4 +13943: # 32 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 3 4 +13943: static __inline __uint16_t +13943: __uint16_identity (__uint16_t __x) +13943: { +13943: return __x; +13943: } +13943: +13943: static __inline __uint32_t +13943: __uint32_identity (__uint32_t __x) +13943: { +13943: return __x; +13943: } +13943: +13943: static __inline __uint64_t +13943: __uint64_identity (__uint64_t __x) +13943: { +13943: return __x; +13943: } +13943: # 37 "/usr/include/endian.h" 2 3 4 +13943: # 177 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/sys/select.h" 1 3 4 +13943: # 30 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/select.h" 1 3 4 +13943: # 31 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __sigset_t sigset_t; +13943: # 34 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 +13943: # 49 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +13943: typedef long int __fd_mask; +13943: # 59 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +13943: typedef struct +13943: { +13943: +13943: +13943: +13943: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; +13943: +13943: +13943: +13943: +13943: +13943: } fd_set; +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __fd_mask fd_mask; +13943: # 91 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +13943: extern "C" { +13943: # 108 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +13943: extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) __asm__ ("" "__select64") +13943: +13943: +13943: +13943: +13943: ; +13943: # 134 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +13943: 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") +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: # 150 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 3 4 +13943: extern long int __fdelt_chk (long int __d); +13943: extern long int __fdelt_warn (long int __d) +13943: __attribute__((__warning__ ("bit outside of fd_set selected"))); +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 2 3 4 +13943: # 151 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 +13943: +13943: +13943: } +13943: # 180 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: typedef __blksize_t blksize_t; +13943: # 205 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +13943: typedef __blkcnt64_t blkcnt_t; +13943: +13943: +13943: +13943: typedef __fsblkcnt64_t fsblkcnt_t; +13943: +13943: +13943: +13943: typedef __fsfilcnt64_t fsfilcnt_t; +13943: +13943: +13943: +13943: +13943: +13943: typedef __blkcnt64_t blkcnt64_t; +13943: typedef __fsblkcnt64_t fsblkcnt64_t; +13943: typedef __fsfilcnt64_t fsfilcnt64_t; +13943: # 230 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +13943: } +13943: # 515 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int random (void) noexcept (true); +13943: +13943: +13943: extern void srandom (unsigned int __seed) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern char *initstate (unsigned int __seed, char *__statebuf, +13943: size_t __statelen) noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern char *setstate (char *__statebuf) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct random_data +13943: { +13943: int32_t *fptr; +13943: int32_t *rptr; +13943: int32_t *state; +13943: int rand_type; +13943: int rand_deg; +13943: int rand_sep; +13943: int32_t *end_ptr; +13943: }; +13943: +13943: extern int random_r (struct random_data *__restrict __buf, +13943: int32_t *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern int srandom_r (unsigned int __seed, struct random_data *__buf) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, +13943: size_t __statelen, +13943: struct random_data *__restrict __buf) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 4))); +13943: +13943: extern int setstate_r (char *__restrict __statebuf, +13943: struct random_data *__restrict __buf) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: extern int rand (void) noexcept (true); +13943: +13943: extern void srand (unsigned int __seed) noexcept (true); +13943: +13943: +13943: +13943: extern int rand_r (unsigned int *__seed) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double drand48 (void) noexcept (true); +13943: extern double erand48 (unsigned short int __xsubi[3]) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern long int lrand48 (void) noexcept (true); +13943: extern long int nrand48 (unsigned short int __xsubi[3]) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern long int mrand48 (void) noexcept (true); +13943: extern long int jrand48 (unsigned short int __xsubi[3]) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern void srand48 (long int __seedval) noexcept (true); +13943: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: extern void lcong48 (unsigned short int __param[7]) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: struct drand48_data +13943: { +13943: unsigned short int __x[3]; +13943: unsigned short int __old_x[3]; +13943: unsigned short int __c; +13943: unsigned short int __init; +13943: __extension__ unsigned long long int __a; +13943: +13943: }; +13943: +13943: +13943: extern int drand48_r (struct drand48_data *__restrict __buffer, +13943: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: extern int erand48_r (unsigned short int __xsubi[3], +13943: struct drand48_data *__restrict __buffer, +13943: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int lrand48_r (struct drand48_data *__restrict __buffer, +13943: long int *__restrict __result) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: extern int nrand48_r (unsigned short int __xsubi[3], +13943: struct drand48_data *__restrict __buffer, +13943: long int *__restrict __result) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int mrand48_r (struct drand48_data *__restrict __buffer, +13943: long int *__restrict __result) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: extern int jrand48_r (unsigned short int __xsubi[3], +13943: struct drand48_data *__restrict __buffer, +13943: long int *__restrict __result) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: extern int seed48_r (unsigned short int __seed16v[3], +13943: struct drand48_data *__buffer) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern int lcong48_r (unsigned short int __param[7], +13943: struct drand48_data *__buffer) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern __uint32_t arc4random (void) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: extern void arc4random_buf (void *__buf, size_t __size) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +13943: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: extern void *calloc (size_t __nmemb, size_t __size) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern void *realloc (void *__ptr, size_t __size) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); +13943: +13943: +13943: extern void free (void *__ptr) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__alloc_size__ (2, 3))) +13943: __attribute__ ((__malloc__ (__builtin_free, 1))); +13943: +13943: +13943: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) +13943: noexcept (true) __attribute__ ((__malloc__ (reallocarray, 1))); +13943: +13943: +13943: +13943: # 1 "/usr/include/alloca.h" 1 3 4 +13943: # 24 "/usr/include/alloca.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 25 "/usr/include/alloca.h" 2 3 4 +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: extern void *alloca (size_t __size) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 707 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +13943: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern void *aligned_alloc (size_t __alignment, size_t __size) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) +13943: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern void abort (void) noexcept (true) __attribute__ ((__noreturn__)); +13943: +13943: +13943: +13943: extern int atexit (void (*__func) (void)) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern "C++" int at_quick_exit (void (*__func) (void)) +13943: noexcept (true) __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); +13943: # 749 "/usr/include/stdlib.h" 3 4 +13943: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern void exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); +13943: +13943: +13943: +13943: +13943: +13943: extern void quick_exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); +13943: +13943: +13943: +13943: +13943: +13943: extern void _Exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); +13943: +13943: +13943: +13943: +13943: extern char *getenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern char *secure_getenv (const char *__name) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int putenv (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern int setenv (const char *__name, const char *__value, int __replace) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: extern int unsetenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int clearenv (void) noexcept (true); +13943: # 814 "/usr/include/stdlib.h" 3 4 +13943: extern char *mktemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 830 "/usr/include/stdlib.h" 3 4 +13943: extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: # 852 "/usr/include/stdlib.h" 3 4 +13943: extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64") +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int mkstemps64 (char *__template, int __suffixlen) +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: # 870 "/usr/include/stdlib.h" 3 4 +13943: extern char *mkdtemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: # 884 "/usr/include/stdlib.h" 3 4 +13943: extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: # 905 "/usr/include/stdlib.h" 3 4 +13943: extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64") +13943: +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: # 923 "/usr/include/stdlib.h" 3 4 +13943: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern char *canonicalize_file_name (const char *__name) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) +13943: __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); +13943: # 940 "/usr/include/stdlib.h" 3 4 +13943: extern char *realpath (const char *__restrict __name, +13943: char *__restrict __resolved) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef int (*__compar_fn_t) (const void *, const void *); +13943: +13943: +13943: typedef __compar_fn_t comparison_fn_t; +13943: +13943: +13943: +13943: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); +13943: +13943: +13943: +13943: +13943: extern void *bsearch (const void *__key, const void *__base, +13943: size_t __nmemb, size_t __size, __compar_fn_t __compar) +13943: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 1 3 4 +13943: # 19 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 3 4 +13943: extern __inline __attribute__ ((__gnu_inline__)) void * +13943: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, +13943: __compar_fn_t __compar) +13943: { +13943: size_t __l, __u, __idx; +13943: const void *__p; +13943: int __comparison; +13943: +13943: __l = 0; +13943: __u = __nmemb; +13943: while (__l < __u) +13943: { +13943: __idx = (__l + __u) / 2; +13943: __p = (const void *) (((const char *) __base) + (__idx * __size)); +13943: __comparison = (*__compar) (__key, __p); +13943: if (__comparison < 0) +13943: __u = __idx; +13943: else if (__comparison > 0) +13943: __l = __idx + 1; +13943: else +13943: { +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wcast-qual" +13943: +13943: return (void *) __p; +13943: +13943: #pragma GCC diagnostic pop +13943: +13943: } +13943: } +13943: +13943: return __null; +13943: } +13943: # 966 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: extern void qsort (void *__base, size_t __nmemb, size_t __size, +13943: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); +13943: +13943: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, +13943: __compar_d_fn_t __compar, void *__arg) +13943: __attribute__ ((__nonnull__ (1, 4))); +13943: +13943: +13943: +13943: +13943: extern int abs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +13943: extern long int labs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: __extension__ extern long long int llabs (long long int __x) +13943: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern div_t div (int __numer, int __denom) +13943: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +13943: extern ldiv_t ldiv (long int __numer, long int __denom) +13943: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: __extension__ extern lldiv_t lldiv (long long int __numer, +13943: long long int __denom) +13943: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +13943: # 1012 "/usr/include/stdlib.h" 3 4 +13943: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, +13943: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, +13943: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern char *gcvt (double __value, int __ndigit, char *__buf) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern char *qecvt (long double __value, int __ndigit, +13943: int *__restrict __decpt, int *__restrict __sign) +13943: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +13943: extern char *qfcvt (long double __value, int __ndigit, +13943: int *__restrict __decpt, int *__restrict __sign) +13943: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +13943: extern char *qgcvt (long double __value, int __ndigit, char *__buf) +13943: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, +13943: int *__restrict __sign, char *__restrict __buf, +13943: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +13943: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, +13943: int *__restrict __sign, char *__restrict __buf, +13943: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +13943: +13943: extern int qecvt_r (long double __value, int __ndigit, +13943: int *__restrict __decpt, int *__restrict __sign, +13943: char *__restrict __buf, size_t __len) +13943: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +13943: extern int qfcvt_r (long double __value, int __ndigit, +13943: int *__restrict __decpt, int *__restrict __sign, +13943: char *__restrict __buf, size_t __len) +13943: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +13943: +13943: +13943: +13943: +13943: +13943: extern int mblen (const char *__s, size_t __n) noexcept (true); +13943: +13943: +13943: extern int mbtowc (wchar_t *__restrict __pwc, +13943: const char *__restrict __s, size_t __n) noexcept (true); +13943: +13943: +13943: extern int wctomb (char *__s, wchar_t __wchar) noexcept (true); +13943: +13943: +13943: +13943: extern size_t mbstowcs (wchar_t *__restrict __pwcs, +13943: const char *__restrict __s, size_t __n) noexcept (true) +13943: __attribute__ ((__access__ (__read_only__, 2))); +13943: +13943: extern size_t wcstombs (char *__restrict __s, +13943: const wchar_t *__restrict __pwcs, size_t __n) +13943: noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1, 3))) +13943: __attribute__ ((__access__ (__read_only__, 2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int rpmatch (const char *__response) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: # 1099 "/usr/include/stdlib.h" 3 4 +13943: extern int getsubopt (char **__restrict __optionp, +13943: char *const *__restrict __tokens, +13943: char **__restrict __valuep) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int grantpt (int __fd) noexcept (true); +13943: +13943: +13943: +13943: extern int unlockpt (int __fd) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern char *ptsname (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: +13943: +13943: extern int getpt (void); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int getloadavg (double __loadavg[], int __nelem) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 1155 "/usr/include/stdlib.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 3 4 +13943: extern __inline __attribute__ ((__gnu_inline__)) double +13943: __attribute__ ((__leaf__)) atof (const char *__nptr) noexcept (true) +13943: { +13943: return strtod (__nptr, (char **) __null); +13943: } +13943: # 1156 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 3 4 +13943: extern char *__realpath_chk (const char *__restrict __name, +13943: char *__restrict __resolved, +13943: size_t __resolvedlen) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) noexcept (true) __asm__ ("" "realpath") +13943: +13943: __attribute__ ((__warn_unused_result__)); +13943: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) noexcept (true) __asm__ ("" "__realpath_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) +13943: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) +13943: ; +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +13943: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char * __restrict __resolved) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__resolved, 2 > 1); +13943: +13943: if (__sz == (size_t) -1) +13943: return __realpath_alias (__name, __resolved); +13943: +13943: +13943: +13943: +13943: +13943: return __realpath_chk (__name, __resolved, __sz); +13943: } +13943: +13943: +13943: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, +13943: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ptsname_r") +13943: +13943: __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ptsname_r_chk") +13943: +13943: +13943: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) +13943: ; +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) ptsname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: extern int __wctomb_alias (char *__s, wchar_t __wchar) noexcept (true) __asm__ ("" "wctomb") +13943: __attribute__ ((__warn_unused_result__)); +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int +13943: __attribute__ ((__leaf__)) wctomb (char * __s, wchar_t __wchar) noexcept (true) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 +13943: && 16 > __builtin_object_size (__s, 2 > 1)) +13943: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); +13943: return __wctomb_alias (__s, __wchar); +13943: } +13943: +13943: +13943: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, +13943: const char *__restrict __src, +13943: size_t __len, size_t __dstlen) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +13943: extern size_t __mbstowcs_nulldst (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") +13943: +13943: +13943: +13943: __attribute__ ((__access__ (__read_only__, 2))); +13943: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") +13943: +13943: +13943: +13943: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +13943: 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") +13943: +13943: +13943: +13943: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) +13943: ; +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) mbstowcs (wchar_t * __restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: if (__builtin_constant_p (__dst == __null) && __dst == __null) +13943: return __mbstowcs_nulldst (__dst, __src, __len); +13943: else +13943: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) +13943: ; +13943: } +13943: +13943: extern size_t __wcstombs_chk (char *__restrict __dst, +13943: const wchar_t *__restrict __src, +13943: size_t __len, size_t __dstlen) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +13943: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "wcstombs") +13943: +13943: +13943: +13943: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +13943: 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") +13943: +13943: +13943: +13943: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) wcstombs (char * __restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)))) +13943: +13943: ; +13943: } +13943: # 1160 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +13943: # 1163 "/usr/include/stdlib.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: } +13943: # 80 "/usr/include/c++/14/cstdlib" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/std_abs.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/std_abs.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/std_abs.h" 3 +13943: # 46 "/usr/include/c++/14/bits/std_abs.h" 3 +13943: extern "C++" +13943: { +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: using ::abs; +13943: +13943: +13943: inline long +13943: abs(long __i) { return __builtin_labs(__i); } +13943: +13943: +13943: +13943: inline long long +13943: abs(long long __x) { return __builtin_llabs (__x); } +13943: # 70 "/usr/include/c++/14/bits/std_abs.h" 3 +13943: inline constexpr double +13943: abs(double __x) +13943: { return __builtin_fabs(__x); } +13943: +13943: inline constexpr float +13943: abs(float __x) +13943: { return __builtin_fabsf(__x); } +13943: +13943: inline constexpr long double +13943: abs(long double __x) +13943: { return __builtin_fabsl(__x); } +13943: # 150 "/usr/include/c++/14/bits/std_abs.h" 3 +13943: +13943: } +13943: } +13943: # 82 "/usr/include/c++/14/cstdlib" 2 3 +13943: # 125 "/usr/include/c++/14/cstdlib" 3 +13943: extern "C++" +13943: { +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: using ::div_t; +13943: using ::ldiv_t; +13943: +13943: using ::abort; +13943: +13943: using ::aligned_alloc; +13943: +13943: using ::atexit; +13943: +13943: +13943: using ::at_quick_exit; +13943: +13943: +13943: using ::atof; +13943: using ::atoi; +13943: using ::atol; +13943: using ::bsearch; +13943: using ::calloc; +13943: using ::div; +13943: using ::exit; +13943: using ::free; +13943: using ::getenv; +13943: using ::labs; +13943: using ::ldiv; +13943: using ::malloc; +13943: +13943: using ::mblen; +13943: using ::mbstowcs; +13943: using ::mbtowc; +13943: +13943: using ::qsort; +13943: +13943: +13943: using ::quick_exit; +13943: +13943: +13943: using ::rand; +13943: using ::realloc; +13943: using ::srand; +13943: using ::strtod; +13943: using ::strtol; +13943: using ::strtoul; +13943: using ::system; +13943: +13943: using ::wcstombs; +13943: using ::wctomb; +13943: +13943: +13943: +13943: inline ldiv_t +13943: div(long __i, long __j) noexcept { return ldiv(__i, __j); } +13943: +13943: +13943: +13943: +13943: } +13943: # 199 "/usr/include/c++/14/cstdlib" 3 +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: using ::lldiv_t; +13943: +13943: +13943: +13943: +13943: +13943: using ::_Exit; +13943: +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: using ::llabs; +13943: +13943: inline lldiv_t +13943: div(long long __n, long long __d) +13943: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } +13943: +13943: using ::lldiv; +13943: #pragma GCC diagnostic pop +13943: # 234 "/usr/include/c++/14/cstdlib" 3 +13943: using ::atoll; +13943: using ::strtoll; +13943: using ::strtoull; +13943: +13943: using ::strtof; +13943: using ::strtold; +13943: +13943: +13943: } +13943: +13943: namespace std +13943: { +13943: +13943: using ::__gnu_cxx::lldiv_t; +13943: +13943: using ::__gnu_cxx::_Exit; +13943: +13943: using ::__gnu_cxx::llabs; +13943: using ::__gnu_cxx::div; +13943: using ::__gnu_cxx::lldiv; +13943: +13943: using ::__gnu_cxx::atoll; +13943: using ::__gnu_cxx::strtof; +13943: using ::__gnu_cxx::strtoll; +13943: using ::__gnu_cxx::strtoull; +13943: using ::__gnu_cxx::strtold; +13943: } +13943: # 278 "/usr/include/c++/14/cstdlib" 3 +13943: } +13943: # 44 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +13943: # 1 "/usr/include/c++/14/cwchar" 1 3 +13943: # 39 "/usr/include/c++/14/cwchar" 3 +13943: +13943: # 40 "/usr/include/c++/14/cwchar" 3 +13943: # 45 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +13943: # 1 "/usr/include/c++/14/cstdio" 1 3 +13943: # 39 "/usr/include/c++/14/cstdio" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdio" 3 +13943: +13943: +13943: # 1 "/usr/include/stdio.h" 1 3 4 +13943: # 28 "/usr/include/stdio.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +13943: # 29 "/usr/include/stdio.h" 2 3 4 +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 35 "/usr/include/stdio.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 1 3 4 +13943: # 38 "/usr/include/stdio.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 1 3 4 +13943: # 10 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 3 4 +13943: typedef struct _G_fpos_t +13943: { +13943: __off_t __pos; +13943: __mbstate_t __state; +13943: } __fpos_t; +13943: # 41 "/usr/include/stdio.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 1 3 4 +13943: # 10 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 3 4 +13943: typedef struct _G_fpos64_t +13943: { +13943: __off64_t __pos; +13943: __mbstate_t __state; +13943: } __fpos64_t; +13943: # 42 "/usr/include/stdio.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 1 3 4 +13943: # 35 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 3 4 +13943: struct _IO_FILE; +13943: struct _IO_marker; +13943: struct _IO_codecvt; +13943: struct _IO_wide_data; +13943: +13943: +13943: +13943: +13943: typedef void _IO_lock_t; +13943: +13943: +13943: +13943: +13943: +13943: struct _IO_FILE +13943: { +13943: int _flags; +13943: +13943: +13943: char *_IO_read_ptr; +13943: char *_IO_read_end; +13943: char *_IO_read_base; +13943: char *_IO_write_base; +13943: char *_IO_write_ptr; +13943: char *_IO_write_end; +13943: char *_IO_buf_base; +13943: char *_IO_buf_end; +13943: +13943: +13943: char *_IO_save_base; +13943: char *_IO_backup_base; +13943: char *_IO_save_end; +13943: +13943: struct _IO_marker *_markers; +13943: +13943: struct _IO_FILE *_chain; +13943: +13943: int _fileno; +13943: int _flags2; +13943: __off_t _old_offset; +13943: +13943: +13943: unsigned short _cur_column; +13943: signed char _vtable_offset; +13943: char _shortbuf[1]; +13943: +13943: _IO_lock_t *_lock; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __off64_t _offset; +13943: +13943: struct _IO_codecvt *_codecvt; +13943: struct _IO_wide_data *_wide_data; +13943: struct _IO_FILE *_freeres_list; +13943: void *_freeres_buf; +13943: struct _IO_FILE **_prevchain; +13943: int _mode; +13943: +13943: char _unused2[15 * sizeof (int) - 5 * sizeof (void *)]; +13943: }; +13943: # 45 "/usr/include/stdio.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 3 4 +13943: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, +13943: size_t __nbytes); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, +13943: size_t __nbytes); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); +13943: +13943: +13943: typedef int cookie_close_function_t (void *__cookie); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef struct _IO_cookie_io_functions_t +13943: { +13943: cookie_read_function_t *read; +13943: cookie_write_function_t *write; +13943: cookie_seek_function_t *seek; +13943: cookie_close_function_t *close; +13943: } cookie_io_functions_t; +13943: # 48 "/usr/include/stdio.h" 2 3 4 +13943: # 87 "/usr/include/stdio.h" 3 4 +13943: typedef __fpos64_t fpos_t; +13943: +13943: +13943: typedef __fpos64_t fpos64_t; +13943: # 129 "/usr/include/stdio.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4 +13943: # 130 "/usr/include/stdio.h" 2 3 4 +13943: # 149 "/usr/include/stdio.h" 3 4 +13943: extern FILE *stdin; +13943: extern FILE *stdout; +13943: extern FILE *stderr; +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int remove (const char *__filename) noexcept (true); +13943: +13943: extern int rename (const char *__old, const char *__new) noexcept (true); +13943: +13943: +13943: +13943: extern int renameat (int __oldfd, const char *__old, int __newfd, +13943: const char *__new) noexcept (true); +13943: # 176 "/usr/include/stdio.h" 3 4 +13943: extern int renameat2 (int __oldfd, const char *__old, int __newfd, +13943: const char *__new, unsigned int __flags) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: # 198 "/usr/include/stdio.h" 3 4 +13943: extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern FILE *tmpfile64 (void) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern char *tmpnam (char[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern char *tmpnam_r (char __s[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: # 228 "/usr/include/stdio.h" 3 4 +13943: extern char *tempnam (const char *__dir, const char *__pfx) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fflush (FILE *__stream); +13943: # 245 "/usr/include/stdio.h" 3 4 +13943: extern int fflush_unlocked (FILE *__stream); +13943: # 255 "/usr/include/stdio.h" 3 4 +13943: extern int fcloseall (void); +13943: # 276 "/usr/include/stdio.h" 3 4 +13943: extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") +13943: +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern FILE *fopen64 (const char *__restrict __filename, +13943: const char *__restrict __modes) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: extern FILE *freopen64 (const char *__restrict __filename, +13943: const char *__restrict __modes, +13943: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); +13943: +13943: +13943: +13943: +13943: extern FILE *fdopen (int __fd, const char *__modes) noexcept (true) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern FILE *fopencookie (void *__restrict __magic_cookie, +13943: const char *__restrict __modes, +13943: cookie_io_functions_t __io_funcs) noexcept (true) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) noexcept (true) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); +13943: +13943: +13943: +13943: +13943: +13943: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) noexcept (true) +13943: __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, +13943: int __modes, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, +13943: size_t __size) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern void setlinebuf (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fprintf (FILE *__restrict __stream, +13943: const char *__restrict __format, ...) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern int printf (const char *__restrict __format, ...); +13943: +13943: extern int sprintf (char *__restrict __s, +13943: const char *__restrict __format, ...) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, +13943: __gnuc_va_list __arg) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); +13943: +13943: extern int vsprintf (char *__restrict __s, const char *__restrict __format, +13943: __gnuc_va_list __arg) noexcept (true); +13943: +13943: +13943: +13943: extern int snprintf (char *__restrict __s, size_t __maxlen, +13943: const char *__restrict __format, ...) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); +13943: +13943: extern int vsnprintf (char *__restrict __s, size_t __maxlen, +13943: const char *__restrict __format, __gnuc_va_list __arg) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); +13943: +13943: +13943: +13943: +13943: +13943: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, +13943: __gnuc_va_list __arg) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); +13943: extern int __asprintf (char **__restrict __ptr, +13943: const char *__restrict __fmt, ...) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); +13943: extern int asprintf (char **__restrict __ptr, +13943: const char *__restrict __fmt, ...) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int vdprintf (int __fd, const char *__restrict __fmt, +13943: __gnuc_va_list __arg) +13943: __attribute__ ((__format__ (__printf__, 2, 0))); +13943: extern int dprintf (int __fd, const char *__restrict __fmt, ...) +13943: __attribute__ ((__format__ (__printf__, 2, 3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fscanf (FILE *__restrict __stream, +13943: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); +13943: +13943: extern int sscanf (const char *__restrict __s, +13943: const char *__restrict __format, ...) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +13943: # 438 "/usr/include/stdio.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc23_fscanf") +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc23_scanf") +13943: __attribute__ ((__warn_unused_result__)); +13943: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_sscanf") +13943: +13943: ; +13943: # 490 "/usr/include/stdio.h" 3 4 +13943: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, +13943: __gnuc_va_list __arg) +13943: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) +13943: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: extern int vsscanf (const char *__restrict __s, +13943: const char *__restrict __format, __gnuc_va_list __arg) +13943: noexcept (true) __attribute__ ((__format__ (__scanf__, 2, 0))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfscanf") +13943: +13943: +13943: +13943: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vscanf") +13943: +13943: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); +13943: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vsscanf") +13943: +13943: +13943: +13943: __attribute__ ((__format__ (__scanf__, 2, 0))); +13943: # 575 "/usr/include/stdio.h" 3 4 +13943: extern int fgetc (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: extern int getc (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern int getchar (void); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int getc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: extern int getchar_unlocked (void); +13943: # 600 "/usr/include/stdio.h" 3 4 +13943: extern int fgetc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: # 611 "/usr/include/stdio.h" 3 4 +13943: extern int fputc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +13943: extern int putc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: extern int putchar (int __c); +13943: # 627 "/usr/include/stdio.h" 3 4 +13943: extern int fputc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int putc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +13943: extern int putchar_unlocked (int __c); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int getw (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int putw (int __w, FILE *__stream) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) __attribute__ ((__nonnull__ (3))); +13943: # 677 "/usr/include/stdio.h" 3 4 +13943: extern char *fgets_unlocked (char *__restrict __s, int __n, +13943: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))) __attribute__ ((__nonnull__ (3))); +13943: # 689 "/usr/include/stdio.h" 3 4 +13943: extern __ssize_t __getdelim (char **__restrict __lineptr, +13943: size_t *__restrict __n, int __delimiter, +13943: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); +13943: extern __ssize_t getdelim (char **__restrict __lineptr, +13943: size_t *__restrict __n, int __delimiter, +13943: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); +13943: +13943: +13943: extern __ssize_t getline (char **__restrict __lineptr, +13943: size_t *__restrict __n, +13943: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fputs (const char *__restrict __s, FILE *__restrict __stream) +13943: __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: extern int puts (const char *__s); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int ungetc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern size_t fread (void *__restrict __ptr, size_t __size, +13943: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__nonnull__ (4))); +13943: +13943: +13943: +13943: +13943: extern size_t fwrite (const void *__restrict __ptr, size_t __size, +13943: size_t __n, FILE *__restrict __s) __attribute__ ((__nonnull__ (4))); +13943: # 745 "/usr/include/stdio.h" 3 4 +13943: extern int fputs_unlocked (const char *__restrict __s, +13943: FILE *__restrict __stream) __attribute__ ((__nonnull__ (2))); +13943: # 756 "/usr/include/stdio.h" 3 4 +13943: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, +13943: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__nonnull__ (4))); +13943: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, +13943: size_t __n, FILE *__restrict __stream) +13943: __attribute__ ((__nonnull__ (4))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fseek (FILE *__stream, long int __off, int __whence) +13943: __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern void rewind (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: # 802 "/usr/include/stdio.h" 3 4 +13943: extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64") +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64") +13943: __attribute__ ((__nonnull__ (1))); +13943: # 828 "/usr/include/stdio.h" 3 4 +13943: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64") +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64") +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) +13943: __attribute__ ((__nonnull__ (1))); +13943: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) +13943: __attribute__ ((__nonnull__ (1))); +13943: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern void clearerr (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: extern int feof (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: extern int ferror (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern void clearerr_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: extern int feof_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: extern int ferror_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern void perror (const char *__s) __attribute__ ((__cold__)); +13943: +13943: +13943: +13943: +13943: extern int fileno (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern int fileno_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: # 887 "/usr/include/stdio.h" 3 4 +13943: extern int pclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern FILE *popen (const char *__command, const char *__modes) +13943: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *ctermid (char *__s) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1))); +13943: +13943: +13943: +13943: +13943: +13943: extern char *cuserid (char *__s) +13943: __attribute__ ((__access__ (__write_only__, 1))); +13943: +13943: +13943: +13943: +13943: struct obstack; +13943: +13943: +13943: extern int obstack_printf (struct obstack *__restrict __obstack, +13943: const char *__restrict __format, ...) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))); +13943: extern int obstack_vprintf (struct obstack *__restrict __obstack, +13943: const char *__restrict __format, +13943: __gnuc_va_list __args) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern void flockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int ftrylockfile (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern void funlockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: # 949 "/usr/include/stdio.h" 3 4 +13943: extern int __uflow (FILE *); +13943: extern int __overflow (FILE *, int); +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 1 3 4 +13943: # 26 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 3 4 +13943: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, +13943: const char *__restrict __format, ...) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1, 3))); +13943: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, +13943: const char *__restrict __format, +13943: __gnuc_va_list __ap) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1, 3))); +13943: +13943: +13943: +13943: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, +13943: size_t __slen, const char *__restrict __format, +13943: ...) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, +13943: size_t __slen, const char *__restrict __format, +13943: __gnuc_va_list __ap) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, +13943: const char *__restrict __format, ...) +13943: __attribute__ ((__nonnull__ (1))); +13943: extern int __printf_chk (int __flag, const char *__restrict __format, ...); +13943: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, +13943: const char *__restrict __format, +13943: __gnuc_va_list __ap) __attribute__ ((__nonnull__ (1))); +13943: extern int __vprintf_chk (int __flag, const char *__restrict __format, +13943: __gnuc_va_list __ap); +13943: +13943: +13943: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, +13943: ...) __attribute__ ((__format__ (__printf__, 3, 4))); +13943: extern int __vdprintf_chk (int __fd, int __flag, +13943: const char *__restrict __fmt, __gnuc_va_list __arg) +13943: __attribute__ ((__format__ (__printf__, 3, 0))); +13943: +13943: +13943: +13943: +13943: extern int __asprintf_chk (char **__restrict __ptr, int __flag, +13943: const char *__restrict __fmt, ...) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); +13943: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, +13943: const char *__restrict __fmt, __gnuc_va_list __arg) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); +13943: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, +13943: int __flag, const char *__restrict __format, +13943: ...) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); +13943: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, +13943: int __flag, +13943: const char *__restrict __format, +13943: __gnuc_va_list __args) +13943: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); +13943: # 96 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 3 4 +13943: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) +13943: ; +13943: +13943: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, +13943: FILE *__restrict __stream) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); +13943: +13943: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)); +13943: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) +13943: ; +13943: +13943: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, +13943: size_t __size, size_t __n, +13943: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); +13943: +13943: +13943: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) +13943: ; +13943: +13943: +13943: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, +13943: int __n, FILE *__restrict __stream) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); +13943: +13943: +13943: +13943: +13943: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)); +13943: 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") +13943: +13943: +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) +13943: ; +13943: +13943: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, +13943: size_t __size, size_t __n, +13943: FILE *__restrict __stream) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); +13943: # 955 "/usr/include/stdio.h" 2 3 4 +13943: # 966 "/usr/include/stdio.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 1 3 4 +13943: # 46 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4 +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: getchar (void) +13943: { +13943: return getc (stdin); +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: fgetc_unlocked (FILE *__fp) +13943: { +13943: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: getc_unlocked (FILE *__fp) +13943: { +13943: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: getchar_unlocked (void) +13943: { +13943: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: putchar (int __c) +13943: { +13943: return putc (__c, stdout); +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: fputc_unlocked (int __c, FILE *__stream) +13943: { +13943: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: putc_unlocked (int __c, FILE *__stream) +13943: { +13943: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: putchar_unlocked (int __c) +13943: { +13943: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t +13943: getline (char **__lineptr, size_t *__n, FILE *__stream) +13943: { +13943: return __getdelim (__lineptr, __n, '\n', __stream); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) noexcept (true) +13943: { +13943: return (((__stream)->_flags & 0x0010) != 0); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__gnu_inline__)) int +13943: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) noexcept (true) +13943: { +13943: return (((__stream)->_flags & 0x0020) != 0); +13943: } +13943: # 967 "/usr/include/stdio.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) noexcept (true) +13943: { +13943: return __builtin___sprintf_chk (__s, 2 - 1, +13943: __builtin_object_size (__s, 2 > 1), __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: # 54 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) vsprintf (char * __restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +13943: +13943: { +13943: return __builtin___vsprintf_chk (__s, 2 - 1, +13943: __builtin_object_size (__s, 2 > 1), __fmt, __ap); +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) noexcept (true) +13943: +13943: { +13943: return __builtin___snprintf_chk (__s, __n, 2 - 1, +13943: __builtin_object_size (__s, 2 > 1), __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: # 92 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) vsnprintf (char * __restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, +13943: __builtin_object_size (__s, 2 > 1), __fmt, __ap); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int +13943: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) +13943: { +13943: return __fprintf_chk (__stream, 2 - 1, __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: printf (const char *__restrict __fmt, ...) +13943: { +13943: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); +13943: } +13943: # 151 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: vprintf (const char * __restrict __fmt, +13943: __gnuc_va_list __ap) +13943: { +13943: +13943: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); +13943: +13943: +13943: +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int +13943: vfprintf (FILE *__restrict __stream, +13943: const char *__restrict __fmt, __gnuc_va_list __ap) +13943: { +13943: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: dprintf (int __fd, const char *__restrict __fmt, ...) +13943: { +13943: return __dprintf_chk (__fd, 2 - 1, __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: # 194 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) +13943: { +13943: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) +13943: { +13943: return __asprintf_chk (__ptr, 2 - 1, __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) +13943: +13943: { +13943: return __asprintf_chk (__ptr, 2 - 1, __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) noexcept (true) +13943: +13943: { +13943: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, +13943: __builtin_va_arg_pack ()); +13943: } +13943: # 271 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +13943: +13943: { +13943: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +13943: +13943: { +13943: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, +13943: __ap); +13943: } +13943: # 303 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) +13943: __attribute__ ((__nonnull__ (3))) char * +13943: fgets (char * __restrict __s, int __n, +13943: FILE *__restrict __stream) +13943: +13943: +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__s, 2 > 1); +13943: 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))))))) +13943: return __fgets_alias (__s, __n, __stream); +13943: +13943: 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))))) +13943: return __fgets_chk_warn (__s, __sz, __n, __stream); +13943: +13943: return __fgets_chk (__s, __sz, __n, __stream); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t +13943: fread (void * __restrict __ptr, +13943: size_t __size, size_t __n, FILE *__restrict __stream) +13943: +13943: +13943: +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__ptr, 0); +13943: 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)))))) +13943: return __fread_alias (__ptr, __size, __n, __stream); +13943: +13943: 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)))) +13943: return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); +13943: +13943: return __fread_chk (__ptr, __sz, __size, __n, __stream); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) +13943: __attribute__ ((__nonnull__ (3))) char * +13943: fgets_unlocked (char * __restrict __s, +13943: int __n, FILE *__restrict __stream) +13943: +13943: +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__s, 2 > 1); +13943: 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))))))) +13943: return __fgets_unlocked_alias (__s, __n, __stream); +13943: +13943: 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))))) +13943: return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); +13943: +13943: return __fgets_unlocked_chk (__s, __sz, __n, __stream); +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t +13943: fread_unlocked (void * __restrict __ptr, +13943: size_t __size, size_t __n, FILE *__restrict __stream) +13943: +13943: +13943: +13943: +13943: { +13943: size_t __sz = __builtin_object_size (__ptr, 0); +13943: 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)))))) +13943: { +13943: +13943: if (__builtin_constant_p (__size) +13943: && __builtin_constant_p (__n) +13943: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) +13943: && __size * __n <= 8) +13943: { +13943: size_t __cnt = __size * __n; +13943: char *__cptr = (char *) __ptr; +13943: if (__cnt == 0) +13943: return 0; +13943: +13943: for (; __cnt > 0; --__cnt) +13943: { +13943: int __c = getc_unlocked (__stream); +13943: if (__c == (-1)) +13943: break; +13943: *__cptr++ = __c; +13943: } +13943: return (__cptr - (char *) __ptr) / __size; +13943: } +13943: +13943: return __fread_unlocked_alias (__ptr, __size, __n, __stream); +13943: } +13943: +13943: 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)))) +13943: return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); +13943: +13943: return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); +13943: +13943: } +13943: # 971 "/usr/include/stdio.h" 2 3 4 +13943: +13943: +13943: } +13943: # 43 "/usr/include/c++/14/cstdio" 2 3 +13943: # 96 "/usr/include/c++/14/cstdio" 3 +13943: namespace std +13943: { +13943: using ::FILE; +13943: using ::fpos_t; +13943: +13943: using ::clearerr; +13943: using ::fclose; +13943: using ::feof; +13943: using ::ferror; +13943: using ::fflush; +13943: using ::fgetc; +13943: using ::fgetpos; +13943: using ::fgets; +13943: using ::fopen; +13943: using ::fprintf; +13943: using ::fputc; +13943: using ::fputs; +13943: using ::fread; +13943: using ::freopen; +13943: using ::fscanf; +13943: using ::fseek; +13943: using ::fsetpos; +13943: using ::ftell; +13943: using ::fwrite; +13943: using ::getc; +13943: using ::getchar; +13943: +13943: +13943: +13943: +13943: using ::perror; +13943: using ::printf; +13943: using ::putc; +13943: using ::putchar; +13943: using ::puts; +13943: using ::remove; +13943: using ::rename; +13943: using ::rewind; +13943: using ::scanf; +13943: using ::setbuf; +13943: using ::setvbuf; +13943: using ::sprintf; +13943: using ::sscanf; +13943: using ::tmpfile; +13943: +13943: using ::tmpnam; +13943: +13943: using ::ungetc; +13943: using ::vfprintf; +13943: using ::vprintf; +13943: using ::vsprintf; +13943: } +13943: # 157 "/usr/include/c++/14/cstdio" 3 +13943: namespace __gnu_cxx +13943: { +13943: # 175 "/usr/include/c++/14/cstdio" 3 +13943: using ::snprintf; +13943: using ::vfscanf; +13943: using ::vscanf; +13943: using ::vsnprintf; +13943: using ::vsscanf; +13943: +13943: } +13943: +13943: namespace std +13943: { +13943: using ::__gnu_cxx::snprintf; +13943: using ::__gnu_cxx::vfscanf; +13943: using ::__gnu_cxx::vscanf; +13943: using ::__gnu_cxx::vsnprintf; +13943: using ::__gnu_cxx::vsscanf; +13943: } +13943: # 46 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +13943: # 1 "/usr/include/c++/14/cerrno" 1 3 +13943: # 39 "/usr/include/c++/14/cerrno" 3 +13943: +13943: # 40 "/usr/include/c++/14/cerrno" 3 +13943: +13943: +13943: # 1 "/usr/include/errno.h" 1 3 4 +13943: # 28 "/usr/include/errno.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 1 3 4 +13943: # 26 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 3 4 +13943: # 1 "/usr/include/linux/errno.h" 1 3 4 +13943: # 1 "/usr/lib/linux/uapi/arm/asm/errno.h" 1 3 4 +13943: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 +13943: # 6 "/usr/include/asm-generic/errno.h" 2 3 4 +13943: # 2 "/usr/lib/linux/uapi/arm/asm/errno.h" 2 3 4 +13943: # 2 "/usr/include/linux/errno.h" 2 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 2 3 4 +13943: # 29 "/usr/include/errno.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: extern "C" { +13943: +13943: +13943: extern int *__errno_location (void) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *program_invocation_name; +13943: extern char *program_invocation_short_name; +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 1 3 4 +13943: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 3 4 +13943: typedef int error_t; +13943: # 49 "/usr/include/errno.h" 2 3 4 +13943: +13943: +13943: +13943: } +13943: # 43 "/usr/include/c++/14/cerrno" 2 3 +13943: # 47 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: _Ret +13943: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), +13943: const char* __name, const _CharT* __str, std::size_t* __idx, +13943: _Base... __base) +13943: { +13943: _Ret __ret; +13943: +13943: _CharT* __endptr; +13943: +13943: struct _Save_errno { +13943: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } +13943: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } +13943: int _M_errno; +13943: } const __save_errno; +13943: +13943: struct _Range_chk { +13943: static bool +13943: _S_chk(_TRet, std::false_type) { return false; } +13943: +13943: static bool +13943: _S_chk(_TRet __val, std::true_type) +13943: { +13943: return __val < _TRet(__numeric_traits::__min) +13943: || __val > _TRet(__numeric_traits::__max); +13943: } +13943: }; +13943: +13943: const _TRet __tmp = __convf(__str, &__endptr, __base...); +13943: +13943: if (__endptr == __str) +13943: std::__throw_invalid_argument(__name); +13943: else if ((*__errno_location ()) == 34 +13943: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) +13943: std::__throw_out_of_range(__name); +13943: else +13943: __ret = __tmp; +13943: +13943: if (__idx) +13943: *__idx = __endptr - __str; +13943: +13943: return __ret; +13943: } +13943: +13943: +13943: template +13943: _String +13943: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, +13943: __builtin_va_list), std::size_t __n, +13943: const _CharT* __fmt, ...) +13943: { +13943: +13943: +13943: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * __n)); +13943: +13943: __builtin_va_list __args; +13943: __builtin_va_start(__args, __fmt); +13943: +13943: const int __len = __convf(__s, __n, __fmt, __args); +13943: +13943: __builtin_va_end(__args); +13943: +13943: return _String(__s, __s + __len); +13943: } +13943: +13943: +13943: } +13943: # 4155 "/usr/include/c++/14/bits/basic_string.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/charconv.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/charconv.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/charconv.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace __detail +13943: { +13943: +13943: +13943: template +13943: constexpr bool __integer_to_chars_is_unsigned +13943: = ! __gnu_cxx::__int_traits<_Tp>::__is_signed; +13943: +13943: +13943: +13943: template +13943: constexpr unsigned +13943: __to_chars_len(_Tp __value, int __base = 10) noexcept +13943: { +13943: +13943: static_assert(__integer_to_chars_is_unsigned<_Tp>, "implementation bug"); +13943: +13943: +13943: unsigned __n = 1; +13943: const unsigned __b2 = __base * __base; +13943: const unsigned __b3 = __b2 * __base; +13943: const unsigned long __b4 = __b3 * __base; +13943: for (;;) +13943: { +13943: if (__value < (unsigned)__base) return __n; +13943: if (__value < __b2) return __n + 1; +13943: if (__value < __b3) return __n + 2; +13943: if (__value < __b4) return __n + 3; +13943: __value /= __b4; +13943: __n += 4; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: __to_chars_10_impl(char* __first, unsigned __len, _Tp __val) noexcept +13943: { +13943: +13943: static_assert(__integer_to_chars_is_unsigned<_Tp>, "implementation bug"); +13943: +13943: +13943: constexpr char __digits[201] = +13943: "0001020304050607080910111213141516171819" +13943: "2021222324252627282930313233343536373839" +13943: "4041424344454647484950515253545556575859" +13943: "6061626364656667686970717273747576777879" +13943: "8081828384858687888990919293949596979899"; +13943: unsigned __pos = __len - 1; +13943: while (__val >= 100) +13943: { +13943: auto const __num = (__val % 100) * 2; +13943: __val /= 100; +13943: __first[__pos] = __digits[__num + 1]; +13943: __first[__pos - 1] = __digits[__num]; +13943: __pos -= 2; +13943: } +13943: if (__val >= 10) +13943: { +13943: auto const __num = __val * 2; +13943: __first[1] = __digits[__num + 1]; +13943: __first[0] = __digits[__num]; +13943: } +13943: else +13943: __first[0] = '0' + __val; +13943: } +13943: +13943: } +13943: +13943: } +13943: # 4156 "/usr/include/c++/14/bits/basic_string.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace __cxx11 { +13943: +13943: +13943: inline int +13943: stoi(const string& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), +13943: __idx, __base); } +13943: +13943: inline long +13943: stol(const string& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), +13943: __idx, __base); } +13943: +13943: inline unsigned long +13943: stoul(const string& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), +13943: __idx, __base); } +13943: +13943: +13943: inline long long +13943: stoll(const string& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), +13943: __idx, __base); } +13943: +13943: inline unsigned long long +13943: stoull(const string& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), +13943: __idx, __base); } +13943: # 4198 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: inline double +13943: stod(const string& __str, size_t* __idx = 0) +13943: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } +13943: +13943: +13943: +13943: inline float +13943: stof(const string& __str, size_t* __idx = 0) +13943: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } +13943: # 4226 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: inline long double +13943: stold(const string& __str, size_t* __idx = 0) +13943: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } +13943: # 4238 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(int __val) +13943: +13943: noexcept +13943: +13943: { +13943: const bool __neg = __val < 0; +13943: const unsigned __uval = __neg ? (unsigned)~__val + 1u : __val; +13943: const auto __len = __detail::__to_chars_len(__uval); +13943: string __str; +13943: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { +13943: __p[0] = '-'; +13943: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); +13943: return __n; +13943: }); +13943: return __str; +13943: } +13943: +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(unsigned __val) +13943: +13943: noexcept +13943: +13943: { +13943: const auto __len = __detail::__to_chars_len(__val); +13943: string __str; +13943: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { +13943: __detail::__to_chars_10_impl(__p, __n, __val); +13943: return __n; +13943: }); +13943: return __str; +13943: } +13943: +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(long __val) +13943: +13943: noexcept +13943: +13943: { +13943: const bool __neg = __val < 0; +13943: const unsigned long __uval = __neg ? (unsigned long)~__val + 1ul : __val; +13943: const auto __len = __detail::__to_chars_len(__uval); +13943: string __str; +13943: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { +13943: __p[0] = '-'; +13943: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); +13943: return __n; +13943: }); +13943: return __str; +13943: } +13943: +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(unsigned long __val) +13943: +13943: noexcept +13943: +13943: { +13943: const auto __len = __detail::__to_chars_len(__val); +13943: string __str; +13943: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { +13943: __detail::__to_chars_10_impl(__p, __n, __val); +13943: return __n; +13943: }); +13943: return __str; +13943: } +13943: +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(long long __val) +13943: { +13943: const bool __neg = __val < 0; +13943: const unsigned long long __uval +13943: = __neg ? (unsigned long long)~__val + 1ull : __val; +13943: const auto __len = __detail::__to_chars_len(__uval); +13943: string __str; +13943: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { +13943: __p[0] = '-'; +13943: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); +13943: return __n; +13943: }); +13943: return __str; +13943: } +13943: +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(unsigned long long __val) +13943: { +13943: const auto __len = __detail::__to_chars_len(__val); +13943: string __str; +13943: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { +13943: __detail::__to_chars_10_impl(__p, __n, __val); +13943: return __n; +13943: }); +13943: return __str; +13943: } +13943: # 4399 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(float __val) +13943: { +13943: const int __n = +13943: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; +13943: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, +13943: "%f", __val); +13943: } +13943: +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(double __val) +13943: { +13943: const int __n = +13943: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; +13943: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, +13943: "%f", __val); +13943: } +13943: +13943: [[__nodiscard__]] +13943: inline string +13943: to_string(long double __val) +13943: { +13943: const int __n = +13943: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; +13943: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, +13943: "%Lf", __val); +13943: } +13943: +13943: +13943: +13943: inline int +13943: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), +13943: __idx, __base); } +13943: +13943: inline long +13943: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), +13943: __idx, __base); } +13943: +13943: inline unsigned long +13943: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), +13943: __idx, __base); } +13943: +13943: inline long long +13943: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), +13943: __idx, __base); } +13943: +13943: inline unsigned long long +13943: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) +13943: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), +13943: __idx, __base); } +13943: +13943: +13943: inline float +13943: stof(const wstring& __str, size_t* __idx = 0) +13943: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } +13943: +13943: inline double +13943: stod(const wstring& __str, size_t* __idx = 0) +13943: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } +13943: +13943: inline long double +13943: stold(const wstring& __str, size_t* __idx = 0) +13943: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } +13943: +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: +13943: inline void +13943: __to_wstring_numeric(const char* __s, int __len, wchar_t* __wout) +13943: { +13943: +13943: +13943: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' +13943: && wchar_t('.') == L'.' && wchar_t('e') == L'e') +13943: { +13943: for (int __i = 0; __i < __len; ++__i) +13943: __wout[__i] = (wchar_t) __s[__i]; +13943: } +13943: else +13943: { +13943: wchar_t __wc[256]; +13943: for (int __i = '0'; __i <= '9'; ++__i) +13943: __wc[__i] = L'0' + __i; +13943: __wc['.'] = L'.'; +13943: __wc['+'] = L'+'; +13943: __wc['-'] = L'-'; +13943: __wc['a'] = L'a'; +13943: __wc['b'] = L'b'; +13943: __wc['c'] = L'c'; +13943: __wc['d'] = L'd'; +13943: __wc['e'] = L'e'; +13943: __wc['f'] = L'f'; +13943: __wc['n'] = L'n'; +13943: __wc['p'] = L'p'; +13943: __wc['x'] = L'x'; +13943: __wc['A'] = L'A'; +13943: __wc['B'] = L'B'; +13943: __wc['C'] = L'C'; +13943: __wc['D'] = L'D'; +13943: __wc['E'] = L'E'; +13943: __wc['F'] = L'F'; +13943: __wc['N'] = L'N'; +13943: __wc['P'] = L'P'; +13943: __wc['X'] = L'X'; +13943: +13943: for (int __i = 0; __i < __len; ++__i) +13943: __wout[__i] = __wc[(int)__s[__i]]; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: inline wstring +13943: +13943: __to_wstring_numeric(string_view __s) +13943: +13943: +13943: +13943: { +13943: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' +13943: && wchar_t('.') == L'.' && wchar_t('e') == L'e') +13943: return wstring(__s.data(), __s.data() + __s.size()); +13943: else +13943: { +13943: wstring __ws; +13943: auto __f = __s.data(); +13943: __ws.__resize_and_overwrite(__s.size(), +13943: [__f] (wchar_t* __to, int __n) { +13943: std::__to_wstring_numeric(__f, __n, __to); +13943: return __n; +13943: }); +13943: return __ws; +13943: } +13943: } +13943: #pragma GCC diagnostic pop +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(int __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(unsigned __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(long __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(unsigned long __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(long long __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(unsigned long long __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(float __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(double __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: [[__nodiscard__]] +13943: inline wstring +13943: to_wstring(long double __val) +13943: { return std::__to_wstring_numeric(std::to_string(__val)); } +13943: +13943: +13943: +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: template, _Alloc>> +13943: struct __str_hash_base +13943: : public __hash_base +13943: { +13943: [[__nodiscard__]] +13943: size_t +13943: operator()(const _StrT& __s) const noexcept +13943: { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(_CharT)); } +13943: }; +13943: +13943: +13943: +13943: template +13943: struct hash, _Alloc>> +13943: : public __str_hash_base +13943: { }; +13943: +13943: +13943: template +13943: struct hash, _Alloc>> +13943: : public __str_hash_base +13943: { }; +13943: +13943: template +13943: struct __is_fast_hash, +13943: _Alloc>>> +13943: : std::false_type +13943: { }; +13943: # 4649 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: template +13943: struct hash, _Alloc>> +13943: : public __str_hash_base +13943: { }; +13943: +13943: +13943: template +13943: struct hash, _Alloc>> +13943: : public __str_hash_base +13943: { }; +13943: +13943: +13943: +13943: template<> struct __is_fast_hash> : std::false_type { }; +13943: template<> struct __is_fast_hash> : std::false_type { }; +13943: template<> struct __is_fast_hash> : std::false_type { }; +13943: template<> struct __is_fast_hash> : std::false_type { }; +13943: # 4678 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: inline namespace literals +13943: { +13943: inline namespace string_literals +13943: { +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wliteral-suffix" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: inline basic_string +13943: operator""s(const char* __str, size_t __len) +13943: { return basic_string{__str, __len}; } +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: inline basic_string +13943: operator""s(const wchar_t* __str, size_t __len) +13943: { return basic_string{__str, __len}; } +13943: # 4708 "/usr/include/c++/14/bits/basic_string.h" 3 +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: inline basic_string +13943: operator""s(const char16_t* __str, size_t __len) +13943: { return basic_string{__str, __len}; } +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: inline basic_string +13943: operator""s(const char32_t* __str, size_t __len) +13943: { return basic_string{__str, __len}; } +13943: +13943: +13943: #pragma GCC diagnostic pop +13943: } +13943: } +13943: +13943: +13943: +13943: namespace __detail::__variant +13943: { +13943: template struct _Never_valueless_alt; +13943: +13943: +13943: +13943: template +13943: struct _Never_valueless_alt> +13943: : __and_< +13943: is_nothrow_move_constructible>, +13943: is_nothrow_move_assignable> +13943: >::type +13943: { }; +13943: } +13943: +13943: +13943: +13943: } +13943: # 55 "/usr/include/c++/14/string" 2 3 +13943: # 1 "/usr/include/c++/14/bits/basic_string.tcc" 1 3 +13943: # 42 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: +13943: # 43 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: const typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>::npos; +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: swap(basic_string& __s) noexcept +13943: { +13943: if (this == std::__addressof(__s)) +13943: return; +13943: +13943: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); +13943: +13943: if (_M_is_local()) +13943: if (__s._M_is_local()) +13943: { +13943: if (length() && __s.length()) +13943: { +13943: _CharT __tmp_data[_S_local_capacity + 1]; +13943: traits_type::copy(__tmp_data, __s._M_local_buf, +13943: __s.length() + 1); +13943: traits_type::copy(__s._M_local_buf, _M_local_buf, +13943: length() + 1); +13943: traits_type::copy(_M_local_buf, __tmp_data, +13943: __s.length() + 1); +13943: } +13943: else if (__s.length()) +13943: { +13943: _M_init_local_buf(); +13943: traits_type::copy(_M_local_buf, __s._M_local_buf, +13943: __s.length() + 1); +13943: _M_length(__s.length()); +13943: __s._M_set_length(0); +13943: return; +13943: } +13943: else if (length()) +13943: { +13943: __s._M_init_local_buf(); +13943: traits_type::copy(__s._M_local_buf, _M_local_buf, +13943: length() + 1); +13943: __s._M_length(length()); +13943: _M_set_length(0); +13943: return; +13943: } +13943: } +13943: else +13943: { +13943: const size_type __tmp_capacity = __s._M_allocated_capacity; +13943: __s._M_init_local_buf(); +13943: traits_type::copy(__s._M_local_buf, _M_local_buf, +13943: length() + 1); +13943: _M_data(__s._M_data()); +13943: __s._M_data(__s._M_local_buf); +13943: _M_capacity(__tmp_capacity); +13943: } +13943: else +13943: { +13943: const size_type __tmp_capacity = _M_allocated_capacity; +13943: if (__s._M_is_local()) +13943: { +13943: _M_init_local_buf(); +13943: traits_type::copy(_M_local_buf, __s._M_local_buf, +13943: __s.length() + 1); +13943: __s._M_data(_M_data()); +13943: _M_data(_M_local_buf); +13943: } +13943: else +13943: { +13943: pointer __tmp_ptr = _M_data(); +13943: _M_data(__s._M_data()); +13943: __s._M_data(__tmp_ptr); +13943: _M_capacity(__s._M_allocated_capacity); +13943: } +13943: __s._M_capacity(__tmp_capacity); +13943: } +13943: +13943: const size_type __tmp_length = length(); +13943: _M_length(__s.length()); +13943: __s._M_length(__tmp_length); +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::pointer +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_create(size_type& __capacity, size_type __old_capacity) +13943: { +13943: +13943: +13943: if (__capacity > max_size()) +13943: std::__throw_length_error(("basic_string::_M_create")); +13943: +13943: +13943: +13943: +13943: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) +13943: { +13943: __capacity = 2 * __old_capacity; +13943: +13943: if (__capacity > max_size()) +13943: __capacity = max_size(); +13943: } +13943: +13943: +13943: +13943: return _S_allocate(_M_get_allocator(), __capacity + 1); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_construct(_InIterator __beg, _InIterator __end, +13943: std::input_iterator_tag) +13943: { +13943: size_type __len = 0; +13943: size_type __capacity = size_type(_S_local_capacity); +13943: +13943: _M_init_local_buf(); +13943: +13943: while (__beg != __end && __len < __capacity) +13943: { +13943: _M_local_buf[__len++] = *__beg; +13943: ++__beg; +13943: } +13943: +13943: struct _Guard +13943: { +13943: +13943: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } +13943: +13943: +13943: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } +13943: +13943: basic_string* _M_guarded; +13943: } __guard(this); +13943: +13943: while (__beg != __end) +13943: { +13943: if (__len == __capacity) +13943: { +13943: +13943: __capacity = __len + 1; +13943: pointer __another = _M_create(__capacity, __len); +13943: this->_S_copy(__another, _M_data(), __len); +13943: _M_dispose(); +13943: _M_data(__another); +13943: _M_capacity(__capacity); +13943: } +13943: traits_type::assign(_M_data()[__len++], *__beg); +13943: ++__beg; +13943: } +13943: +13943: __guard._M_guarded = 0; +13943: +13943: _M_set_length(__len); +13943: } +13943: +13943: template +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_construct(_InIterator __beg, _InIterator __end, +13943: std::forward_iterator_tag) +13943: { +13943: size_type __dnew = static_cast(std::distance(__beg, __end)); +13943: +13943: if (__dnew > size_type(_S_local_capacity)) +13943: { +13943: _M_data(_M_create(__dnew, size_type(0))); +13943: _M_capacity(__dnew); +13943: } +13943: else +13943: _M_init_local_buf(); +13943: +13943: +13943: struct _Guard +13943: { +13943: +13943: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } +13943: +13943: +13943: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } +13943: +13943: basic_string* _M_guarded; +13943: } __guard(this); +13943: +13943: this->_S_copy_chars(_M_data(), __beg, __end); +13943: +13943: __guard._M_guarded = 0; +13943: +13943: _M_set_length(__dnew); +13943: } +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_construct(size_type __n, _CharT __c) +13943: { +13943: if (__n > size_type(_S_local_capacity)) +13943: { +13943: _M_data(_M_create(__n, size_type(0))); +13943: _M_capacity(__n); +13943: } +13943: else +13943: _M_init_local_buf(); +13943: +13943: if (__n) +13943: this->_S_assign(_M_data(), __n, __c); +13943: +13943: _M_set_length(__n); +13943: } +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_assign(const basic_string& __str) +13943: { +13943: if (this != std::__addressof(__str)) +13943: { +13943: const size_type __rsize = __str.length(); +13943: const size_type __capacity = capacity(); +13943: +13943: if (__rsize > __capacity) +13943: { +13943: size_type __new_capacity = __rsize; +13943: pointer __tmp = _M_create(__new_capacity, __capacity); +13943: _M_dispose(); +13943: _M_data(__tmp); +13943: _M_capacity(__new_capacity); +13943: } +13943: +13943: if (__rsize) +13943: this->_S_copy(_M_data(), __str._M_data(), __rsize); +13943: +13943: _M_set_length(__rsize); +13943: } +13943: } +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: reserve(size_type __res) +13943: { +13943: const size_type __capacity = capacity(); +13943: +13943: +13943: +13943: +13943: if (__res <= __capacity) +13943: return; +13943: +13943: pointer __tmp = _M_create(__res, __capacity); +13943: this->_S_copy(__tmp, _M_data(), length() + 1); +13943: _M_dispose(); +13943: _M_data(__tmp); +13943: _M_capacity(__res); +13943: } +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, +13943: size_type __len2) +13943: { +13943: const size_type __how_much = length() - __pos - __len1; +13943: +13943: size_type __new_capacity = length() + __len2 - __len1; +13943: pointer __r = _M_create(__new_capacity, capacity()); +13943: +13943: if (__pos) +13943: this->_S_copy(__r, _M_data(), __pos); +13943: if (__s && __len2) +13943: this->_S_copy(__r + __pos, __s, __len2); +13943: if (__how_much) +13943: this->_S_copy(__r + __pos + __len2, +13943: _M_data() + __pos + __len1, __how_much); +13943: +13943: _M_dispose(); +13943: _M_data(__r); +13943: _M_capacity(__new_capacity); +13943: } +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_erase(size_type __pos, size_type __n) +13943: { +13943: const size_type __how_much = length() - __pos - __n; +13943: +13943: if (__how_much && __n) +13943: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); +13943: +13943: _M_set_length(length() - __n); +13943: } +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: reserve() +13943: { +13943: if (_M_is_local()) +13943: return; +13943: +13943: const size_type __length = length(); +13943: const size_type __capacity = _M_allocated_capacity; +13943: +13943: if (__length <= size_type(_S_local_capacity)) +13943: { +13943: _M_init_local_buf(); +13943: this->_S_copy(_M_local_buf, _M_data(), __length + 1); +13943: _M_destroy(__capacity); +13943: _M_data(_M_local_data()); +13943: } +13943: +13943: else if (__length < __capacity) +13943: try +13943: { +13943: pointer __tmp = _S_allocate(_M_get_allocator(), __length + 1); +13943: this->_S_copy(__tmp, _M_data(), __length + 1); +13943: _M_dispose(); +13943: _M_data(__tmp); +13943: _M_capacity(__length); +13943: } +13943: catch (const __cxxabiv1::__forced_unwind&) +13943: { throw; } +13943: catch (...) +13943: { } +13943: +13943: } +13943: +13943: template +13943: +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: resize(size_type __n, _CharT __c) +13943: { +13943: const size_type __size = this->size(); +13943: if (__size < __n) +13943: this->append(__n - __size, __c); +13943: else if (__n < __size) +13943: this->_M_set_length(__n); +13943: } +13943: +13943: template +13943: +13943: basic_string<_CharT, _Traits, _Alloc>& +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_append(const _CharT* __s, size_type __n) +13943: { +13943: const size_type __len = __n + this->size(); +13943: +13943: if (__len <= this->capacity()) +13943: { +13943: if (__n) +13943: this->_S_copy(this->_M_data() + this->size(), __s, __n); +13943: } +13943: else +13943: this->_M_mutate(this->size(), size_type(0), __s, __n); +13943: +13943: this->_M_set_length(__len); +13943: return *this; +13943: } +13943: +13943: template +13943: template +13943: +13943: basic_string<_CharT, _Traits, _Alloc>& +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, +13943: _InputIterator __k1, _InputIterator __k2, +13943: std::__false_type) +13943: { +13943: +13943: +13943: const basic_string __s(__k1, __k2, this->get_allocator()); +13943: const size_type __n1 = __i2 - __i1; +13943: return _M_replace(__i1 - begin(), __n1, __s._M_data(), +13943: __s.size()); +13943: } +13943: +13943: template +13943: +13943: basic_string<_CharT, _Traits, _Alloc>& +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, +13943: _CharT __c) +13943: { +13943: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); +13943: +13943: const size_type __old_size = this->size(); +13943: const size_type __new_size = __old_size + __n2 - __n1; +13943: +13943: if (__new_size <= this->capacity()) +13943: { +13943: pointer __p = this->_M_data() + __pos1; +13943: +13943: const size_type __how_much = __old_size - __pos1 - __n1; +13943: if (__how_much && __n1 != __n2) +13943: this->_S_move(__p + __n2, __p + __n1, __how_much); +13943: } +13943: else +13943: this->_M_mutate(__pos1, __n1, 0, __n2); +13943: +13943: if (__n2) +13943: this->_S_assign(this->_M_data() + __pos1, __n2, __c); +13943: +13943: this->_M_set_length(__new_size); +13943: return *this; +13943: } +13943: +13943: template +13943: __attribute__((__noinline__, __noclone__, __cold__)) void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, +13943: const size_type __len2, const size_type __how_much) +13943: { +13943: +13943: if (__len2 && __len2 <= __len1) +13943: this->_S_move(__p, __s, __len2); +13943: if (__how_much && __len1 != __len2) +13943: this->_S_move(__p + __len2, __p + __len1, __how_much); +13943: if (__len2 > __len1) +13943: { +13943: if (__s + __len2 <= __p + __len1) +13943: this->_S_move(__p, __s, __len2); +13943: else if (__s >= __p + __len1) +13943: { +13943: +13943: +13943: const size_type __poff = (__s - __p) + (__len2 - __len1); +13943: this->_S_copy(__p, __p + __poff, __len2); +13943: } +13943: else +13943: { +13943: const size_type __nleft = (__p + __len1) - __s; +13943: this->_S_move(__p, __s, __nleft); +13943: this->_S_copy(__p + __nleft, __p + __len2, __len2 - __nleft); +13943: } +13943: } +13943: } +13943: +13943: template +13943: +13943: basic_string<_CharT, _Traits, _Alloc>& +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, +13943: const size_type __len2) +13943: { +13943: _M_check_length(__len1, __len2, "basic_string::_M_replace"); +13943: +13943: const size_type __old_size = this->size(); +13943: const size_type __new_size = __old_size + __len2 - __len1; +13943: +13943: if (__new_size <= this->capacity()) +13943: { +13943: pointer __p = this->_M_data() + __pos; +13943: +13943: const size_type __how_much = __old_size - __pos - __len1; +13943: # 537 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: if (__builtin_expect(_M_disjunct(__s), true)) +13943: { +13943: if (__how_much && __len1 != __len2) +13943: this->_S_move(__p + __len2, __p + __len1, __how_much); +13943: if (__len2) +13943: this->_S_copy(__p, __s, __len2); +13943: } +13943: else +13943: _M_replace_cold(__p, __len1, __s, __len2, __how_much); +13943: } +13943: else +13943: this->_M_mutate(__pos, __len1, __s, __len2); +13943: +13943: this->_M_set_length(__new_size); +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: copy(_CharT* __s, size_type __n, size_type __pos) const +13943: { +13943: _M_check(__pos, "basic_string::copy"); +13943: __n = _M_limit(__pos, __n); +13943: ; +13943: if (__n) +13943: _S_copy(__s, _M_data() + __pos, __n); +13943: +13943: return __n; +13943: } +13943: # 580 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: template +13943: template +13943: void +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: +13943: +13943: +13943: __resize_and_overwrite(const size_type __n, _Operation __op) +13943: +13943: { +13943: reserve(__n); +13943: _CharT* const __p = _M_data(); +13943: +13943: +13943: +13943: +13943: struct _Terminator { +13943: ~_Terminator() { _M_this->_M_set_length(_M_r); } +13943: basic_string* _M_this; +13943: size_type _M_r; +13943: }; +13943: _Terminator __term{this, 0}; +13943: auto __r = std::move(__op)(__p + 0, __n + 0); +13943: +13943: +13943: +13943: static_assert(__gnu_cxx::__is_integer_nonstrict::__value, +13943: "resize_and_overwrite operation must return an integer"); +13943: +13943: ; +13943: __term._M_r = size_type(__r); +13943: if (__term._M_r > __n) +13943: __builtin_unreachable(); +13943: } +13943: # 623 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept +13943: { +13943: ; +13943: const size_type __size = this->size(); +13943: +13943: if (__n == 0) +13943: return __pos <= __size ? __pos : npos; +13943: if (__pos >= __size) +13943: return npos; +13943: +13943: const _CharT __elem0 = __s[0]; +13943: const _CharT* const __data = data(); +13943: const _CharT* __first = __data + __pos; +13943: const _CharT* const __last = __data + __size; +13943: size_type __len = __size - __pos; +13943: +13943: while (__len >= __n) +13943: { +13943: +13943: __first = traits_type::find(__first, __len - __n + 1, __elem0); +13943: if (!__first) +13943: return npos; +13943: +13943: +13943: +13943: if (traits_type::compare(__first, __s, __n) == 0) +13943: return __first - __data; +13943: __len = __last - ++__first; +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find(_CharT __c, size_type __pos) const noexcept +13943: { +13943: size_type __ret = npos; +13943: const size_type __size = this->size(); +13943: if (__pos < __size) +13943: { +13943: const _CharT* __data = _M_data(); +13943: const size_type __n = __size - __pos; +13943: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); +13943: if (__p) +13943: __ret = __p - __data; +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: rfind(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept +13943: { +13943: ; +13943: const size_type __size = this->size(); +13943: if (__n <= __size) +13943: { +13943: __pos = std::min(size_type(__size - __n), __pos); +13943: const _CharT* __data = _M_data(); +13943: do +13943: { +13943: if (traits_type::compare(__data + __pos, __s, __n) == 0) +13943: return __pos; +13943: } +13943: while (__pos-- > 0); +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: rfind(_CharT __c, size_type __pos) const noexcept +13943: { +13943: size_type __size = this->size(); +13943: if (__size) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: for (++__size; __size-- > 0; ) +13943: if (traits_type::eq(_M_data()[__size], __c)) +13943: return __size; +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept +13943: { +13943: ; +13943: for (; __n && __pos < this->size(); ++__pos) +13943: { +13943: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); +13943: if (__p) +13943: return __pos; +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept +13943: { +13943: ; +13943: size_type __size = this->size(); +13943: if (__size && __n) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: do +13943: { +13943: if (traits_type::find(__s, __n, _M_data()[__size])) +13943: return __size; +13943: } +13943: while (__size-- != 0); +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept +13943: { +13943: ; +13943: for (; __pos < this->size(); ++__pos) +13943: if (!traits_type::find(__s, __n, _M_data()[__pos])) +13943: return __pos; +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find_first_not_of(_CharT __c, size_type __pos) const noexcept +13943: { +13943: for (; __pos < this->size(); ++__pos) +13943: if (!traits_type::eq(_M_data()[__pos], __c)) +13943: return __pos; +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const +13943: noexcept +13943: { +13943: ; +13943: size_type __size = this->size(); +13943: if (__size) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: do +13943: { +13943: if (!traits_type::find(__s, __n, _M_data()[__size])) +13943: return __size; +13943: } +13943: while (__size--); +13943: } +13943: return npos; +13943: } +13943: +13943: template +13943: +13943: typename basic_string<_CharT, _Traits, _Alloc>::size_type +13943: basic_string<_CharT, _Traits, _Alloc>:: +13943: find_last_not_of(_CharT __c, size_type __pos) const noexcept +13943: { +13943: size_type __size = this->size(); +13943: if (__size) +13943: { +13943: if (--__size > __pos) +13943: __size = __pos; +13943: do +13943: { +13943: if (!traits_type::eq(_M_data()[__size], __c)) +13943: return __size; +13943: } +13943: while (__size--); +13943: } +13943: return npos; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: operator>>(basic_istream<_CharT, _Traits>& __in, +13943: basic_string<_CharT, _Traits, _Alloc>& __str) +13943: { +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +13943: typedef typename __istream_type::ios_base __ios_base; +13943: typedef typename __istream_type::int_type __int_type; +13943: typedef typename __string_type::size_type __size_type; +13943: typedef ctype<_CharT> __ctype_type; +13943: typedef typename __ctype_type::ctype_base __ctype_base; +13943: +13943: __size_type __extracted = 0; +13943: typename __ios_base::iostate __err = __ios_base::goodbit; +13943: typename __istream_type::sentry __cerb(__in, false); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: +13943: __str.erase(); +13943: _CharT __buf[128]; +13943: __size_type __len = 0; +13943: const streamsize __w = __in.width(); +13943: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) +13943: : __str.max_size(); +13943: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); +13943: const __int_type __eof = _Traits::eof(); +13943: __int_type __c = __in.rdbuf()->sgetc(); +13943: +13943: while (__extracted < __n +13943: && !_Traits::eq_int_type(__c, __eof) +13943: && !__ct.is(__ctype_base::space, +13943: _Traits::to_char_type(__c))) +13943: { +13943: if (__len == sizeof(__buf) / sizeof(_CharT)) +13943: { +13943: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); +13943: __len = 0; +13943: } +13943: __buf[__len++] = _Traits::to_char_type(__c); +13943: ++__extracted; +13943: __c = __in.rdbuf()->snextc(); +13943: } +13943: __str.append(__buf, __len); +13943: +13943: if (__extracted < __n && _Traits::eq_int_type(__c, __eof)) +13943: __err |= __ios_base::eofbit; +13943: __in.width(0); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: __in._M_setstate(__ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { +13943: +13943: +13943: +13943: __in._M_setstate(__ios_base::badbit); +13943: } +13943: } +13943: +13943: if (!__extracted) +13943: __err |= __ios_base::failbit; +13943: if (__err) +13943: __in.setstate(__err); +13943: return __in; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: getline(basic_istream<_CharT, _Traits>& __in, +13943: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) +13943: { +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +13943: typedef typename __istream_type::ios_base __ios_base; +13943: typedef typename __istream_type::int_type __int_type; +13943: typedef typename __string_type::size_type __size_type; +13943: +13943: __size_type __extracted = 0; +13943: const __size_type __n = __str.max_size(); +13943: typename __ios_base::iostate __err = __ios_base::goodbit; +13943: typename __istream_type::sentry __cerb(__in, true); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: __str.erase(); +13943: const __int_type __idelim = _Traits::to_int_type(__delim); +13943: const __int_type __eof = _Traits::eof(); +13943: __int_type __c = __in.rdbuf()->sgetc(); +13943: +13943: while (__extracted < __n +13943: && !_Traits::eq_int_type(__c, __eof) +13943: && !_Traits::eq_int_type(__c, __idelim)) +13943: { +13943: __str += _Traits::to_char_type(__c); +13943: ++__extracted; +13943: __c = __in.rdbuf()->snextc(); +13943: } +13943: +13943: if (_Traits::eq_int_type(__c, __eof)) +13943: __err |= __ios_base::eofbit; +13943: else if (_Traits::eq_int_type(__c, __idelim)) +13943: { +13943: ++__extracted; +13943: __in.rdbuf()->sbumpc(); +13943: } +13943: else +13943: __err |= __ios_base::failbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: __in._M_setstate(__ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { +13943: +13943: +13943: +13943: __in._M_setstate(__ios_base::badbit); +13943: } +13943: } +13943: if (!__extracted) +13943: __err |= __ios_base::failbit; +13943: if (__err) +13943: __in.setstate(__err); +13943: return __in; +13943: } +13943: # 977 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: extern template class basic_string; +13943: # 990 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: extern template +13943: basic_istream& +13943: operator>>(basic_istream&, string&); +13943: extern template +13943: basic_ostream& +13943: operator<<(basic_ostream&, const string&); +13943: extern template +13943: basic_istream& +13943: getline(basic_istream&, string&, char); +13943: extern template +13943: basic_istream& +13943: getline(basic_istream&, string&); +13943: +13943: +13943: +13943: extern template class basic_string; +13943: # 1016 "/usr/include/c++/14/bits/basic_string.tcc" 3 +13943: extern template +13943: basic_istream& +13943: operator>>(basic_istream&, wstring&); +13943: extern template +13943: basic_ostream& +13943: operator<<(basic_ostream&, const wstring&); +13943: extern template +13943: basic_istream& +13943: getline(basic_istream&, wstring&, wchar_t); +13943: extern template +13943: basic_istream& +13943: getline(basic_istream&, wstring&); +13943: +13943: +13943: +13943: +13943: } +13943: # 56 "/usr/include/c++/14/string" 2 3 +13943: # 65 "/usr/include/c++/14/string" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 66 "/usr/include/c++/14/string" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr { +13943: template> +13943: using basic_string = std::basic_string<_CharT, _Traits, +13943: polymorphic_allocator<_CharT>>; +13943: using string = basic_string; +13943: +13943: +13943: +13943: using u16string = basic_string; +13943: using u32string = basic_string; +13943: using wstring = basic_string; +13943: } +13943: +13943: } +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/usr/include/c++/14/unordered_set" 1 3 +13943: # 32 "/usr/include/c++/14/unordered_set" 3 +13943: +13943: # 33 "/usr/include/c++/14/unordered_set" 3 +13943: # 41 "/usr/include/c++/14/unordered_set" 3 +13943: # 1 "/usr/include/c++/14/bits/unordered_set.h" 1 3 +13943: # 38 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; +13943: +13943: template, +13943: typename _Pred = std::equal_to<_Value>, +13943: typename _Alloc = std::allocator<_Value>, +13943: typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> +13943: using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, +13943: __detail::_Identity, _Pred, _Hash, +13943: __detail::_Mod_range_hashing, +13943: __detail::_Default_ranged_hash, +13943: __detail::_Prime_rehash_policy, _Tr>; +13943: +13943: +13943: template +13943: using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; +13943: +13943: template, +13943: typename _Pred = std::equal_to<_Value>, +13943: typename _Alloc = std::allocator<_Value>, +13943: typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> +13943: using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, +13943: __detail::_Identity, +13943: _Pred, _Hash, +13943: __detail::_Mod_range_hashing, +13943: __detail::_Default_ranged_hash, +13943: __detail::_Prime_rehash_policy, _Tr>; +13943: +13943: template +13943: class unordered_multiset; +13943: # 100 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template, +13943: typename _Pred = equal_to<_Value>, +13943: typename _Alloc = allocator<_Value>> +13943: class unordered_set +13943: { +13943: typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; +13943: _Hashtable _M_h; +13943: +13943: public: +13943: +13943: +13943: +13943: typedef typename _Hashtable::key_type key_type; +13943: typedef typename _Hashtable::value_type value_type; +13943: typedef typename _Hashtable::hasher hasher; +13943: typedef typename _Hashtable::key_equal key_equal; +13943: typedef typename _Hashtable::allocator_type allocator_type; +13943: +13943: +13943: +13943: +13943: typedef typename _Hashtable::pointer pointer; +13943: typedef typename _Hashtable::const_pointer const_pointer; +13943: typedef typename _Hashtable::reference reference; +13943: typedef typename _Hashtable::const_reference const_reference; +13943: typedef typename _Hashtable::iterator iterator; +13943: typedef typename _Hashtable::const_iterator const_iterator; +13943: typedef typename _Hashtable::local_iterator local_iterator; +13943: typedef typename _Hashtable::const_local_iterator const_local_iterator; +13943: typedef typename _Hashtable::size_type size_type; +13943: typedef typename _Hashtable::difference_type difference_type; +13943: +13943: +13943: +13943: using node_type = typename _Hashtable::node_type; +13943: using insert_return_type = typename _Hashtable::insert_return_type; +13943: +13943: +13943: +13943: +13943: +13943: unordered_set() = default; +13943: # 151 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: explicit +13943: unordered_set(size_type __n, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__n, __hf, __eql, __a) +13943: { } +13943: # 172 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: unordered_set(_InputIterator __first, _InputIterator __last, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__first, __last, __n, __hf, __eql, __a) +13943: { } +13943: +13943: +13943: unordered_set(const unordered_set&) = default; +13943: +13943: +13943: unordered_set(unordered_set&&) = default; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: unordered_set(const allocator_type& __a) +13943: : _M_h(__a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_set(const unordered_set& __uset, +13943: const allocator_type& __a) +13943: : _M_h(__uset._M_h, __a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_set(unordered_set&& __uset, +13943: const allocator_type& __a) +13943: noexcept( noexcept(_Hashtable(std::move(__uset._M_h), __a)) ) +13943: : _M_h(std::move(__uset._M_h), __a) +13943: { } +13943: # 228 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: unordered_set(initializer_list __l, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__l, __n, __hf, __eql, __a) +13943: { } +13943: +13943: unordered_set(size_type __n, const allocator_type& __a) +13943: : unordered_set(__n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_set(size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_set(__n, __hf, key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_set(_InputIterator __first, _InputIterator __last, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_set(_InputIterator __first, _InputIterator __last, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_set(__first, __last, __n, __hf, key_equal(), __a) +13943: { } +13943: +13943: unordered_set(initializer_list __l, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_set(__l, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_set(initializer_list __l, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_set(__l, __n, __hf, key_equal(), __a) +13943: { } +13943: +13943: +13943: unordered_set& +13943: operator=(const unordered_set&) = default; +13943: +13943: +13943: unordered_set& +13943: operator=(unordered_set&&) = default; +13943: # 290 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: unordered_set& +13943: operator=(initializer_list __l) +13943: { +13943: _M_h = __l; +13943: return *this; +13943: } +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return _M_h.get_allocator(); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_h.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_h.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_h.max_size(); } +13943: # 326 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: begin() noexcept +13943: { return _M_h.begin(); } +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: end() noexcept +13943: { return _M_h.end(); } +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return _M_h.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cbegin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cend() const noexcept +13943: { return _M_h.end(); } +13943: # 382 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: std::pair +13943: emplace(_Args&&... __args) +13943: { return _M_h.emplace(std::forward<_Args>(__args)...); } +13943: # 408 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +13943: # 427 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: std::pair +13943: insert(const value_type& __x) +13943: { return _M_h.insert(__x); } +13943: +13943: std::pair +13943: insert(value_type&& __x) +13943: { return _M_h.insert(std::move(__x)); } +13943: # 456 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: insert(const_iterator __hint, const value_type& __x) +13943: { return _M_h.insert(__hint, __x); } +13943: +13943: iterator +13943: insert(const_iterator __hint, value_type&& __x) +13943: { return _M_h.insert(__hint, std::move(__x)); } +13943: # 474 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_h.insert(__first, __last); } +13943: # 486 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: insert(initializer_list __l) +13943: { _M_h.insert(__l); } +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_h.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __key) +13943: { return _M_h.extract(__key); } +13943: +13943: +13943: insert_return_type +13943: insert(node_type&& __nh) +13943: { return _M_h._M_reinsert_node(std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator, node_type&& __nh) +13943: { return _M_h._M_reinsert_node(std::move(__nh)).position; } +13943: # 529 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_h.erase(__position); } +13943: +13943: +13943: iterator +13943: erase(iterator __position) +13943: { return _M_h.erase(__position); } +13943: # 551 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_h.erase(__x); } +13943: # 569 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_h.erase(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_h.clear(); } +13943: # 592 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: swap(unordered_set& __x) +13943: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +13943: { _M_h.swap(__x._M_h); } +13943: +13943: +13943: template +13943: friend class std::_Hash_merge_helper; +13943: +13943: template +13943: void +13943: merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Hash_merge_helper; +13943: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Hash_merge_helper; +13943: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: hasher +13943: hash_function() const +13943: { return _M_h.hash_function(); } +13943: +13943: +13943: +13943: key_equal +13943: key_eq() const +13943: { return _M_h.key_eq(); } +13943: # 656 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_h.find(__x); } +13943: # 668 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_h.find(__x); } +13943: # 691 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_h.count(__x); } +13943: # 732 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_h.equal_range(__x); } +13943: # 744 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_h.equal_range(__x); } +13943: # 760 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: size_type +13943: bucket_count() const noexcept +13943: { return _M_h.bucket_count(); } +13943: +13943: +13943: size_type +13943: max_bucket_count() const noexcept +13943: { return _M_h.max_bucket_count(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket_size(size_type __n) const +13943: { return _M_h.bucket_size(__n); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket(const key_type& __key) const +13943: { return _M_h.bucket(__key); } +13943: # 794 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: local_iterator +13943: begin(size_type __n) +13943: { return _M_h.begin(__n); } +13943: +13943: const_local_iterator +13943: begin(size_type __n) const +13943: { return _M_h.begin(__n); } +13943: +13943: const_local_iterator +13943: cbegin(size_type __n) const +13943: { return _M_h.cbegin(__n); } +13943: # 814 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: local_iterator +13943: end(size_type __n) +13943: { return _M_h.end(__n); } +13943: +13943: const_local_iterator +13943: end(size_type __n) const +13943: { return _M_h.end(__n); } +13943: +13943: const_local_iterator +13943: cend(size_type __n) const +13943: { return _M_h.cend(__n); } +13943: +13943: +13943: +13943: +13943: +13943: float +13943: load_factor() const noexcept +13943: { return _M_h.load_factor(); } +13943: +13943: +13943: +13943: float +13943: max_load_factor() const noexcept +13943: { return _M_h.max_load_factor(); } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: max_load_factor(float __z) +13943: { _M_h.max_load_factor(__z); } +13943: # 855 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: rehash(size_type __n) +13943: { _M_h.rehash(__n); } +13943: # 866 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: reserve(size_type __n) +13943: { _M_h.reserve(__n); } +13943: +13943: template +13943: friend bool +13943: operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, +13943: const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); +13943: }; +13943: +13943: +13943: +13943: template::value_type>, +13943: typename _Pred = +13943: equal_to::value_type>, +13943: typename _Allocator = +13943: allocator::value_type>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_set(_InputIterator, _InputIterator, +13943: unordered_set::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +13943: -> unordered_set::value_type, +13943: _Hash, _Pred, _Allocator>; +13943: +13943: template, +13943: typename _Pred = equal_to<_Tp>, +13943: typename _Allocator = allocator<_Tp>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_set(initializer_list<_Tp>, +13943: unordered_set::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +13943: -> unordered_set<_Tp, _Hash, _Pred, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_set(_InputIterator, _InputIterator, +13943: unordered_set::size_type, _Allocator) +13943: -> unordered_set::value_type, +13943: hash< +13943: typename iterator_traits<_InputIterator>::value_type>, +13943: equal_to< +13943: typename iterator_traits<_InputIterator>::value_type>, +13943: _Allocator>; +13943: +13943: template, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_set(_InputIterator, _InputIterator, +13943: unordered_set::size_type, +13943: _Hash, _Allocator) +13943: -> unordered_set::value_type, +13943: _Hash, +13943: equal_to< +13943: typename iterator_traits<_InputIterator>::value_type>, +13943: _Allocator>; +13943: +13943: template> +13943: unordered_set(initializer_list<_Tp>, +13943: unordered_set::size_type, _Allocator) +13943: -> unordered_set<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_set(initializer_list<_Tp>, +13943: unordered_set::size_type, _Hash, _Allocator) +13943: -> unordered_set<_Tp, _Hash, equal_to<_Tp>, _Allocator>; +13943: # 968 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template, +13943: typename _Pred = equal_to<_Value>, +13943: typename _Alloc = allocator<_Value>> +13943: class unordered_multiset +13943: { +13943: typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; +13943: _Hashtable _M_h; +13943: +13943: public: +13943: +13943: +13943: +13943: typedef typename _Hashtable::key_type key_type; +13943: typedef typename _Hashtable::value_type value_type; +13943: typedef typename _Hashtable::hasher hasher; +13943: typedef typename _Hashtable::key_equal key_equal; +13943: typedef typename _Hashtable::allocator_type allocator_type; +13943: +13943: +13943: +13943: +13943: typedef typename _Hashtable::pointer pointer; +13943: typedef typename _Hashtable::const_pointer const_pointer; +13943: typedef typename _Hashtable::reference reference; +13943: typedef typename _Hashtable::const_reference const_reference; +13943: typedef typename _Hashtable::iterator iterator; +13943: typedef typename _Hashtable::const_iterator const_iterator; +13943: typedef typename _Hashtable::local_iterator local_iterator; +13943: typedef typename _Hashtable::const_local_iterator const_local_iterator; +13943: typedef typename _Hashtable::size_type size_type; +13943: typedef typename _Hashtable::difference_type difference_type; +13943: +13943: +13943: +13943: using node_type = typename _Hashtable::node_type; +13943: +13943: +13943: +13943: +13943: +13943: unordered_multiset() = default; +13943: # 1018 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: explicit +13943: unordered_multiset(size_type __n, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__n, __hf, __eql, __a) +13943: { } +13943: # 1039 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: unordered_multiset(_InputIterator __first, _InputIterator __last, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__first, __last, __n, __hf, __eql, __a) +13943: { } +13943: +13943: +13943: unordered_multiset(const unordered_multiset&) = default; +13943: +13943: +13943: unordered_multiset(unordered_multiset&&) = default; +13943: # 1065 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: unordered_multiset(initializer_list __l, +13943: size_type __n = 0, +13943: const hasher& __hf = hasher(), +13943: const key_equal& __eql = key_equal(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_h(__l, __n, __hf, __eql, __a) +13943: { } +13943: +13943: +13943: unordered_multiset& +13943: operator=(const unordered_multiset&) = default; +13943: +13943: +13943: unordered_multiset& +13943: operator=(unordered_multiset&&) = default; +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: unordered_multiset(const allocator_type& __a) +13943: : _M_h(__a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_multiset(const unordered_multiset& __umset, +13943: const allocator_type& __a) +13943: : _M_h(__umset._M_h, __a) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: unordered_multiset(unordered_multiset&& __umset, +13943: const allocator_type& __a) +13943: noexcept( noexcept(_Hashtable(std::move(__umset._M_h), __a)) ) +13943: : _M_h(std::move(__umset._M_h), __a) +13943: { } +13943: +13943: unordered_multiset(size_type __n, const allocator_type& __a) +13943: : unordered_multiset(__n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_multiset(size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_multiset(__n, __hf, key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_multiset(_InputIterator __first, _InputIterator __last, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: template +13943: unordered_multiset(_InputIterator __first, _InputIterator __last, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) +13943: { } +13943: +13943: unordered_multiset(initializer_list __l, +13943: size_type __n, +13943: const allocator_type& __a) +13943: : unordered_multiset(__l, __n, hasher(), key_equal(), __a) +13943: { } +13943: +13943: unordered_multiset(initializer_list __l, +13943: size_type __n, const hasher& __hf, +13943: const allocator_type& __a) +13943: : unordered_multiset(__l, __n, __hf, key_equal(), __a) +13943: { } +13943: # 1157 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: unordered_multiset& +13943: operator=(initializer_list __l) +13943: { +13943: _M_h = __l; +13943: return *this; +13943: } +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return _M_h.get_allocator(); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_h.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_h.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_h.max_size(); } +13943: # 1193 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: begin() noexcept +13943: { return _M_h.begin(); } +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: end() noexcept +13943: { return _M_h.end(); } +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return _M_h.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cbegin() const noexcept +13943: { return _M_h.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cend() const noexcept +13943: { return _M_h.end(); } +13943: # 1241 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: iterator +13943: emplace(_Args&&... __args) +13943: { return _M_h.emplace(std::forward<_Args>(__args)...); } +13943: # 1263 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +13943: # 1276 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: insert(const value_type& __x) +13943: { return _M_h.insert(__x); } +13943: +13943: iterator +13943: insert(value_type&& __x) +13943: { return _M_h.insert(std::move(__x)); } +13943: # 1302 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: insert(const_iterator __hint, const value_type& __x) +13943: { return _M_h.insert(__hint, __x); } +13943: +13943: iterator +13943: insert(const_iterator __hint, value_type&& __x) +13943: { return _M_h.insert(__hint, std::move(__x)); } +13943: # 1319 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_h.insert(__first, __last); } +13943: # 1331 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: insert(initializer_list __l) +13943: { _M_h.insert(__l); } +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_h.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __key) +13943: { return _M_h.extract(__key); } +13943: +13943: +13943: iterator +13943: insert(node_type&& __nh) +13943: { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, node_type&& __nh) +13943: { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } +13943: # 1375 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_h.erase(__position); } +13943: +13943: +13943: iterator +13943: erase(iterator __position) +13943: { return _M_h.erase(__position); } +13943: # 1398 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_h.erase(__x); } +13943: # 1418 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_h.erase(__first, __last); } +13943: # 1429 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: clear() noexcept +13943: { _M_h.clear(); } +13943: # 1442 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: swap(unordered_multiset& __x) +13943: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +13943: { _M_h.swap(__x._M_h); } +13943: +13943: +13943: template +13943: friend class std::_Hash_merge_helper; +13943: +13943: template +13943: void +13943: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper +13943: = _Hash_merge_helper; +13943: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) +13943: { +13943: using _Merge_helper +13943: = _Hash_merge_helper; +13943: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: hasher +13943: hash_function() const +13943: { return _M_h.hash_function(); } +13943: +13943: +13943: +13943: key_equal +13943: key_eq() const +13943: { return _M_h.key_eq(); } +13943: # 1508 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_h.find(__x); } +13943: # 1520 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_h.find(__x); } +13943: # 1539 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_h.count(__x); } +13943: # 1577 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_h.equal_range(__x); } +13943: # 1589 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_h.equal_range(__x); } +13943: # 1605 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: size_type +13943: bucket_count() const noexcept +13943: { return _M_h.bucket_count(); } +13943: +13943: +13943: size_type +13943: max_bucket_count() const noexcept +13943: { return _M_h.max_bucket_count(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket_size(size_type __n) const +13943: { return _M_h.bucket_size(__n); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_type +13943: bucket(const key_type& __key) const +13943: { return _M_h.bucket(__key); } +13943: # 1639 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: local_iterator +13943: begin(size_type __n) +13943: { return _M_h.begin(__n); } +13943: +13943: const_local_iterator +13943: begin(size_type __n) const +13943: { return _M_h.begin(__n); } +13943: +13943: const_local_iterator +13943: cbegin(size_type __n) const +13943: { return _M_h.cbegin(__n); } +13943: # 1659 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: local_iterator +13943: end(size_type __n) +13943: { return _M_h.end(__n); } +13943: +13943: const_local_iterator +13943: end(size_type __n) const +13943: { return _M_h.end(__n); } +13943: +13943: const_local_iterator +13943: cend(size_type __n) const +13943: { return _M_h.cend(__n); } +13943: +13943: +13943: +13943: +13943: +13943: float +13943: load_factor() const noexcept +13943: { return _M_h.load_factor(); } +13943: +13943: +13943: +13943: float +13943: max_load_factor() const noexcept +13943: { return _M_h.max_load_factor(); } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: max_load_factor(float __z) +13943: { _M_h.max_load_factor(__z); } +13943: # 1700 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: rehash(size_type __n) +13943: { _M_h.rehash(__n); } +13943: # 1711 "/usr/include/c++/14/bits/unordered_set.h" 3 +13943: void +13943: reserve(size_type __n) +13943: { _M_h.reserve(__n); } +13943: +13943: template +13943: friend bool +13943: operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, +13943: const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); +13943: }; +13943: +13943: +13943: +13943: +13943: template::value_type>, +13943: typename _Pred = +13943: equal_to::value_type>, +13943: typename _Allocator = +13943: allocator::value_type>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multiset(_InputIterator, _InputIterator, +13943: unordered_multiset::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), +13943: _Allocator = _Allocator()) +13943: -> unordered_multiset::value_type, +13943: _Hash, _Pred, _Allocator>; +13943: +13943: template, +13943: typename _Pred = equal_to<_Tp>, +13943: typename _Allocator = allocator<_Tp>, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireNotAllocator<_Pred>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multiset(initializer_list<_Tp>, +13943: unordered_multiset::size_type = {}, +13943: _Hash = _Hash(), _Pred = _Pred(), +13943: _Allocator = _Allocator()) +13943: -> unordered_multiset<_Tp, _Hash, _Pred, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multiset(_InputIterator, _InputIterator, +13943: unordered_multiset::size_type, _Allocator) +13943: -> unordered_multiset::value_type, +13943: hash::value_type>, +13943: equal_to::value_type>, +13943: _Allocator>; +13943: +13943: template, +13943: typename = _RequireNotAllocatorOrIntegral<_Hash>, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multiset(_InputIterator, _InputIterator, +13943: unordered_multiset::size_type, +13943: _Hash, _Allocator) +13943: -> unordered_multiset::value_type, +13943: _Hash, +13943: equal_to< +13943: typename +13943: iterator_traits<_InputIterator>::value_type>, +13943: _Allocator>; +13943: +13943: template> +13943: unordered_multiset(initializer_list<_Tp>, +13943: unordered_multiset::size_type, _Allocator) +13943: -> unordered_multiset<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: unordered_multiset(initializer_list<_Tp>, +13943: unordered_multiset::size_type, _Hash, _Allocator) +13943: -> unordered_multiset<_Tp, _Hash, equal_to<_Tp>, _Allocator>; +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, +13943: unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: template +13943: inline void +13943: swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, +13943: unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: template +13943: inline bool +13943: operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) +13943: { return __x._M_h._M_equal(__y._M_h); } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: inline bool +13943: operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) +13943: { return __x._M_h._M_equal(__y._M_h); } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, +13943: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Hash_merge_helper< +13943: std::unordered_set<_Val, _Hash1, _Eq1, _Alloc>, _Hash2, _Eq2> +13943: { +13943: private: +13943: template +13943: using unordered_set = std::unordered_set<_Tp...>; +13943: template +13943: using unordered_multiset = std::unordered_multiset<_Tp...>; +13943: +13943: friend unordered_set<_Val, _Hash1, _Eq1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) +13943: { return __set._M_h; } +13943: +13943: static auto& +13943: _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) +13943: { return __set._M_h; } +13943: }; +13943: +13943: +13943: template +13943: struct _Hash_merge_helper< +13943: std::unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>, +13943: _Hash2, _Eq2> +13943: { +13943: private: +13943: template +13943: using unordered_set = std::unordered_set<_Tp...>; +13943: template +13943: using unordered_multiset = std::unordered_multiset<_Tp...>; +13943: +13943: friend unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) +13943: { return __set._M_h; } +13943: +13943: static auto& +13943: _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) +13943: { return __set._M_h; } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 42 "/usr/include/c++/14/unordered_set" 2 3 +13943: # 54 "/usr/include/c++/14/unordered_set" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 55 "/usr/include/c++/14/unordered_set" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr +13943: { +13943: template, +13943: typename _Pred = std::equal_to<_Key>> +13943: using unordered_set +13943: = std::unordered_set<_Key, _Hash, _Pred, +13943: polymorphic_allocator<_Key>>; +13943: template, +13943: typename _Pred = std::equal_to<_Key>> +13943: using unordered_multiset +13943: = std::unordered_multiset<_Key, _Hash, _Pred, +13943: polymorphic_allocator<_Key>>; +13943: } +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/optional" 1 3 +13943: # 33 "/usr/include/c++/14/optional" 3 +13943: +13943: # 34 "/usr/include/c++/14/optional" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 38 "/usr/include/c++/14/optional" 2 3 +13943: # 58 "/usr/include/c++/14/optional" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class optional; +13943: +13943: +13943: struct nullopt_t +13943: { +13943: +13943: +13943: +13943: +13943: +13943: enum class _Construct { _Token }; +13943: +13943: +13943: explicit constexpr nullopt_t(_Construct) noexcept { } +13943: }; +13943: +13943: +13943: inline constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token }; +13943: +13943: template struct _Optional_func { _Fn& _M_f; }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class bad_optional_access : public exception +13943: { +13943: public: +13943: bad_optional_access() = default; +13943: virtual ~bad_optional_access() = default; +13943: +13943: const char* what() const noexcept override +13943: { return "bad optional access"; } +13943: }; +13943: +13943: +13943: [[__noreturn__]] inline void +13943: __throw_bad_optional_access() +13943: { (throw (bad_optional_access())); } +13943: +13943: +13943: +13943: template +13943: struct _Optional_payload_base +13943: { +13943: using _Stored_type = remove_const_t<_Tp>; +13943: +13943: _Optional_payload_base() = default; +13943: ~_Optional_payload_base() = default; +13943: +13943: template +13943: constexpr +13943: _Optional_payload_base(in_place_t __tag, _Args&&... __args) +13943: : _M_payload(__tag, std::forward<_Args>(__args)...), +13943: _M_engaged(true) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Optional_payload_base(std::initializer_list<_Up> __il, +13943: _Args&&... __args) +13943: : _M_payload(__il, std::forward<_Args>(__args)...), +13943: _M_engaged(true) +13943: { } +13943: +13943: +13943: +13943: constexpr +13943: _Optional_payload_base(bool , +13943: const _Optional_payload_base& __other) +13943: { +13943: if (__other._M_engaged) +13943: this->_M_construct(__other._M_get()); +13943: } +13943: +13943: +13943: +13943: constexpr +13943: _Optional_payload_base(bool , +13943: _Optional_payload_base&& __other) +13943: { +13943: if (__other._M_engaged) +13943: this->_M_construct(std::move(__other._M_get())); +13943: } +13943: +13943: +13943: +13943: _Optional_payload_base(const _Optional_payload_base&) = default; +13943: +13943: +13943: +13943: _Optional_payload_base(_Optional_payload_base&&) = default; +13943: +13943: _Optional_payload_base& +13943: operator=(const _Optional_payload_base&) = default; +13943: +13943: _Optional_payload_base& +13943: operator=(_Optional_payload_base&&) = default; +13943: +13943: +13943: constexpr void +13943: _M_copy_assign(const _Optional_payload_base& __other) +13943: { +13943: if (this->_M_engaged && __other._M_engaged) +13943: this->_M_get() = __other._M_get(); +13943: else +13943: { +13943: if (__other._M_engaged) +13943: this->_M_construct(__other._M_get()); +13943: else +13943: this->_M_reset(); +13943: } +13943: } +13943: +13943: +13943: constexpr void +13943: _M_move_assign(_Optional_payload_base&& __other) +13943: noexcept(__and_v, +13943: is_nothrow_move_assignable<_Tp>>) +13943: { +13943: if (this->_M_engaged && __other._M_engaged) +13943: this->_M_get() = std::move(__other._M_get()); +13943: else +13943: { +13943: if (__other._M_engaged) +13943: this->_M_construct(std::move(__other._M_get())); +13943: else +13943: this->_M_reset(); +13943: } +13943: } +13943: +13943: struct _Empty_byte { }; +13943: +13943: template> +13943: union _Storage +13943: { +13943: constexpr _Storage() noexcept : _M_empty() { } +13943: +13943: template +13943: constexpr +13943: _Storage(in_place_t, _Args&&... __args) +13943: : _M_value(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Storage(std::initializer_list<_Vp> __il, _Args&&... __args) +13943: : _M_value(__il, std::forward<_Args>(__args)...) +13943: { } +13943: # 228 "/usr/include/c++/14/optional" 3 +13943: _Empty_byte _M_empty; +13943: _Up _M_value; +13943: }; +13943: +13943: template +13943: union _Storage<_Up, false> +13943: { +13943: constexpr _Storage() noexcept : _M_empty() { } +13943: +13943: template +13943: constexpr +13943: _Storage(in_place_t, _Args&&... __args) +13943: : _M_value(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Storage(std::initializer_list<_Vp> __il, _Args&&... __args) +13943: : _M_value(__il, std::forward<_Args>(__args)...) +13943: { } +13943: # 259 "/usr/include/c++/14/optional" 3 +13943: ~_Storage() { } +13943: +13943: _Empty_byte _M_empty; +13943: _Up _M_value; +13943: }; +13943: +13943: _Storage<_Stored_type> _M_payload; +13943: +13943: bool _M_engaged = false; +13943: +13943: template +13943: constexpr void +13943: _M_construct(_Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Stored_type, _Args...>) +13943: { +13943: std::_Construct(std::__addressof(this->_M_payload._M_value), +13943: std::forward<_Args>(__args)...); +13943: this->_M_engaged = true; +13943: } +13943: +13943: constexpr void +13943: _M_destroy() noexcept +13943: { +13943: _M_engaged = false; +13943: _M_payload._M_value.~_Stored_type(); +13943: } +13943: # 301 "/usr/include/c++/14/optional" 3 +13943: constexpr _Tp& +13943: _M_get() noexcept +13943: { return this->_M_payload._M_value; } +13943: +13943: constexpr const _Tp& +13943: _M_get() const noexcept +13943: { return this->_M_payload._M_value; } +13943: +13943: +13943: constexpr void +13943: _M_reset() noexcept +13943: { +13943: if (this->_M_engaged) +13943: _M_destroy(); +13943: else +13943: this->_M_engaged = false; +13943: } +13943: }; +13943: +13943: +13943: template , +13943: bool = +13943: is_trivially_copy_assignable_v<_Tp> +13943: && is_trivially_copy_constructible_v<_Tp>, +13943: bool = +13943: is_trivially_move_assignable_v<_Tp> +13943: && is_trivially_move_constructible_v<_Tp>> +13943: struct _Optional_payload; +13943: +13943: +13943: template +13943: struct _Optional_payload<_Tp, true, true, true> +13943: : _Optional_payload_base<_Tp> +13943: { +13943: using _Optional_payload_base<_Tp>::_Optional_payload_base; +13943: +13943: _Optional_payload() = default; +13943: }; +13943: +13943: +13943: template +13943: struct _Optional_payload<_Tp, true, false, true> +13943: : _Optional_payload_base<_Tp> +13943: { +13943: using _Optional_payload_base<_Tp>::_Optional_payload_base; +13943: +13943: _Optional_payload() = default; +13943: ~_Optional_payload() = default; +13943: _Optional_payload(const _Optional_payload&) = default; +13943: _Optional_payload(_Optional_payload&&) = default; +13943: _Optional_payload& operator=(_Optional_payload&&) = default; +13943: +13943: +13943: constexpr +13943: _Optional_payload& +13943: operator=(const _Optional_payload& __other) +13943: { +13943: this->_M_copy_assign(__other); +13943: return *this; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Optional_payload<_Tp, true, true, false> +13943: : _Optional_payload_base<_Tp> +13943: { +13943: using _Optional_payload_base<_Tp>::_Optional_payload_base; +13943: +13943: _Optional_payload() = default; +13943: ~_Optional_payload() = default; +13943: _Optional_payload(const _Optional_payload&) = default; +13943: _Optional_payload(_Optional_payload&&) = default; +13943: _Optional_payload& operator=(const _Optional_payload&) = default; +13943: +13943: +13943: constexpr +13943: _Optional_payload& +13943: operator=(_Optional_payload&& __other) +13943: noexcept(__and_v, +13943: is_nothrow_move_assignable<_Tp>>) +13943: { +13943: this->_M_move_assign(std::move(__other)); +13943: return *this; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Optional_payload<_Tp, true, false, false> +13943: : _Optional_payload_base<_Tp> +13943: { +13943: using _Optional_payload_base<_Tp>::_Optional_payload_base; +13943: +13943: _Optional_payload() = default; +13943: ~_Optional_payload() = default; +13943: _Optional_payload(const _Optional_payload&) = default; +13943: _Optional_payload(_Optional_payload&&) = default; +13943: +13943: +13943: constexpr +13943: _Optional_payload& +13943: operator=(const _Optional_payload& __other) +13943: { +13943: this->_M_copy_assign(__other); +13943: return *this; +13943: } +13943: +13943: +13943: constexpr +13943: _Optional_payload& +13943: operator=(_Optional_payload&& __other) +13943: noexcept(__and_v, +13943: is_nothrow_move_assignable<_Tp>>) +13943: { +13943: this->_M_move_assign(std::move(__other)); +13943: return *this; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Optional_payload<_Tp, false, _Copy, _Move> +13943: : _Optional_payload<_Tp, true, false, false> +13943: { +13943: +13943: using _Optional_payload<_Tp, true, false, false>::_Optional_payload; +13943: _Optional_payload() = default; +13943: _Optional_payload(const _Optional_payload&) = default; +13943: _Optional_payload(_Optional_payload&&) = default; +13943: _Optional_payload& operator=(const _Optional_payload&) = default; +13943: _Optional_payload& operator=(_Optional_payload&&) = default; +13943: +13943: +13943: ~_Optional_payload() { this->_M_reset(); } +13943: }; +13943: +13943: +13943: +13943: template +13943: class _Optional_base_impl +13943: { +13943: protected: +13943: using _Stored_type = remove_const_t<_Tp>; +13943: +13943: +13943: +13943: template +13943: constexpr void +13943: _M_construct(_Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Stored_type, _Args...>) +13943: { +13943: static_cast<_Dp*>(this)->_M_payload._M_construct( +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: constexpr void +13943: _M_destruct() noexcept +13943: { static_cast<_Dp*>(this)->_M_payload._M_destroy(); } +13943: +13943: +13943: constexpr void +13943: _M_reset() noexcept +13943: { static_cast<_Dp*>(this)->_M_payload._M_reset(); } +13943: +13943: constexpr bool _M_is_engaged() const noexcept +13943: { return static_cast(this)->_M_payload._M_engaged; } +13943: +13943: +13943: constexpr _Tp& +13943: _M_get() noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(this->_M_is_engaged())) std::__glibcxx_assert_fail(); } while (false); +13943: return static_cast<_Dp*>(this)->_M_payload._M_get(); +13943: } +13943: +13943: constexpr const _Tp& +13943: _M_get() const noexcept +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(this->_M_is_engaged())) std::__glibcxx_assert_fail(); } while (false); +13943: return static_cast(this)->_M_payload._M_get(); +13943: } +13943: }; +13943: # 505 "/usr/include/c++/14/optional" 3 +13943: template, +13943: bool = is_trivially_move_constructible_v<_Tp>> +13943: struct _Optional_base +13943: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +13943: { +13943: +13943: constexpr _Optional_base() = default; +13943: +13943: +13943: template, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, _Args&&... __args) +13943: : _M_payload(in_place, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template&, +13943: _Args...>, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, +13943: initializer_list<_Up> __il, +13943: _Args&&... __args) +13943: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: +13943: constexpr +13943: _Optional_base(const _Optional_base& __other) +13943: : _M_payload(__other._M_payload._M_engaged, __other._M_payload) +13943: { } +13943: +13943: constexpr +13943: _Optional_base(_Optional_base&& __other) +13943: noexcept(is_nothrow_move_constructible_v<_Tp>) +13943: : _M_payload(__other._M_payload._M_engaged, +13943: std::move(__other._M_payload)) +13943: { } +13943: +13943: +13943: _Optional_base& operator=(const _Optional_base&) = default; +13943: _Optional_base& operator=(_Optional_base&&) = default; +13943: +13943: _Optional_payload<_Tp> _M_payload; +13943: }; +13943: +13943: template +13943: struct _Optional_base<_Tp, false, true> +13943: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +13943: { +13943: +13943: constexpr _Optional_base() = default; +13943: +13943: +13943: template, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, _Args&&... __args) +13943: : _M_payload(in_place, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template&, +13943: _Args...>, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, +13943: initializer_list<_Up> __il, +13943: _Args... __args) +13943: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: +13943: constexpr _Optional_base(const _Optional_base& __other) +13943: : _M_payload(__other._M_payload._M_engaged, __other._M_payload) +13943: { } +13943: +13943: constexpr _Optional_base(_Optional_base&& __other) = default; +13943: +13943: +13943: _Optional_base& operator=(const _Optional_base&) = default; +13943: _Optional_base& operator=(_Optional_base&&) = default; +13943: +13943: _Optional_payload<_Tp> _M_payload; +13943: }; +13943: +13943: template +13943: struct _Optional_base<_Tp, true, false> +13943: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +13943: { +13943: +13943: constexpr _Optional_base() = default; +13943: +13943: +13943: template, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, _Args&&... __args) +13943: : _M_payload(in_place, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template&, +13943: _Args...>, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, +13943: initializer_list<_Up> __il, +13943: _Args&&... __args) +13943: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: +13943: constexpr _Optional_base(const _Optional_base& __other) = default; +13943: +13943: constexpr +13943: _Optional_base(_Optional_base&& __other) +13943: noexcept(is_nothrow_move_constructible_v<_Tp>) +13943: : _M_payload(__other._M_payload._M_engaged, +13943: std::move(__other._M_payload)) +13943: { } +13943: +13943: +13943: _Optional_base& operator=(const _Optional_base&) = default; +13943: _Optional_base& operator=(_Optional_base&&) = default; +13943: +13943: _Optional_payload<_Tp> _M_payload; +13943: }; +13943: +13943: template +13943: struct _Optional_base<_Tp, true, true> +13943: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +13943: { +13943: +13943: constexpr _Optional_base() = default; +13943: +13943: +13943: template, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, _Args&&... __args) +13943: : _M_payload(in_place, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template&, +13943: _Args...>, bool> = false> +13943: constexpr explicit +13943: _Optional_base(in_place_t, +13943: initializer_list<_Up> __il, +13943: _Args&&... __args) +13943: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: +13943: constexpr _Optional_base(const _Optional_base& __other) = default; +13943: constexpr _Optional_base(_Optional_base&& __other) = default; +13943: +13943: +13943: _Optional_base& operator=(const _Optional_base&) = default; +13943: _Optional_base& operator=(_Optional_base&&) = default; +13943: +13943: _Optional_payload<_Tp> _M_payload; +13943: }; +13943: +13943: template +13943: class optional; +13943: +13943: template +13943: inline constexpr bool __is_optional_v = false; +13943: template +13943: inline constexpr bool __is_optional_v> = true; +13943: +13943: template +13943: using __converts_from_optional = +13943: __or_&>, +13943: is_constructible<_Tp, optional<_Up>&>, +13943: is_constructible<_Tp, const optional<_Up>&&>, +13943: is_constructible<_Tp, optional<_Up>&&>, +13943: is_convertible&, _Tp>, +13943: is_convertible&, _Tp>, +13943: is_convertible&&, _Tp>, +13943: is_convertible&&, _Tp>>; +13943: +13943: template +13943: using __assigns_from_optional = +13943: __or_&>, +13943: is_assignable<_Tp&, optional<_Up>&>, +13943: is_assignable<_Tp&, const optional<_Up>&&>, +13943: is_assignable<_Tp&, optional<_Up>&&>>; +13943: +13943: +13943: +13943: +13943: template +13943: class optional +13943: : private _Optional_base<_Tp>, +13943: private _Enable_copy_move< +13943: +13943: is_copy_constructible_v<_Tp>, +13943: +13943: __and_v, is_copy_assignable<_Tp>>, +13943: +13943: is_move_constructible_v<_Tp>, +13943: +13943: __and_v, is_move_assignable<_Tp>>, +13943: +13943: optional<_Tp>> +13943: { +13943: static_assert(!is_same_v, nullopt_t>); +13943: static_assert(!is_same_v, in_place_t>); +13943: static_assert(is_object_v<_Tp> && !is_array_v<_Tp>); +13943: +13943: private: +13943: using _Base = _Optional_base<_Tp>; +13943: +13943: +13943: template +13943: using __not_self = __not_>>; +13943: template +13943: using __not_tag = __not_>>; +13943: template +13943: using _Requires = enable_if_t<__and_v<_Cond...>, bool>; +13943: +13943: public: +13943: using value_type = _Tp; +13943: +13943: constexpr optional() noexcept { } +13943: +13943: constexpr optional(nullopt_t) noexcept { } +13943: +13943: +13943: template, __not_tag<_Up>, +13943: is_constructible<_Tp, _Up>, +13943: is_convertible<_Up, _Tp>> = true> +13943: constexpr +13943: optional(_Up&& __t) +13943: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +13943: : _Base(std::in_place, std::forward<_Up>(__t)) { } +13943: +13943: template, __not_tag<_Up>, +13943: is_constructible<_Tp, _Up>, +13943: __not_>> = false> +13943: explicit constexpr +13943: optional(_Up&& __t) +13943: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +13943: : _Base(std::in_place, std::forward<_Up>(__t)) { } +13943: +13943: template>, +13943: is_constructible<_Tp, const _Up&>, +13943: is_convertible, +13943: __not_<__converts_from_optional<_Tp, _Up>>> = true> +13943: constexpr +13943: optional(const optional<_Up>& __t) +13943: noexcept(is_nothrow_constructible_v<_Tp, const _Up&>) +13943: { +13943: if (__t) +13943: emplace(*__t); +13943: } +13943: +13943: template>, +13943: is_constructible<_Tp, const _Up&>, +13943: __not_>, +13943: __not_<__converts_from_optional<_Tp, _Up>>> = false> +13943: explicit constexpr +13943: optional(const optional<_Up>& __t) +13943: noexcept(is_nothrow_constructible_v<_Tp, const _Up&>) +13943: { +13943: if (__t) +13943: emplace(*__t); +13943: } +13943: +13943: template>, +13943: is_constructible<_Tp, _Up>, +13943: is_convertible<_Up, _Tp>, +13943: __not_<__converts_from_optional<_Tp, _Up>>> = true> +13943: constexpr +13943: optional(optional<_Up>&& __t) +13943: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +13943: { +13943: if (__t) +13943: emplace(std::move(*__t)); +13943: } +13943: +13943: template>, +13943: is_constructible<_Tp, _Up>, +13943: __not_>, +13943: __not_<__converts_from_optional<_Tp, _Up>>> = false> +13943: explicit constexpr +13943: optional(optional<_Up>&& __t) +13943: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +13943: { +13943: if (__t) +13943: emplace(std::move(*__t)); +13943: } +13943: +13943: template> = false> +13943: explicit constexpr +13943: optional(in_place_t, _Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Tp, _Args...>) +13943: : _Base(std::in_place, std::forward<_Args>(__args)...) { } +13943: +13943: template&, +13943: _Args...>> = false> +13943: explicit constexpr +13943: optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, +13943: _Args...>) +13943: : _Base(std::in_place, __il, std::forward<_Args>(__args)...) { } +13943: +13943: +13943: +13943: optional& +13943: operator=(nullopt_t) noexcept +13943: { +13943: this->_M_reset(); +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: enable_if_t<__and_v<__not_self<_Up>, +13943: __not_<__and_, +13943: is_same<_Tp, decay_t<_Up>>>>, +13943: is_constructible<_Tp, _Up>, +13943: is_assignable<_Tp&, _Up>>, +13943: optional&> +13943: operator=(_Up&& __u) +13943: noexcept(__and_v, +13943: is_nothrow_assignable<_Tp&, _Up>>) +13943: { +13943: if (this->_M_is_engaged()) +13943: this->_M_get() = std::forward<_Up>(__u); +13943: else +13943: this->_M_construct(std::forward<_Up>(__u)); +13943: +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: enable_if_t<__and_v<__not_>, +13943: is_constructible<_Tp, const _Up&>, +13943: is_assignable<_Tp&, const _Up&>, +13943: __not_<__converts_from_optional<_Tp, _Up>>, +13943: __not_<__assigns_from_optional<_Tp, _Up>>>, +13943: optional&> +13943: operator=(const optional<_Up>& __u) +13943: noexcept(__and_v, +13943: is_nothrow_assignable<_Tp&, const _Up&>>) +13943: { +13943: if (__u) +13943: { +13943: if (this->_M_is_engaged()) +13943: this->_M_get() = *__u; +13943: else +13943: this->_M_construct(*__u); +13943: } +13943: else +13943: { +13943: this->_M_reset(); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: enable_if_t<__and_v<__not_>, +13943: is_constructible<_Tp, _Up>, +13943: is_assignable<_Tp&, _Up>, +13943: __not_<__converts_from_optional<_Tp, _Up>>, +13943: __not_<__assigns_from_optional<_Tp, _Up>>>, +13943: optional&> +13943: operator=(optional<_Up>&& __u) +13943: noexcept(__and_v, +13943: is_nothrow_assignable<_Tp&, _Up>>) +13943: { +13943: if (__u) +13943: { +13943: if (this->_M_is_engaged()) +13943: this->_M_get() = std::move(*__u); +13943: else +13943: this->_M_construct(std::move(*__u)); +13943: } +13943: else +13943: { +13943: this->_M_reset(); +13943: } +13943: +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: enable_if_t, _Tp&> +13943: emplace(_Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Tp, _Args...>) +13943: { +13943: this->_M_reset(); +13943: this->_M_construct(std::forward<_Args>(__args)...); +13943: return this->_M_get(); +13943: } +13943: +13943: template +13943: +13943: enable_if_t&, _Args...>, +13943: _Tp&> +13943: emplace(initializer_list<_Up> __il, _Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, +13943: _Args...>) +13943: { +13943: this->_M_reset(); +13943: this->_M_construct(__il, std::forward<_Args>(__args)...); +13943: return this->_M_get(); +13943: } +13943: +13943: +13943: +13943: +13943: void +13943: swap(optional& __other) +13943: noexcept(is_nothrow_move_constructible_v<_Tp> +13943: && is_nothrow_swappable_v<_Tp>) +13943: { +13943: using std::swap; +13943: +13943: if (this->_M_is_engaged() && __other._M_is_engaged()) +13943: swap(this->_M_get(), __other._M_get()); +13943: else if (this->_M_is_engaged()) +13943: { +13943: __other._M_construct(std::move(this->_M_get())); +13943: this->_M_destruct(); +13943: } +13943: else if (__other._M_is_engaged()) +13943: { +13943: this->_M_construct(std::move(__other._M_get())); +13943: __other._M_destruct(); +13943: } +13943: } +13943: +13943: +13943: constexpr const _Tp* +13943: operator->() const noexcept +13943: { return std::__addressof(this->_M_get()); } +13943: +13943: constexpr _Tp* +13943: operator->() noexcept +13943: { return std::__addressof(this->_M_get()); } +13943: +13943: constexpr const _Tp& +13943: operator*() const& noexcept +13943: { return this->_M_get(); } +13943: +13943: constexpr _Tp& +13943: operator*()& noexcept +13943: { return this->_M_get(); } +13943: +13943: constexpr _Tp&& +13943: operator*()&& noexcept +13943: { return std::move(this->_M_get()); } +13943: +13943: constexpr const _Tp&& +13943: operator*() const&& noexcept +13943: { return std::move(this->_M_get()); } +13943: +13943: constexpr explicit operator bool() const noexcept +13943: { return this->_M_is_engaged(); } +13943: +13943: constexpr bool has_value() const noexcept +13943: { return this->_M_is_engaged(); } +13943: +13943: constexpr const _Tp& +13943: value() const& +13943: { +13943: if (this->_M_is_engaged()) +13943: return this->_M_get(); +13943: __throw_bad_optional_access(); +13943: } +13943: +13943: constexpr _Tp& +13943: value()& +13943: { +13943: if (this->_M_is_engaged()) +13943: return this->_M_get(); +13943: __throw_bad_optional_access(); +13943: } +13943: +13943: constexpr _Tp&& +13943: value()&& +13943: { +13943: if (this->_M_is_engaged()) +13943: return std::move(this->_M_get()); +13943: __throw_bad_optional_access(); +13943: } +13943: +13943: constexpr const _Tp&& +13943: value() const&& +13943: { +13943: if (this->_M_is_engaged()) +13943: return std::move(this->_M_get()); +13943: __throw_bad_optional_access(); +13943: } +13943: +13943: template +13943: constexpr _Tp +13943: value_or(_Up&& __u) const& +13943: { +13943: static_assert(is_copy_constructible_v<_Tp>); +13943: static_assert(is_convertible_v<_Up&&, _Tp>); +13943: +13943: if (this->_M_is_engaged()) +13943: return this->_M_get(); +13943: else +13943: return static_cast<_Tp>(std::forward<_Up>(__u)); +13943: } +13943: +13943: template +13943: constexpr _Tp +13943: value_or(_Up&& __u) && +13943: { +13943: static_assert(is_move_constructible_v<_Tp>); +13943: static_assert(is_convertible_v<_Up&&, _Tp>); +13943: +13943: if (this->_M_is_engaged()) +13943: return std::move(this->_M_get()); +13943: else +13943: return static_cast<_Tp>(std::forward<_Up>(__u)); +13943: } +13943: # 1180 "/usr/include/c++/14/optional" 3 +13943: void reset() noexcept { this->_M_reset(); } +13943: +13943: private: +13943: # 1193 "/usr/include/c++/14/optional" 3 +13943: }; +13943: +13943: template +13943: using __optional_relop_t = +13943: enable_if_t::value, bool>; +13943: +13943: template +13943: using __optional_eq_t = __optional_relop_t< +13943: decltype(std::declval() == std::declval()) +13943: >; +13943: +13943: template +13943: using __optional_ne_t = __optional_relop_t< +13943: decltype(std::declval() != std::declval()) +13943: >; +13943: +13943: template +13943: using __optional_lt_t = __optional_relop_t< +13943: decltype(std::declval() < std::declval()) +13943: >; +13943: +13943: template +13943: using __optional_gt_t = __optional_relop_t< +13943: decltype(std::declval() > std::declval()) +13943: >; +13943: +13943: template +13943: using __optional_le_t = __optional_relop_t< +13943: decltype(std::declval() <= std::declval()) +13943: >; +13943: +13943: template +13943: using __optional_ge_t = __optional_relop_t< +13943: decltype(std::declval() >= std::declval()) +13943: >; +13943: +13943: +13943: template +13943: constexpr auto +13943: operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +13943: -> __optional_eq_t<_Tp, _Up> +13943: { +13943: return static_cast(__lhs) == static_cast(__rhs) +13943: && (!__lhs || *__lhs == *__rhs); +13943: } +13943: +13943: template +13943: constexpr auto +13943: operator!=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +13943: -> __optional_ne_t<_Tp, _Up> +13943: { +13943: return static_cast(__lhs) != static_cast(__rhs) +13943: || (static_cast(__lhs) && *__lhs != *__rhs); +13943: } +13943: +13943: template +13943: constexpr auto +13943: operator<(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +13943: -> __optional_lt_t<_Tp, _Up> +13943: { +13943: return static_cast(__rhs) && (!__lhs || *__lhs < *__rhs); +13943: } +13943: +13943: template +13943: constexpr auto +13943: operator>(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +13943: -> __optional_gt_t<_Tp, _Up> +13943: { +13943: return static_cast(__lhs) && (!__rhs || *__lhs > *__rhs); +13943: } +13943: +13943: template +13943: constexpr auto +13943: operator<=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +13943: -> __optional_le_t<_Tp, _Up> +13943: { +13943: return !__lhs || (static_cast(__rhs) && *__lhs <= *__rhs); +13943: } +13943: +13943: template +13943: constexpr auto +13943: operator>=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +13943: -> __optional_ge_t<_Tp, _Up> +13943: { +13943: return !__rhs || (static_cast(__lhs) && *__lhs >= *__rhs); +13943: } +13943: # 1290 "/usr/include/c++/14/optional" 3 +13943: template +13943: constexpr bool +13943: operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept +13943: { return !__lhs; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr bool +13943: operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept +13943: { return !__rhs; } +13943: +13943: template +13943: constexpr bool +13943: operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept +13943: { return static_cast(__lhs); } +13943: +13943: template +13943: constexpr bool +13943: operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept +13943: { return static_cast(__rhs); } +13943: +13943: template +13943: constexpr bool +13943: operator<(const optional<_Tp>& , nullopt_t) noexcept +13943: { return false; } +13943: +13943: template +13943: constexpr bool +13943: operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept +13943: { return static_cast(__rhs); } +13943: +13943: template +13943: constexpr bool +13943: operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept +13943: { return static_cast(__lhs); } +13943: +13943: template +13943: constexpr bool +13943: operator>(nullopt_t, const optional<_Tp>& ) noexcept +13943: { return false; } +13943: +13943: template +13943: constexpr bool +13943: operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept +13943: { return !__lhs; } +13943: +13943: template +13943: constexpr bool +13943: operator<=(nullopt_t, const optional<_Tp>& ) noexcept +13943: { return true; } +13943: +13943: template +13943: constexpr bool +13943: operator>=(const optional<_Tp>& , nullopt_t) noexcept +13943: { return true; } +13943: +13943: template +13943: constexpr bool +13943: operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept +13943: { return !__rhs; } +13943: +13943: +13943: +13943: template +13943: constexpr auto +13943: operator==(const optional<_Tp>& __lhs, const _Up& __rhs) +13943: -> __optional_eq_t<_Tp, _Up> +13943: { return __lhs && *__lhs == __rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator==(const _Up& __lhs, const optional<_Tp>& __rhs) +13943: -> __optional_eq_t<_Up, _Tp> +13943: { return __rhs && __lhs == *__rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator!=(const optional<_Tp>& __lhs, const _Up& __rhs) +13943: -> __optional_ne_t<_Tp, _Up> +13943: { return !__lhs || *__lhs != __rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator!=(const _Up& __lhs, const optional<_Tp>& __rhs) +13943: -> __optional_ne_t<_Up, _Tp> +13943: { return !__rhs || __lhs != *__rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator<(const optional<_Tp>& __lhs, const _Up& __rhs) +13943: -> __optional_lt_t<_Tp, _Up> +13943: { return !__lhs || *__lhs < __rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator<(const _Up& __lhs, const optional<_Tp>& __rhs) +13943: -> __optional_lt_t<_Up, _Tp> +13943: { return __rhs && __lhs < *__rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator>(const optional<_Tp>& __lhs, const _Up& __rhs) +13943: -> __optional_gt_t<_Tp, _Up> +13943: { return __lhs && *__lhs > __rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator>(const _Up& __lhs, const optional<_Tp>& __rhs) +13943: -> __optional_gt_t<_Up, _Tp> +13943: { return !__rhs || __lhs > *__rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator<=(const optional<_Tp>& __lhs, const _Up& __rhs) +13943: -> __optional_le_t<_Tp, _Up> +13943: { return !__lhs || *__lhs <= __rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator<=(const _Up& __lhs, const optional<_Tp>& __rhs) +13943: -> __optional_le_t<_Up, _Tp> +13943: { return __rhs && __lhs <= *__rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator>=(const optional<_Tp>& __lhs, const _Up& __rhs) +13943: -> __optional_ge_t<_Tp, _Up> +13943: { return __lhs && *__lhs >= __rhs; } +13943: +13943: template +13943: constexpr auto +13943: operator>=(const _Up& __lhs, const optional<_Tp>& __rhs) +13943: -> __optional_ge_t<_Up, _Tp> +13943: { return !__rhs || __lhs >= *__rhs; } +13943: # 1443 "/usr/include/c++/14/optional" 3 +13943: template +13943: +13943: inline enable_if_t && is_swappable_v<_Tp>> +13943: swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs) +13943: noexcept(noexcept(__lhs.swap(__rhs))) +13943: { __lhs.swap(__rhs); } +13943: +13943: template +13943: enable_if_t && is_swappable_v<_Tp>)> +13943: swap(optional<_Tp>&, optional<_Tp>&) = delete; +13943: +13943: template +13943: constexpr +13943: enable_if_t, _Tp>, +13943: optional>> +13943: make_optional(_Tp&& __t) +13943: noexcept(is_nothrow_constructible_v>, _Tp>) +13943: { return optional>{ std::forward<_Tp>(__t) }; } +13943: +13943: template +13943: constexpr +13943: enable_if_t, +13943: optional<_Tp>> +13943: make_optional(_Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Tp, _Args...>) +13943: { return optional<_Tp>{ in_place, std::forward<_Args>(__args)... }; } +13943: +13943: template +13943: constexpr +13943: enable_if_t&, _Args...>, +13943: optional<_Tp>> +13943: make_optional(initializer_list<_Up> __il, _Args&&... __args) +13943: noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>) +13943: { return optional<_Tp>{ in_place, __il, std::forward<_Args>(__args)... }; } +13943: +13943: +13943: +13943: template, +13943: bool = __poison_hash<_Up>::__enable_hash_call> +13943: struct __optional_hash_call_base +13943: { +13943: size_t +13943: operator()(const optional<_Tp>& __t) const +13943: noexcept(noexcept(hash<_Up>{}(*__t))) +13943: { +13943: +13943: +13943: constexpr size_t __magic_disengaged_hash = static_cast(-3333); +13943: return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash; +13943: } +13943: }; +13943: +13943: template +13943: struct __optional_hash_call_base<_Tp, _Up, false> {}; +13943: +13943: template +13943: struct hash> +13943: : private __poison_hash>, +13943: public __optional_hash_call_base<_Tp> +13943: { +13943: using result_type [[__deprecated__]] = size_t; +13943: using argument_type [[__deprecated__]] = optional<_Tp>; +13943: }; +13943: +13943: template +13943: struct __is_fast_hash>> : __is_fast_hash> +13943: { }; +13943: +13943: +13943: +13943: +13943: template optional(_Tp) -> optional<_Tp>; +13943: +13943: +13943: +13943: } +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +13943: +13943: # 1 "/usr/include/c++/14/utility" 1 3 +13943: # 58 "/usr/include/c++/14/utility" 3 +13943: +13943: # 59 "/usr/include/c++/14/utility" 3 +13943: # 68 "/usr/include/c++/14/utility" 3 +13943: # 1 "/usr/include/c++/14/bits/stl_relops.h" 1 3 +13943: # 62 "/usr/include/c++/14/bits/stl_relops.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: namespace rel_ops +13943: { +13943: # 86 "/usr/include/c++/14/bits/stl_relops.h" 3 +13943: template +13943: inline bool +13943: operator!=(const _Tp& __x, const _Tp& __y) +13943: { return !(__x == __y); } +13943: # 99 "/usr/include/c++/14/bits/stl_relops.h" 3 +13943: template +13943: inline bool +13943: operator>(const _Tp& __x, const _Tp& __y) +13943: { return __y < __x; } +13943: # 112 "/usr/include/c++/14/bits/stl_relops.h" 3 +13943: template +13943: inline bool +13943: operator<=(const _Tp& __x, const _Tp& __y) +13943: { return !(__y < __x); } +13943: # 125 "/usr/include/c++/14/bits/stl_relops.h" 3 +13943: template +13943: inline bool +13943: operator>=(const _Tp& __x, const _Tp& __y) +13943: { return !(__x < __y); } +13943: } +13943: +13943: +13943: } +13943: # 69 "/usr/include/c++/14/utility" 2 3 +13943: # 96 "/usr/include/c++/14/utility" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 97 "/usr/include/c++/14/utility" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: +13943: inline _Tp +13943: exchange(_Tp& __obj, _Up&& __new_val) +13943: noexcept(__and_, +13943: is_nothrow_assignable<_Tp&, _Up>>::value) +13943: { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } +13943: +13943: +13943: +13943: template +13943: [[nodiscard]] +13943: constexpr add_const_t<_Tp>& +13943: as_const(_Tp& __t) noexcept +13943: { return __t; } +13943: +13943: template +13943: void as_const(const _Tp&&) = delete; +13943: # 230 "/usr/include/c++/14/utility" 3 +13943: +13943: } +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rocksdb_namespace.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" 1 +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" +13943: +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 1 +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 66 "/usr/include/assert.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: extern void __assert_fail (const char *__assertion, const char *__file, +13943: unsigned int __line, const char *__function) +13943: noexcept (true) __attribute__ ((__noreturn__)); +13943: +13943: +13943: extern void __assert_perror_fail (int __errnum, const char *__file, +13943: unsigned int __line, const char *__function) +13943: noexcept (true) __attribute__ ((__noreturn__)); +13943: +13943: +13943: +13943: +13943: extern void __assert (const char *__assertion, const char *__file, int __line) +13943: noexcept (true) __attribute__ ((__noreturn__)); +13943: +13943: +13943: } +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +13943: +13943: # 1 "/usr/include/c++/14/cstdio" 1 3 +13943: # 39 "/usr/include/c++/14/cstdio" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdio" 3 +13943: # 24 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +13943: # 1 "/usr/include/c++/14/cstring" 1 3 +13943: # 39 "/usr/include/c++/14/cstring" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstring" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 43 "/usr/include/c++/14/cstring" 2 3 +13943: # 1 "/usr/include/string.h" 1 3 4 +13943: # 26 "/usr/include/string.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +13943: # 27 "/usr/include/string.h" 2 3 4 +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 34 "/usr/include/string.h" 2 3 4 +13943: # 43 "/usr/include/string.h" 3 4 +13943: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, +13943: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern void *memmove (void *__dest, const void *__src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, +13943: int __c, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); +13943: +13943: +13943: +13943: +13943: extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int memcmp (const void *__s1, const void *__s2, size_t __n) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: # 80 "/usr/include/string.h" 3 4 +13943: extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern "C++" +13943: { +13943: extern void *memchr (void *__s, int __c, size_t __n) +13943: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: extern const void *memchr (const void *__s, int __c, size_t __n) +13943: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * +13943: memchr (void *__s, int __c, size_t __n) noexcept (true) +13943: { +13943: return __builtin_memchr (__s, __c, __n); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * +13943: memchr (const void *__s, int __c, size_t __n) noexcept (true) +13943: { +13943: return __builtin_memchr (__s, __c, __n); +13943: } +13943: +13943: } +13943: # 115 "/usr/include/string.h" 3 4 +13943: extern "C++" void *rawmemchr (void *__s, int __c) +13943: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: extern "C++" const void *rawmemchr (const void *__s, int __c) +13943: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" void *memrchr (void *__s, int __c, size_t __n) +13943: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__access__ (__read_only__, 1, 3))); +13943: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) +13943: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__access__ (__read_only__, 1, 3))); +13943: # 141 "/usr/include/string.h" 3 4 +13943: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern char *strncpy (char *__restrict __dest, +13943: const char *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern char *strcat (char *__restrict __dest, const char *__restrict __src) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern char *strncat (char *__restrict __dest, const char *__restrict __src, +13943: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int strcmp (const char *__s1, const char *__s2) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern int strncmp (const char *__s1, const char *__s2, size_t __n) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int strcoll (const char *__s1, const char *__s2) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: extern size_t strxfrm (char *__restrict __dest, +13943: const char *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); +13943: +13943: +13943: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, +13943: locale_t __l) noexcept (true) __attribute__ ((__nonnull__ (2, 4))) +13943: __attribute__ ((__access__ (__write_only__, 1, 3))); +13943: +13943: +13943: +13943: +13943: +13943: extern char *strdup (const char *__s) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *strndup (const char *__string, size_t __n) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +13943: # 224 "/usr/include/string.h" 3 4 +13943: extern "C++" +13943: { +13943: extern char *strchr (char *__s, int __c) +13943: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: extern const char *strchr (const char *__s, int __c) +13943: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +13943: strchr (char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_strchr (__s, __c); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +13943: strchr (const char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_strchr (__s, __c); +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" +13943: { +13943: extern char *strrchr (char *__s, int __c) +13943: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: extern const char *strrchr (const char *__s, int __c) +13943: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +13943: strrchr (char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_strrchr (__s, __c); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +13943: strrchr (const char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_strrchr (__s, __c); +13943: } +13943: +13943: } +13943: # 281 "/usr/include/string.h" 3 4 +13943: extern "C++" char *strchrnul (char *__s, int __c) +13943: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: extern "C++" const char *strchrnul (const char *__s, int __c) +13943: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: # 293 "/usr/include/string.h" 3 4 +13943: extern size_t strcspn (const char *__s, const char *__reject) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern size_t strspn (const char *__s, const char *__accept) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern "C++" +13943: { +13943: extern char *strpbrk (char *__s, const char *__accept) +13943: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: extern const char *strpbrk (const char *__s, const char *__accept) +13943: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +13943: strpbrk (char *__s, const char *__accept) noexcept (true) +13943: { +13943: return __builtin_strpbrk (__s, __accept); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +13943: strpbrk (const char *__s, const char *__accept) noexcept (true) +13943: { +13943: return __builtin_strpbrk (__s, __accept); +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" +13943: { +13943: extern char *strstr (char *__haystack, const char *__needle) +13943: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: extern const char *strstr (const char *__haystack, const char *__needle) +13943: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +13943: strstr (char *__haystack, const char *__needle) noexcept (true) +13943: { +13943: return __builtin_strstr (__haystack, __needle); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +13943: strstr (const char *__haystack, const char *__needle) noexcept (true) +13943: { +13943: return __builtin_strstr (__haystack, __needle); +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *strtok (char *__restrict __s, const char *__restrict __delim) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern char *__strtok_r (char *__restrict __s, +13943: const char *__restrict __delim, +13943: char **__restrict __save_ptr) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +13943: +13943: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, +13943: char **__restrict __save_ptr) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" char *strcasestr (char *__haystack, const char *__needle) +13943: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: extern "C++" const char *strcasestr (const char *__haystack, +13943: const char *__needle) +13943: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: # 389 "/usr/include/string.h" 3 4 +13943: extern void *memmem (const void *__haystack, size_t __haystacklen, +13943: const void *__needle, size_t __needlelen) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) +13943: __attribute__ ((__access__ (__read_only__, 1, 2))) +13943: __attribute__ ((__access__ (__read_only__, 3, 4))); +13943: +13943: +13943: +13943: extern void *__mempcpy (void *__restrict __dest, +13943: const void *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: extern void *mempcpy (void *__restrict __dest, +13943: const void *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern size_t strlen (const char *__s) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern size_t strnlen (const char *__string, size_t __maxlen) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern char *strerror (int __errnum) noexcept (true); +13943: # 444 "/usr/include/string.h" 3 4 +13943: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: +13943: +13943: +13943: +13943: extern const char *strerrordesc_np (int __err) noexcept (true); +13943: +13943: extern const char *strerrorname_np (int __err) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern char *strerror_l (int __errnum, locale_t __l) noexcept (true); +13943: +13943: +13943: +13943: # 1 "/usr/include/strings.h" 1 3 4 +13943: # 23 "/usr/include/strings.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 24 "/usr/include/strings.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: extern int bcmp (const void *__s1, const void *__s2, size_t __n) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern void bcopy (const void *__src, void *__dest, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern void bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern "C++" +13943: { +13943: extern char *index (char *__s, int __c) +13943: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: extern const char *index (const char *__s, int __c) +13943: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +13943: index (char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_index (__s, __c); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +13943: index (const char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_index (__s, __c); +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" +13943: { +13943: extern char *rindex (char *__s, int __c) +13943: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: extern const char *rindex (const char *__s, int __c) +13943: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +13943: rindex (char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_rindex (__s, __c); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +13943: rindex (const char *__s, int __c) noexcept (true) +13943: { +13943: return __builtin_rindex (__s, __c); +13943: } +13943: +13943: } +13943: # 104 "/usr/include/strings.h" 3 4 +13943: extern int ffs (int __i) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int ffsl (long int __l) noexcept (true) __attribute__ ((__const__)); +13943: __extension__ extern int ffsll (long long int __ll) +13943: noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern int strcasecmp (const char *__s1, const char *__s2) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); +13943: +13943: +13943: +13943: extern int strncasecmp_l (const char *__s1, const char *__s2, +13943: size_t __n, locale_t __loc) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 1 3 4 +13943: # 22 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +13943: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) noexcept (true) +13943: { +13943: (void) __builtin___memmove_chk (__dest, __src, __len, +13943: __builtin_object_size (__dest, 0)); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +13943: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) noexcept (true) +13943: { +13943: (void) __builtin___memset_chk (__dest, '\0', __len, +13943: __builtin_object_size (__dest, 0)); +13943: } +13943: # 145 "/usr/include/strings.h" 2 3 4 +13943: # 463 "/usr/include/string.h" 2 3 4 +13943: +13943: +13943: +13943: extern void explicit_bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: +13943: +13943: +13943: extern char *strsep (char **__restrict __stringp, +13943: const char *__restrict __delim) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern char *strsignal (int __sig) noexcept (true); +13943: +13943: +13943: +13943: extern const char *sigabbrev_np (int __sig) noexcept (true); +13943: +13943: +13943: extern const char *sigdescr_np (int __sig) noexcept (true); +13943: +13943: +13943: +13943: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern char *__stpncpy (char *__restrict __dest, +13943: const char *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: extern char *stpncpy (char *__restrict __dest, +13943: const char *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern size_t strlcpy (char *__restrict __dest, +13943: const char *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); +13943: +13943: +13943: +13943: extern size_t strlcat (char *__restrict __dest, +13943: const char *__restrict __src, size_t __n) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); +13943: +13943: +13943: +13943: +13943: extern int strverscmp (const char *__s1, const char *__s2) +13943: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: extern char *strfry (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern void *memfrob (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__access__ (__read_write__, 1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C++" char *basename (char *__filename) +13943: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); +13943: extern "C++" const char *basename (const char *__filename) +13943: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); +13943: # 548 "/usr/include/string.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 1 3 4 +13943: # 25 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +13943: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) +13943: +13943: { +13943: return __builtin___memcpy_chk (__dest, __src, __len, +13943: __builtin_object_size (__dest, 0)); +13943: } +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +13943: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) noexcept (true) +13943: { +13943: return __builtin___memmove_chk (__dest, __src, __len, +13943: __builtin_object_size (__dest, 0)); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +13943: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) +13943: +13943: { +13943: return __builtin___mempcpy_chk (__dest, __src, __len, +13943: __builtin_object_size (__dest, 0)); +13943: } +13943: # 56 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +13943: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) noexcept (true) +13943: { +13943: return __builtin___memset_chk (__dest, __ch, __len, +13943: __builtin_object_size (__dest, 0)); +13943: } +13943: +13943: +13943: +13943: +13943: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +13943: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) noexcept (true) +13943: { +13943: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +13943: __attribute__ ((__leaf__)) strcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) +13943: +13943: +13943: { +13943: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +13943: __attribute__ ((__leaf__)) stpcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) +13943: +13943: +13943: { +13943: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +13943: __attribute__ ((__leaf__)) strncpy (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) +13943: +13943: +13943: { +13943: return __builtin___strncpy_chk (__dest, __src, __len, +13943: __builtin_object_size (__dest, 2 > 1)); +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +13943: __attribute__ ((__leaf__)) stpncpy (char * __dest, const char *__src, size_t __n) noexcept (true) +13943: +13943: +13943: { +13943: return __builtin___stpncpy_chk (__dest, __src, __n, +13943: __builtin_object_size (__dest, 2 > 1)); +13943: } +13943: # 135 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +13943: __attribute__ ((__leaf__)) strcat (char * __restrict __dest, const char *__restrict __src) noexcept (true) +13943: +13943: +13943: { +13943: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +13943: __attribute__ ((__leaf__)) strncat (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) +13943: +13943: +13943: { +13943: return __builtin___strncat_chk (__dest, __src, __len, +13943: __builtin_object_size (__dest, 2 > 1)); +13943: } +13943: +13943: +13943: extern size_t __strlcpy_chk (char *__dest, const char *__src, size_t __n, +13943: size_t __destlen) noexcept (true); +13943: extern size_t __strlcpy_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcpy") +13943: +13943: ; +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) strlcpy (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) +13943: +13943: +13943: { +13943: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +13943: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1)) +13943: || __n > __builtin_object_size (__dest, 2 > 1))) +13943: return __strlcpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); +13943: return __strlcpy_alias (__dest, __src, __n); +13943: } +13943: +13943: extern size_t __strlcat_chk (char *__dest, const char *__src, size_t __n, +13943: size_t __destlen) noexcept (true); +13943: extern size_t __strlcat_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcat") +13943: +13943: ; +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) strlcat (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) +13943: +13943: { +13943: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +13943: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1)) +13943: || __n > __builtin_object_size (__dest, 2 > 1))) +13943: return __strlcat_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); +13943: return __strlcat_alias (__dest, __src, __n); +13943: } +13943: # 549 "/usr/include/string.h" 2 3 4 +13943: +13943: +13943: +13943: } +13943: # 44 "/usr/include/c++/14/cstring" 2 3 +13943: # 72 "/usr/include/c++/14/cstring" 3 +13943: extern "C++" +13943: { +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: using ::memchr; +13943: using ::memcmp; +13943: using ::memcpy; +13943: using ::memmove; +13943: using ::memset; +13943: using ::strcat; +13943: using ::strcmp; +13943: using ::strcoll; +13943: using ::strcpy; +13943: using ::strcspn; +13943: using ::strerror; +13943: using ::strlen; +13943: using ::strncat; +13943: using ::strncmp; +13943: using ::strncpy; +13943: using ::strspn; +13943: +13943: using ::strtok; +13943: +13943: using ::strxfrm; +13943: using ::strchr; +13943: using ::strpbrk; +13943: using ::strrchr; +13943: using ::strstr; +13943: # 125 "/usr/include/c++/14/cstring" 3 +13943: +13943: } +13943: } +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" +13943: +13943: +13943: +13943: +13943: +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" +13943: namespace rocksdb { +13943: +13943: class Cleanable { +13943: public: +13943: Cleanable(); +13943: +13943: Cleanable(Cleanable&) = delete; +13943: Cleanable& operator=(Cleanable&) = delete; +13943: +13943: +13943: ~Cleanable(); +13943: +13943: +13943: Cleanable(Cleanable&&) noexcept; +13943: Cleanable& operator=(Cleanable&&) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: +13943: using CleanupFunction = void (*)(void* arg1, void* arg2); +13943: +13943: +13943: void RegisterCleanup(CleanupFunction function, void* arg1, void* arg2); +13943: +13943: +13943: +13943: void DelegateCleanupsTo(Cleanable* other); +13943: +13943: +13943: inline void Reset() { +13943: DoCleanup(); +13943: cleanup_.function = nullptr; +13943: cleanup_.next = nullptr; +13943: } +13943: +13943: inline bool HasCleanups() { return cleanup_.function != nullptr; } +13943: +13943: protected: +13943: struct Cleanup { +13943: CleanupFunction function; +13943: void* arg1; +13943: void* arg2; +13943: Cleanup* next; +13943: }; +13943: Cleanup cleanup_; +13943: +13943: void RegisterCleanup(Cleanup* c); +13943: +13943: private: +13943: +13943: +13943: +13943: inline void DoCleanup() { +13943: if (cleanup_.function != nullptr) { +13943: (*cleanup_.function)(cleanup_.arg1, cleanup_.arg2); +13943: for (Cleanup* c = cleanup_.next; c != nullptr;) { +13943: (*c->function)(c->arg1, c->arg2); +13943: Cleanup* next = c->next; +13943: delete c; +13943: c = next; +13943: } +13943: } +13943: } +13943: }; +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" +13943: class SharedCleanablePtr { +13943: public: +13943: +13943: SharedCleanablePtr() {} +13943: +13943: SharedCleanablePtr(const SharedCleanablePtr& from); +13943: SharedCleanablePtr(SharedCleanablePtr&& from) noexcept; +13943: SharedCleanablePtr& operator=(const SharedCleanablePtr& from); +13943: SharedCleanablePtr& operator=(SharedCleanablePtr&& from) noexcept; +13943: +13943: ~SharedCleanablePtr(); +13943: +13943: +13943: void Allocate(); +13943: +13943: void Reset(); +13943: +13943: Cleanable& operator*(); +13943: Cleanable* operator->(); +13943: +13943: Cleanable* get(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: void RegisterCopyWith(Cleanable* target); +13943: +13943: +13943: +13943: +13943: void MoveAsCleanupTo(Cleanable* target); +13943: +13943: private: +13943: struct Impl; +13943: Impl* ptr_ = nullptr; +13943: }; +13943: +13943: } +13943: # 29 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class Slice { +13943: public: +13943: +13943: Slice() : data_(""), size_(0) {} +13943: +13943: +13943: Slice(const char* d, size_t n) : data_(d), size_(n) {} +13943: +13943: +13943: +13943: Slice(const std::string& s) : data_(s.data()), size_(s.size()) {} +13943: +13943: +13943: +13943: Slice(const std::string_view& sv) : data_(sv.data()), size_(sv.size()) {} +13943: +13943: +13943: +13943: Slice(const char* s) : data_(s) { size_ = (s == nullptr) ? 0 : strlen(s); } +13943: +13943: +13943: +13943: Slice(const struct SliceParts& parts, std::string* buf); +13943: +13943: +13943: const char* data() const { return data_; } +13943: +13943: +13943: size_t size() const { return size_; } +13943: +13943: +13943: bool empty() const { return size_ == 0; } +13943: +13943: +13943: +13943: char operator[](size_t n) const { +13943: +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: n < size() +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "n < size()" +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: return data_[n]; +13943: } +13943: +13943: +13943: void clear() { +13943: data_ = ""; +13943: size_ = 0; +13943: } +13943: +13943: +13943: void remove_prefix(size_t n) { +13943: +13943: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: n <= size() +13943: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "n <= size()" +13943: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: data_ += n; +13943: size_ -= n; +13943: } +13943: +13943: void remove_suffix(size_t n) { +13943: +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: n <= size() +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "n <= size()" +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: size_ -= n; +13943: } +13943: +13943: +13943: +13943: std::string ToString(bool hex = false) const; +13943: +13943: +13943: std::string_view ToStringView() const { +13943: return std::string_view(data_, size_); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool DecodeHex(std::string* result) const; +13943: +13943: +13943: +13943: +13943: +13943: int compare(const Slice& b) const; +13943: +13943: +13943: bool starts_with(const Slice& x) const { +13943: return ((size_ >= x.size_) && (memcmp(data_, x.data_, x.size_) == 0)); +13943: } +13943: +13943: bool ends_with(const Slice& x) const { +13943: return ((size_ >= x.size_) && +13943: (memcmp(data_ + size_ - x.size_, x.data_, x.size_) == 0)); +13943: } +13943: +13943: +13943: size_t difference_offset(const Slice& b) const; +13943: +13943: +13943: const char* data_; +13943: size_t size_; +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class PinnableSlice : public Slice, public Cleanable { +13943: public: +13943: PinnableSlice() { buf_ = &self_space_; } +13943: explicit PinnableSlice(std::string* buf) { buf_ = buf; } +13943: +13943: PinnableSlice(PinnableSlice&& other); +13943: PinnableSlice& operator=(PinnableSlice&& other); +13943: +13943: +13943: PinnableSlice(PinnableSlice&) = delete; +13943: PinnableSlice& operator=(PinnableSlice&) = delete; +13943: +13943: inline void PinSlice(const Slice& s, CleanupFunction f, void* arg1, +13943: void* arg2) { +13943: +13943: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: !pinned_ +13943: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "!pinned_" +13943: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: pinned_ = true; +13943: data_ = s.data(); +13943: size_ = s.size(); +13943: RegisterCleanup(f, arg1, arg2); +13943: +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: pinned_ +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "pinned_" +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: } +13943: +13943: inline void PinSlice(const Slice& s, Cleanable* cleanable) { +13943: +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: !pinned_ +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "!pinned_" +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: pinned_ = true; +13943: data_ = s.data(); +13943: size_ = s.size(); +13943: if (cleanable != nullptr) { +13943: cleanable->DelegateCleanupsTo(this); +13943: } +13943: +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: pinned_ +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "pinned_" +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: } +13943: +13943: inline void PinSelf(const Slice& slice) { +13943: +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: !pinned_ +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "!pinned_" +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: buf_->assign(slice.data(), slice.size()); +13943: data_ = buf_->data(); +13943: size_ = buf_->size(); +13943: +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: !pinned_ +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "!pinned_" +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: } +13943: +13943: inline void PinSelf() { +13943: +13943: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: !pinned_ +13943: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "!pinned_" +13943: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: data_ = buf_->data(); +13943: size_ = buf_->size(); +13943: +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: !pinned_ +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "!pinned_" +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: } +13943: +13943: void remove_suffix(size_t n) { +13943: +13943: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: n <= size() +13943: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "n <= size()" +13943: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: if (pinned_) { +13943: size_ -= n; +13943: } else { +13943: buf_->erase(size() - n, n); +13943: PinSelf(); +13943: } +13943: } +13943: +13943: void remove_prefix(size_t n) { +13943: +13943: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: n <= size() +13943: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "n <= size()" +13943: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: if (pinned_) { +13943: data_ += n; +13943: size_ -= n; +13943: } else { +13943: buf_->erase(0, n); +13943: PinSelf(); +13943: } +13943: } +13943: +13943: void Reset() { +13943: Cleanable::Reset(); +13943: pinned_ = false; +13943: size_ = 0; +13943: } +13943: +13943: inline std::string* GetSelf() { return buf_; } +13943: +13943: inline bool IsPinned() const { return pinned_; } +13943: +13943: private: +13943: friend class PinnableSlice4Test; +13943: std::string self_space_; +13943: std::string* buf_; +13943: bool pinned_ = false; +13943: }; +13943: +13943: +13943: +13943: struct SliceParts { +13943: SliceParts(const Slice* _parts, int _num_parts) +13943: : parts(_parts), num_parts(_num_parts) {} +13943: SliceParts() : parts(nullptr), num_parts(0) {} +13943: +13943: const Slice* parts; +13943: int num_parts; +13943: }; +13943: +13943: inline bool operator==(const Slice& x, const Slice& y) { +13943: return ((x.size() == y.size()) && +13943: (memcmp(x.data(), y.data(), x.size()) == 0)); +13943: } +13943: +13943: inline bool operator!=(const Slice& x, const Slice& y) { return !(x == y); } +13943: +13943: inline int Slice::compare(const Slice& b) const { +13943: +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: (static_cast ( +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: data_ != nullptr && b.data_ != nullptr +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: "data_ != nullptr && b.data_ != nullptr" +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +13943: ; +13943: const size_t min_len = (size_ < b.size_) ? size_ : b.size_; +13943: int r = memcmp(data_, b.data_, min_len); +13943: if (r == 0) { +13943: if (size_ < b.size_) +13943: r = -1; +13943: else if (size_ > b.size_) +13943: r = +1; +13943: } +13943: return r; +13943: } +13943: +13943: inline size_t Slice::difference_offset(const Slice& b) const { +13943: size_t off = 0; +13943: const size_t len = (size_ < b.size_) ? size_ : b.size_; +13943: for (; off < len; off++) { +13943: if (data_[off] != b.data_[off]) break; +13943: } +13943: return off; +13943: } +13943: +13943: } +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class Status { +13943: public: +13943: +13943: Status() +13943: : code_(kOk), +13943: subcode_(kNone), +13943: sev_(kNoError), +13943: retryable_(false), +13943: data_loss_(false), +13943: scope_(0), +13943: state_(nullptr) {} +13943: ~Status() { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: Status(const Status& s); +13943: Status& operator=(const Status& s); +13943: Status(Status&& s) noexcept; +13943: Status& operator=(Status&& s) noexcept; +13943: bool operator==(const Status& rhs) const; +13943: bool operator!=(const Status& rhs) const; +13943: +13943: +13943: +13943: +13943: inline void PermitUncheckedError() const { MarkChecked(); } +13943: +13943: inline void MustCheck() const { +13943: +13943: +13943: +13943: } +13943: +13943: enum Code : unsigned char { +13943: kOk = 0, +13943: kNotFound = 1, +13943: kCorruption = 2, +13943: kNotSupported = 3, +13943: kInvalidArgument = 4, +13943: kIOError = 5, +13943: kMergeInProgress = 6, +13943: kIncomplete = 7, +13943: kShutdownInProgress = 8, +13943: kTimedOut = 9, +13943: kAborted = 10, +13943: kBusy = 11, +13943: kExpired = 12, +13943: kTryAgain = 13, +13943: kCompactionTooLarge = 14, +13943: kColumnFamilyDropped = 15, +13943: kMaxCode +13943: }; +13943: +13943: Code code() const { +13943: MarkChecked(); +13943: return code_; +13943: } +13943: +13943: enum SubCode : unsigned char { +13943: kNone = 0, +13943: kMutexTimeout = 1, +13943: kLockTimeout = 2, +13943: kLockLimit = 3, +13943: kNoSpace = 4, +13943: kDeadlock = 5, +13943: kStaleFile = 6, +13943: kMemoryLimit = 7, +13943: kSpaceLimit = 8, +13943: kPathNotFound = 9, +13943: KMergeOperandsInsufficientCapacity = 10, +13943: kManualCompactionPaused = 11, +13943: kOverwritten = 12, +13943: kTxnNotPrepared = 13, +13943: kIOFenced = 14, +13943: kMergeOperatorFailed = 15, +13943: kMergeOperandThresholdExceeded = 16, +13943: kMaxSubCode +13943: }; +13943: +13943: SubCode subcode() const { +13943: MarkChecked(); +13943: return subcode_; +13943: } +13943: +13943: enum Severity : unsigned char { +13943: kNoError = 0, +13943: kSoftError = 1, +13943: kHardError = 2, +13943: kFatalError = 3, +13943: kUnrecoverableError = 4, +13943: kMaxSeverity +13943: }; +13943: +13943: Status(const Status& s, Severity sev); +13943: +13943: Status(Code _code, SubCode _subcode, Severity _sev, const Slice& msg) +13943: : Status(_code, _subcode, msg, "", _sev) {} +13943: +13943: static Status CopyAppendMessage(const Status& s, const Slice& delim, +13943: const Slice& msg); +13943: +13943: Severity severity() const { +13943: MarkChecked(); +13943: return sev_; +13943: } +13943: +13943: +13943: const char* getState() const { +13943: MarkChecked(); +13943: return state_.get(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: Status& UpdateIfOk(Status&& s) { +13943: if (code() == kOk) { +13943: *this = std::move(s); +13943: } else { +13943: +13943: s.PermitUncheckedError(); +13943: } +13943: MustCheck(); +13943: return *this; +13943: } +13943: +13943: Status& UpdateIfOk(const Status& s) { +13943: return UpdateIfOk(std::forward(Status(s))); +13943: } +13943: +13943: +13943: static Status OK() { return Status(); } +13943: +13943: +13943: +13943: +13943: +13943: static Status OkOverwritten() { return Status(kOk, kOverwritten); } +13943: +13943: +13943: +13943: +13943: +13943: static Status OkMergeOperandThresholdExceeded() { +13943: return Status(kOk, kMergeOperandThresholdExceeded); +13943: } +13943: +13943: +13943: static Status NotFound(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kNotFound, msg, msg2); +13943: } +13943: +13943: +13943: static Status NotFound(SubCode msg = kNone) { return Status(kNotFound, msg); } +13943: +13943: static Status NotFound(SubCode sc, const Slice& msg, +13943: const Slice& msg2 = Slice()) { +13943: return Status(kNotFound, sc, msg, msg2); +13943: } +13943: +13943: static Status Corruption(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kCorruption, msg, msg2); +13943: } +13943: static Status Corruption(SubCode msg = kNone) { +13943: return Status(kCorruption, msg); +13943: } +13943: +13943: static Status NotSupported(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kNotSupported, msg, msg2); +13943: } +13943: static Status NotSupported(SubCode msg = kNone) { +13943: return Status(kNotSupported, msg); +13943: } +13943: +13943: static Status InvalidArgument(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kInvalidArgument, msg, msg2); +13943: } +13943: static Status InvalidArgument(SubCode msg = kNone) { +13943: return Status(kInvalidArgument, msg); +13943: } +13943: +13943: static Status IOError(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kIOError, msg, msg2); +13943: } +13943: static Status IOError(SubCode msg = kNone) { return Status(kIOError, msg); } +13943: +13943: static Status MergeInProgress(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kMergeInProgress, msg, msg2); +13943: } +13943: static Status MergeInProgress(SubCode msg = kNone) { +13943: return Status(kMergeInProgress, msg); +13943: } +13943: +13943: static Status Incomplete(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kIncomplete, msg, msg2); +13943: } +13943: static Status Incomplete(SubCode msg = kNone) { +13943: return Status(kIncomplete, msg); +13943: } +13943: +13943: static Status ShutdownInProgress(SubCode msg = kNone) { +13943: return Status(kShutdownInProgress, msg); +13943: } +13943: static Status ShutdownInProgress(const Slice& msg, +13943: const Slice& msg2 = Slice()) { +13943: return Status(kShutdownInProgress, msg, msg2); +13943: } +13943: static Status Aborted(SubCode msg = kNone) { return Status(kAborted, msg); } +13943: static Status Aborted(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kAborted, msg, msg2); +13943: } +13943: +13943: static Status Busy(SubCode msg = kNone) { return Status(kBusy, msg); } +13943: static Status Busy(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kBusy, msg, msg2); +13943: } +13943: +13943: static Status TimedOut(SubCode msg = kNone) { return Status(kTimedOut, msg); } +13943: static Status TimedOut(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kTimedOut, msg, msg2); +13943: } +13943: +13943: static Status Expired(SubCode msg = kNone) { return Status(kExpired, msg); } +13943: static Status Expired(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kExpired, msg, msg2); +13943: } +13943: +13943: static Status TryAgain(SubCode msg = kNone) { return Status(kTryAgain, msg); } +13943: static Status TryAgain(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kTryAgain, msg, msg2); +13943: } +13943: +13943: static Status CompactionTooLarge(SubCode msg = kNone) { +13943: return Status(kCompactionTooLarge, msg); +13943: } +13943: static Status CompactionTooLarge(const Slice& msg, +13943: const Slice& msg2 = Slice()) { +13943: return Status(kCompactionTooLarge, msg, msg2); +13943: } +13943: +13943: static Status ColumnFamilyDropped(SubCode msg = kNone) { +13943: return Status(kColumnFamilyDropped, msg); +13943: } +13943: +13943: static Status ColumnFamilyDropped(const Slice& msg, +13943: const Slice& msg2 = Slice()) { +13943: return Status(kColumnFamilyDropped, msg, msg2); +13943: } +13943: +13943: static Status NoSpace() { return Status(kIOError, kNoSpace); } +13943: static Status NoSpace(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kIOError, kNoSpace, msg, msg2); +13943: } +13943: +13943: static Status MemoryLimit() { return Status(kAborted, kMemoryLimit); } +13943: static Status MemoryLimit(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kAborted, kMemoryLimit, msg, msg2); +13943: } +13943: +13943: static Status SpaceLimit() { return Status(kIOError, kSpaceLimit); } +13943: static Status SpaceLimit(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kIOError, kSpaceLimit, msg, msg2); +13943: } +13943: +13943: static Status PathNotFound() { return Status(kIOError, kPathNotFound); } +13943: static Status PathNotFound(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kIOError, kPathNotFound, msg, msg2); +13943: } +13943: +13943: static Status TxnNotPrepared() { +13943: return Status(kInvalidArgument, kTxnNotPrepared); +13943: } +13943: static Status TxnNotPrepared(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return Status(kInvalidArgument, kTxnNotPrepared, msg, msg2); +13943: } +13943: +13943: +13943: bool ok() const { +13943: MarkChecked(); +13943: return code() == kOk; +13943: } +13943: +13943: +13943: +13943: bool IsOkOverwritten() const { +13943: MarkChecked(); +13943: return code() == kOk && subcode() == kOverwritten; +13943: } +13943: +13943: +13943: +13943: bool IsOkMergeOperandThresholdExceeded() const { +13943: MarkChecked(); +13943: return code() == kOk && subcode() == kMergeOperandThresholdExceeded; +13943: } +13943: +13943: +13943: bool IsNotFound() const { +13943: MarkChecked(); +13943: return code() == kNotFound; +13943: } +13943: +13943: +13943: bool IsCorruption() const { +13943: MarkChecked(); +13943: return code() == kCorruption; +13943: } +13943: +13943: +13943: bool IsNotSupported() const { +13943: MarkChecked(); +13943: return code() == kNotSupported; +13943: } +13943: +13943: +13943: bool IsInvalidArgument() const { +13943: MarkChecked(); +13943: return code() == kInvalidArgument; +13943: } +13943: +13943: +13943: bool IsIOError() const { +13943: MarkChecked(); +13943: return code() == kIOError; +13943: } +13943: +13943: +13943: bool IsMergeInProgress() const { +13943: MarkChecked(); +13943: return code() == kMergeInProgress; +13943: } +13943: +13943: +13943: bool IsIncomplete() const { +13943: MarkChecked(); +13943: return code() == kIncomplete; +13943: } +13943: +13943: +13943: bool IsShutdownInProgress() const { +13943: MarkChecked(); +13943: return code() == kShutdownInProgress; +13943: } +13943: +13943: bool IsTimedOut() const { +13943: MarkChecked(); +13943: return code() == kTimedOut; +13943: } +13943: +13943: bool IsAborted() const { +13943: MarkChecked(); +13943: return code() == kAborted; +13943: } +13943: +13943: bool IsLockLimit() const { +13943: MarkChecked(); +13943: return code() == kAborted && subcode() == kLockLimit; +13943: } +13943: +13943: +13943: +13943: bool IsBusy() const { +13943: MarkChecked(); +13943: return code() == kBusy; +13943: } +13943: +13943: bool IsDeadlock() const { +13943: MarkChecked(); +13943: return code() == kBusy && subcode() == kDeadlock; +13943: } +13943: +13943: +13943: bool IsExpired() const { +13943: MarkChecked(); +13943: return code() == kExpired; +13943: } +13943: +13943: +13943: +13943: +13943: bool IsTryAgain() const { +13943: MarkChecked(); +13943: return code() == kTryAgain; +13943: } +13943: +13943: +13943: bool IsCompactionTooLarge() const { +13943: MarkChecked(); +13943: return code() == kCompactionTooLarge; +13943: } +13943: +13943: +13943: bool IsColumnFamilyDropped() const { +13943: MarkChecked(); +13943: return code() == kColumnFamilyDropped; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool IsNoSpace() const { +13943: MarkChecked(); +13943: return (code() == kIOError) && (subcode() == kNoSpace); +13943: } +13943: +13943: +13943: +13943: +13943: bool IsMemoryLimit() const { +13943: MarkChecked(); +13943: return (code() == kAborted) && (subcode() == kMemoryLimit); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: bool IsPathNotFound() const { +13943: MarkChecked(); +13943: return (code() == kIOError || code() == kNotFound) && +13943: (subcode() == kPathNotFound); +13943: } +13943: +13943: +13943: +13943: bool IsManualCompactionPaused() const { +13943: MarkChecked(); +13943: return (code() == kIncomplete) && (subcode() == kManualCompactionPaused); +13943: } +13943: +13943: +13943: bool IsTxnNotPrepared() const { +13943: MarkChecked(); +13943: return (code() == kInvalidArgument) && (subcode() == kTxnNotPrepared); +13943: } +13943: +13943: +13943: bool IsIOFenced() const { +13943: MarkChecked(); +13943: return (code() == kIOError) && (subcode() == kIOFenced); +13943: } +13943: +13943: +13943: +13943: std::string ToString() const; +13943: +13943: protected: +13943: Code code_; +13943: SubCode subcode_; +13943: Severity sev_; +13943: bool retryable_; +13943: bool data_loss_; +13943: unsigned char scope_; +13943: +13943: +13943: std::unique_ptr state_; +13943: +13943: +13943: +13943: +13943: explicit Status(Code _code, SubCode _subcode = kNone) +13943: : code_(_code), +13943: subcode_(_subcode), +13943: sev_(kNoError), +13943: retryable_(false), +13943: data_loss_(false), +13943: scope_(0) {} +13943: +13943: explicit Status(Code _code, SubCode _subcode, bool retryable, bool data_loss, +13943: unsigned char scope) +13943: : code_(_code), +13943: subcode_(_subcode), +13943: sev_(kNoError), +13943: retryable_(retryable), +13943: data_loss_(data_loss), +13943: scope_(scope) {} +13943: +13943: Status(Code _code, SubCode _subcode, const Slice& msg, const Slice& msg2, +13943: Severity sev = kNoError); +13943: Status(Code _code, const Slice& msg, const Slice& msg2) +13943: : Status(_code, kNone, msg, msg2) {} +13943: +13943: static std::unique_ptr CopyState(const char* s); +13943: +13943: inline void MarkChecked() const { +13943: +13943: +13943: +13943: } +13943: }; +13943: +13943: inline Status::Status(const Status& s) +13943: : code_(s.code_), +13943: subcode_(s.subcode_), +13943: sev_(s.sev_), +13943: retryable_(s.retryable_), +13943: data_loss_(s.data_loss_), +13943: scope_(s.scope_) { +13943: s.MarkChecked(); +13943: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +13943: } +13943: inline Status::Status(const Status& s, Severity sev) +13943: : code_(s.code_), +13943: subcode_(s.subcode_), +13943: sev_(sev), +13943: retryable_(s.retryable_), +13943: data_loss_(s.data_loss_), +13943: scope_(s.scope_) { +13943: s.MarkChecked(); +13943: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +13943: } +13943: inline Status& Status::operator=(const Status& s) { +13943: if (this != &s) { +13943: s.MarkChecked(); +13943: MustCheck(); +13943: code_ = s.code_; +13943: subcode_ = s.subcode_; +13943: sev_ = s.sev_; +13943: retryable_ = s.retryable_; +13943: data_loss_ = s.data_loss_; +13943: scope_ = s.scope_; +13943: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +13943: } +13943: return *this; +13943: } +13943: +13943: inline Status::Status(Status&& s) noexcept : Status() { +13943: s.MarkChecked(); +13943: *this = std::move(s); +13943: } +13943: +13943: inline Status& Status::operator=(Status&& s) noexcept { +13943: if (this != &s) { +13943: s.MarkChecked(); +13943: MustCheck(); +13943: code_ = std::move(s.code_); +13943: s.code_ = kOk; +13943: subcode_ = std::move(s.subcode_); +13943: s.subcode_ = kNone; +13943: sev_ = std::move(s.sev_); +13943: s.sev_ = kNoError; +13943: retryable_ = std::move(s.retryable_); +13943: s.retryable_ = false; +13943: data_loss_ = std::move(s.data_loss_); +13943: s.data_loss_ = false; +13943: scope_ = std::move(s.scope_); +13943: s.scope_ = 0; +13943: state_ = std::move(s.state_); +13943: } +13943: return *this; +13943: } +13943: +13943: inline bool Status::operator==(const Status& rhs) const { +13943: MarkChecked(); +13943: rhs.MarkChecked(); +13943: return (code_ == rhs.code_); +13943: } +13943: +13943: inline bool Status::operator!=(const Status& rhs) const { +13943: MarkChecked(); +13943: rhs.MarkChecked(); +13943: return !(*this == rhs); +13943: } +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" 2 +13943: +13943: namespace rocksdb { +13943: class Logger; +13943: class ObjectRegistry; +13943: class OptionTypeInfo; +13943: struct ColumnFamilyOptions; +13943: struct ConfigOptions; +13943: struct DBOptions; +13943: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: class Configurable { +13943: protected: +13943: friend class ConfigurableHelper; +13943: struct RegisteredOptions { +13943: +13943: std::string name; +13943: +13943: +13943: +13943: intptr_t opt_offset; +13943: +13943: const std::unordered_map* type_map; +13943: }; +13943: +13943: public: +13943: virtual ~Configurable() {} +13943: # 70 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: template +13943: const T* GetOptions() const { +13943: return GetOptions(T::kName()); +13943: } +13943: template +13943: T* GetOptions() { +13943: return GetOptions(T::kName()); +13943: } +13943: template +13943: const T* GetOptions(const std::string& name) const { +13943: return reinterpret_cast(GetOptionsPtr(name)); +13943: } +13943: template +13943: T* GetOptions(const std::string& name) { +13943: +13943: +13943: return reinterpret_cast(const_cast(GetOptionsPtr(name))); +13943: } +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: Status ConfigureFromMap( +13943: const ConfigOptions& config_options, +13943: const std::unordered_map& opt_map); +13943: Status ConfigureFromMap( +13943: const ConfigOptions& config_options, +13943: const std::unordered_map& opt_map, +13943: std::unordered_map* unused); +13943: # 137 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: Status ConfigureOption(const ConfigOptions& config_options, +13943: const std::string& name, const std::string& value); +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: Status ConfigureFromString(const ConfigOptions& config_options, +13943: const std::string& opts); +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: Status GetOptionString(const ConfigOptions& config_options, +13943: std::string* result) const; +13943: +13943: +13943: +13943: +13943: +13943: std::string ToString(const ConfigOptions& config_options) const { +13943: return ToString(config_options, ""); +13943: } +13943: std::string ToString(const ConfigOptions& config_options, +13943: const std::string& prefix) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status GetOptionNames(const ConfigOptions& config_options, +13943: std::unordered_set* result) const; +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: virtual Status GetOption(const ConfigOptions& config_options, +13943: const std::string& name, std::string* value) const; +13943: # 212 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: virtual bool AreEquivalent(const ConfigOptions& config_options, +13943: const Configurable* other, +13943: std::string* name) const; +13943: +13943: +13943: +13943: +13943: virtual std::string GetPrintableOptions() const { return ""; } +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: virtual Status PrepareOptions(const ConfigOptions& config_options); +13943: # 259 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: virtual Status ValidateOptions(const DBOptions& db_opts, +13943: const ColumnFamilyOptions& cf_opts) const; +13943: # 276 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: static Status GetOptionsMap( +13943: const std::string& opt_value, const std::string& default_id, +13943: std::string* id, std::unordered_map* options); +13943: +13943: protected: +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: virtual const void* GetOptionsPtr(const std::string& name) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status ParseStringOptions(const ConfigOptions& config_options, +13943: const std::string& opts_str); +13943: # 313 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: virtual Status ConfigureOptions( +13943: const ConfigOptions& config_options, +13943: const std::unordered_map& opts_map, +13943: std::unordered_map* unused); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status ParseOption(const ConfigOptions& config_options, +13943: const OptionTypeInfo& opt_info, +13943: const std::string& opt_name, +13943: const std::string& opt_value, void* opt_ptr); +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: virtual bool OptionsAreEqual(const ConfigOptions& config_options, +13943: const OptionTypeInfo& opt_info, +13943: const std::string& name, +13943: const void* const this_ptr, +13943: const void* const that_ptr, +13943: std::string* bad_name) const; +13943: +13943: +13943: virtual std::string SerializeOptions(const ConfigOptions& config_options, +13943: const std::string& header) const; +13943: +13943: +13943: virtual std::string GetOptionName(const std::string& long_name) const; +13943: # 375 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +13943: template +13943: void RegisterOptions( +13943: T* opt_ptr, +13943: const std::unordered_map* opt_map) { +13943: RegisterOptions(T::kName(), opt_ptr, opt_map); +13943: } +13943: void RegisterOptions( +13943: const std::string& name, void* opt_ptr, +13943: const std::unordered_map* opt_map); +13943: +13943: +13943: inline bool HasRegisteredOptions() const { return !options_.empty(); } +13943: +13943: private: +13943: +13943: +13943: +13943: std::vector options_; +13943: }; +13943: } +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: # 56 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +13943: class Customizable : public Configurable { +13943: public: +13943: ~Customizable() override {} +13943: +13943: +13943: virtual const char* Name() const = 0; +13943: +13943: +13943: +13943: +13943: virtual std::string GetId() const { +13943: std::string id = Name(); +13943: return id; +13943: } +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +13943: virtual bool IsInstanceOf(const std::string& name) const { +13943: if (name.empty()) { +13943: return false; +13943: } else if (name == Name()) { +13943: return true; +13943: } else { +13943: const char* nickname = NickName(); +13943: if (nickname != nullptr && name == nickname) { +13943: return true; +13943: } else { +13943: return false; +13943: } +13943: } +13943: } +13943: +13943: const void* GetOptionsPtr(const std::string& name) const override { +13943: const void* ptr = Configurable::GetOptionsPtr(name); +13943: if (ptr != nullptr) { +13943: return ptr; +13943: } else { +13943: const auto inner = Inner(); +13943: if (inner != nullptr) { +13943: return inner->GetOptionsPtr(name); +13943: } else { +13943: return nullptr; +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: const T* CheckedCast() const { +13943: if (IsInstanceOf(T::kClassName())) { +13943: return static_cast(this); +13943: } else { +13943: const auto inner = Inner(); +13943: if (inner != nullptr) { +13943: return inner->CheckedCast(); +13943: } else { +13943: return nullptr; +13943: } +13943: } +13943: } +13943: +13943: template +13943: T* CheckedCast() { +13943: if (IsInstanceOf(T::kClassName())) { +13943: return static_cast(this); +13943: } else { +13943: auto inner = const_cast(Inner()); +13943: if (inner != nullptr) { +13943: return inner->CheckedCast(); +13943: } else { +13943: return nullptr; +13943: } +13943: } +13943: } +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +13943: bool AreEquivalent(const ConfigOptions& config_options, +13943: const Configurable* other, +13943: std::string* mismatch) const override; +13943: +13943: +13943: Status GetOption(const ConfigOptions& config_options, const std::string& name, +13943: std::string* value) const override; +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +13943: static Status GetOptionsMap( +13943: const ConfigOptions& config_options, const Customizable* custom, +13943: const std::string& opt_value, std::string* id, +13943: std::unordered_map* options); +13943: # 195 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +13943: static Status ConfigureNewObject( +13943: const ConfigOptions& config_options, Customizable* object, +13943: const std::unordered_map& options); +13943: +13943: +13943: +13943: +13943: virtual const Customizable* Inner() const { return nullptr; } +13943: +13943: protected: +13943: # 217 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +13943: std::string GenerateIndividualId() const; +13943: +13943: +13943: +13943: +13943: virtual const char* NickName() const { return ""; } +13943: +13943: std::string GetOptionName(const std::string& long_name) const override; +13943: std::string SerializeOptions(const ConfigOptions& options, +13943: const std::string& prefix) const override; +13943: }; +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: +13943: +13943: +13943: class CompareInterface { +13943: public: +13943: virtual ~CompareInterface() {} +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: virtual int Compare(const Slice& a, const Slice& b) const = 0; +13943: }; +13943: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: class Comparator : public Customizable, public CompareInterface { +13943: public: +13943: Comparator() : timestamp_size_(0) {} +13943: +13943: Comparator(size_t ts_sz) : timestamp_size_(ts_sz) {} +13943: +13943: Comparator(const Comparator& orig) : timestamp_size_(orig.timestamp_size_) {} +13943: +13943: Comparator& operator=(const Comparator& rhs) { +13943: if (this != &rhs) { +13943: timestamp_size_ = rhs.timestamp_size_; +13943: } +13943: return *this; +13943: } +13943: +13943: ~Comparator() override {} +13943: +13943: static Status CreateFromString(const ConfigOptions& opts, +13943: const std::string& id, +13943: const Comparator** comp); +13943: static const char* Type() { return "Comparator"; } +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: const char* Name() const override = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool Equal(const Slice& a, const Slice& b) const { +13943: return Compare(a, b) == 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void FindShortestSeparator(std::string* start, +13943: const Slice& limit) const = 0; +13943: +13943: +13943: +13943: +13943: virtual void FindShortSuccessor(std::string* key) const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool IsSameLengthImmediateSuccessor(const Slice& , +13943: const Slice& ) const { +13943: return false; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual bool CanKeysWithDifferentByteContentsBeEqual() const { return true; } +13943: +13943: +13943: +13943: virtual const Comparator* GetRootComparator() const { return this; } +13943: +13943: inline size_t timestamp_size() const { return timestamp_size_; } +13943: +13943: +13943: +13943: +13943: virtual Slice GetMaxTimestamp() const { +13943: if (timestamp_size_ == 0) { +13943: return Slice(); +13943: } +13943: +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +13943: (static_cast ( +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: false +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: "false" +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: ; +13943: return Slice(); +13943: } +13943: +13943: +13943: +13943: +13943: virtual Slice GetMinTimestamp() const { +13943: if (timestamp_size_ == 0) { +13943: return Slice(); +13943: } +13943: +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +13943: (static_cast ( +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: false +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: "false" +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: ; +13943: return Slice(); +13943: } +13943: +13943: +13943: virtual std::string TimestampToString(const Slice& ) const { +13943: return ""; +13943: } +13943: +13943: int CompareWithoutTimestamp(const Slice& a, const Slice& b) const { +13943: return CompareWithoutTimestamp(a, true, b, true); +13943: } +13943: # 163 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +13943: virtual int CompareTimestamp(const Slice& , +13943: const Slice& ) const { +13943: return 0; +13943: } +13943: +13943: virtual int CompareWithoutTimestamp(const Slice& a, bool , +13943: const Slice& b, bool ) const { +13943: return Compare(a, b); +13943: } +13943: +13943: virtual bool EqualWithoutTimestamp(const Slice& a, const Slice& b) const { +13943: return 0 == +13943: CompareWithoutTimestamp(a, true, b, true); +13943: } +13943: +13943: private: +13943: size_t timestamp_size_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: const Comparator* BytewiseComparator(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: const Comparator* ReverseBytewiseComparator(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: const Comparator* BytewiseComparatorWithU64Ts(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: const Comparator* ReverseBytewiseComparatorWithU64Ts(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status DecodeU64Ts(const Slice& ts, uint64_t* int_ts); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Slice EncodeU64Ts(uint64_t ts, std::string* ts_buf); +13943: +13943: +13943: +13943: +13943: Slice MaxU64Ts(); +13943: +13943: +13943: +13943: +13943: Slice MinU64Ts(); +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" 1 +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: struct ConfigOptions; +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +13943: class SliceTransform : public Customizable { +13943: public: +13943: virtual ~SliceTransform(){} +13943: +13943: +13943: const char* Name() const override = 0; +13943: static const char* Type() { return "SliceTransform"; } +13943: +13943: +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& id, +13943: std::shared_ptr* result); +13943: +13943: +13943: +13943: std::string AsString() const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Slice Transform(const Slice& key) const = 0; +13943: # 71 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +13943: virtual bool InDomain(const Slice& key) const = 0; +13943: +13943: +13943: +13943: virtual bool InRange(const Slice& ) const { return false; } +13943: # 92 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +13943: virtual bool FullLengthEnabled(size_t* ) const { return false; } +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +13943: virtual bool SameResultWhenAppended(const Slice& ) const { +13943: return false; +13943: } +13943: }; +13943: +13943: +13943: +13943: const SliceTransform* NewFixedPrefixTransform(size_t prefix_len); +13943: +13943: +13943: +13943: const SliceTransform* NewCappedPrefixTransform(size_t cap_len); +13943: +13943: +13943: const SliceTransform* NewNoopTransform(); +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/types.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/types.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: using ColumnFamilyId = uint32_t; +13943: +13943: +13943: using SequenceNumber = uint64_t; +13943: +13943: struct TableProperties; +13943: using TablePropertiesCollection = +13943: std::unordered_map>; +13943: +13943: const SequenceNumber kMinUnCommittedSeq = 1; +13943: +13943: enum class TableFileCreationReason { +13943: kFlush, +13943: kCompaction, +13943: kRecovery, +13943: kMisc, +13943: }; +13943: +13943: enum class BlobFileCreationReason { +13943: kFlush, +13943: kCompaction, +13943: kRecovery, +13943: }; +13943: +13943: +13943: +13943: enum FileType { +13943: kWalFile, +13943: kDBLockFile, +13943: kTableFile, +13943: kDescriptorFile, +13943: kCurrentFile, +13943: kTempFile, +13943: kInfoLogFile, +13943: kMetaDatabase, +13943: kIdentityFile, +13943: kOptionsFile, +13943: kBlobFile +13943: }; +13943: +13943: +13943: +13943: enum EntryType { +13943: kEntryPut, +13943: kEntryDelete, +13943: kEntrySingleDelete, +13943: kEntryMerge, +13943: kEntryRangeDeletion, +13943: kEntryBlobIndex, +13943: kEntryDeleteWithTimestamp, +13943: kEntryWideColumnEntity, +13943: kEntryTimedPut, +13943: kEntryOther, +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: struct ParsedEntryInfo { +13943: Slice user_key; +13943: Slice timestamp; +13943: SequenceNumber sequence; +13943: EntryType type; +13943: }; +13943: +13943: enum class WriteStallCause { +13943: +13943: +13943: +13943: kMemtableLimit, +13943: kL0FileCountLimit, +13943: kPendingCompactionBytes, +13943: kCFScopeWriteStallCauseEnumMax, +13943: +13943: +13943: +13943: +13943: +13943: kWriteBufferManagerLimit, +13943: kDBScopeWriteStallCauseEnumMax, +13943: +13943: +13943: +13943: kNone, +13943: }; +13943: +13943: enum class WriteStallCondition { +13943: kDelayed, +13943: kStopped, +13943: +13943: kNormal, +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: enum class Temperature : uint8_t { +13943: kUnknown = 0, +13943: kHot = 0x04, +13943: kWarm = 0x08, +13943: kCold = 0x0C, +13943: kLastTemperature, +13943: }; +13943: +13943: } +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 1 +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" +13943: +13943: # 1 "/usr/include/c++/14/algorithm" 1 3 +13943: # 58 "/usr/include/c++/14/algorithm" 3 +13943: +13943: # 59 "/usr/include/c++/14/algorithm" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_algo.h" 1 3 +13943: # 59 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: # 1 "/usr/include/c++/14/bits/algorithmfwd.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +13943: # 42 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +13943: +13943: # 42 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 195 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +13943: template +13943: +13943: bool +13943: all_of(_IIter, _IIter, _Predicate); +13943: +13943: template +13943: +13943: bool +13943: any_of(_IIter, _IIter, _Predicate); +13943: +13943: +13943: template +13943: +13943: bool +13943: binary_search(_FIter, _FIter, const _Tp&); +13943: +13943: template +13943: +13943: bool +13943: binary_search(_FIter, _FIter, const _Tp&, _Compare); +13943: +13943: +13943: template +13943: constexpr +13943: const _Tp& +13943: clamp(const _Tp&, const _Tp&, const _Tp&); +13943: +13943: template +13943: constexpr +13943: const _Tp& +13943: clamp(const _Tp&, const _Tp&, const _Tp&, _Compare); +13943: +13943: +13943: template +13943: +13943: _OIter +13943: copy(_IIter, _IIter, _OIter); +13943: +13943: template +13943: +13943: _BIter2 +13943: copy_backward(_BIter1, _BIter1, _BIter2); +13943: +13943: +13943: template +13943: +13943: _OIter +13943: copy_if(_IIter, _IIter, _OIter, _Predicate); +13943: +13943: template +13943: +13943: _OIter +13943: copy_n(_IIter, _Size, _OIter); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: pair<_FIter, _FIter> +13943: equal_range(_FIter, _FIter, const _Tp&); +13943: +13943: template +13943: +13943: pair<_FIter, _FIter> +13943: equal_range(_FIter, _FIter, const _Tp&, _Compare); +13943: +13943: template +13943: +13943: void +13943: fill(_FIter, _FIter, const _Tp&); +13943: +13943: template +13943: +13943: _OIter +13943: fill_n(_OIter, _Size, const _Tp&); +13943: +13943: +13943: +13943: template +13943: +13943: _FIter1 +13943: find_end(_FIter1, _FIter1, _FIter2, _FIter2); +13943: +13943: template +13943: +13943: _FIter1 +13943: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _IIter +13943: find_if_not(_IIter, _IIter, _Predicate); +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: bool +13943: includes(_IIter1, _IIter1, _IIter2, _IIter2); +13943: +13943: template +13943: +13943: bool +13943: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); +13943: +13943: template +13943: void +13943: inplace_merge(_BIter, _BIter, _BIter); +13943: +13943: template +13943: void +13943: inplace_merge(_BIter, _BIter, _BIter, _Compare); +13943: +13943: +13943: template +13943: +13943: bool +13943: is_heap(_RAIter, _RAIter); +13943: +13943: template +13943: +13943: bool +13943: is_heap(_RAIter, _RAIter, _Compare); +13943: +13943: template +13943: +13943: _RAIter +13943: is_heap_until(_RAIter, _RAIter); +13943: +13943: template +13943: +13943: _RAIter +13943: is_heap_until(_RAIter, _RAIter, _Compare); +13943: +13943: template +13943: +13943: bool +13943: is_partitioned(_IIter, _IIter, _Predicate); +13943: +13943: template +13943: +13943: bool +13943: is_permutation(_FIter1, _FIter1, _FIter2); +13943: +13943: template +13943: +13943: bool +13943: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); +13943: +13943: template +13943: +13943: bool +13943: is_sorted(_FIter, _FIter); +13943: +13943: template +13943: +13943: bool +13943: is_sorted(_FIter, _FIter, _Compare); +13943: +13943: template +13943: +13943: _FIter +13943: is_sorted_until(_FIter, _FIter); +13943: +13943: template +13943: +13943: _FIter +13943: is_sorted_until(_FIter, _FIter, _Compare); +13943: +13943: +13943: template +13943: +13943: void +13943: iter_swap(_FIter1, _FIter2); +13943: +13943: template +13943: +13943: _FIter +13943: lower_bound(_FIter, _FIter, const _Tp&); +13943: +13943: template +13943: +13943: _FIter +13943: lower_bound(_FIter, _FIter, const _Tp&, _Compare); +13943: +13943: template +13943: +13943: void +13943: make_heap(_RAIter, _RAIter); +13943: +13943: template +13943: +13943: void +13943: make_heap(_RAIter, _RAIter, _Compare); +13943: +13943: template +13943: constexpr +13943: const _Tp& +13943: max(const _Tp&, const _Tp&); +13943: +13943: template +13943: constexpr +13943: const _Tp& +13943: max(const _Tp&, const _Tp&, _Compare); +13943: +13943: +13943: +13943: +13943: template +13943: constexpr +13943: const _Tp& +13943: min(const _Tp&, const _Tp&); +13943: +13943: template +13943: constexpr +13943: const _Tp& +13943: min(const _Tp&, const _Tp&, _Compare); +13943: +13943: +13943: +13943: +13943: template +13943: constexpr +13943: pair +13943: minmax(const _Tp&, const _Tp&); +13943: +13943: template +13943: constexpr +13943: pair +13943: minmax(const _Tp&, const _Tp&, _Compare); +13943: +13943: template +13943: constexpr +13943: pair<_FIter, _FIter> +13943: minmax_element(_FIter, _FIter); +13943: +13943: template +13943: constexpr +13943: pair<_FIter, _FIter> +13943: minmax_element(_FIter, _FIter, _Compare); +13943: +13943: template +13943: constexpr +13943: _Tp +13943: min(initializer_list<_Tp>); +13943: +13943: template +13943: constexpr +13943: _Tp +13943: min(initializer_list<_Tp>, _Compare); +13943: +13943: template +13943: constexpr +13943: _Tp +13943: max(initializer_list<_Tp>); +13943: +13943: template +13943: constexpr +13943: _Tp +13943: max(initializer_list<_Tp>, _Compare); +13943: +13943: template +13943: constexpr +13943: pair<_Tp, _Tp> +13943: minmax(initializer_list<_Tp>); +13943: +13943: template +13943: constexpr +13943: pair<_Tp, _Tp> +13943: minmax(initializer_list<_Tp>, _Compare); +13943: +13943: +13943: +13943: +13943: template +13943: +13943: bool +13943: next_permutation(_BIter, _BIter); +13943: +13943: template +13943: +13943: bool +13943: next_permutation(_BIter, _BIter, _Compare); +13943: +13943: +13943: template +13943: +13943: bool +13943: none_of(_IIter, _IIter, _Predicate); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _RAIter +13943: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); +13943: +13943: template +13943: +13943: _RAIter +13943: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); +13943: +13943: +13943: +13943: +13943: template +13943: +13943: pair<_OIter1, _OIter2> +13943: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); +13943: +13943: template +13943: +13943: _FIter +13943: partition_point(_FIter, _FIter, _Predicate); +13943: +13943: +13943: template +13943: +13943: void +13943: pop_heap(_RAIter, _RAIter); +13943: +13943: template +13943: +13943: void +13943: pop_heap(_RAIter, _RAIter, _Compare); +13943: +13943: template +13943: +13943: bool +13943: prev_permutation(_BIter, _BIter); +13943: +13943: template +13943: +13943: bool +13943: prev_permutation(_BIter, _BIter, _Compare); +13943: +13943: template +13943: +13943: void +13943: push_heap(_RAIter, _RAIter); +13943: +13943: template +13943: +13943: void +13943: push_heap(_RAIter, _RAIter, _Compare); +13943: +13943: +13943: +13943: template +13943: +13943: _FIter +13943: remove(_FIter, _FIter, const _Tp&); +13943: +13943: template +13943: +13943: _FIter +13943: remove_if(_FIter, _FIter, _Predicate); +13943: +13943: template +13943: +13943: _OIter +13943: remove_copy(_IIter, _IIter, _OIter, const _Tp&); +13943: +13943: template +13943: +13943: _OIter +13943: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); +13943: +13943: +13943: +13943: template +13943: +13943: _OIter +13943: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); +13943: +13943: template +13943: +13943: _OIter +13943: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: reverse(_BIter, _BIter); +13943: +13943: template +13943: +13943: _OIter +13943: reverse_copy(_BIter, _BIter, _OIter); +13943: +13943: inline namespace _V2 { +13943: +13943: template +13943: +13943: _FIter +13943: rotate(_FIter, _FIter, _FIter); +13943: +13943: } +13943: +13943: template +13943: +13943: _OIter +13943: rotate_copy(_FIter, _FIter, _FIter, _OIter); +13943: # 622 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +13943: template +13943: void +13943: shuffle(_RAIter, _RAIter, _UGenerator&&); +13943: +13943: +13943: template +13943: +13943: void +13943: sort_heap(_RAIter, _RAIter); +13943: +13943: template +13943: +13943: void +13943: sort_heap(_RAIter, _RAIter, _Compare); +13943: +13943: +13943: template +13943: _BIter +13943: stable_partition(_BIter, _BIter, _Predicate); +13943: # 657 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +13943: template +13943: +13943: _FIter2 +13943: swap_ranges(_FIter1, _FIter1, _FIter2); +13943: +13943: +13943: +13943: template +13943: +13943: _FIter +13943: unique(_FIter, _FIter); +13943: +13943: template +13943: +13943: _FIter +13943: unique(_FIter, _FIter, _BinaryPredicate); +13943: +13943: +13943: +13943: template +13943: +13943: _FIter +13943: upper_bound(_FIter, _FIter, const _Tp&); +13943: +13943: template +13943: +13943: _FIter +13943: upper_bound(_FIter, _FIter, const _Tp&, _Compare); +13943: +13943: +13943: +13943: template +13943: +13943: _FIter +13943: adjacent_find(_FIter, _FIter); +13943: +13943: template +13943: +13943: _FIter +13943: adjacent_find(_FIter, _FIter, _BinaryPredicate); +13943: +13943: template +13943: +13943: typename iterator_traits<_IIter>::difference_type +13943: count(_IIter, _IIter, const _Tp&); +13943: +13943: template +13943: +13943: typename iterator_traits<_IIter>::difference_type +13943: count_if(_IIter, _IIter, _Predicate); +13943: +13943: template +13943: +13943: bool +13943: equal(_IIter1, _IIter1, _IIter2); +13943: +13943: template +13943: +13943: bool +13943: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); +13943: +13943: template +13943: +13943: _IIter +13943: find(_IIter, _IIter, const _Tp&); +13943: +13943: template +13943: +13943: _FIter1 +13943: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); +13943: +13943: template +13943: +13943: _FIter1 +13943: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); +13943: +13943: template +13943: +13943: _IIter +13943: find_if(_IIter, _IIter, _Predicate); +13943: +13943: template +13943: +13943: _Funct +13943: for_each(_IIter, _IIter, _Funct); +13943: +13943: template +13943: +13943: void +13943: generate(_FIter, _FIter, _Generator); +13943: +13943: template +13943: +13943: _OIter +13943: generate_n(_OIter, _Size, _Generator); +13943: +13943: template +13943: +13943: bool +13943: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); +13943: +13943: template +13943: +13943: bool +13943: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); +13943: +13943: template +13943: constexpr +13943: _FIter +13943: max_element(_FIter, _FIter); +13943: +13943: template +13943: constexpr +13943: _FIter +13943: max_element(_FIter, _FIter, _Compare); +13943: +13943: template +13943: +13943: _OIter +13943: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +13943: +13943: template +13943: +13943: _OIter +13943: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +13943: +13943: template +13943: constexpr +13943: _FIter +13943: min_element(_FIter, _FIter); +13943: +13943: template +13943: constexpr +13943: _FIter +13943: min_element(_FIter, _FIter, _Compare); +13943: +13943: template +13943: +13943: pair<_IIter1, _IIter2> +13943: mismatch(_IIter1, _IIter1, _IIter2); +13943: +13943: template +13943: +13943: pair<_IIter1, _IIter2> +13943: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); +13943: +13943: template +13943: +13943: void +13943: nth_element(_RAIter, _RAIter, _RAIter); +13943: +13943: template +13943: +13943: void +13943: nth_element(_RAIter, _RAIter, _RAIter, _Compare); +13943: +13943: template +13943: +13943: void +13943: partial_sort(_RAIter, _RAIter, _RAIter); +13943: +13943: template +13943: +13943: void +13943: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); +13943: +13943: template +13943: +13943: _BIter +13943: partition(_BIter, _BIter, _Predicate); +13943: +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +13943: void +13943: random_shuffle(_RAIter, _RAIter); +13943: +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +13943: void +13943: random_shuffle(_RAIter, _RAIter, +13943: +13943: _Generator&&); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: replace(_FIter, _FIter, const _Tp&, const _Tp&); +13943: +13943: template +13943: +13943: void +13943: replace_if(_FIter, _FIter, _Predicate, const _Tp&); +13943: +13943: template +13943: +13943: _FIter1 +13943: search(_FIter1, _FIter1, _FIter2, _FIter2); +13943: +13943: template +13943: +13943: _FIter1 +13943: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); +13943: +13943: template +13943: +13943: _FIter +13943: search_n(_FIter, _FIter, _Size, const _Tp&); +13943: +13943: template +13943: +13943: _FIter +13943: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); +13943: +13943: template +13943: +13943: _OIter +13943: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +13943: +13943: template +13943: +13943: _OIter +13943: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +13943: +13943: template +13943: +13943: _OIter +13943: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +13943: +13943: template +13943: +13943: _OIter +13943: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +13943: +13943: template +13943: +13943: _OIter +13943: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +13943: +13943: template +13943: +13943: _OIter +13943: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, +13943: _OIter, _Compare); +13943: +13943: template +13943: +13943: _OIter +13943: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +13943: +13943: template +13943: +13943: _OIter +13943: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +13943: +13943: template +13943: +13943: void +13943: sort(_RAIter, _RAIter); +13943: +13943: template +13943: +13943: void +13943: sort(_RAIter, _RAIter, _Compare); +13943: +13943: template +13943: void +13943: stable_sort(_RAIter, _RAIter); +13943: +13943: template +13943: void +13943: stable_sort(_RAIter, _RAIter, _Compare); +13943: +13943: template +13943: +13943: _OIter +13943: transform(_IIter, _IIter, _OIter, _UnaryOperation); +13943: +13943: template +13943: +13943: _OIter +13943: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); +13943: +13943: template +13943: +13943: _OIter +13943: unique_copy(_IIter, _IIter, _OIter); +13943: +13943: template +13943: +13943: _OIter +13943: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); +13943: +13943: +13943: +13943: } +13943: # 60 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_heap.h" 1 3 +13943: # 63 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _Distance +13943: __is_heap_until(_RandomAccessIterator __first, _Distance __n, +13943: _Compare& __comp) +13943: { +13943: _Distance __parent = 0; +13943: for (_Distance __child = 1; __child < __n; ++__child) +13943: { +13943: if (__comp(__first + __parent, __first + __child)) +13943: return __child; +13943: if ((__child & 1) == 0) +13943: ++__parent; +13943: } +13943: return __n; +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: inline bool +13943: __is_heap(_RandomAccessIterator __first, _Distance __n) +13943: { +13943: __gnu_cxx::__ops::_Iter_less_iter __comp; +13943: return std::__is_heap_until(__first, __n, __comp) == __n; +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) +13943: { +13943: typedef __decltype(__comp) _Cmp; +13943: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +13943: return std::__is_heap_until(__first, __n, __cmp) == __n; +13943: } +13943: +13943: template +13943: +13943: inline bool +13943: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { return std::__is_heap(__first, std::distance(__first, __last)); } +13943: +13943: template +13943: +13943: inline bool +13943: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: return std::__is_heap(__first, std::move(__comp), +13943: std::distance(__first, __last)); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: __push_heap(_RandomAccessIterator __first, +13943: _Distance __holeIndex, _Distance __topIndex, _Tp __value, +13943: _Compare& __comp) +13943: { +13943: _Distance __parent = (__holeIndex - 1) / 2; +13943: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) +13943: { +13943: *(__first + __holeIndex) = std::move(*(__first + __parent)); +13943: __holeIndex = __parent; +13943: __parent = (__holeIndex - 1) / 2; +13943: } +13943: *(__first + __holeIndex) = std::move(__value); +13943: } +13943: # 159 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: typedef typename iterator_traits<_RandomAccessIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _DistanceType; +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: __gnu_cxx::__ops::_Iter_less_val __comp; +13943: _ValueType __value = std::move(*(__last - 1)); +13943: std::__push_heap(__first, _DistanceType((__last - __first) - 1), +13943: _DistanceType(0), std::move(__value), __comp); +13943: } +13943: # 195 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_RandomAccessIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _DistanceType; +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) +13943: __cmp(std::move(__comp)); +13943: _ValueType __value = std::move(*(__last - 1)); +13943: std::__push_heap(__first, _DistanceType((__last - __first) - 1), +13943: _DistanceType(0), std::move(__value), __cmp); +13943: } +13943: +13943: template +13943: +13943: void +13943: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, +13943: _Distance __len, _Tp __value, _Compare __comp) +13943: { +13943: const _Distance __topIndex = __holeIndex; +13943: _Distance __secondChild = __holeIndex; +13943: while (__secondChild < (__len - 1) / 2) +13943: { +13943: __secondChild = 2 * (__secondChild + 1); +13943: if (__comp(__first + __secondChild, +13943: __first + (__secondChild - 1))) +13943: __secondChild--; +13943: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); +13943: __holeIndex = __secondChild; +13943: } +13943: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) +13943: { +13943: __secondChild = 2 * (__secondChild + 1); +13943: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) +13943: ; +13943: __holeIndex = __secondChild - 1; +13943: } +13943: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) +13943: __cmp(std::move(__comp)); +13943: std::__push_heap(__first, __holeIndex, __topIndex, +13943: std::move(__value), __cmp); +13943: } +13943: +13943: template +13943: +13943: inline void +13943: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _RandomAccessIterator __result, _Compare& __comp) +13943: { +13943: typedef typename iterator_traits<_RandomAccessIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _DistanceType; +13943: +13943: _ValueType __value = std::move(*__result); +13943: *__result = std::move(*__first); +13943: std::__adjust_heap(__first, _DistanceType(0), +13943: _DistanceType(__last - __first), +13943: std::move(__value), __comp); +13943: } +13943: # 280 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: if (__last - __first > 1) +13943: { +13943: --__last; +13943: __gnu_cxx::__ops::_Iter_less_iter __comp; +13943: std::__pop_heap(__first, __last, __last, __comp); +13943: } +13943: } +13943: # 314 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: pop_heap(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: if (__last - __first > 1) +13943: { +13943: typedef __decltype(__comp) _Cmp; +13943: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +13943: --__last; +13943: std::__pop_heap(__first, __last, __last, __cmp); +13943: } +13943: } +13943: +13943: template +13943: +13943: void +13943: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare& __comp) +13943: { +13943: typedef typename iterator_traits<_RandomAccessIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _DistanceType; +13943: +13943: if (__last - __first < 2) +13943: return; +13943: +13943: const _DistanceType __len = __last - __first; +13943: _DistanceType __parent = (__len - 2) / 2; +13943: while (true) +13943: { +13943: _ValueType __value = std::move(*(__first + __parent)); +13943: std::__adjust_heap(__first, __parent, __len, std::move(__value), +13943: __comp); +13943: if (__parent == 0) +13943: return; +13943: __parent--; +13943: } +13943: } +13943: # 372 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: __gnu_cxx::__ops::_Iter_less_iter __comp; +13943: std::__make_heap(__first, __last, __comp); +13943: } +13943: # 399 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: typedef __decltype(__comp) _Cmp; +13943: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +13943: std::__make_heap(__first, __last, __cmp); +13943: } +13943: +13943: template +13943: +13943: void +13943: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare& __comp) +13943: { +13943: while (__last - __first > 1) +13943: { +13943: --__last; +13943: std::__pop_heap(__first, __last, __last, __comp); +13943: } +13943: } +13943: # 437 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: __gnu_cxx::__ops::_Iter_less_iter __comp; +13943: std::__sort_heap(__first, __last, __comp); +13943: } +13943: # 465 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: +13943: inline void +13943: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: typedef __decltype(__comp) _Cmp; +13943: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +13943: std::__sort_heap(__first, __last, __cmp); +13943: } +13943: # 494 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _RandomAccessIterator +13943: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: __gnu_cxx::__ops::_Iter_less_iter __comp; +13943: return __first + +13943: std::__is_heap_until(__first, std::distance(__first, __last), __comp); +13943: } +13943: # 523 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _RandomAccessIterator +13943: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: typedef __decltype(__comp) _Cmp; +13943: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +13943: return __first +13943: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); +13943: } +13943: # 548 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { return std::is_heap_until(__first, __last) == __last; } +13943: # 562 "/usr/include/c++/14/bits/stl_heap.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: const auto __dist = std::distance(__first, __last); +13943: typedef __decltype(__comp) _Cmp; +13943: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +13943: return std::__is_heap_until(__first, __dist, __cmp) == __dist; +13943: } +13943: +13943: +13943: +13943: } +13943: # 62 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/uniform_int_dist.h" 1 3 +13943: # 41 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 64 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +13943: namespace __detail +13943: { +13943: +13943: +13943: +13943: template +13943: constexpr bool +13943: _Power_of_2(_Tp __x) +13943: { +13943: return ((__x - 1) & __x) == 0; +13943: } +13943: } +13943: # 87 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +13943: template +13943: class uniform_int_distribution +13943: { +13943: static_assert(std::is_integral<_IntType>::value, +13943: "template argument must be an integral type"); +13943: +13943: public: +13943: +13943: typedef _IntType result_type; +13943: +13943: struct param_type +13943: { +13943: typedef uniform_int_distribution<_IntType> distribution_type; +13943: +13943: param_type() : param_type(0) { } +13943: +13943: explicit +13943: param_type(_IntType __a, +13943: _IntType __b = __gnu_cxx::__int_traits<_IntType>::__max) +13943: : _M_a(__a), _M_b(__b) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: result_type +13943: a() const +13943: { return _M_a; } +13943: +13943: result_type +13943: b() const +13943: { return _M_b; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: private: +13943: _IntType _M_a; +13943: _IntType _M_b; +13943: }; +13943: +13943: public: +13943: +13943: +13943: +13943: uniform_int_distribution() : uniform_int_distribution(0) { } +13943: +13943: +13943: +13943: +13943: explicit +13943: uniform_int_distribution(_IntType __a, +13943: _IntType __b +13943: = __gnu_cxx::__int_traits<_IntType>::__max) +13943: : _M_param(__a, __b) +13943: { } +13943: +13943: explicit +13943: uniform_int_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: reset() { } +13943: +13943: result_type +13943: a() const +13943: { return _M_param.a(); } +13943: +13943: result_type +13943: b() const +13943: { return _M_param.b(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return this->a(); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return this->b(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomBitGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomBitGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomBitGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomBitGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomBitGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const uniform_int_distribution& __d1, +13943: const uniform_int_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomBitGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: +13943: +13943: +13943: template +13943: static _Up +13943: _S_nd(_Urbg& __g, _Up __range) +13943: { +13943: using _Up_traits = __gnu_cxx::__int_traits<_Up>; +13943: using _Wp_traits = __gnu_cxx::__int_traits<_Wp>; +13943: static_assert(!_Up_traits::__is_signed, "U must be unsigned"); +13943: static_assert(!_Wp_traits::__is_signed, "W must be unsigned"); +13943: static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits), +13943: "W must be twice as wide as U"); +13943: +13943: +13943: +13943: +13943: _Wp __product = _Wp(__g()) * _Wp(__range); +13943: _Up __low = _Up(__product); +13943: if (__low < __range) +13943: { +13943: _Up __threshold = -__range % __range; +13943: while (__low < __threshold) +13943: { +13943: __product = _Wp(__g()) * _Wp(__range); +13943: __low = _Up(__product); +13943: } +13943: } +13943: return __product >> _Up_traits::__digits; +13943: } +13943: }; +13943: +13943: template +13943: template +13943: typename uniform_int_distribution<_IntType>::result_type +13943: uniform_int_distribution<_IntType>:: +13943: operator()(_UniformRandomBitGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; +13943: typedef typename make_unsigned::type __utype; +13943: typedef typename common_type<_Gresult_type, __utype>::type __uctype; +13943: +13943: constexpr __uctype __urngmin = _UniformRandomBitGenerator::min(); +13943: constexpr __uctype __urngmax = _UniformRandomBitGenerator::max(); +13943: static_assert( __urngmin < __urngmax, +13943: "Uniform random bit generator must define min() < max()"); +13943: constexpr __uctype __urngrange = __urngmax - __urngmin; +13943: +13943: const __uctype __urange +13943: = __uctype(__param.b()) - __uctype(__param.a()); +13943: +13943: __uctype __ret; +13943: if (__urngrange > __urange) +13943: { +13943: +13943: +13943: const __uctype __uerange = __urange + 1; +13943: # 323 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +13943: if constexpr (__urngrange == 0xffffffffU) +13943: { +13943: +13943: +13943: unsigned int __u32erange = __uerange; +13943: __ret = _S_nd(__urng, __u32erange); +13943: } +13943: else +13943: +13943: { +13943: +13943: const __uctype __scaling = __urngrange / __uerange; +13943: const __uctype __past = __uerange * __scaling; +13943: do +13943: __ret = __uctype(__urng()) - __urngmin; +13943: while (__ret >= __past); +13943: __ret /= __scaling; +13943: } +13943: } +13943: else if (__urngrange < __urange) +13943: { +13943: # 359 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +13943: __uctype __tmp; +13943: do +13943: { +13943: const __uctype __uerngrange = __urngrange + 1; +13943: __tmp = (__uerngrange * operator() +13943: (__urng, param_type(0, __urange / __uerngrange))); +13943: __ret = __tmp + (__uctype(__urng()) - __urngmin); +13943: } +13943: while (__ret > __urange || __ret < __tmp); +13943: } +13943: else +13943: __ret = __uctype(__urng()) - __urngmin; +13943: +13943: return __ret + __param.a(); +13943: } +13943: +13943: +13943: template +13943: template +13943: void +13943: uniform_int_distribution<_IntType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomBitGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; +13943: typedef typename make_unsigned::type __utype; +13943: typedef typename common_type<_Gresult_type, __utype>::type __uctype; +13943: +13943: static_assert( __urng.min() < __urng.max(), +13943: "Uniform random bit generator must define min() < max()"); +13943: +13943: constexpr __uctype __urngmin = __urng.min(); +13943: constexpr __uctype __urngmax = __urng.max(); +13943: constexpr __uctype __urngrange = __urngmax - __urngmin; +13943: const __uctype __urange +13943: = __uctype(__param.b()) - __uctype(__param.a()); +13943: +13943: __uctype __ret; +13943: +13943: if (__urngrange > __urange) +13943: { +13943: if (__detail::_Power_of_2(__urngrange + 1) +13943: && __detail::_Power_of_2(__urange + 1)) +13943: { +13943: while (__f != __t) +13943: { +13943: __ret = __uctype(__urng()) - __urngmin; +13943: *__f++ = (__ret & __urange) + __param.a(); +13943: } +13943: } +13943: else +13943: { +13943: +13943: const __uctype __uerange = __urange + 1; +13943: const __uctype __scaling = __urngrange / __uerange; +13943: const __uctype __past = __uerange * __scaling; +13943: while (__f != __t) +13943: { +13943: do +13943: __ret = __uctype(__urng()) - __urngmin; +13943: while (__ret >= __past); +13943: *__f++ = __ret / __scaling + __param.a(); +13943: } +13943: } +13943: } +13943: else if (__urngrange < __urange) +13943: { +13943: # 444 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +13943: __uctype __tmp; +13943: while (__f != __t) +13943: { +13943: do +13943: { +13943: constexpr __uctype __uerngrange = __urngrange + 1; +13943: __tmp = (__uerngrange * operator() +13943: (__urng, param_type(0, __urange / __uerngrange))); +13943: __ret = __tmp + (__uctype(__urng()) - __urngmin); +13943: } +13943: while (__ret > __urange || __ret < __tmp); +13943: *__f++ = __ret; +13943: } +13943: } +13943: else +13943: while (__f != __t) +13943: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 66 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cstdlib" 1 3 +13943: # 39 "/usr/include/c++/14/cstdlib" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdlib" 3 +13943: # 72 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, +13943: _Iterator __c, _Compare __comp) +13943: { +13943: if (__comp(__a, __b)) +13943: { +13943: if (__comp(__b, __c)) +13943: std::iter_swap(__result, __b); +13943: else if (__comp(__a, __c)) +13943: std::iter_swap(__result, __c); +13943: else +13943: std::iter_swap(__result, __a); +13943: } +13943: else if (__comp(__a, __c)) +13943: std::iter_swap(__result, __a); +13943: else if (__comp(__b, __c)) +13943: std::iter_swap(__result, __c); +13943: else +13943: std::iter_swap(__result, __b); +13943: } +13943: +13943: +13943: template +13943: +13943: inline _InputIterator +13943: __find_if_not(_InputIterator __first, _InputIterator __last, +13943: _Predicate __pred) +13943: { +13943: return std::__find_if(__first, __last, +13943: __gnu_cxx::__ops::__negate(__pred), +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _InputIterator +13943: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) +13943: { +13943: for (; __len; --__len, (void) ++__first) +13943: if (!__pred(__first)) +13943: break; +13943: return __first; +13943: } +13943: # 148 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _ForwardIterator +13943: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, +13943: _Integer __count, _UnaryPredicate __unary_pred, +13943: std::forward_iterator_tag) +13943: { +13943: __first = std::__find_if(__first, __last, __unary_pred); +13943: while (__first != __last) +13943: { +13943: typename iterator_traits<_ForwardIterator>::difference_type +13943: __n = __count; +13943: _ForwardIterator __i = __first; +13943: ++__i; +13943: while (__i != __last && __n != 1 && __unary_pred(__i)) +13943: { +13943: ++__i; +13943: --__n; +13943: } +13943: if (__n == 1) +13943: return __first; +13943: if (__i == __last) +13943: return __last; +13943: __first = std::__find_if(++__i, __last, __unary_pred); +13943: } +13943: return __last; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _RandomAccessIter +13943: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, +13943: _Integer __count, _UnaryPredicate __unary_pred, +13943: std::random_access_iterator_tag) +13943: { +13943: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type +13943: _DistanceType; +13943: +13943: _DistanceType __tailSize = __last - __first; +13943: _DistanceType __remainder = __count; +13943: +13943: while (__remainder <= __tailSize) +13943: { +13943: __first += __remainder; +13943: __tailSize -= __remainder; +13943: +13943: +13943: _RandomAccessIter __backTrack = __first; +13943: while (__unary_pred(--__backTrack)) +13943: { +13943: if (--__remainder == 0) +13943: return (__first - __count); +13943: } +13943: __remainder = __count + 1 - (__first - __backTrack); +13943: } +13943: return __last; +13943: } +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __search_n(_ForwardIterator __first, _ForwardIterator __last, +13943: _Integer __count, +13943: _UnaryPredicate __unary_pred) +13943: { +13943: if (__count <= 0) +13943: return __first; +13943: +13943: if (__count == 1) +13943: return std::__find_if(__first, __last, __unary_pred); +13943: +13943: return std::__search_n_aux(__first, __last, __count, __unary_pred, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: +13943: template +13943: +13943: _ForwardIterator1 +13943: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +13943: forward_iterator_tag, forward_iterator_tag, +13943: _BinaryPredicate __comp) +13943: { +13943: if (__first2 == __last2) +13943: return __last1; +13943: +13943: _ForwardIterator1 __result = __last1; +13943: while (1) +13943: { +13943: _ForwardIterator1 __new_result +13943: = std::__search(__first1, __last1, __first2, __last2, __comp); +13943: if (__new_result == __last1) +13943: return __result; +13943: else +13943: { +13943: __result = __new_result; +13943: __first1 = __new_result; +13943: ++__first1; +13943: } +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: _BidirectionalIterator1 +13943: __find_end(_BidirectionalIterator1 __first1, +13943: _BidirectionalIterator1 __last1, +13943: _BidirectionalIterator2 __first2, +13943: _BidirectionalIterator2 __last2, +13943: bidirectional_iterator_tag, bidirectional_iterator_tag, +13943: _BinaryPredicate __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; +13943: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; +13943: +13943: _RevIterator1 __rlast1(__first1); +13943: _RevIterator2 __rlast2(__first2); +13943: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, +13943: _RevIterator2(__last2), __rlast2, +13943: __comp); +13943: +13943: if (__rresult == __rlast1) +13943: return __last1; +13943: else +13943: { +13943: _BidirectionalIterator1 __result = __rresult.base(); +13943: std::advance(__result, -std::distance(__first2, __last2)); +13943: return __result; +13943: } +13943: } +13943: # 322 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator1 +13943: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__find_end(__first1, __last1, __first2, __last2, +13943: std::__iterator_category(__first1), +13943: std::__iterator_category(__first2), +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: # 371 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator1 +13943: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +13943: _BinaryPredicate __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__find_end(__first1, __last1, __first2, __last2, +13943: std::__iterator_category(__first1), +13943: std::__iterator_category(__first2), +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: # 407 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) +13943: { return __last == std::find_if_not(__first, __last, __pred); } +13943: # 425 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) +13943: { return __last == std::find_if(__first, __last, __pred); } +13943: # 444 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) +13943: { return !std::none_of(__first, __last, __pred); } +13943: # 460 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _InputIterator +13943: find_if_not(_InputIterator __first, _InputIterator __last, +13943: _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: return std::__find_if_not(__first, __last, +13943: __gnu_cxx::__ops::__pred_iter(__pred)); +13943: } +13943: # 485 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_partitioned(_InputIterator __first, _InputIterator __last, +13943: _Predicate __pred) +13943: { +13943: __first = std::find_if_not(__first, __last, __pred); +13943: if (__first == __last) +13943: return true; +13943: ++__first; +13943: return std::none_of(__first, __last, __pred); +13943: } +13943: # 507 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _ForwardIterator +13943: partition_point(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: typedef typename iterator_traits<_ForwardIterator>::difference_type +13943: _DistanceType; +13943: +13943: _DistanceType __len = std::distance(__first, __last); +13943: +13943: while (__len > 0) +13943: { +13943: _DistanceType __half = __len >> 1; +13943: _ForwardIterator __middle = __first; +13943: std::advance(__middle, __half); +13943: if (__pred(*__middle)) +13943: { +13943: __first = __middle; +13943: ++__first; +13943: __len = __len - __half - 1; +13943: } +13943: else +13943: __len = __half; +13943: } +13943: return __first; +13943: } +13943: +13943: +13943: template +13943: +13943: _OutputIterator +13943: __remove_copy_if(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _Predicate __pred) +13943: { +13943: for (; __first != __last; ++__first) +13943: if (!__pred(__first)) +13943: { +13943: *__result = *__first; +13943: ++__result; +13943: } +13943: return __result; +13943: } +13943: # 574 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: remove_copy(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, const _Tp& __value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__remove_copy_if(__first, __last, __result, +13943: __gnu_cxx::__ops::__iter_equals_val(__value)); +13943: } +13943: # 607 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: remove_copy_if(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__remove_copy_if(__first, __last, __result, +13943: __gnu_cxx::__ops::__pred_iter(__pred)); +13943: } +13943: # 642 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: copy_if(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: if (__pred(*__first)) +13943: { +13943: *__result = *__first; +13943: ++__result; +13943: } +13943: return __result; +13943: } +13943: +13943: template +13943: +13943: _OutputIterator +13943: __copy_n(_InputIterator __first, _Size __n, +13943: _OutputIterator __result, input_iterator_tag) +13943: { +13943: return std::__niter_wrap(__result, +13943: __copy_n_a(__first, __n, +13943: std::__niter_base(__result), true)); +13943: } +13943: +13943: template +13943: +13943: inline _OutputIterator +13943: __copy_n(_RandomAccessIterator __first, _Size __n, +13943: _OutputIterator __result, random_access_iterator_tag) +13943: { return std::copy(__first, __first + __n, __result); } +13943: # 698 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: const auto __n2 = std::__size_to_integer(__n); +13943: if (__n2 <= 0) +13943: return __result; +13943: +13943: ; +13943: ; +13943: +13943: return std::__copy_n(__first, __n2, __result, +13943: std::__iterator_category(__first)); +13943: } +13943: # 734 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: pair<_OutputIterator1, _OutputIterator2> +13943: partition_copy(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator1 __out_true, _OutputIterator2 __out_false, +13943: _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: if (__pred(*__first)) +13943: { +13943: *__out_true = *__first; +13943: ++__out_true; +13943: } +13943: else +13943: { +13943: *__out_false = *__first; +13943: ++__out_false; +13943: } +13943: +13943: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); +13943: } +13943: # 785 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: remove(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__remove_if(__first, __last, +13943: __gnu_cxx::__ops::__iter_equals_val(__value)); +13943: } +13943: # 819 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: remove_if(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__remove_if(__first, __last, +13943: __gnu_cxx::__ops::__pred_iter(__pred)); +13943: } +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: if (__first == __last) +13943: return __last; +13943: _ForwardIterator __next = __first; +13943: while (++__next != __last) +13943: { +13943: if (__binary_pred(__first, __next)) +13943: return __first; +13943: __first = __next; +13943: } +13943: return __last; +13943: } +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __unique(_ForwardIterator __first, _ForwardIterator __last, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: +13943: __first = std::__adjacent_find(__first, __last, __binary_pred); +13943: if (__first == __last) +13943: return __last; +13943: +13943: +13943: _ForwardIterator __dest = __first; +13943: ++__first; +13943: while (++__first != __last) +13943: if (!__binary_pred(__dest, __first)) +13943: *++__dest = std::move(*__first); +13943: return ++__dest; +13943: } +13943: # 888 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: unique(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__unique(__first, __last, +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: # 919 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: unique(_ForwardIterator __first, _ForwardIterator __last, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__unique(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _OutputIterator +13943: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, +13943: _OutputIterator __result, _BinaryPredicate __binary_pred, +13943: forward_iterator_tag, output_iterator_tag) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: _ForwardIterator __next = __first; +13943: *__result = *__first; +13943: while (++__next != __last) +13943: if (!__binary_pred(__first, __next)) +13943: { +13943: __first = __next; +13943: *++__result = *__first; +13943: } +13943: return ++__result; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _OutputIterator +13943: __unique_copy(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _BinaryPredicate __binary_pred, +13943: input_iterator_tag, output_iterator_tag) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: typename iterator_traits<_InputIterator>::value_type __value = *__first; +13943: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) +13943: __rebound_pred +13943: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); +13943: *__result = __value; +13943: while (++__first != __last) +13943: if (!__rebound_pred(__first, __value)) +13943: { +13943: __value = *__first; +13943: *++__result = __value; +13943: } +13943: return ++__result; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __unique_copy(_InputIterator __first, _InputIterator __last, +13943: _ForwardIterator __result, _BinaryPredicate __binary_pred, +13943: input_iterator_tag, forward_iterator_tag) +13943: { +13943: +13943: +13943: +13943: +13943: *__result = *__first; +13943: while (++__first != __last) +13943: if (!__binary_pred(__result, __first)) +13943: *++__result = *__first; +13943: return ++__result; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, +13943: bidirectional_iterator_tag) +13943: { +13943: while (true) +13943: if (__first == __last || __first == --__last) +13943: return; +13943: else +13943: { +13943: std::iter_swap(__first, __last); +13943: ++__first; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: random_access_iterator_tag) +13943: { +13943: if (__first == __last) +13943: return; +13943: --__last; +13943: while (__first < __last) +13943: { +13943: std::iter_swap(__first, __last); +13943: ++__first; +13943: --__last; +13943: } +13943: } +13943: # 1080 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline void +13943: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) +13943: { +13943: +13943: +13943: +13943: ; +13943: std::__reverse(__first, __last, std::__iterator_category(__first)); +13943: } +13943: # 1108 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, +13943: _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: while (__first != __last) +13943: { +13943: --__last; +13943: *__result = *__last; +13943: ++__result; +13943: } +13943: return __result; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _EuclideanRingElement +13943: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) +13943: { +13943: while (__n != 0) +13943: { +13943: _EuclideanRingElement __t = __m % __n; +13943: __m = __n; +13943: __n = __t; +13943: } +13943: return __m; +13943: } +13943: +13943: inline namespace _V2 { +13943: +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __rotate(_ForwardIterator __first, +13943: _ForwardIterator __middle, +13943: _ForwardIterator __last, +13943: forward_iterator_tag) +13943: { +13943: if (__first == __middle) +13943: return __last; +13943: else if (__last == __middle) +13943: return __first; +13943: +13943: _ForwardIterator __first2 = __middle; +13943: do +13943: { +13943: std::iter_swap(__first, __first2); +13943: ++__first; +13943: ++__first2; +13943: if (__first == __middle) +13943: __middle = __first2; +13943: } +13943: while (__first2 != __last); +13943: +13943: _ForwardIterator __ret = __first; +13943: +13943: __first2 = __middle; +13943: +13943: while (__first2 != __last) +13943: { +13943: std::iter_swap(__first, __first2); +13943: ++__first; +13943: ++__first2; +13943: if (__first == __middle) +13943: __middle = __first2; +13943: else if (__first2 == __last) +13943: __first2 = __middle; +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: template +13943: +13943: _BidirectionalIterator +13943: __rotate(_BidirectionalIterator __first, +13943: _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last, +13943: bidirectional_iterator_tag) +13943: { +13943: +13943: +13943: +13943: +13943: if (__first == __middle) +13943: return __last; +13943: else if (__last == __middle) +13943: return __first; +13943: +13943: std::__reverse(__first, __middle, bidirectional_iterator_tag()); +13943: std::__reverse(__middle, __last, bidirectional_iterator_tag()); +13943: +13943: while (__first != __middle && __middle != __last) +13943: { +13943: std::iter_swap(__first, --__last); +13943: ++__first; +13943: } +13943: +13943: if (__first == __middle) +13943: { +13943: std::__reverse(__middle, __last, bidirectional_iterator_tag()); +13943: return __last; +13943: } +13943: else +13943: { +13943: std::__reverse(__first, __middle, bidirectional_iterator_tag()); +13943: return __first; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: _RandomAccessIterator +13943: __rotate(_RandomAccessIterator __first, +13943: _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last, +13943: random_access_iterator_tag) +13943: { +13943: +13943: +13943: +13943: +13943: if (__first == __middle) +13943: return __last; +13943: else if (__last == __middle) +13943: return __first; +13943: +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _Distance; +13943: typedef typename iterator_traits<_RandomAccessIterator>::value_type +13943: _ValueType; +13943: +13943: +13943: typedef typename make_unsigned<_Distance>::type _UDistance; +13943: +13943: +13943: +13943: +13943: _Distance __n = __last - __first; +13943: _Distance __k = __middle - __first; +13943: +13943: if (__k == __n - __k) +13943: { +13943: std::swap_ranges(__first, __middle, __middle); +13943: return __middle; +13943: } +13943: +13943: _RandomAccessIterator __p = __first; +13943: _RandomAccessIterator __ret = __first + (__last - __middle); +13943: +13943: for (;;) +13943: { +13943: if (__k < __n - __k) +13943: { +13943: if (__is_pod(_ValueType) && __k == 1) +13943: { +13943: _ValueType __t = std::move(*__p); +13943: std::move(__p + 1, __p + __n, __p); +13943: *(__p + __n - 1) = std::move(__t); +13943: return __ret; +13943: } +13943: _RandomAccessIterator __q = __p + __k; +13943: for (_Distance __i = 0; __i < __n - __k; ++ __i) +13943: { +13943: std::iter_swap(__p, __q); +13943: ++__p; +13943: ++__q; +13943: } +13943: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); +13943: if (__n == 0) +13943: return __ret; +13943: std::swap(__n, __k); +13943: __k = __n - __k; +13943: } +13943: else +13943: { +13943: __k = __n - __k; +13943: if (__is_pod(_ValueType) && __k == 1) +13943: { +13943: _ValueType __t = std::move(*(__p + __n - 1)); +13943: std::move_backward(__p, __p + __n - 1, __p + __n); +13943: *__p = std::move(__t); +13943: return __ret; +13943: } +13943: _RandomAccessIterator __q = __p + __n; +13943: __p = __q - __k; +13943: for (_Distance __i = 0; __i < __n - __k; ++ __i) +13943: { +13943: --__p; +13943: --__q; +13943: std::iter_swap(__p, __q); +13943: } +13943: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); +13943: if (__n == 0) +13943: return __ret; +13943: std::swap(__n, __k); +13943: } +13943: } +13943: } +13943: # 1345 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _ForwardIterator +13943: rotate(_ForwardIterator __first, _ForwardIterator __middle, +13943: _ForwardIterator __last) +13943: { +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__rotate(__first, __middle, __last, +13943: std::__iterator_category(__first)); +13943: } +13943: +13943: } +13943: # 1383 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, +13943: _ForwardIterator __last, _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::copy(__first, __middle, +13943: std::copy(__middle, __last, __result)); +13943: } +13943: +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __partition(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred, forward_iterator_tag) +13943: { +13943: if (__first == __last) +13943: return __first; +13943: +13943: while (__pred(*__first)) +13943: if (++__first == __last) +13943: return __first; +13943: +13943: _ForwardIterator __next = __first; +13943: +13943: while (++__next != __last) +13943: if (__pred(*__next)) +13943: { +13943: std::iter_swap(__first, __next); +13943: ++__first; +13943: } +13943: +13943: return __first; +13943: } +13943: +13943: +13943: template +13943: +13943: _BidirectionalIterator +13943: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, +13943: _Predicate __pred, bidirectional_iterator_tag) +13943: { +13943: while (true) +13943: { +13943: while (true) +13943: if (__first == __last) +13943: return __first; +13943: else if (__pred(*__first)) +13943: ++__first; +13943: else +13943: break; +13943: --__last; +13943: while (true) +13943: if (__first == __last) +13943: return __first; +13943: else if (!bool(__pred(*__last))) +13943: --__last; +13943: else +13943: break; +13943: std::iter_swap(__first, __last); +13943: ++__first; +13943: } +13943: } +13943: # 1464 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: _ForwardIterator +13943: __stable_partition_adaptive(_ForwardIterator __first, +13943: _ForwardIterator __last, +13943: _Predicate __pred, _Distance __len, +13943: _Pointer __buffer, +13943: _Distance __buffer_size) +13943: { +13943: if (__len == 1) +13943: return __first; +13943: +13943: if (__len <= __buffer_size) +13943: { +13943: _ForwardIterator __result1 = __first; +13943: _Pointer __result2 = __buffer; +13943: +13943: +13943: +13943: +13943: *__result2 = std::move(*__first); +13943: ++__result2; +13943: ++__first; +13943: for (; __first != __last; ++__first) +13943: if (__pred(__first)) +13943: { +13943: *__result1 = std::move(*__first); +13943: ++__result1; +13943: } +13943: else +13943: { +13943: *__result2 = std::move(*__first); +13943: ++__result2; +13943: } +13943: +13943: std::move(__buffer, __result2, __result1); +13943: return __result1; +13943: } +13943: +13943: _ForwardIterator __middle = __first; +13943: std::advance(__middle, __len / 2); +13943: _ForwardIterator __left_split = +13943: std::__stable_partition_adaptive(__first, __middle, __pred, +13943: __len / 2, __buffer, +13943: __buffer_size); +13943: +13943: +13943: +13943: _Distance __right_len = __len - __len / 2; +13943: _ForwardIterator __right_split = +13943: std::__find_if_not_n(__middle, __right_len, __pred); +13943: +13943: if (__right_len) +13943: __right_split = +13943: std::__stable_partition_adaptive(__right_split, __last, __pred, +13943: __right_len, +13943: __buffer, __buffer_size); +13943: +13943: return std::rotate(__left_split, __middle, __right_split); +13943: } +13943: +13943: template +13943: _ForwardIterator +13943: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred) +13943: { +13943: __first = std::__find_if_not(__first, __last, __pred); +13943: +13943: if (__first == __last) +13943: return __first; +13943: +13943: typedef typename iterator_traits<_ForwardIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_ForwardIterator>::difference_type +13943: _DistanceType; +13943: +13943: _Temporary_buffer<_ForwardIterator, _ValueType> +13943: __buf(__first, std::distance(__first, __last)); +13943: return +13943: std::__stable_partition_adaptive(__first, __last, __pred, +13943: _DistanceType(__buf.requested_size()), +13943: __buf.begin(), +13943: _DistanceType(__buf.size())); +13943: } +13943: # 1566 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: inline _ForwardIterator +13943: stable_partition(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__stable_partition(__first, __last, +13943: __gnu_cxx::__ops::__pred_iter(__pred)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: __heap_select(_RandomAccessIterator __first, +13943: _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: std::__make_heap(__first, __middle, __comp); +13943: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) +13943: if (__comp(__i, __first)) +13943: std::__pop_heap(__first, __middle, __i, __comp); +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: _RandomAccessIterator +13943: __partial_sort_copy(_InputIterator __first, _InputIterator __last, +13943: _RandomAccessIterator __result_first, +13943: _RandomAccessIterator __result_last, +13943: _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_InputIterator>::value_type +13943: _InputValueType; +13943: typedef iterator_traits<_RandomAccessIterator> _RItTraits; +13943: typedef typename _RItTraits::difference_type _DistanceType; +13943: +13943: if (__result_first == __result_last) +13943: return __result_last; +13943: _RandomAccessIterator __result_real_last = __result_first; +13943: while (__first != __last && __result_real_last != __result_last) +13943: { +13943: *__result_real_last = *__first; +13943: ++__result_real_last; +13943: ++__first; +13943: } +13943: +13943: std::__make_heap(__result_first, __result_real_last, __comp); +13943: while (__first != __last) +13943: { +13943: if (__comp(__first, __result_first)) +13943: std::__adjust_heap(__result_first, _DistanceType(0), +13943: _DistanceType(__result_real_last +13943: - __result_first), +13943: _InputValueType(*__first), __comp); +13943: ++__first; +13943: } +13943: std::__sort_heap(__result_first, __result_real_last, __comp); +13943: return __result_real_last; +13943: } +13943: # 1659 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _RandomAccessIterator +13943: partial_sort_copy(_InputIterator __first, _InputIterator __last, +13943: _RandomAccessIterator __result_first, +13943: _RandomAccessIterator __result_last) +13943: { +13943: # 1674 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__partial_sort_copy(__first, __last, +13943: __result_first, __result_last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 1709 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _RandomAccessIterator +13943: partial_sort_copy(_InputIterator __first, _InputIterator __last, +13943: _RandomAccessIterator __result_first, +13943: _RandomAccessIterator __result_last, +13943: _Compare __comp) +13943: { +13943: # 1726 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__partial_sort_copy(__first, __last, +13943: __result_first, __result_last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: void +13943: __unguarded_linear_insert(_RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: typename iterator_traits<_RandomAccessIterator>::value_type +13943: __val = std::move(*__last); +13943: _RandomAccessIterator __next = __last; +13943: --__next; +13943: while (__comp(__val, __next)) +13943: { +13943: *__last = std::move(*__next); +13943: __last = __next; +13943: --__next; +13943: } +13943: *__last = std::move(__val); +13943: } +13943: +13943: +13943: template +13943: +13943: void +13943: __insertion_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: if (__first == __last) return; +13943: +13943: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +13943: { +13943: if (__comp(__i, __first)) +13943: { +13943: typename iterator_traits<_RandomAccessIterator>::value_type +13943: __val = std::move(*__i); +13943: std::move_backward(__first, __i, __i + 1); +13943: *__first = std::move(__val); +13943: } +13943: else +13943: std::__unguarded_linear_insert(__i, +13943: __gnu_cxx::__ops::__val_comp_iter(__comp)); +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: inline void +13943: __unguarded_insertion_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) +13943: std::__unguarded_linear_insert(__i, +13943: __gnu_cxx::__ops::__val_comp_iter(__comp)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: enum { _S_threshold = 16 }; +13943: +13943: +13943: template +13943: +13943: void +13943: __final_insertion_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: if (__last - __first > int(_S_threshold)) +13943: { +13943: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); +13943: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, +13943: __comp); +13943: } +13943: else +13943: std::__insertion_sort(__first, __last, __comp); +13943: } +13943: +13943: +13943: template +13943: +13943: _RandomAccessIterator +13943: __unguarded_partition(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, +13943: _RandomAccessIterator __pivot, _Compare __comp) +13943: { +13943: while (true) +13943: { +13943: while (__comp(__first, __pivot)) +13943: ++__first; +13943: --__last; +13943: while (__comp(__pivot, __last)) +13943: --__last; +13943: if (!(__first < __last)) +13943: return __first; +13943: std::iter_swap(__first, __last); +13943: ++__first; +13943: } +13943: } +13943: +13943: +13943: template +13943: +13943: inline _RandomAccessIterator +13943: __unguarded_partition_pivot(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: _RandomAccessIterator __mid = __first + (__last - __first) / 2; +13943: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, +13943: __comp); +13943: return std::__unguarded_partition(__first + 1, __last, __first, __comp); +13943: } +13943: +13943: template +13943: +13943: inline void +13943: __partial_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: std::__heap_select(__first, __middle, __last, __comp); +13943: std::__sort_heap(__first, __middle, __comp); +13943: } +13943: +13943: +13943: template +13943: +13943: void +13943: __introsort_loop(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, +13943: _Size __depth_limit, _Compare __comp) +13943: { +13943: while (__last - __first > int(_S_threshold)) +13943: { +13943: if (__depth_limit == 0) +13943: { +13943: std::__partial_sort(__first, __last, __last, __comp); +13943: return; +13943: } +13943: --__depth_limit; +13943: _RandomAccessIterator __cut = +13943: std::__unguarded_partition_pivot(__first, __last, __comp); +13943: std::__introsort_loop(__cut, __last, __depth_limit, __comp); +13943: __last = __cut; +13943: } +13943: } +13943: +13943: +13943: +13943: template +13943: +13943: inline void +13943: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: if (__first != __last) +13943: { +13943: std::__introsort_loop(__first, __last, +13943: std::__lg(__last - __first) * 2, +13943: __comp); +13943: std::__final_insertion_sort(__first, __last, __comp); +13943: } +13943: } +13943: +13943: template +13943: +13943: void +13943: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, +13943: _RandomAccessIterator __last, _Size __depth_limit, +13943: _Compare __comp) +13943: { +13943: while (__last - __first > 3) +13943: { +13943: if (__depth_limit == 0) +13943: { +13943: std::__heap_select(__first, __nth + 1, __last, __comp); +13943: +13943: std::iter_swap(__first, __nth); +13943: return; +13943: } +13943: --__depth_limit; +13943: _RandomAccessIterator __cut = +13943: std::__unguarded_partition_pivot(__first, __last, __comp); +13943: if (__cut <= __nth) +13943: __first = __cut; +13943: else +13943: __last = __cut; +13943: } +13943: std::__insertion_sort(__first, __last, __comp); +13943: } +13943: # 1960 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: lower_bound(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__lower_bound(__first, __last, __val, +13943: __gnu_cxx::__ops::__iter_comp_val(__comp)); +13943: } +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val, _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::difference_type +13943: _DistanceType; +13943: +13943: _DistanceType __len = std::distance(__first, __last); +13943: +13943: while (__len > 0) +13943: { +13943: _DistanceType __half = __len >> 1; +13943: _ForwardIterator __middle = __first; +13943: std::advance(__middle, __half); +13943: if (__comp(__val, __middle)) +13943: __len = __half; +13943: else +13943: { +13943: __first = __middle; +13943: ++__first; +13943: __len = __len - __half - 1; +13943: } +13943: } +13943: return __first; +13943: } +13943: # 2016 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: upper_bound(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__upper_bound(__first, __last, __val, +13943: __gnu_cxx::__ops::__val_less_iter()); +13943: } +13943: # 2047 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: upper_bound(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__upper_bound(__first, __last, __val, +13943: __gnu_cxx::__ops::__val_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: +13943: pair<_ForwardIterator, _ForwardIterator> +13943: __equal_range(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val, +13943: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) +13943: { +13943: typedef typename iterator_traits<_ForwardIterator>::difference_type +13943: _DistanceType; +13943: +13943: _DistanceType __len = std::distance(__first, __last); +13943: +13943: while (__len > 0) +13943: { +13943: _DistanceType __half = __len >> 1; +13943: _ForwardIterator __middle = __first; +13943: std::advance(__middle, __half); +13943: if (__comp_it_val(__middle, __val)) +13943: { +13943: __first = __middle; +13943: ++__first; +13943: __len = __len - __half - 1; +13943: } +13943: else if (__comp_val_it(__val, __middle)) +13943: __len = __half; +13943: else +13943: { +13943: _ForwardIterator __left +13943: = std::__lower_bound(__first, __middle, __val, __comp_it_val); +13943: std::advance(__first, __len); +13943: _ForwardIterator __right +13943: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); +13943: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); +13943: } +13943: } +13943: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); +13943: } +13943: # 2120 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline pair<_ForwardIterator, _ForwardIterator> +13943: equal_range(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__equal_range(__first, __last, __val, +13943: __gnu_cxx::__ops::__iter_less_val(), +13943: __gnu_cxx::__ops::__val_less_iter()); +13943: } +13943: # 2157 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline pair<_ForwardIterator, _ForwardIterator> +13943: equal_range(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: ; +13943: +13943: return std::__equal_range(__first, __last, __val, +13943: __gnu_cxx::__ops::__iter_comp_val(__comp), +13943: __gnu_cxx::__ops::__val_comp_iter(__comp)); +13943: } +13943: # 2191 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: binary_search(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: _ForwardIterator __i +13943: = std::__lower_bound(__first, __last, __val, +13943: __gnu_cxx::__ops::__iter_less_val()); +13943: return __i != __last && !(__val < *__i); +13943: } +13943: # 2225 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: binary_search(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __val, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: ; +13943: +13943: _ForwardIterator __i +13943: = std::__lower_bound(__first, __last, __val, +13943: __gnu_cxx::__ops::__iter_comp_val(__comp)); +13943: return __i != __last && !bool(__comp(__val, *__i)); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: { +13943: if (__comp(__first2, __first1)) +13943: { +13943: *__result = std::move(*__first2); +13943: ++__first2; +13943: } +13943: else +13943: { +13943: *__result = std::move(*__first1); +13943: ++__first1; +13943: } +13943: ++__result; +13943: } +13943: if (__first1 != __last1) +13943: std::move(__first1, __last1, __result); +13943: } +13943: +13943: +13943: template +13943: void +13943: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, +13943: _BidirectionalIterator1 __last1, +13943: _BidirectionalIterator2 __first2, +13943: _BidirectionalIterator2 __last2, +13943: _BidirectionalIterator3 __result, +13943: _Compare __comp) +13943: { +13943: if (__first1 == __last1) +13943: { +13943: std::move_backward(__first2, __last2, __result); +13943: return; +13943: } +13943: else if (__first2 == __last2) +13943: return; +13943: +13943: --__last1; +13943: --__last2; +13943: while (true) +13943: { +13943: if (__comp(__last2, __last1)) +13943: { +13943: *--__result = std::move(*__last1); +13943: if (__first1 == __last1) +13943: { +13943: std::move_backward(__first2, ++__last2, __result); +13943: return; +13943: } +13943: --__last1; +13943: } +13943: else +13943: { +13943: *--__result = std::move(*__last2); +13943: if (__first2 == __last2) +13943: return; +13943: --__last2; +13943: } +13943: } +13943: } +13943: +13943: +13943: template +13943: _BidirectionalIterator1 +13943: __rotate_adaptive(_BidirectionalIterator1 __first, +13943: _BidirectionalIterator1 __middle, +13943: _BidirectionalIterator1 __last, +13943: _Distance __len1, _Distance __len2, +13943: _BidirectionalIterator2 __buffer, +13943: _Distance __buffer_size) +13943: { +13943: _BidirectionalIterator2 __buffer_end; +13943: if (__len1 > __len2 && __len2 <= __buffer_size) +13943: { +13943: if (__len2) +13943: { +13943: __buffer_end = std::move(__middle, __last, __buffer); +13943: std::move_backward(__first, __middle, __last); +13943: return std::move(__buffer, __buffer_end, __first); +13943: } +13943: else +13943: return __first; +13943: } +13943: else if (__len1 <= __buffer_size) +13943: { +13943: if (__len1) +13943: { +13943: __buffer_end = std::move(__first, __middle, __buffer); +13943: std::move(__middle, __last, __first); +13943: return std::move_backward(__buffer, __buffer_end, __last); +13943: } +13943: else +13943: return __last; +13943: } +13943: else +13943: return std::rotate(__first, __middle, __last); +13943: } +13943: +13943: +13943: template +13943: void +13943: __merge_adaptive(_BidirectionalIterator __first, +13943: _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last, +13943: _Distance __len1, _Distance __len2, +13943: _Pointer __buffer, _Compare __comp) +13943: { +13943: if (__len1 <= __len2) +13943: { +13943: _Pointer __buffer_end = std::move(__first, __middle, __buffer); +13943: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, +13943: __first, __comp); +13943: } +13943: else +13943: { +13943: _Pointer __buffer_end = std::move(__middle, __last, __buffer); +13943: std::__move_merge_adaptive_backward(__first, __middle, __buffer, +13943: __buffer_end, __last, __comp); +13943: } +13943: } +13943: +13943: template +13943: void +13943: __merge_adaptive_resize(_BidirectionalIterator __first, +13943: _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last, +13943: _Distance __len1, _Distance __len2, +13943: _Pointer __buffer, _Distance __buffer_size, +13943: _Compare __comp) +13943: { +13943: if (__len1 <= __buffer_size || __len2 <= __buffer_size) +13943: std::__merge_adaptive(__first, __middle, __last, +13943: __len1, __len2, __buffer, __comp); +13943: else +13943: { +13943: _BidirectionalIterator __first_cut = __first; +13943: _BidirectionalIterator __second_cut = __middle; +13943: _Distance __len11 = 0; +13943: _Distance __len22 = 0; +13943: if (__len1 > __len2) +13943: { +13943: __len11 = __len1 / 2; +13943: std::advance(__first_cut, __len11); +13943: __second_cut +13943: = std::__lower_bound(__middle, __last, *__first_cut, +13943: __gnu_cxx::__ops::__iter_comp_val(__comp)); +13943: __len22 = std::distance(__middle, __second_cut); +13943: } +13943: else +13943: { +13943: __len22 = __len2 / 2; +13943: std::advance(__second_cut, __len22); +13943: __first_cut +13943: = std::__upper_bound(__first, __middle, *__second_cut, +13943: __gnu_cxx::__ops::__val_comp_iter(__comp)); +13943: __len11 = std::distance(__first, __first_cut); +13943: } +13943: +13943: _BidirectionalIterator __new_middle +13943: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, +13943: _Distance(__len1 - __len11), __len22, +13943: __buffer, __buffer_size); +13943: std::__merge_adaptive_resize(__first, __first_cut, __new_middle, +13943: __len11, __len22, +13943: __buffer, __buffer_size, __comp); +13943: std::__merge_adaptive_resize(__new_middle, __second_cut, __last, +13943: _Distance(__len1 - __len11), +13943: _Distance(__len2 - __len22), +13943: __buffer, __buffer_size, __comp); +13943: } +13943: } +13943: +13943: +13943: template +13943: void +13943: __merge_without_buffer(_BidirectionalIterator __first, +13943: _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last, +13943: _Distance __len1, _Distance __len2, +13943: _Compare __comp) +13943: { +13943: if (__len1 == 0 || __len2 == 0) +13943: return; +13943: +13943: if (__len1 + __len2 == 2) +13943: { +13943: if (__comp(__middle, __first)) +13943: std::iter_swap(__first, __middle); +13943: return; +13943: } +13943: +13943: _BidirectionalIterator __first_cut = __first; +13943: _BidirectionalIterator __second_cut = __middle; +13943: _Distance __len11 = 0; +13943: _Distance __len22 = 0; +13943: if (__len1 > __len2) +13943: { +13943: __len11 = __len1 / 2; +13943: std::advance(__first_cut, __len11); +13943: __second_cut +13943: = std::__lower_bound(__middle, __last, *__first_cut, +13943: __gnu_cxx::__ops::__iter_comp_val(__comp)); +13943: __len22 = std::distance(__middle, __second_cut); +13943: } +13943: else +13943: { +13943: __len22 = __len2 / 2; +13943: std::advance(__second_cut, __len22); +13943: __first_cut +13943: = std::__upper_bound(__first, __middle, *__second_cut, +13943: __gnu_cxx::__ops::__val_comp_iter(__comp)); +13943: __len11 = std::distance(__first, __first_cut); +13943: } +13943: +13943: _BidirectionalIterator __new_middle +13943: = std::rotate(__first_cut, __middle, __second_cut); +13943: std::__merge_without_buffer(__first, __first_cut, __new_middle, +13943: __len11, __len22, __comp); +13943: std::__merge_without_buffer(__new_middle, __second_cut, __last, +13943: __len1 - __len11, __len2 - __len22, __comp); +13943: } +13943: +13943: template +13943: void +13943: __inplace_merge(_BidirectionalIterator __first, +13943: _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last, +13943: _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_BidirectionalIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_BidirectionalIterator>::difference_type +13943: _DistanceType; +13943: +13943: if (__first == __middle || __middle == __last) +13943: return; +13943: +13943: const _DistanceType __len1 = std::distance(__first, __middle); +13943: const _DistanceType __len2 = std::distance(__middle, __last); +13943: +13943: +13943: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; +13943: +13943: +13943: _TmpBuf __buf(__first, std::min(__len1, __len2)); +13943: +13943: if (__builtin_expect(__buf.size() == __buf.requested_size(), true)) +13943: std::__merge_adaptive +13943: (__first, __middle, __last, __len1, __len2, __buf.begin(), __comp); +13943: else if (__builtin_expect(__buf.begin() == 0, false)) +13943: std::__merge_without_buffer +13943: (__first, __middle, __last, __len1, __len2, __comp); +13943: else +13943: std::__merge_adaptive_resize +13943: (__first, __middle, __last, __len1, __len2, __buf.begin(), +13943: _DistanceType(__buf.size()), __comp); +13943: +13943: +13943: +13943: +13943: } +13943: # 2540 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: inline void +13943: inplace_merge(_BidirectionalIterator __first, +13943: _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: std::__inplace_merge(__first, __middle, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 2581 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: inline void +13943: inplace_merge(_BidirectionalIterator __first, +13943: _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: std::__inplace_merge(__first, __middle, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: +13943: +13943: template +13943: _OutputIterator +13943: __move_merge(_InputIterator __first1, _InputIterator __last1, +13943: _InputIterator __first2, _InputIterator __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: { +13943: if (__comp(__first2, __first1)) +13943: { +13943: *__result = std::move(*__first2); +13943: ++__first2; +13943: } +13943: else +13943: { +13943: *__result = std::move(*__first1); +13943: ++__first1; +13943: } +13943: ++__result; +13943: } +13943: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) +13943: +13943: ; +13943: } +13943: +13943: template +13943: void +13943: __merge_sort_loop(_RandomAccessIterator1 __first, +13943: _RandomAccessIterator1 __last, +13943: _RandomAccessIterator2 __result, _Distance __step_size, +13943: _Compare __comp) +13943: { +13943: const _Distance __two_step = 2 * __step_size; +13943: +13943: while (__last - __first >= __two_step) +13943: { +13943: __result = std::__move_merge(__first, __first + __step_size, +13943: __first + __step_size, +13943: __first + __two_step, +13943: __result, __comp); +13943: __first += __two_step; +13943: } +13943: __step_size = std::min(_Distance(__last - __first), __step_size); +13943: +13943: std::__move_merge(__first, __first + __step_size, +13943: __first + __step_size, __last, __result, __comp); +13943: } +13943: +13943: template +13943: +13943: void +13943: __chunk_insertion_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, +13943: _Distance __chunk_size, _Compare __comp) +13943: { +13943: while (__last - __first >= __chunk_size) +13943: { +13943: std::__insertion_sort(__first, __first + __chunk_size, __comp); +13943: __first += __chunk_size; +13943: } +13943: std::__insertion_sort(__first, __last, __comp); +13943: } +13943: +13943: enum { _S_chunk_size = 7 }; +13943: +13943: template +13943: void +13943: __merge_sort_with_buffer(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, +13943: _Pointer __buffer, _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _Distance; +13943: +13943: const _Distance __len = __last - __first; +13943: const _Pointer __buffer_last = __buffer + __len; +13943: +13943: _Distance __step_size = _S_chunk_size; +13943: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); +13943: +13943: while (__step_size < __len) +13943: { +13943: std::__merge_sort_loop(__first, __last, __buffer, +13943: __step_size, __comp); +13943: __step_size *= 2; +13943: std::__merge_sort_loop(__buffer, __buffer_last, __first, +13943: __step_size, __comp); +13943: __step_size *= 2; +13943: } +13943: } +13943: +13943: template +13943: void +13943: __stable_sort_adaptive(_RandomAccessIterator __first, +13943: _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last, +13943: _Pointer __buffer, _Compare __comp) +13943: { +13943: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); +13943: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); +13943: +13943: std::__merge_adaptive(__first, __middle, __last, +13943: __middle - __first, __last - __middle, +13943: __buffer, __comp); +13943: } +13943: +13943: template +13943: void +13943: __stable_sort_adaptive_resize(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, +13943: _Pointer __buffer, _Distance __buffer_size, +13943: _Compare __comp) +13943: { +13943: const _Distance __len = (__last - __first + 1) / 2; +13943: const _RandomAccessIterator __middle = __first + __len; +13943: if (__len > __buffer_size) +13943: { +13943: std::__stable_sort_adaptive_resize(__first, __middle, __buffer, +13943: __buffer_size, __comp); +13943: std::__stable_sort_adaptive_resize(__middle, __last, __buffer, +13943: __buffer_size, __comp); +13943: std::__merge_adaptive_resize(__first, __middle, __last, +13943: _Distance(__middle - __first), +13943: _Distance(__last - __middle), +13943: __buffer, __buffer_size, +13943: __comp); +13943: } +13943: else +13943: std::__stable_sort_adaptive(__first, __middle, __last, +13943: __buffer, __comp); +13943: } +13943: +13943: +13943: template +13943: void +13943: __inplace_stable_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: if (__last - __first < 15) +13943: { +13943: std::__insertion_sort(__first, __last, __comp); +13943: return; +13943: } +13943: _RandomAccessIterator __middle = __first + (__last - __first) / 2; +13943: std::__inplace_stable_sort(__first, __middle, __comp); +13943: std::__inplace_stable_sort(__middle, __last, __comp); +13943: std::__merge_without_buffer(__first, __middle, __last, +13943: __middle - __first, +13943: __last - __middle, +13943: __comp); +13943: } +13943: # 2767 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: bool +13943: __includes(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: { +13943: if (__comp(__first2, __first1)) +13943: return false; +13943: if (!__comp(__first1, __first2)) +13943: ++__first2; +13943: ++__first1; +13943: } +13943: +13943: return __first2 == __last2; +13943: } +13943: # 2805 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: includes(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__includes(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 2850 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: includes(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__includes(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: # 2886 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: bool +13943: __next_permutation(_BidirectionalIterator __first, +13943: _BidirectionalIterator __last, _Compare __comp) +13943: { +13943: if (__first == __last) +13943: return false; +13943: _BidirectionalIterator __i = __first; +13943: ++__i; +13943: if (__i == __last) +13943: return false; +13943: __i = __last; +13943: --__i; +13943: +13943: for(;;) +13943: { +13943: _BidirectionalIterator __ii = __i; +13943: --__i; +13943: if (__comp(__i, __ii)) +13943: { +13943: _BidirectionalIterator __j = __last; +13943: while (!__comp(__i, --__j)) +13943: {} +13943: std::iter_swap(__i, __j); +13943: std::__reverse(__ii, __last, +13943: std::__iterator_category(__first)); +13943: return true; +13943: } +13943: if (__i == __first) +13943: { +13943: std::__reverse(__first, __last, +13943: std::__iterator_category(__first)); +13943: return false; +13943: } +13943: } +13943: } +13943: # 2936 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline bool +13943: next_permutation(_BidirectionalIterator __first, +13943: _BidirectionalIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__next_permutation +13943: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 2969 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline bool +13943: next_permutation(_BidirectionalIterator __first, +13943: _BidirectionalIterator __last, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__next_permutation +13943: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: +13943: bool +13943: __prev_permutation(_BidirectionalIterator __first, +13943: _BidirectionalIterator __last, _Compare __comp) +13943: { +13943: if (__first == __last) +13943: return false; +13943: _BidirectionalIterator __i = __first; +13943: ++__i; +13943: if (__i == __last) +13943: return false; +13943: __i = __last; +13943: --__i; +13943: +13943: for(;;) +13943: { +13943: _BidirectionalIterator __ii = __i; +13943: --__i; +13943: if (__comp(__ii, __i)) +13943: { +13943: _BidirectionalIterator __j = __last; +13943: while (!__comp(--__j, __i)) +13943: {} +13943: std::iter_swap(__i, __j); +13943: std::__reverse(__ii, __last, +13943: std::__iterator_category(__first)); +13943: return true; +13943: } +13943: if (__i == __first) +13943: { +13943: std::__reverse(__first, __last, +13943: std::__iterator_category(__first)); +13943: return false; +13943: } +13943: } +13943: } +13943: # 3039 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline bool +13943: prev_permutation(_BidirectionalIterator __first, +13943: _BidirectionalIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__prev_permutation(__first, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 3072 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline bool +13943: prev_permutation(_BidirectionalIterator __first, +13943: _BidirectionalIterator __last, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__prev_permutation(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: +13943: _OutputIterator +13943: __replace_copy_if(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, +13943: _Predicate __pred, const _Tp& __new_value) +13943: { +13943: for (; __first != __last; ++__first, (void)++__result) +13943: if (__pred(__first)) +13943: *__result = __new_value; +13943: else +13943: *__result = *__first; +13943: return __result; +13943: } +13943: # 3124 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: replace_copy(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, +13943: const _Tp& __old_value, const _Tp& __new_value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__replace_copy_if(__first, __last, __result, +13943: __gnu_cxx::__ops::__iter_equals_val(__old_value), +13943: __new_value); +13943: } +13943: # 3159 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: replace_copy_if(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, +13943: _Predicate __pred, const _Tp& __new_value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__replace_copy_if(__first, __last, __result, +13943: __gnu_cxx::__ops::__pred_iter(__pred), +13943: __new_value); +13943: } +13943: # 3188 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_sorted(_ForwardIterator __first, _ForwardIterator __last) +13943: { return std::is_sorted_until(__first, __last) == __last; } +13943: # 3203 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_sorted(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { return std::is_sorted_until(__first, __last, __comp) == __last; } +13943: +13943: template +13943: +13943: _ForwardIterator +13943: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: if (__first == __last) +13943: return __last; +13943: +13943: _ForwardIterator __next = __first; +13943: for (++__next; __next != __last; __first = __next, (void)++__next) +13943: if (__comp(__next, __first)) +13943: return __next; +13943: return __next; +13943: } +13943: # 3234 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__is_sorted_until(__first, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 3259 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__is_sorted_until(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: # 3285 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline pair +13943: minmax(const _Tp& __a, const _Tp& __b) +13943: { +13943: +13943: +13943: +13943: return __b < __a ? pair(__b, __a) +13943: : pair(__a, __b); +13943: } +13943: # 3306 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline pair +13943: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) +13943: { +13943: return __comp(__b, __a) ? pair(__b, __a) +13943: : pair(__a, __b); +13943: } +13943: +13943: template +13943: constexpr +13943: pair<_ForwardIterator, _ForwardIterator> +13943: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: _ForwardIterator __next = __first; +13943: if (__first == __last +13943: || ++__next == __last) +13943: return std::make_pair(__first, __first); +13943: +13943: _ForwardIterator __min{}, __max{}; +13943: if (__comp(__next, __first)) +13943: { +13943: __min = __next; +13943: __max = __first; +13943: } +13943: else +13943: { +13943: __min = __first; +13943: __max = __next; +13943: } +13943: +13943: __first = __next; +13943: ++__first; +13943: +13943: while (__first != __last) +13943: { +13943: __next = __first; +13943: if (++__next == __last) +13943: { +13943: if (__comp(__first, __min)) +13943: __min = __first; +13943: else if (!__comp(__first, __max)) +13943: __max = __first; +13943: break; +13943: } +13943: +13943: if (__comp(__next, __first)) +13943: { +13943: if (__comp(__next, __min)) +13943: __min = __next; +13943: if (!__comp(__first, __max)) +13943: __max = __first; +13943: } +13943: else +13943: { +13943: if (__comp(__first, __min)) +13943: __min = __first; +13943: if (!__comp(__next, __max)) +13943: __max = __next; +13943: } +13943: +13943: __first = __next; +13943: ++__first; +13943: } +13943: +13943: return std::make_pair(__min, __max); +13943: } +13943: # 3386 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline pair<_ForwardIterator, _ForwardIterator> +13943: minmax_element(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__minmax_element(__first, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 3414 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline pair<_ForwardIterator, _ForwardIterator> +13943: minmax_element(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__minmax_element(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline pair<_Tp, _Tp> +13943: minmax(initializer_list<_Tp> __l) +13943: { +13943: ; +13943: pair __p = +13943: std::__minmax_element(__l.begin(), __l.end(), +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: return std::make_pair(*__p.first, *__p.second); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline pair<_Tp, _Tp> +13943: minmax(initializer_list<_Tp> __l, _Compare __comp) +13943: { +13943: ; +13943: pair __p = +13943: std::__minmax_element(__l.begin(), __l.end(), +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: return std::make_pair(*__p.first, *__p.second); +13943: } +13943: # 3470 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _BinaryPredicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__is_permutation(__first1, __last1, __first2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred)); +13943: } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: template +13943: +13943: bool +13943: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +13943: _BinaryPredicate __pred) +13943: { +13943: using _Cat1 +13943: = typename iterator_traits<_ForwardIterator1>::iterator_category; +13943: using _Cat2 +13943: = typename iterator_traits<_ForwardIterator2>::iterator_category; +13943: using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>; +13943: using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>; +13943: constexpr bool __ra_iters = __and_<_It1_is_RA, _It2_is_RA>::value; +13943: if constexpr (__ra_iters) +13943: { +13943: if ((__last1 - __first1) != (__last2 - __first2)) +13943: return false; +13943: } +13943: +13943: +13943: +13943: for (; __first1 != __last1 && __first2 != __last2; +13943: ++__first1, (void)++__first2) +13943: if (!__pred(__first1, __first2)) +13943: break; +13943: +13943: if constexpr (__ra_iters) +13943: { +13943: if (__first1 == __last1) +13943: return true; +13943: } +13943: else +13943: { +13943: auto __d1 = std::distance(__first1, __last1); +13943: auto __d2 = std::distance(__first2, __last2); +13943: if (__d1 == 0 && __d2 == 0) +13943: return true; +13943: if (__d1 != __d2) +13943: return false; +13943: } +13943: +13943: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) +13943: { +13943: if (__scan != std::__find_if(__first1, __scan, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) +13943: continue; +13943: +13943: auto __matches = std::__count_if(__first2, __last2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); +13943: if (0 == __matches +13943: || std::__count_if(__scan, __last1, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) +13943: != __matches) +13943: return false; +13943: } +13943: return true; +13943: } +13943: #pragma GCC diagnostic pop +13943: # 3566 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2) +13943: { +13943: ; +13943: ; +13943: +13943: return +13943: std::__is_permutation(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: # 3594 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +13943: _BinaryPredicate __pred) +13943: { +13943: ; +13943: ; +13943: +13943: return std::__is_permutation(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__pred)); +13943: } +13943: # 3622 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[nodiscard]] constexpr const _Tp& +13943: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!(__hi < __lo))) std::__glibcxx_assert_fail(); } while (false); +13943: return std::min(std::max(__val, __lo), __hi); +13943: } +13943: # 3642 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[nodiscard]] constexpr const _Tp& +13943: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi, _Compare __comp) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(!__comp(__hi, __lo))) std::__glibcxx_assert_fail(); } while (false); +13943: return std::min(std::max(__val, __lo, __comp), __hi, __comp); +13943: } +13943: # 3672 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: pair<_IntType, _IntType> +13943: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, +13943: _UniformRandomBitGenerator&& __g) +13943: { +13943: _IntType __x +13943: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); +13943: return std::make_pair(__x / __b1, __x % __b1); +13943: } +13943: # 3694 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: void +13943: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _UniformRandomNumberGenerator&& __g) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return; +13943: +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _DistanceType; +13943: +13943: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; +13943: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; +13943: typedef typename __distr_type::param_type __p_type; +13943: +13943: typedef typename remove_reference<_UniformRandomNumberGenerator>::type +13943: _Gen; +13943: typedef typename common_type::type +13943: __uc_type; +13943: +13943: const __uc_type __urngrange = __g.max() - __g.min(); +13943: const __uc_type __urange = __uc_type(__last - __first); +13943: +13943: if (__urngrange / __urange >= __urange) +13943: +13943: { +13943: _RandomAccessIterator __i = __first + 1; +13943: +13943: +13943: +13943: +13943: +13943: if ((__urange % 2) == 0) +13943: { +13943: __distr_type __d{0, 1}; +13943: std::iter_swap(__i++, __first + __d(__g)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: while (__i != __last) +13943: { +13943: const __uc_type __swap_range = __uc_type(__i - __first) + 1; +13943: +13943: const pair<__uc_type, __uc_type> __pospos = +13943: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); +13943: +13943: std::iter_swap(__i++, __first + __pospos.first); +13943: std::iter_swap(__i++, __first + __pospos.second); +13943: } +13943: +13943: return; +13943: } +13943: +13943: __distr_type __d; +13943: +13943: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +13943: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); +13943: } +13943: +13943: +13943: +13943: # 3777 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _Function +13943: for_each(_InputIterator __first, _InputIterator __last, _Function __f) +13943: { +13943: +13943: +13943: ; +13943: for (; __first != __last; ++__first) +13943: __f(*__first); +13943: return __f; +13943: } +13943: # 3803 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _InputIterator +13943: for_each_n(_InputIterator __first, _Size __n, _Function __f) +13943: { +13943: auto __n2 = std::__size_to_integer(__n); +13943: using _Cat = typename iterator_traits<_InputIterator>::iterator_category; +13943: if constexpr (is_base_of_v) +13943: { +13943: if (__n2 <= 0) +13943: return __first; +13943: auto __last = __first + __n2; +13943: std::for_each(__first, __last, std::move(__f)); +13943: return __last; +13943: } +13943: else +13943: { +13943: while (__n2-->0) +13943: { +13943: __f(*__first); +13943: ++__first; +13943: } +13943: return __first; +13943: } +13943: } +13943: # 3839 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _InputIterator +13943: find(_InputIterator __first, _InputIterator __last, +13943: const _Tp& __val) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: return std::__find_if(__first, __last, +13943: __gnu_cxx::__ops::__iter_equals_val(__val)); +13943: } +13943: # 3864 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _InputIterator +13943: find_if(_InputIterator __first, _InputIterator __last, +13943: _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__find_if(__first, __last, +13943: __gnu_cxx::__ops::__pred_iter(__pred)); +13943: } +13943: # 3896 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _InputIterator +13943: find_first_of(_InputIterator __first1, _InputIterator __last1, +13943: _ForwardIterator __first2, _ForwardIterator __last2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: for (; __first1 != __last1; ++__first1) +13943: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) +13943: if (*__first1 == *__iter) +13943: return __first1; +13943: return __last1; +13943: } +13943: # 3937 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: _InputIterator +13943: find_first_of(_InputIterator __first1, _InputIterator __last1, +13943: _ForwardIterator __first2, _ForwardIterator __last2, +13943: _BinaryPredicate __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: for (; __first1 != __last1; ++__first1) +13943: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) +13943: if (__comp(*__first1, *__iter)) +13943: return __first1; +13943: return __last1; +13943: } +13943: # 3970 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__adjacent_find(__first, __last, +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: # 3996 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__adjacent_find(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +13943: } +13943: # 4022 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline typename iterator_traits<_InputIterator>::difference_type +13943: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__count_if(__first, __last, +13943: __gnu_cxx::__ops::__iter_equals_val(__value)); +13943: } +13943: # 4046 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline typename iterator_traits<_InputIterator>::difference_type +13943: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__count_if(__first, __last, +13943: __gnu_cxx::__ops::__pred_iter(__pred)); +13943: } +13943: # 4087 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator1 +13943: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__search(__first1, __last1, __first2, __last2, +13943: __gnu_cxx::__ops::__iter_equal_to_iter()); +13943: } +13943: # 4121 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: search_n(_ForwardIterator __first, _ForwardIterator __last, +13943: _Integer __count, const _Tp& __val) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__search_n(__first, __last, __count, +13943: __gnu_cxx::__ops::__iter_equals_val(__val)); +13943: } +13943: # 4155 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: search_n(_ForwardIterator __first, _ForwardIterator __last, +13943: _Integer __count, const _Tp& __val, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__search_n(__first, __last, __count, +13943: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); +13943: } +13943: # 4181 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline _ForwardIterator +13943: search(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Searcher& __searcher) +13943: { return __searcher(__first, __last).first; } +13943: # 4205 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: transform(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _UnaryOperation __unary_op) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first, (void)++__result) +13943: *__result = __unary_op(*__first); +13943: return __result; +13943: } +13943: # 4243 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: transform(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _OutputIterator __result, +13943: _BinaryOperation __binary_op) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) +13943: *__result = __binary_op(*__first1, *__first2); +13943: return __result; +13943: } +13943: # 4277 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: void +13943: replace(_ForwardIterator __first, _ForwardIterator __last, +13943: const _Tp& __old_value, const _Tp& __new_value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: if (*__first == __old_value) +13943: *__first = __new_value; +13943: } +13943: # 4310 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: void +13943: replace_if(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred, const _Tp& __new_value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: if (__pred(*__first)) +13943: *__first = __new_value; +13943: } +13943: # 4342 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: void +13943: generate(_ForwardIterator __first, _ForwardIterator __last, +13943: _Generator __gen) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: *__first = __gen(); +13943: } +13943: # 4375 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: typedef __decltype(std::__size_to_integer(__n)) _IntSize; +13943: for (_IntSize __niter = std::__size_to_integer(__n); +13943: __niter > 0; --__niter, (void) ++__first) +13943: *__first = __gen(); +13943: return __first; +13943: } +13943: # 4410 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: unique_copy(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return __result; +13943: return std::__unique_copy(__first, __last, __result, +13943: __gnu_cxx::__ops::__iter_equal_to_iter(), +13943: std::__iterator_category(__first), +13943: std::__iterator_category(__result)); +13943: } +13943: # 4450 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: unique_copy(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, +13943: _BinaryPredicate __binary_pred) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return __result; +13943: return std::__unique_copy(__first, __last, __result, +13943: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), +13943: std::__iterator_category(__first), +13943: std::__iterator_category(__result)); +13943: } +13943: # 4489 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +13943: inline void +13943: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first != __last) +13943: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +13943: { +13943: +13943: _RandomAccessIterator __j = __first +13943: + std::rand() % ((__i - __first) + 1); +13943: if (__i != __j) +13943: std::iter_swap(__i, __j); +13943: } +13943: } +13943: # 4528 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +13943: void +13943: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: +13943: _RandomNumberGenerator&& __rand) +13943: +13943: +13943: +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return; +13943: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +13943: { +13943: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); +13943: if (__i != __j) +13943: std::iter_swap(__i, __j); +13943: } +13943: } +13943: # 4570 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _ForwardIterator +13943: partition(_ForwardIterator __first, _ForwardIterator __last, +13943: _Predicate __pred) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: return std::__partition(__first, __last, __pred, +13943: std::__iterator_category(__first)); +13943: } +13943: # 4605 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline void +13943: partial_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: std::__partial_sort(__first, __middle, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 4644 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline void +13943: partial_sort(_RandomAccessIterator __first, +13943: _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: std::__partial_sort(__first, __middle, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: # 4681 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline void +13943: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, +13943: _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: if (__first == __last || __nth == __last) +13943: return; +13943: +13943: std::__introselect(__first, __nth, __last, +13943: std::__lg(__last - __first) * 2, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 4721 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline void +13943: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, +13943: _RandomAccessIterator __last, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: +13943: if (__first == __last || __nth == __last) +13943: return; +13943: +13943: std::__introselect(__first, __nth, __last, +13943: std::__lg(__last - __first) * 2, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: # 4759 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline void +13943: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 4790 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline void +13943: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: +13943: _OutputIterator +13943: __merge(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: { +13943: if (__comp(__first2, __first1)) +13943: { +13943: *__result = *__first2; +13943: ++__first2; +13943: } +13943: else +13943: { +13943: *__result = *__first1; +13943: ++__first1; +13943: } +13943: ++__result; +13943: } +13943: return std::copy(__first2, __last2, +13943: std::copy(__first1, __last1, __result)); +13943: } +13943: # 4853 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: merge(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__merge(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 4904 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: merge(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__merge(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: inline void +13943: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: typedef typename iterator_traits<_RandomAccessIterator>::value_type +13943: _ValueType; +13943: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +13943: _DistanceType; +13943: +13943: if (__first == __last) +13943: return; +13943: +13943: +13943: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; +13943: +13943: +13943: _TmpBuf __buf(__first, (__last - __first + 1) / 2); +13943: +13943: if (__builtin_expect(__buf.requested_size() == __buf.size(), true)) +13943: std::__stable_sort_adaptive(__first, +13943: __first + _DistanceType(__buf.size()), +13943: __last, __buf.begin(), __comp); +13943: else if (__builtin_expect(__buf.begin() == 0, false)) +13943: std::__inplace_stable_sort(__first, __last, __comp); +13943: else +13943: std::__stable_sort_adaptive_resize(__first, __last, __buf.begin(), +13943: _DistanceType(__buf.size()), __comp); +13943: +13943: +13943: +13943: } +13943: # 4982 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: inline void +13943: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: std::__stable_sort(__first, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 5016 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: inline void +13943: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: std::__stable_sort(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: +13943: _OutputIterator +13943: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: { +13943: if (__comp(__first1, __first2)) +13943: { +13943: *__result = *__first1; +13943: ++__first1; +13943: } +13943: else if (__comp(__first2, __first1)) +13943: { +13943: *__result = *__first2; +13943: ++__first2; +13943: } +13943: else +13943: { +13943: *__result = *__first1; +13943: ++__first1; +13943: ++__first2; +13943: } +13943: ++__result; +13943: } +13943: return std::copy(__first2, __last2, +13943: std::copy(__first1, __last1, __result)); +13943: } +13943: # 5086 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_union(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_union(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 5137 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_union(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_union(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: +13943: _OutputIterator +13943: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: if (__comp(__first1, __first2)) +13943: ++__first1; +13943: else if (__comp(__first2, __first1)) +13943: ++__first2; +13943: else +13943: { +13943: *__result = *__first1; +13943: ++__first1; +13943: ++__first2; +13943: ++__result; +13943: } +13943: return __result; +13943: } +13943: # 5210 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_intersection(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 5260 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_intersection(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: +13943: _OutputIterator +13943: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: if (__comp(__first1, __first2)) +13943: { +13943: *__result = *__first1; +13943: ++__first1; +13943: ++__result; +13943: } +13943: else if (__comp(__first2, __first1)) +13943: ++__first2; +13943: else +13943: { +13943: ++__first1; +13943: ++__first2; +13943: } +13943: return std::copy(__first1, __last1, __result); +13943: } +13943: # 5335 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_difference(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 5387 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_difference(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: +13943: _OutputIterator +13943: __set_symmetric_difference(_InputIterator1 __first1, +13943: _InputIterator1 __last1, +13943: _InputIterator2 __first2, +13943: _InputIterator2 __last2, +13943: _OutputIterator __result, +13943: _Compare __comp) +13943: { +13943: while (__first1 != __last1 && __first2 != __last2) +13943: if (__comp(__first1, __first2)) +13943: { +13943: *__result = *__first1; +13943: ++__first1; +13943: ++__result; +13943: } +13943: else if (__comp(__first2, __first1)) +13943: { +13943: *__result = *__first2; +13943: ++__first2; +13943: ++__result; +13943: } +13943: else +13943: { +13943: ++__first1; +13943: ++__first2; +13943: } +13943: return std::copy(__first2, __last2, +13943: std::copy(__first1, __last1, __result)); +13943: } +13943: # 5468 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_symmetric_difference(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 5520 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _InputIterator2 __last2, +13943: _OutputIterator __result, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: ; +13943: ; +13943: +13943: return std::__set_symmetric_difference(__first1, __last1, +13943: __first2, __last2, __result, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: constexpr +13943: _ForwardIterator +13943: __min_element(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: if (__first == __last) +13943: return __first; +13943: _ForwardIterator __result = __first; +13943: while (++__first != __last) +13943: if (__comp(__first, __result)) +13943: __result = __first; +13943: return __result; +13943: } +13943: # 5574 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: _ForwardIterator +13943: inline min_element(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__min_element(__first, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 5599 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline _ForwardIterator +13943: min_element(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__min_element(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: constexpr +13943: _ForwardIterator +13943: __max_element(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: if (__first == __last) return __first; +13943: _ForwardIterator __result = __first; +13943: while (++__first != __last) +13943: if (__comp(__result, __first)) +13943: __result = __first; +13943: return __result; +13943: } +13943: # 5638 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline _ForwardIterator +13943: max_element(_ForwardIterator __first, _ForwardIterator __last) +13943: { +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__max_element(__first, __last, +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: # 5663 "/usr/include/c++/14/bits/stl_algo.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: inline _ForwardIterator +13943: max_element(_ForwardIterator __first, _ForwardIterator __last, +13943: _Compare __comp) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: ; +13943: +13943: return std::__max_element(__first, __last, +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: +13943: +13943: template +13943: constexpr +13943: inline _Tp +13943: min(initializer_list<_Tp> __l) +13943: { +13943: ; +13943: return *std::__min_element(__l.begin(), __l.end(), +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: +13943: template +13943: constexpr +13943: inline _Tp +13943: min(initializer_list<_Tp> __l, _Compare __comp) +13943: { +13943: ; +13943: return *std::__min_element(__l.begin(), __l.end(), +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: template +13943: constexpr +13943: inline _Tp +13943: max(initializer_list<_Tp> __l) +13943: { +13943: ; +13943: return *std::__max_element(__l.begin(), __l.end(), +13943: __gnu_cxx::__ops::__iter_less_iter()); +13943: } +13943: +13943: template +13943: constexpr +13943: inline _Tp +13943: max(initializer_list<_Tp> __l, _Compare __comp) +13943: { +13943: ; +13943: return *std::__max_element(__l.begin(), __l.end(), +13943: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: _RandomAccessIterator +13943: __sample(_InputIterator __first, _InputIterator __last, input_iterator_tag, +13943: _RandomAccessIterator __out, random_access_iterator_tag, +13943: _Size __n, _UniformRandomBitGenerator&& __g) +13943: { +13943: using __distrib_type = uniform_int_distribution<_Size>; +13943: using __param_type = typename __distrib_type::param_type; +13943: __distrib_type __d{}; +13943: _Size __sample_sz = 0; +13943: while (__first != __last && __sample_sz != __n) +13943: { +13943: __out[__sample_sz++] = *__first; +13943: ++__first; +13943: } +13943: for (auto __pop_sz = __sample_sz; __first != __last; +13943: ++__first, (void) ++__pop_sz) +13943: { +13943: const auto __k = __d(__g, __param_type{0, __pop_sz}); +13943: if (__k < __n) +13943: __out[__k] = *__first; +13943: } +13943: return __out + __sample_sz; +13943: } +13943: +13943: +13943: template +13943: _OutputIterator +13943: __sample(_ForwardIterator __first, _ForwardIterator __last, +13943: forward_iterator_tag, +13943: _OutputIterator __out, _Cat, +13943: _Size __n, _UniformRandomBitGenerator&& __g) +13943: { +13943: using __distrib_type = uniform_int_distribution<_Size>; +13943: using __param_type = typename __distrib_type::param_type; +13943: using _USize = make_unsigned_t<_Size>; +13943: using _Gen = remove_reference_t<_UniformRandomBitGenerator>; +13943: using __uc_type = common_type_t; +13943: +13943: if (__first == __last) +13943: return __out; +13943: +13943: __distrib_type __d{}; +13943: _Size __unsampled_sz = std::distance(__first, __last); +13943: __n = std::min(__n, __unsampled_sz); +13943: +13943: +13943: +13943: +13943: const __uc_type __urngrange = __g.max() - __g.min(); +13943: if (__urngrange / __uc_type(__unsampled_sz) >= __uc_type(__unsampled_sz)) +13943: +13943: +13943: { +13943: while (__n != 0 && __unsampled_sz >= 2) +13943: { +13943: const pair<_Size, _Size> __p = +13943: __gen_two_uniform_ints(__unsampled_sz, __unsampled_sz - 1, __g); +13943: +13943: --__unsampled_sz; +13943: if (__p.first < __n) +13943: { +13943: *__out++ = *__first; +13943: --__n; +13943: } +13943: +13943: ++__first; +13943: +13943: if (__n == 0) break; +13943: +13943: --__unsampled_sz; +13943: if (__p.second < __n) +13943: { +13943: *__out++ = *__first; +13943: --__n; +13943: } +13943: +13943: ++__first; +13943: } +13943: } +13943: +13943: +13943: +13943: for (; __n != 0; ++__first) +13943: if (__d(__g, __param_type{0, --__unsampled_sz}) < __n) +13943: { +13943: *__out++ = *__first; +13943: --__n; +13943: } +13943: return __out; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: _SampleIterator +13943: sample(_PopulationIterator __first, _PopulationIterator __last, +13943: _SampleIterator __out, _Distance __n, +13943: _UniformRandomBitGenerator&& __g) +13943: { +13943: using __pop_cat = typename +13943: std::iterator_traits<_PopulationIterator>::iterator_category; +13943: using __samp_cat = typename +13943: std::iterator_traits<_SampleIterator>::iterator_category; +13943: +13943: static_assert( +13943: __or_, +13943: is_convertible<__samp_cat, random_access_iterator_tag>>::value, +13943: "output range must use a RandomAccessIterator when input range" +13943: " does not meet the ForwardIterator requirements"); +13943: +13943: static_assert(is_integral<_Distance>::value, +13943: "sample size must be an integer type"); +13943: +13943: typename iterator_traits<_PopulationIterator>::difference_type __d = __n; +13943: return std:: +13943: __sample(__first, __last, __pop_cat{}, __out, __samp_cat{}, __d, +13943: std::forward<_UniformRandomBitGenerator>(__g)); +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 62 "/usr/include/c++/14/algorithm" 2 3 +13943: # 77 "/usr/include/c++/14/algorithm" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 78 "/usr/include/c++/14/algorithm" 2 3 +13943: # 86 "/usr/include/c++/14/algorithm" 3 +13943: # 1 "/usr/include/c++/14/pstl/glue_algorithm_defs.h" 1 3 +13943: # 17 "/usr/include/c++/14/pstl/glue_algorithm_defs.h" 3 +13943: namespace std +13943: { +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: any_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: all_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: none_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: for_each(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Function __f); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: for_each_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, _Function __f); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: find_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: find_if_not(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +13943: find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +13943: _ForwardIterator2 __s_last, _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +13943: find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +13943: _ForwardIterator2 __s_last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +13943: find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __s_first, _ForwardIterator2 __s_last, _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +13943: find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __s_first, _ForwardIterator2 __s_last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, +13943: typename iterator_traits<_ForwardIterator>::difference_type> +13943: count(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, +13943: typename iterator_traits<_ForwardIterator>::difference_type> +13943: count_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +13943: search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +13943: _ForwardIterator2 __s_last, _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +13943: search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +13943: _ForwardIterator2 __s_last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count, +13943: const _Tp& __value, _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count, +13943: const _Tp& __value); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: copy_n(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _Size __n, _ForwardIterator2 __result); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 result, +13943: _Predicate __pred); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: swap_ranges(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +13943: _UnaryOperation __op); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator __result, _BinaryOperation __op); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: replace_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred, +13943: const _Tp& __new_value); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: replace(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, +13943: const _Tp& __new_value); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: replace_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _UnaryPredicate __pred, const _Tp& __new_value); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: replace_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +13943: const _Tp& __old_value, const _Tp& __new_value); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __count, const _Tp& __value); +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: generate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Generator __g); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: generate_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size count, _Generator __g); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: remove_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _Predicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: remove_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +13943: const _Tp& __value); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: remove_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: remove(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +13943: _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: reverse(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: reverse_copy(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last, +13943: _ForwardIterator __d_first); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: rotate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: rotate_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __middle, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: is_partitioned(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: partition(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _BidirectionalIterator> +13943: stable_partition(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last, +13943: _UnaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +13943: partition_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, +13943: _ForwardIterator1 __out_true, _ForwardIterator2 __out_false, _UnaryPredicate __pred); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +13943: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2, _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +13943: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _BinaryPredicate __pred); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +13943: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +13943: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _BinaryPredicate __p); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2, _BinaryPredicate __p); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2); +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: move(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __d_first); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle, +13943: _RandomAccessIterator __last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +13943: partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, +13943: _RandomAccessIterator __d_first, _RandomAccessIterator __d_last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +13943: partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, +13943: _RandomAccessIterator __d_first, _RandomAccessIterator __d_last); +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth, +13943: _RandomAccessIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth, +13943: _RandomAccessIterator __last); +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2, _ForwardIterator __d_first, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2, _ForwardIterator __d_first); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +13943: inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle, +13943: _BidirectionalIterator __last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +13943: _ForwardIterator2 __last2, _ForwardIterator __result); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator result, +13943: _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +13943: is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +13943: is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +13943: max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>> +13943: minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>> +13943: minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _Compare __comp); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +13943: lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _ForwardIterator2 __last2); +13943: +13943: } +13943: # 87 "/usr/include/c++/14/algorithm" 2 3 +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 1 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +13943: +13943: +13943: # 1 "/usr/include/c++/14/thread" 1 3 +13943: # 32 "/usr/include/c++/14/thread" 3 +13943: +13943: # 33 "/usr/include/c++/14/thread" 3 +13943: # 45 "/usr/include/c++/14/thread" 3 +13943: # 1 "/usr/include/c++/14/bits/std_thread.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/std_thread.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/std_thread.h" 3 +13943: # 52 "/usr/include/c++/14/bits/std_thread.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 82 "/usr/include/c++/14/bits/std_thread.h" 3 +13943: class thread +13943: { +13943: public: +13943: +13943: using native_handle_type = __gthread_t; +13943: # 96 "/usr/include/c++/14/bits/std_thread.h" 3 +13943: class id +13943: { +13943: native_handle_type _M_thread; +13943: +13943: public: +13943: id() noexcept : _M_thread() { } +13943: +13943: explicit +13943: id(native_handle_type __id) : _M_thread(__id) { } +13943: +13943: private: +13943: friend class thread; +13943: friend struct hash; +13943: +13943: friend bool +13943: operator==(id __x, id __y) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator<(id __x, id __y) noexcept; +13943: +13943: +13943: template +13943: friend basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __out, id __id); +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: private: +13943: id _M_id; +13943: +13943: +13943: +13943: +13943: template +13943: using __not_same = __not_, thread>>; +13943: +13943: public: +13943: thread() noexcept = default; +13943: +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: +13943: +13943: static void +13943: _M_thread_deps_never_run() { +13943: +13943: +13943: +13943: +13943: } +13943: +13943: public: +13943: template>> +13943: explicit +13943: thread(_Callable&& __f, _Args&&... __args) +13943: { +13943: static_assert( __is_invocable::type, +13943: typename decay<_Args>::type...>::value, +13943: "std::thread arguments must be invocable after conversion to rvalues" +13943: ); +13943: +13943: using _Wrapper = _Call_wrapper<_Callable, _Args...>; +13943: +13943: +13943: _M_start_thread(_State_ptr(new _State_impl<_Wrapper>( +13943: std::forward<_Callable>(__f), std::forward<_Args>(__args)...)), +13943: _M_thread_deps_never_run); +13943: } +13943: +13943: +13943: ~thread() +13943: { +13943: if (joinable()) +13943: std::__terminate(); +13943: } +13943: +13943: thread(const thread&) = delete; +13943: +13943: thread(thread&& __t) noexcept +13943: { swap(__t); } +13943: +13943: thread& operator=(const thread&) = delete; +13943: +13943: thread& operator=(thread&& __t) noexcept +13943: { +13943: if (joinable()) +13943: std::__terminate(); +13943: swap(__t); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(thread& __t) noexcept +13943: { std::swap(_M_id, __t._M_id); } +13943: +13943: bool +13943: joinable() const noexcept +13943: { return !(_M_id == id()); } +13943: +13943: void +13943: join(); +13943: +13943: void +13943: detach(); +13943: +13943: id +13943: get_id() const noexcept +13943: { return _M_id; } +13943: +13943: +13943: +13943: native_handle_type +13943: native_handle() +13943: { return _M_id._M_thread; } +13943: +13943: +13943: static unsigned int +13943: hardware_concurrency() noexcept; +13943: +13943: +13943: +13943: private: +13943: +13943: +13943: +13943: struct _State +13943: { +13943: virtual ~_State(); +13943: virtual void _M_run() = 0; +13943: }; +13943: using _State_ptr = unique_ptr<_State>; +13943: +13943: private: +13943: template +13943: struct _State_impl : public _State +13943: { +13943: _Callable _M_func; +13943: +13943: template +13943: _State_impl(_Args&&... __args) +13943: : _M_func(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: void +13943: _M_run() { _M_func(); } +13943: }; +13943: +13943: void +13943: _M_start_thread(_State_ptr, void (*)()); +13943: # 278 "/usr/include/c++/14/bits/std_thread.h" 3 +13943: private: +13943: +13943: template +13943: struct _Invoker +13943: { +13943: template +13943: explicit +13943: _Invoker(_Args&&... __args) +13943: : _M_t(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: _Tuple _M_t; +13943: +13943: template +13943: struct __result; +13943: template +13943: struct __result> +13943: : __invoke_result<_Fn, _Args...> +13943: { }; +13943: +13943: template +13943: typename __result<_Tuple>::type +13943: _M_invoke(_Index_tuple<_Ind...>) +13943: { return std::__invoke(std::get<_Ind>(std::move(_M_t))...); } +13943: +13943: typename __result<_Tuple>::type +13943: operator()() +13943: { +13943: using _Indices +13943: = typename _Build_index_tuple::value>::__type; +13943: return _M_invoke(_Indices()); +13943: } +13943: }; +13943: +13943: public: +13943: +13943: template +13943: using _Call_wrapper = _Invoker::type...>>; +13943: +13943: +13943: }; +13943: # 327 "/usr/include/c++/14/bits/std_thread.h" 3 +13943: inline void +13943: swap(thread& __x, thread& __y) noexcept +13943: { __x.swap(__y); } +13943: +13943: +13943: inline bool +13943: operator==(thread::id __x, thread::id __y) noexcept +13943: { +13943: +13943: +13943: +13943: +13943: return __x._M_thread == __y._M_thread; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: size_t +13943: operator()(const thread::id& __id) const noexcept +13943: { return std::_Hash_impl::hash(__id._M_thread); } +13943: }; +13943: +13943: namespace this_thread +13943: { +13943: +13943: inline thread::id +13943: get_id() noexcept +13943: { +13943: +13943: +13943: +13943: return thread::id(pthread_self()); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: inline void +13943: yield() noexcept +13943: { +13943: +13943: __gthread_yield(); +13943: +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 46 "/usr/include/c++/14/thread" 2 3 +13943: # 1 "/usr/include/c++/14/bits/this_thread_sleep.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/chrono.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/chrono.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/chrono.h" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/ratio" 1 3 +13943: # 33 "/usr/include/c++/14/ratio" 3 +13943: +13943: # 34 "/usr/include/c++/14/ratio" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cstdint" 1 3 +13943: # 32 "/usr/include/c++/14/cstdint" 3 +13943: +13943: # 33 "/usr/include/c++/14/cstdint" 3 +13943: # 48 "/usr/include/c++/14/cstdint" 3 +13943: namespace std +13943: { +13943: +13943: using ::int8_t; +13943: using ::int16_t; +13943: using ::int32_t; +13943: using ::int64_t; +13943: +13943: using ::int_fast8_t; +13943: using ::int_fast16_t; +13943: using ::int_fast32_t; +13943: using ::int_fast64_t; +13943: +13943: using ::int_least8_t; +13943: using ::int_least16_t; +13943: using ::int_least32_t; +13943: using ::int_least64_t; +13943: +13943: using ::intmax_t; +13943: using ::intptr_t; +13943: +13943: using ::uint8_t; +13943: using ::uint16_t; +13943: using ::uint32_t; +13943: using ::uint64_t; +13943: +13943: using ::uint_fast8_t; +13943: using ::uint_fast16_t; +13943: using ::uint_fast32_t; +13943: using ::uint_fast64_t; +13943: +13943: using ::uint_least8_t; +13943: using ::uint_least16_t; +13943: using ::uint_least32_t; +13943: using ::uint_least64_t; +13943: +13943: using ::uintmax_t; +13943: using ::uintptr_t; +13943: # 142 "/usr/include/c++/14/cstdint" 3 +13943: } +13943: # 41 "/usr/include/c++/14/ratio" 2 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 44 "/usr/include/c++/14/ratio" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 59 "/usr/include/c++/14/ratio" 3 +13943: template +13943: struct __static_sign +13943: : integral_constant +13943: { }; +13943: +13943: template +13943: struct __static_abs +13943: : integral_constant::value> +13943: { }; +13943: +13943: template +13943: struct __static_gcd +13943: : __static_gcd<_Qn, (_Pn % _Qn)> +13943: { }; +13943: +13943: template +13943: struct __static_gcd<_Pn, 0> +13943: : integral_constant::value> +13943: { }; +13943: +13943: template +13943: struct __static_gcd<0, _Qn> +13943: : integral_constant::value> +13943: { }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __safe_multiply +13943: { +13943: private: +13943: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); +13943: +13943: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; +13943: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; +13943: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; +13943: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; +13943: +13943: static_assert(__a1 == 0 || __b1 == 0, +13943: "overflow in multiplication"); +13943: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), +13943: "overflow in multiplication"); +13943: static_assert(__b0 * __a0 <= 0x7fffffffffffffffLL, +13943: "overflow in multiplication"); +13943: static_assert((__a0 * __b1 + __b0 * __a1) * __c +13943: <= 0x7fffffffffffffffLL - __b0 * __a0, +13943: "overflow in multiplication"); +13943: +13943: public: +13943: static const intmax_t value = _Pn * _Qn; +13943: }; +13943: +13943: +13943: +13943: template +13943: struct __big_less +13943: : integral_constant +13943: { }; +13943: +13943: template +13943: struct __big_add +13943: { +13943: static constexpr uintmax_t __lo = __lo1 + __lo2; +13943: static constexpr uintmax_t __hi = (__hi1 + __hi2 + +13943: (__lo1 + __lo2 < __lo1)); +13943: }; +13943: +13943: +13943: template +13943: struct __big_sub +13943: { +13943: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, +13943: "Internal library error"); +13943: static constexpr uintmax_t __lo = __lo1 - __lo2; +13943: static constexpr uintmax_t __hi = (__hi1 - __hi2 - +13943: (__lo1 < __lo2)); +13943: }; +13943: +13943: +13943: template +13943: struct __big_mul +13943: { +13943: private: +13943: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); +13943: static constexpr uintmax_t __x0 = __x % __c; +13943: static constexpr uintmax_t __x1 = __x / __c; +13943: static constexpr uintmax_t __y0 = __y % __c; +13943: static constexpr uintmax_t __y1 = __y / __c; +13943: static constexpr uintmax_t __x0y0 = __x0 * __y0; +13943: static constexpr uintmax_t __x0y1 = __x0 * __y1; +13943: static constexpr uintmax_t __x1y0 = __x1 * __y0; +13943: static constexpr uintmax_t __x1y1 = __x1 * __y1; +13943: static constexpr uintmax_t __mix = __x0y1 + __x1y0; +13943: static constexpr uintmax_t __mix_lo = __mix * __c; +13943: static constexpr uintmax_t __mix_hi +13943: = __mix / __c + ((__mix < __x0y1) ? __c : 0); +13943: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; +13943: public: +13943: static constexpr uintmax_t __hi = _Res::__hi; +13943: static constexpr uintmax_t __lo = _Res::__lo; +13943: }; +13943: +13943: +13943: +13943: template +13943: struct __big_div_impl +13943: { +13943: private: +13943: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), +13943: "Internal library error"); +13943: static_assert(__n1 < __d, "Internal library error"); +13943: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); +13943: static constexpr uintmax_t __d1 = __d / __c; +13943: static constexpr uintmax_t __d0 = __d % __c; +13943: +13943: static constexpr uintmax_t __q1x = __n1 / __d1; +13943: static constexpr uintmax_t __r1x = __n1 % __d1; +13943: static constexpr uintmax_t __m = __q1x * __d0; +13943: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; +13943: static constexpr uintmax_t __r1z = __r1y + __d; +13943: static constexpr uintmax_t __r1 +13943: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) +13943: ? (__r1z + __d) : __r1z : __r1y) - __m; +13943: static constexpr uintmax_t __q1 +13943: = __q1x - ((__r1y < __m) +13943: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); +13943: static constexpr uintmax_t __q0x = __r1 / __d1; +13943: static constexpr uintmax_t __r0x = __r1 % __d1; +13943: static constexpr uintmax_t __n = __q0x * __d0; +13943: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; +13943: static constexpr uintmax_t __r0z = __r0y + __d; +13943: static constexpr uintmax_t __r0 +13943: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) +13943: ? (__r0z + __d) : __r0z : __r0y) - __n; +13943: static constexpr uintmax_t __q0 +13943: = __q0x - ((__r0y < __n) ? ((__r0z >= __d) +13943: && (__r0z < __n)) ? 2 : 1 : 0); +13943: +13943: public: +13943: static constexpr uintmax_t __quot = __q1 * __c + __q0; +13943: static constexpr uintmax_t __rem = __r0; +13943: +13943: private: +13943: typedef __big_mul<__quot, __d> _Prod; +13943: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; +13943: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, +13943: "Internal library error"); +13943: }; +13943: +13943: template +13943: struct __big_div +13943: { +13943: private: +13943: static_assert(__d != 0, "Internal library error"); +13943: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), +13943: "This library calls __builtin_clzll on uintmax_t, which " +13943: "is unsafe on your platform. Please complain to " +13943: "http://gcc.gnu.org/bugzilla/"); +13943: static constexpr int __shift = __builtin_clzll(__d); +13943: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; +13943: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; +13943: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; +13943: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; +13943: static constexpr uintmax_t __new_d = __d * __c1; +13943: static constexpr uintmax_t __new_n0 = __n0 * __c1; +13943: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; +13943: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; +13943: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; +13943: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; +13943: +13943: public: +13943: static constexpr uintmax_t __quot_hi = __n1 / __d; +13943: static constexpr uintmax_t __quot_lo = _Res::__quot; +13943: static constexpr uintmax_t __rem = _Res::__rem / __c1; +13943: +13943: private: +13943: typedef __big_mul<__quot_lo, __d> _P0; +13943: typedef __big_mul<__quot_hi, __d> _P1; +13943: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; +13943: +13943: static_assert(_P1::__hi == 0, "Internal library error"); +13943: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); +13943: +13943: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, +13943: "Internal library error"); +13943: static_assert(__rem < __d, "Internal library error"); +13943: }; +13943: # 268 "/usr/include/c++/14/ratio" 3 +13943: template +13943: struct ratio +13943: { +13943: static_assert(_Den != 0, "denominator cannot be zero"); +13943: static_assert(_Num >= -0x7fffffffffffffffLL && _Den >= -0x7fffffffffffffffLL, +13943: "out of range"); +13943: +13943: +13943: static constexpr intmax_t num = +13943: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; +13943: +13943: static constexpr intmax_t den = +13943: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; +13943: +13943: typedef ratio type; +13943: }; +13943: # 295 "/usr/include/c++/14/ratio" 3 +13943: template +13943: struct __is_ratio +13943: : std::false_type +13943: { }; +13943: +13943: template +13943: struct __is_ratio> +13943: : std::true_type +13943: { }; +13943: +13943: +13943: template +13943: constexpr bool __is_ratio_v = false; +13943: template +13943: constexpr bool __is_ratio_v> = true; +13943: +13943: +13943: template +13943: constexpr bool +13943: __are_both_ratios() noexcept +13943: { +13943: +13943: if constexpr (__is_ratio_v<_R1>) +13943: if constexpr (__is_ratio_v<_R2>) +13943: return true; +13943: return false; +13943: +13943: +13943: +13943: } +13943: +13943: template +13943: struct __ratio_multiply +13943: { +13943: static_assert(std::__are_both_ratios<_R1, _R2>(), +13943: "both template arguments must be a std::ratio"); +13943: +13943: private: +13943: static const intmax_t __gcd1 = +13943: __static_gcd<_R1::num, _R2::den>::value; +13943: static const intmax_t __gcd2 = +13943: __static_gcd<_R2::num, _R1::den>::value; +13943: +13943: public: +13943: typedef ratio< +13943: __safe_multiply<(_R1::num / __gcd1), +13943: (_R2::num / __gcd2)>::value, +13943: __safe_multiply<(_R1::den / __gcd2), +13943: (_R2::den / __gcd1)>::value> type; +13943: +13943: static constexpr intmax_t num = type::num; +13943: static constexpr intmax_t den = type::den; +13943: }; +13943: # 360 "/usr/include/c++/14/ratio" 3 +13943: template +13943: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; +13943: +13943: +13943: +13943: template +13943: struct __ratio_divide +13943: { +13943: static_assert(_R2::num != 0, "division by 0"); +13943: +13943: typedef typename __ratio_multiply< +13943: _R1, +13943: ratio<_R2::den, _R2::num>>::type type; +13943: +13943: static constexpr intmax_t num = type::num; +13943: static constexpr intmax_t den = type::den; +13943: }; +13943: # 389 "/usr/include/c++/14/ratio" 3 +13943: template +13943: using ratio_divide = typename __ratio_divide<_R1, _R2>::type; +13943: +13943: +13943: template +13943: struct ratio_equal +13943: : integral_constant +13943: { +13943: static_assert(std::__are_both_ratios<_R1, _R2>(), +13943: "both template arguments must be a std::ratio"); +13943: }; +13943: +13943: +13943: template +13943: struct ratio_not_equal +13943: : integral_constant::value> +13943: { }; +13943: +13943: +13943: +13943: +13943: template, +13943: typename _Right = __big_mul<_R2::num,_R1::den> > +13943: struct __ratio_less_impl_1 +13943: : integral_constant::value> +13943: { }; +13943: +13943: template::value +13943: != __static_sign<_R2::num>::value)), +13943: bool = (__static_sign<_R1::num>::value == -1 +13943: && __static_sign<_R2::num>::value == -1)> +13943: struct __ratio_less_impl +13943: : __ratio_less_impl_1<_R1, _R2>::type +13943: { }; +13943: +13943: template +13943: struct __ratio_less_impl<_R1, _R2, true, false> +13943: : integral_constant +13943: { }; +13943: +13943: template +13943: struct __ratio_less_impl<_R1, _R2, false, true> +13943: : __ratio_less_impl_1, +13943: ratio<-_R1::num, _R1::den> >::type +13943: { }; +13943: +13943: +13943: +13943: +13943: template +13943: struct ratio_less +13943: : __ratio_less_impl<_R1, _R2>::type +13943: { +13943: static_assert(std::__are_both_ratios<_R1, _R2>(), +13943: "both template arguments must be a std::ratio"); +13943: }; +13943: +13943: +13943: template +13943: struct ratio_less_equal +13943: : integral_constant::value> +13943: { }; +13943: +13943: +13943: template +13943: struct ratio_greater +13943: : integral_constant::value> +13943: { }; +13943: +13943: +13943: template +13943: struct ratio_greater_equal +13943: : integral_constant::value> +13943: { }; +13943: +13943: +13943: template +13943: inline constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value; +13943: template +13943: inline constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; +13943: template +13943: inline constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value; +13943: template +13943: inline constexpr bool ratio_less_equal_v +13943: = ratio_less_equal<_R1, _R2>::value; +13943: template +13943: inline constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value; +13943: template +13943: inline constexpr bool ratio_greater_equal_v +13943: = ratio_greater_equal<_R1, _R2>::value; +13943: +13943: +13943: +13943: +13943: template= 0), +13943: bool = (_R2::num >= 0), +13943: bool = ratio_less::value, _R1::den>, +13943: ratio<__static_abs<_R2::num>::value, _R2::den> >::value> +13943: struct __ratio_add_impl +13943: { +13943: private: +13943: typedef typename __ratio_add_impl< +13943: ratio<-_R1::num, _R1::den>, +13943: ratio<-_R2::num, _R2::den> >::type __t; +13943: public: +13943: typedef ratio<-__t::num, __t::den> type; +13943: }; +13943: +13943: +13943: template +13943: struct __ratio_add_impl<_R1, _R2, true, true, __b> +13943: { +13943: private: +13943: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; +13943: static constexpr uintmax_t __d2 = _R2::den / __g; +13943: typedef __big_mul<_R1::den, __d2> __d; +13943: typedef __big_mul<_R1::num, _R2::den / __g> __x; +13943: typedef __big_mul<_R2::num, _R1::den / __g> __y; +13943: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; +13943: static_assert(__n::__hi >= __x::__hi, "Internal library error"); +13943: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; +13943: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; +13943: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; +13943: static_assert(__n_final::__rem == 0, "Internal library error"); +13943: static_assert(__n_final::__quot_hi == 0 && +13943: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); +13943: typedef __big_mul<_R1::den / __g2, __d2> __d_final; +13943: static_assert(__d_final::__hi == 0 && +13943: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); +13943: public: +13943: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; +13943: }; +13943: +13943: template +13943: struct __ratio_add_impl<_R1, _R2, false, true, true> +13943: : __ratio_add_impl<_R2, _R1> +13943: { }; +13943: +13943: +13943: template +13943: struct __ratio_add_impl<_R1, _R2, true, false, false> +13943: { +13943: private: +13943: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; +13943: static constexpr uintmax_t __d2 = _R2::den / __g; +13943: typedef __big_mul<_R1::den, __d2> __d; +13943: typedef __big_mul<_R1::num, _R2::den / __g> __x; +13943: typedef __big_mul<-_R2::num, _R1::den / __g> __y; +13943: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; +13943: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; +13943: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; +13943: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; +13943: static_assert(__n_final::__rem == 0, "Internal library error"); +13943: static_assert(__n_final::__quot_hi == 0 && +13943: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); +13943: typedef __big_mul<_R1::den / __g2, __d2> __d_final; +13943: static_assert(__d_final::__hi == 0 && +13943: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); +13943: public: +13943: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; +13943: }; +13943: +13943: template +13943: struct __ratio_add +13943: { +13943: static_assert(std::__are_both_ratios<_R1, _R2>(), +13943: "both template arguments must be a std::ratio"); +13943: +13943: typedef typename __ratio_add_impl<_R1, _R2>::type type; +13943: static constexpr intmax_t num = type::num; +13943: static constexpr intmax_t den = type::den; +13943: }; +13943: # 578 "/usr/include/c++/14/ratio" 3 +13943: template +13943: using ratio_add = typename __ratio_add<_R1, _R2>::type; +13943: +13943: +13943: +13943: template +13943: struct __ratio_subtract +13943: { +13943: typedef typename __ratio_add< +13943: _R1, +13943: ratio<-_R2::num, _R2::den>>::type type; +13943: +13943: static constexpr intmax_t num = type::num; +13943: static constexpr intmax_t den = type::den; +13943: }; +13943: # 605 "/usr/include/c++/14/ratio" 3 +13943: template +13943: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; +13943: # 618 "/usr/include/c++/14/ratio" 3 +13943: using atto = ratio< 1, 1000000000000000000>; +13943: using femto = ratio< 1, 1000000000000000>; +13943: using pico = ratio< 1, 1000000000000>; +13943: using nano = ratio< 1, 1000000000>; +13943: using micro = ratio< 1, 1000000>; +13943: using milli = ratio< 1, 1000>; +13943: using centi = ratio< 1, 100>; +13943: using deci = ratio< 1, 10>; +13943: using deca = ratio< 10, 1>; +13943: using hecto = ratio< 100, 1>; +13943: using kilo = ratio< 1000, 1>; +13943: using mega = ratio< 1000000, 1>; +13943: using giga = ratio< 1000000000, 1>; +13943: using tera = ratio< 1000000000000, 1>; +13943: using peta = ratio< 1000000000000000, 1>; +13943: using exa = ratio< 1000000000000000000, 1>; +13943: # 646 "/usr/include/c++/14/ratio" 3 +13943: +13943: } +13943: # 38 "/usr/include/c++/14/bits/chrono.h" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/limits" 1 3 +13943: # 40 "/usr/include/c++/14/limits" 3 +13943: +13943: # 41 "/usr/include/c++/14/limits" 3 +13943: # 158 "/usr/include/c++/14/limits" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum float_round_style +13943: { +13943: round_indeterminate = -1, +13943: round_toward_zero = 0, +13943: round_to_nearest = 1, +13943: round_toward_infinity = 2, +13943: round_toward_neg_infinity = 3 +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum float_denorm_style +13943: { +13943: +13943: denorm_indeterminate = -1, +13943: +13943: denorm_absent = 0, +13943: +13943: denorm_present = 1 +13943: }; +13943: # 202 "/usr/include/c++/14/limits" 3 +13943: struct __numeric_limits_base +13943: { +13943: +13943: +13943: static constexpr bool is_specialized = false; +13943: +13943: +13943: +13943: +13943: static constexpr int digits = 0; +13943: +13943: +13943: static constexpr int digits10 = 0; +13943: +13943: +13943: +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: +13943: +13943: static constexpr bool is_signed = false; +13943: +13943: +13943: static constexpr bool is_integer = false; +13943: +13943: +13943: +13943: +13943: static constexpr bool is_exact = false; +13943: +13943: +13943: +13943: static constexpr int radix = 0; +13943: +13943: +13943: +13943: static constexpr int min_exponent = 0; +13943: +13943: +13943: +13943: static constexpr int min_exponent10 = 0; +13943: +13943: +13943: +13943: +13943: static constexpr int max_exponent = 0; +13943: +13943: +13943: +13943: static constexpr int max_exponent10 = 0; +13943: +13943: +13943: static constexpr bool has_infinity = false; +13943: +13943: +13943: +13943: static constexpr bool has_quiet_NaN = false; +13943: +13943: +13943: +13943: static constexpr bool has_signaling_NaN = false; +13943: +13943: +13943: static constexpr float_denorm_style has_denorm = denorm_absent; +13943: +13943: +13943: +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: +13943: +13943: static constexpr bool is_iec559 = false; +13943: +13943: +13943: +13943: +13943: static constexpr bool is_bounded = false; +13943: # 288 "/usr/include/c++/14/limits" 3 +13943: static constexpr bool is_modulo = false; +13943: +13943: +13943: static constexpr bool traps = false; +13943: +13943: +13943: static constexpr bool tinyness_before = false; +13943: +13943: +13943: +13943: +13943: static constexpr float_round_style round_style = +13943: round_toward_zero; +13943: }; +13943: # 311 "/usr/include/c++/14/limits" 3 +13943: template +13943: struct numeric_limits : public __numeric_limits_base +13943: { +13943: +13943: +13943: static constexpr _Tp +13943: min() noexcept { return _Tp(); } +13943: +13943: +13943: static constexpr _Tp +13943: max() noexcept { return _Tp(); } +13943: +13943: +13943: +13943: +13943: static constexpr _Tp +13943: lowest() noexcept { return _Tp(); } +13943: +13943: +13943: +13943: +13943: static constexpr _Tp +13943: epsilon() noexcept { return _Tp(); } +13943: +13943: +13943: static constexpr _Tp +13943: round_error() noexcept { return _Tp(); } +13943: +13943: +13943: static constexpr _Tp +13943: infinity() noexcept { return _Tp(); } +13943: +13943: +13943: +13943: static constexpr _Tp +13943: quiet_NaN() noexcept { return _Tp(); } +13943: +13943: +13943: +13943: static constexpr _Tp +13943: signaling_NaN() noexcept { return _Tp(); } +13943: +13943: +13943: +13943: +13943: static constexpr _Tp +13943: denorm_min() noexcept { return _Tp(); } +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct numeric_limits +13943: : public numeric_limits<_Tp> { }; +13943: +13943: template +13943: struct numeric_limits +13943: : public numeric_limits<_Tp> { }; +13943: +13943: template +13943: struct numeric_limits +13943: : public numeric_limits<_Tp> { }; +13943: # 383 "/usr/include/c++/14/limits" 3 +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr bool +13943: min() noexcept { return false; } +13943: +13943: static constexpr bool +13943: max() noexcept { return true; } +13943: +13943: +13943: static constexpr bool +13943: lowest() noexcept { return min(); } +13943: +13943: static constexpr int digits = 1; +13943: static constexpr int digits10 = 0; +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = false; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr bool +13943: epsilon() noexcept { return false; } +13943: +13943: static constexpr bool +13943: round_error() noexcept { return false; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr bool +13943: infinity() noexcept { return false; } +13943: +13943: static constexpr bool +13943: quiet_NaN() noexcept { return false; } +13943: +13943: static constexpr bool +13943: signaling_NaN() noexcept { return false; } +13943: +13943: static constexpr bool +13943: denorm_min() noexcept { return false; } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: +13943: +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr char +13943: 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); } +13943: +13943: static constexpr char +13943: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } +13943: +13943: +13943: static constexpr char +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); +13943: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = ((char)(-1) < 0); +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr char +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr char +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr +13943: char infinity() noexcept { return char(); } +13943: +13943: static constexpr char +13943: quiet_NaN() noexcept { return char(); } +13943: +13943: static constexpr char +13943: signaling_NaN() noexcept { return char(); } +13943: +13943: static constexpr char +13943: denorm_min() noexcept { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = !is_signed; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr signed char +13943: min() noexcept { return -0x7f - 1; } +13943: +13943: static constexpr signed char +13943: max() noexcept { return 0x7f; } +13943: +13943: +13943: static constexpr signed char +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr signed char +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr signed char +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr signed char +13943: infinity() noexcept { return static_cast(0); } +13943: +13943: static constexpr signed char +13943: quiet_NaN() noexcept { return static_cast(0); } +13943: +13943: static constexpr signed char +13943: signaling_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr signed char +13943: denorm_min() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr unsigned char +13943: min() noexcept { return 0; } +13943: +13943: static constexpr unsigned char +13943: max() noexcept { return 0x7f * 2U + 1; } +13943: +13943: +13943: static constexpr unsigned char +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits +13943: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = false; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr unsigned char +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr unsigned char +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr unsigned char +13943: infinity() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned char +13943: quiet_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned char +13943: signaling_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned char +13943: denorm_min() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = true; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr wchar_t +13943: 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); } +13943: +13943: static constexpr wchar_t +13943: 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); } +13943: +13943: +13943: static constexpr wchar_t +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = ((wchar_t)(-1) < 0); +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr wchar_t +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr wchar_t +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr wchar_t +13943: infinity() noexcept { return wchar_t(); } +13943: +13943: static constexpr wchar_t +13943: quiet_NaN() noexcept { return wchar_t(); } +13943: +13943: static constexpr wchar_t +13943: signaling_NaN() noexcept { return wchar_t(); } +13943: +13943: static constexpr wchar_t +13943: denorm_min() noexcept { return wchar_t(); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = !is_signed; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: # 796 "/usr/include/c++/14/limits" 3 +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr char16_t +13943: 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); } +13943: +13943: static constexpr char16_t +13943: 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); } +13943: +13943: static constexpr char16_t +13943: lowest() noexcept { return min(); } +13943: +13943: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); +13943: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); +13943: static constexpr int max_digits10 = 0; +13943: static constexpr bool is_signed = ((char16_t)(-1) < 0); +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr char16_t +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr char16_t +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr char16_t +13943: infinity() noexcept { return char16_t(); } +13943: +13943: static constexpr char16_t +13943: quiet_NaN() noexcept { return char16_t(); } +13943: +13943: static constexpr char16_t +13943: signaling_NaN() noexcept { return char16_t(); } +13943: +13943: static constexpr char16_t +13943: denorm_min() noexcept { return char16_t(); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = !is_signed; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr char32_t +13943: 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); } +13943: +13943: static constexpr char32_t +13943: 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); } +13943: +13943: static constexpr char32_t +13943: lowest() noexcept { return min(); } +13943: +13943: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); +13943: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); +13943: static constexpr int max_digits10 = 0; +13943: static constexpr bool is_signed = ((char32_t)(-1) < 0); +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr char32_t +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr char32_t +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr char32_t +13943: infinity() noexcept { return char32_t(); } +13943: +13943: static constexpr char32_t +13943: quiet_NaN() noexcept { return char32_t(); } +13943: +13943: static constexpr char32_t +13943: signaling_NaN() noexcept { return char32_t(); } +13943: +13943: static constexpr char32_t +13943: denorm_min() noexcept { return char32_t(); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = !is_signed; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style = round_toward_zero; +13943: }; +13943: +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr short +13943: min() noexcept { return -0x7fff - 1; } +13943: +13943: static constexpr short +13943: max() noexcept { return 0x7fff; } +13943: +13943: +13943: static constexpr short +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); +13943: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr short +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr short +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr short +13943: infinity() noexcept { return short(); } +13943: +13943: static constexpr short +13943: quiet_NaN() noexcept { return short(); } +13943: +13943: static constexpr short +13943: signaling_NaN() noexcept { return short(); } +13943: +13943: static constexpr short +13943: denorm_min() noexcept { return short(); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr unsigned short +13943: min() noexcept { return 0; } +13943: +13943: static constexpr unsigned short +13943: max() noexcept { return 0x7fff * 2U + 1; } +13943: +13943: +13943: static constexpr unsigned short +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits +13943: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = false; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr unsigned short +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr unsigned short +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr unsigned short +13943: infinity() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned short +13943: quiet_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned short +13943: signaling_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned short +13943: denorm_min() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = true; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr int +13943: min() noexcept { return -0x7fffffff - 1; } +13943: +13943: static constexpr int +13943: max() noexcept { return 0x7fffffff; } +13943: +13943: +13943: static constexpr int +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); +13943: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr int +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr int +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr int +13943: infinity() noexcept { return static_cast(0); } +13943: +13943: static constexpr int +13943: quiet_NaN() noexcept { return static_cast(0); } +13943: +13943: static constexpr int +13943: signaling_NaN() noexcept { return static_cast(0); } +13943: +13943: static constexpr int +13943: denorm_min() noexcept { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr unsigned int +13943: min() noexcept { return 0; } +13943: +13943: static constexpr unsigned int +13943: max() noexcept { return 0x7fffffff * 2U + 1; } +13943: +13943: +13943: static constexpr unsigned int +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits +13943: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = false; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr unsigned int +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr unsigned int +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr unsigned int +13943: infinity() noexcept { return static_cast(0); } +13943: +13943: static constexpr unsigned int +13943: quiet_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned int +13943: signaling_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned int +13943: denorm_min() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = true; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr long +13943: min() noexcept { return -0x7fffffffL - 1; } +13943: +13943: static constexpr long +13943: max() noexcept { return 0x7fffffffL; } +13943: +13943: +13943: static constexpr long +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); +13943: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr long +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr long +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr long +13943: infinity() noexcept { return static_cast(0); } +13943: +13943: static constexpr long +13943: quiet_NaN() noexcept { return static_cast(0); } +13943: +13943: static constexpr long +13943: signaling_NaN() noexcept { return static_cast(0); } +13943: +13943: static constexpr long +13943: denorm_min() noexcept { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr unsigned long +13943: min() noexcept { return 0; } +13943: +13943: static constexpr unsigned long +13943: max() noexcept { return 0x7fffffffL * 2UL + 1; } +13943: +13943: +13943: static constexpr unsigned long +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits +13943: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = false; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr unsigned long +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr unsigned long +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr unsigned long +13943: infinity() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned long +13943: quiet_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned long +13943: signaling_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned long +13943: denorm_min() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = true; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr long long +13943: min() noexcept { return -0x7fffffffffffffffLL - 1; } +13943: +13943: static constexpr long long +13943: max() noexcept { return 0x7fffffffffffffffLL; } +13943: +13943: +13943: static constexpr long long +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits +13943: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr long long +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr long long +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr long long +13943: infinity() noexcept { return static_cast(0); } +13943: +13943: static constexpr long long +13943: quiet_NaN() noexcept { return static_cast(0); } +13943: +13943: static constexpr long long +13943: signaling_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr long long +13943: denorm_min() noexcept { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr unsigned long long +13943: min() noexcept { return 0; } +13943: +13943: static constexpr unsigned long long +13943: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } +13943: +13943: +13943: static constexpr unsigned long long +13943: lowest() noexcept { return min(); } +13943: +13943: +13943: static constexpr int digits +13943: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); +13943: static constexpr int digits10 +13943: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); +13943: +13943: static constexpr int max_digits10 = 0; +13943: +13943: static constexpr bool is_signed = false; +13943: static constexpr bool is_integer = true; +13943: static constexpr bool is_exact = true; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr unsigned long long +13943: epsilon() noexcept { return 0; } +13943: +13943: static constexpr unsigned long long +13943: round_error() noexcept { return 0; } +13943: +13943: static constexpr int min_exponent = 0; +13943: static constexpr int min_exponent10 = 0; +13943: static constexpr int max_exponent = 0; +13943: static constexpr int max_exponent10 = 0; +13943: +13943: static constexpr bool has_infinity = false; +13943: static constexpr bool has_quiet_NaN = false; +13943: static constexpr bool has_signaling_NaN = false; +13943: static constexpr float_denorm_style has_denorm +13943: = denorm_absent; +13943: static constexpr bool has_denorm_loss = false; +13943: +13943: static constexpr unsigned long long +13943: infinity() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned long long +13943: quiet_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned long long +13943: signaling_NaN() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr unsigned long long +13943: denorm_min() noexcept +13943: { return static_cast(0); } +13943: +13943: static constexpr bool is_iec559 = false; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = true; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = false; +13943: static constexpr float_round_style round_style +13943: = round_toward_zero; +13943: }; +13943: # 1669 "/usr/include/c++/14/limits" 3 +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr float +13943: min() noexcept { return 1.1754943508222875e-38F; } +13943: +13943: static constexpr float +13943: max() noexcept { return 3.4028234663852886e+38F; } +13943: +13943: +13943: static constexpr float +13943: lowest() noexcept { return -3.4028234663852886e+38F; } +13943: +13943: +13943: static constexpr int digits = 24; +13943: static constexpr int digits10 = 6; +13943: +13943: static constexpr int max_digits10 +13943: = (2 + (24) * 643L / 2136); +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = false; +13943: static constexpr bool is_exact = false; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr float +13943: epsilon() noexcept { return 1.1920928955078125e-7F; } +13943: +13943: static constexpr float +13943: round_error() noexcept { return 0.5F; } +13943: +13943: static constexpr int min_exponent = (-125); +13943: static constexpr int min_exponent10 = (-37); +13943: static constexpr int max_exponent = 128; +13943: static constexpr int max_exponent10 = 38; +13943: +13943: static constexpr bool has_infinity = 1; +13943: static constexpr bool has_quiet_NaN = 1; +13943: static constexpr bool has_signaling_NaN = has_quiet_NaN; +13943: static constexpr float_denorm_style has_denorm +13943: = bool(1) ? denorm_present : denorm_absent; +13943: static constexpr bool has_denorm_loss +13943: = false; +13943: +13943: static constexpr float +13943: infinity() noexcept { return __builtin_huge_valf(); } +13943: +13943: static constexpr float +13943: quiet_NaN() noexcept { return __builtin_nanf(""); } +13943: +13943: static constexpr float +13943: signaling_NaN() noexcept { return __builtin_nansf(""); } +13943: +13943: static constexpr float +13943: denorm_min() noexcept { return 1.4012984643248171e-45F; } +13943: +13943: static constexpr bool is_iec559 +13943: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before +13943: = false; +13943: static constexpr float_round_style round_style +13943: = round_to_nearest; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr double +13943: min() noexcept { return double(2.2250738585072014e-308L); } +13943: +13943: static constexpr double +13943: max() noexcept { return double(1.7976931348623157e+308L); } +13943: +13943: +13943: static constexpr double +13943: lowest() noexcept { return -double(1.7976931348623157e+308L); } +13943: +13943: +13943: static constexpr int digits = 53; +13943: static constexpr int digits10 = 15; +13943: +13943: static constexpr int max_digits10 +13943: = (2 + (53) * 643L / 2136); +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = false; +13943: static constexpr bool is_exact = false; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr double +13943: epsilon() noexcept { return double(2.2204460492503131e-16L); } +13943: +13943: static constexpr double +13943: round_error() noexcept { return 0.5; } +13943: +13943: static constexpr int min_exponent = (-1021); +13943: static constexpr int min_exponent10 = (-307); +13943: static constexpr int max_exponent = 1024; +13943: static constexpr int max_exponent10 = 308; +13943: +13943: static constexpr bool has_infinity = 1; +13943: static constexpr bool has_quiet_NaN = 1; +13943: static constexpr bool has_signaling_NaN = has_quiet_NaN; +13943: static constexpr float_denorm_style has_denorm +13943: = bool(1) ? denorm_present : denorm_absent; +13943: static constexpr bool has_denorm_loss +13943: = false; +13943: +13943: static constexpr double +13943: infinity() noexcept { return __builtin_huge_val(); } +13943: +13943: static constexpr double +13943: quiet_NaN() noexcept { return __builtin_nan(""); } +13943: +13943: static constexpr double +13943: signaling_NaN() noexcept { return __builtin_nans(""); } +13943: +13943: static constexpr double +13943: denorm_min() noexcept { return double(4.9406564584124654e-324L); } +13943: +13943: static constexpr bool is_iec559 +13943: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before +13943: = false; +13943: static constexpr float_round_style round_style +13943: = round_to_nearest; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct numeric_limits +13943: { +13943: static constexpr bool is_specialized = true; +13943: +13943: static constexpr long double +13943: min() noexcept { return 2.2250738585072014e-308L; } +13943: +13943: static constexpr long double +13943: max() noexcept { return 1.7976931348623157e+308L; } +13943: +13943: +13943: static constexpr long double +13943: lowest() noexcept { return -1.7976931348623157e+308L; } +13943: +13943: +13943: static constexpr int digits = 53; +13943: static constexpr int digits10 = 15; +13943: +13943: static constexpr int max_digits10 +13943: = (2 + (53) * 643L / 2136); +13943: +13943: static constexpr bool is_signed = true; +13943: static constexpr bool is_integer = false; +13943: static constexpr bool is_exact = false; +13943: static constexpr int radix = 2; +13943: +13943: static constexpr long double +13943: epsilon() noexcept { return 2.2204460492503131e-16L; } +13943: +13943: static constexpr long double +13943: round_error() noexcept { return 0.5L; } +13943: +13943: static constexpr int min_exponent = (-1021); +13943: static constexpr int min_exponent10 = (-307); +13943: static constexpr int max_exponent = 1024; +13943: static constexpr int max_exponent10 = 308; +13943: +13943: static constexpr bool has_infinity = 1; +13943: static constexpr bool has_quiet_NaN = 1; +13943: static constexpr bool has_signaling_NaN = has_quiet_NaN; +13943: static constexpr float_denorm_style has_denorm +13943: = bool(1) ? denorm_present : denorm_absent; +13943: static constexpr bool has_denorm_loss +13943: = false; +13943: +13943: static constexpr long double +13943: infinity() noexcept { return __builtin_huge_vall(); } +13943: +13943: static constexpr long double +13943: quiet_NaN() noexcept { return __builtin_nanl(""); } +13943: +13943: static constexpr long double +13943: signaling_NaN() noexcept { return __builtin_nansl(""); } +13943: +13943: static constexpr long double +13943: denorm_min() noexcept { return 4.9406564584124654e-324L; } +13943: +13943: static constexpr bool is_iec559 +13943: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; +13943: static constexpr bool is_bounded = true; +13943: static constexpr bool is_modulo = false; +13943: +13943: static constexpr bool traps = false; +13943: static constexpr bool tinyness_before = +13943: false; +13943: static constexpr float_round_style round_style = +13943: round_to_nearest; +13943: }; +13943: # 1989 "/usr/include/c++/14/limits" 3 +13943: __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; }; +13943: +13943: +13943: __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; }; +13943: # 2222 "/usr/include/c++/14/limits" 3 +13943: +13943: } +13943: # 40 "/usr/include/c++/14/bits/chrono.h" 2 3 +13943: # 1 "/usr/include/c++/14/ctime" 1 3 +13943: # 39 "/usr/include/c++/14/ctime" 3 +13943: +13943: # 40 "/usr/include/c++/14/ctime" 3 +13943: # 58 "/usr/include/c++/14/ctime" 3 +13943: namespace std +13943: { +13943: using ::clock_t; +13943: using ::time_t; +13943: using ::tm; +13943: +13943: using ::clock; +13943: using ::difftime; +13943: using ::mktime; +13943: using ::time; +13943: using ::asctime; +13943: using ::ctime; +13943: using ::gmtime; +13943: using ::localtime; +13943: using ::strftime; +13943: } +13943: +13943: +13943: +13943: namespace std +13943: { +13943: using ::timespec; +13943: using ::timespec_get; +13943: } +13943: # 41 "/usr/include/c++/14/bits/chrono.h" 2 3 +13943: # 1 "/usr/include/c++/14/bits/parse_numbers.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/parse_numbers.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/parse_numbers.h" 3 +13943: # 42 "/usr/include/c++/14/bits/parse_numbers.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: namespace __parse_int +13943: { +13943: template +13943: struct _Digit; +13943: +13943: template +13943: struct _Digit<_Base, '0'> : integral_constant +13943: { +13943: using __valid = true_type; +13943: }; +13943: +13943: template +13943: struct _Digit<_Base, '1'> : integral_constant +13943: { +13943: using __valid = true_type; +13943: }; +13943: +13943: template +13943: struct _Digit_impl : integral_constant +13943: { +13943: static_assert(_Base > _Val, "invalid digit"); +13943: using __valid = true_type; +13943: }; +13943: +13943: template +13943: struct _Digit<_Base, '2'> : _Digit_impl<_Base, 2> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, '3'> : _Digit_impl<_Base, 3> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, '4'> : _Digit_impl<_Base, 4> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, '5'> : _Digit_impl<_Base, 5> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, '6'> : _Digit_impl<_Base, 6> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, '7'> : _Digit_impl<_Base, 7> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, '8'> : _Digit_impl<_Base, 8> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, '9'> : _Digit_impl<_Base, 9> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'a'> : _Digit_impl<_Base, 0xa> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'A'> : _Digit_impl<_Base, 0xa> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'b'> : _Digit_impl<_Base, 0xb> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'B'> : _Digit_impl<_Base, 0xb> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'c'> : _Digit_impl<_Base, 0xc> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'C'> : _Digit_impl<_Base, 0xc> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'd'> : _Digit_impl<_Base, 0xd> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'D'> : _Digit_impl<_Base, 0xd> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'e'> : _Digit_impl<_Base, 0xe> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'E'> : _Digit_impl<_Base, 0xe> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'f'> : _Digit_impl<_Base, 0xf> +13943: { }; +13943: +13943: template +13943: struct _Digit<_Base, 'F'> : _Digit_impl<_Base, 0xf> +13943: { }; +13943: +13943: +13943: template +13943: struct _Digit<_Base, '\''> : integral_constant +13943: { +13943: using __valid = false_type; +13943: }; +13943: +13943: +13943: +13943: template +13943: using __ull_constant = integral_constant; +13943: +13943: template +13943: struct _Power_help +13943: { +13943: using __next = typename _Power_help<_Base, _Digs...>::type; +13943: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; +13943: using type +13943: = __ull_constant<__next::value * (__valid_digit{} ? _Base : 1ULL)>; +13943: }; +13943: +13943: template +13943: struct _Power_help<_Base, _Dig> +13943: { +13943: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; +13943: using type = __ull_constant<__valid_digit::value>; +13943: }; +13943: +13943: template +13943: struct _Power : _Power_help<_Base, _Digs...>::type +13943: { }; +13943: +13943: template +13943: struct _Power<_Base> : __ull_constant<0> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct _Number_help +13943: { +13943: using __digit = _Digit<_Base, _Dig>; +13943: using __valid_digit = typename __digit::__valid; +13943: using __next = _Number_help<_Base, +13943: __valid_digit::value ? _Pow / _Base : _Pow, +13943: _Digs...>; +13943: using type = __ull_constant<_Pow * __digit::value + __next::type::value>; +13943: static_assert((type::value / _Pow) == __digit::value, +13943: "integer literal does not fit in unsigned long long"); +13943: }; +13943: +13943: +13943: template +13943: struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...> +13943: : _Number_help<_Base, _Pow, _Dig, _Digs...> +13943: { }; +13943: +13943: +13943: template +13943: struct _Number_help<_Base, 1ULL, _Dig> +13943: { +13943: using type = __ull_constant<_Digit<_Base, _Dig>::value>; +13943: }; +13943: +13943: template +13943: struct _Number +13943: : _Number_help<_Base, _Power<_Base, _Digs...>::value, _Digs...>::type +13943: { }; +13943: +13943: template +13943: struct _Number<_Base> +13943: : __ull_constant<0> +13943: { }; +13943: +13943: +13943: +13943: template +13943: struct _Parse_int; +13943: +13943: template +13943: struct _Parse_int<'0', 'b', _Digs...> +13943: : _Number<2U, _Digs...>::type +13943: { }; +13943: +13943: template +13943: struct _Parse_int<'0', 'B', _Digs...> +13943: : _Number<2U, _Digs...>::type +13943: { }; +13943: +13943: template +13943: struct _Parse_int<'0', 'x', _Digs...> +13943: : _Number<16U, _Digs...>::type +13943: { }; +13943: +13943: template +13943: struct _Parse_int<'0', 'X', _Digs...> +13943: : _Number<16U, _Digs...>::type +13943: { }; +13943: +13943: template +13943: struct _Parse_int<'0', _Digs...> +13943: : _Number<8U, _Digs...>::type +13943: { }; +13943: +13943: template +13943: struct _Parse_int +13943: : _Number<10U, _Digs...>::type +13943: { }; +13943: +13943: } +13943: +13943: +13943: namespace __select_int +13943: { +13943: template +13943: struct _Select_int_base; +13943: +13943: template +13943: struct _Select_int_base<_Val, _IntType, _Ints...> +13943: : __conditional_t<(_Val <= __gnu_cxx::__int_traits<_IntType>::__max), +13943: integral_constant<_IntType, (_IntType)_Val>, +13943: _Select_int_base<_Val, _Ints...>> +13943: { }; +13943: +13943: template +13943: struct _Select_int_base<_Val> +13943: { }; +13943: +13943: template +13943: using _Select_int = typename _Select_int_base< +13943: __parse_int::_Parse_int<_Digs...>::value, +13943: unsigned char, +13943: unsigned short, +13943: unsigned int, +13943: unsigned long, +13943: unsigned long long +13943: >::type; +13943: +13943: } +13943: +13943: +13943: } +13943: # 42 "/usr/include/c++/14/bits/chrono.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 48 "/usr/include/c++/14/bits/chrono.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: namespace filesystem { struct __file_clock; }; +13943: +13943: +13943: namespace chrono +13943: { +13943: +13943: +13943: +13943: +13943: template> +13943: class duration; +13943: +13943: +13943: template +13943: class time_point; +13943: +13943: } +13943: # 79 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: struct __duration_common_type +13943: { }; +13943: +13943: template +13943: struct __duration_common_type<_CT, _Period1, _Period2, +13943: __void_t> +13943: { +13943: private: +13943: using __gcd_num = __static_gcd<_Period1::num, _Period2::num>; +13943: using __gcd_den = __static_gcd<_Period1::den, _Period2::den>; +13943: using __cr = typename _CT::type; +13943: using __r = ratio<__gcd_num::value, +13943: (_Period1::den / __gcd_den::value) * _Period2::den>; +13943: +13943: public: +13943: using type = chrono::duration<__cr, typename __r::type>; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct common_type, +13943: chrono::duration<_Rep2, _Period2>> +13943: : __duration_common_type, +13943: typename _Period1::type, +13943: typename _Period2::type> +13943: { }; +13943: +13943: +13943: template +13943: struct common_type, +13943: chrono::duration<_Rep, _Period>> +13943: { +13943: using type = chrono::duration::type, +13943: typename _Period::type>; +13943: }; +13943: +13943: +13943: template +13943: struct common_type> +13943: { +13943: using type = chrono::duration::type, +13943: typename _Period::type>; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __timepoint_common_type +13943: { }; +13943: +13943: template +13943: struct __timepoint_common_type<_CT, _Clock, __void_t> +13943: { +13943: using type = chrono::time_point<_Clock, typename _CT::type>; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct common_type, +13943: chrono::time_point<_Clock, _Duration2>> +13943: : __timepoint_common_type, _Clock> +13943: { }; +13943: +13943: +13943: template +13943: struct common_type, +13943: chrono::time_point<_Clock, _Duration>> +13943: { using type = chrono::time_point<_Clock, _Duration>; }; +13943: +13943: +13943: template +13943: struct common_type> +13943: { using type = chrono::time_point<_Clock, _Duration>; }; +13943: +13943: +13943: +13943: +13943: namespace chrono +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct __duration_cast_impl +13943: { +13943: template +13943: static constexpr _ToDur +13943: __cast(const duration<_Rep, _Period>& __d) +13943: { +13943: typedef typename _ToDur::rep __to_rep; +13943: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) +13943: * static_cast<_CR>(_CF::num) +13943: / static_cast<_CR>(_CF::den))); +13943: } +13943: }; +13943: +13943: template +13943: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> +13943: { +13943: template +13943: static constexpr _ToDur +13943: __cast(const duration<_Rep, _Period>& __d) +13943: { +13943: typedef typename _ToDur::rep __to_rep; +13943: return _ToDur(static_cast<__to_rep>(__d.count())); +13943: } +13943: }; +13943: +13943: template +13943: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> +13943: { +13943: template +13943: static constexpr _ToDur +13943: __cast(const duration<_Rep, _Period>& __d) +13943: { +13943: typedef typename _ToDur::rep __to_rep; +13943: return _ToDur(static_cast<__to_rep>( +13943: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); +13943: } +13943: }; +13943: +13943: template +13943: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> +13943: { +13943: template +13943: static constexpr _ToDur +13943: __cast(const duration<_Rep, _Period>& __d) +13943: { +13943: typedef typename _ToDur::rep __to_rep; +13943: return _ToDur(static_cast<__to_rep>( +13943: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); +13943: } +13943: }; +13943: +13943: template +13943: struct __is_duration +13943: : std::false_type +13943: { }; +13943: +13943: template +13943: struct __is_duration> +13943: : std::true_type +13943: { }; +13943: +13943: template +13943: using __enable_if_is_duration +13943: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; +13943: +13943: template +13943: using __disable_if_is_duration +13943: = typename enable_if::value, _Tp>::type; +13943: +13943: +13943: template +13943: inline constexpr bool __is_duration_v = false; +13943: template +13943: inline constexpr bool __is_duration_v> = true; +13943: template +13943: inline constexpr bool __is_time_point_v = false; +13943: template +13943: inline constexpr bool __is_time_point_v> = true; +13943: # 272 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: constexpr __enable_if_is_duration<_ToDur> +13943: duration_cast(const duration<_Rep, _Period>& __d) +13943: { +13943: +13943: if constexpr (is_same_v<_ToDur, duration<_Rep, _Period>>) +13943: return __d; +13943: else +13943: { +13943: +13943: using __to_period = typename _ToDur::period; +13943: using __to_rep = typename _ToDur::rep; +13943: using __cf = ratio_divide<_Period, __to_period>; +13943: using __cr = typename common_type<__to_rep, _Rep, intmax_t>::type; +13943: using __dc = __duration_cast_impl<_ToDur, __cf, __cr, +13943: __cf::num == 1, __cf::den == 1>; +13943: return __dc::__cast(__d); +13943: +13943: } +13943: +13943: } +13943: # 306 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: struct treat_as_floating_point +13943: : is_floating_point<_Rep> +13943: { }; +13943: +13943: +13943: template +13943: inline constexpr bool treat_as_floating_point_v = +13943: treat_as_floating_point<_Rep>::value; +13943: +13943: template<> +13943: inline constexpr bool treat_as_floating_point_v = false; +13943: template<> +13943: inline constexpr bool treat_as_floating_point_v = false; +13943: template<> +13943: inline constexpr bool treat_as_floating_point_v = false; +13943: template<> +13943: inline constexpr bool treat_as_floating_point_v = true; +13943: template<> +13943: inline constexpr bool treat_as_floating_point_v = true; +13943: template<> +13943: inline constexpr bool treat_as_floating_point_v = true; +13943: # 386 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[nodiscard]] constexpr __enable_if_is_duration<_ToDur> +13943: floor(const duration<_Rep, _Period>& __d) +13943: { +13943: auto __to = chrono::duration_cast<_ToDur>(__d); +13943: if (__to > __d) +13943: return __to - _ToDur{1}; +13943: return __to; +13943: } +13943: # 406 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[nodiscard]] constexpr __enable_if_is_duration<_ToDur> +13943: ceil(const duration<_Rep, _Period>& __d) +13943: { +13943: auto __to = chrono::duration_cast<_ToDur>(__d); +13943: if (__to < __d) +13943: return __to + _ToDur{1}; +13943: return __to; +13943: } +13943: # 427 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[nodiscard]] constexpr +13943: enable_if_t< +13943: __and_<__is_duration<_ToDur>, +13943: __not_>>::value, +13943: _ToDur> +13943: round(const duration<_Rep, _Period>& __d) +13943: { +13943: _ToDur __t0 = chrono::floor<_ToDur>(__d); +13943: _ToDur __t1 = __t0 + _ToDur{1}; +13943: auto __diff0 = __d - __t0; +13943: auto __diff1 = __t1 - __d; +13943: if (__diff0 == __diff1) +13943: { +13943: if (__t0.count() & 1) +13943: return __t1; +13943: return __t0; +13943: } +13943: else if (__diff0 < __diff1) +13943: return __t0; +13943: return __t1; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: [[nodiscard]] constexpr +13943: enable_if_t::is_signed, duration<_Rep, _Period>> +13943: abs(duration<_Rep, _Period> __d) +13943: { +13943: if (__d >= __d.zero()) +13943: return __d; +13943: return -__d; +13943: } +13943: +13943: +13943: namespace __detail { using chrono::ceil; } +13943: # 494 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: struct duration_values +13943: { +13943: static constexpr _Rep +13943: zero() noexcept +13943: { return _Rep(0); } +13943: +13943: static constexpr _Rep +13943: max() noexcept +13943: { return numeric_limits<_Rep>::max(); } +13943: +13943: static constexpr _Rep +13943: min() noexcept +13943: { return numeric_limits<_Rep>::lowest(); } +13943: }; +13943: +13943: template +13943: class duration +13943: { +13943: static_assert(!__is_duration<_Rep>::value, +13943: "rep cannot be a std::chrono::duration"); +13943: static_assert(__is_ratio<_Period>::value, +13943: "period must be a specialization of std::ratio"); +13943: static_assert(_Period::num > 0, "period must be positive"); +13943: +13943: template +13943: using __is_float = treat_as_floating_point<_Rep2>; +13943: +13943: static constexpr intmax_t +13943: _S_gcd(intmax_t __m, intmax_t __n) noexcept +13943: { +13943: +13943: +13943: +13943: do +13943: { +13943: intmax_t __rem = __m % __n; +13943: __m = __n; +13943: __n = __rem; +13943: } +13943: while (__n != 0); +13943: return __m; +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: using __divide = ratio<(_R1::num / __gcd1) * (_R2::den / __gcd2), +13943: (_R1::den / __gcd2) * (_R2::num / __gcd1)>; +13943: +13943: +13943: template +13943: using __is_harmonic +13943: = __bool_constant<__divide<_Period2, _Period>::den == 1>; +13943: +13943: public: +13943: +13943: using rep = _Rep; +13943: using period = typename _Period::type; +13943: +13943: +13943: constexpr duration() = default; +13943: +13943: duration(const duration&) = default; +13943: +13943: +13943: +13943: template, +13943: __or_<__is_float, __not_<__is_float<_Rep2>>>>> +13943: constexpr explicit duration(const _Rep2& __rep) +13943: : __r(static_cast(__rep)) { } +13943: +13943: template, +13943: __or_<__is_float, +13943: __and_<__is_harmonic<_Period2>, +13943: __not_<__is_float<_Rep2>>>>>> +13943: constexpr duration(const duration<_Rep2, _Period2>& __d) +13943: : __r(duration_cast(__d).count()) { } +13943: +13943: ~duration() = default; +13943: duration& operator=(const duration&) = default; +13943: +13943: +13943: constexpr rep +13943: count() const +13943: { return __r; } +13943: +13943: +13943: +13943: constexpr duration::type, period> +13943: operator+() const +13943: { return duration::type, period>(__r); } +13943: +13943: constexpr duration::type, period> +13943: operator-() const +13943: { return duration::type, period>(-__r); } +13943: +13943: constexpr duration& +13943: operator++() +13943: { +13943: ++__r; +13943: return *this; +13943: } +13943: +13943: constexpr duration +13943: operator++(int) +13943: { return duration(__r++); } +13943: +13943: constexpr duration& +13943: operator--() +13943: { +13943: --__r; +13943: return *this; +13943: } +13943: +13943: constexpr duration +13943: operator--(int) +13943: { return duration(__r--); } +13943: +13943: constexpr duration& +13943: operator+=(const duration& __d) +13943: { +13943: __r += __d.count(); +13943: return *this; +13943: } +13943: +13943: constexpr duration& +13943: operator-=(const duration& __d) +13943: { +13943: __r -= __d.count(); +13943: return *this; +13943: } +13943: +13943: constexpr duration& +13943: operator*=(const rep& __rhs) +13943: { +13943: __r *= __rhs; +13943: return *this; +13943: } +13943: +13943: constexpr duration& +13943: operator/=(const rep& __rhs) +13943: { +13943: __r /= __rhs; +13943: return *this; +13943: } +13943: +13943: +13943: template +13943: constexpr +13943: __enable_if_t::value, duration&> +13943: operator%=(const rep& __rhs) +13943: { +13943: __r %= __rhs; +13943: return *this; +13943: } +13943: +13943: template +13943: constexpr +13943: __enable_if_t::value, duration&> +13943: operator%=(const duration& __d) +13943: { +13943: __r %= __d.count(); +13943: return *this; +13943: } +13943: +13943: +13943: static constexpr duration +13943: zero() noexcept +13943: { return duration(duration_values::zero()); } +13943: +13943: static constexpr duration +13943: min() noexcept +13943: { return duration(duration_values::min()); } +13943: +13943: static constexpr duration +13943: max() noexcept +13943: { return duration(duration_values::max()); } +13943: +13943: private: +13943: rep __r; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr typename common_type, +13943: duration<_Rep2, _Period2>>::type +13943: operator+(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep1, _Period1> __dur1; +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<__dur1,__dur2>::type __cd; +13943: return __cd(__cd(__lhs).count() + __cd(__rhs).count()); +13943: } +13943: +13943: +13943: template +13943: constexpr typename common_type, +13943: duration<_Rep2, _Period2>>::type +13943: operator-(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep1, _Period1> __dur1; +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<__dur1,__dur2>::type __cd; +13943: return __cd(__cd(__lhs).count() - __cd(__rhs).count()); +13943: } +13943: # 727 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template::type> +13943: using __common_rep_t = typename +13943: enable_if::value, _CRep>::type; +13943: # 739 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> +13943: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +13943: { +13943: typedef duration::type, _Period> +13943: __cd; +13943: return __cd(__cd(__d).count() * __s); +13943: } +13943: +13943: template +13943: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> +13943: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) +13943: { return __d * __s; } +13943: +13943: template +13943: constexpr +13943: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> +13943: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +13943: { +13943: typedef duration::type, _Period> +13943: __cd; +13943: return __cd(__cd(__d).count() / __s); +13943: } +13943: +13943: template +13943: constexpr typename common_type<_Rep1, _Rep2>::type +13943: operator/(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep1, _Period1> __dur1; +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<__dur1,__dur2>::type __cd; +13943: return __cd(__lhs).count() / __cd(__rhs).count(); +13943: } +13943: +13943: +13943: template +13943: constexpr +13943: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> +13943: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +13943: { +13943: typedef duration::type, _Period> +13943: __cd; +13943: return __cd(__cd(__d).count() % __s); +13943: } +13943: +13943: template +13943: constexpr typename common_type, +13943: duration<_Rep2, _Period2>>::type +13943: operator%(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep1, _Period1> __dur1; +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<__dur1,__dur2>::type __cd; +13943: return __cd(__cd(__lhs).count() % __cd(__rhs).count()); +13943: } +13943: # 807 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: constexpr bool +13943: operator==(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep1, _Period1> __dur1; +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<__dur1,__dur2>::type __ct; +13943: return __ct(__lhs).count() == __ct(__rhs).count(); +13943: } +13943: +13943: template +13943: constexpr bool +13943: operator<(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep1, _Period1> __dur1; +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<__dur1,__dur2>::type __ct; +13943: return __ct(__lhs).count() < __ct(__rhs).count(); +13943: } +13943: # 844 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: constexpr bool +13943: operator!=(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: +13943: +13943: template +13943: constexpr bool +13943: operator<=(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { return !(__rhs < __lhs); } +13943: +13943: template +13943: constexpr bool +13943: operator>(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { return __rhs < __lhs; } +13943: +13943: template +13943: constexpr bool +13943: operator>=(const duration<_Rep1, _Period1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { return !(__lhs < __rhs); } +13943: # 888 "/usr/include/c++/14/bits/chrono.h" 3 +13943: using nanoseconds = duration; +13943: +13943: +13943: using microseconds = duration; +13943: +13943: +13943: using milliseconds = duration; +13943: +13943: +13943: using seconds = duration; +13943: +13943: +13943: using minutes = duration>; +13943: +13943: +13943: using hours = duration>; +13943: # 921 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: class time_point +13943: { +13943: static_assert(__is_duration<_Dur>::value, +13943: "duration must be a specialization of std::chrono::duration"); +13943: +13943: public: +13943: typedef _Clock clock; +13943: typedef _Dur duration; +13943: typedef typename duration::rep rep; +13943: typedef typename duration::period period; +13943: +13943: constexpr time_point() : __d(duration::zero()) +13943: { } +13943: +13943: constexpr explicit time_point(const duration& __dur) +13943: : __d(__dur) +13943: { } +13943: +13943: +13943: template>> +13943: constexpr time_point(const time_point& __t) +13943: : __d(__t.time_since_epoch()) +13943: { } +13943: +13943: +13943: constexpr duration +13943: time_since_epoch() const +13943: { return __d; } +13943: # 977 "/usr/include/c++/14/bits/chrono.h" 3 +13943: constexpr time_point& +13943: operator+=(const duration& __dur) +13943: { +13943: __d += __dur; +13943: return *this; +13943: } +13943: +13943: constexpr time_point& +13943: operator-=(const duration& __dur) +13943: { +13943: __d -= __dur; +13943: return *this; +13943: } +13943: +13943: +13943: static constexpr time_point +13943: min() noexcept +13943: { return time_point(duration::min()); } +13943: +13943: static constexpr time_point +13943: max() noexcept +13943: { return time_point(duration::max()); } +13943: +13943: private: +13943: duration __d; +13943: }; +13943: # 1016 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[__nodiscard__]] constexpr +13943: __enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> +13943: time_point_cast(const time_point<_Clock, _Dur>& __t) +13943: { +13943: typedef time_point<_Clock, _ToDur> __time_point; +13943: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); +13943: } +13943: # 1038 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[nodiscard]] constexpr +13943: enable_if_t<__is_duration_v<_ToDur>, time_point<_Clock, _ToDur>> +13943: floor(const time_point<_Clock, _Dur>& __tp) +13943: { +13943: return time_point<_Clock, _ToDur>{ +13943: chrono::floor<_ToDur>(__tp.time_since_epoch())}; +13943: } +13943: # 1059 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[nodiscard]] constexpr +13943: enable_if_t<__is_duration_v<_ToDur>, time_point<_Clock, _ToDur>> +13943: ceil(const time_point<_Clock, _Dur>& __tp) +13943: { +13943: return time_point<_Clock, _ToDur>{ +13943: chrono::ceil<_ToDur>(__tp.time_since_epoch())}; +13943: } +13943: # 1081 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: [[nodiscard]] constexpr +13943: enable_if_t<__is_duration_v<_ToDur> +13943: && !treat_as_floating_point_v, +13943: time_point<_Clock, _ToDur>> +13943: round(const time_point<_Clock, _Dur>& __tp) +13943: { +13943: return time_point<_Clock, _ToDur>{ +13943: chrono::round<_ToDur>(__tp.time_since_epoch())}; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr time_point<_Clock, +13943: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> +13943: operator+(const time_point<_Clock, _Dur1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<_Dur1,__dur2>::type __ct; +13943: typedef time_point<_Clock, __ct> __time_point; +13943: return __time_point(__lhs.time_since_epoch() + __rhs); +13943: } +13943: +13943: +13943: template +13943: constexpr time_point<_Clock, +13943: typename common_type, _Dur2>::type> +13943: operator+(const duration<_Rep1, _Period1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { +13943: typedef duration<_Rep1, _Period1> __dur1; +13943: typedef typename common_type<__dur1,_Dur2>::type __ct; +13943: typedef time_point<_Clock, __ct> __time_point; +13943: return __time_point(__rhs.time_since_epoch() + __lhs); +13943: } +13943: +13943: +13943: template +13943: constexpr time_point<_Clock, +13943: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> +13943: operator-(const time_point<_Clock, _Dur1>& __lhs, +13943: const duration<_Rep2, _Period2>& __rhs) +13943: { +13943: typedef duration<_Rep2, _Period2> __dur2; +13943: typedef typename common_type<_Dur1,__dur2>::type __ct; +13943: typedef time_point<_Clock, __ct> __time_point; +13943: return __time_point(__lhs.time_since_epoch() -__rhs); +13943: } +13943: +13943: +13943: template +13943: constexpr typename common_type<_Dur1, _Dur2>::type +13943: operator-(const time_point<_Clock, _Dur1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: constexpr bool +13943: operator==(const time_point<_Clock, _Dur1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } +13943: # 1165 "/usr/include/c++/14/bits/chrono.h" 3 +13943: template +13943: constexpr bool +13943: operator!=(const time_point<_Clock, _Dur1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: +13943: +13943: template +13943: constexpr bool +13943: operator<(const time_point<_Clock, _Dur1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } +13943: +13943: template +13943: constexpr bool +13943: operator<=(const time_point<_Clock, _Dur1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { return !(__rhs < __lhs); } +13943: +13943: template +13943: constexpr bool +13943: operator>(const time_point<_Clock, _Dur1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { return __rhs < __lhs; } +13943: +13943: template +13943: constexpr bool +13943: operator>=(const time_point<_Clock, _Dur1>& __lhs, +13943: const time_point<_Clock, _Dur2>& __rhs) +13943: { return !(__lhs < __rhs); } +13943: # 1217 "/usr/include/c++/14/bits/chrono.h" 3 +13943: inline namespace _V2 { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct system_clock +13943: { +13943: typedef chrono::nanoseconds duration; +13943: typedef duration::rep rep; +13943: typedef duration::period period; +13943: typedef chrono::time_point time_point; +13943: +13943: static_assert(system_clock::duration::min() +13943: < system_clock::duration::zero(), +13943: "a clock's minimum duration cannot be less than its epoch"); +13943: +13943: static constexpr bool is_steady = false; +13943: +13943: static time_point +13943: now() noexcept; +13943: +13943: +13943: +13943: static std::time_t +13943: to_time_t(const time_point& __t) noexcept +13943: { +13943: return std::time_t(duration_cast +13943: (__t.time_since_epoch()).count()); +13943: } +13943: +13943: +13943: static time_point +13943: from_time_t(std::time_t __t) noexcept +13943: { +13943: typedef chrono::time_point __from; +13943: return time_point_cast +13943: (__from(chrono::seconds(__t))); +13943: } +13943: }; +13943: # 1267 "/usr/include/c++/14/bits/chrono.h" 3 +13943: struct steady_clock +13943: { +13943: typedef chrono::nanoseconds duration; +13943: typedef duration::rep rep; +13943: typedef duration::period period; +13943: typedef chrono::time_point time_point; +13943: +13943: static constexpr bool is_steady = true; +13943: +13943: static time_point +13943: now() noexcept; +13943: }; +13943: # 1289 "/usr/include/c++/14/bits/chrono.h" 3 +13943: using high_resolution_clock = system_clock; +13943: +13943: } +13943: # 1315 "/usr/include/c++/14/bits/chrono.h" 3 +13943: } +13943: +13943: +13943: inline namespace literals +13943: { +13943: # 1344 "/usr/include/c++/14/bits/chrono.h" 3 +13943: inline namespace chrono_literals +13943: { +13943: +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wliteral-suffix" +13943: +13943: template +13943: constexpr _Dur __check_overflow() +13943: { +13943: using _Val = __parse_int::_Parse_int<_Digits...>; +13943: constexpr typename _Dur::rep __repval = _Val::value; +13943: static_assert(__repval >= 0 && __repval == _Val::value, +13943: "literal value cannot be represented by duration type"); +13943: return _Dur(__repval); +13943: } +13943: +13943: +13943: +13943: constexpr chrono::duration> +13943: operator""h(long double __hours) +13943: { return chrono::duration>{__hours}; } +13943: +13943: +13943: template +13943: constexpr chrono::hours +13943: operator""h() +13943: { return __check_overflow(); } +13943: +13943: +13943: constexpr chrono::duration> +13943: operator""min(long double __mins) +13943: { return chrono::duration>{__mins}; } +13943: +13943: +13943: template +13943: constexpr chrono::minutes +13943: operator""min() +13943: { return __check_overflow(); } +13943: +13943: +13943: constexpr chrono::duration +13943: operator""s(long double __secs) +13943: { return chrono::duration{__secs}; } +13943: +13943: +13943: template +13943: constexpr chrono::seconds +13943: operator""s() +13943: { return __check_overflow(); } +13943: +13943: +13943: constexpr chrono::duration +13943: operator""ms(long double __msecs) +13943: { return chrono::duration{__msecs}; } +13943: +13943: +13943: template +13943: constexpr chrono::milliseconds +13943: operator""ms() +13943: { return __check_overflow(); } +13943: +13943: +13943: constexpr chrono::duration +13943: operator""us(long double __usecs) +13943: { return chrono::duration{__usecs}; } +13943: +13943: +13943: template +13943: constexpr chrono::microseconds +13943: operator""us() +13943: { return __check_overflow(); } +13943: +13943: +13943: constexpr chrono::duration +13943: operator""ns(long double __nsecs) +13943: { return chrono::duration{__nsecs}; } +13943: +13943: +13943: template +13943: constexpr chrono::nanoseconds +13943: operator""ns() +13943: { return __check_overflow(); } +13943: +13943: #pragma GCC diagnostic pop +13943: +13943: } +13943: } +13943: +13943: namespace chrono +13943: { +13943: using namespace literals::chrono_literals; +13943: } +13943: +13943: +13943: +13943: namespace filesystem +13943: { +13943: struct __file_clock +13943: { +13943: using duration = chrono::nanoseconds; +13943: using rep = duration::rep; +13943: using period = duration::period; +13943: using time_point = chrono::time_point<__file_clock>; +13943: static constexpr bool is_steady = false; +13943: +13943: static time_point +13943: now() noexcept +13943: { return _S_from_sys(chrono::system_clock::now()); } +13943: # 1470 "/usr/include/c++/14/bits/chrono.h" 3 +13943: private: +13943: using __sys_clock = chrono::system_clock; +13943: +13943: +13943: +13943: +13943: static constexpr chrono::seconds _S_epoch_diff{6437664000}; +13943: +13943: protected: +13943: +13943: template +13943: static +13943: chrono::time_point<__file_clock, common_type_t<_Dur, chrono::seconds>> +13943: _S_from_sys(const chrono::time_point<__sys_clock, _Dur>& __t) noexcept +13943: { +13943: using _CDur = common_type_t<_Dur, chrono::seconds>; +13943: using __file_time = chrono::time_point<__file_clock, _CDur>; +13943: return __file_time{__t.time_since_epoch()} - _S_epoch_diff; +13943: } +13943: +13943: +13943: template +13943: static +13943: chrono::time_point<__sys_clock, common_type_t<_Dur, chrono::seconds>> +13943: _S_to_sys(const chrono::time_point<__file_clock, _Dur>& __t) noexcept +13943: { +13943: using _CDur = common_type_t<_Dur, chrono::seconds>; +13943: using __sys_time = chrono::time_point<__sys_clock, _CDur>; +13943: return __sys_time{__t.time_since_epoch()} + _S_epoch_diff; +13943: } +13943: }; +13943: } +13943: +13943: +13943: +13943: } +13943: # 37 "/usr/include/c++/14/bits/this_thread_sleep.h" 2 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/cerrno" 1 3 +13943: # 39 "/usr/include/c++/14/cerrno" 3 +13943: +13943: # 40 "/usr/include/c++/14/cerrno" 3 +13943: # 40 "/usr/include/c++/14/bits/this_thread_sleep.h" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 56 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +13943: namespace this_thread +13943: { +13943: # 66 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +13943: template +13943: inline void +13943: sleep_for(const chrono::duration<_Rep, _Period>& __rtime) +13943: { +13943: if (__rtime <= __rtime.zero()) +13943: return; +13943: auto __s = chrono::duration_cast(__rtime); +13943: auto __ns = chrono::duration_cast(__rtime - __s); +13943: +13943: struct ::timespec __ts = +13943: { +13943: static_cast(__s.count()), +13943: static_cast(__ns.count()) +13943: }; +13943: while (::nanosleep(&__ts, &__ts) == -1 && (*__errno_location ()) == 4) +13943: { } +13943: +13943: +13943: +13943: } +13943: +13943: +13943: template +13943: inline void +13943: sleep_until(const chrono::time_point<_Clock, _Duration>& __atime) +13943: { +13943: +13943: +13943: +13943: auto __now = _Clock::now(); +13943: if (_Clock::is_steady) +13943: { +13943: if (__now < __atime) +13943: sleep_for(__atime - __now); +13943: return; +13943: } +13943: while (__now < __atime) +13943: { +13943: sleep_for(__atime - __now); +13943: __now = _Clock::now(); +13943: } +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 47 "/usr/include/c++/14/thread" 2 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 51 "/usr/include/c++/14/thread" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 78 "/usr/include/c++/14/thread" 3 +13943: inline bool +13943: operator!=(thread::id __x, thread::id __y) noexcept +13943: { return !(__x == __y); } +13943: +13943: inline bool +13943: operator<(thread::id __x, thread::id __y) noexcept +13943: { +13943: +13943: +13943: return __x._M_thread < __y._M_thread; +13943: } +13943: +13943: inline bool +13943: operator<=(thread::id __x, thread::id __y) noexcept +13943: { return !(__y < __x); } +13943: +13943: inline bool +13943: operator>(thread::id __x, thread::id __y) noexcept +13943: { return __y < __x; } +13943: +13943: inline bool +13943: operator>=(thread::id __x, thread::id __y) noexcept +13943: { return !(__x < __y); } +13943: +13943: +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id) +13943: { +13943: +13943: using __output_type +13943: = __conditional_t::value, +13943: const void*, +13943: thread::native_handle_type>; +13943: +13943: if (__id == thread::id()) +13943: return __out << "thread::id of a non-executing thread"; +13943: else +13943: return __out << static_cast<__output_type>(__id._M_thread); +13943: } +13943: # 372 "/usr/include/c++/14/thread" 3 +13943: +13943: } +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/port_defs.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/port_defs.h" +13943: +13943: +13943: +13943: +13943: +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/port_defs.h" +13943: namespace rocksdb { +13943: +13943: namespace port { +13943: class CondVar; +13943: } +13943: +13943: enum class CpuPriority { +13943: kIdle = 0, +13943: kLow = 1, +13943: kNormal = 2, +13943: kHigh = 3, +13943: }; +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 2 +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +13943: namespace rocksdb { +13943: +13943: extern const bool kDefaultToAdaptiveMutex; +13943: +13943: namespace port { +13943: constexpr bool kLittleEndian = ( +13943: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 3 4 +13943: 1234 +13943: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +13943: == +13943: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 3 4 +13943: 1234 +13943: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +13943: ); +13943: +13943: +13943: class CondVar; +13943: +13943: class Mutex { +13943: public: +13943: static const char* kName() { return "pthread_mutex_t"; } +13943: +13943: explicit Mutex(bool adaptive = kDefaultToAdaptiveMutex); +13943: +13943: Mutex(const Mutex&) = delete; +13943: void operator=(const Mutex&) = delete; +13943: +13943: ~Mutex(); +13943: +13943: void Lock(); +13943: void Unlock(); +13943: +13943: bool TryLock(); +13943: +13943: +13943: +13943: void AssertHeld() const; +13943: +13943: +13943: inline void lock() { Lock(); } +13943: inline void unlock() { Unlock(); } +13943: inline bool try_lock() { return TryLock(); } +13943: +13943: private: +13943: friend class CondVar; +13943: pthread_mutex_t mu_; +13943: +13943: bool locked_ = false; +13943: +13943: }; +13943: +13943: class RWMutex { +13943: public: +13943: RWMutex(); +13943: +13943: RWMutex(const RWMutex&) = delete; +13943: void operator=(const RWMutex&) = delete; +13943: +13943: ~RWMutex(); +13943: +13943: void ReadLock(); +13943: void WriteLock(); +13943: void ReadUnlock(); +13943: void WriteUnlock(); +13943: void AssertHeld() const {} +13943: +13943: private: +13943: pthread_rwlock_t mu_; +13943: }; +13943: +13943: class CondVar { +13943: public: +13943: explicit CondVar(Mutex* mu); +13943: ~CondVar(); +13943: +13943: Mutex* GetMutex() const { return mu_; } +13943: +13943: void Wait(); +13943: +13943: bool TimedWait(uint64_t abs_time_us); +13943: void Signal(); +13943: void SignalAll(); +13943: +13943: private: +13943: pthread_cond_t cv_; +13943: Mutex* mu_; +13943: }; +13943: +13943: using Thread = std::thread; +13943: +13943: static inline void AsmVolatilePause() { +13943: # 179 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +13943: } +13943: +13943: +13943: int PhysicalCoreID(); +13943: +13943: using OnceType = pthread_once_t; +13943: +13943: void InitOnce(OnceType* once, void (*initializer)()); +13943: # 211 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +13943: static_assert((64U & (64U - 1)) == 0, +13943: "Cache line size must be a power of 2 number of bytes"); +13943: +13943: void* cacheline_aligned_alloc(size_t size); +13943: +13943: void cacheline_aligned_free(void* memblock); +13943: # 229 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +13943: void Crash(const std::string& srcfile, int srcline); +13943: +13943: int GetMaxOpenFiles(); +13943: +13943: extern const size_t kPageSize; +13943: +13943: using ThreadId = pid_t; +13943: +13943: void SetCpuPriority(ThreadId id, CpuPriority priority); +13943: +13943: int64_t GetProcessID(); +13943: +13943: +13943: +13943: bool GenerateRfcUuid(std::string* output); +13943: +13943: } +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" 2 +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" +13943: extern "C" bool RocksDbThreadYieldAndCheckAbort() __attribute__((__weak__)); +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/coding_lean.h" 1 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/util/coding_lean.h" +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cstring" 1 3 +13943: # 39 "/usr/include/c++/14/cstring" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstring" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 43 "/usr/include/c++/14/cstring" 2 3 +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/util/coding_lean.h" 2 +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: inline void EncodeFixed16(char* buf, uint16_t value) { +13943: if (port::kLittleEndian) { +13943: memcpy(buf, &value, sizeof(value)); +13943: } else { +13943: buf[0] = value & 0xff; +13943: buf[1] = (value >> 8) & 0xff; +13943: } +13943: } +13943: +13943: inline void EncodeFixed32(char* buf, uint32_t value) { +13943: if (port::kLittleEndian) { +13943: memcpy(buf, &value, sizeof(value)); +13943: } else { +13943: buf[0] = value & 0xff; +13943: buf[1] = (value >> 8) & 0xff; +13943: buf[2] = (value >> 16) & 0xff; +13943: buf[3] = (value >> 24) & 0xff; +13943: } +13943: } +13943: +13943: inline void EncodeFixed64(char* buf, uint64_t value) { +13943: if (port::kLittleEndian) { +13943: memcpy(buf, &value, sizeof(value)); +13943: } else { +13943: buf[0] = value & 0xff; +13943: buf[1] = (value >> 8) & 0xff; +13943: buf[2] = (value >> 16) & 0xff; +13943: buf[3] = (value >> 24) & 0xff; +13943: buf[4] = (value >> 32) & 0xff; +13943: buf[5] = (value >> 40) & 0xff; +13943: buf[6] = (value >> 48) & 0xff; +13943: buf[7] = (value >> 56) & 0xff; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: inline uint16_t DecodeFixed16(const char* ptr) { +13943: if (port::kLittleEndian) { +13943: +13943: uint16_t result; +13943: memcpy(&result, ptr, sizeof(result)); +13943: return result; +13943: } else { +13943: return ((static_cast(static_cast(ptr[0]))) | +13943: (static_cast(static_cast(ptr[1])) << 8)); +13943: } +13943: } +13943: +13943: inline uint32_t DecodeFixed32(const char* ptr) { +13943: if (port::kLittleEndian) { +13943: +13943: uint32_t result; +13943: memcpy(&result, ptr, sizeof(result)); +13943: return result; +13943: } else { +13943: return ((static_cast(static_cast(ptr[0]))) | +13943: (static_cast(static_cast(ptr[1])) << 8) | +13943: (static_cast(static_cast(ptr[2])) << 16) | +13943: (static_cast(static_cast(ptr[3])) << 24)); +13943: } +13943: } +13943: +13943: inline uint64_t DecodeFixed64(const char* ptr) { +13943: if (port::kLittleEndian) { +13943: +13943: uint64_t result; +13943: memcpy(&result, ptr, sizeof(result)); +13943: return result; +13943: } else { +13943: uint64_t lo = DecodeFixed32(ptr); +13943: uint64_t hi = DecodeFixed32(ptr + 4); +13943: return (hi << 32) | lo; +13943: } +13943: } +13943: +13943: } +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: const uint32_t kMaxVarint64Length = 10; +13943: +13943: +13943: void PutFixed16(std::string* dst, uint16_t value); +13943: void PutFixed32(std::string* dst, uint32_t value); +13943: void PutFixed64(std::string* dst, uint64_t value); +13943: void PutVarint32(std::string* dst, uint32_t value); +13943: void PutVarint32Varint32(std::string* dst, uint32_t value1, uint32_t value2); +13943: void PutVarint32Varint32Varint32(std::string* dst, uint32_t value1, +13943: uint32_t value2, uint32_t value3); +13943: void PutVarint64(std::string* dst, uint64_t value); +13943: void PutVarint64Varint64(std::string* dst, uint64_t value1, uint64_t value2); +13943: void PutVarint32Varint64(std::string* dst, uint32_t value1, uint64_t value2); +13943: void PutVarint32Varint32Varint64(std::string* dst, uint32_t value1, +13943: uint32_t value2, uint64_t value3); +13943: void PutLengthPrefixedSlice(std::string* dst, const Slice& value); +13943: void PutLengthPrefixedSliceParts(std::string* dst, +13943: const SliceParts& slice_parts); +13943: void PutLengthPrefixedSlicePartsWithPadding(std::string* dst, +13943: const SliceParts& slice_parts, +13943: size_t pad_sz); +13943: +13943: +13943: +13943: bool GetFixed64(Slice* input, uint64_t* value); +13943: bool GetFixed32(Slice* input, uint32_t* value); +13943: bool GetFixed16(Slice* input, uint16_t* value); +13943: bool GetVarint32(Slice* input, uint32_t* value); +13943: bool GetVarint64(Slice* input, uint64_t* value); +13943: bool GetVarsignedint64(Slice* input, int64_t* value); +13943: bool GetLengthPrefixedSlice(Slice* input, Slice* result); +13943: +13943: Slice GetLengthPrefixedSlice(const char* data); +13943: +13943: Slice GetSliceUntil(Slice* slice, char delimiter); +13943: +13943: +13943: +13943: constexpr inline uint64_t i64ToZigzag(const int64_t l) { +13943: return (static_cast(l) << 1) ^ static_cast(l >> 63); +13943: } +13943: inline int64_t zigzagToI64(uint64_t n) { +13943: return (n >> 1) ^ -static_cast(n & 1); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: const char* GetVarint32Ptr(const char* p, const char* limit, uint32_t* v); +13943: const char* GetVarint64Ptr(const char* p, const char* limit, uint64_t* v); +13943: inline const char* GetVarsignedint64Ptr(const char* p, const char* limit, +13943: int64_t* value) { +13943: uint64_t u = 0; +13943: const char* ret = GetVarint64Ptr(p, limit, &u); +13943: *value = zigzagToI64(u); +13943: return ret; +13943: } +13943: +13943: +13943: int VarintLength(uint64_t v); +13943: +13943: +13943: +13943: +13943: char* EncodeVarint32(char* dst, uint32_t value); +13943: char* EncodeVarint64(char* dst, uint64_t value); +13943: +13943: +13943: const char* GetVarint32PtrFallback(const char* p, const char* limit, +13943: uint32_t* value); +13943: inline const char* GetVarint32Ptr(const char* p, const char* limit, +13943: uint32_t* value) { +13943: if (p < limit) { +13943: uint32_t result = *(reinterpret_cast(p)); +13943: if ((result & 128) == 0) { +13943: *value = result; +13943: return p + 1; +13943: } +13943: } +13943: return GetVarint32PtrFallback(p, limit, value); +13943: } +13943: +13943: +13943: inline void PutFixed16(std::string* dst, uint16_t value) { +13943: if (port::kLittleEndian) { +13943: dst->append(const_cast(reinterpret_cast(&value)), +13943: sizeof(value)); +13943: } else { +13943: char buf[sizeof(value)]; +13943: EncodeFixed16(buf, value); +13943: dst->append(buf, sizeof(buf)); +13943: } +13943: } +13943: +13943: inline void PutFixed32(std::string* dst, uint32_t value) { +13943: if (port::kLittleEndian) { +13943: dst->append(const_cast(reinterpret_cast(&value)), +13943: sizeof(value)); +13943: } else { +13943: char buf[sizeof(value)]; +13943: EncodeFixed32(buf, value); +13943: dst->append(buf, sizeof(buf)); +13943: } +13943: } +13943: +13943: inline void PutFixed64(std::string* dst, uint64_t value) { +13943: if (port::kLittleEndian) { +13943: dst->append(const_cast(reinterpret_cast(&value)), +13943: sizeof(value)); +13943: } else { +13943: char buf[sizeof(value)]; +13943: EncodeFixed64(buf, value); +13943: dst->append(buf, sizeof(buf)); +13943: } +13943: } +13943: +13943: inline void PutVarint32(std::string* dst, uint32_t v) { +13943: char buf[5]; +13943: char* ptr = EncodeVarint32(buf, v); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline void PutVarint32Varint32(std::string* dst, uint32_t v1, uint32_t v2) { +13943: char buf[10]; +13943: char* ptr = EncodeVarint32(buf, v1); +13943: ptr = EncodeVarint32(ptr, v2); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline void PutVarint32Varint32Varint32(std::string* dst, uint32_t v1, +13943: uint32_t v2, uint32_t v3) { +13943: char buf[15]; +13943: char* ptr = EncodeVarint32(buf, v1); +13943: ptr = EncodeVarint32(ptr, v2); +13943: ptr = EncodeVarint32(ptr, v3); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline char* EncodeVarint64(char* dst, uint64_t v) { +13943: static const unsigned int B = 128; +13943: unsigned char* ptr = reinterpret_cast(dst); +13943: while (v >= B) { +13943: *(ptr++) = (v & (B - 1)) | B; +13943: v >>= 7; +13943: } +13943: *(ptr++) = static_cast(v); +13943: return reinterpret_cast(ptr); +13943: } +13943: +13943: inline void PutVarint64(std::string* dst, uint64_t v) { +13943: char buf[kMaxVarint64Length]; +13943: char* ptr = EncodeVarint64(buf, v); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline void PutVarsignedint64(std::string* dst, int64_t v) { +13943: char buf[kMaxVarint64Length]; +13943: +13943: char* ptr = EncodeVarint64(buf, i64ToZigzag(v)); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline void PutVarint64Varint64(std::string* dst, uint64_t v1, uint64_t v2) { +13943: char buf[20]; +13943: char* ptr = EncodeVarint64(buf, v1); +13943: ptr = EncodeVarint64(ptr, v2); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline void PutVarint32Varint64(std::string* dst, uint32_t v1, uint64_t v2) { +13943: char buf[15]; +13943: char* ptr = EncodeVarint32(buf, v1); +13943: ptr = EncodeVarint64(ptr, v2); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline void PutVarint32Varint32Varint64(std::string* dst, uint32_t v1, +13943: uint32_t v2, uint64_t v3) { +13943: char buf[20]; +13943: char* ptr = EncodeVarint32(buf, v1); +13943: ptr = EncodeVarint32(ptr, v2); +13943: ptr = EncodeVarint64(ptr, v3); +13943: dst->append(buf, static_cast(ptr - buf)); +13943: } +13943: +13943: inline void PutLengthPrefixedSlice(std::string* dst, const Slice& value) { +13943: PutVarint32(dst, static_cast(value.size())); +13943: dst->append(value.data(), value.size()); +13943: } +13943: +13943: inline void PutLengthPrefixedSliceParts(std::string* dst, size_t total_bytes, +13943: const SliceParts& slice_parts) { +13943: for (int i = 0; i < slice_parts.num_parts; ++i) { +13943: total_bytes += slice_parts.parts[i].size(); +13943: } +13943: PutVarint32(dst, static_cast(total_bytes)); +13943: for (int i = 0; i < slice_parts.num_parts; ++i) { +13943: dst->append(slice_parts.parts[i].data(), slice_parts.parts[i].size()); +13943: } +13943: } +13943: +13943: inline void PutLengthPrefixedSliceParts(std::string* dst, +13943: const SliceParts& slice_parts) { +13943: PutLengthPrefixedSliceParts(dst, 0, slice_parts); +13943: } +13943: +13943: inline void PutLengthPrefixedSlicePartsWithPadding( +13943: std::string* dst, const SliceParts& slice_parts, size_t pad_sz) { +13943: PutLengthPrefixedSliceParts(dst, pad_sz, slice_parts); +13943: dst->append(pad_sz, '\0'); +13943: } +13943: +13943: inline int VarintLength(uint64_t v) { +13943: int len = 1; +13943: while (v >= 128) { +13943: v >>= 7; +13943: len++; +13943: } +13943: return len; +13943: } +13943: +13943: inline bool GetFixed64(Slice* input, uint64_t* value) { +13943: if (input->size() < sizeof(uint64_t)) { +13943: return false; +13943: } +13943: *value = DecodeFixed64(input->data()); +13943: input->remove_prefix(sizeof(uint64_t)); +13943: return true; +13943: } +13943: +13943: inline bool GetFixed32(Slice* input, uint32_t* value) { +13943: if (input->size() < sizeof(uint32_t)) { +13943: return false; +13943: } +13943: *value = DecodeFixed32(input->data()); +13943: input->remove_prefix(sizeof(uint32_t)); +13943: return true; +13943: } +13943: +13943: inline bool GetFixed16(Slice* input, uint16_t* value) { +13943: if (input->size() < sizeof(uint16_t)) { +13943: return false; +13943: } +13943: *value = DecodeFixed16(input->data()); +13943: input->remove_prefix(sizeof(uint16_t)); +13943: return true; +13943: } +13943: +13943: inline bool GetVarint32(Slice* input, uint32_t* value) { +13943: const char* p = input->data(); +13943: const char* limit = p + input->size(); +13943: const char* q = GetVarint32Ptr(p, limit, value); +13943: if (q == nullptr) { +13943: return false; +13943: } else { +13943: *input = Slice(q, static_cast(limit - q)); +13943: return true; +13943: } +13943: } +13943: +13943: inline bool GetVarint64(Slice* input, uint64_t* value) { +13943: const char* p = input->data(); +13943: const char* limit = p + input->size(); +13943: const char* q = GetVarint64Ptr(p, limit, value); +13943: if (q == nullptr) { +13943: return false; +13943: } else { +13943: *input = Slice(q, static_cast(limit - q)); +13943: return true; +13943: } +13943: } +13943: +13943: inline bool GetVarsignedint64(Slice* input, int64_t* value) { +13943: const char* p = input->data(); +13943: const char* limit = p + input->size(); +13943: const char* q = GetVarsignedint64Ptr(p, limit, value); +13943: if (q == nullptr) { +13943: return false; +13943: } else { +13943: *input = Slice(q, static_cast(limit - q)); +13943: return true; +13943: } +13943: } +13943: +13943: inline bool GetLengthPrefixedSlice(Slice* input, Slice* result) { +13943: uint32_t len = 0; +13943: if (GetVarint32(input, &len) && input->size() >= len) { +13943: *result = Slice(input->data(), len); +13943: input->remove_prefix(len); +13943: return true; +13943: } else { +13943: return false; +13943: } +13943: } +13943: +13943: inline Slice GetLengthPrefixedSlice(const char* data) { +13943: uint32_t len = 0; +13943: +13943: +13943: auto p = GetVarint32Ptr(data, data + 5 , &len); +13943: return Slice(p, len); +13943: } +13943: +13943: inline Slice GetSliceUntil(Slice* slice, char delimiter) { +13943: uint32_t len = 0; +13943: for (len = 0; len < slice->size() && slice->data()[len] != delimiter; ++len) { +13943: +13943: } +13943: +13943: Slice ret(slice->data(), len); +13943: slice->remove_prefix(len + ((len < slice->size()) ? 1 : 0)); +13943: return ret; +13943: } +13943: +13943: template +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline void +13943: PutUnaligned(T* memory, const T& value) { +13943: +13943: +13943: +13943: +13943: *memory = value; +13943: +13943: } +13943: +13943: template +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline void +13943: GetUnaligned(const T* memory, T* value) { +13943: +13943: +13943: +13943: +13943: *value = *memory; +13943: +13943: } +13943: +13943: } +13943: # 24 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h" +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_level_imp.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_level.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: enum PerfLevel : unsigned char { +13943: kUninitialized = 0, +13943: kDisable = 1, +13943: kEnableCount = 2, +13943: kEnableWait = 3, +13943: +13943: +13943: kEnableTimeExceptForMutex = 4, +13943: +13943: +13943: +13943: kEnableTimeAndCPUTimeExceptForMutex = 5, +13943: kEnableTime = 6, +13943: kOutOfBounds = 7 +13943: }; +13943: +13943: +13943: void SetPerfLevel(PerfLevel level); +13943: +13943: +13943: PerfLevel GetPerfLevel(); +13943: +13943: } +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_level_imp.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: extern thread_local PerfLevel perf_level; +13943: +13943: } +13943: # 8 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/map" 1 3 +13943: # 58 "/usr/include/c++/14/map" 3 +13943: +13943: # 59 "/usr/include/c++/14/map" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_tree.h" 1 3 +13943: # 61 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: +13943: # 62 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: # 75 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: +13943: # 75 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 95 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: enum _Rb_tree_color { _S_red = false, _S_black = true }; +13943: +13943: struct _Rb_tree_node_base +13943: { +13943: typedef _Rb_tree_node_base* _Base_ptr; +13943: typedef const _Rb_tree_node_base* _Const_Base_ptr; +13943: +13943: _Rb_tree_color _M_color; +13943: _Base_ptr _M_parent; +13943: _Base_ptr _M_left; +13943: _Base_ptr _M_right; +13943: +13943: static _Base_ptr +13943: _S_minimum(_Base_ptr __x) noexcept +13943: { +13943: while (__x->_M_left != 0) __x = __x->_M_left; +13943: return __x; +13943: } +13943: +13943: static _Const_Base_ptr +13943: _S_minimum(_Const_Base_ptr __x) noexcept +13943: { +13943: while (__x->_M_left != 0) __x = __x->_M_left; +13943: return __x; +13943: } +13943: +13943: static _Base_ptr +13943: _S_maximum(_Base_ptr __x) noexcept +13943: { +13943: while (__x->_M_right != 0) __x = __x->_M_right; +13943: return __x; +13943: } +13943: +13943: static _Const_Base_ptr +13943: _S_maximum(_Const_Base_ptr __x) noexcept +13943: { +13943: while (__x->_M_right != 0) __x = __x->_M_right; +13943: return __x; +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Rb_tree_key_compare +13943: { +13943: _Key_compare _M_key_compare; +13943: +13943: _Rb_tree_key_compare() +13943: noexcept(is_nothrow_default_constructible<_Key_compare>::value) +13943: +13943: : _M_key_compare() +13943: { } +13943: +13943: _Rb_tree_key_compare(const _Key_compare& __comp) +13943: : _M_key_compare(__comp) +13943: { } +13943: +13943: +13943: +13943: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default; +13943: +13943: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x) +13943: noexcept(is_nothrow_copy_constructible<_Key_compare>::value) +13943: : _M_key_compare(__x._M_key_compare) +13943: { } +13943: +13943: }; +13943: +13943: +13943: struct _Rb_tree_header +13943: { +13943: _Rb_tree_node_base _M_header; +13943: size_t _M_node_count; +13943: +13943: _Rb_tree_header() noexcept +13943: { +13943: _M_header._M_color = _S_red; +13943: _M_reset(); +13943: } +13943: +13943: +13943: _Rb_tree_header(_Rb_tree_header&& __x) noexcept +13943: { +13943: if (__x._M_header._M_parent != nullptr) +13943: _M_move_data(__x); +13943: else +13943: { +13943: _M_header._M_color = _S_red; +13943: _M_reset(); +13943: } +13943: } +13943: +13943: +13943: void +13943: _M_move_data(_Rb_tree_header& __from) +13943: { +13943: _M_header._M_color = __from._M_header._M_color; +13943: _M_header._M_parent = __from._M_header._M_parent; +13943: _M_header._M_left = __from._M_header._M_left; +13943: _M_header._M_right = __from._M_header._M_right; +13943: _M_header._M_parent->_M_parent = &_M_header; +13943: _M_node_count = __from._M_node_count; +13943: +13943: __from._M_reset(); +13943: } +13943: +13943: void +13943: _M_reset() +13943: { +13943: _M_header._M_parent = 0; +13943: _M_header._M_left = &_M_header; +13943: _M_header._M_right = &_M_header; +13943: _M_node_count = 0; +13943: } +13943: }; +13943: +13943: template +13943: struct _Rb_tree_node : public _Rb_tree_node_base +13943: { +13943: typedef _Rb_tree_node<_Val>* _Link_type; +13943: # 227 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: __gnu_cxx::__aligned_membuf<_Val> _M_storage; +13943: +13943: _Val* +13943: _M_valptr() +13943: { return _M_storage._M_ptr(); } +13943: +13943: const _Val* +13943: _M_valptr() const +13943: { return _M_storage._M_ptr(); } +13943: +13943: }; +13943: +13943: __attribute__ ((__pure__)) _Rb_tree_node_base* +13943: _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); +13943: +13943: __attribute__ ((__pure__)) const _Rb_tree_node_base* +13943: _Rb_tree_increment(const _Rb_tree_node_base* __x) throw (); +13943: +13943: __attribute__ ((__pure__)) _Rb_tree_node_base* +13943: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); +13943: +13943: __attribute__ ((__pure__)) const _Rb_tree_node_base* +13943: _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw (); +13943: +13943: template +13943: struct _Rb_tree_iterator +13943: { +13943: typedef _Tp value_type; +13943: typedef _Tp& reference; +13943: typedef _Tp* pointer; +13943: +13943: typedef bidirectional_iterator_tag iterator_category; +13943: typedef ptrdiff_t difference_type; +13943: +13943: typedef _Rb_tree_iterator<_Tp> _Self; +13943: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; +13943: typedef _Rb_tree_node<_Tp>* _Link_type; +13943: +13943: _Rb_tree_iterator() noexcept +13943: : _M_node() { } +13943: +13943: explicit +13943: _Rb_tree_iterator(_Base_ptr __x) noexcept +13943: : _M_node(__x) { } +13943: +13943: reference +13943: operator*() const noexcept +13943: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } +13943: +13943: pointer +13943: operator->() const noexcept +13943: { return static_cast<_Link_type> (_M_node)->_M_valptr(); } +13943: +13943: _Self& +13943: operator++() noexcept +13943: { +13943: _M_node = _Rb_tree_increment(_M_node); +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator++(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _Rb_tree_increment(_M_node); +13943: return __tmp; +13943: } +13943: +13943: _Self& +13943: operator--() noexcept +13943: { +13943: _M_node = _Rb_tree_decrement(_M_node); +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator--(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _Rb_tree_decrement(_M_node); +13943: return __tmp; +13943: } +13943: +13943: friend bool +13943: operator==(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node == __y._M_node; } +13943: +13943: +13943: friend bool +13943: operator!=(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node != __y._M_node; } +13943: +13943: +13943: _Base_ptr _M_node; +13943: }; +13943: +13943: template +13943: struct _Rb_tree_const_iterator +13943: { +13943: typedef _Tp value_type; +13943: typedef const _Tp& reference; +13943: typedef const _Tp* pointer; +13943: +13943: typedef _Rb_tree_iterator<_Tp> iterator; +13943: +13943: typedef bidirectional_iterator_tag iterator_category; +13943: typedef ptrdiff_t difference_type; +13943: +13943: typedef _Rb_tree_const_iterator<_Tp> _Self; +13943: typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; +13943: typedef const _Rb_tree_node<_Tp>* _Link_type; +13943: +13943: _Rb_tree_const_iterator() noexcept +13943: : _M_node() { } +13943: +13943: explicit +13943: _Rb_tree_const_iterator(_Base_ptr __x) noexcept +13943: : _M_node(__x) { } +13943: +13943: _Rb_tree_const_iterator(const iterator& __it) noexcept +13943: : _M_node(__it._M_node) { } +13943: +13943: iterator +13943: _M_const_cast() const noexcept +13943: { return iterator(const_cast(_M_node)); } +13943: +13943: reference +13943: operator*() const noexcept +13943: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } +13943: +13943: pointer +13943: operator->() const noexcept +13943: { return static_cast<_Link_type>(_M_node)->_M_valptr(); } +13943: +13943: _Self& +13943: operator++() noexcept +13943: { +13943: _M_node = _Rb_tree_increment(_M_node); +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator++(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _Rb_tree_increment(_M_node); +13943: return __tmp; +13943: } +13943: +13943: _Self& +13943: operator--() noexcept +13943: { +13943: _M_node = _Rb_tree_decrement(_M_node); +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator--(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _Rb_tree_decrement(_M_node); +13943: return __tmp; +13943: } +13943: +13943: friend bool +13943: operator==(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node == __y._M_node; } +13943: +13943: +13943: friend bool +13943: operator!=(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node != __y._M_node; } +13943: +13943: +13943: _Base_ptr _M_node; +13943: }; +13943: +13943: __attribute__((__nonnull__)) +13943: void +13943: _Rb_tree_insert_and_rebalance(const bool __insert_left, +13943: _Rb_tree_node_base* __x, +13943: _Rb_tree_node_base* __p, +13943: _Rb_tree_node_base& __header) throw (); +13943: +13943: __attribute__((__nonnull__,__returns_nonnull__)) +13943: _Rb_tree_node_base* +13943: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, +13943: _Rb_tree_node_base& __header) throw (); +13943: +13943: +13943: template +13943: struct _Rb_tree_merge_helper { }; +13943: +13943: +13943: template > +13943: class _Rb_tree +13943: { +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_Rb_tree_node<_Val> >::other _Node_allocator; +13943: +13943: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; +13943: +13943: protected: +13943: typedef _Rb_tree_node_base* _Base_ptr; +13943: typedef const _Rb_tree_node_base* _Const_Base_ptr; +13943: typedef _Rb_tree_node<_Val>* _Link_type; +13943: typedef const _Rb_tree_node<_Val>* _Const_Link_type; +13943: +13943: private: +13943: +13943: +13943: struct _Reuse_or_alloc_node +13943: { +13943: _Reuse_or_alloc_node(_Rb_tree& __t) +13943: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) +13943: { +13943: if (_M_root) +13943: { +13943: _M_root->_M_parent = 0; +13943: +13943: if (_M_nodes->_M_left) +13943: _M_nodes = _M_nodes->_M_left; +13943: } +13943: else +13943: _M_nodes = 0; +13943: } +13943: +13943: +13943: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; +13943: +13943: +13943: ~_Reuse_or_alloc_node() +13943: { _M_t._M_erase(static_cast<_Link_type>(_M_root)); } +13943: +13943: template +13943: _Link_type +13943: operator()(_Arg&& __arg) +13943: { +13943: _Link_type __node = static_cast<_Link_type>(_M_extract()); +13943: if (__node) +13943: { +13943: _M_t._M_destroy_node(__node); +13943: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); +13943: return __node; +13943: } +13943: +13943: return _M_t._M_create_node(std::forward<_Arg>(__arg)); +13943: } +13943: +13943: private: +13943: _Base_ptr +13943: _M_extract() +13943: { +13943: if (!_M_nodes) +13943: return _M_nodes; +13943: +13943: _Base_ptr __node = _M_nodes; +13943: _M_nodes = _M_nodes->_M_parent; +13943: if (_M_nodes) +13943: { +13943: if (_M_nodes->_M_right == __node) +13943: { +13943: _M_nodes->_M_right = 0; +13943: +13943: if (_M_nodes->_M_left) +13943: { +13943: _M_nodes = _M_nodes->_M_left; +13943: +13943: while (_M_nodes->_M_right) +13943: _M_nodes = _M_nodes->_M_right; +13943: +13943: if (_M_nodes->_M_left) +13943: _M_nodes = _M_nodes->_M_left; +13943: } +13943: } +13943: else +13943: _M_nodes->_M_left = 0; +13943: } +13943: else +13943: _M_root = 0; +13943: +13943: return __node; +13943: } +13943: +13943: _Base_ptr _M_root; +13943: _Base_ptr _M_nodes; +13943: _Rb_tree& _M_t; +13943: }; +13943: +13943: +13943: +13943: struct _Alloc_node +13943: { +13943: _Alloc_node(_Rb_tree& __t) +13943: : _M_t(__t) { } +13943: +13943: template +13943: _Link_type +13943: operator()(_Arg&& __arg) const +13943: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } +13943: +13943: private: +13943: _Rb_tree& _M_t; +13943: }; +13943: +13943: public: +13943: typedef _Key key_type; +13943: typedef _Val value_type; +13943: typedef value_type* pointer; +13943: typedef const value_type* const_pointer; +13943: typedef value_type& reference; +13943: typedef const value_type& const_reference; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef _Alloc allocator_type; +13943: +13943: _Node_allocator& +13943: _M_get_Node_allocator() noexcept +13943: { return this->_M_impl; } +13943: +13943: const _Node_allocator& +13943: _M_get_Node_allocator() const noexcept +13943: { return this->_M_impl; } +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_get_Node_allocator()); } +13943: +13943: protected: +13943: _Link_type +13943: _M_get_node() +13943: { return _Alloc_traits::allocate(_M_get_Node_allocator(), 1); } +13943: +13943: void +13943: _M_put_node(_Link_type __p) noexcept +13943: { _Alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); } +13943: # 586 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: template +13943: void +13943: _M_construct_node(_Link_type __node, _Args&&... __args) +13943: { +13943: try +13943: { +13943: ::new(__node) _Rb_tree_node<_Val>; +13943: _Alloc_traits::construct(_M_get_Node_allocator(), +13943: __node->_M_valptr(), +13943: std::forward<_Args>(__args)...); +13943: } +13943: catch(...) +13943: { +13943: __node->~_Rb_tree_node<_Val>(); +13943: _M_put_node(__node); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: _Link_type +13943: _M_create_node(_Args&&... __args) +13943: { +13943: _Link_type __tmp = _M_get_node(); +13943: _M_construct_node(__tmp, std::forward<_Args>(__args)...); +13943: return __tmp; +13943: } +13943: +13943: +13943: void +13943: _M_destroy_node(_Link_type __p) noexcept +13943: { +13943: +13943: +13943: +13943: _Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); +13943: __p->~_Rb_tree_node<_Val>(); +13943: +13943: } +13943: +13943: void +13943: _M_drop_node(_Link_type __p) noexcept +13943: { +13943: _M_destroy_node(__p); +13943: _M_put_node(__p); +13943: } +13943: +13943: template +13943: _Link_type +13943: _M_clone_node(_Link_type __x, _NodeGen& __node_gen) +13943: { +13943: +13943: using _Vp = __conditional_t<_MoveValue, +13943: value_type&&, +13943: const value_type&>; +13943: +13943: _Link_type __tmp +13943: = __node_gen(std::forward<_Vp>(*__x->_M_valptr())); +13943: __tmp->_M_color = __x->_M_color; +13943: __tmp->_M_left = 0; +13943: __tmp->_M_right = 0; +13943: return __tmp; +13943: } +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: template +13943: +13943: struct _Rb_tree_impl +13943: : public _Node_allocator +13943: , public _Rb_tree_key_compare<_Key_compare> +13943: , public _Rb_tree_header +13943: { +13943: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; +13943: +13943: _Rb_tree_impl() +13943: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value) +13943: +13943: +13943: : _Node_allocator() +13943: { } +13943: +13943: _Rb_tree_impl(const _Rb_tree_impl& __x) +13943: : _Node_allocator(_Alloc_traits::_S_select_on_copy(__x)) +13943: , _Base_key_compare(__x._M_key_compare) +13943: , _Rb_tree_header() +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: _Rb_tree_impl(_Rb_tree_impl&&) +13943: noexcept( is_nothrow_move_constructible<_Base_key_compare>::value ) +13943: = default; +13943: +13943: explicit +13943: _Rb_tree_impl(_Node_allocator&& __a) +13943: : _Node_allocator(std::move(__a)) +13943: { } +13943: +13943: _Rb_tree_impl(_Rb_tree_impl&& __x, _Node_allocator&& __a) +13943: : _Node_allocator(std::move(__a)), +13943: _Base_key_compare(std::move(__x)), +13943: _Rb_tree_header(std::move(__x)) +13943: { } +13943: +13943: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) +13943: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) +13943: { } +13943: +13943: }; +13943: +13943: _Rb_tree_impl<_Compare> _M_impl; +13943: +13943: protected: +13943: _Base_ptr& +13943: _M_root() noexcept +13943: { return this->_M_impl._M_header._M_parent; } +13943: +13943: _Const_Base_ptr +13943: _M_root() const noexcept +13943: { return this->_M_impl._M_header._M_parent; } +13943: +13943: _Base_ptr& +13943: _M_leftmost() noexcept +13943: { return this->_M_impl._M_header._M_left; } +13943: +13943: _Const_Base_ptr +13943: _M_leftmost() const noexcept +13943: { return this->_M_impl._M_header._M_left; } +13943: +13943: _Base_ptr& +13943: _M_rightmost() noexcept +13943: { return this->_M_impl._M_header._M_right; } +13943: +13943: _Const_Base_ptr +13943: _M_rightmost() const noexcept +13943: { return this->_M_impl._M_header._M_right; } +13943: +13943: _Link_type +13943: _M_mbegin() const noexcept +13943: { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); } +13943: +13943: _Link_type +13943: _M_begin() noexcept +13943: { return _M_mbegin(); } +13943: +13943: _Const_Link_type +13943: _M_begin() const noexcept +13943: { +13943: return static_cast<_Const_Link_type> +13943: (this->_M_impl._M_header._M_parent); +13943: } +13943: +13943: _Base_ptr +13943: _M_end() noexcept +13943: { return &this->_M_impl._M_header; } +13943: +13943: _Const_Base_ptr +13943: _M_end() const noexcept +13943: { return &this->_M_impl._M_header; } +13943: +13943: static const _Key& +13943: _S_key(_Const_Link_type __x) +13943: { +13943: +13943: +13943: +13943: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, +13943: "comparison object must be invocable " +13943: "with two arguments of key type"); +13943: +13943: +13943: +13943: if constexpr (__is_invocable<_Compare&, const _Key&, const _Key&>{}) +13943: static_assert( +13943: is_invocable_v, +13943: "comparison object must be invocable as const"); +13943: +13943: +13943: +13943: return _KeyOfValue()(*__x->_M_valptr()); +13943: } +13943: +13943: static _Link_type +13943: _S_left(_Base_ptr __x) noexcept +13943: { return static_cast<_Link_type>(__x->_M_left); } +13943: +13943: static _Const_Link_type +13943: _S_left(_Const_Base_ptr __x) noexcept +13943: { return static_cast<_Const_Link_type>(__x->_M_left); } +13943: +13943: static _Link_type +13943: _S_right(_Base_ptr __x) noexcept +13943: { return static_cast<_Link_type>(__x->_M_right); } +13943: +13943: static _Const_Link_type +13943: _S_right(_Const_Base_ptr __x) noexcept +13943: { return static_cast<_Const_Link_type>(__x->_M_right); } +13943: +13943: static const _Key& +13943: _S_key(_Const_Base_ptr __x) +13943: { return _S_key(static_cast<_Const_Link_type>(__x)); } +13943: +13943: static _Base_ptr +13943: _S_minimum(_Base_ptr __x) noexcept +13943: { return _Rb_tree_node_base::_S_minimum(__x); } +13943: +13943: static _Const_Base_ptr +13943: _S_minimum(_Const_Base_ptr __x) noexcept +13943: { return _Rb_tree_node_base::_S_minimum(__x); } +13943: +13943: static _Base_ptr +13943: _S_maximum(_Base_ptr __x) noexcept +13943: { return _Rb_tree_node_base::_S_maximum(__x); } +13943: +13943: static _Const_Base_ptr +13943: _S_maximum(_Const_Base_ptr __x) noexcept +13943: { return _Rb_tree_node_base::_S_maximum(__x); } +13943: +13943: public: +13943: typedef _Rb_tree_iterator iterator; +13943: typedef _Rb_tree_const_iterator const_iterator; +13943: +13943: typedef std::reverse_iterator reverse_iterator; +13943: typedef std::reverse_iterator const_reverse_iterator; +13943: +13943: +13943: using node_type = _Node_handle<_Key, _Val, _Node_allocator>; +13943: using insert_return_type = _Node_insert_return< +13943: __conditional_t, const_iterator, iterator>, +13943: node_type>; +13943: +13943: +13943: pair<_Base_ptr, _Base_ptr> +13943: _M_get_insert_unique_pos(const key_type& __k); +13943: +13943: pair<_Base_ptr, _Base_ptr> +13943: _M_get_insert_equal_pos(const key_type& __k); +13943: +13943: pair<_Base_ptr, _Base_ptr> +13943: _M_get_insert_hint_unique_pos(const_iterator __pos, +13943: const key_type& __k); +13943: +13943: pair<_Base_ptr, _Base_ptr> +13943: _M_get_insert_hint_equal_pos(const_iterator __pos, +13943: const key_type& __k); +13943: +13943: private: +13943: +13943: template +13943: iterator +13943: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); +13943: +13943: iterator +13943: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z); +13943: +13943: template +13943: iterator +13943: _M_insert_lower(_Base_ptr __y, _Arg&& __v); +13943: +13943: template +13943: iterator +13943: _M_insert_equal_lower(_Arg&& __x); +13943: +13943: iterator +13943: _M_insert_lower_node(_Base_ptr __p, _Link_type __z); +13943: +13943: iterator +13943: _M_insert_equal_lower_node(_Link_type __z); +13943: # 877 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: enum { __as_lvalue, __as_rvalue }; +13943: +13943: template +13943: _Link_type +13943: _M_copy(_Link_type, _Base_ptr, _NodeGen&); +13943: +13943: template +13943: _Link_type +13943: _M_copy(const _Rb_tree& __x, _NodeGen& __gen) +13943: { +13943: _Link_type __root = +13943: _M_copy<_MoveValues>(__x._M_mbegin(), _M_end(), __gen); +13943: _M_leftmost() = _S_minimum(__root); +13943: _M_rightmost() = _S_maximum(__root); +13943: _M_impl._M_node_count = __x._M_impl._M_node_count; +13943: return __root; +13943: } +13943: +13943: _Link_type +13943: _M_copy(const _Rb_tree& __x) +13943: { +13943: _Alloc_node __an(*this); +13943: return _M_copy<__as_lvalue>(__x, __an); +13943: } +13943: +13943: void +13943: _M_erase(_Link_type __x); +13943: +13943: iterator +13943: _M_lower_bound(_Link_type __x, _Base_ptr __y, +13943: const _Key& __k); +13943: +13943: const_iterator +13943: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, +13943: const _Key& __k) const; +13943: +13943: iterator +13943: _M_upper_bound(_Link_type __x, _Base_ptr __y, +13943: const _Key& __k); +13943: +13943: const_iterator +13943: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, +13943: const _Key& __k) const; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: _Rb_tree() = default; +13943: +13943: +13943: _Rb_tree(const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_impl(__comp, _Node_allocator(__a)) { } +13943: +13943: _Rb_tree(const _Rb_tree& __x) +13943: : _M_impl(__x._M_impl) +13943: { +13943: if (__x._M_root() != 0) +13943: _M_root() = _M_copy(__x); +13943: } +13943: +13943: +13943: _Rb_tree(const allocator_type& __a) +13943: : _M_impl(_Node_allocator(__a)) +13943: { } +13943: +13943: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) +13943: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) +13943: { +13943: if (__x._M_root() != nullptr) +13943: _M_root() = _M_copy(__x); +13943: } +13943: +13943: _Rb_tree(_Rb_tree&&) = default; +13943: +13943: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) +13943: : _Rb_tree(std::move(__x), _Node_allocator(__a)) +13943: { } +13943: +13943: private: +13943: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, true_type) +13943: noexcept(is_nothrow_default_constructible<_Compare>::value) +13943: : _M_impl(std::move(__x._M_impl), std::move(__a)) +13943: { } +13943: +13943: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, false_type) +13943: : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) +13943: { +13943: if (__x._M_root() != nullptr) +13943: _M_move_data(__x, false_type{}); +13943: } +13943: +13943: public: +13943: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) +13943: noexcept( noexcept( +13943: _Rb_tree(std::declval<_Rb_tree&&>(), std::declval<_Node_allocator&&>(), +13943: std::declval())) ) +13943: : _Rb_tree(std::move(__x), std::move(__a), +13943: typename _Alloc_traits::is_always_equal{}) +13943: { } +13943: +13943: +13943: ~_Rb_tree() noexcept +13943: { _M_erase(_M_begin()); } +13943: +13943: _Rb_tree& +13943: operator=(const _Rb_tree& __x); +13943: +13943: +13943: _Compare +13943: key_comp() const +13943: { return _M_impl._M_key_compare; } +13943: +13943: iterator +13943: begin() noexcept +13943: { return iterator(this->_M_impl._M_header._M_left); } +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return const_iterator(this->_M_impl._M_header._M_left); } +13943: +13943: iterator +13943: end() noexcept +13943: { return iterator(&this->_M_impl._M_header); } +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return const_iterator(&this->_M_impl._M_header); } +13943: +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return reverse_iterator(end()); } +13943: +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: reverse_iterator +13943: rend() noexcept +13943: { return reverse_iterator(begin()); } +13943: +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_impl._M_node_count == 0; } +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_impl._M_node_count; } +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _Alloc_traits::max_size(_M_get_Node_allocator()); } +13943: +13943: void +13943: swap(_Rb_tree& __t) +13943: noexcept(__is_nothrow_swappable<_Compare>::value); +13943: +13943: +13943: +13943: template +13943: pair +13943: _M_insert_unique(_Arg&& __x); +13943: +13943: template +13943: iterator +13943: _M_insert_equal(_Arg&& __x); +13943: +13943: template +13943: iterator +13943: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); +13943: +13943: template +13943: iterator +13943: _M_insert_unique_(const_iterator __pos, _Arg&& __x) +13943: { +13943: _Alloc_node __an(*this); +13943: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); +13943: } +13943: +13943: template +13943: iterator +13943: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); +13943: +13943: template +13943: iterator +13943: _M_insert_equal_(const_iterator __pos, _Arg&& __x) +13943: { +13943: _Alloc_node __an(*this); +13943: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); +13943: } +13943: +13943: template +13943: pair +13943: _M_emplace_unique(_Args&&... __args); +13943: +13943: template +13943: iterator +13943: _M_emplace_equal(_Args&&... __args); +13943: +13943: template +13943: iterator +13943: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); +13943: +13943: template +13943: iterator +13943: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); +13943: +13943: template +13943: using __same_value_type +13943: = is_same::value_type>; +13943: +13943: template +13943: __enable_if_t<__same_value_type<_InputIterator>::value> +13943: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) +13943: { +13943: _Alloc_node __an(*this); +13943: for (; __first != __last; ++__first) +13943: _M_insert_unique_(end(), *__first, __an); +13943: } +13943: +13943: template +13943: __enable_if_t::value> +13943: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) +13943: { +13943: for (; __first != __last; ++__first) +13943: _M_emplace_unique(*__first); +13943: } +13943: +13943: template +13943: __enable_if_t<__same_value_type<_InputIterator>::value> +13943: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) +13943: { +13943: _Alloc_node __an(*this); +13943: for (; __first != __last; ++__first) +13943: _M_insert_equal_(end(), *__first, __an); +13943: } +13943: +13943: template +13943: __enable_if_t::value> +13943: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) +13943: { +13943: for (; __first != __last; ++__first) +13943: _M_emplace_equal(*__first); +13943: } +13943: # 1176 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: private: +13943: void +13943: _M_erase_aux(const_iterator __position); +13943: +13943: void +13943: _M_erase_aux(const_iterator __first, const_iterator __last); +13943: +13943: public: +13943: +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(const_iterator __position) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); +13943: const_iterator __result = __position; +13943: ++__result; +13943: _M_erase_aux(__position); +13943: return __result._M_const_cast(); +13943: } +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(iterator __position) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); +13943: iterator __result = __position; +13943: ++__result; +13943: _M_erase_aux(__position); +13943: return __result; +13943: } +13943: # 1225 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: size_type +13943: erase(const key_type& __x); +13943: +13943: +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { +13943: _M_erase_aux(__first, __last); +13943: return __last._M_const_cast(); +13943: } +13943: # 1248 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: void +13943: clear() noexcept +13943: { +13943: _M_erase(_M_begin()); +13943: _M_impl._M_reset(); +13943: } +13943: +13943: +13943: iterator +13943: find(const key_type& __k); +13943: +13943: const_iterator +13943: find(const key_type& __k) const; +13943: +13943: size_type +13943: count(const key_type& __k) const; +13943: +13943: iterator +13943: lower_bound(const key_type& __k) +13943: { return _M_lower_bound(_M_begin(), _M_end(), __k); } +13943: +13943: const_iterator +13943: lower_bound(const key_type& __k) const +13943: { return _M_lower_bound(_M_begin(), _M_end(), __k); } +13943: +13943: iterator +13943: upper_bound(const key_type& __k) +13943: { return _M_upper_bound(_M_begin(), _M_end(), __k); } +13943: +13943: const_iterator +13943: upper_bound(const key_type& __k) const +13943: { return _M_upper_bound(_M_begin(), _M_end(), __k); } +13943: +13943: pair +13943: equal_range(const key_type& __k); +13943: +13943: pair +13943: equal_range(const key_type& __k) const; +13943: +13943: +13943: template> +13943: iterator +13943: _M_find_tr(const _Kt& __k) +13943: { +13943: const _Rb_tree* __const_this = this; +13943: return __const_this->_M_find_tr(__k)._M_const_cast(); +13943: } +13943: +13943: template> +13943: const_iterator +13943: _M_find_tr(const _Kt& __k) const +13943: { +13943: auto __j = _M_lower_bound_tr(__k); +13943: if (__j != end() && _M_impl._M_key_compare(__k, _S_key(__j._M_node))) +13943: __j = end(); +13943: return __j; +13943: } +13943: +13943: template> +13943: size_type +13943: _M_count_tr(const _Kt& __k) const +13943: { +13943: auto __p = _M_equal_range_tr(__k); +13943: return std::distance(__p.first, __p.second); +13943: } +13943: +13943: template> +13943: iterator +13943: _M_lower_bound_tr(const _Kt& __k) +13943: { +13943: const _Rb_tree* __const_this = this; +13943: return __const_this->_M_lower_bound_tr(__k)._M_const_cast(); +13943: } +13943: +13943: template> +13943: const_iterator +13943: _M_lower_bound_tr(const _Kt& __k) const +13943: { +13943: auto __x = _M_begin(); +13943: auto __y = _M_end(); +13943: while (__x != 0) +13943: if (!_M_impl._M_key_compare(_S_key(__x), __k)) +13943: { +13943: __y = __x; +13943: __x = _S_left(__x); +13943: } +13943: else +13943: __x = _S_right(__x); +13943: return const_iterator(__y); +13943: } +13943: +13943: template> +13943: iterator +13943: _M_upper_bound_tr(const _Kt& __k) +13943: { +13943: const _Rb_tree* __const_this = this; +13943: return __const_this->_M_upper_bound_tr(__k)._M_const_cast(); +13943: } +13943: +13943: template> +13943: const_iterator +13943: _M_upper_bound_tr(const _Kt& __k) const +13943: { +13943: auto __x = _M_begin(); +13943: auto __y = _M_end(); +13943: while (__x != 0) +13943: if (_M_impl._M_key_compare(__k, _S_key(__x))) +13943: { +13943: __y = __x; +13943: __x = _S_left(__x); +13943: } +13943: else +13943: __x = _S_right(__x); +13943: return const_iterator(__y); +13943: } +13943: +13943: template> +13943: pair +13943: _M_equal_range_tr(const _Kt& __k) +13943: { +13943: const _Rb_tree* __const_this = this; +13943: auto __ret = __const_this->_M_equal_range_tr(__k); +13943: return { __ret.first._M_const_cast(), __ret.second._M_const_cast() }; +13943: } +13943: +13943: template> +13943: pair +13943: _M_equal_range_tr(const _Kt& __k) const +13943: { +13943: auto __low = _M_lower_bound_tr(__k); +13943: auto __high = __low; +13943: auto& __cmp = _M_impl._M_key_compare; +13943: while (__high != end() && !__cmp(__k, _S_key(__high._M_node))) +13943: ++__high; +13943: return { __low, __high }; +13943: } +13943: +13943: +13943: +13943: bool +13943: __rb_verify() const; +13943: +13943: +13943: _Rb_tree& +13943: operator=(_Rb_tree&&) +13943: noexcept(_Alloc_traits::_S_nothrow_move() +13943: && is_nothrow_move_assignable<_Compare>::value); +13943: +13943: template +13943: void +13943: _M_assign_unique(_Iterator, _Iterator); +13943: +13943: template +13943: void +13943: _M_assign_equal(_Iterator, _Iterator); +13943: +13943: private: +13943: +13943: void +13943: _M_move_data(_Rb_tree& __x, true_type) +13943: { _M_impl._M_move_data(__x._M_impl); } +13943: +13943: +13943: +13943: void +13943: _M_move_data(_Rb_tree&, false_type); +13943: +13943: +13943: void +13943: _M_move_assign(_Rb_tree&, true_type); +13943: +13943: +13943: +13943: void +13943: _M_move_assign(_Rb_tree&, false_type); +13943: +13943: +13943: +13943: public: +13943: +13943: insert_return_type +13943: _M_reinsert_node_unique(node_type&& __nh) +13943: { +13943: insert_return_type __ret; +13943: if (__nh.empty()) +13943: __ret.position = end(); +13943: else +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: auto __res = _M_get_insert_unique_pos(__nh._M_key()); +13943: if (__res.second) +13943: { +13943: __ret.position +13943: = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +13943: __nh.release(); +13943: __ret.inserted = true; +13943: } +13943: else +13943: { +13943: __ret.node = std::move(__nh); +13943: __ret.position = iterator(__res.first); +13943: __ret.inserted = false; +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: iterator +13943: _M_reinsert_node_equal(node_type&& __nh) +13943: { +13943: iterator __ret; +13943: if (__nh.empty()) +13943: __ret = end(); +13943: else +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +13943: auto __res = _M_get_insert_equal_pos(__nh._M_key()); +13943: if (__res.second) +13943: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +13943: else +13943: __ret = _M_insert_equal_lower_node(__nh._M_ptr); +13943: __nh.release(); +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: iterator +13943: _M_reinsert_node_hint_unique(const_iterator __hint, node_type&& __nh) +13943: { +13943: iterator __ret; +13943: if (__nh.empty()) +13943: __ret = end(); +13943: else +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +13943: auto __res = _M_get_insert_hint_unique_pos(__hint, __nh._M_key()); +13943: if (__res.second) +13943: { +13943: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +13943: __nh.release(); +13943: } +13943: else +13943: __ret = iterator(__res.first); +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: iterator +13943: _M_reinsert_node_hint_equal(const_iterator __hint, node_type&& __nh) +13943: { +13943: iterator __ret; +13943: if (__nh.empty()) +13943: __ret = end(); +13943: else +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +13943: auto __res = _M_get_insert_hint_equal_pos(__hint, __nh._M_key()); +13943: if (__res.second) +13943: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +13943: else +13943: __ret = _M_insert_equal_lower_node(__nh._M_ptr); +13943: __nh.release(); +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: auto __ptr = _Rb_tree_rebalance_for_erase( +13943: __pos._M_const_cast()._M_node, _M_impl._M_header); +13943: --_M_impl._M_node_count; +13943: return { static_cast<_Link_type>(__ptr), _M_get_Node_allocator() }; +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __k) +13943: { +13943: node_type __nh; +13943: auto __pos = find(__k); +13943: if (__pos != end()) +13943: __nh = extract(const_iterator(__pos)); +13943: return __nh; +13943: } +13943: +13943: template +13943: using _Compatible_tree +13943: = _Rb_tree<_Key, _Val, _KeyOfValue, _Compare2, _Alloc>; +13943: +13943: template +13943: friend struct _Rb_tree_merge_helper; +13943: +13943: +13943: template +13943: void +13943: _M_merge_unique(_Compatible_tree<_Compare2>& __src) noexcept +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>; +13943: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) +13943: { +13943: auto __pos = __i++; +13943: auto __res = _M_get_insert_unique_pos(_KeyOfValue()(*__pos)); +13943: if (__res.second) +13943: { +13943: auto& __src_impl = _Merge_helper::_S_get_impl(__src); +13943: auto __ptr = _Rb_tree_rebalance_for_erase( +13943: __pos._M_node, __src_impl._M_header); +13943: --__src_impl._M_node_count; +13943: _M_insert_node(__res.first, __res.second, +13943: static_cast<_Link_type>(__ptr)); +13943: } +13943: } +13943: } +13943: +13943: +13943: template +13943: void +13943: _M_merge_equal(_Compatible_tree<_Compare2>& __src) noexcept +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>; +13943: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) +13943: { +13943: auto __pos = __i++; +13943: auto __res = _M_get_insert_equal_pos(_KeyOfValue()(*__pos)); +13943: if (__res.second) +13943: { +13943: auto& __src_impl = _Merge_helper::_S_get_impl(__src); +13943: auto __ptr = _Rb_tree_rebalance_for_erase( +13943: __pos._M_node, __src_impl._M_header); +13943: --__src_impl._M_node_count; +13943: _M_insert_node(__res.first, __res.second, +13943: static_cast<_Link_type>(__ptr)); +13943: } +13943: } +13943: } +13943: +13943: +13943: friend bool +13943: operator==(const _Rb_tree& __x, const _Rb_tree& __y) +13943: { +13943: return __x.size() == __y.size() +13943: && std::equal(__x.begin(), __x.end(), __y.begin()); +13943: } +13943: # 1617 "/usr/include/c++/14/bits/stl_tree.h" 3 +13943: friend bool +13943: operator<(const _Rb_tree& __x, const _Rb_tree& __y) +13943: { +13943: return std::lexicographical_compare(__x.begin(), __x.end(), +13943: __y.begin(), __y.end()); +13943: } +13943: +13943: +13943: private: +13943: +13943: +13943: struct _Auto_node +13943: { +13943: template +13943: _Auto_node(_Rb_tree& __t, _Args&&... __args) +13943: : _M_t(__t), +13943: _M_node(__t._M_create_node(std::forward<_Args>(__args)...)) +13943: { } +13943: +13943: ~_Auto_node() +13943: { +13943: if (_M_node) +13943: _M_t._M_drop_node(_M_node); +13943: } +13943: +13943: _Auto_node(_Auto_node&& __n) +13943: : _M_t(__n._M_t), _M_node(__n._M_node) +13943: { __n._M_node = nullptr; } +13943: +13943: const _Key& +13943: _M_key() const +13943: { return _S_key(_M_node); } +13943: +13943: iterator +13943: _M_insert(pair<_Base_ptr, _Base_ptr> __p) +13943: { +13943: auto __it = _M_t._M_insert_node(__p.first, __p.second, _M_node); +13943: _M_node = nullptr; +13943: return __it; +13943: } +13943: +13943: iterator +13943: _M_insert_equal_lower() +13943: { +13943: auto __it = _M_t._M_insert_equal_lower_node(_M_node); +13943: _M_node = nullptr; +13943: return __it; +13943: } +13943: +13943: _Rb_tree& _M_t; +13943: _Link_type _M_node; +13943: }; +13943: +13943: }; +13943: +13943: template +13943: inline void +13943: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_move_data(_Rb_tree& __x, false_type) +13943: { +13943: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) +13943: _M_move_data(__x, true_type()); +13943: else +13943: { +13943: constexpr bool __move = !__move_if_noexcept_cond::value; +13943: _Alloc_node __an(*this); +13943: _M_root() = _M_copy<__move>(__x, __an); +13943: if constexpr (__move) +13943: __x.clear(); +13943: } +13943: } +13943: +13943: template +13943: inline void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_move_assign(_Rb_tree& __x, true_type) +13943: { +13943: clear(); +13943: if (__x._M_root() != nullptr) +13943: _M_move_data(__x, true_type()); +13943: std::__alloc_on_move(_M_get_Node_allocator(), +13943: __x._M_get_Node_allocator()); +13943: } +13943: +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_move_assign(_Rb_tree& __x, false_type) +13943: { +13943: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) +13943: return _M_move_assign(__x, true_type{}); +13943: +13943: +13943: +13943: _Reuse_or_alloc_node __roan(*this); +13943: _M_impl._M_reset(); +13943: if (__x._M_root() != nullptr) +13943: { +13943: _M_root() = _M_copy<__as_rvalue>(__x, __roan); +13943: __x.clear(); +13943: } +13943: } +13943: +13943: template +13943: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: operator=(_Rb_tree&& __x) +13943: noexcept(_Alloc_traits::_S_nothrow_move() +13943: && is_nothrow_move_assignable<_Compare>::value) +13943: { +13943: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare); +13943: _M_move_assign(__x, __bool_constant<_Alloc_traits::_S_nothrow_move()>()); +13943: return *this; +13943: } +13943: +13943: template +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_assign_unique(_Iterator __first, _Iterator __last) +13943: { +13943: _Reuse_or_alloc_node __roan(*this); +13943: _M_impl._M_reset(); +13943: for (; __first != __last; ++__first) +13943: _M_insert_unique_(end(), *__first, __roan); +13943: } +13943: +13943: template +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_assign_equal(_Iterator __first, _Iterator __last) +13943: { +13943: _Reuse_or_alloc_node __roan(*this); +13943: _M_impl._M_reset(); +13943: for (; __first != __last; ++__first) +13943: _M_insert_equal_(end(), *__first, __roan); +13943: } +13943: +13943: +13943: template +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: operator=(const _Rb_tree& __x) +13943: { +13943: if (this != std::__addressof(__x)) +13943: { +13943: +13943: +13943: if (_Alloc_traits::_S_propagate_on_copy_assign()) +13943: { +13943: auto& __this_alloc = this->_M_get_Node_allocator(); +13943: auto& __that_alloc = __x._M_get_Node_allocator(); +13943: if (!_Alloc_traits::_S_always_equal() +13943: && __this_alloc != __that_alloc) +13943: { +13943: +13943: +13943: clear(); +13943: std::__alloc_on_copy(__this_alloc, __that_alloc); +13943: } +13943: } +13943: +13943: +13943: _Reuse_or_alloc_node __roan(*this); +13943: _M_impl._M_reset(); +13943: _M_impl._M_key_compare = __x._M_impl._M_key_compare; +13943: if (__x._M_root() != 0) +13943: _M_root() = _M_copy<__as_lvalue>(__x, __roan); +13943: } +13943: +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: template +13943: +13943: +13943: +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_insert_(_Base_ptr __x, _Base_ptr __p, +13943: +13943: _Arg&& __v, +13943: +13943: +13943: +13943: _NodeGen& __node_gen) +13943: { +13943: bool __insert_left = (__x != 0 || __p == _M_end() +13943: || _M_impl._M_key_compare(_KeyOfValue()(__v), +13943: _S_key(__p))); +13943: +13943: _Link_type __z = __node_gen(std::forward<_Arg>(__v)); +13943: +13943: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +13943: this->_M_impl._M_header); +13943: ++_M_impl._M_node_count; +13943: return iterator(__z); +13943: } +13943: +13943: template +13943: +13943: template +13943: +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: +13943: _M_insert_lower(_Base_ptr __p, _Arg&& __v) +13943: +13943: +13943: +13943: { +13943: bool __insert_left = (__p == _M_end() +13943: || !_M_impl._M_key_compare(_S_key(__p), +13943: _KeyOfValue()(__v))); +13943: +13943: _Link_type __z = _M_create_node(std::forward<_Arg>(__v)); +13943: +13943: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +13943: this->_M_impl._M_header); +13943: ++_M_impl._M_node_count; +13943: return iterator(__z); +13943: } +13943: +13943: template +13943: +13943: template +13943: +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: +13943: _M_insert_equal_lower(_Arg&& __v) +13943: +13943: +13943: +13943: { +13943: _Link_type __x = _M_begin(); +13943: _Base_ptr __y = _M_end(); +13943: while (__x != 0) +13943: { +13943: __y = __x; +13943: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? +13943: _S_left(__x) : _S_right(__x); +13943: } +13943: return _M_insert_lower(__y, std::forward<_Arg>(__v)); +13943: } +13943: +13943: template +13943: template +13943: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type +13943: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: +13943: _M_copy(_Link_type __x, _Base_ptr __p, _NodeGen& __node_gen) +13943: { +13943: +13943: _Link_type __top = _M_clone_node<_MoveValues>(__x, __node_gen); +13943: __top->_M_parent = __p; +13943: +13943: try +13943: { +13943: if (__x->_M_right) +13943: __top->_M_right = +13943: _M_copy<_MoveValues>(_S_right(__x), __top, __node_gen); +13943: __p = __top; +13943: __x = _S_left(__x); +13943: +13943: while (__x != 0) +13943: { +13943: _Link_type __y = _M_clone_node<_MoveValues>(__x, __node_gen); +13943: __p->_M_left = __y; +13943: __y->_M_parent = __p; +13943: if (__x->_M_right) +13943: __y->_M_right = _M_copy<_MoveValues>(_S_right(__x), +13943: __y, __node_gen); +13943: __p = __y; +13943: __x = _S_left(__x); +13943: } +13943: } +13943: catch(...) +13943: { +13943: _M_erase(__top); +13943: throw; +13943: } +13943: return __top; +13943: } +13943: +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_erase(_Link_type __x) +13943: { +13943: +13943: while (__x != 0) +13943: { +13943: _M_erase(_S_right(__x)); +13943: _Link_type __y = _S_left(__x); +13943: _M_drop_node(__x); +13943: __x = __y; +13943: } +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_lower_bound(_Link_type __x, _Base_ptr __y, +13943: const _Key& __k) +13943: { +13943: while (__x != 0) +13943: if (!_M_impl._M_key_compare(_S_key(__x), __k)) +13943: __y = __x, __x = _S_left(__x); +13943: else +13943: __x = _S_right(__x); +13943: return iterator(__y); +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::const_iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, +13943: const _Key& __k) const +13943: { +13943: while (__x != 0) +13943: if (!_M_impl._M_key_compare(_S_key(__x), __k)) +13943: __y = __x, __x = _S_left(__x); +13943: else +13943: __x = _S_right(__x); +13943: return const_iterator(__y); +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_upper_bound(_Link_type __x, _Base_ptr __y, +13943: const _Key& __k) +13943: { +13943: while (__x != 0) +13943: if (_M_impl._M_key_compare(__k, _S_key(__x))) +13943: __y = __x, __x = _S_left(__x); +13943: else +13943: __x = _S_right(__x); +13943: return iterator(__y); +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::const_iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, +13943: const _Key& __k) const +13943: { +13943: while (__x != 0) +13943: if (_M_impl._M_key_compare(__k, _S_key(__x))) +13943: __y = __x, __x = _S_left(__x); +13943: else +13943: __x = _S_right(__x); +13943: return const_iterator(__y); +13943: } +13943: +13943: template +13943: pair::iterator, +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::iterator> +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: equal_range(const _Key& __k) +13943: { +13943: _Link_type __x = _M_begin(); +13943: _Base_ptr __y = _M_end(); +13943: while (__x != 0) +13943: { +13943: if (_M_impl._M_key_compare(_S_key(__x), __k)) +13943: __x = _S_right(__x); +13943: else if (_M_impl._M_key_compare(__k, _S_key(__x))) +13943: __y = __x, __x = _S_left(__x); +13943: else +13943: { +13943: _Link_type __xu(__x); +13943: _Base_ptr __yu(__y); +13943: __y = __x, __x = _S_left(__x); +13943: __xu = _S_right(__xu); +13943: return pair(_M_lower_bound(__x, __y, __k), +13943: _M_upper_bound(__xu, __yu, __k)); +13943: } +13943: } +13943: return pair(iterator(__y), +13943: iterator(__y)); +13943: } +13943: +13943: template +13943: pair::const_iterator, +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::const_iterator> +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: equal_range(const _Key& __k) const +13943: { +13943: _Const_Link_type __x = _M_begin(); +13943: _Const_Base_ptr __y = _M_end(); +13943: while (__x != 0) +13943: { +13943: if (_M_impl._M_key_compare(_S_key(__x), __k)) +13943: __x = _S_right(__x); +13943: else if (_M_impl._M_key_compare(__k, _S_key(__x))) +13943: __y = __x, __x = _S_left(__x); +13943: else +13943: { +13943: _Const_Link_type __xu(__x); +13943: _Const_Base_ptr __yu(__y); +13943: __y = __x, __x = _S_left(__x); +13943: __xu = _S_right(__xu); +13943: return pair(_M_lower_bound(__x, __y, __k), +13943: _M_upper_bound(__xu, __yu, __k)); +13943: } +13943: } +13943: return pair(const_iterator(__y), +13943: const_iterator(__y)); +13943: } +13943: +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: swap(_Rb_tree& __t) +13943: noexcept(__is_nothrow_swappable<_Compare>::value) +13943: { +13943: if (_M_root() == 0) +13943: { +13943: if (__t._M_root() != 0) +13943: _M_impl._M_move_data(__t._M_impl); +13943: } +13943: else if (__t._M_root() == 0) +13943: __t._M_impl._M_move_data(_M_impl); +13943: else +13943: { +13943: std::swap(_M_root(),__t._M_root()); +13943: std::swap(_M_leftmost(),__t._M_leftmost()); +13943: std::swap(_M_rightmost(),__t._M_rightmost()); +13943: +13943: _M_root()->_M_parent = _M_end(); +13943: __t._M_root()->_M_parent = __t._M_end(); +13943: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); +13943: } +13943: +13943: std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); +13943: +13943: _Alloc_traits::_S_on_swap(_M_get_Node_allocator(), +13943: __t._M_get_Node_allocator()); +13943: } +13943: +13943: template +13943: pair::_Base_ptr, +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::_Base_ptr> +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_get_insert_unique_pos(const key_type& __k) +13943: { +13943: typedef pair<_Base_ptr, _Base_ptr> _Res; +13943: _Link_type __x = _M_begin(); +13943: _Base_ptr __y = _M_end(); +13943: bool __comp = true; +13943: while (__x != 0) +13943: { +13943: __y = __x; +13943: __comp = _M_impl._M_key_compare(__k, _S_key(__x)); +13943: __x = __comp ? _S_left(__x) : _S_right(__x); +13943: } +13943: iterator __j = iterator(__y); +13943: if (__comp) +13943: { +13943: if (__j == begin()) +13943: return _Res(__x, __y); +13943: else +13943: --__j; +13943: } +13943: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) +13943:[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o + return _Res(__x, __y); +13943: return _Res(__j._M_node, 0); +13943: } +13943: +13943: template +13943: pair::_Base_ptr, +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::_Base_ptr> +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_get_insert_equal_pos(const key_type& __k) +13943: { +13943: typedef pair<_Base_ptr, _Base_ptr> _Res; +13943: _Link_type __x = _M_begin(); +13943: _Base_ptr __y = _M_end(); +13943: while (__x != 0) +13943: { +13943: __y = __x; +13943: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? +13943: _S_left(__x) : _S_right(__x); +13943: } +13943: return _Res(__x, __y); +13943: } +13943: +13943: template +13943: +13943: template +13943: +13943: pair::iterator, bool> +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: +13943: _M_insert_unique(_Arg&& __v) +13943: +13943: +13943: +13943: { +13943: typedef pair _Res; +13943: pair<_Base_ptr, _Base_ptr> __res +13943: = _M_get_insert_unique_pos(_KeyOfValue()(__v)); +13943: +13943: if (__res.second) +13943: { +13943: _Alloc_node __an(*this); +13943: return _Res(_M_insert_(__res.first, __res.second, +13943: std::forward<_Arg>(__v), __an), +13943: true); +13943: } +13943: +13943: return _Res(iterator(__res.first), false); +13943: } +13943: +13943: template +13943: +13943: template +13943: +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: +13943: _M_insert_equal(_Arg&& __v) +13943: +13943: +13943: +13943: { +13943: pair<_Base_ptr, _Base_ptr> __res +13943: = _M_get_insert_equal_pos(_KeyOfValue()(__v)); +13943: _Alloc_node __an(*this); +13943: return _M_insert_(__res.first, __res.second, +13943: std::forward<_Arg>(__v), __an); +13943: } +13943: +13943: template +13943: pair::_Base_ptr, +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::_Base_ptr> +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_get_insert_hint_unique_pos(const_iterator __position, +13943: const key_type& __k) +13943: { +13943: iterator __pos = __position._M_const_cast(); +13943: typedef pair<_Base_ptr, _Base_ptr> _Res; +13943: +13943: +13943: if (__pos._M_node == _M_end()) +13943: { +13943: if (size() > 0 +13943: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) +13943: return _Res(0, _M_rightmost()); +13943: else +13943: return _M_get_insert_unique_pos(__k); +13943: } +13943: else if (_M_impl._M_key_compare(__k, _S_key(__pos._M_node))) +13943: { +13943: +13943: iterator __before = __pos; +13943: if (__pos._M_node == _M_leftmost()) +13943: return _Res(_M_leftmost(), _M_leftmost()); +13943: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) +13943: { +13943: if (_S_right(__before._M_node) == 0) +13943: return _Res(0, __before._M_node); +13943: else +13943: return _Res(__pos._M_node, __pos._M_node); +13943: } +13943: else +13943: return _M_get_insert_unique_pos(__k); +13943: } +13943: else if (_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) +13943: { +13943: +13943: iterator __after = __pos; +13943: if (__pos._M_node == _M_rightmost()) +13943: return _Res(0, _M_rightmost()); +13943: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) +13943: { +13943: if (_S_right(__pos._M_node) == 0) +13943: return _Res(0, __pos._M_node); +13943: else +13943: return _Res(__after._M_node, __after._M_node); +13943: } +13943: else +13943: return _M_get_insert_unique_pos(__k); +13943: } +13943: else +13943: +13943: return _Res(__pos._M_node, 0); +13943: } +13943: +13943: template +13943: +13943: template +13943: +13943: +13943: +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_insert_unique_(const_iterator __position, +13943: +13943: _Arg&& __v, +13943: +13943: +13943: +13943: _NodeGen& __node_gen) +13943: { +13943: pair<_Base_ptr, _Base_ptr> __res +13943: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); +13943: +13943: if (__res.second) +13943: return _M_insert_(__res.first, __res.second, +13943: std::forward<_Arg>(__v), +13943: __node_gen); +13943: return iterator(__res.first); +13943: } +13943: +13943: template +13943: pair::_Base_ptr, +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::_Base_ptr> +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) +13943: { +13943: iterator __pos = __position._M_const_cast(); +13943: typedef pair<_Base_ptr, _Base_ptr> _Res; +13943: +13943: +13943: if (__pos._M_node == _M_end()) +13943: { +13943: if (size() > 0 +13943: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) +13943: return _Res(0, _M_rightmost()); +13943: else +13943: return _M_get_insert_equal_pos(__k); +13943: } +13943: else if (!_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) +13943: { +13943: +13943: iterator __before = __pos; +13943: if (__pos._M_node == _M_leftmost()) +13943: return _Res(_M_leftmost(), _M_leftmost()); +13943: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) +13943: { +13943: if (_S_right(__before._M_node) == 0) +13943: return _Res(0, __before._M_node); +13943: else +13943: return _Res(__pos._M_node, __pos._M_node); +13943: } +13943: else +13943: return _M_get_insert_equal_pos(__k); +13943: } +13943: else +13943: { +13943: +13943: iterator __after = __pos; +13943: if (__pos._M_node == _M_rightmost()) +13943: return _Res(0, _M_rightmost()); +13943: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) +13943: { +13943: if (_S_right(__pos._M_node) == 0) +13943: return _Res(0, __pos._M_node); +13943: else +13943: return _Res(__after._M_node, __after._M_node); +13943: } +13943: else +13943: return _Res(0, 0); +13943: } +13943: } +13943: +13943: template +13943: +13943: template +13943: +13943: +13943: +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_insert_equal_(const_iterator __position, +13943: +13943: _Arg&& __v, +13943: +13943: +13943: +13943: _NodeGen& __node_gen) +13943: { +13943: pair<_Base_ptr, _Base_ptr> __res +13943: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); +13943: +13943: if (__res.second) +13943: return _M_insert_(__res.first, __res.second, +13943: std::forward<_Arg>(__v), +13943: __node_gen); +13943: +13943: return _M_insert_equal_lower(std::forward<_Arg>(__v)); +13943: } +13943: +13943: +13943: template +13943: auto +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z) +13943: -> iterator +13943: { +13943: bool __insert_left = (__x != 0 || __p == _M_end() +13943: || _M_impl._M_key_compare(_S_key(__z), +13943: _S_key(__p))); +13943: +13943: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +13943: this->_M_impl._M_header); +13943: ++_M_impl._M_node_count; +13943: return iterator(__z); +13943: } +13943: +13943: template +13943: auto +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_insert_lower_node(_Base_ptr __p, _Link_type __z) +13943: -> iterator +13943: { +13943: bool __insert_left = (__p == _M_end() +13943: || !_M_impl._M_key_compare(_S_key(__p), +13943: _S_key(__z))); +13943: +13943: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +13943: this->_M_impl._M_header); +13943: ++_M_impl._M_node_count; +13943: return iterator(__z); +13943: } +13943: +13943: template +13943: auto +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_insert_equal_lower_node(_Link_type __z) +13943: -> iterator +13943: { +13943: _Link_type __x = _M_begin(); +13943: _Base_ptr __y = _M_end(); +13943: while (__x != 0) +13943: { +13943: __y = __x; +13943: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? +13943: _S_left(__x) : _S_right(__x); +13943: } +13943: return _M_insert_lower_node(__y, __z); +13943: } +13943: +13943: template +13943: template +13943: auto +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_emplace_unique(_Args&&... __args) +13943: -> pair +13943: { +13943: _Auto_node __z(*this, std::forward<_Args>(__args)...); +13943: auto __res = _M_get_insert_unique_pos(__z._M_key()); +13943: if (__res.second) +13943: return {__z._M_insert(__res), true}; +13943: return {iterator(__res.first), false}; +13943: } +13943: +13943: template +13943: template +13943: auto +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_emplace_equal(_Args&&... __args) +13943: -> iterator +13943: { +13943: _Auto_node __z(*this, std::forward<_Args>(__args)...); +13943: auto __res = _M_get_insert_equal_pos(__z._M_key()); +13943: return __z._M_insert(__res); +13943: } +13943: +13943: template +13943: template +13943: auto +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) +13943: -> iterator +13943: { +13943: _Auto_node __z(*this, std::forward<_Args>(__args)...); +13943: auto __res = _M_get_insert_hint_unique_pos(__pos, __z._M_key()); +13943: if (__res.second) +13943: return __z._M_insert(__res); +13943: return iterator(__res.first); +13943: } +13943: +13943: template +13943: template +13943: auto +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) +13943: -> iterator +13943: { +13943: _Auto_node __z(*this, std::forward<_Args>(__args)...); +13943: auto __res = _M_get_insert_hint_equal_pos(__pos, __z._M_key()); +13943: if (__res.second) +13943: return __z._M_insert(__res); +13943: return __z._M_insert_equal_lower(); +13943: } +13943: +13943: +13943: +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_erase_aux(const_iterator __position) +13943: { +13943: _Link_type __y = +13943: static_cast<_Link_type>(_Rb_tree_rebalance_for_erase +13943: (const_cast<_Base_ptr>(__position._M_node), +13943: this->_M_impl._M_header)); +13943: _M_drop_node(__y); +13943: --_M_impl._M_node_count; +13943: } +13943: +13943: template +13943: void +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: _M_erase_aux(const_iterator __first, const_iterator __last) +13943: { +13943: if (__first == begin() && __last == end()) +13943: clear(); +13943: else +13943: while (__first != __last) +13943: _M_erase_aux(__first++); +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: erase(const _Key& __x) +13943: { +13943: pair __p = equal_range(__x); +13943: const size_type __old_size = size(); +13943: _M_erase_aux(__p.first, __p.second); +13943: return __old_size - size(); +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: find(const _Key& __k) +13943: { +13943: iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); +13943: return (__j == end() +13943: || _M_impl._M_key_compare(__k, +13943: _S_key(__j._M_node))) ? end() : __j; +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, +13943: _Compare, _Alloc>::const_iterator +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: find(const _Key& __k) const +13943: { +13943: const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); +13943: return (__j == end() +13943: || _M_impl._M_key_compare(__k, +13943: _S_key(__j._M_node))) ? end() : __j; +13943: } +13943: +13943: template +13943: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type +13943: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +13943: count(const _Key& __k) const +13943: { +13943: pair __p = equal_range(__k); +13943: const size_type __n = std::distance(__p.first, __p.second); +13943: return __n; +13943: } +13943: +13943: __attribute__ ((__pure__)) unsigned int +13943: _Rb_tree_black_count(const _Rb_tree_node_base* __node, +13943: const _Rb_tree_node_base* __root) throw (); +13943: +13943: template +13943: bool +13943: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const +13943: { +13943: if (_M_impl._M_node_count == 0 || begin() == end()) +13943: return _M_impl._M_node_count == 0 && begin() == end() +13943: && this->_M_impl._M_header._M_left == _M_end() +13943: && this->_M_impl._M_header._M_right == _M_end(); +13943: +13943: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); +13943: for (const_iterator __it = begin(); __it != end(); ++__it) +13943: { +13943: _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node); +13943: _Const_Link_type __L = _S_left(__x); +13943: _Const_Link_type __R = _S_right(__x); +13943: +13943: if (__x->_M_color == _S_red) +13943: if ((__L && __L->_M_color == _S_red) +13943: || (__R && __R->_M_color == _S_red)) +13943: return false; +13943: +13943: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) +13943: return false; +13943: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) +13943: return false; +13943: +13943: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) +13943: return false; +13943: } +13943: +13943: if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) +13943: return false; +13943: if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) +13943: return false; +13943: return true; +13943: } +13943: +13943: +13943: +13943: template +13943: struct _Rb_tree_merge_helper<_Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>, +13943: _Cmp2> +13943: { +13943: private: +13943: friend class _Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_impl(_Rb_tree<_Key, _Val, _Sel, _Cmp2, _Alloc>& __tree) +13943: { return __tree._M_impl; } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 63 "/usr/include/c++/14/map" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_map.h" 1 3 +13943: # 66 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: class multimap; +13943: # 100 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template , +13943: typename _Alloc = std::allocator > > +13943: class map +13943: { +13943: public: +13943: typedef _Key key_type; +13943: typedef _Tp mapped_type; +13943: typedef std::pair value_type; +13943: typedef _Compare key_compare; +13943: typedef _Alloc allocator_type; +13943: +13943: private: +13943: # 130 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: public: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: class value_compare +13943: : public std::binary_function +13943: { +13943: friend class map<_Key, _Tp, _Compare, _Alloc>; +13943: protected: +13943: _Compare comp; +13943: +13943: value_compare(_Compare __c) +13943: : comp(__c) { } +13943: +13943: public: +13943: bool operator()(const value_type& __x, const value_type& __y) const +13943: { return comp(__x.first, __y.first); } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: private: +13943: +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind::other _Pair_alloc_type; +13943: +13943: typedef _Rb_tree, +13943: key_compare, _Pair_alloc_type> _Rep_type; +13943: +13943: +13943: _Rep_type _M_t; +13943: +13943: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; +13943: +13943: +13943: template> +13943: static constexpr bool __usable_key +13943: = __or_v, +13943: __and_, is_scalar<_Key>>>; +13943: +13943: +13943: public: +13943: +13943: +13943: typedef typename _Alloc_traits::pointer pointer; +13943: typedef typename _Alloc_traits::const_pointer const_pointer; +13943: typedef typename _Alloc_traits::reference reference; +13943: typedef typename _Alloc_traits::const_reference const_reference; +13943: typedef typename _Rep_type::iterator iterator; +13943: typedef typename _Rep_type::const_iterator const_iterator; +13943: typedef typename _Rep_type::size_type size_type; +13943: typedef typename _Rep_type::difference_type difference_type; +13943: typedef typename _Rep_type::reverse_iterator reverse_iterator; +13943: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +13943: +13943: +13943: using node_type = typename _Rep_type::node_type; +13943: using insert_return_type = typename _Rep_type::insert_return_type; +13943: # 197 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: map() = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: map(const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Pair_alloc_type(__a)) { } +13943: # 219 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: map(const map&) = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: map(map&&) = default; +13943: # 240 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: map(initializer_list __l, +13943: const _Compare& __comp = _Compare(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +13943: +13943: +13943: explicit +13943: map(const allocator_type& __a) +13943: : _M_t(_Pair_alloc_type(__a)) { } +13943: +13943: +13943: map(const map& __m, const __type_identity_t& __a) +13943: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } +13943: +13943: +13943: map(map&& __m, const __type_identity_t& __a) +13943: noexcept(is_nothrow_copy_constructible<_Compare>::value +13943: && _Alloc_traits::_S_always_equal()) +13943: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } +13943: +13943: +13943: map(initializer_list __l, const allocator_type& __a) +13943: : _M_t(_Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +13943: +13943: +13943: template +13943: map(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a) +13943: : _M_t(_Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: # 284 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: map(_InputIterator __first, _InputIterator __last) +13943: : _M_t() +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: # 301 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: map(_InputIterator __first, _InputIterator __last, +13943: const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~map() = default; +13943: # 330 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: map& +13943: operator=(const map&) = default; +13943: +13943: +13943: map& +13943: operator=(map&&) = default; +13943: # 348 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: map& +13943: operator=(initializer_list __l) +13943: { +13943: _M_t._M_assign_unique(__l.begin(), __l.end()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_t.get_allocator()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: begin() noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +1394/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o -MF CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o.d -o CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.cc +3: +13943: +13943: +13943: +13943: iterator +13943: end() noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rend() noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cbegin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cend() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: crbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: crend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_t.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_t.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_t.max_size(); } +13943: # 503 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: mapped_type& +13943: operator[](const key_type& __k) +13943: { +13943: +13943: +13943: +13943: iterator __i = lower_bound(__k); +13943: +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: +13943: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, +13943: std::tuple(__k), +13943: std::tuple<>()); +13943: +13943: +13943: +13943: return (*__i).second; +13943: } +13943: +13943: +13943: mapped_type& +13943: operator[](key_type&& __k) +13943: { +13943: +13943: +13943: +13943: iterator __i = lower_bound(__k); +13943: +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, +13943: std::forward_as_tuple(std::move(__k)), +13943: std::tuple<>()); +13943: return (*__i).second; +13943: } +13943: # 548 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: mapped_type& +13943: at(const key_type& __k) +13943: { +13943: iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: __throw_out_of_range(("map::at")); +13943: return (*__i).second; +13943: } +13943: +13943: const mapped_type& +13943: at(const key_type& __k) const +13943: { +13943: const_iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: __throw_out_of_range(("map::at")); +13943: return (*__i).second; +13943: } +13943: # 586 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: std::pair +13943: emplace(_Args&&... __args) +13943: { +13943: +13943: if constexpr (sizeof...(_Args) == 2) +13943: if constexpr (is_same_v>) +13943: { +13943: auto&& [__a, __v] = pair<_Args&...>(__args...); +13943: if constexpr (__usable_key) +13943: { +13943: const key_type& __k = __a; +13943: iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: { +13943: __i = emplace_hint(__i, std::forward<_Args>(__args)...); +13943: return {__i, true}; +13943: } +13943: return {__i, false}; +13943: } +13943: } +13943: +13943: return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); +13943: } +13943: # 636 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { +13943: return _M_t._M_emplace_hint_unique(__pos, +13943: std::forward<_Args>(__args)...); +13943: } +13943: +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_t.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __x) +13943: { return _M_t.extract(__x); } +13943: +13943: +13943: insert_return_type +13943: insert(node_type&& __nh) +13943: { return _M_t._M_reinsert_node_unique(std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, node_type&& __nh) +13943: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } +13943: +13943: template +13943: friend struct std::_Rb_tree_merge_helper; +13943: +13943: template +13943: void +13943: merge(map<_Key, _Tp, _Cmp2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(map<_Key, _Tp, _Cmp2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>&& __source) +13943: { merge(__source); } +13943: # 720 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: pair +13943: try_emplace(const key_type& __k, _Args&&... __args) +13943: { +13943: iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: { +13943: __i = emplace_hint(__i, std::piecewise_construct, +13943: std::forward_as_tuple(__k), +13943: std::forward_as_tuple( +13943: std::forward<_Args>(__args)...)); +13943: return {__i, true}; +13943: } +13943: return {__i, false}; +13943: } +13943: +13943: +13943: template +13943: pair +13943: try_emplace(key_type&& __k, _Args&&... __args) +13943: { +13943: iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: { +13943: __i = emplace_hint(__i, std::piecewise_construct, +13943: std::forward_as_tuple(std::move(__k)), +13943: std::forward_as_tuple( +13943: std::forward<_Args>(__args)...)); +13943: return {__i, true}; +13943: } +13943: return {__i, false}; +13943: } +13943: # 780 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: iterator +13943: try_emplace(const_iterator __hint, const key_type& __k, +13943: _Args&&... __args) +13943: { +13943: iterator __i; +13943: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +13943: if (__true_hint.second) +13943: __i = emplace_hint(iterator(__true_hint.second), +13943: std::piecewise_construct, +13943: std::forward_as_tuple(__k), +13943: std::forward_as_tuple( +13943: std::forward<_Args>(__args)...)); +13943: else +13943: __i = iterator(__true_hint.first); +13943: return __i; +13943: } +13943: +13943: +13943: template +13943: iterator +13943: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) +13943: { +13943: iterator __i; +13943: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +13943: if (__true_hint.second) +13943: __i = emplace_hint(iterator(__true_hint.second), +13943: std::piecewise_construct, +13943: std::forward_as_tuple(std::move(__k)), +13943: std::forward_as_tuple( +13943: std::forward<_Args>(__args)...)); +13943: else +13943: __i = iterator(__true_hint.first); +13943: return __i; +13943: } +13943: # 833 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: std::pair +13943: insert(const value_type& __x) +13943: { return _M_t._M_insert_unique(__x); } +13943: +13943: +13943: +13943: +13943: std::pair +13943: insert(value_type&& __x) +13943: { return _M_t._M_insert_unique(std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, +13943: pair> +13943: insert(_Pair&& __x) +13943: { +13943: +13943: using _P2 = remove_reference_t<_Pair>; +13943: if constexpr (__is_pair>) +13943: if constexpr (is_same_v>) +13943: if constexpr (__usable_key) +13943: { +13943: const key_type& __k = __x.first; +13943: iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: { +13943: __i = emplace_hint(__i, std::forward<_Pair>(__x)); +13943: return {__i, true}; +13943: } +13943: return {__i, false}; +13943: } +13943: +13943: return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); +13943: } +13943: # 878 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: void +13943: insert(std::initializer_list __list) +13943: { insert(__list.begin(), __list.end()); } +13943: # 907 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: iterator +13943: +13943: insert(const_iterator __position, const value_type& __x) +13943: +13943: +13943: +13943: { return _M_t._M_insert_unique_(__position, __x); } +13943: +13943: +13943: +13943: +13943: iterator +13943: insert(const_iterator __position, value_type&& __x) +13943: { return _M_t._M_insert_unique_(__position, std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, iterator> +13943: insert(const_iterator __position, _Pair&& __x) +13943: { +13943: return _M_t._M_emplace_hint_unique(__position, +13943: std::forward<_Pair>(__x)); +13943: } +13943: # 940 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: # 965 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: pair +13943: insert_or_assign(const key_type& __k, _Obj&& __obj) +13943: { +13943: iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: { +13943: __i = emplace_hint(__i, std::piecewise_construct, +13943: std::forward_as_tuple(__k), +13943: std::forward_as_tuple( +13943: std::forward<_Obj>(__obj))); +13943: return {__i, true}; +13943: } +13943: (*__i).second = std::forward<_Obj>(__obj); +13943: return {__i, false}; +13943: } +13943: +13943: +13943: template +13943: pair +13943: insert_or_assign(key_type&& __k, _Obj&& __obj) +13943: { +13943: iterator __i = lower_bound(__k); +13943: if (__i == end() || key_comp()(__k, (*__i).first)) +13943: { +13943: __i = emplace_hint(__i, std::piecewise_construct, +13943: std::forward_as_tuple(std::move(__k)), +13943: std::forward_as_tuple( +13943: std::forward<_Obj>(__obj))); +13943: return {__i, true}; +13943: } +13943: (*__i).second = std::forward<_Obj>(__obj); +13943: return {__i, false}; +13943: } +13943: # 1020 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: iterator +13943: insert_or_assign(const_iterator __hint, +13943: const key_type& __k, _Obj&& __obj) +13943: { +13943: iterator __i; +13943: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +13943: if (__true_hint.second) +13943: { +13943: return emplace_hint(iterator(__true_hint.second), +13943: std::piecewise_construct, +13943: std::forward_as_tuple(__k), +13943: std::forward_as_tuple( +13943: std::forward<_Obj>(__obj))); +13943: } +13943: __i = iterator(__true_hint.first); +13943: (*__i).second = std::forward<_Obj>(__obj); +13943: return __i; +13943: } +13943: +13943: +13943: template +13943: iterator +13943: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) +13943: { +13943: iterator __i; +13943: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +13943: if (__true_hint.second) +13943: { +13943: return emplace_hint(iterator(__true_hint.second), +13943: std::piecewise_construct, +13943: std::forward_as_tuple(std::move(__k)), +13943: std::forward_as_tuple( +13943: std::forward<_Obj>(__obj))); +13943: } +13943: __i = iterator(__true_hint.first); +13943: (*__i).second = std::forward<_Obj>(__obj); +13943: return __i; +13943: } +13943: # 1079 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_t.erase(__position); } +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(iterator __position) +13943: { return _M_t.erase(__position); } +13943: # 1116 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_t.erase(__x); } +13943: # 1136 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_t.erase(__first, __last); } +13943: # 1170 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: void +13943: swap(map& __x) +13943: noexcept(__is_nothrow_swappable<_Compare>::value) +13943: { _M_t.swap(__x._M_t); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_t.clear(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: key_compare +13943: key_comp() const +13943: { return _M_t.key_comp(); } +13943: +13943: +13943: +13943: +13943: +13943: value_compare +13943: value_comp() const +13943: { return value_compare(_M_t.key_comp()); } +13943: # 1217 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_t.find(__x); } +13943: +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) +13943: { return _M_t._M_find_tr(__x); } +13943: # 1242 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_t.find(__x); } +13943: +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) +13943: { return _M_t._M_find_tr(__x); } +13943: # 1263 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } +13943: +13943: +13943: template +13943: auto +13943: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) +13943: { return _M_t._M_count_tr(__x); } +13943: # 1306 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: iterator +13943: lower_bound(const key_type& __x) +13943: { return _M_t.lower_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return iterator(_M_t._M_lower_bound_tr(__x)); } +13943: # 1331 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: const_iterator +13943: lower_bound(const key_type& __x) const +13943: { return _M_t.lower_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) const +13943: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } +13943: # 1351 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: iterator +13943: upper_bound(const key_type& __x) +13943: { return _M_t.upper_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return iterator(_M_t._M_upper_bound_tr(__x)); } +13943: # 1371 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: const_iterator +13943: upper_bound(const key_type& __x) const +13943: { return _M_t.upper_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) const +13943: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } +13943: # 1400 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_t.equal_range(__x); } +13943: +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) +13943: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +13943: { return pair(_M_t._M_equal_range_tr(__x)); } +13943: # 1429 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_t.equal_range(__x); } +13943: +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) const +13943: -> decltype(pair( +13943: _M_t._M_equal_range_tr(__x))) +13943: { +13943: return pair( +13943: _M_t._M_equal_range_tr(__x)); +13943: } +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator==(const map<_K1, _T1, _C1, _A1>&, +13943: const map<_K1, _T1, _C1, _A1>&); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator<(const map<_K1, _T1, _C1, _A1>&, +13943: const map<_K1, _T1, _C1, _A1>&); +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: template>, +13943: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: map(_InputIterator, _InputIterator, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +13943: _Compare, _Allocator>; +13943: +13943: template, +13943: typename _Allocator = allocator>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: map(initializer_list>, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> map<_Key, _Tp, _Compare, _Allocator>; +13943: +13943: template , +13943: typename = _RequireAllocator<_Allocator>> +13943: map(_InputIterator, _InputIterator, _Allocator) +13943: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +13943: less<__iter_key_t<_InputIterator>>, _Allocator>; +13943: +13943: template> +13943: map(initializer_list>, _Allocator) +13943: -> map<_Key, _Tp, less<_Key>, _Allocator>; +13943: # 1510 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: inline bool +13943: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const map<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return __x._M_t == __y._M_t; } +13943: # 1548 "/usr/include/c++/14/bits/stl_map.h" 3 +13943: template +13943: inline bool +13943: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const map<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return __x._M_t < __y._M_t; } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const map<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const map<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: inline bool +13943: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const map<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const map<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(map<_Key, _Tp, _Compare, _Alloc>& __x, +13943: map<_Key, _Tp, _Compare, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct +13943: _Rb_tree_merge_helper, +13943: _Cmp2> +13943: { +13943: private: +13943: friend class std::map<_Key, _Val, _Cmp1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map) +13943: { return __map._M_t; } +13943: +13943: static auto& +13943: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) +13943: { return __map._M_t; } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 64 "/usr/include/c++/14/map" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_multimap.h" 1 3 +13943: # 64 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: class map; +13943: # 98 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template , +13943: typename _Alloc = std::allocator > > +13943: class multimap +13943: { +13943: public: +13943: typedef _Key key_type; +13943: typedef _Tp mapped_type; +13943: typedef std::pair value_type; +13943: typedef _Compare key_compare; +13943: typedef _Alloc allocator_type; +13943: +13943: private: +13943: # 129 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: public: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: class value_compare +13943: : public std::binary_function +13943: { +13943: friend class multimap<_Key, _Tp, _Compare, _Alloc>; +13943: protected: +13943: _Compare comp; +13943: +13943: value_compare(_Compare __c) +13943: : comp(__c) { } +13943: +13943: public: +13943: bool operator()(const value_type& __x, const value_type& __y) const +13943: { return comp(__x.first, __y.first); } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: private: +13943: +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind::other _Pair_alloc_type; +13943: +13943: typedef _Rb_tree, +13943: key_compare, _Pair_alloc_type> _Rep_type; +13943: +13943: _Rep_type _M_t; +13943: +13943: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; +13943: +13943: public: +13943: +13943: +13943: typedef typename _Alloc_traits::pointer pointer; +13943: typedef typename _Alloc_traits::const_pointer const_pointer; +13943: typedef typename _Alloc_traits::reference reference; +13943: typedef typename _Alloc_traits::const_reference const_reference; +13943: typedef typename _Rep_type::iterator iterator; +13943: typedef typename _Rep_type::const_iterator const_iterator; +13943: typedef typename _Rep_type::size_type size_type; +13943: typedef typename _Rep_type::difference_type difference_type; +13943: typedef typename _Rep_type::reverse_iterator reverse_iterator; +13943: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +13943: +13943: +13943: using node_type = typename _Rep_type::node_type; +13943: # 187 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: multimap() = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: multimap(const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Pair_alloc_type(__a)) { } +13943: # 209 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: multimap(const multimap&) = default; +13943: # 218 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: multimap(multimap&&) = default; +13943: # 230 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: multimap(initializer_list __l, +13943: const _Compare& __comp = _Compare(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +13943: +13943: +13943: explicit +13943: multimap(const allocator_type& __a) +13943: : _M_t(_Pair_alloc_type(__a)) { } +13943: +13943: +13943: multimap(const multimap& __m, +13943: const __type_identity_t& __a) +13943: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } +13943: +13943: +13943: multimap(multimap&& __m, const __type_identity_t& __a) +13943: noexcept(is_nothrow_copy_constructible<_Compare>::value +13943: && _Alloc_traits::_S_always_equal()) +13943: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } +13943: +13943: +13943: multimap(initializer_list __l, const allocator_type& __a) +13943: : _M_t(_Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +13943: +13943: +13943: template +13943: multimap(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a) +13943: : _M_t(_Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: # 274 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template +13943: multimap(_InputIterator __first, _InputIterator __last) +13943: : _M_t() +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: # 290 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template +13943: multimap(_InputIterator __first, _InputIterator __last, +13943: const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Pair_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~multimap() = default; +13943: # 319 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: multimap& +13943: operator=(const multimap&) = default; +13943: +13943: +13943: multimap& +13943: operator=(multimap&&) = default; +13943: # 337 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: multimap& +13943: operator=(initializer_list __l) +13943: { +13943: _M_t._M_assign_equal(__l.begin(), __l.end()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_t.get_allocator()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: begin() noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: begin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: end() noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: end() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rend() noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cbegin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_iterator +13943: cend() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: crbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const_reverse_iterator +13943: crend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_t.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_t.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_t.max_size(); } +13943: # 495 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template +13943: iterator +13943: emplace(_Args&&... __args) +13943: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } +13943: # 522 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { +13943: return _M_t._M_emplace_hint_equal(__pos, +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 544 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: iterator +13943: insert(const value_type& __x) +13943: { return _M_t._M_insert_equal(__x); } +13943: +13943: +13943: +13943: +13943: iterator +13943: insert(value_type&& __x) +13943: { return _M_t._M_insert_equal(std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, iterator> +13943: insert(_Pair&& __x) +13943: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } +13943: # 583 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: iterator +13943: +13943: insert(const_iterator __position, const value_type& __x) +13943: +13943: +13943: +13943: { return _M_t._M_insert_equal_(__position, __x); } +13943: +13943: +13943: +13943: +13943: iterator +13943: insert(const_iterator __position, value_type&& __x) +13943: { return _M_t._M_insert_equal_(__position, std::move(__x)); } +13943: +13943: template +13943: __enable_if_t::value, iterator> +13943: insert(const_iterator __position, _Pair&& __x) +13943: { +13943: return _M_t._M_emplace_hint_equal(__position, +13943: std::forward<_Pair>(__x)); +13943: } +13943: # 617 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: # 630 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: void +13943: insert(initializer_list __l) +13943: { this->insert(__l.begin(), __l.end()); } +13943: +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_t.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __x) +13943: { return _M_t.extract(__x); } +13943: +13943: +13943: iterator +13943: insert(node_type&& __nh) +13943: { return _M_t._M_reinsert_node_equal(std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, node_type&& __nh) +13943: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } +13943: +13943: template +13943: friend struct std::_Rb_tree_merge_helper; +13943: +13943: template +13943: void +13943: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(map<_Key, _Tp, _Cmp2, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(map<_Key, _Tp, _Cmp2, _Alloc>&& __source) +13943: { merge(__source); } +13943: # 707 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_t.erase(__position); } +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(iterator __position) +13943: { return _M_t.erase(__position); } +13943: # 744 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_t.erase(__x); } +13943: # 765 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_t.erase(__first, __last); } +13943: # 802 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: void +13943: swap(multimap& __x) +13943: noexcept(__is_nothrow_swappable<_Compare>::value) +13943: { _M_t.swap(__x._M_t); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { _M_t.clear(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: key_compare +13943: key_comp() const +13943: { return _M_t.key_comp(); } +13943: +13943: +13943: +13943: +13943: +13943: value_compare +13943: value_comp() const +13943: { return value_compare(_M_t.key_comp()); } +13943: # 848 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_t.find(__x); } +13943: +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) +13943: { return _M_t._M_find_tr(__x); } +13943: # 872 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_t.find(__x); } +13943: +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) +13943: { return _M_t._M_find_tr(__x); } +13943: # 890 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_t.count(__x); } +13943: +13943: +13943: template +13943: auto +13943: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) +13943: { return _M_t._M_count_tr(__x); } +13943: # 933 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: iterator +13943: lower_bound(const key_type& __x) +13943: { return _M_t.lower_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return iterator(_M_t._M_lower_bound_tr(__x)); } +13943: # 958 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: const_iterator +13943: lower_bound(const key_type& __x) const +13943: { return _M_t.lower_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) const +13943: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } +13943: # 978 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: iterator +13943: upper_bound(const key_type& __x) +13943: { return _M_t.upper_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return iterator(_M_t._M_upper_bound_tr(__x)); } +13943: # 998 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: const_iterator +13943: upper_bound(const key_type& __x) const +13943: { return _M_t.upper_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) const +13943: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } +13943: # 1025 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_t.equal_range(__x); } +13943: +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) +13943: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +13943: { return pair(_M_t._M_equal_range_tr(__x)); } +13943: # 1052 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_t.equal_range(__x); } +13943: +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) const +13943: -> decltype(pair( +13943: _M_t._M_equal_range_tr(__x))) +13943: { +13943: return pair( +13943: _M_t._M_equal_range_tr(__x)); +13943: } +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator==(const multimap<_K1, _T1, _C1, _A1>&, +13943: const multimap<_K1, _T1, _C1, _A1>&); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator<(const multimap<_K1, _T1, _C1, _A1>&, +13943: const multimap<_K1, _T1, _C1, _A1>&); +13943: +13943: }; +13943: +13943: +13943: +13943: template>, +13943: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: multimap(_InputIterator, _InputIterator, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +13943: _Compare, _Allocator>; +13943: +13943: template, +13943: typename _Allocator = allocator>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: multimap(initializer_list>, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> multimap<_Key, _Tp, _Compare, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: multimap(_InputIterator, _InputIterator, _Allocator) +13943: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +13943: less<__iter_key_t<_InputIterator>>, _Allocator>; +13943: +13943: template> +13943: multimap(initializer_list>, _Allocator) +13943: -> multimap<_Key, _Tp, less<_Key>, _Allocator>; +13943: # 1132 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template +13943: inline bool +13943: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return __x._M_t == __y._M_t; } +13943: # 1170 "/usr/include/c++/14/bits/stl_multimap.h" 3 +13943: template +13943: inline bool +13943: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return __x._M_t < __y._M_t; } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: inline bool +13943: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +13943: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, +13943: multimap<_Key, _Tp, _Compare, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct +13943: _Rb_tree_merge_helper, +13943: _Cmp2> +13943: { +13943: private: +13943: friend class std::multimap<_Key, _Val, _Cmp1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map) +13943: { return __map._M_t; } +13943: +13943: static auto& +13943: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) +13943: { return __map._M_t; } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 65 "/usr/include/c++/14/map" 2 3 +13943: # 79 "/usr/include/c++/14/map" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 80 "/usr/include/c++/14/map" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr +13943: { +13943: template> +13943: using map +13943: = std::map<_Key, _Tp, _Cmp, +13943: polymorphic_allocator>>; +13943: template> +13943: using multimap +13943: = std::multimap<_Key, _Tp, _Cmp, +13943: polymorphic_allocator>>; +13943: } +13943: +13943: } +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 2 +13943: +13943: # 1 "/usr/include/c++/14/mutex" 1 3 +13943: # 32 "/usr/include/c++/14/mutex" 3 +13943: +13943: # 33 "/usr/include/c++/14/mutex" 3 +13943: # 47 "/usr/include/c++/14/mutex" 3 +13943: # 1 "/usr/include/c++/14/bits/std_mutex.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/std_mutex.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/std_mutex.h" 3 +13943: # 43 "/usr/include/c++/14/bits/std_mutex.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 59 "/usr/include/c++/14/bits/std_mutex.h" 3 +13943: class __mutex_base +13943: { +13943: protected: +13943: typedef __gthread_mutex_t __native_type; +13943: +13943: +13943: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } }; +13943: +13943: constexpr __mutex_base() noexcept = default; +13943: # 80 "/usr/include/c++/14/bits/std_mutex.h" 3 +13943: __mutex_base(const __mutex_base&) = delete; +13943: __mutex_base& operator=(const __mutex_base&) = delete; +13943: }; +13943: # 96 "/usr/include/c++/14/bits/std_mutex.h" 3 +13943: class mutex : private __mutex_base +13943: { +13943: public: +13943: typedef __native_type* native_handle_type; +13943: +13943: +13943: constexpr +13943: +13943: mutex() noexcept = default; +13943: ~mutex() = default; +13943: +13943: mutex(const mutex&) = delete; +13943: mutex& operator=(const mutex&) = delete; +13943: +13943: void +13943: lock() +13943: { +13943: int __e = __gthread_mutex_lock(&_M_mutex); +13943: +13943: +13943: if (__e) +13943: __throw_system_error(__e); +13943: } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: try_lock() noexcept +13943: { +13943: +13943: return !__gthread_mutex_trylock(&_M_mutex); +13943: } +13943: +13943: void +13943: unlock() +13943: { +13943: +13943: __gthread_mutex_unlock(&_M_mutex); +13943: } +13943: +13943: native_handle_type +13943: native_handle() noexcept +13943: { return &_M_mutex; } +13943: }; +13943: +13943: +13943: +13943: +13943: class __condvar +13943: { +13943: using timespec = __gthread_time_t; +13943: +13943: public: +13943: __condvar() noexcept +13943: { +13943: +13943: +13943: +13943: } +13943: +13943: ~__condvar() +13943: { +13943: int __e __attribute__((__unused__)) = __gthread_cond_destroy(&_M_cond); +13943: do { if (std::__is_constant_evaluated() && !bool(__e != 16)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: __condvar(const __condvar&) = delete; +13943: __condvar& operator=(const __condvar&) = delete; +13943: +13943: __gthread_cond_t* native_handle() noexcept { return &_M_cond; } +13943: +13943: +13943: void +13943: wait(mutex& __m) +13943: { +13943: int __e __attribute__((__unused__)) +13943: = __gthread_cond_wait(&_M_cond, __m.native_handle()); +13943: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: void +13943: wait_until(mutex& __m, timespec& __abs_time) +13943: { +13943: __gthread_cond_timedwait(&_M_cond, __m.native_handle(), &__abs_time); +13943: } +13943: +13943: +13943: void +13943: wait_until(mutex& __m, clockid_t __clock, timespec& __abs_time) +13943: { +13943: pthread_cond_clockwait(&_M_cond, __m.native_handle(), __clock, +13943: &__abs_time); +13943: } +13943: +13943: +13943: void +13943: notify_one() noexcept +13943: { +13943: int __e __attribute__((__unused__)) = __gthread_cond_signal(&_M_cond); +13943: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: void +13943: notify_all() noexcept +13943: { +13943: int __e __attribute__((__unused__)) = __gthread_cond_broadcast(&_M_cond); +13943: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: protected: +13943: +13943: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: struct defer_lock_t { explicit defer_lock_t() = default; }; +13943: +13943: +13943: struct try_to_lock_t { explicit try_to_lock_t() = default; }; +13943: +13943: +13943: +13943: struct adopt_lock_t { explicit adopt_lock_t() = default; }; +13943: +13943: +13943: inline constexpr defer_lock_t defer_lock { }; +13943: +13943: +13943: inline constexpr try_to_lock_t try_to_lock { }; +13943: +13943: +13943: inline constexpr adopt_lock_t adopt_lock { }; +13943: # 242 "/usr/include/c++/14/bits/std_mutex.h" 3 +13943: template +13943: class lock_guard +13943: { +13943: public: +13943: typedef _Mutex mutex_type; +13943: +13943: [[__nodiscard__]] +13943: explicit lock_guard(mutex_type& __m) : _M_device(__m) +13943: { _M_device.lock(); } +13943: +13943: [[__nodiscard__]] +13943: lock_guard(mutex_type& __m, adopt_lock_t) noexcept : _M_device(__m) +13943: { } +13943: +13943: ~lock_guard() +13943: { _M_device.unlock(); } +13943: +13943: lock_guard(const lock_guard&) = delete; +13943: lock_guard& operator=(const lock_guard&) = delete; +13943: +13943: private: +13943: mutex_type& _M_device; +13943: }; +13943: +13943: +13943: +13943: } +13943: # 48 "/usr/include/c++/14/mutex" 2 3 +13943: # 1 "/usr/include/c++/14/bits/unique_lock.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/unique_lock.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/unique_lock.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/error_constants.h" 1 3 +13943: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/error_constants.h" 3 +13943: # 1 "/usr/include/c++/14/cerrno" 1 3 +13943: # 39 "/usr/include/c++/14/cerrno" 3 +13943: +13943: # 40 "/usr/include/c++/14/cerrno" 3 +13943: # 35 "/usr/include/arm-linux-gnueabihf/c++/14/bits/error_constants.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: enum class errc +13943: { +13943: address_family_not_supported = 97, +13943: address_in_use = 98, +13943: address_not_available = 99, +13943: already_connected = 106, +13943: argument_list_too_long = 7, +13943: argument_out_of_domain = 33, +13943: bad_address = 14, +13943: bad_file_descriptor = 9, +13943: +13943: +13943: bad_message = 74, +13943: +13943: +13943: broken_pipe = 32, +13943: connection_aborted = 103, +13943: connection_already_in_progress = 114, +13943: connection_refused = 111, +13943: connection_reset = 104, +13943: cross_device_link = 18, +13943: destination_address_required = 89, +13943: device_or_resource_busy = 16, +13943: directory_not_empty = 39, +13943: executable_format_error = 8, +13943: file_exists = 17, +13943: file_too_large = 27, +13943: filename_too_long = 36, +13943: function_not_supported = 38, +13943: host_unreachable = 113, +13943: +13943: +13943: identifier_removed = 43, +13943: +13943: +13943: illegal_byte_sequence = 84, +13943: inappropriate_io_control_operation = 25, +13943: interrupted = 4, +13943: invalid_argument = 22, +13943: invalid_seek = 29, +13943: io_error = 5, +13943: is_a_directory = 21, +13943: message_size = 90, +13943: network_down = 100, +13943: network_reset = 102, +13943: network_unreachable = 101, +13943: no_buffer_space = 105, +13943: no_child_process = 10, +13943: +13943: +13943: no_link = 67, +13943: +13943: +13943: no_lock_available = 37, +13943: +13943: +13943: no_message_available = 61, +13943: +13943: +13943: no_message = 42, +13943: no_protocol_option = 92, +13943: no_space_on_device = 28, +13943: +13943: +13943: no_stream_resources = 63, +13943: +13943: +13943: no_such_device_or_address = 6, +13943: no_such_device = 19, +13943: no_such_file_or_directory = 2, +13943: no_such_process = 3, +13943: not_a_directory = 20, +13943: not_a_socket = 88, +13943: +13943: +13943: not_a_stream = 60, +13943: +13943: +13943: not_connected = 107, +13943: not_enough_memory = 12, +13943: +13943: +13943: not_supported = 95, +13943: +13943: +13943: +13943: operation_canceled = 125, +13943: +13943: +13943: operation_in_progress = 115, +13943: operation_not_permitted = 1, +13943: operation_not_supported = 95, +13943: operation_would_block = 11, +13943: +13943: +13943: owner_dead = 130, +13943: +13943: +13943: permission_denied = 13, +13943: +13943: +13943: protocol_error = 71, +13943: +13943: +13943: protocol_not_supported = 93, +13943: read_only_file_system = 30, +13943: resource_deadlock_would_occur = 35, +13943: resource_unavailable_try_again = 11, +13943: result_out_of_range = 34, +13943: +13943: +13943: state_not_recoverable = 131, +13943: +13943: +13943: +13943: stream_timeout = 62, +13943: +13943: +13943: +13943: text_file_busy = 26, +13943: +13943: +13943: timed_out = 110, +13943: too_many_files_open_in_system = 23, +13943: too_many_files_open = 24, +13943: too_many_links = 31, +13943: too_many_symbolic_link_levels = 40, +13943: +13943: +13943: value_too_large = 75, +13943: +13943: +13943: +13943: +13943: wrong_protocol_type = 91 +13943: }; +13943: +13943: +13943: } +13943: # 41 "/usr/include/c++/14/bits/unique_lock.h" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 59 "/usr/include/c++/14/bits/unique_lock.h" 3 +13943: template +13943: class unique_lock +13943: { +13943: public: +13943: typedef _Mutex mutex_type; +13943: +13943: unique_lock() noexcept +13943: : _M_device(0), _M_owns(false) +13943: { } +13943: +13943: [[__nodiscard__]] +13943: explicit unique_lock(mutex_type& __m) +13943: : _M_device(std::__addressof(__m)), _M_owns(false) +13943: { +13943: lock(); +13943: _M_owns = true; +13943: } +13943: +13943: unique_lock(mutex_type& __m, defer_lock_t) noexcept +13943: : _M_device(std::__addressof(__m)), _M_owns(false) +13943: { } +13943: +13943: [[__nodiscard__]] +13943: unique_lock(mutex_type& __m, try_to_lock_t) +13943: : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock()) +13943: { } +13943: +13943: [[__nodiscard__]] +13943: unique_lock(mutex_type& __m, adopt_lock_t) noexcept +13943: : _M_device(std::__addressof(__m)), _M_owns(true) +13943: { +13943: +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: unique_lock(mutex_type& __m, +13943: const chrono::time_point<_Clock, _Duration>& __atime) +13943: : _M_device(std::__addressof(__m)), +13943: _M_owns(_M_device->try_lock_until(__atime)) +13943: { } +13943: +13943: template +13943: [[__nodiscard__]] +13943: unique_lock(mutex_type& __m, +13943: const chrono::duration<_Rep, _Period>& __rtime) +13943: : _M_device(std::__addressof(__m)), +13943: _M_owns(_M_device->try_lock_for(__rtime)) +13943: { } +13943: +13943: ~unique_lock() +13943: { +13943: if (_M_owns) +13943: unlock(); +13943: } +13943: +13943: unique_lock(const unique_lock&) = delete; +13943: unique_lock& operator=(const unique_lock&) = delete; +13943: +13943: unique_lock(unique_lock&& __u) noexcept +13943: : _M_device(__u._M_device), _M_owns(__u._M_owns) +13943: { +13943: __u._M_device = 0; +13943: __u._M_owns = false; +13943: } +13943: +13943: unique_lock& operator=(unique_lock&& __u) noexcept +13943: { +13943: if(_M_owns) +13943: unlock(); +13943: +13943: unique_lock(std::move(__u)).swap(*this); +13943: +13943: __u._M_device = 0; +13943: __u._M_owns = false; +13943: +13943: return *this; +13943: } +13943: +13943: void +13943: lock() +13943: { +13943: if (!_M_device) +13943: __throw_system_error(int(errc::operation_not_permitted)); +13943: else if (_M_owns) +13943: __throw_system_error(int(errc::resource_deadlock_would_occur)); +13943: else +13943: { +13943: _M_device->lock(); +13943: _M_owns = true; +13943: } +13943: } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: try_lock() +13943: { +13943: if (!_M_device) +13943: __throw_system_error(int(errc::operation_not_permitted)); +13943: else if (_M_owns) +13943: __throw_system_error(int(errc::resource_deadlock_would_occur)); +13943: else +13943: { +13943: _M_owns = _M_device->try_lock(); +13943: return _M_owns; +13943: } +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +13943: { +13943: if (!_M_device) +13943: __throw_system_error(int(errc::operation_not_permitted)); +13943: else if (_M_owns) +13943: __throw_system_error(int(errc::resource_deadlock_would_occur)); +13943: else +13943: { +13943: _M_owns = _M_device->try_lock_until(__atime); +13943: return _M_owns; +13943: } +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +13943: { +13943: if (!_M_device) +13943: __throw_system_error(int(errc::operation_not_permitted)); +13943: else if (_M_owns) +13943: __throw_system_error(int(errc::resource_deadlock_would_occur)); +13943: else +13943: { +13943: _M_owns = _M_device->try_lock_for(__rtime); +13943: return _M_owns; +13943: } +13943: } +13943: +13943: void +13943: unlock() +13943: { +13943: if (!_M_owns) +13943: __throw_system_error(int(errc::operation_not_permitted)); +13943: else if (_M_device) +13943: { +13943: _M_device->unlock(); +13943: _M_owns = false; +13943: } +13943: } +13943: +13943: void +13943: swap(unique_lock& __u) noexcept +13943: { +13943: std::swap(_M_device, __u._M_device); +13943: std::swap(_M_owns, __u._M_owns); +13943: } +13943: +13943: mutex_type* +13943: release() noexcept +13943: { +13943: mutex_type* __ret = _M_device; +13943: _M_device = 0; +13943: _M_owns = false; +13943: return __ret; +13943: } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: owns_lock() const noexcept +13943: { return _M_owns; } +13943: +13943: explicit operator bool() const noexcept +13943: { return owns_lock(); } +13943: +13943: [[__nodiscard__]] +13943: mutex_type* +13943: mutex() const noexcept +13943: { return _M_device; } +13943: +13943: private: +13943: mutex_type* _M_device; +13943: bool _M_owns; +13943: }; +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept +13943: { __x.swap(__y); } +13943: +13943: +13943: } +13943: # 49 "/usr/include/c++/14/mutex" 2 3 +13943: # 60 "/usr/include/c++/14/mutex" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 61 "/usr/include/c++/14/mutex" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 75 "/usr/include/c++/14/mutex" 3 +13943: class __recursive_mutex_base +13943: { +13943: protected: +13943: typedef __gthread_recursive_mutex_t __native_type; +13943: +13943: __recursive_mutex_base(const __recursive_mutex_base&) = delete; +13943: __recursive_mutex_base& operator=(const __recursive_mutex_base&) = delete; +13943: +13943: +13943: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; +13943: +13943: __recursive_mutex_base() = default; +13943: # 99 "/usr/include/c++/14/mutex" 3 +13943: }; +13943: # 111 "/usr/include/c++/14/mutex" 3 +13943: class recursive_mutex : private __recursive_mutex_base +13943: { +13943: public: +13943: typedef __native_type* native_handle_type; +13943: +13943: recursive_mutex() = default; +13943: ~recursive_mutex() = default; +13943: +13943: recursive_mutex(const recursive_mutex&) = delete; +13943: recursive_mutex& operator=(const recursive_mutex&) = delete; +13943: +13943: void +13943: lock() +13943: { +13943: int __e = __gthread_recursive_mutex_lock(&_M_mutex); +13943: +13943: +13943: if (__e) +13943: __throw_system_error(__e); +13943: } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: try_lock() noexcept +13943: { +13943: +13943: return !__gthread_recursive_mutex_trylock(&_M_mutex); +13943: } +13943: +13943: void +13943: unlock() +13943: { +13943: +13943: __gthread_recursive_mutex_unlock(&_M_mutex); +13943: } +13943: +13943: native_handle_type +13943: native_handle() noexcept +13943: { return &_M_mutex; } +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: class __timed_mutex_impl +13943: { +13943: protected: +13943: template +13943: bool +13943: _M_try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +13943: { +13943: +13943: using __clock = chrono::steady_clock; +13943: +13943: +13943: +13943: +13943: auto __rt = chrono::duration_cast<__clock::duration>(__rtime); +13943: if (ratio_greater<__clock::period, _Period>()) +13943: ++__rt; +13943: return _M_try_lock_until(__clock::now() + __rt); +13943: } +13943: +13943: template +13943: bool +13943: _M_try_lock_until(const chrono::time_point& __atime) +13943: { +13943: auto __s = chrono::time_point_cast(__atime); +13943: auto __ns = chrono::duration_cast(__atime - __s); +13943: +13943: __gthread_time_t __ts = { +13943: static_cast(__s.time_since_epoch().count()), +13943: static_cast(__ns.count()) +13943: }; +13943: +13943: return static_cast<_Derived*>(this)->_M_timedlock(__ts); +13943: } +13943: +13943: +13943: template +13943: bool +13943: _M_try_lock_until(const chrono::time_point& __atime) +13943: { +13943: auto __s = chrono::time_point_cast(__atime); +13943: auto __ns = chrono::duration_cast(__atime - __s); +13943: +13943: __gthread_time_t __ts = { +13943: static_cast(__s.time_since_epoch().count()), +13943: static_cast(__ns.count()) +13943: }; +13943: +13943: return static_cast<_Derived*>(this)->_M_clocklock(1, +13943: __ts); +13943: } +13943: +13943: +13943: template +13943: bool +13943: _M_try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: auto __now = _Clock::now(); +13943: do { +13943: auto __rtime = __atime - __now; +13943: if (_M_try_lock_for(__rtime)) +13943: return true; +13943: __now = _Clock::now(); +13943: } while (__atime > __now); +13943: return false; +13943: } +13943: }; +13943: # 240 "/usr/include/c++/14/mutex" 3 +13943: class timed_mutex +13943: : private __mutex_base, public __timed_mutex_impl +13943: { +13943: public: +13943: typedef __native_type* native_handle_type; +13943: +13943: timed_mutex() = default; +13943: ~timed_mutex() = default; +13943: +13943: timed_mutex(const timed_mutex&) = delete; +13943: timed_mutex& operator=(const timed_mutex&) = delete; +13943: +13943: void +13943: lock() +13943: { +13943: int __e = __gthread_mutex_lock(&_M_mutex); +13943: +13943: +13943: if (__e) +13943: __throw_system_error(__e); +13943: } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: try_lock() noexcept +13943: { +13943: +13943: return !__gthread_mutex_trylock(&_M_mutex); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +13943: { return _M_try_lock_for(__rtime); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +13943: { return _M_try_lock_until(__atime); } +13943: +13943: void +13943: unlock() +13943: { +13943: +13943: __gthread_mutex_unlock(&_M_mutex); +13943: } +13943: +13943: native_handle_type +13943: native_handle() noexcept +13943: { return &_M_mutex; } +13943: +13943: private: +13943: friend class __timed_mutex_impl; +13943: +13943: bool +13943: _M_timedlock(const __gthread_time_t& __ts) +13943: { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); } +13943: +13943: +13943: bool +13943: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) +13943: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } +13943: +13943: }; +13943: # 317 "/usr/include/c++/14/mutex" 3 +13943: class recursive_timed_mutex +13943: : private __recursive_mutex_base, +13943: public __timed_mutex_impl +13943: { +13943: public: +13943: typedef __native_type* native_handle_type; +13943: +13943: recursive_timed_mutex() = default; +13943: ~recursive_timed_mutex() = default; +13943: +13943: recursive_timed_mutex(const recursive_timed_mutex&) = delete; +13943: recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete; +13943: +13943: void +13943: lock() +13943: { +13943: int __e = __gthread_recursive_mutex_lock(&_M_mutex); +13943: +13943: +13943: if (__e) +13943: __throw_system_error(__e); +13943: } +13943: +13943: [[__nodiscard__]] +13943: bool +13943: try_lock() noexcept +13943: { +13943: +13943: return !__gthread_recursive_mutex_trylock(&_M_mutex); +13943: } +13943: +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +13943: { return _M_try_lock_for(__rtime); } +13943: +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +13943: { return _M_try_lock_until(__atime); } +13943: +13943: void +13943: unlock() +13943: { +13943: +13943: __gthread_recursive_mutex_unlock(&_M_mutex); +13943: } +13943: +13943: native_handle_type +13943: native_handle() noexcept +13943: { return &_M_mutex; } +13943: +13943: private: +13943: friend class __timed_mutex_impl; +13943: +13943: bool +13943: _M_timedlock(const __gthread_time_t& __ts) +13943: { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); } +13943: +13943: +13943: bool +13943: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) +13943: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } +13943: +13943: }; +13943: # 564 "/usr/include/c++/14/mutex" 3 +13943: namespace __detail +13943: { +13943: +13943: template +13943: inline int +13943: __try_lock_impl(_Lockable& __l) +13943: { +13943: if (unique_lock<_Lockable> __lock{__l, try_to_lock}) +13943: { +13943: __lock.release(); +13943: return -1; +13943: } +13943: else +13943: return 0; +13943: } +13943: +13943: +13943: +13943: template +13943: inline int +13943: __try_lock_impl(_L0& __l0, _Lockables&... __lockables) +13943: { +13943: +13943: if constexpr ((is_same_v<_L0, _Lockables> && ...)) +13943: { +13943: constexpr int _Np = 1 + sizeof...(_Lockables); +13943: unique_lock<_L0> __locks[_Np] = { +13943: {__l0, defer_lock}, {__lockables, defer_lock}... +13943: }; +13943: for (int __i = 0; __i < _Np; ++__i) +13943: { +13943: if (!__locks[__i].try_lock()) +13943: { +13943: const int __failed = __i; +13943: while (__i--) +13943: __locks[__i].unlock(); +13943: return __failed; +13943: } +13943: } +13943: for (auto& __l : __locks) +13943: __l.release(); +13943: return -1; +13943: } +13943: else +13943: +13943: if (unique_lock<_L0> __lock{__l0, try_to_lock}) +13943: { +13943: int __idx = __detail::__try_lock_impl(__lockables...); +13943: if (__idx == -1) +13943: { +13943: __lock.release(); +13943: return -1; +13943: } +13943: return __idx + 1; +13943: } +13943: else +13943: return 0; +13943: } +13943: +13943: } +13943: # 636 "/usr/include/c++/14/mutex" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline int +13943: try_lock(_L1& __l1, _L2& __l2, _L3&... __l3) +13943: { +13943: return __detail::__try_lock_impl(__l1, __l2, __l3...); +13943: } +13943: +13943: +13943: namespace __detail +13943: { +13943: +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: __lock_impl(int& __i, int __depth, _L0& __l0, _L1&... __l1) +13943: { +13943: while (__i >= __depth) +13943: { +13943: if (__i == __depth) +13943: { +13943: int __failed = 1; +13943: { +13943: unique_lock<_L0> __first(__l0); +13943: __failed += __detail::__try_lock_impl(__l1...); +13943: if (!__failed) +13943: { +13943: __i = -1; +13943: __first.release(); +13943: return; +13943: } +13943: } +13943: +13943: __gthread_yield(); +13943: +13943: constexpr auto __n = 1 + sizeof...(_L1); +13943: __i = (__depth + __failed) % __n; +13943: } +13943: else +13943: __detail::__lock_impl(__i, __depth + 1, __l1..., __l0); +13943: } +13943: } +13943: +13943: } +13943: # 696 "/usr/include/c++/14/mutex" 3 +13943: template +13943: void +13943: lock(_L1& __l1, _L2& __l2, _L3&... __l3) +13943: { +13943: +13943: if constexpr (is_same_v<_L1, _L2> && (is_same_v<_L1, _L3> && ...)) +13943: { +13943: constexpr int _Np = 2 + sizeof...(_L3); +13943: unique_lock<_L1> __locks[] = { +13943: {__l1, defer_lock}, {__l2, defer_lock}, {__l3, defer_lock}... +13943: }; +13943: int __first = 0; +13943: do { +13943: __locks[__first].lock(); +13943: for (int __j = 1; __j < _Np; ++__j) +13943: { +13943: const int __idx = (__first + __j) % _Np; +13943: if (!__locks[__idx].try_lock()) +13943: { +13943: for (int __k = __j; __k != 0; --__k) +13943: __locks[(__first + __k - 1) % _Np].unlock(); +13943: __first = __idx; +13943: break; +13943: } +13943: } +13943: } while (!__locks[__first].owns_lock()); +13943: +13943: for (auto& __l : __locks) +13943: __l.release(); +13943: } +13943: else +13943: +13943: { +13943: int __i = 0; +13943: __detail::__lock_impl(__i, 0, __l1, __l2, __l3...); +13943: } +13943: } +13943: # 743 "/usr/include/c++/14/mutex" 3 +13943: template +13943: class scoped_lock +13943: { +13943: public: +13943: +13943: [[nodiscard]] +13943: explicit scoped_lock(_MutexTypes&... __m) : _M_devices(std::tie(__m...)) +13943: { std::lock(__m...); } +13943: +13943: [[nodiscard]] +13943: explicit scoped_lock(adopt_lock_t, _MutexTypes&... __m) noexcept +13943: : _M_devices(std::tie(__m...)) +13943: { } +13943: +13943: ~scoped_lock() +13943: { std::apply([](auto&... __m) { (__m.unlock(), ...); }, _M_devices); } +13943: +13943: scoped_lock(const scoped_lock&) = delete; +13943: scoped_lock& operator=(const scoped_lock&) = delete; +13943: +13943: private: +13943: tuple<_MutexTypes&...> _M_devices; +13943: }; +13943: +13943: template<> +13943: class scoped_lock<> +13943: { +13943: public: +13943: explicit scoped_lock() = default; +13943: explicit scoped_lock(adopt_lock_t) noexcept { } +13943: ~scoped_lock() = default; +13943: +13943: scoped_lock(const scoped_lock&) = delete; +13943: scoped_lock& operator=(const scoped_lock&) = delete; +13943: }; +13943: +13943: template +13943: class scoped_lock<_Mutex> +13943: { +13943: public: +13943: using mutex_type = _Mutex; +13943: +13943: [[nodiscard]] +13943: explicit scoped_lock(mutex_type& __m) : _M_device(__m) +13943: { _M_device.lock(); } +13943: +13943: [[nodiscard]] +13943: explicit scoped_lock(adopt_lock_t, mutex_type& __m) noexcept +13943: : _M_device(__m) +13943: { } +13943: +13943: ~scoped_lock() +13943: { _M_device.unlock(); } +13943: +13943: scoped_lock(const scoped_lock&) = delete; +13943: scoped_lock& operator=(const scoped_lock&) = delete; +13943: +13943: private: +13943: mutex_type& _M_device; +13943: }; +13943: +13943: +13943: +13943: +13943: struct once_flag +13943: { +13943: constexpr once_flag() noexcept = default; +13943: +13943: +13943: once_flag(const once_flag&) = delete; +13943: +13943: once_flag& operator=(const once_flag&) = delete; +13943: +13943: private: +13943: +13943: +13943: __gthread_once_t _M_once = 0; +13943: +13943: struct _Prepare_execution; +13943: +13943: template +13943: friend void +13943: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: extern __thread void* __once_callable; +13943: extern __thread void (*__once_call)(); +13943: +13943: +13943: struct once_flag::_Prepare_execution +13943: { +13943: template +13943: explicit +13943: _Prepare_execution(_Callable& __c) +13943: { +13943: +13943: __once_callable = std::__addressof(__c); +13943: +13943: __once_call = [] { (*static_cast<_Callable*>(__once_callable))(); }; +13943: } +13943: +13943: ~_Prepare_execution() +13943: { +13943: +13943: __once_callable = nullptr; +13943: __once_call = nullptr; +13943: } +13943: +13943: _Prepare_execution(const _Prepare_execution&) = delete; +13943: _Prepare_execution& operator=(const _Prepare_execution&) = delete; +13943: }; +13943: # 900 "/usr/include/c++/14/mutex" 3 +13943: extern "C" void __once_proxy(void); +13943: +13943: +13943: template +13943: void +13943: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args) +13943: { +13943: +13943: auto __callable = [&] { +13943: std::__invoke(std::forward<_Callable>(__f), +13943: std::forward<_Args>(__args)...); +13943: }; +13943: +13943: once_flag::_Prepare_execution __exec(__callable); +13943: +13943: +13943: if (int __e = __gthread_once(&__once._M_once, &__once_proxy)) +13943: __throw_system_error(__e); +13943: } +13943: # 1021 "/usr/include/c++/14/mutex" 3 +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 2 +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: namespace rocksdb { +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: enum Tickers : uint32_t { +13943: +13943: +13943: +13943: +13943: BLOCK_CACHE_MISS = 0, +13943: +13943: +13943: +13943: +13943: BLOCK_CACHE_HIT, +13943: +13943: BLOCK_CACHE_ADD, +13943: +13943: BLOCK_CACHE_ADD_FAILURES, +13943: +13943: BLOCK_CACHE_INDEX_MISS, +13943: +13943: BLOCK_CACHE_INDEX_HIT, +13943: +13943: BLOCK_CACHE_INDEX_ADD, +13943: +13943: BLOCK_CACHE_INDEX_BYTES_INSERT, +13943: +13943: BLOCK_CACHE_FILTER_MISS, +13943: +13943: BLOCK_CACHE_FILTER_HIT, +13943: +13943: BLOCK_CACHE_FILTER_ADD, +13943: +13943: BLOCK_CACHE_FILTER_BYTES_INSERT, +13943: +13943: BLOCK_CACHE_DATA_MISS, +13943: +13943: BLOCK_CACHE_DATA_HIT, +13943: +13943: BLOCK_CACHE_DATA_ADD, +13943: +13943: BLOCK_CACHE_DATA_BYTES_INSERT, +13943: +13943: BLOCK_CACHE_BYTES_READ, +13943: +13943: BLOCK_CACHE_BYTES_WRITE, +13943: +13943: BLOCK_CACHE_COMPRESSION_DICT_MISS, +13943: BLOCK_CACHE_COMPRESSION_DICT_HIT, +13943: BLOCK_CACHE_COMPRESSION_DICT_ADD, +13943: BLOCK_CACHE_COMPRESSION_DICT_BYTES_INSERT, +13943: +13943: +13943: +13943: BLOCK_CACHE_ADD_REDUNDANT, +13943: +13943: +13943: BLOCK_CACHE_INDEX_ADD_REDUNDANT, +13943: +13943: +13943: BLOCK_CACHE_FILTER_ADD_REDUNDANT, +13943: +13943: +13943: BLOCK_CACHE_DATA_ADD_REDUNDANT, +13943: +13943: +13943: +13943: BLOCK_CACHE_COMPRESSION_DICT_ADD_REDUNDANT, +13943: +13943: +13943: SECONDARY_CACHE_HITS, +13943: +13943: +13943: SECONDARY_CACHE_FILTER_HITS, +13943: SECONDARY_CACHE_INDEX_HITS, +13943: SECONDARY_CACHE_DATA_HITS, +13943: +13943: +13943: COMPRESSED_SECONDARY_CACHE_DUMMY_HITS, +13943: COMPRESSED_SECONDARY_CACHE_HITS, +13943: COMPRESSED_SECONDARY_CACHE_PROMOTIONS, +13943: COMPRESSED_SECONDARY_CACHE_PROMOTION_SKIPS, +13943: +13943: +13943: BLOOM_FILTER_USEFUL, +13943: +13943: BLOOM_FILTER_FULL_POSITIVE, +13943: +13943: +13943: BLOOM_FILTER_FULL_TRUE_POSITIVE, +13943: +13943: +13943: +13943: BLOOM_FILTER_PREFIX_CHECKED, +13943: +13943: BLOOM_FILTER_PREFIX_USEFUL, +13943: +13943: +13943: +13943: BLOOM_FILTER_PREFIX_TRUE_POSITIVE, +13943: +13943: +13943: PERSISTENT_CACHE_HIT, +13943: +13943: PERSISTENT_CACHE_MISS, +13943: +13943: +13943: SIM_BLOCK_CACHE_HIT, +13943: +13943: SIM_BLOCK_CACHE_MISS, +13943: +13943: +13943: MEMTABLE_HIT, +13943: +13943: MEMTABLE_MISS, +13943: +13943: +13943: GET_HIT_L0, +13943: +13943: GET_HIT_L1, +13943: +13943: GET_HIT_L2_AND_UP, +13943: +13943: +13943: +13943: +13943: +13943: COMPACTION_KEY_DROP_NEWER_ENTRY, +13943: +13943: COMPACTION_KEY_DROP_OBSOLETE, +13943: COMPACTION_KEY_DROP_RANGE_DEL, +13943: COMPACTION_KEY_DROP_USER, +13943: COMPACTION_RANGE_DEL_DROP_OBSOLETE, +13943: +13943: COMPACTION_OPTIMIZED_DEL_DROP_OBSOLETE, +13943: +13943: COMPACTION_CANCELLED, +13943: +13943: +13943: NUMBER_KEYS_WRITTEN, +13943: +13943: NUMBER_KEYS_READ, +13943: +13943: NUMBER_KEYS_UPDATED, +13943: +13943: +13943: BYTES_WRITTEN, +13943: +13943: +13943: +13943: +13943: BYTES_READ, +13943: +13943: NUMBER_DB_SEEK, +13943: NUMBER_DB_NEXT, +13943: NUMBER_DB_PREV, +13943: +13943: NUMBER_DB_SEEK_FOUND, +13943: NUMBER_DB_NEXT_FOUND, +13943: NUMBER_DB_PREV_FOUND, +13943: +13943: +13943: ITER_BYTES_READ, +13943: +13943: NUMBER_ITER_SKIP, +13943: +13943: +13943: NUMBER_OF_RESEEKS_IN_ITERATION, +13943: +13943: NO_ITERATOR_CREATED, +13943: NO_ITERATOR_DELETED, +13943: +13943: NO_FILE_OPENS, +13943: NO_FILE_ERRORS, +13943: +13943: STALL_MICROS, +13943: +13943: +13943: DB_MUTEX_WAIT_MICROS, +13943: +13943: +13943: NUMBER_MULTIGET_CALLS, +13943: NUMBER_MULTIGET_KEYS_READ, +13943: NUMBER_MULTIGET_BYTES_READ, +13943: +13943: +13943: +13943: NUMBER_MULTIGET_KEYS_FOUND, +13943: +13943: NUMBER_MERGE_FAILURES, +13943: +13943: +13943: +13943: GET_UPDATES_SINCE_CALLS, +13943: WAL_FILE_SYNCED, +13943: WAL_FILE_BYTES, +13943: +13943: +13943: +13943: WRITE_DONE_BY_SELF, +13943: WRITE_DONE_BY_OTHER, +13943: WRITE_WITH_WAL, +13943: COMPACT_READ_BYTES, +13943: COMPACT_WRITE_BYTES, +13943: FLUSH_WRITE_BYTES, +13943: +13943: +13943: COMPACT_READ_BYTES_MARKED, +13943: COMPACT_READ_BYTES_PERIODIC, +13943: COMPACT_READ_BYTES_TTL, +13943: COMPACT_WRITE_BYTES_MARKED, +13943: COMPACT_WRITE_BYTES_PERIODIC, +13943: COMPACT_WRITE_BYTES_TTL, +13943: +13943: +13943: +13943: NUMBER_DIRECT_LOAD_TABLE_PROPERTIES, +13943: NUMBER_SUPERVERSION_ACQUIRES, +13943: NUMBER_SUPERVERSION_RELEASES, +13943: NUMBER_SUPERVERSION_CLEANUPS, +13943: +13943: +13943: NUMBER_BLOCK_COMPRESSED, +13943: NUMBER_BLOCK_DECOMPRESSED, +13943: +13943: +13943: +13943: BYTES_COMPRESSED_FROM, +13943: +13943: +13943: BYTES_COMPRESSED_TO, +13943: +13943: +13943: +13943: +13943: BYTES_COMPRESSION_BYPASSED, +13943: +13943: +13943: +13943: +13943: +13943: BYTES_COMPRESSION_REJECTED, +13943: +13943: +13943: NUMBER_BLOCK_COMPRESSION_BYPASSED, +13943: +13943: NUMBER_BLOCK_COMPRESSION_REJECTED, +13943: +13943: +13943: +13943: BYTES_DECOMPRESSED_FROM, +13943: +13943: +13943: BYTES_DECOMPRESSED_TO, +13943: +13943: +13943: MERGE_OPERATION_TOTAL_TIME, +13943: FILTER_OPERATION_TOTAL_TIME, +13943: COMPACTION_CPU_TOTAL_TIME, +13943: +13943: +13943: ROW_CACHE_HIT, +13943: ROW_CACHE_MISS, +13943: +13943: +13943: +13943: +13943: +13943: +13943: READ_AMP_ESTIMATE_USEFUL_BYTES, +13943: READ_AMP_TOTAL_READ_BYTES, +13943: +13943: +13943: NUMBER_RATE_LIMITER_DRAINS, +13943: +13943: +13943: +13943: BLOB_DB_NUM_PUT, +13943: +13943: BLOB_DB_NUM_WRITE, +13943: +13943: BLOB_DB_NUM_GET, +13943: +13943: BLOB_DB_NUM_MULTIGET, +13943: +13943: +13943: BLOB_DB_NUM_SEEK, +13943: +13943: BLOB_DB_NUM_NEXT, +13943: +13943: BLOB_DB_NUM_PREV, +13943: +13943: BLOB_DB_NUM_KEYS_WRITTEN, +13943: +13943: BLOB_DB_NUM_KEYS_READ, +13943: +13943: +13943: BLOB_DB_BYTES_WRITTEN, +13943: +13943: +13943: BLOB_DB_BYTES_READ, +13943: +13943: +13943: BLOB_DB_WRITE_INLINED, +13943: +13943: +13943: BLOB_DB_WRITE_INLINED_TTL, +13943: +13943: +13943: BLOB_DB_WRITE_BLOB, +13943: +13943: +13943: BLOB_DB_WRITE_BLOB_TTL, +13943: +13943: BLOB_DB_BLOB_FILE_BYTES_WRITTEN, +13943: +13943: BLOB_DB_BLOB_FILE_BYTES_READ, +13943: +13943: BLOB_DB_BLOB_FILE_SYNCED, +13943: +13943: +13943: BLOB_DB_BLOB_INDEX_EXPIRED_COUNT, +13943: +13943: +13943: BLOB_DB_BLOB_INDEX_EXPIRED_SIZE, +13943: +13943: +13943: BLOB_DB_BLOB_INDEX_EVICTED_COUNT, +13943: +13943: +13943: BLOB_DB_BLOB_INDEX_EVICTED_SIZE, +13943: +13943: +13943: BLOB_DB_GC_NUM_FILES, +13943: +13943: +13943: BLOB_DB_GC_NUM_NEW_FILES, +13943: +13943: BLOB_DB_GC_FAILURES, +13943: +13943: BLOB_DB_GC_NUM_KEYS_RELOCATED, +13943: +13943: BLOB_DB_GC_BYTES_RELOCATED, +13943: +13943: +13943: BLOB_DB_FIFO_NUM_FILES_EVICTED, +13943: +13943: +13943: BLOB_DB_FIFO_NUM_KEYS_EVICTED, +13943: +13943: +13943: BLOB_DB_FIFO_BYTES_EVICTED, +13943: +13943: +13943: +13943: BLOB_DB_CACHE_MISS, +13943: +13943: BLOB_DB_CACHE_HIT, +13943: +13943: BLOB_DB_CACHE_ADD, +13943: +13943: BLOB_DB_CACHE_ADD_FAILURES, +13943: +13943: BLOB_DB_CACHE_BYTES_READ, +13943: +13943: BLOB_DB_CACHE_BYTES_WRITE, +13943: +13943: +13943: +13943: +13943: TXN_PREPARE_MUTEX_OVERHEAD, +13943: +13943: TXN_OLD_COMMIT_MAP_MUTEX_OVERHEAD, +13943: +13943: TXN_DUPLICATE_KEY_OVERHEAD, +13943: +13943: TXN_SNAPSHOT_MUTEX_OVERHEAD, +13943: +13943: TXN_GET_TRY_AGAIN, +13943: +13943: +13943: +13943: FILES_MARKED_TRASH, +13943: +13943: FILES_DELETED_FROM_TRASH_QUEUE, +13943: +13943: +13943: FILES_DELETED_IMMEDIATELY, +13943: +13943: +13943: +13943: ERROR_HANDLER_BG_ERROR_COUNT, +13943: ERROR_HANDLER_BG_IO_ERROR_COUNT, +13943: ERROR_HANDLER_BG_RETRYABLE_IO_ERROR_COUNT, +13943: ERROR_HANDLER_AUTORESUME_COUNT, +13943: ERROR_HANDLER_AUTORESUME_RETRY_TOTAL_COUNT, +13943: ERROR_HANDLER_AUTORESUME_SUCCESS_COUNT, +13943: +13943: +13943: +13943: MEMTABLE_PAYLOAD_BYTES_AT_FLUSH, +13943: +13943: MEMTABLE_GARBAGE_BYTES_AT_FLUSH, +13943: +13943: +13943: VERIFY_CHECKSUM_READ_BYTES, +13943: +13943: +13943: BACKUP_READ_BYTES, +13943: BACKUP_WRITE_BYTES, +13943: +13943: +13943: REMOTE_COMPACT_READ_BYTES, +13943: REMOTE_COMPACT_WRITE_BYTES, +13943: +13943: +13943: HOT_FILE_READ_BYTES, +13943: WARM_FILE_READ_BYTES, +13943: COLD_FILE_READ_BYTES, +13943: HOT_FILE_READ_COUNT, +13943: WARM_FILE_READ_COUNT, +13943: COLD_FILE_READ_COUNT, +13943: +13943: +13943: LAST_LEVEL_READ_BYTES, +13943: LAST_LEVEL_READ_COUNT, +13943: NON_LAST_LEVEL_READ_BYTES, +13943: NON_LAST_LEVEL_READ_COUNT, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: LAST_LEVEL_SEEK_FILTERED, +13943: +13943: +13943: LAST_LEVEL_SEEK_FILTER_MATCH, +13943: +13943: +13943: LAST_LEVEL_SEEK_DATA, +13943: +13943: +13943: LAST_LEVEL_SEEK_DATA_USEFUL_NO_FILTER, +13943: +13943: +13943: LAST_LEVEL_SEEK_DATA_USEFUL_FILTER_MATCH, +13943: +13943: NON_LAST_LEVEL_SEEK_FILTERED, +13943: NON_LAST_LEVEL_SEEK_FILTER_MATCH, +13943: NON_LAST_LEVEL_SEEK_DATA, +13943: NON_LAST_LEVEL_SEEK_DATA_USEFUL_NO_FILTER, +13943: NON_LAST_LEVEL_SEEK_DATA_USEFUL_FILTER_MATCH, +13943: +13943: +13943: BLOCK_CHECKSUM_COMPUTE_COUNT, +13943: +13943: +13943: +13943: BLOCK_CHECKSUM_MISMATCH_COUNT, +13943: +13943: MULTIGET_COROUTINE_COUNT, +13943: +13943: +13943: READ_ASYNC_MICROS, +13943: +13943: ASYNC_READ_ERROR_COUNT, +13943: +13943: +13943: +13943: +13943: TABLE_OPEN_PREFETCH_TAIL_MISS, +13943: +13943: +13943: +13943: TABLE_OPEN_PREFETCH_TAIL_HIT, +13943: +13943: +13943: +13943: TIMESTAMP_FILTER_TABLE_CHECKED, +13943: +13943: TIMESTAMP_FILTER_TABLE_FILTERED, +13943: +13943: +13943: +13943: READAHEAD_TRIMMED, +13943: +13943: +13943: FIFO_MAX_SIZE_COMPACTIONS, +13943: FIFO_TTL_COMPACTIONS, +13943: +13943: +13943: PREFETCH_BYTES, +13943: +13943: +13943: PREFETCH_BYTES_USEFUL, +13943: +13943: +13943: PREFETCH_HITS, +13943: +13943: +13943: SST_FOOTER_CORRUPTION_COUNT, +13943: +13943: +13943: +13943: FILE_READ_CORRUPTION_RETRY_COUNT, +13943: FILE_READ_CORRUPTION_RETRY_SUCCESS_COUNT, +13943: +13943: TICKER_ENUM_MAX +13943: }; +13943: +13943: +13943: +13943: extern const std::vector> TickersNameMap; +13943: # 555 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: enum Histograms : uint32_t { +13943: DB_GET = 0, +13943: DB_WRITE, +13943: COMPACTION_TIME, +13943: COMPACTION_CPU_TIME, +13943: SUBCOMPACTION_SETUP_TIME, +13943: TABLE_SYNC_MICROS, +13943: COMPACTION_OUTFILE_SYNC_MICROS, +13943: WAL_FILE_SYNC_MICROS, +13943: MANIFEST_FILE_SYNC_MICROS, +13943: +13943: TABLE_OPEN_IO_MICROS, +13943: DB_MULTIGET, +13943: READ_BLOCK_COMPACTION_MICROS, +13943: READ_BLOCK_GET_MICROS, +13943: WRITE_RAW_BLOCK_MICROS, +13943: NUM_FILES_IN_SINGLE_COMPACTION, +13943: DB_SEEK, +13943: WRITE_STALL, +13943: +13943: SST_READ_MICROS, +13943: +13943: +13943: FILE_READ_FLUSH_MICROS, +13943: FILE_READ_COMPACTION_MICROS, +13943: FILE_READ_DB_OPEN_MICROS, +13943: +13943: +13943: FILE_READ_GET_MICROS, +13943: FILE_READ_MULTIGET_MICROS, +13943: FILE_READ_DB_ITERATOR_MICROS, +13943: FILE_READ_VERIFY_DB_CHECKSUM_MICROS, +13943: FILE_READ_VERIFY_FILE_CHECKSUMS_MICROS, +13943: +13943: +13943: SST_WRITE_MICROS, +13943: +13943: +13943: FILE_WRITE_FLUSH_MICROS, +13943: FILE_WRITE_COMPACTION_MICROS, +13943: FILE_WRITE_DB_OPEN_MICROS, +13943: +13943: +13943: NUM_SUBCOMPACTIONS_SCHEDULED, +13943: +13943: BYTES_PER_READ, +13943: BYTES_PER_WRITE, +13943: BYTES_PER_MULTIGET, +13943: +13943: COMPRESSION_TIMES_NANOS, +13943: DECOMPRESSION_TIMES_NANOS, +13943: +13943: +13943: READ_NUM_MERGE_OPERANDS, +13943: +13943: +13943: +13943: BLOB_DB_KEY_SIZE, +13943: +13943: BLOB_DB_VALUE_SIZE, +13943: +13943: +13943: BLOB_DB_WRITE_MICROS, +13943: +13943: BLOB_DB_GET_MICROS, +13943: +13943: BLOB_DB_MULTIGET_MICROS, +13943: +13943: +13943: BLOB_DB_SEEK_MICROS, +13943: +13943: BLOB_DB_NEXT_MICROS, +13943: +13943: BLOB_DB_PREV_MICROS, +13943: +13943: BLOB_DB_BLOB_FILE_WRITE_MICROS, +13943: +13943: BLOB_DB_BLOB_FILE_READ_MICROS, +13943: +13943: BLOB_DB_BLOB_FILE_SYNC_MICROS, +13943: +13943: BLOB_DB_COMPRESSION_MICROS, +13943: +13943: BLOB_DB_DECOMPRESSION_MICROS, +13943: +13943: FLUSH_TIME, +13943: SST_BATCH_SIZE, +13943: +13943: +13943: MULTIGET_IO_BATCH_SIZE, +13943: +13943: +13943: NUM_INDEX_AND_FILTER_BLOCKS_READ_PER_LEVEL, +13943: +13943: NUM_SST_READ_PER_LEVEL, +13943: +13943: NUM_LEVEL_READ_PER_MULTIGET, +13943: +13943: +13943: ERROR_HANDLER_AUTORESUME_RETRY_COUNT, +13943: +13943: +13943: ASYNC_READ_BYTES, +13943: POLL_WAIT_MICROS, +13943: +13943: +13943: PREFETCHED_BYTES_DISCARDED, +13943: +13943: +13943: ASYNC_PREFETCH_ABORT_MICROS, +13943: +13943: +13943: +13943: TABLE_OPEN_PREFETCH_TAIL_READ_BYTES, +13943: +13943: HISTOGRAM_ENUM_MAX +13943: }; +13943: +13943: extern const std::vector> HistogramsNameMap; +13943: +13943: struct HistogramData { +13943: double median; +13943: double percentile95; +13943: double percentile99; +13943: double average; +13943: double standard_deviation; +13943: +13943: +13943: double max = 0.0; +13943: uint64_t count = 0; +13943: uint64_t sum = 0; +13943: double min = 0.0; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: enum StatsLevel : uint8_t { +13943: +13943: kDisableAll, +13943: +13943: kExceptTickers = kDisableAll, +13943: +13943: kExceptHistogramOrTimers, +13943: +13943: kExceptTimers, +13943: +13943: +13943: kExceptDetailedTimers, +13943: +13943: +13943: kExceptTimeForMutex, +13943: +13943: +13943: +13943: kAll, +13943: }; +13943: # 727 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: class Statistics : public Customizable { +13943: public: +13943: ~Statistics() override {} +13943: static const char* Type() { return "Statistics"; } +13943: static Status CreateFromString(const ConfigOptions& opts, +13943: const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: +13943: +13943: const char* Name() const override { return ""; } +13943: virtual uint64_t getTickerCount(uint32_t tickerType) const = 0; +13943: virtual void histogramData(uint32_t type, +13943: HistogramData* const data) const = 0; +13943: virtual std::string getHistogramString(uint32_t ) const { return ""; } +13943: virtual void recordTick(uint32_t tickerType, uint64_t count = 1) = 0; +13943: virtual void setTickerCount(uint32_t tickerType, uint64_t count) = 0; +13943: virtual uint64_t getAndResetTickerCount(uint32_t tickerType) = 0; +13943: virtual void reportTimeToHistogram(uint32_t histogramType, uint64_t time) { +13943: if (get_stats_level() <= StatsLevel::kExceptTimers) { +13943: return; +13943: } +13943: recordInHistogram(histogramType, time); +13943: } +13943: +13943: +13943: +13943: virtual void measureTime(uint32_t , uint64_t ) { +13943: +13943: +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 3 4 +13943: (static_cast ( +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: false +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: "false" +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +13943: ; +13943: } +13943: virtual void recordInHistogram(uint32_t histogramType, uint64_t time) { +13943: +13943: +13943: +13943: +13943: measureTime(histogramType, time); +13943: } +13943: +13943: +13943: virtual Status Reset() { return Status::NotSupported("Not implemented"); } +13943: +13943: using Customizable::ToString; +13943: +13943: virtual std::string ToString() const { +13943: +13943: return std::string("ToString(): not implemented"); +13943: } +13943: +13943: virtual bool getTickerMap(std::map*) const { +13943: +13943: return false; +13943: } +13943: +13943: +13943: virtual bool HistEnabledForType(uint32_t type) const { +13943: return type < HISTOGRAM_ENUM_MAX; +13943: } +13943: void set_stats_level(StatsLevel sl) { +13943: stats_level_.store(sl, std::memory_order_relaxed); +13943: } +13943: StatsLevel get_stats_level() const { +13943: return stats_level_.load(std::memory_order_relaxed); +13943: } +13943: +13943: private: +13943: std::atomic stats_level_{kExceptDetailedTimers}; +13943: }; +13943: +13943: +13943: std::shared_ptr CreateDBStatistics(); +13943: +13943: } +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class HistogramBucketMapper { +13943: public: +13943: HistogramBucketMapper(); +13943: +13943: +13943: size_t IndexForValue(uint64_t value) const; +13943: +13943: +13943: size_t BucketCount() const { return bucketValues_.size(); } +13943: +13943: uint64_t LastValue() const { return maxBucketValue_; } +13943: +13943: uint64_t FirstValue() const { return minBucketValue_; } +13943: +13943: uint64_t BucketLimit(const size_t bucketNumber) const { +13943: +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 3 4 +13943: (static_cast ( +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +13943: bucketNumber < BucketCount() +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +13943: "bucketNumber < BucketCount()" +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +13943: ; +13943: return bucketValues_[bucketNumber]; +13943: } +13943: +13943: private: +13943: std::vector bucketValues_; +13943: uint64_t maxBucketValue_; +13943: uint64_t minBucketValue_; +13943: }; +13943: +13943: struct HistogramStat { +13943: HistogramStat(); +13943: ~HistogramStat() {} +13943: +13943: HistogramStat(const HistogramStat&) = delete; +13943: HistogramStat& operator=(const HistogramStat&) = delete; +13943: +13943: void Clear(); +13943: bool Empty() const; +13943: void Add(uint64_t value); +13943: void Merge(const HistogramStat& other); +13943: +13943: inline uint64_t min() const { return min_.load(std::memory_order_relaxed); } +13943: inline uint64_t max() const { return max_.load(std::memory_order_relaxed); } +13943: inline uint64_t num() const { return num_.load(std::memory_order_relaxed); } +13943: inline uint64_t sum() const { return sum_.load(std::memory_order_relaxed); } +13943: inline uint64_t sum_squares() const { +13943: return sum_squares_.load(std::memory_order_relaxed); +13943: } +13943: inline uint64_t bucket_at(size_t b) const { +13943: return buckets_[b].load(std::memory_order_relaxed); +13943: } +13943: +13943: double Median() const; +13943: double Percentile(double p) const; +13943: double Average() const; +13943: double StandardDeviation() const; +13943: void Data(HistogramData* const data) const; +13943: std::string ToString() const; +13943: +13943: +13943: +13943: +13943: std::atomic_uint_fast64_t min_; +13943: std::atomic_uint_fast64_t max_; +13943: std::atomic_uint_fast64_t num_; +13943: std::atomic_uint_fast64_t sum_; +13943: std::atomic_uint_fast64_t sum_squares_; +13943: std::atomic_uint_fast64_t buckets_[109]; +13943: const uint64_t num_buckets_; +13943: }; +13943: +13943: class Histogram { +13943: public: +13943: Histogram() {} +13943: virtual ~Histogram(){} +13943: +13943: virtual void Clear() = 0; +13943: virtual bool Empty() const = 0; +13943: virtual void Add(uint64_t value) = 0; +13943: virtual void Merge(const Histogram&) = 0; +13943: +13943: virtual std::string ToString() const = 0; +13943: virtual const char* Name() const = 0; +13943: virtual uint64_t min() const = 0; +13943: virtual uint64_t max() const = 0; +13943: virtual uint64_t num() const = 0; +13943: virtual double Median() const = 0; +13943: virtual double Percentile(double p) const = 0; +13943: virtual double Average() const = 0; +13943: virtual double StandardDeviation() const = 0; +13943: virtual void Data(HistogramData* const data) const = 0; +13943: }; +13943: +13943: class HistogramImpl : public Histogram { +13943: public: +13943: HistogramImpl() { Clear(); } +13943: +13943: HistogramImpl(const HistogramImpl&) = delete; +13943: HistogramImpl& operator=(const HistogramImpl&) = delete; +13943: +13943: void Clear() override; +13943: bool Empty() const override; +13943: void Add(uint64_t value) override; +13943: void Merge(const Histogram& other) override; +13943: void Merge(const HistogramImpl& other); +13943: +13943: std::string ToString() const override; +13943: const char* Name() const override { return "HistogramImpl"; } +13943: uint64_t min() const override { return stats_.min(); } +13943: uint64_t max() const override { return stats_.max(); } +13943: uint64_t num() const override { return stats_.num(); } +13943: double Median() const override; +13943: double Percentile(double p) const override; +13943: double Average() const override; +13943: double StandardDeviation() const override; +13943: void Data(HistogramData* const data) const override; +13943: +13943: virtual ~HistogramImpl() {} +13943: +13943: inline HistogramStat& TEST_GetStats() { return stats_; } +13943: +13943: private: +13943: HistogramStat stats_; +13943: std::mutex mutex_; +13943: }; +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/likely.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/port/likely.h" +13943: +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 2 +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/lang.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/port/lang.h" +13943: constexpr bool kMustFreeHeapAllocations = false; +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 2 +13943: +13943: +13943: static_assert(true, "Semicolon required"); +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: template +13943: inline T BottomNBits(T v, int nbits) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: (static_cast ( +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: nbits >= 0 +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: "nbits >= 0" +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: ; +13943: +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: (static_cast ( +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: nbits < int{8 * sizeof(T)} +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: "nbits < int{8 * sizeof(T)}" +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: ; +13943: # 44 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: return static_cast(v & ((T{1} << nbits) - 1)); +13943: } +13943: +13943: +13943: +13943: template +13943: inline int FloorLog2(T v) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: (static_cast ( +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: v > 0 +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: "v > 0" +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: ; +13943: # 74 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +13943: if (sizeof(T) <= sizeof(unsigned int)) { +13943: int lz = __builtin_clz(static_cast(v)); +13943: return int{sizeof(unsigned int)} * 8 - 1 - lz; +13943: } else if (sizeof(T) <= sizeof(unsigned long)) { +13943: int lz = __builtin_clzl(static_cast(v)); +13943: return int{sizeof(unsigned long)} * 8 - 1 - lz; +13943: } else { +13943: int lz = __builtin_clzll(static_cast(v)); +13943: return int{sizeof(unsigned long long)} * 8 - 1 - lz; +13943: } +13943: +13943: } +13943: +13943: +13943: template +13943: constexpr int ConstexprFloorLog2(T v) { +13943: +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: int rv = 0; +13943: while (v > T{1}) { +13943: ++rv; +13943: v >>= 1; +13943: } +13943: return rv; +13943: } +13943: +13943: +13943: template +13943: inline int CountTrailingZeroBits(T v) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: +13943: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: (static_cast ( +13943: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: v != 0 +13943: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: "v != 0" +13943: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: ; +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +13943: if (sizeof(T) <= sizeof(unsigned int)) { +13943: return __builtin_ctz(static_cast(v)); +13943: } else if (sizeof(T) <= sizeof(unsigned long)) { +13943: return __builtin_ctzl(static_cast(v)); +13943: } else { +13943: return __builtin_ctzll(static_cast(v)); +13943: } +13943: +13943: } +13943: # 172 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: template +13943: inline int BitsSetToOne(T v) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: # 209 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +13943: if (sizeof(T) < sizeof(unsigned int)) { +13943: +13943: constexpr auto mm = 8 * sizeof(unsigned int) - 1; +13943: +13943: constexpr unsigned int m = (1U << ((8 * sizeof(T)) & mm)) - 1; +13943: return __builtin_popcount(static_cast(v) & m); +13943: } else if (sizeof(T) == sizeof(unsigned int)) { +13943: return __builtin_popcount(static_cast(v)); +13943: } else if (sizeof(T) <= sizeof(unsigned long)) { +13943: return __builtin_popcountl(static_cast(v)); +13943: } else { +13943: return __builtin_popcountll(static_cast(v)); +13943: } +13943: +13943: } +13943: +13943: template +13943: inline int BitParity(T v) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: +13943: +13943: +13943: +13943: +13943: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +13943: if (sizeof(T) <= sizeof(unsigned int)) { +13943: +13943: return __builtin_parity(static_cast(v)); +13943: } else if (sizeof(T) <= sizeof(unsigned long)) { +13943: return __builtin_parityl(static_cast(v)); +13943: } else { +13943: return __builtin_parityll(static_cast(v)); +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: inline T EndianSwapValue(T v) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: if (sizeof(T) == 2) { +13943: return static_cast(__builtin_bswap16(static_cast(v))); +13943: } else if (sizeof(T) == 4) { +13943: return static_cast(__builtin_bswap32(static_cast(v))); +13943: } else if (sizeof(T) == 8) { +13943: return static_cast(__builtin_bswap64(static_cast(v))); +13943: } +13943: +13943: +13943: T ret_val = 0; +13943: for (std::size_t i = 0; i < sizeof(T); ++i) { +13943: ret_val |= ((v >> (8 * i)) & 0xff) << (8 * (sizeof(T) - 1 - i)); +13943: } +13943: return ret_val; +13943: } +13943: +13943: +13943: template +13943: inline T ReverseBits(T v) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: +13943: T r = EndianSwapValue(v); +13943: const T kHighestByte = T{1} << ((sizeof(T) - 1) * 8); +13943: const T kEveryByte = kHighestByte | (kHighestByte / 255); +13943: +13943: r = ((r & (kEveryByte * 0x0f)) << 4) | ((r >> 4) & (kEveryByte * 0x0f)); +13943: r = ((r & (kEveryByte * 0x33)) << 2) | ((r >> 2) & (kEveryByte * 0x33)); +13943: r = ((r & (kEveryByte * 0x55)) << 1) | ((r >> 1) & (kEveryByte * 0x55)); +13943: +13943: return r; +13943: } +13943: # 317 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +13943: template +13943: inline T DownwardInvolution(T v) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: static_assert(sizeof(T) <= 8, "only supported up to 64 bits"); +13943: +13943: uint64_t r = static_cast(v); +13943: if constexpr (sizeof(T) > 4) { +13943: r ^= r >> 32; +13943: } +13943: if constexpr (sizeof(T) > 2) { +13943: r ^= (r & 0xffff0000ffff0000U) >> 16; +13943: } +13943: if constexpr (sizeof(T) > 1) { +13943: r ^= (r & 0xff00ff00ff00ff00U) >> 8; +13943: } +13943: r ^= (r & 0xf0f0f0f0f0f0f0f0U) >> 4; +13943: r ^= (r & 0xccccccccccccccccU) >> 2; +13943: r ^= (r & 0xaaaaaaaaaaaaaaaaU) >> 1; +13943: return static_cast(r); +13943: } +13943: +13943: +13943: +13943: template +13943: inline std::conditional_t BitwiseAnd(A a, B b) { +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(std::is_integral_v, "non-integral type"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +13943: using Smaller = std::conditional_t; +13943: return static_cast(a & b); +13943: } +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/random" 1 3 +13943: # 32 "/usr/include/c++/14/random" 3 +13943: +13943: # 33 "/usr/include/c++/14/random" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cmath" 1 3 +13943: # 39 "/usr/include/c++/14/cmath" 3 +13943: +13943: # 40 "/usr/include/c++/14/cmath" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/math.h" 1 3 4 +13943: # 27 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +13943: # 28 "/usr/include/math.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 34 "/usr/include/math.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libm-simd-decl-stubs.h" 1 3 4 +13943: # 28 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 2 3 4 +13943: # 41 "/usr/include/math.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +13943: # 44 "/usr/include/math.h" 2 3 4 +13943: # 152 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/flt-eval-method.h" 1 3 4 +13943: # 153 "/usr/include/math.h" 2 3 4 +13943: # 163 "/usr/include/math.h" 3 4 +13943: typedef float float_t; +13943: typedef double double_t; +13943: # 204 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-logb.h" 1 3 4 +13943: # 205 "/usr/include/math.h" 2 3 4 +13943: # 247 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-fast.h" 1 3 4 +13943: # 248 "/usr/include/math.h" 2 3 4 +13943: +13943: +13943: +13943: enum +13943: { +13943: FP_INT_UPWARD = +13943: +13943: 0, +13943: FP_INT_DOWNWARD = +13943: +13943: 1, +13943: FP_INT_TOWARDZERO = +13943: +13943: 2, +13943: FP_INT_TONEARESTFROMZERO = +13943: +13943: 3, +13943: FP_INT_TONEAREST = +13943: +13943: 4, +13943: }; +13943: # 312 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 +13943: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 +13943: extern int __fpclassify (double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __signbit (double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern int __isinf (double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __finite (double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __isnan (double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __iseqsig (double __x, double __y) noexcept (true); +13943: +13943: +13943: extern int __issignaling (double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: # 313 "/usr/include/math.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +13943: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern double acos (double __x) noexcept (true); extern double __acos (double __x) noexcept (true); +13943: +13943: extern double asin (double __x) noexcept (true); extern double __asin (double __x) noexcept (true); +13943: +13943: extern double atan (double __x) noexcept (true); extern double __atan (double __x) noexcept (true); +13943: +13943: extern double atan2 (double __y, double __x) noexcept (true); extern double __atan2 (double __y, double __x) noexcept (true); +13943: +13943: +13943: extern double cos (double __x) noexcept (true); extern double __cos (double __x) noexcept (true); +13943: +13943: extern double sin (double __x) noexcept (true); extern double __sin (double __x) noexcept (true); +13943: +13943: extern double tan (double __x) noexcept (true); extern double __tan (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double cosh (double __x) noexcept (true); extern double __cosh (double __x) noexcept (true); +13943: +13943: extern double sinh (double __x) noexcept (true); extern double __sinh (double __x) noexcept (true); +13943: +13943: extern double tanh (double __x) noexcept (true); extern double __tanh (double __x) noexcept (true); +13943: +13943: +13943: +13943: extern void sincos (double __x, double *__sinx, double *__cosx) noexcept (true); extern void __sincos (double __x, double *__sinx, double *__cosx) noexcept (true) +13943: ; +13943: +13943: +13943: +13943: +13943: extern double acosh (double __x) noexcept (true); extern double __acosh (double __x) noexcept (true); +13943: +13943: extern double asinh (double __x) noexcept (true); extern double __asinh (double __x) noexcept (true); +13943: +13943: extern double atanh (double __x) noexcept (true); extern double __atanh (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern double exp (double __x) noexcept (true); extern double __exp (double __x) noexcept (true); +13943: +13943: +13943: extern double frexp (double __x, int *__exponent) noexcept (true); extern double __frexp (double __x, int *__exponent) noexcept (true); +13943: +13943: +13943: extern double ldexp (double __x, int __exponent) noexcept (true); extern double __ldexp (double __x, int __exponent) noexcept (true); +13943: +13943: +13943: extern double log (double __x) noexcept (true); extern double __log (double __x) noexcept (true); +13943: +13943: +13943: extern double log10 (double __x) noexcept (true); extern double __log10 (double __x) noexcept (true); +13943: +13943: +13943: extern double modf (double __x, double *__iptr) noexcept (true); extern double __modf (double __x, double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern double exp10 (double __x) noexcept (true); extern double __exp10 (double __x) noexcept (true); +13943: +13943: +13943: extern double exp2m1 (double __x) noexcept (true); extern double __exp2m1 (double __x) noexcept (true); +13943: +13943: +13943: extern double exp10m1 (double __x) noexcept (true); extern double __exp10m1 (double __x) noexcept (true); +13943: +13943: +13943: extern double log2p1 (double __x) noexcept (true); extern double __log2p1 (double __x) noexcept (true); +13943: +13943: +13943: extern double log10p1 (double __x) noexcept (true); extern double __log10p1 (double __x) noexcept (true); +13943: +13943: +13943: extern double logp1 (double __x) noexcept (true); extern double __logp1 (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double expm1 (double __x) noexcept (true); extern double __expm1 (double __x) noexcept (true); +13943: +13943: +13943: extern double log1p (double __x) noexcept (true); extern double __log1p (double __x) noexcept (true); +13943: +13943: +13943: extern double logb (double __x) noexcept (true); extern double __logb (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double exp2 (double __x) noexcept (true); extern double __exp2 (double __x) noexcept (true); +13943: +13943: +13943: extern double log2 (double __x) noexcept (true); extern double __log2 (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double pow (double __x, double __y) noexcept (true); extern double __pow (double __x, double __y) noexcept (true); +13943: +13943: +13943: extern double sqrt (double __x) noexcept (true); extern double __sqrt (double __x) noexcept (true); +13943: +13943: +13943: +13943: extern double hypot (double __x, double __y) noexcept (true); extern double __hypot (double __x, double __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double cbrt (double __x) noexcept (true); extern double __cbrt (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double ceil (double __x) noexcept (true) __attribute__ ((__const__)); extern double __ceil (double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); extern double __fabs (double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double floor (double __x) noexcept (true) __attribute__ ((__const__)); extern double __floor (double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fmod (double __x, double __y) noexcept (true); extern double __fmod (double __x, double __y) noexcept (true); +13943: # 198 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern int finite (double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern double drem (double __x, double __y) noexcept (true); extern double __drem (double __x, double __y) noexcept (true); +13943: +13943: +13943: +13943: extern double significand (double __x) noexcept (true); extern double __significand (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern double nan (const char *__tagb) noexcept (true); extern double __nan (const char *__tagb) noexcept (true); +13943: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern double j0 (double) noexcept (true); extern double __j0 (double) noexcept (true); +13943: extern double j1 (double) noexcept (true); extern double __j1 (double) noexcept (true); +13943: extern double jn (int, double) noexcept (true); extern double __jn (int, double) noexcept (true); +13943: extern double y0 (double) noexcept (true); extern double __y0 (double) noexcept (true); +13943: extern double y1 (double) noexcept (true); extern double __y1 (double) noexcept (true); +13943: extern double yn (int, double) noexcept (true); extern double __yn (int, double) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern double erf (double) noexcept (true); extern double __erf (double) noexcept (true); +13943: extern double erfc (double) noexcept (true); extern double __erfc (double) noexcept (true); +13943: extern double lgamma (double) noexcept (true); extern double __lgamma (double) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double tgamma (double) noexcept (true); extern double __tgamma (double) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern double gamma (double) noexcept (true); extern double __gamma (double) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double lgamma_r (double, int *__signgamp) noexcept (true); extern double __lgamma_r (double, int *__signgamp) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double rint (double __x) noexcept (true); extern double __rint (double __x) noexcept (true); +13943: +13943: +13943: extern double nextafter (double __x, double __y) noexcept (true); extern double __nextafter (double __x, double __y) noexcept (true); +13943: +13943: extern double nexttoward (double __x, long double __y) noexcept (true); extern double __nexttoward (double __x, long double __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double nextdown (double __x) noexcept (true); extern double __nextdown (double __x) noexcept (true); +13943: +13943: extern double nextup (double __x) noexcept (true); extern double __nextup (double __x) noexcept (true); +13943: +13943: +13943: +13943: extern double remainder (double __x, double __y) noexcept (true); extern double __remainder (double __x, double __y) noexcept (true); +13943: +13943: +13943: +13943: extern double scalbn (double __x, int __n) noexcept (true); extern double __scalbn (double __x, int __n) noexcept (true); +13943: +13943: +13943: +13943: extern int ilogb (double __x) noexcept (true); extern int __ilogb (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long int llogb (double __x) noexcept (true); extern long int __llogb (double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double scalbln (double __x, long int __n) noexcept (true); extern double __scalbln (double __x, long int __n) noexcept (true); +13943: +13943: +13943: +13943: extern double nearbyint (double __x) noexcept (true); extern double __nearbyint (double __x) noexcept (true); +13943: +13943: +13943: +13943: extern double round (double __x) noexcept (true) __attribute__ ((__const__)); extern double __round (double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern double trunc (double __x) noexcept (true) __attribute__ ((__const__)); extern double __trunc (double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern double remquo (double __x, double __y, int *__quo) noexcept (true); extern double __remquo (double __x, double __y, int *__quo) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int lrint (double __x) noexcept (true); extern long int __lrint (double __x) noexcept (true); +13943: __extension__ +13943: extern long long int llrint (double __x) noexcept (true); extern long long int __llrint (double __x) noexcept (true); +13943: +13943: +13943: +13943: extern long int lround (double __x) noexcept (true); extern long int __lround (double __x) noexcept (true); +13943: __extension__ +13943: extern long long int llround (double __x) noexcept (true); extern long long int __llround (double __x) noexcept (true); +13943: +13943: +13943: +13943: extern double fdim (double __x, double __y) noexcept (true); extern double __fdim (double __x, double __y) noexcept (true); +13943: +13943: +13943: +13943: extern double fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern double fma (double __x, double __y, double __z) noexcept (true); extern double __fma (double __x, double __y, double __z) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern double roundeven (double __x) noexcept (true) __attribute__ ((__const__)); extern double __roundeven (double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: extern int canonicalize (double *__cx, const double *__x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern double fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern double fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int totalorder (const double *__x, const double *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern int totalordermag (const double *__x, const double *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern double getpayload (const double *__x) noexcept (true); extern double __getpayload (const double *__x) noexcept (true); +13943: +13943: +13943: extern int setpayload (double *__x, double __payload) noexcept (true); +13943: +13943: +13943: extern int setpayloadsig (double *__x, double __payload) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern double scalb (double __x, double __n) noexcept (true); extern double __scalb (double __x, double __n) noexcept (true); +13943: # 314 "/usr/include/math.h" 2 3 4 +13943: # 329 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 +13943: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 +13943: extern int __fpclassifyf (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __signbitf (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern int __isinff (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __finitef (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __isnanf (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __iseqsigf (float __x, float __y) noexcept (true); +13943: +13943: +13943: extern int __issignalingf (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: # 330 "/usr/include/math.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +13943: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern float acosf (float __x) noexcept (true); extern float __acosf (float __x) noexcept (true); +13943: +13943: extern float asinf (float __x) noexcept (true); extern float __asinf (float __x) noexcept (true); +13943: +13943: extern float atanf (float __x) noexcept (true); extern float __atanf (float __x) noexcept (true); +13943: +13943: extern float atan2f (float __y, float __x) noexcept (true); extern float __atan2f (float __y, float __x) noexcept (true); +13943: +13943: +13943: extern float cosf (float __x) noexcept (true); extern float __cosf (float __x) noexcept (true); +13943: +13943: extern float sinf (float __x) noexcept (true); extern float __sinf (float __x) noexcept (true); +13943: +13943: extern float tanf (float __x) noexcept (true); extern float __tanf (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float coshf (float __x) noexcept (true); extern float __coshf (float __x) noexcept (true); +13943: +13943: extern float sinhf (float __x) noexcept (true); extern float __sinhf (float __x) noexcept (true); +13943: +13943: extern float tanhf (float __x) noexcept (true); extern float __tanhf (float __x) noexcept (true); +13943: +13943: +13943: +13943: extern void sincosf (float __x, float *__sinx, float *__cosx) noexcept (true); extern void __sincosf (float __x, float *__sinx, float *__cosx) noexcept (true) +13943: ; +13943: +13943: +13943: +13943: +13943: extern float acoshf (float __x) noexcept (true); extern float __acoshf (float __x) noexcept (true); +13943: +13943: extern float asinhf (float __x) noexcept (true); extern float __asinhf (float __x) noexcept (true); +13943: +13943: extern float atanhf (float __x) noexcept (true); extern float __atanhf (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern float expf (float __x) noexcept (true); extern float __expf (float __x) noexcept (true); +13943: +13943: +13943: extern float frexpf (float __x, int *__exponent) noexcept (true); extern float __frexpf (float __x, int *__exponent) noexcept (true); +13943: +13943: +13943: extern float ldexpf (float __x, int __exponent) noexcept (true); extern float __ldexpf (float __x, int __exponent) noexcept (true); +13943: +13943: +13943: extern float logf (float __x) noexcept (true); extern float __logf (float __x) noexcept (true); +13943: +13943: +13943: extern float log10f (float __x) noexcept (true); extern float __log10f (float __x) noexcept (true); +13943: +13943: +13943: extern float modff (float __x, float *__iptr) noexcept (true); extern float __modff (float __x, float *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern float exp10f (float __x) noexcept (true); extern float __exp10f (float __x) noexcept (true); +13943: +13943: +13943: extern float exp2m1f (float __x) noexcept (true); extern float __exp2m1f (float __x) noexcept (true); +13943: +13943: +13943: extern float exp10m1f (float __x) noexcept (true); extern float __exp10m1f (float __x) noexcept (true); +13943: +13943: +13943: extern float log2p1f (float __x) noexcept (true); extern float __log2p1f (float __x) noexcept (true); +13943: +13943: +13943: extern float log10p1f (float __x) noexcept (true); extern float __log10p1f (float __x) noexcept (true); +13943: +13943: +13943: extern float logp1f (float __x) noexcept (true); extern float __logp1f (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float expm1f (float __x) noexcept (true); extern float __expm1f (float __x) noexcept (true); +13943: +13943: +13943: extern float log1pf (float __x) noexcept (true); extern float __log1pf (float __x) noexcept (true); +13943: +13943: +13943: extern float logbf (float __x) noexcept (true); extern float __logbf (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float exp2f (float __x) noexcept (true); extern float __exp2f (float __x) noexcept (true); +13943: +13943: +13943: extern float log2f (float __x) noexcept (true); extern float __log2f (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern float powf (float __x, float __y) noexcept (true); extern float __powf (float __x, float __y) noexcept (true); +13943: +13943: +13943: extern float sqrtf (float __x) noexcept (true); extern float __sqrtf (float __x) noexcept (true); +13943: +13943: +13943: +13943: extern float hypotf (float __x, float __y) noexcept (true); extern float __hypotf (float __x, float __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float cbrtf (float __x) noexcept (true); extern float __cbrtf (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern float ceilf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __ceilf (float __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fabsf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __fabsf (float __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __floorf (float __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fmodf (float __x, float __y) noexcept (true); extern float __fmodf (float __x, float __y) noexcept (true); +13943: # 192 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern int isinff (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int finitef (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern float dremf (float __x, float __y) noexcept (true); extern float __dremf (float __x, float __y) noexcept (true); +13943: +13943: +13943: +13943: extern float significandf (float __x) noexcept (true); extern float __significandf (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern float copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern float nanf (const char *__tagb) noexcept (true); extern float __nanf (const char *__tagb) noexcept (true); +13943: # 228 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern int isnanf (float __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: +13943: extern float j0f (float) noexcept (true); extern float __j0f (float) noexcept (true); +13943: extern float j1f (float) noexcept (true); extern float __j1f (float) noexcept (true); +13943: extern float jnf (int, float) noexcept (true); extern float __jnf (int, float) noexcept (true); +13943: extern float y0f (float) noexcept (true); extern float __y0f (float) noexcept (true); +13943: extern float y1f (float) noexcept (true); extern float __y1f (float) noexcept (true); +13943: extern float ynf (int, float) noexcept (true); extern float __ynf (int, float) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern float erff (float) noexcept (true); extern float __erff (float) noexcept (true); +13943: extern float erfcf (float) noexcept (true); extern float __erfcf (float) noexcept (true); +13943: extern float lgammaf (float) noexcept (true); extern float __lgammaf (float) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float tgammaf (float) noexcept (true); extern float __tgammaf (float) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern float gammaf (float) noexcept (true); extern float __gammaf (float) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern float lgammaf_r (float, int *__signgamp) noexcept (true); extern float __lgammaf_r (float, int *__signgamp) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern float rintf (float __x) noexcept (true); extern float __rintf (float __x) noexcept (true); +13943: +13943: +13943: extern float nextafterf (float __x, float __y) noexcept (true); extern float __nextafterf (float __x, float __y) noexcept (true); +13943: +13943: extern float nexttowardf (float __x, long double __y) noexcept (true); extern float __nexttowardf (float __x, long double __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float nextdownf (float __x) noexcept (true); extern float __nextdownf (float __x) noexcept (true); +13943: +13943: extern float nextupf (float __x) noexcept (true); extern float __nextupf (float __x) noexcept (true); +13943: +13943: +13943: +13943: extern float remainderf (float __x, float __y) noexcept (true); extern float __remainderf (float __x, float __y) noexcept (true); +13943: +13943: +13943: +13943: extern float scalbnf (float __x, int __n) noexcept (true); extern float __scalbnf (float __x, int __n) noexcept (true); +13943: +13943: +13943: +13943: extern int ilogbf (float __x) noexcept (true); extern int __ilogbf (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long int llogbf (float __x) noexcept (true); extern long int __llogbf (float __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float scalblnf (float __x, long int __n) noexcept (true); extern float __scalblnf (float __x, long int __n) noexcept (true); +13943: +13943: +13943: +13943: extern float nearbyintf (float __x) noexcept (true); extern float __nearbyintf (float __x) noexcept (true); +13943: +13943: +13943: +13943: extern float roundf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundf (float __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern float truncf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __truncf (float __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern float remquof (float __x, float __y, int *__quo) noexcept (true); extern float __remquof (float __x, float __y, int *__quo) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int lrintf (float __x) noexcept (true); extern long int __lrintf (float __x) noexcept (true); +13943: __extension__ +13943: extern long long int llrintf (float __x) noexcept (true); extern long long int __llrintf (float __x) noexcept (true); +13943: +13943: +13943: +13943: extern long int lroundf (float __x) noexcept (true); extern long int __lroundf (float __x) noexcept (true); +13943: __extension__ +13943: extern long long int llroundf (float __x) noexcept (true); extern long long int __llroundf (float __x) noexcept (true); +13943: +13943: +13943: +13943: extern float fdimf (float __x, float __y) noexcept (true); extern float __fdimf (float __x, float __y) noexcept (true); +13943: +13943: +13943: +13943: extern float fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern float fmaf (float __x, float __y, float __z) noexcept (true); extern float __fmaf (float __x, float __y, float __z) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern float roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: extern int canonicalizef (float *__cx, const float *__x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern float fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern float fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern float fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int totalorderf (const float *__x, const float *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern int totalordermagf (const float *__x, const float *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern float getpayloadf (const float *__x) noexcept (true); extern float __getpayloadf (const float *__x) noexcept (true); +13943: +13943: +13943: extern int setpayloadf (float *__x, float __payload) noexcept (true); +13943: +13943: +13943: extern int setpayloadsigf (float *__x, float __payload) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern float scalbf (float __x, float __n) noexcept (true); extern float __scalbf (float __x, float __n) noexcept (true); +13943: # 331 "/usr/include/math.h" 2 3 4 +13943: # 398 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 +13943: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 +13943: extern int __fpclassifyl (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __signbitl (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern int __isinfl (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __finitel (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __isnanl (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern int __iseqsigl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern int __issignalingl (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: # 399 "/usr/include/math.h" 2 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +13943: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern long double acosl (long double __x) noexcept (true); extern long double __acosl (long double __x) noexcept (true); +13943: +13943: extern long double asinl (long double __x) noexcept (true); extern long double __asinl (long double __x) noexcept (true); +13943: +13943: extern long double atanl (long double __x) noexcept (true); extern long double __atanl (long double __x) noexcept (true); +13943: +13943: extern long double atan2l (long double __y, long double __x) noexcept (true); extern long double __atan2l (long double __y, long double __x) noexcept (true); +13943: +13943: +13943: extern long double cosl (long double __x) noexcept (true); extern long double __cosl (long double __x) noexcept (true); +13943: +13943: extern long double sinl (long double __x) noexcept (true); extern long double __sinl (long double __x) noexcept (true); +13943: +13943: extern long double tanl (long double __x) noexcept (true); extern long double __tanl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long double coshl (long double __x) noexcept (true); extern long double __coshl (long double __x) noexcept (true); +13943: +13943: extern long double sinhl (long double __x) noexcept (true); extern long double __sinhl (long double __x) noexcept (true); +13943: +13943: extern long double tanhl (long double __x) noexcept (true); extern long double __tanhl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: extern long double acoshl (long double __x) noexcept (true); extern long double __acoshl (long double __x) noexcept (true); +13943: +13943: extern long double asinhl (long double __x) noexcept (true); extern long double __asinhl (long double __x) noexcept (true); +13943: +13943: extern long double atanhl (long double __x) noexcept (true); extern long double __atanhl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern long double expl (long double __x) noexcept (true); extern long double __expl (long double __x) noexcept (true); +13943: +13943: +13943: extern long double frexpl (long double __x, int *__exponent) noexcept (true); extern long double __frexpl (long double __x, int *__exponent) noexcept (true); +13943: +13943: +13943: extern long double ldexpl (long double __x, int __exponent) noexcept (true); extern long double __ldexpl (long double __x, int __exponent) noexcept (true); +13943: +13943: +13943: extern long double logl (long double __x) noexcept (true); extern long double __logl (long double __x) noexcept (true); +13943: +13943: +13943: extern long double log10l (long double __x) noexcept (true); extern long double __log10l (long double __x) noexcept (true); +13943: +13943: +13943: 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))); +13943: +13943: +13943: +13943: extern long double exp10l (long double __x) noexcept (true); extern long double __exp10l (long double __x) noexcept (true); +13943: +13943: +13943: extern long double exp2m1l (long double __x) noexcept (true); extern long double __exp2m1l (long double __x) noexcept (true); +13943: +13943: +13943: extern long double exp10m1l (long double __x) noexcept (true); extern long double __exp10m1l (long double __x) noexcept (true); +13943: +13943: +13943: extern long double log2p1l (long double __x) noexcept (true); extern long double __log2p1l (long double __x) noexcept (true); +13943: +13943: +13943: extern long double log10p1l (long double __x) noexcept (true); extern long double __log10p1l (long double __x) noexcept (true); +13943: +13943: +13943: extern long double logp1l (long double __x) noexcept (true); extern long double __logp1l (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long double expm1l (long double __x) noexcept (true); extern long double __expm1l (long double __x) noexcept (true); +13943: +13943: +13943: extern long double log1pl (long double __x) noexcept (true); extern long double __log1pl (long double __x) noexcept (true); +13943: +13943: +13943: extern long double logbl (long double __x) noexcept (true); extern long double __logbl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long double exp2l (long double __x) noexcept (true); extern long double __exp2l (long double __x) noexcept (true); +13943: +13943: +13943: extern long double log2l (long double __x) noexcept (true); extern long double __log2l (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long double powl (long double __x, long double __y) noexcept (true); extern long double __powl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern long double sqrtl (long double __x) noexcept (true); extern long double __sqrtl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: extern long double hypotl (long double __x, long double __y) noexcept (true); extern long double __hypotl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long double cbrtl (long double __x) noexcept (true); extern long double __cbrtl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long double ceill (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __ceill (long double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double floorl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __floorl (long double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fmodl (long double __x, long double __y) noexcept (true); extern long double __fmodl (long double __x, long double __y) noexcept (true); +13943: # 192 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern int isinfl (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int finitel (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: extern long double dreml (long double __x, long double __y) noexcept (true); extern long double __dreml (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: +13943: extern long double significandl (long double __x) noexcept (true); extern long double __significandl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long double copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern long double nanl (const char *__tagb) noexcept (true); extern long double __nanl (const char *__tagb) noexcept (true); +13943: # 228 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern int isnanl (long double __value) noexcept (true) +13943: __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: +13943: extern long double j0l (long double) noexcept (true); extern long double __j0l (long double) noexcept (true); +13943: extern long double j1l (long double) noexcept (true); extern long double __j1l (long double) noexcept (true); +13943: extern long double jnl (int, long double) noexcept (true); extern long double __jnl (int, long double) noexcept (true); +13943: extern long double y0l (long double) noexcept (true); extern long double __y0l (long double) noexcept (true); +13943: extern long double y1l (long double) noexcept (true); extern long double __y1l (long double) noexcept (true); +13943: extern long double ynl (int, long double) noexcept (true); extern long double __ynl (int, long double) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern long double erfl (long double) noexcept (true); extern long double __erfl (long double) noexcept (true); +13943: extern long double erfcl (long double) noexcept (true); extern long double __erfcl (long double) noexcept (true); +13943: extern long double lgammal (long double) noexcept (true); extern long double __lgammal (long double) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long double tgammal (long double) noexcept (true); extern long double __tgammal (long double) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern long double gammal (long double) noexcept (true); extern long double __gammal (long double) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long double lgammal_r (long double, int *__signgamp) noexcept (true); extern long double __lgammal_r (long double, int *__signgamp) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long double rintl (long double __x) noexcept (true); extern long double __rintl (long double __x) noexcept (true); +13943: +13943: +13943: extern long double nextafterl (long double __x, long double __y) noexcept (true); extern long double __nextafterl (long double __x, long double __y) noexcept (true); +13943: +13943: extern long double nexttowardl (long double __x, long double __y) noexcept (true); extern long double __nexttowardl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long double nextdownl (long double __x) noexcept (true); extern long double __nextdownl (long double __x) noexcept (true); +13943: +13943: extern long double nextupl (long double __x) noexcept (true); extern long double __nextupl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: extern long double remainderl (long double __x, long double __y) noexcept (true); extern long double __remainderl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: +13943: extern long double scalbnl (long double __x, int __n) noexcept (true); extern long double __scalbnl (long double __x, int __n) noexcept (true); +13943: +13943: +13943: +13943: extern int ilogbl (long double __x) noexcept (true); extern int __ilogbl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long int llogbl (long double __x) noexcept (true); extern long int __llogbl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long double scalblnl (long double __x, long int __n) noexcept (true); extern long double __scalblnl (long double __x, long int __n) noexcept (true); +13943: +13943: +13943: +13943: extern long double nearbyintl (long double __x) noexcept (true); extern long double __nearbyintl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: extern long double roundl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundl (long double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern long double truncl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __truncl (long double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: 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); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int lrintl (long double __x) noexcept (true); extern long int __lrintl (long double __x) noexcept (true); +13943: __extension__ +13943: extern long long int llrintl (long double __x) noexcept (true); extern long long int __llrintl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: extern long int lroundl (long double __x) noexcept (true); extern long int __lroundl (long double __x) noexcept (true); +13943: __extension__ +13943: extern long long int llroundl (long double __x) noexcept (true); extern long long int __llroundl (long double __x) noexcept (true); +13943: +13943: +13943: +13943: extern long double fdiml (long double __x, long double __y) noexcept (true); extern long double __fdiml (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: +13943: extern long double fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: 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); +13943: +13943: +13943: +13943: +13943: extern long double roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: extern int canonicalizel (long double *__cx, const long double *__x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long double fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern long double fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern long double fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int totalorderl (const long double *__x, const long double *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern int totalordermagl (const long double *__x, const long double *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern long double getpayloadl (const long double *__x) noexcept (true); extern long double __getpayloadl (const long double *__x) noexcept (true); +13943: +13943: +13943: extern int setpayloadl (long double *__x, long double __payload) noexcept (true); +13943: +13943: +13943: extern int setpayloadsigl (long double *__x, long double __payload) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long double scalbl (long double __x, long double __n) noexcept (true); extern long double __scalbl (long double __x, long double __n) noexcept (true); +13943: # 400 "/usr/include/math.h" 2 3 4 +13943: # 450 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +13943: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32 acosf32 (_Float32 __x) noexcept (true); extern _Float32 __acosf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 asinf32 (_Float32 __x) noexcept (true); extern _Float32 __asinf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 atanf32 (_Float32 __x) noexcept (true); extern _Float32 __atanf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 cosf32 (_Float32 __x) noexcept (true); extern _Float32 __cosf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 sinf32 (_Float32 __x) noexcept (true); extern _Float32 __sinf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 tanf32 (_Float32 __x) noexcept (true); extern _Float32 __tanf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32 coshf32 (_Float32 __x) noexcept (true); extern _Float32 __coshf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 sinhf32 (_Float32 __x) noexcept (true); extern _Float32 __sinhf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 tanhf32 (_Float32 __x) noexcept (true); extern _Float32 __tanhf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true) +13943: ; +13943: +13943: +13943: +13943: +13943: extern _Float32 acoshf32 (_Float32 __x) noexcept (true); extern _Float32 __acoshf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 asinhf32 (_Float32 __x) noexcept (true); extern _Float32 __asinhf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 atanhf32 (_Float32 __x) noexcept (true); extern _Float32 __atanhf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32 expf32 (_Float32 __x) noexcept (true); extern _Float32 __expf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) noexcept (true); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) noexcept (true); +13943: +13943: +13943: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) noexcept (true); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) noexcept (true); +13943: +13943: +13943: extern _Float32 logf32 (_Float32 __x) noexcept (true); extern _Float32 __logf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 log10f32 (_Float32 __x) noexcept (true); extern _Float32 __log10f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern _Float32 exp10f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 exp2m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2m1f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 exp10m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10m1f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 log2p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log2p1f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 log10p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log10p1f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 logp1f32 (_Float32 __x) noexcept (true); extern _Float32 __logp1f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32 expm1f32 (_Float32 __x) noexcept (true); extern _Float32 __expm1f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 log1pf32 (_Float32 __x) noexcept (true); extern _Float32 __log1pf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 logbf32 (_Float32 __x) noexcept (true); extern _Float32 __logbf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32 exp2f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 log2f32 (_Float32 __x) noexcept (true); extern _Float32 __log2f32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32 powf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) noexcept (true); +13943: +13943: +13943: extern _Float32 sqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __sqrtf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32 cbrtf32 (_Float32 __x) noexcept (true); extern _Float32 __cbrtf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32 ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); +13943: # 213 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float32 nanf32 (const char *__tagb) noexcept (true); extern _Float32 __nanf32 (const char *__tagb) noexcept (true); +13943: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32 j0f32 (_Float32) noexcept (true); extern _Float32 __j0f32 (_Float32) noexcept (true); +13943: extern _Float32 j1f32 (_Float32) noexcept (true); extern _Float32 __j1f32 (_Float32) noexcept (true); +13943: extern _Float32 jnf32 (int, _Float32) noexcept (true); extern _Float32 __jnf32 (int, _Float32) noexcept (true); +13943: extern _Float32 y0f32 (_Float32) noexcept (true); extern _Float32 __y0f32 (_Float32) noexcept (true); +13943: extern _Float32 y1f32 (_Float32) noexcept (true); extern _Float32 __y1f32 (_Float32) noexcept (true); +13943: extern _Float32 ynf32 (int, _Float32) noexcept (true); extern _Float32 __ynf32 (int, _Float32) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32 erff32 (_Float32) noexcept (true); extern _Float32 __erff32 (_Float32) noexcept (true); +13943: extern _Float32 erfcf32 (_Float32) noexcept (true); extern _Float32 __erfcf32 (_Float32) noexcept (true); +13943: extern _Float32 lgammaf32 (_Float32) noexcept (true); extern _Float32 __lgammaf32 (_Float32) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32 tgammaf32 (_Float32) noexcept (true); extern _Float32 __tgammaf32 (_Float32) noexcept (true); +13943: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) noexcept (true); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32 rintf32 (_Float32 __x) noexcept (true); extern _Float32 __rintf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32 nextdownf32 (_Float32 __x) noexcept (true); extern _Float32 __nextdownf32 (_Float32 __x) noexcept (true); +13943: +13943: extern _Float32 nextupf32 (_Float32 __x) noexcept (true); extern _Float32 __nextupf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32 scalbnf32 (_Float32 __x, int __n) noexcept (true); extern _Float32 __scalbnf32 (_Float32 __x, int __n) noexcept (true); +13943: +13943: +13943: +13943: extern int ilogbf32 (_Float32 __x) noexcept (true); extern int __ilogbf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long int llogbf32 (_Float32 __x) noexcept (true); extern long int __llogbf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32 scalblnf32 (_Float32 __x, long int __n) noexcept (true); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32 nearbyintf32 (_Float32 __x) noexcept (true); extern _Float32 __nearbyintf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32 roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern _Float32 truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int lrintf32 (_Float32 __x) noexcept (true); extern long int __lrintf32 (_Float32 __x) noexcept (true); +13943: __extension__ +13943: extern long long int llrintf32 (_Float32 __x) noexcept (true); extern long long int __llrintf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: extern long int lroundf32 (_Float32 __x) noexcept (true); extern long int __lroundf32 (_Float32 __x) noexcept (true); +13943: __extension__ +13943: extern long long int llroundf32 (_Float32 __x) noexcept (true); extern long long int __llroundf32 (_Float32 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32 roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern _Float32 getpayloadf32 (const _Float32 *__x) noexcept (true); extern _Float32 __getpayloadf32 (const _Float32 *__x) noexcept (true); +13943: +13943: +13943: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) noexcept (true); +13943: +13943: +13943: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) noexcept (true); +13943: # 451 "/usr/include/math.h" 2 3 4 +13943: # 467 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +13943: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float64 acosf64 (_Float64 __x) noexcept (true); extern _Float64 __acosf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 asinf64 (_Float64 __x) noexcept (true); extern _Float64 __asinf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 atanf64 (_Float64 __x) noexcept (true); extern _Float64 __atanf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 cosf64 (_Float64 __x) noexcept (true); extern _Float64 __cosf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 sinf64 (_Float64 __x) noexcept (true); extern _Float64 __sinf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 tanf64 (_Float64 __x) noexcept (true); extern _Float64 __tanf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float64 coshf64 (_Float64 __x) noexcept (true); extern _Float64 __coshf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 sinhf64 (_Float64 __x) noexcept (true); extern _Float64 __sinhf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 tanhf64 (_Float64 __x) noexcept (true); extern _Float64 __tanhf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true) +13943: ; +13943: +13943: +13943: +13943: +13943: extern _Float64 acoshf64 (_Float64 __x) noexcept (true); extern _Float64 __acoshf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 asinhf64 (_Float64 __x) noexcept (true); extern _Float64 __asinhf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 atanhf64 (_Float64 __x) noexcept (true); extern _Float64 __atanhf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern _Float64 expf64 (_Float64 __x) noexcept (true); extern _Float64 __expf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) noexcept (true); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) noexcept (true); +13943: +13943: +13943: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) noexcept (true); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) noexcept (true); +13943: +13943: +13943: extern _Float64 logf64 (_Float64 __x) noexcept (true); extern _Float64 __logf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 log10f64 (_Float64 __x) noexcept (true); extern _Float64 __log10f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern _Float64 exp10f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 exp2m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2m1f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 exp10m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10m1f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 log2p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log2p1f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 log10p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log10p1f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 logp1f64 (_Float64 __x) noexcept (true); extern _Float64 __logp1f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float64 expm1f64 (_Float64 __x) noexcept (true); extern _Float64 __expm1f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 log1pf64 (_Float64 __x) noexcept (true); extern _Float64 __log1pf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 logbf64 (_Float64 __x) noexcept (true); extern _Float64 __logbf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float64 exp2f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 log2f64 (_Float64 __x) noexcept (true); extern _Float64 __log2f64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float64 powf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: extern _Float64 sqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __sqrtf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float64 cbrtf64 (_Float64 __x) noexcept (true); extern _Float64 __cbrtf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float64 ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: # 213 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float64 nanf64 (const char *__tagb) noexcept (true); extern _Float64 __nanf64 (const char *__tagb) noexcept (true); +13943: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float64 j0f64 (_Float64) noexcept (true); extern _Float64 __j0f64 (_Float64) noexcept (true); +13943: extern _Float64 j1f64 (_Float64) noexcept (true); extern _Float64 __j1f64 (_Float64) noexcept (true); +13943: extern _Float64 jnf64 (int, _Float64) noexcept (true); extern _Float64 __jnf64 (int, _Float64) noexcept (true); +13943: extern _Float64 y0f64 (_Float64) noexcept (true); extern _Float64 __y0f64 (_Float64) noexcept (true); +13943: extern _Float64 y1f64 (_Float64) noexcept (true); extern _Float64 __y1f64 (_Float64) noexcept (true); +13943: extern _Float64 ynf64 (int, _Float64) noexcept (true); extern _Float64 __ynf64 (int, _Float64) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern _Float64 erff64 (_Float64) noexcept (true); extern _Float64 __erff64 (_Float64) noexcept (true); +13943: extern _Float64 erfcf64 (_Float64) noexcept (true); extern _Float64 __erfcf64 (_Float64) noexcept (true); +13943: extern _Float64 lgammaf64 (_Float64) noexcept (true); extern _Float64 __lgammaf64 (_Float64) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float64 tgammaf64 (_Float64) noexcept (true); extern _Float64 __tgammaf64 (_Float64) noexcept (true); +13943: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) noexcept (true); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float64 rintf64 (_Float64 __x) noexcept (true); extern _Float64 __rintf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float64 nextdownf64 (_Float64 __x) noexcept (true); extern _Float64 __nextdownf64 (_Float64 __x) noexcept (true); +13943: +13943: extern _Float64 nextupf64 (_Float64 __x) noexcept (true); extern _Float64 __nextupf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 scalbnf64 (_Float64 __x, int __n) noexcept (true); extern _Float64 __scalbnf64 (_Float64 __x, int __n) noexcept (true); +13943: +13943: +13943: +13943: extern int ilogbf64 (_Float64 __x) noexcept (true); extern int __ilogbf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long int llogbf64 (_Float64 __x) noexcept (true); extern long int __llogbf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float64 scalblnf64 (_Float64 __x, long int __n) noexcept (true); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 nearbyintf64 (_Float64 __x) noexcept (true); extern _Float64 __nearbyintf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern _Float64 truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int lrintf64 (_Float64 __x) noexcept (true); extern long int __lrintf64 (_Float64 __x) noexcept (true); +13943: __extension__ +13943: extern long long int llrintf64 (_Float64 __x) noexcept (true); extern long long int __llrintf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: extern long int lroundf64 (_Float64 __x) noexcept (true); extern long int __lroundf64 (_Float64 __x) noexcept (true); +13943: __extension__ +13943: extern long long int llroundf64 (_Float64 __x) noexcept (true); extern long long int __llroundf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: +13943: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float64 roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern _Float64 getpayloadf64 (const _Float64 *__x) noexcept (true); extern _Float64 __getpayloadf64 (const _Float64 *__x) noexcept (true); +13943: +13943: +13943: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) noexcept (true); +13943: +13943: +13943: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) noexcept (true); +13943: # 468 "/usr/include/math.h" 2 3 4 +13943: # 501 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +13943: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32x acosf32x (_Float32x __x) noexcept (true); extern _Float32x __acosf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x asinf32x (_Float32x __x) noexcept (true); extern _Float32x __asinf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x atanf32x (_Float32x __x) noexcept (true); extern _Float32x __atanf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x cosf32x (_Float32x __x) noexcept (true); extern _Float32x __cosf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x sinf32x (_Float32x __x) noexcept (true); extern _Float32x __sinf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x tanf32x (_Float32x __x) noexcept (true); extern _Float32x __tanf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32x coshf32x (_Float32x __x) noexcept (true); extern _Float32x __coshf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x sinhf32x (_Float32x __x) noexcept (true); extern _Float32x __sinhf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x tanhf32x (_Float32x __x) noexcept (true); extern _Float32x __tanhf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true) +13943: ; +13943: +13943: +13943: +13943: +13943: extern _Float32x acoshf32x (_Float32x __x) noexcept (true); extern _Float32x __acoshf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x asinhf32x (_Float32x __x) noexcept (true); extern _Float32x __asinhf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x atanhf32x (_Float32x __x) noexcept (true); extern _Float32x __atanhf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32x expf32x (_Float32x __x) noexcept (true); extern _Float32x __expf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) noexcept (true); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) noexcept (true); +13943: +13943: +13943: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) noexcept (true); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) noexcept (true); +13943: +13943: +13943: extern _Float32x logf32x (_Float32x __x) noexcept (true); extern _Float32x __logf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x log10f32x (_Float32x __x) noexcept (true); extern _Float32x __log10f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern _Float32x exp10f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x exp2m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2m1f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x exp10m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10m1f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x log2p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log2p1f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x log10p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log10p1f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x logp1f32x (_Float32x __x) noexcept (true); extern _Float32x __logp1f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32x expm1f32x (_Float32x __x) noexcept (true); extern _Float32x __expm1f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x log1pf32x (_Float32x __x) noexcept (true); extern _Float32x __log1pf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x logbf32x (_Float32x __x) noexcept (true); extern _Float32x __logbf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32x exp2f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x log2f32x (_Float32x __x) noexcept (true); extern _Float32x __log2f32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32x powf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: extern _Float32x sqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __sqrtf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32x cbrtf32x (_Float32x __x) noexcept (true); extern _Float32x __cbrtf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32x ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: # 213 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float32x nanf32x (const char *__tagb) noexcept (true); extern _Float32x __nanf32x (const char *__tagb) noexcept (true); +13943: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32x j0f32x (_Float32x) noexcept (true); extern _Float32x __j0f32x (_Float32x) noexcept (true); +13943: extern _Float32x j1f32x (_Float32x) noexcept (true); extern _Float32x __j1f32x (_Float32x) noexcept (true); +13943: extern _Float32x jnf32x (int, _Float32x) noexcept (true); extern _Float32x __jnf32x (int, _Float32x) noexcept (true); +13943: extern _Float32x y0f32x (_Float32x) noexcept (true); extern _Float32x __y0f32x (_Float32x) noexcept (true); +13943: extern _Float32x y1f32x (_Float32x) noexcept (true); extern _Float32x __y1f32x (_Float32x) noexcept (true); +13943: extern _Float32x ynf32x (int, _Float32x) noexcept (true); extern _Float32x __ynf32x (int, _Float32x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32x erff32x (_Float32x) noexcept (true); extern _Float32x __erff32x (_Float32x) noexcept (true); +13943: extern _Float32x erfcf32x (_Float32x) noexcept (true); extern _Float32x __erfcf32x (_Float32x) noexcept (true); +13943: extern _Float32x lgammaf32x (_Float32x) noexcept (true); extern _Float32x __lgammaf32x (_Float32x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32x tgammaf32x (_Float32x) noexcept (true); extern _Float32x __tgammaf32x (_Float32x) noexcept (true); +13943: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +13943: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32x rintf32x (_Float32x __x) noexcept (true); extern _Float32x __rintf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32x nextdownf32x (_Float32x __x) noexcept (true); extern _Float32x __nextdownf32x (_Float32x __x) noexcept (true); +13943: +13943: extern _Float32x nextupf32x (_Float32x __x) noexcept (true); extern _Float32x __nextupf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32x scalbnf32x (_Float32x __x, int __n) noexcept (true); extern _Float32x __scalbnf32x (_Float32x __x, int __n) noexcept (true); +13943: +13943: +13943: +13943: extern int ilogbf32x (_Float32x __x) noexcept (true); extern int __ilogbf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern long int llogbf32x (_Float32x __x) noexcept (true); extern long int __llogbf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32x scalblnf32x (_Float32x __x, long int __n) noexcept (true); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32x nearbyintf32x (_Float32x __x) noexcept (true); extern _Float32x __nearbyintf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32x roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern _Float32x truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int lrintf32x (_Float32x __x) noexcept (true); extern long int __lrintf32x (_Float32x __x) noexcept (true); +13943: __extension__ +13943: extern long long int llrintf32x (_Float32x __x) noexcept (true); extern long long int __llrintf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: extern long int lroundf32x (_Float32x __x) noexcept (true); extern long int __lroundf32x (_Float32x __x) noexcept (true); +13943: __extension__ +13943: extern long long int llroundf32x (_Float32x __x) noexcept (true); extern long long int __llroundf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: +13943: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern _Float32x roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: +13943: +13943: 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) +13943: ; +13943: +13943: +13943: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) +13943: +13943: __attribute__ ((__pure__)); +13943: +13943: +13943: extern _Float32x getpayloadf32x (const _Float32x *__x) noexcept (true); extern _Float32x __getpayloadf32x (const _Float32x *__x) noexcept (true); +13943: +13943: +13943: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) noexcept (true); +13943: +13943: +13943: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) noexcept (true); +13943: # 502 "/usr/include/math.h" 2 3 4 +13943: # 566 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +13943: extern float fadd (double __x, double __y) noexcept (true); +13943: +13943: +13943: extern float fdiv (double __x, double __y) noexcept (true); +13943: +13943: +13943: extern float ffma (double __x, double __y, double __z) noexcept (true); +13943: +13943: +13943: extern float fmul (double __x, double __y) noexcept (true); +13943: +13943: +13943: extern float fsqrt (double __x) noexcept (true); +13943: +13943: +13943: extern float fsub (double __x, double __y) noexcept (true); +13943: # 567 "/usr/include/math.h" 2 3 4 +13943: # 587 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +13943: extern float faddl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern float fdivl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern float ffmal (long double __x, long double __y, long double __z) noexcept (true); +13943: +13943: +13943: extern float fmull (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern float fsqrtl (long double __x) noexcept (true); +13943: +13943: +13943: extern float fsubl (long double __x, long double __y) noexcept (true); +13943: # 588 "/usr/include/math.h" 2 3 4 +13943: # 616 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +13943: extern double daddl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern double ddivl (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern double dfmal (long double __x, long double __y, long double __z) noexcept (true); +13943: +13943: +13943: extern double dmull (long double __x, long double __y) noexcept (true); +13943: +13943: +13943: extern double dsqrtl (long double __x) noexcept (true); +13943: +13943: +13943: extern double dsubl (long double __x, long double __y) noexcept (true); +13943: # 617 "/usr/include/math.h" 2 3 4 +13943: # 697 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +13943: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); +13943: +13943: +13943: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: +13943: +13943: extern _Float32 f32sqrtf32x (_Float32x __x) noexcept (true); +13943: +13943: +13943: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) noexcept (true); +13943: # 698 "/usr/include/math.h" 2 3 4 +13943: # 707 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +13943: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); +13943: +13943: +13943: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: extern _Float32 f32sqrtf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: # 708 "/usr/include/math.h" 2 3 4 +13943: # 747 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +13943: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); +13943: +13943: +13943: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: +13943: +13943: extern _Float32x f32xsqrtf64 (_Float64 __x) noexcept (true); +13943: +13943: +13943: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) noexcept (true); +13943: # 748 "/usr/include/math.h" 2 3 4 +13943: # 854 "/usr/include/math.h" 3 4 +13943: extern int signgam; +13943: # 934 "/usr/include/math.h" 3 4 +13943: enum +13943: { +13943: FP_NAN = +13943: +13943: 0, +13943: FP_INFINITE = +13943: +13943: 1, +13943: FP_ZERO = +13943: +13943: 2, +13943: FP_SUBNORMAL = +13943: +13943: 3, +13943: FP_NORMAL = +13943: +13943: 4 +13943: }; +13943: # 1055 "/usr/include/math.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/iscanonical.h" 1 3 4 +13943: # 1056 "/usr/include/math.h" 2 3 4 +13943: # 1067 "/usr/include/math.h" 3 4 +13943: extern "C++" { +13943: inline int issignaling (float __val) { return __issignalingf (__val); } +13943: inline int issignaling (double __val) { return __issignaling (__val); } +13943: inline int +13943: issignaling (long double __val) +13943: { +13943: +13943: return __issignaling (__val); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 1098 "/usr/include/math.h" 3 4 +13943: extern "C++" { +13943: # 1129 "/usr/include/math.h" 3 4 +13943: template inline bool +13943: iszero (__T __val) +13943: { +13943: return __val == 0; +13943: } +13943: +13943: } +13943: # 1364 "/usr/include/math.h" 3 4 +13943: extern "C++" { +13943: template struct __iseqsig_type; +13943: +13943: template<> struct __iseqsig_type +13943: { +13943: static int __call (float __x, float __y) throw () +13943: { +13943: return __iseqsigf (__x, __y); +13943: } +13943: }; +13943: +13943: template<> struct __iseqsig_type +13943: { +13943: static int __call (double __x, double __y) throw () +13943: { +13943: return __iseqsig (__x, __y); +13943: } +13943: }; +13943: +13943: template<> struct __iseqsig_type +13943: { +13943: static int __call (long double __x, long double __y) throw () +13943: { +13943: +13943: +13943: +13943: return __iseqsig (__x, __y); +13943: +13943: } +13943: }; +13943: +13943: +13943: template<> struct __iseqsig_type<_Float32> +13943: { +13943: static int __call (_Float32 __x, _Float32 __y) throw () +13943: { +13943: return __iseqsigf (__x, __y); +13943: } +13943: }; +13943: +13943: +13943: +13943: template<> struct __iseqsig_type<_Float64> +13943: { +13943: static int __call (_Float64 __x, _Float64 __y) throw () +13943: { +13943: return __iseqsig (__x, __y); +13943: } +13943: }; +13943: # 1432 "/usr/include/math.h" 3 4 +13943: template<> struct __iseqsig_type<_Float32x> +13943: { +13943: static int __call (_Float32x __x, _Float32x __y) throw () +13943: { +13943: return __iseqsig (__x, __y); +13943: } +13943: }; +13943: # 1455 "/usr/include/math.h" 3 4 +13943: template +13943: inline int +13943: iseqsig (_T1 __x, _T2 __y) throw () +13943: { +13943: +13943: typedef decltype (((__x) + (__y) + 0.0f)) _T3; +13943: +13943: +13943: +13943: return __iseqsig_type<_T3>::__call (__x, __y); +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 48 "/usr/include/c++/14/cmath" 2 3 +13943: # 56 "/usr/include/c++/14/cmath" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 57 "/usr/include/c++/14/cmath" 2 3 +13943: # 83 "/usr/include/c++/14/cmath" 3 +13943: extern "C++" +13943: { +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: using ::acos; +13943: +13943: +13943: inline constexpr float +13943: acos(float __x) +13943: { return __builtin_acosf(__x); } +13943: +13943: inline constexpr long double +13943: acos(long double __x) +13943: { return __builtin_acosl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: acos(_Tp __x) +13943: { return __builtin_acos(__x); } +13943: +13943: using ::asin; +13943: +13943: +13943: inline constexpr float +13943: asin(float __x) +13943: { return __builtin_asinf(__x); } +13943: +13943: inline constexpr long double +13943: asin(long double __x) +13943: { return __builtin_asinl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: asin(_Tp __x) +13943: { return __builtin_asin(__x); } +13943: +13943: using ::atan; +13943: +13943: +13943: inline constexpr float +13943: atan(float __x) +13943: { return __builtin_atanf(__x); } +13943: +13943: inline constexpr long double +13943: atan(long double __x) +13943: { return __builtin_atanl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: atan(_Tp __x) +13943: { return __builtin_atan(__x); } +13943: +13943: using ::atan2; +13943: +13943: +13943: inline constexpr float +13943: atan2(float __y, float __x) +13943: { return __builtin_atan2f(__y, __x); } +13943: +13943: inline constexpr long double +13943: atan2(long double __y, long double __x) +13943: { return __builtin_atan2l(__y, __x); } +13943: +13943: +13943: using ::ceil; +13943: +13943: +13943: inline constexpr float +13943: ceil(float __x) +13943: { return __builtin_ceilf(__x); } +13943: +13943: inline constexpr long double +13943: ceil(long double __x) +13943: { return __builtin_ceill(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: ceil(_Tp __x) +13943: { return __builtin_ceil(__x); } +13943: +13943: using ::cos; +13943: +13943: +13943: inline constexpr float +13943: cos(float __x) +13943: { return __builtin_cosf(__x); } +13943: +13943: inline constexpr long double +13943: cos(long double __x) +13943: { return __builtin_cosl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: cos(_Tp __x) +13943: { return __builtin_cos(__x); } +13943: +13943: using ::cosh; +13943: +13943: +13943: inline constexpr float +13943: cosh(float __x) +13943: { return __builtin_coshf(__x); } +13943: +13943: inline constexpr long double +13943: cosh(long double __x) +13943: { return __builtin_coshl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: cosh(_Tp __x) +13943: { return __builtin_cosh(__x); } +13943: +13943: using ::exp; +13943: +13943: +13943: inline constexpr float +13943: exp(float __x) +13943: { return __builtin_expf(__x); } +13943: +13943: inline constexpr long double +13943: exp(long double __x) +13943: { return __builtin_expl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: exp(_Tp __x) +13943: { return __builtin_exp(__x); } +13943: +13943: using ::fabs; +13943: +13943: +13943: inline constexpr float +13943: fabs(float __x) +13943: { return __builtin_fabsf(__x); } +13943: +13943: inline constexpr long double +13943: fabs(long double __x) +13943: { return __builtin_fabsl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: fabs(_Tp __x) +13943: { return __builtin_fabs(__x); } +13943: +13943: using ::floor; +13943: +13943: +13943: inline constexpr float +13943: floor(float __x) +13943: { return __builtin_floorf(__x); } +13943: +13943: inline constexpr long double +13943: floor(long double __x) +13943: { return __builtin_floorl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: floor(_Tp __x) +13943: { return __builtin_floor(__x); } +13943: +13943: using ::fmod; +13943: +13943: +13943: inline constexpr float +13943: fmod(float __x, float __y) +13943: { return __builtin_fmodf(__x, __y); } +13943: +13943: inline constexpr long double +13943: fmod(long double __x, long double __y) +13943: { return __builtin_fmodl(__x, __y); } +13943: +13943: +13943: using ::frexp; +13943: +13943: +13943: inline float +13943: frexp(float __x, int* __exp) +13943: { return __builtin_frexpf(__x, __exp); } +13943: +13943: inline long double +13943: frexp(long double __x, int* __exp) +13943: { return __builtin_frexpl(__x, __exp); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: frexp(_Tp __x, int* __exp) +13943: { return __builtin_frexp(__x, __exp); } +13943: +13943: using ::ldexp; +13943: +13943: +13943: inline constexpr float +13943: ldexp(float __x, int __exp) +13943: { return __builtin_ldexpf(__x, __exp); } +13943: +13943: inline constexpr long double +13943: ldexp(long double __x, int __exp) +13943: { return __builtin_ldexpl(__x, __exp); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: ldexp(_Tp __x, int __exp) +13943: { return __builtin_ldexp(__x, __exp); } +13943: +13943: using ::log; +13943: +13943: +13943: inline constexpr float +13943: log(float __x) +13943: { return __builtin_logf(__x); } +13943: +13943: inline constexpr long double +13943: log(long double __x) +13943: { return __builtin_logl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: log(_Tp __x) +13943: { return __builtin_log(__x); } +13943: +13943: using ::log10; +13943: +13943: +13943: inline constexpr float +13943: log10(float __x) +13943: { return __builtin_log10f(__x); } +13943: +13943: inline constexpr long double +13943: log10(long double __x) +13943: { return __builtin_log10l(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: log10(_Tp __x) +13943: { return __builtin_log10(__x); } +13943: +13943: using ::modf; +13943: +13943: +13943: inline float +13943: modf(float __x, float* __iptr) +13943: { return __builtin_modff(__x, __iptr); } +13943: +13943: inline long double +13943: modf(long double __x, long double* __iptr) +13943: { return __builtin_modfl(__x, __iptr); } +13943: +13943: +13943: using ::pow; +13943: +13943: +13943: inline constexpr float +13943: pow(float __x, float __y) +13943: { return __builtin_powf(__x, __y); } +13943: +13943: inline constexpr long double +13943: pow(long double __x, long double __y) +13943: { return __builtin_powl(__x, __y); } +13943: # 400 "/usr/include/c++/14/cmath" 3 +13943: using ::sin; +13943: +13943: +13943: inline constexpr float +13943: sin(float __x) +13943: { return __builtin_sinf(__x); } +13943: +13943: inline constexpr long double +13943: sin(long double __x) +13943: { return __builtin_sinl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: sin(_Tp __x) +13943: { return __builtin_sin(__x); } +13943: +13943: using ::sinh; +13943: +13943: +13943: inline constexpr float +13943: sinh(float __x) +13943: { return __builtin_sinhf(__x); } +13943: +13943: inline constexpr long double +13943: sinh(long double __x) +13943: { return __builtin_sinhl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: sinh(_Tp __x) +13943: { return __builtin_sinh(__x); } +13943: +13943: using ::sqrt; +13943: +13943: +13943: inline constexpr float +13943: sqrt(float __x) +13943: { return __builtin_sqrtf(__x); } +13943: +13943: inline constexpr long double +13943: sqrt(long double __x) +13943: { return __builtin_sqrtl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: sqrt(_Tp __x) +13943: { return __builtin_sqrt(__x); } +13943: +13943: using ::tan; +13943: +13943: +13943: inline constexpr float +13943: tan(float __x) +13943: { return __builtin_tanf(__x); } +13943: +13943: inline constexpr long double +13943: tan(long double __x) +13943: { return __builtin_tanl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: tan(_Tp __x) +13943: { return __builtin_tan(__x); } +13943: +13943: using ::tanh; +13943: +13943: +13943: inline constexpr float +13943: tanh(float __x) +13943: { return __builtin_tanhf(__x); } +13943: +13943: inline constexpr long double +13943: tanh(long double __x) +13943: { return __builtin_tanhl(__x); } +13943: +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: tanh(_Tp __x) +13943: { return __builtin_tanh(__x); } +13943: # 1053 "/usr/include/c++/14/cmath" 3 +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: atan2(_Tp __y, _Up __x) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return atan2(__type(__y), __type(__x)); +13943: } +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: fmod(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return fmod(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: inline constexpr +13943: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: pow(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return pow(__type(__x), __type(__y)); +13943: } +13943: # 1100 "/usr/include/c++/14/cmath" 3 +13943: constexpr int +13943: fpclassify(float __x) +13943: { return __builtin_fpclassify(0, 1, 4, +13943: 3, 2, __x); } +13943: +13943: constexpr int +13943: fpclassify(double __x) +13943: { return __builtin_fpclassify(0, 1, 4, +13943: 3, 2, __x); } +13943: +13943: constexpr int +13943: fpclassify(long double __x) +13943: { return __builtin_fpclassify(0, 1, 4, +13943: 3, 2, __x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: int>::__type +13943: fpclassify(_Tp __x) +13943: { return __x != 0 ? 4 : 2; } +13943: +13943: +13943: +13943: constexpr bool +13943: isfinite(float __x) +13943: { return __builtin_isfinite(__x); } +13943: +13943: constexpr bool +13943: isfinite(double __x) +13943: { return __builtin_isfinite(__x); } +13943: +13943: constexpr bool +13943: isfinite(long double __x) +13943: { return __builtin_isfinite(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: bool>::__type +13943: isfinite(_Tp) +13943: { return true; } +13943: +13943: +13943: +13943: constexpr bool +13943: isinf(float __x) +13943: { return __builtin_isinf(__x); } +13943: +13943: +13943: +13943: +13943: +13943: constexpr bool +13943: isinf(double __x) +13943: { return __builtin_isinf(__x); } +13943: +13943: +13943: constexpr bool +13943: isinf(long double __x) +13943: { return __builtin_isinf(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: bool>::__type +13943: isinf(_Tp) +13943: { return false; } +13943: +13943: +13943: +13943: constexpr bool +13943: isnan(float __x) +13943: { return __builtin_isnan(__x); } +13943: +13943: +13943: +13943: +13943: +13943: constexpr bool +13943: isnan(double __x) +13943: { return __builtin_isnan(__x); } +13943: +13943: +13943: constexpr bool +13943: isnan(long double __x) +13943: { return __builtin_isnan(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: bool>::__type +13943: isnan(_Tp) +13943: { return false; } +13943: +13943: +13943: +13943: constexpr bool +13943: isnormal(float __x) +13943: { return __builtin_isnormal(__x); } +13943: +13943: constexpr bool +13943: isnormal(double __x) +13943: { return __builtin_isnormal(__x); } +13943: +13943: constexpr bool +13943: isnormal(long double __x) +13943: { return __builtin_isnormal(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: bool>::__type +13943: isnormal(_Tp __x) +13943: { return __x != 0 ? true : false; } +13943: +13943: +13943: +13943: +13943: constexpr bool +13943: signbit(float __x) +13943: { return __builtin_signbit(__x); } +13943: +13943: constexpr bool +13943: signbit(double __x) +13943: { return __builtin_signbit(__x); } +13943: +13943: constexpr bool +13943: signbit(long double __x) +13943: { return __builtin_signbit(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: bool>::__type +13943: signbit(_Tp __x) +13943: { return __x < 0 ? true : false; } +13943: +13943: +13943: +13943: constexpr bool +13943: isgreater(float __x, float __y) +13943: { return __builtin_isgreater(__x, __y); } +13943: +13943: constexpr bool +13943: isgreater(double __x, double __y) +13943: { return __builtin_isgreater(__x, __y); } +13943: +13943: constexpr bool +13943: isgreater(long double __x, long double __y) +13943: { return __builtin_isgreater(__x, __y); } +13943: +13943: +13943: +13943: template +13943: constexpr typename +13943: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +13943: && __is_arithmetic<_Up>::__value), bool>::__type +13943: isgreater(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return __builtin_isgreater(__type(__x), __type(__y)); +13943: } +13943: +13943: +13943: +13943: constexpr bool +13943: isgreaterequal(float __x, float __y) +13943: { return __builtin_isgreaterequal(__x, __y); } +13943: +13943: constexpr bool +13943: isgreaterequal(double __x, double __y) +13943: { return __builtin_isgreaterequal(__x, __y); } +13943: +13943: constexpr bool +13943: isgreaterequal(long double __x, long double __y) +13943: { return __builtin_isgreaterequal(__x, __y); } +13943: +13943: +13943: +13943: template +13943: constexpr typename +13943: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +13943: && __is_arithmetic<_Up>::__value), bool>::__type +13943: isgreaterequal(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return __builtin_isgreaterequal(__type(__x), __type(__y)); +13943: } +13943: +13943: +13943: +13943: constexpr bool +13943: isless(float __x, float __y) +13943: { return __builtin_isless(__x, __y); } +13943: +13943: constexpr bool +13943: isless(double __x, double __y) +13943: { return __builtin_isless(__x, __y); } +13943: +13943: constexpr bool +13943: isless(long double __x, long double __y) +13943: { return __builtin_isless(__x, __y); } +13943: +13943: +13943: +13943: template +13943: constexpr typename +13943: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +13943: && __is_arithmetic<_Up>::__value), bool>::__type +13943: isless(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return __builtin_isless(__type(__x), __type(__y)); +13943: } +13943: +13943: +13943: +13943: constexpr bool +13943: islessequal(float __x, float __y) +13943: { return __builtin_islessequal(__x, __y); } +13943: +13943: constexpr bool +13943: islessequal(double __x, double __y) +13943: { return __builtin_islessequal(__x, __y); } +13943: +13943: constexpr bool +13943: islessequal(long double __x, long double __y) +13943: { return __builtin_islessequal(__x, __y); } +13943: +13943: +13943: +13943: template +13943: constexpr typename +13943: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +13943: && __is_arithmetic<_Up>::__value), bool>::__type +13943: islessequal(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return __builtin_islessequal(__type(__x), __type(__y)); +13943: } +13943: +13943: +13943: +13943: constexpr bool +13943: islessgreater(float __x, float __y) +13943: { return __builtin_islessgreater(__x, __y); } +13943: +13943: constexpr bool +13943: islessgreater(double __x, double __y) +13943: { return __builtin_islessgreater(__x, __y); } +13943: +13943: constexpr bool +13943: islessgreater(long double __x, long double __y) +13943: { return __builtin_islessgreater(__x, __y); } +13943: +13943: +13943: +13943: template +13943: constexpr typename +13943: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +13943: && __is_arithmetic<_Up>::__value), bool>::__type +13943: islessgreater(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return __builtin_islessgreater(__type(__x), __type(__y)); +13943: } +13943: +13943: +13943: +13943: constexpr bool +13943: isunordered(float __x, float __y) +13943: { return __builtin_isunordered(__x, __y); } +13943: +13943: constexpr bool +13943: isunordered(double __x, double __y) +13943: { return __builtin_isunordered(__x, __y); } +13943: +13943: constexpr bool +13943: isunordered(long double __x, long double __y) +13943: { return __builtin_isunordered(__x, __y); } +13943: +13943: +13943: +13943: template +13943: constexpr typename +13943: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +13943: && __is_arithmetic<_Up>::__value), bool>::__type +13943: isunordered(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return __builtin_isunordered(__type(__x), __type(__y)); +13943: } +13943: # 1820 "/usr/include/c++/14/cmath" 3 +13943: using ::acosf; +13943: +13943: +13943: using ::acosl; +13943: +13943: +13943: +13943: using ::asinf; +13943: +13943: +13943: using ::asinl; +13943: +13943: +13943: +13943: using ::atanf; +13943: +13943: +13943: using ::atanl; +13943: +13943: +13943: +13943: using ::atan2f; +13943: +13943: +13943: using ::atan2l; +13943: +13943: +13943: +13943: using ::ceilf; +13943: +13943: +13943: using ::ceill; +13943: +13943: +13943: +13943: using ::cosf; +13943: +13943: +13943: using ::cosl; +13943: +13943: +13943: +13943: using ::coshf; +13943: +13943: +13943: using ::coshl; +13943: +13943: +13943: +13943: using ::expf; +13943: +13943: +13943: using ::expl; +13943: +13943: +13943: +13943: using ::fabsf; +13943: +13943: +13943: using ::fabsl; +13943: +13943: +13943: +13943: using ::floorf; +13943: +13943: +13943: using ::floorl; +13943: +13943: +13943: +13943: using ::fmodf; +13943: +13943: +13943: using ::fmodl; +13943: +13943: +13943: +13943: using ::frexpf; +13943: +13943: +13943: using ::frexpl; +13943: +13943: +13943: +13943: using ::ldexpf; +13943: +13943: +13943: using ::ldexpl; +13943: +13943: +13943: +13943: using ::logf; +13943: +13943: +13943: using ::logl; +13943: +13943: +13943: +13943: using ::log10f; +13943: +13943: +13943: using ::log10l; +13943: +13943: +13943: +13943: using ::modff; +13943: +13943: +13943: using ::modfl; +13943: +13943: +13943: +13943: using ::powf; +13943: +13943: +13943: using ::powl; +13943: +13943: +13943: +13943: using ::sinf; +13943: +13943: +13943: using ::sinl; +13943: +13943: +13943: +13943: using ::sinhf; +13943: +13943: +13943: using ::sinhl; +13943: +13943: +13943: +13943: using ::sqrtf; +13943: +13943: +13943: using ::sqrtl; +13943: +13943: +13943: +13943: using ::tanf; +13943: +13943: +13943: using ::tanl; +13943: +13943: +13943: +13943: using ::tanhf; +13943: +13943: +13943: using ::tanhl; +13943: # 2085 "/usr/include/c++/14/cmath" 3 +13943: using ::double_t; +13943: using ::float_t; +13943: +13943: +13943: +13943: using ::acosh; +13943: using ::acoshf; +13943: using ::acoshl; +13943: +13943: using ::asinh; +13943: using ::asinhf; +13943: using ::asinhl; +13943: +13943: using ::atanh; +13943: using ::atanhf; +13943: using ::atanhl; +13943: +13943: using ::cbrt; +13943: using ::cbrtf; +13943: using ::cbrtl; +13943: +13943: using ::copysign; +13943: using ::copysignf; +13943: using ::copysignl; +13943: +13943: using ::erf; +13943: using ::erff; +13943: using ::erfl; +13943: +13943: using ::erfc; +13943: using ::erfcf; +13943: using ::erfcl; +13943: +13943: using ::exp2; +13943: using ::exp2f; +13943: using ::exp2l; +13943: +13943: using ::expm1; +13943: using ::expm1f; +13943: using ::expm1l; +13943: +13943: using ::fdim; +13943: using ::fdimf; +13943: using ::fdiml; +13943: +13943: using ::fma; +13943: using ::fmaf; +13943: using ::fmal; +13943: +13943: using ::fmax; +13943: using ::fmaxf; +13943: using ::fmaxl; +13943: +13943: using ::fmin; +13943: using ::fminf; +13943: using ::fminl; +13943: +13943: using ::hypot; +13943: using ::hypotf; +13943: using ::hypotl; +13943: +13943: using ::ilogb; +13943: using ::ilogbf; +13943: using ::ilogbl; +13943: +13943: using ::lgamma; +13943: using ::lgammaf; +13943: using ::lgammal; +13943: +13943: +13943: using ::llrint; +13943: using ::llrintf; +13943: using ::llrintl; +13943: +13943: using ::llround; +13943: using ::llroundf; +13943: using ::llroundl; +13943: +13943: +13943: using ::log1p; +13943: using ::log1pf; +13943: using ::log1pl; +13943: +13943: using ::log2; +13943: using ::log2f; +13943: using ::log2l; +13943: +13943: using ::logb; +13943: using ::logbf; +13943: using ::logbl; +13943: +13943: using ::lrint; +13943: using ::lrintf; +13943: using ::lrintl; +13943: +13943: using ::lround; +13943: using ::lroundf; +13943: using ::lroundl; +13943: +13943: using ::nan; +13943: using ::nanf; +13943: using ::nanl; +13943: +13943: using ::nearbyint; +13943: using ::nearbyintf; +13943: using ::nearbyintl; +13943: +13943: using ::nextafter; +13943: using ::nextafterf; +13943: using ::nextafterl; +13943: +13943: using ::nexttoward; +13943: using ::nexttowardf; +13943: using ::nexttowardl; +13943: +13943: using ::remainder; +13943: using ::remainderf; +13943: using ::remainderl; +13943: +13943: using ::remquo; +13943: using ::remquof; +13943: using ::remquol; +13943: +13943: using ::rint; +13943: using ::rintf; +13943: using ::rintl; +13943: +13943: using ::round; +13943: using ::roundf; +13943: using ::roundl; +13943: +13943: using ::scalbln; +13943: using ::scalblnf; +13943: using ::scalblnl; +13943: +13943: using ::scalbn; +13943: using ::scalbnf; +13943: using ::scalbnl; +13943: +13943: using ::tgamma; +13943: using ::tgammaf; +13943: using ::tgammal; +13943: +13943: using ::trunc; +13943: using ::truncf; +13943: using ::truncl; +13943: +13943: +13943: +13943: constexpr float +13943: acosh(float __x) +13943: { return __builtin_acoshf(__x); } +13943: +13943: constexpr long double +13943: acosh(long double __x) +13943: { return __builtin_acoshl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: acosh(_Tp __x) +13943: { return __builtin_acosh(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: asinh(float __x) +13943: { return __builtin_asinhf(__x); } +13943: +13943: constexpr long double +13943: asinh(long double __x) +13943: { return __builtin_asinhl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: asinh(_Tp __x) +13943: { return __builtin_asinh(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: atanh(float __x) +13943: { return __builtin_atanhf(__x); } +13943: +13943: constexpr long double +13943: atanh(long double __x) +13943: { return __builtin_atanhl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: atanh(_Tp __x) +13943: { return __builtin_atanh(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: cbrt(float __x) +13943: { return __builtin_cbrtf(__x); } +13943: +13943: constexpr long double +13943: cbrt(long double __x) +13943: { return __builtin_cbrtl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: cbrt(_Tp __x) +13943: { return __builtin_cbrt(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: copysign(float __x, float __y) +13943: { return __builtin_copysignf(__x, __y); } +13943: +13943: constexpr long double +13943: copysign(long double __x, long double __y) +13943: { return __builtin_copysignl(__x, __y); } +13943: +13943: +13943: +13943: constexpr float +13943: erf(float __x) +13943: { return __builtin_erff(__x); } +13943: +13943: constexpr long double +13943: erf(long double __x) +13943: { return __builtin_erfl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: erf(_Tp __x) +13943: { return __builtin_erf(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: erfc(float __x) +13943: { return __builtin_erfcf(__x); } +13943: +13943: constexpr long double +13943: erfc(long double __x) +13943: { return __builtin_erfcl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: erfc(_Tp __x) +13943: { return __builtin_erfc(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: exp2(float __x) +13943: { return __builtin_exp2f(__x); } +13943: +13943: constexpr long double +13943: exp2(long double __x) +13943: { return __builtin_exp2l(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: exp2(_Tp __x) +13943: { return __builtin_exp2(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: expm1(float __x) +13943: { return __builtin_expm1f(__x); } +13943: +13943: constexpr long double +13943: expm1(long double __x) +13943: { return __builtin_expm1l(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: expm1(_Tp __x) +13943: { return __builtin_expm1(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: fdim(float __x, float __y) +13943: { return __builtin_fdimf(__x, __y); } +13943: +13943: constexpr long double +13943: fdim(long double __x, long double __y) +13943: { return __builtin_fdiml(__x, __y); } +13943: +13943: +13943: +13943: constexpr float +13943: fma(float __x, float __y, float __z) +13943: { return __builtin_fmaf(__x, __y, __z); } +13943: +13943: constexpr long double +13943: fma(long double __x, long double __y, long double __z) +13943: { return __builtin_fmal(__x, __y, __z); } +13943: +13943: +13943: +13943: constexpr float +13943: fmax(float __x, float __y) +13943: { return __builtin_fmaxf(__x, __y); } +13943: +13943: constexpr long double +13943: fmax(long double __x, long double __y) +13943: { return __builtin_fmaxl(__x, __y); } +13943: +13943: +13943: +13943: constexpr float +13943: fmin(float __x, float __y) +13943: { return __builtin_fminf(__x, __y); } +13943: +13943: constexpr long double +13943: fmin(long double __x, long double __y) +13943: { return __builtin_fminl(__x, __y); } +13943: +13943: +13943: +13943: constexpr float +13943: hypot(float __x, float __y) +13943: { return __builtin_hypotf(__x, __y); } +13943: +13943: constexpr long double +13943: hypot(long double __x, long double __y) +13943: { return __builtin_hypotl(__x, __y); } +13943: +13943: +13943: +13943: constexpr int +13943: ilogb(float __x) +13943: { return __builtin_ilogbf(__x); } +13943: +13943: constexpr int +13943: ilogb(long double __x) +13943: { return __builtin_ilogbl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr +13943: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: int>::__type +13943: ilogb(_Tp __x) +13943: { return __builtin_ilogb(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: lgamma(float __x) +13943: { return __builtin_lgammaf(__x); } +13943: +13943: constexpr long double +13943: lgamma(long double __x) +13943: { return __builtin_lgammal(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: lgamma(_Tp __x) +13943: { return __builtin_lgamma(__x); } +13943: +13943: +13943: +13943: constexpr long long +13943: llrint(float __x) +13943: { return __builtin_llrintf(__x); } +13943: +13943: constexpr long long +13943: llrint(long double __x) +13943: { return __builtin_llrintl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: long long>::__type +13943: llrint(_Tp __x) +13943: { return __builtin_llrint(__x); } +13943: +13943: +13943: +13943: constexpr long long +13943: llround(float __x) +13943: { return __builtin_llroundf(__x); } +13943: +13943: constexpr long long +13943: llround(long double __x) +13943: { return __builtin_llroundl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: long long>::__type +13943: llround(_Tp __x) +13943: { return __builtin_llround(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: log1p(float __x) +13943: { return __builtin_log1pf(__x); } +13943: +13943: constexpr long double +13943: log1p(long double __x) +13943: { return __builtin_log1pl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: log1p(_Tp __x) +13943: { return __builtin_log1p(__x); } +13943: +13943: +13943: +13943: +13943: constexpr float +13943: log2(float __x) +13943: { return __builtin_log2f(__x); } +13943: +13943: constexpr long double +13943: log2(long double __x) +13943: { return __builtin_log2l(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: log2(_Tp __x) +13943: { return __builtin_log2(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: logb(float __x) +13943: { return __builtin_logbf(__x); } +13943: +13943: constexpr long double +13943: logb(long double __x) +13943: { return __builtin_logbl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: logb(_Tp __x) +13943: { return __builtin_logb(__x); } +13943: +13943: +13943: +13943: constexpr long +13943: lrint(float __x) +13943: { return __builtin_lrintf(__x); } +13943: +13943: constexpr long +13943: lrint(long double __x) +13943: { return __builtin_lrintl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: long>::__type +13943: lrint(_Tp __x) +13943: { return __builtin_lrint(__x); } +13943: +13943: +13943: +13943: constexpr long +13943: lround(float __x) +13943: { return __builtin_lroundf(__x); } +13943: +13943: constexpr long +13943: lround(long double __x) +13943: { return __builtin_lroundl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: long>::__type +13943: lround(_Tp __x) +13943: { return __builtin_lround(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: nearbyint(float __x) +13943: { return __builtin_nearbyintf(__x); } +13943: +13943: constexpr long double +13943: nearbyint(long double __x) +13943: { return __builtin_nearbyintl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: nearbyint(_Tp __x) +13943: { return __builtin_nearbyint(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: nextafter(float __x, float __y) +13943: { return __builtin_nextafterf(__x, __y); } +13943: +13943: constexpr long double +13943: nextafter(long double __x, long double __y) +13943: { return __builtin_nextafterl(__x, __y); } +13943: +13943: +13943: +13943: constexpr float +13943: nexttoward(float __x, long double __y) +13943: { return __builtin_nexttowardf(__x, __y); } +13943: +13943: constexpr long double +13943: nexttoward(long double __x, long double __y) +13943: { return __builtin_nexttowardl(__x, __y); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: nexttoward(_Tp __x, long double __y) +13943: { return __builtin_nexttoward(__x, __y); } +13943: +13943: +13943: +13943: constexpr float +13943: remainder(float __x, float __y) +13943: { return __builtin_remainderf(__x, __y); } +13943: +13943: constexpr long double +13943: remainder(long double __x, long double __y) +13943: { return __builtin_remainderl(__x, __y); } +13943: +13943: +13943: +13943: inline float +13943: remquo(float __x, float __y, int* __pquo) +13943: { return __builtin_remquof(__x, __y, __pquo); } +13943: +13943: inline long double +13943: remquo(long double __x, long double __y, int* __pquo) +13943: { return __builtin_remquol(__x, __y, __pquo); } +13943: +13943: +13943: +13943: constexpr float +13943: rint(float __x) +13943: { return __builtin_rintf(__x); } +13943: +13943: constexpr long double +13943: rint(long double __x) +13943: { return __builtin_rintl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: rint(_Tp __x) +13943: { return __builtin_rint(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: round(float __x) +13943: { return __builtin_roundf(__x); } +13943: +13943: constexpr long double +13943: round(long double __x) +13943: { return __builtin_roundl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: round(_Tp __x) +13943: { return __builtin_round(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: scalbln(float __x, long __ex) +13943: { return __builtin_scalblnf(__x, __ex); } +13943: +13943: constexpr long double +13943: scalbln(long double __x, long __ex) +13943: { return __builtin_scalblnl(__x, __ex); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: scalbln(_Tp __x, long __ex) +13943: { return __builtin_scalbln(__x, __ex); } +13943: +13943: +13943: +13943: constexpr float +13943: scalbn(float __x, int __ex) +13943: { return __builtin_scalbnf(__x, __ex); } +13943: +13943: constexpr long double +13943: scalbn(long double __x, int __ex) +13943: { return __builtin_scalbnl(__x, __ex); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: scalbn(_Tp __x, int __ex) +13943: { return __builtin_scalbn(__x, __ex); } +13943: +13943: +13943: +13943: constexpr float +13943: tgamma(float __x) +13943: { return __builtin_tgammaf(__x); } +13943: +13943: constexpr long double +13943: tgamma(long double __x) +13943: { return __builtin_tgammal(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: tgamma(_Tp __x) +13943: { return __builtin_tgamma(__x); } +13943: +13943: +13943: +13943: constexpr float +13943: trunc(float __x) +13943: { return __builtin_truncf(__x); } +13943: +13943: constexpr long double +13943: trunc(long double __x) +13943: { return __builtin_truncl(__x); } +13943: +13943: +13943: +13943: template +13943: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +13943: double>::__type +13943: trunc(_Tp __x) +13943: { return __builtin_trunc(__x); } +13943: # 3682 "/usr/include/c++/14/cmath" 3 +13943: template +13943: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: copysign(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return copysign(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: fdim(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return fdim(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: fmax(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return fmax(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: fmin(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return fmin(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: hypot(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return hypot(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: nextafter(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return nextafter(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: remainder(_Tp __x, _Up __y) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return remainder(__type(__x), __type(__y)); +13943: } +13943: +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +13943: remquo(_Tp __x, _Up __y, int* __pquo) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +13943: return remquo(__type(__x), __type(__y), __pquo); +13943: } +13943: +13943: template +13943: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type +13943: fma(_Tp __x, _Up __y, _Vp __z) +13943: { +13943: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; +13943: return fma(__type(__x), __type(__y), __type(__z)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline _Tp +13943: __hypot3(_Tp __x, _Tp __y, _Tp __z) +13943: { +13943: __x = std::abs(__x); +13943: __y = std::abs(__y); +13943: __z = std::abs(__z); +13943: if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x) +13943: return __a * std::sqrt((__x / __a) * (__x / __a) +13943: + (__y / __a) * (__y / __a) +13943: + (__z / __a) * (__z / __a)); +13943: else +13943: return {}; +13943: } +13943: +13943: inline float +13943: hypot(float __x, float __y, float __z) +13943: { return std::__hypot3(__x, __y, __z); } +13943: +13943: inline double +13943: hypot(double __x, double __y, double __z) +13943: { return std::__hypot3(__x, __y, __z); } +13943: +13943: inline long double +13943: hypot(long double __x, long double __y, long double __z) +13943: { return std::__hypot3(__x, __y, __z); } +13943: +13943: template +13943: __gnu_cxx::__promoted_t<_Tp, _Up, _Vp> +13943: hypot(_Tp __x, _Up __y, _Vp __z) +13943: { +13943: using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>; +13943: return std::__hypot3<__type>(__x, __y, __z); +13943: } +13943: # 3902 "/usr/include/c++/14/cmath" 3 +13943: +13943: } +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/specfun.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/specfun.h" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 38 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 47 "/usr/include/c++/14/bits/specfun.h" 3 +13943: # 1 "/usr/include/c++/14/tr1/gamma.tcc" 1 3 +13943: # 49 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: # 1 "/usr/include/c++/14/tr1/special_function_util.h" 1 3 +13943: # 39 "/usr/include/c++/14/tr1/special_function_util.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 50 "/usr/include/c++/14/tr1/special_function_util.h" 3 +13943: namespace __detail +13943: { +13943: +13943: +13943: +13943: template +13943: struct __floating_point_constant +13943: { +13943: static const _Tp __value; +13943: }; +13943: +13943: +13943: +13943: template +13943: struct __numeric_constants +13943: { +13943: +13943: static _Tp __pi() throw() +13943: { return static_cast<_Tp>(3.1415926535897932384626433832795029L); } +13943: +13943: static _Tp __pi_2() throw() +13943: { return static_cast<_Tp>(1.5707963267948966192313216916397514L); } +13943: +13943: static _Tp __pi_3() throw() +13943: { return static_cast<_Tp>(1.0471975511965977461542144610931676L); } +13943: +13943: static _Tp __pi_4() throw() +13943: { return static_cast<_Tp>(0.7853981633974483096156608458198757L); } +13943: +13943: static _Tp __1_pi() throw() +13943: { return static_cast<_Tp>(0.3183098861837906715377675267450287L); } +13943: +13943: static _Tp __2_sqrtpi() throw() +13943: { return static_cast<_Tp>(1.1283791670955125738961589031215452L); } +13943: +13943: static _Tp __sqrt2() throw() +13943: { return static_cast<_Tp>(1.4142135623730950488016887242096981L); } +13943: +13943: static _Tp __sqrt3() throw() +13943: { return static_cast<_Tp>(1.7320508075688772935274463415058723L); } +13943: +13943: static _Tp __sqrtpio2() throw() +13943: { return static_cast<_Tp>(1.2533141373155002512078826424055226L); } +13943: +13943: static _Tp __sqrt1_2() throw() +13943: { return static_cast<_Tp>(0.7071067811865475244008443621048490L); } +13943: +13943: static _Tp __lnpi() throw() +13943: { return static_cast<_Tp>(1.1447298858494001741434273513530587L); } +13943: +13943: static _Tp __gamma_e() throw() +13943: { return static_cast<_Tp>(0.5772156649015328606065120900824024L); } +13943: +13943: static _Tp __euler() throw() +13943: { return static_cast<_Tp>(2.7182818284590452353602874713526625L); } +13943: }; +13943: # 114 "/usr/include/c++/14/tr1/special_function_util.h" 3 +13943: template +13943: inline bool __isnan(_Tp __x) +13943: { return std::isnan(__x); } +13943: # 133 "/usr/include/c++/14/tr1/special_function_util.h" 3 +13943: } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 50 "/usr/include/c++/14/tr1/gamma.tcc" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 65 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: namespace __detail +13943: { +13943: # 76 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __bernoulli_series(unsigned int __n) +13943: { +13943: +13943: static const _Tp __num[28] = { +13943: _Tp(1UL), -_Tp(1UL) / _Tp(2UL), +13943: _Tp(1UL) / _Tp(6UL), _Tp(0UL), +13943: -_Tp(1UL) / _Tp(30UL), _Tp(0UL), +13943: _Tp(1UL) / _Tp(42UL), _Tp(0UL), +13943: -_Tp(1UL) / _Tp(30UL), _Tp(0UL), +13943: _Tp(5UL) / _Tp(66UL), _Tp(0UL), +13943: -_Tp(691UL) / _Tp(2730UL), _Tp(0UL), +13943: _Tp(7UL) / _Tp(6UL), _Tp(0UL), +13943: -_Tp(3617UL) / _Tp(510UL), _Tp(0UL), +13943: _Tp(43867UL) / _Tp(798UL), _Tp(0UL), +13943: -_Tp(174611) / _Tp(330UL), _Tp(0UL), +13943: _Tp(854513UL) / _Tp(138UL), _Tp(0UL), +13943: -_Tp(236364091UL) / _Tp(2730UL), _Tp(0UL), +13943: _Tp(8553103UL) / _Tp(6UL), _Tp(0UL) +13943: }; +13943: +13943: if (__n == 0) +13943: return _Tp(1); +13943: +13943: if (__n == 1) +13943: return -_Tp(1) / _Tp(2); +13943: +13943: +13943: if (__n % 2 == 1) +13943: return _Tp(0); +13943: +13943: +13943: if (__n < 28) +13943: return __num[__n]; +13943: +13943: +13943: _Tp __fact = _Tp(1); +13943: if ((__n / 2) % 2 == 0) +13943: __fact *= _Tp(-1); +13943: for (unsigned int __k = 1; __k <= __n; ++__k) +13943: __fact *= __k / (_Tp(2) * __numeric_constants<_Tp>::__pi()); +13943: __fact *= _Tp(2); +13943: +13943: _Tp __sum = _Tp(0); +13943: for (unsigned int __i = 1; __i < 1000; ++__i) +13943: { +13943: _Tp __term = std::pow(_Tp(__i), -_Tp(__n)); +13943: if (__term < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: __sum += __term; +13943: } +13943: +13943: return __fact * __sum; +13943: } +13943: # 139 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: inline _Tp +13943: __bernoulli(int __n) +13943: { return __bernoulli_series<_Tp>(__n); } +13943: # 153 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __log_gamma_bernoulli(_Tp __x) +13943: { +13943: _Tp __lg = (__x - _Tp(0.5L)) * std::log(__x) - __x +13943: + _Tp(0.5L) * std::log(_Tp(2) +13943: * __numeric_constants<_Tp>::__pi()); +13943: +13943: const _Tp __xx = __x * __x; +13943: _Tp __help = _Tp(1) / __x; +13943: for ( unsigned int __i = 1; __i < 20; ++__i ) +13943: { +13943: const _Tp __2i = _Tp(2 * __i); +13943: __help /= __2i * (__2i - _Tp(1)) * __xx; +13943: __lg += __bernoulli<_Tp>(2 * __i) * __help; +13943: } +13943: +13943: return __lg; +13943: } +13943: # 181 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __log_gamma_lanczos(_Tp __x) +13943: { +13943: const _Tp __xm1 = __x - _Tp(1); +13943: +13943: static const _Tp __lanczos_cheb_7[9] = { +13943: _Tp( 0.99999999999980993227684700473478L), +13943: _Tp( 676.520368121885098567009190444019L), +13943: _Tp(-1259.13921672240287047156078755283L), +13943: _Tp( 771.3234287776530788486528258894L), +13943: _Tp(-176.61502916214059906584551354L), +13943: _Tp( 12.507343278686904814458936853L), +13943: _Tp(-0.13857109526572011689554707L), +13943: _Tp( 9.984369578019570859563e-6L), +13943: _Tp( 1.50563273514931155834e-7L) +13943: }; +13943: +13943: static const _Tp __LOGROOT2PI +13943: = _Tp(0.9189385332046727417803297364056176L); +13943: +13943: _Tp __sum = __lanczos_cheb_7[0]; +13943: for(unsigned int __k = 1; __k < 9; ++__k) +13943: __sum += __lanczos_cheb_7[__k] / (__xm1 + __k); +13943: +13943: const _Tp __term1 = (__xm1 + _Tp(0.5L)) +13943: * std::log((__xm1 + _Tp(7.5L)) +13943: / __numeric_constants<_Tp>::__euler()); +13943: const _Tp __term2 = __LOGROOT2PI + std::log(__sum); +13943: const _Tp __result = __term1 + (__term2 - _Tp(7)); +13943: +13943: return __result; +13943: } +13943: # 225 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __log_gamma(_Tp __x) +13943: { +13943: if (__x > _Tp(0.5L)) +13943: return __log_gamma_lanczos(__x); +13943: else +13943: { +13943: const _Tp __sin_fact +13943: = std::abs(std::sin(__numeric_constants<_Tp>::__pi() * __x)); +13943: if (__sin_fact == _Tp(0)) +13943: std::__throw_domain_error(("Argument is nonpositive integer " "in __log_gamma") +13943: ); +13943: return __numeric_constants<_Tp>::__lnpi() +13943: - std::log(__sin_fact) +13943: - __log_gamma_lanczos(_Tp(1) - __x); +13943: } +13943: } +13943: # 252 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __log_gamma_sign(_Tp __x) +13943: { +13943: if (__x > _Tp(0)) +13943: return _Tp(1); +13943: else +13943: { +13943: const _Tp __sin_fact +13943: = std::sin(__numeric_constants<_Tp>::__pi() * __x); +13943: if (__sin_fact > _Tp(0)) +13943: return (1); +13943: else if (__sin_fact < _Tp(0)) +13943: return -_Tp(1); +13943: else +13943: return _Tp(0); +13943: } +13943: } +13943: # 283 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __log_bincoef(unsigned int __n, unsigned int __k) +13943: { +13943: +13943: static const _Tp __max_bincoeff +13943: = std::numeric_limits<_Tp>::max_exponent10 +13943: * std::log(_Tp(10)) - _Tp(1); +13943: +13943: _Tp __coeff = ::std::lgamma(_Tp(1 + __n)) +13943: - ::std::lgamma(_Tp(1 + __k)) +13943: - ::std::lgamma(_Tp(1 + __n - __k)); +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 314 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __bincoef(unsigned int __n, unsigned int __k) +13943: { +13943: +13943: static const _Tp __max_bincoeff +13943: = std::numeric_limits<_Tp>::max_exponent10 +13943: * std::log(_Tp(10)) - _Tp(1); +13943: +13943: const _Tp __log_coeff = __log_bincoef<_Tp>(__n, __k); +13943: if (__log_coeff > __max_bincoeff) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else +13943: return std::exp(__log_coeff); +13943: } +13943: # 337 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: inline _Tp +13943: __gamma(_Tp __x) +13943: { return std::exp(__log_gamma(__x)); } +13943: # 356 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __psi_series(_Tp __x) +13943: { +13943: _Tp __sum = -__numeric_constants<_Tp>::__gamma_e() - _Tp(1) / __x; +13943: const unsigned int __max_iter = 100000; +13943: for (unsigned int __k = 1; __k < __max_iter; ++__k) +13943: { +13943: const _Tp __term = __x / (__k * (__k + __x)); +13943: __sum += __term; +13943: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: } +13943: return __sum; +13943: } +13943: # 386 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __psi_asymp(_Tp __x) +13943: { +13943: _Tp __sum = std::log(__x) - _Tp(0.5L) / __x; +13943: const _Tp __xx = __x * __x; +13943: _Tp __xp = __xx; +13943: const unsigned int __max_iter = 100; +13943: for (unsigned int __k = 1; __k < __max_iter; ++__k) +13943: { +13943: const _Tp __term = __bernoulli<_Tp>(2 * __k) / (2 * __k * __xp); +13943: __sum -= __term; +13943: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: __xp *= __xx; +13943: } +13943: return __sum; +13943: } +13943: # 417 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __psi(_Tp __x) +13943: { +13943: const int __n = static_cast(__x + 0.5L); +13943: const _Tp __eps = _Tp(4) * std::numeric_limits<_Tp>::epsilon(); +13943: if (__n <= 0 && std::abs(__x - _Tp(__n)) < __eps) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__x < _Tp(0)) +13943: { +13943: const _Tp __pi = __numeric_constants<_Tp>::__pi(); +13943: return __psi(_Tp(1) - __x) +13943: - __pi * std::cos(__pi * __x) / std::sin(__pi * __x); +13943: } +13943: else if (__x > _Tp(100)) +13943: return __psi_asymp(__x); +13943: else +13943: return __psi_series(__x); +13943: } +13943: # 446 "/usr/include/c++/14/tr1/gamma.tcc" 3 +13943: template +13943: _Tp +13943: __psi(unsigned int __n, _Tp __x) +13943: { +13943: if (__x <= _Tp(0)) +13943: std::__throw_domain_error(("Argument out of range " "in __psi") +13943: ); +13943: else if (__n == 0) +13943: return __psi(__x); +13943: else +13943: { +13943: const _Tp __hzeta = __hurwitz_zeta(_Tp(__n + 1), __x); +13943: +13943: const _Tp __ln_nfact = ::std::lgamma(_Tp(__n + 1)); +13943: +13943: +13943: +13943: _Tp __result = std::exp(__ln_nfact) * __hzeta; +13943: if (__n % 2 == 1) +13943: __result = -__result; +13943: return __result; +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 48 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/bessel_function.tcc" 1 3 +13943: # 55 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 71 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: namespace __detail +13943: { +13943: # 98 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: void +13943: __gamma_temme(_Tp __mu, +13943: _Tp & __gam1, _Tp & __gam2, _Tp & __gampl, _Tp & __gammi) +13943: { +13943: +13943: __gampl = _Tp(1) / ::std::tgamma(_Tp(1) + __mu); +13943: __gammi = _Tp(1) / ::std::tgamma(_Tp(1) - __mu); +13943: +13943: +13943: +13943: +13943: +13943: if (std::abs(__mu) < std::numeric_limits<_Tp>::epsilon()) +13943: __gam1 = -_Tp(__numeric_constants<_Tp>::__gamma_e()); +13943: else +13943: __gam1 = (__gammi - __gampl) / (_Tp(2) * __mu); +13943: +13943: __gam2 = (__gammi + __gampl) / (_Tp(2)); +13943: +13943: return; +13943: } +13943: # 136 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: void +13943: __bessel_jn(_Tp __nu, _Tp __x, +13943: _Tp & __Jnu, _Tp & __Nnu, _Tp & __Jpnu, _Tp & __Npnu) +13943: { +13943: if (__x == _Tp(0)) +13943: { +13943: if (__nu == _Tp(0)) +13943: { +13943: __Jnu = _Tp(1); +13943: __Jpnu = _Tp(0); +13943: } +13943: else if (__nu == _Tp(1)) +13943: { +13943: __Jnu = _Tp(0); +13943: __Jpnu = _Tp(0.5L); +13943: } +13943: else +13943: { +13943: __Jnu = _Tp(0); +13943: __Jpnu = _Tp(0); +13943: } +13943: __Nnu = -std::numeric_limits<_Tp>::infinity(); +13943: __Npnu = std::numeric_limits<_Tp>::infinity(); +13943: return; +13943: } +13943: +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: +13943: +13943: +13943: +13943: const _Tp __fp_min = std::sqrt(std::numeric_limits<_Tp>::min()); +13943: const int __max_iter = 15000; +13943: const _Tp __x_min = _Tp(2); +13943: +13943: const int __nl = (__x < __x_min +13943: ? static_cast(__nu + _Tp(0.5L)) +13943: : std::max(0, static_cast(__nu - __x + _Tp(1.5L)))); +13943: +13943: const _Tp __mu = __nu - __nl; +13943: const _Tp __mu2 = __mu * __mu; +13943: const _Tp __xi = _Tp(1) / __x; +13943: const _Tp __xi2 = _Tp(2) * __xi; +13943: _Tp __w = __xi2 / __numeric_constants<_Tp>::__pi(); +13943: int __isign = 1; +13943: _Tp __h = __nu * __xi; +13943: if (__h < __fp_min) +13943: __h = __fp_min; +13943: _Tp __b = __xi2 * __nu; +13943: _Tp __d = _Tp(0); +13943: _Tp __c = __h; +13943: int __i; +13943: for (__i = 1; __i <= __max_iter; ++__i) +13943: { +13943: __b += __xi2; +13943: __d = __b - __d; +13943: if (std::abs(__d) < __fp_min) +13943: __d = __fp_min; +13943: __c = __b - _Tp(1) / __c; +13943: if (std::abs(__c) < __fp_min) +13943: __c = __fp_min; +13943: __d = _Tp(1) / __d; +13943: const _Tp __del = __c * __d; +13943: __h *= __del; +13943: if (__d < _Tp(0)) +13943: __isign = -__isign; +13943: if (std::abs(__del - _Tp(1)) < __eps) +13943: break; +13943: } +13943: if (__i > __max_iter) +13943: std::__throw_runtime_error(("Argument x too large in __bessel_jn; " "try asymptotic expansion.") +13943: ); +13943: _Tp __Jnul = __isign * __fp_min; +13943: _Tp __Jpnul = __h * __Jnul; +13943: _Tp __Jnul1 = __Jnul; +13943: _Tp __Jpnu1 = __Jpnul; +13943: _Tp __fact = __nu * __xi; +13943: for ( int __l = __nl; __l >= 1; --__l ) +13943: { +13943: const _Tp __Jnutemp = __fact * __Jnul + __Jpnul; +13943: __fact -= __xi; +13943: __Jpnul = __fact * __Jnutemp - __Jnul; +13943: __Jnul = __Jnutemp; +13943: } +13943: if (__Jnul == _Tp(0)) +13943: __Jnul = __eps; +13943: _Tp __f= __Jpnul / __Jnul; +13943: _Tp __Nmu, __Nnu1, __Npmu, __Jmu; +13943: if (__x < __x_min) +13943: { +13943: const _Tp __x2 = __x / _Tp(2); +13943: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu; +13943: _Tp __fact = (std::abs(__pimu) < __eps +13943: ? _Tp(1) : __pimu / std::sin(__pimu)); +13943: _Tp __d = -std::log(__x2); +13943: _Tp __e = __mu * __d; +13943: _Tp __fact2 = (std::abs(__e) < __eps +13943: ? _Tp(1) : std::sinh(__e) / __e); +13943: _Tp __gam1, __gam2, __gampl, __gammi; +13943: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi); +13943: _Tp __ff = (_Tp(2) / __numeric_constants<_Tp>::__pi()) +13943: * __fact * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d); +13943: __e = std::exp(__e); +13943: _Tp __p = __e / (__numeric_constants<_Tp>::__pi() * __gampl); +13943: _Tp __q = _Tp(1) / (__e * __numeric_constants<_Tp>::__pi() * __gammi); +13943: const _Tp __pimu2 = __pimu / _Tp(2); +13943: _Tp __fact3 = (std::abs(__pimu2) < __eps +13943: ? _Tp(1) : std::sin(__pimu2) / __pimu2 ); +13943: _Tp __r = __numeric_constants<_Tp>::__pi() * __pimu2 * __fact3 * __fact3; +13943: _Tp __c = _Tp(1); +13943: __d = -__x2 * __x2; +13943: _Tp __sum = __ff + __r * __q; +13943: _Tp __sum1 = __p; +13943: for (__i = 1; __i <= __max_iter; ++__i) +13943: { +13943: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2); +13943: __c *= __d / _Tp(__i); +13943: __p /= _Tp(__i) - __mu; +13943: __q /= _Tp(__i) + __mu; +13943: const _Tp __del = __c * (__ff + __r * __q); +13943: __sum += __del; +13943: const _Tp __del1 = __c * __p - __i * __del; +13943: __sum1 += __del1; +13943: if ( std::abs(__del) < __eps * (_Tp(1) + std::abs(__sum)) ) +13943: break; +13943: } +13943: if ( __i > __max_iter ) +13943: std::__throw_runtime_error(("Bessel y series failed to converge " "in __bessel_jn.") +13943: ); +13943: __Nmu = -__sum; +13943: __Nnu1 = -__sum1 * __xi2; +13943: __Npmu = __mu * __xi * __Nmu - __Nnu1; +13943: __Jmu = __w / (__Npmu - __f * __Nmu); +13943: } +13943: else +13943: { +13943: _Tp __a = _Tp(0.25L) - __mu2; +13943: _Tp __q = _Tp(1); +13943: _Tp __p = -__xi / _Tp(2); +13943: _Tp __br = _Tp(2) * __x; +13943: _Tp __bi = _Tp(2); +13943: _Tp __fact = __a * __xi / (__p * __p + __q * __q); +13943: _Tp __cr = __br + __q * __fact; +13943: _Tp __ci = __bi + __p * __fact; +13943: _Tp __den = __br * __br + __bi * __bi; +13943: _Tp __dr = __br / __den; +13943: _Tp __di = -__bi / __den; +13943: _Tp __dlr = __cr * __dr - __ci * __di; +13943: _Tp __dli = __cr * __di + __ci * __dr; +13943: _Tp __temp = __p * __dlr - __q * __dli; +13943: __q = __p * __dli + __q * __dlr; +13943: __p = __temp; +13943: int __i; +13943: for (__i = 2; __i <= __max_iter; ++__i) +13943: { +13943: __a += _Tp(2 * (__i - 1)); +13943: __bi += _Tp(2); +13943: __dr = __a * __dr + __br; +13943: __di = __a * __di + __bi; +13943: if (std::abs(__dr) + std::abs(__di) < __fp_min) +13943: __dr = __fp_min; +13943: __fact = __a / (__cr * __cr + __ci * __ci); +13943: __cr = __br + __cr * __fact; +13943: __ci = __bi - __ci * __fact; +13943: if (std::abs(__cr) + std::abs(__ci) < __fp_min) +13943: __cr = __fp_min; +13943: __den = __dr * __dr + __di * __di; +13943: __dr /= __den; +13943: __di /= -__den; +13943: __dlr = __cr * __dr - __ci * __di; +13943: __dli = __cr * __di + __ci * __dr; +13943: __temp = __p * __dlr - __q * __dli; +13943: __q = __p * __dli + __q * __dlr; +13943: __p = __temp; +13943: if (std::abs(__dlr - _Tp(1)) + std::abs(__dli) < __eps) +13943: break; +13943: } +13943: if (__i > __max_iter) +13943: std::__throw_runtime_error(("Lentz's method failed " "in __bessel_jn.") +13943: ); +13943: const _Tp __gam = (__p - __f) / __q; +13943: __Jmu = std::sqrt(__w / ((__p - __f) * __gam + __q)); +13943: +13943: __Jmu = ::std::copysign(__Jmu, __Jnul); +13943: +13943: +13943: +13943: +13943: __Nmu = __gam * __Jmu; +13943: __Npmu = (__p + __q / __gam) * __Nmu; +13943: __Nnu1 = __mu * __xi * __Nmu - __Npmu; +13943: } +13943: __fact = __Jmu / __Jnul; +13943: __Jnu = __fact * __Jnul1; +13943: __Jpnu = __fact * __Jpnu1; +13943: for (__i = 1; __i <= __nl; ++__i) +13943: { +13943: const _Tp __Nnutemp = (__mu + __i) * __xi2 * __Nnu1 - __Nmu; +13943: __Nmu = __Nnu1; +13943: __Nnu1 = __Nnutemp; +13943: } +13943: __Nnu = __Nmu; +13943: __Npnu = __nu * __xi * __Nmu - __Nnu1; +13943: +13943: return; +13943: } +13943: # 361 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: void +13943: __cyl_bessel_jn_asymp(_Tp __nu, _Tp __x, _Tp & __Jnu, _Tp & __Nnu) +13943: { +13943: const _Tp __mu = _Tp(4) * __nu * __nu; +13943: const _Tp __8x = _Tp(8) * __x; +13943: +13943: _Tp __P = _Tp(0); +13943: _Tp __Q = _Tp(0); +13943: +13943: _Tp __k = _Tp(0); +13943: _Tp __term = _Tp(1); +13943: +13943: int __epsP = 0; +13943: int __epsQ = 0; +13943: +13943: _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: +13943: do +13943: { +13943: __term *= (__k == 0 +13943: ? _Tp(1) +13943: : -(__mu - (2 * __k - 1) * (2 * __k - 1)) / (__k * __8x)); +13943: +13943: __epsP = std::abs(__term) < __eps * std::abs(__P); +13943: __P += __term; +13943: +13943: __k++; +13943: +13943: __term *= (__mu - (2 * __k - 1) * (2 * __k - 1)) / (__k * __8x); +13943: __epsQ = std::abs(__term) < __eps * std::abs(__Q); +13943: __Q += __term; +13943: +13943: if (__epsP && __epsQ && __k > (__nu / 2.)) +13943: break; +13943: +13943: __k++; +13943: } +13943: while (__k < 1000); +13943: +13943: const _Tp __chi = __x - (__nu + _Tp(0.5L)) +13943: * __numeric_constants<_Tp>::__pi_2(); +13943: +13943: const _Tp __c = std::cos(__chi); +13943: const _Tp __s = std::sin(__chi); +13943: +13943: const _Tp __coef = std::sqrt(_Tp(2) +13943: / (__numeric_constants<_Tp>::__pi() * __x)); +13943: +13943: __Jnu = __coef * (__c * __P - __s * __Q); +13943: __Nnu = __coef * (__s * __P + __c * __Q); +13943: +13943: return; +13943: } +13943: # 444 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: _Tp +13943: __cyl_bessel_ij_series(_Tp __nu, _Tp __x, _Tp __sgn, +13943: unsigned int __max_iter) +13943: { +13943: if (__x == _Tp(0)) +13943: return __nu == _Tp(0) ? _Tp(1) : _Tp(0); +13943: +13943: const _Tp __x2 = __x / _Tp(2); +13943: _Tp __fact = __nu * std::log(__x2); +13943: +13943: __fact -= ::std::lgamma(__nu + _Tp(1)); +13943: +13943: +13943: +13943: __fact = std::exp(__fact); +13943: const _Tp __xx4 = __sgn * __x2 * __x2; +13943: _Tp __Jn = _Tp(1); +13943: _Tp __term = _Tp(1); +13943: +13943: for (unsigned int __i = 1; __i < __max_iter; ++__i) +13943: { +13943: __term *= __xx4 / (_Tp(__i) * (__nu + _Tp(__i))); +13943: __Jn += __term; +13943: if (std::abs(__term / __Jn) < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: } +13943: +13943: return __fact * __Jn; +13943: } +13943: # 490 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: _Tp +13943: __cyl_bessel_j(_Tp __nu, _Tp __x) +13943: { +13943: if (__nu < _Tp(0) || __x < _Tp(0)) +13943: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_j.") +13943: ); +13943: else if (__isnan(__nu) || __isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__x * __x < _Tp(10) * (__nu + _Tp(1))) +13943: return __cyl_bessel_ij_series(__nu, __x, -_Tp(1), 200); +13943: else if (__x > _Tp(1000)) +13943: { +13943: _Tp __J_nu, __N_nu; +13943: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu); +13943: return __J_nu; +13943: } +13943: else +13943: { +13943: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; +13943: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); +13943: return __J_nu; +13943: } +13943: } +13943: # 532 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: _Tp +13943: __cyl_neumann_n(_Tp __nu, _Tp __x) +13943: { +13943: if (__nu < _Tp(0) || __x < _Tp(0)) +13943: std::__throw_domain_error(("Bad argument " "in __cyl_neumann_n.") +13943: ); +13943: else if (__isnan(__nu) || __isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__x > _Tp(1000)) +13943: { +13943: _Tp __J_nu, __N_nu; +13943: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu); +13943: return __N_nu; +13943: } +13943: else +13943: { +13943: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; +13943: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); +13943: return __N_nu; +13943: } +13943: } +13943: # 569 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: void +13943: __sph_bessel_jn(unsigned int __n, _Tp __x, +13943: _Tp & __j_n, _Tp & __n_n, _Tp & __jp_n, _Tp & __np_n) +13943: { +13943: const _Tp __nu = _Tp(__n) + _Tp(0.5L); +13943: +13943: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; +13943: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); +13943: +13943: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2() +13943: / std::sqrt(__x); +13943: +13943: __j_n = __factor * __J_nu; +13943: __n_n = __factor * __N_nu; +13943: __jp_n = __factor * __Jp_nu - __j_n / (_Tp(2) * __x); +13943: __np_n = __factor * __Np_nu - __n_n / (_Tp(2) * __x); +13943: +13943: return; +13943: } +13943: # 604 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: _Tp +13943: __sph_bessel(unsigned int __n, _Tp __x) +13943: { +13943: if (__x < _Tp(0)) +13943: std::__throw_domain_error(("Bad argument " "in __sph_bessel.") +13943: ); +13943: else if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__x == _Tp(0)) +13943: { +13943: if (__n == 0) +13943: return _Tp(1); +13943: else +13943: return _Tp(0); +13943: } +13943: else +13943: { +13943: _Tp __j_n, __n_n, __jp_n, __np_n; +13943: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n); +13943: return __j_n; +13943: } +13943: } +13943: # 642 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +13943: template +13943: _Tp +13943: __sph_neumann(unsigned int __n, _Tp __x) +13943: { +13943: if (__x < _Tp(0)) +13943: std::__throw_domain_error(("Bad argument " "in __sph_neumann.") +13943: ); +13943: else if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__x == _Tp(0)) +13943: return -std::numeric_limits<_Tp>::infinity(); +13943: else +13943: { +13943: _Tp __j_n, __n_n, __jp_n, __np_n; +13943: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n); +13943: return __n_n; +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 49 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/beta_function.tcc" 1 3 +13943: # 49 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 65 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +13943: namespace __detail +13943: { +13943: # 79 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +13943: template +13943: _Tp +13943: __beta_gamma(_Tp __x, _Tp __y) +13943: { +13943: +13943: _Tp __bet; +13943: +13943: if (__x > __y) +13943: { +13943: __bet = ::std::tgamma(__x) +13943: / ::std::tgamma(__x + __y); +13943: __bet *= ::std::tgamma(__y); +13943: } +13943: else +13943: { +13943: __bet = ::std::tgamma(__y) +13943: / ::std::tgamma(__x + __y); +13943: __bet *= ::std::tgamma(__x); +13943: } +13943: # 111 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +13943: return __bet; +13943: } +13943: # 127 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +13943: template +13943: _Tp +13943: __beta_lgamma(_Tp __x, _Tp __y) +13943: { +13943: +13943: _Tp __bet = ::std::lgamma(__x) +13943: + ::std::lgamma(__y) +13943: - ::std::lgamma(__x + __y); +13943: +13943: +13943: +13943: +13943: +13943: __bet = std::exp(__bet); +13943: return __bet; +13943: } +13943: # 158 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +13943: template +13943: _Tp +13943: __beta_product(_Tp __x, _Tp __y) +13943: { +13943: +13943: _Tp __bet = (__x + __y) / (__x * __y); +13943: +13943: unsigned int __max_iter = 1000000; +13943: for (unsigned int __k = 1; __k < __max_iter; ++__k) +13943: { +13943: _Tp __term = (_Tp(1) + (__x + __y) / __k) +13943: / ((_Tp(1) + __x / __k) * (_Tp(1) + __y / __k)); +13943: __bet *= __term; +13943: } +13943: +13943: return __bet; +13943: } +13943: # 189 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +13943: template +13943: inline _Tp +13943: __beta(_Tp __x, _Tp __y) +13943: { +13943: if (__isnan(__x) || __isnan(__y)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else +13943: return __beta_lgamma(__x, __y); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 50 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/ell_integral.tcc" 1 3 +13943: # 45 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 59 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: namespace __detail +13943: { +13943: # 76 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __ellint_rf(_Tp __x, _Tp __y, _Tp __z) +13943: { +13943: const _Tp __min = std::numeric_limits<_Tp>::min(); +13943: const _Tp __lolim = _Tp(5) * __min; +13943: +13943: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0)) +13943: std::__throw_domain_error(("Argument less than zero " "in __ellint_rf.") +13943: ); +13943: else if (__x + __y < __lolim || __x + __z < __lolim +13943: || __y + __z < __lolim) +13943: std::__throw_domain_error(("Argument too small in __ellint_rf")); +13943: else +13943: { +13943: const _Tp __c0 = _Tp(1) / _Tp(4); +13943: const _Tp __c1 = _Tp(1) / _Tp(24); +13943: const _Tp __c2 = _Tp(1) / _Tp(10); +13943: const _Tp __c3 = _Tp(3) / _Tp(44); +13943: const _Tp __c4 = _Tp(1) / _Tp(14); +13943: +13943: _Tp __xn = __x; +13943: _Tp __yn = __y; +13943: _Tp __zn = __z; +13943: +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __errtol = std::pow(__eps, _Tp(1) / _Tp(6)); +13943: _Tp __mu; +13943: _Tp __xndev, __yndev, __zndev; +13943: +13943: const unsigned int __max_iter = 100; +13943: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +13943: { +13943: __mu = (__xn + __yn + __zn) / _Tp(3); +13943: __xndev = 2 - (__mu + __xn) / __mu; +13943: __yndev = 2 - (__mu + __yn) / __mu; +13943: __zndev = 2 - (__mu + __zn) / __mu; +13943: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); +13943: __epsilon = std::max(__epsilon, std::abs(__zndev)); +13943: if (__epsilon < __errtol) +13943: break; +13943: const _Tp __xnroot = std::sqrt(__xn); +13943: const _Tp __ynroot = std::sqrt(__yn); +13943: const _Tp __znroot = std::sqrt(__zn); +13943: const _Tp __lambda = __xnroot * (__ynroot + __znroot) +13943: + __ynroot * __znroot; +13943: __xn = __c0 * (__xn + __lambda); +13943: __yn = __c0 * (__yn + __lambda); +13943: __zn = __c0 * (__zn + __lambda); +13943: } +13943: +13943: const _Tp __e2 = __xndev * __yndev - __zndev * __zndev; +13943: const _Tp __e3 = __xndev * __yndev * __zndev; +13943: const _Tp __s = _Tp(1) + (__c1 * __e2 - __c2 - __c3 * __e3) * __e2 +13943: + __c4 * __e3; +13943: +13943: return __s / std::sqrt(__mu); +13943: } +13943: } +13943: # 153 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __comp_ellint_1_series(_Tp __k) +13943: { +13943: +13943: const _Tp __kk = __k * __k; +13943: +13943: _Tp __term = __kk / _Tp(4); +13943: _Tp __sum = _Tp(1) + __term; +13943: +13943: const unsigned int __max_iter = 1000; +13943: for (unsigned int __i = 2; __i < __max_iter; ++__i) +13943: { +13943: __term *= (2 * __i - 1) * __kk / (2 * __i); +13943: if (__term < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: __sum += __term; +13943: } +13943: +13943: return __numeric_constants<_Tp>::__pi_2() * __sum; +13943: } +13943: # 191 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __comp_ellint_1(_Tp __k) +13943: { +13943: +13943: if (__isnan(__k)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (std::abs(__k) >= _Tp(1)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else +13943: return __ellint_rf(_Tp(0), _Tp(1) - __k * __k, _Tp(1)); +13943: } +13943: # 219 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __ellint_1(_Tp __k, _Tp __phi) +13943: { +13943: +13943: if (__isnan(__k) || __isnan(__phi)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (std::abs(__k) > _Tp(1)) +13943: std::__throw_domain_error(("Bad argument in __ellint_1.")); +13943: else +13943: { +13943: +13943: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() +13943: + _Tp(0.5L)); +13943: const _Tp __phi_red = __phi +13943: - __n * __numeric_constants<_Tp>::__pi(); +13943: +13943: const _Tp __s = std::sin(__phi_red); +13943: const _Tp __c = std::cos(__phi_red); +13943: +13943: const _Tp __F = __s +13943: * __ellint_rf(__c * __c, +13943: _Tp(1) - __k * __k * __s * __s, _Tp(1)); +13943: +13943: if (__n == 0) +13943: return __F; +13943: else +13943: return __F + _Tp(2) * __n * __comp_ellint_1(__k); +13943: } +13943: } +13943: # 266 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __comp_ellint_2_series(_Tp __k) +13943: { +13943: +13943: const _Tp __kk = __k * __k; +13943: +13943: _Tp __term = __kk; +13943: _Tp __sum = __term; +13943: +13943: const unsigned int __max_iter = 1000; +13943: for (unsigned int __i = 2; __i < __max_iter; ++__i) +13943: { +13943: const _Tp __i2m = 2 * __i - 1; +13943: const _Tp __i2 = 2 * __i; +13943: __term *= __i2m * __i2m * __kk / (__i2 * __i2); +13943: if (__term < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: __sum += __term / __i2m; +13943: } +13943: +13943: return __numeric_constants<_Tp>::__pi_2() * (_Tp(1) - __sum); +13943: } +13943: # 314 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __ellint_rd(_Tp __x, _Tp __y, _Tp __z) +13943: { +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6)); +13943: const _Tp __max = std::numeric_limits<_Tp>::max(); +13943: const _Tp __lolim = _Tp(2) / std::pow(__max, _Tp(2) / _Tp(3)); +13943: +13943: if (__x < _Tp(0) || __y < _Tp(0)) +13943: std::__throw_domain_error(("Argument less than zero " "in __ellint_rd.") +13943: ); +13943: else if (__x + __y < __lolim || __z < __lolim) +13943: std::__throw_domain_error(("Argument too small " "in __ellint_rd.") +13943: ); +13943: else +13943: { +13943: const _Tp __c0 = _Tp(1) / _Tp(4); +13943: const _Tp __c1 = _Tp(3) / _Tp(14); +13943: const _Tp __c2 = _Tp(1) / _Tp(6); +13943: const _Tp __c3 = _Tp(9) / _Tp(22); +13943: const _Tp __c4 = _Tp(3) / _Tp(26); +13943: +13943: _Tp __xn = __x; +13943: _Tp __yn = __y; +13943: _Tp __zn = __z; +13943: _Tp __sigma = _Tp(0); +13943: _Tp __power4 = _Tp(1); +13943: +13943: _Tp __mu; +13943: _Tp __xndev, __yndev, __zndev; +13943: +13943: const unsigned int __max_iter = 100; +13943: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +13943: { +13943: __mu = (__xn + __yn + _Tp(3) * __zn) / _Tp(5); +13943: __xndev = (__mu - __xn) / __mu; +13943: __yndev = (__mu - __yn) / __mu; +13943: __zndev = (__mu - __zn) / __mu; +13943: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); +13943: __epsilon = std::max(__epsilon, std::abs(__zndev)); +13943: if (__epsilon < __errtol) +13943: break; +13943: _Tp __xnroot = std::sqrt(__xn); +13943: _Tp __ynroot = std::sqrt(__yn); +13943: _Tp __znroot = std::sqrt(__zn); +13943: _Tp __lambda = __xnroot * (__ynroot + __znroot) +13943: + __ynroot * __znroot; +13943: __sigma += __power4 / (__znroot * (__zn + __lambda)); +13943: __power4 *= __c0; +13943: __xn = __c0 * (__xn + __lambda); +13943: __yn = __c0 * (__yn + __lambda); +13943: __zn = __c0 * (__zn + __lambda); +13943: } +13943: +13943: _Tp __ea = __xndev * __yndev; +13943: _Tp __eb = __zndev * __zndev; +13943: _Tp __ec = __ea - __eb; +13943: _Tp __ed = __ea - _Tp(6) * __eb; +13943: _Tp __ef = __ed + __ec + __ec; +13943: _Tp __s1 = __ed * (-__c1 + __c3 * __ed +13943: / _Tp(3) - _Tp(3) * __c4 * __zndev * __ef +13943: / _Tp(2)); +13943: _Tp __s2 = __zndev +13943: * (__c2 * __ef +13943: + __zndev * (-__c3 * __ec - __zndev * __c4 - __ea)); +13943: +13943: return _Tp(3) * __sigma + __power4 * (_Tp(1) + __s1 + __s2) +13943: / (__mu * std::sqrt(__mu)); +13943: } +13943: } +13943: # 399 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __comp_ellint_2(_Tp __k) +13943: { +13943: +13943: if (__isnan(__k)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (std::abs(__k) == 1) +13943: return _Tp(1); +13943: else if (std::abs(__k) > _Tp(1)) +13943: std::__throw_domain_error(("Bad argument in __comp_ellint_2.")); +13943: else +13943: { +13943: const _Tp __kk = __k * __k; +13943: +13943: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) +13943: - __kk * __ellint_rd(_Tp(0), _Tp(1) - __kk, _Tp(1)) / _Tp(3); +13943: } +13943: } +13943: # 433 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __ellint_2(_Tp __k, _Tp __phi) +13943: { +13943: +13943: if (__isnan(__k) || __isnan(__phi)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (std::abs(__k) > _Tp(1)) +13943: std::__throw_domain_error(("Bad argument in __ellint_2.")); +13943: else +13943: { +13943: +13943: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() +13943: + _Tp(0.5L)); +13943: const _Tp __phi_red = __phi +13943: - __n * __numeric_constants<_Tp>::__pi(); +13943: +13943: const _Tp __kk = __k * __k; +13943: const _Tp __s = std::sin(__phi_red); +13943: const _Tp __ss = __s * __s; +13943: const _Tp __sss = __ss * __s; +13943: const _Tp __c = std::cos(__phi_red); +13943: const _Tp __cc = __c * __c; +13943: +13943: const _Tp __E = __s +13943: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +13943: - __kk * __sss +13943: * __ellint_rd(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +13943: / _Tp(3); +13943: +13943: if (__n == 0) +13943: return __E; +13943: else +13943: return __E + _Tp(2) * __n * __comp_ellint_2(__k); +13943: } +13943: } +13943: # 492 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __ellint_rc(_Tp __x, _Tp __y) +13943: { +13943: const _Tp __min = std::numeric_limits<_Tp>::min(); +13943: const _Tp __lolim = _Tp(5) * __min; +13943: +13943: if (__x < _Tp(0) || __y < _Tp(0) || __x + __y < __lolim) +13943: std::__throw_domain_error(("Argument less than zero " "in __ellint_rc.") +13943: ); +13943: else +13943: { +13943: const _Tp __c0 = _Tp(1) / _Tp(4); +13943: const _Tp __c1 = _Tp(1) / _Tp(7); +13943: const _Tp __c2 = _Tp(9) / _Tp(22); +13943: const _Tp __c3 = _Tp(3) / _Tp(10); +13943: const _Tp __c4 = _Tp(3) / _Tp(8); +13943: +13943: _Tp __xn = __x; +13943: _Tp __yn = __y; +13943: +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __errtol = std::pow(__eps / _Tp(30), _Tp(1) / _Tp(6)); +13943: _Tp __mu; +13943: _Tp __sn; +13943: +13943: const unsigned int __max_iter = 100; +13943: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +13943: { +13943: __mu = (__xn + _Tp(2) * __yn) / _Tp(3); +13943: __sn = (__yn + __mu) / __mu - _Tp(2); +13943: if (std::abs(__sn) < __errtol) +13943: break; +13943: const _Tp __lambda = _Tp(2) * std::sqrt(__xn) * std::sqrt(__yn) +13943: + __yn; +13943: __xn = __c0 * (__xn + __lambda); +13943: __yn = __c0 * (__yn + __lambda); +13943: } +13943: +13943: _Tp __s = __sn * __sn +13943: * (__c3 + __sn*(__c1 + __sn * (__c4 + __sn * __c2))); +13943: +13943: return (_Tp(1) + __s) / std::sqrt(__mu); +13943: } +13943: } +13943: # 561 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __ellint_rj(_Tp __x, _Tp __y, _Tp __z, _Tp __p) +13943: { +13943: const _Tp __min = std::numeric_limits<_Tp>::min(); +13943: const _Tp __lolim = std::pow(_Tp(5) * __min, _Tp(1)/_Tp(3)); +13943: +13943: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0)) +13943: std::__throw_domain_error(("Argument less than zero " "in __ellint_rj.") +13943: ); +13943: else if (__x + __y < __lolim || __x + __z < __lolim +13943: || __y + __z < __lolim || __p < __lolim) +13943: std::__throw_domain_error(("Argument too small " "in __ellint_rj") +13943: ); +13943: else +13943: { +13943: const _Tp __c0 = _Tp(1) / _Tp(4); +13943: const _Tp __c1 = _Tp(3) / _Tp(14); +13943: const _Tp __c2 = _Tp(1) / _Tp(3); +13943: const _Tp __c3 = _Tp(3) / _Tp(22); +13943: const _Tp __c4 = _Tp(3) / _Tp(26); +13943: +13943: _Tp __xn = __x; +13943: _Tp __yn = __y; +13943: _Tp __zn = __z; +13943: _Tp __pn = __p; +13943: _Tp __sigma = _Tp(0); +13943: _Tp __power4 = _Tp(1); +13943: +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6)); +13943: +13943: _Tp __mu; +13943: _Tp __xndev, __yndev, __zndev, __pndev; +13943: +13943: const unsigned int __max_iter = 100; +13943: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +13943: { +13943: __mu = (__xn + __yn + __zn + _Tp(2) * __pn) / _Tp(5); +13943: __xndev = (__mu - __xn) / __mu; +13943: __yndev = (__mu - __yn) / __mu; +13943: __zndev = (__mu - __zn) / __mu; +13943: __pndev = (__mu - __pn) / __mu; +13943: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); +13943: __epsilon = std::max(__epsilon, std::abs(__zndev)); +13943: __epsilon = std::max(__epsilon, std::abs(__pndev)); +13943: if (__epsilon < __errtol) +13943: break; +13943: const _Tp __xnroot = std::sqrt(__xn); +13943: const _Tp __ynroot = std::sqrt(__yn); +13943: const _Tp __znroot = std::sqrt(__zn); +13943: const _Tp __lambda = __xnroot * (__ynroot + __znroot) +13943: + __ynroot * __znroot; +13943: const _Tp __alpha1 = __pn * (__xnroot + __ynroot + __znroot) +13943: + __xnroot * __ynroot * __znroot; +13943: const _Tp __alpha2 = __alpha1 * __alpha1; +13943: const _Tp __beta = __pn * (__pn + __lambda) +13943: * (__pn + __lambda); +13943: __sigma += __power4 * __ellint_rc(__alpha2, __beta); +13943: __power4 *= __c0; +13943: __xn = __c0 * (__xn + __lambda); +13943: __yn = __c0 * (__yn + __lambda); +13943: __zn = __c0 * (__zn + __lambda); +13943: __pn = __c0 * (__pn + __lambda); +13943: } +13943: +13943: _Tp __ea = __xndev * (__yndev + __zndev) + __yndev * __zndev; +13943: _Tp __eb = __xndev * __yndev * __zndev; +13943: _Tp __ec = __pndev * __pndev; +13943: _Tp __e2 = __ea - _Tp(3) * __ec; +13943: _Tp __e3 = __eb + _Tp(2) * __pndev * (__ea - __ec); +13943: _Tp __s1 = _Tp(1) + __e2 * (-__c1 + _Tp(3) * __c3 * __e2 / _Tp(4) +13943: - _Tp(3) * __c4 * __e3 / _Tp(2)); +13943: _Tp __s2 = __eb * (__c2 / _Tp(2) +13943: + __pndev * (-__c3 - __c3 + __pndev * __c4)); +13943: _Tp __s3 = __pndev * __ea * (__c2 - __pndev * __c3) +13943: - __c2 * __pndev * __ec; +13943: +13943: return _Tp(3) * __sigma + __power4 * (__s1 + __s2 + __s3) +13943: / (__mu * std::sqrt(__mu)); +13943: } +13943: } +13943: # 661 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __comp_ellint_3(_Tp __k, _Tp __nu) +13943: { +13943: +13943: if (__isnan(__k) || __isnan(__nu)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__nu == _Tp(1)) +13943: return std::numeric_limits<_Tp>::infinity(); +13943: else if (std::abs(__k) > _Tp(1)) +13943: std::__throw_domain_error(("Bad argument in __comp_ellint_3.")); +13943: else +13943: { +13943: const _Tp __kk = __k * __k; +13943: +13943: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) +13943: + __nu +13943: * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) - __nu) +13943: / _Tp(3); +13943: } +13943: } +13943: # 701 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +13943: template +13943: _Tp +13943: __ellint_3(_Tp __k, _Tp __nu, _Tp __phi) +13943: { +13943: +13943: if (__isnan(__k) || __isnan(__nu) || __isnan(__phi)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (std::abs(__k) > _Tp(1)) +13943: std::__throw_domain_error(("Bad argument in __ellint_3.")); +13943: else +13943: { +13943: +13943: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() +13943: + _Tp(0.5L)); +13943: const _Tp __phi_red = __phi +13943: - __n * __numeric_constants<_Tp>::__pi(); +13943: +13943: const _Tp __kk = __k * __k; +13943: const _Tp __s = std::sin(__phi_red); +13943: const _Tp __ss = __s * __s; +13943: const _Tp __sss = __ss * __s; +13943: const _Tp __c = std::cos(__phi_red); +13943: const _Tp __cc = __c * __c; +13943: +13943: const _Tp __Pi = __s +13943: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +13943: + __nu * __sss +13943: * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1), +13943: _Tp(1) - __nu * __ss) / _Tp(3); +13943: +13943: if (__n == 0) +13943: return __Pi; +13943: else +13943: return __Pi + _Tp(2) * __n * __comp_ellint_3(__k, __nu); +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 51 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/exp_integral.tcc" 1 3 +13943: # 50 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 64 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: namespace __detail +13943: { +13943: template _Tp __expint_E1(_Tp); +13943: # 81 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_E1_series(_Tp __x) +13943: { +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: _Tp __term = _Tp(1); +13943: _Tp __esum = _Tp(0); +13943: _Tp __osum = _Tp(0); +13943: const unsigned int __max_iter = 1000; +13943: for (unsigned int __i = 1; __i < __max_iter; ++__i) +13943: { +13943: __term *= - __x / __i; +13943: if (std::abs(__term) < __eps) +13943: break; +13943: if (__term >= _Tp(0)) +13943: __esum += __term / __i; +13943: else +13943: __osum += __term / __i; +13943: } +13943: +13943: return - __esum - __osum +13943: - __numeric_constants<_Tp>::__gamma_e() - std::log(__x); +13943: } +13943: # 118 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_E1_asymp(_Tp __x) +13943: { +13943: _Tp __term = _Tp(1); +13943: _Tp __esum = _Tp(1); +13943: _Tp __osum = _Tp(0); +13943: const unsigned int __max_iter = 1000; +13943: for (unsigned int __i = 1; __i < __max_iter; ++__i) +13943: { +13943: _Tp __prev = __term; +13943: __term *= - __i / __x; +13943: if (std::abs(__term) > std::abs(__prev)) +13943: break; +13943: if (__term >= _Tp(0)) +13943: __esum += __term; +13943: else +13943: __osum += __term; +13943: } +13943: +13943: return std::exp(- __x) * (__esum + __osum) / __x; +13943: } +13943: # 155 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_En_series(unsigned int __n, _Tp __x) +13943: { +13943: const unsigned int __max_iter = 1000; +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const int __nm1 = __n - 1; +13943: _Tp __ans = (__nm1 != 0 +13943: ? _Tp(1) / __nm1 : -std::log(__x) +13943: - __numeric_constants<_Tp>::__gamma_e()); +13943: _Tp __fact = _Tp(1); +13943: for (int __i = 1; __i <= __max_iter; ++__i) +13943: { +13943: __fact *= -__x / _Tp(__i); +13943: _Tp __del; +13943: if ( __i != __nm1 ) +13943: __del = -__fact / _Tp(__i - __nm1); +13943: else +13943: { +13943: _Tp __psi = -__numeric_constants<_Tp>::gamma_e(); +13943: for (int __ii = 1; __ii <= __nm1; ++__ii) +13943: __psi += _Tp(1) / _Tp(__ii); +13943: __del = __fact * (__psi - std::log(__x)); +13943: } +13943: __ans += __del; +13943: if (std::abs(__del) < __eps * std::abs(__ans)) +13943: return __ans; +13943: } +13943: std::__throw_runtime_error(("Series summation failed " "in __expint_En_series.") +13943: ); +13943: } +13943: # 201 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_En_cont_frac(unsigned int __n, _Tp __x) +13943: { +13943: const unsigned int __max_iter = 1000; +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __fp_min = std::numeric_limits<_Tp>::min(); +13943: const int __nm1 = __n - 1; +13943: _Tp __b = __x + _Tp(__n); +13943: _Tp __c = _Tp(1) / __fp_min; +13943: _Tp __d = _Tp(1) / __b; +13943: _Tp __h = __d; +13943: for ( unsigned int __i = 1; __i <= __max_iter; ++__i ) +13943: { +13943: _Tp __a = -_Tp(__i * (__nm1 + __i)); +13943: __b += _Tp(2); +13943: __d = _Tp(1) / (__a * __d + __b); +13943: __c = __b + __a / __c; +13943: const _Tp __del = __c * __d; +13943: __h *= __del; +13943: if (std::abs(__del - _Tp(1)) < __eps) +13943: { +13943: const _Tp __ans = __h * std::exp(-__x); +13943: return __ans; +13943: } +13943: } +13943: std::__throw_runtime_error(("Continued fraction failed " "in __expint_En_cont_frac.") +13943: ); +13943: } +13943: # 246 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_En_recursion(unsigned int __n, _Tp __x) +13943: { +13943: _Tp __En; +13943: _Tp __E1 = __expint_E1(__x); +13943: if (__x < _Tp(__n)) +13943: { +13943: +13943: __En = __E1; +13943: for (unsigned int __j = 2; __j < __n; ++__j) +13943: __En = (std::exp(-__x) - __x * __En) / _Tp(__j - 1); +13943: } +13943: else +13943: { +13943: +13943: __En = _Tp(1); +13943: const int __N = __n + 20; +13943: _Tp __save = _Tp(0); +13943: for (int __j = __N; __j > 0; --__j) +13943: { +13943: __En = (std::exp(-__x) - __j * __En) / __x; +13943: if (__j == __n) +13943: __save = __En; +13943: } +13943: _Tp __norm = __En / __E1; +13943: __En /= __norm; +13943: } +13943: +13943: return __En; +13943: } +13943: # 290 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_Ei_series(_Tp __x) +13943: { +13943: _Tp __term = _Tp(1); +13943: _Tp __sum = _Tp(0); +13943: const unsigned int __max_iter = 1000; +13943: for (unsigned int __i = 1; __i < __max_iter; ++__i) +13943: { +13943: __term *= __x / __i; +13943: __sum += __term / __i; +13943: if (__term < std::numeric_limits<_Tp>::epsilon() * __sum) +13943: break; +13943: } +13943: +13943: return __numeric_constants<_Tp>::__gamma_e() + __sum + std::log(__x); +13943: } +13943: # 321 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_Ei_asymp(_Tp __x) +13943: { +13943: _Tp __term = _Tp(1); +13943: _Tp __sum = _Tp(1); +13943: const unsigned int __max_iter = 1000; +13943: for (unsigned int __i = 1; __i < __max_iter; ++__i) +13943: { +13943: _Tp __prev = __term; +13943: __term *= __i / __x; +13943: if (__term < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: if (__term >= __prev) +13943: break; +13943: __sum += __term; +13943: } +13943: +13943: return std::exp(__x) * __sum / __x; +13943: } +13943: # 354 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_Ei(_Tp __x) +13943: { +13943: if (__x < _Tp(0)) +13943: return -__expint_E1(-__x); +13943: else if (__x < -std::log(std::numeric_limits<_Tp>::epsilon())) +13943: return __expint_Ei_series(__x); +13943: else +13943: return __expint_Ei_asymp(__x); +13943: } +13943: # 378 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_E1(_Tp __x) +13943: { +13943: if (__x < _Tp(0)) +13943: return -__expint_Ei(-__x); +13943: else if (__x < _Tp(1)) +13943: return __expint_E1_series(__x); +13943: else if (__x < _Tp(100)) +13943: return __expint_En_cont_frac(1, __x); +13943: else +13943: return __expint_E1_asymp(__x); +13943: } +13943: # 408 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_asymp(unsigned int __n, _Tp __x) +13943: { +13943: _Tp __term = _Tp(1); +13943: _Tp __sum = _Tp(1); +13943: for (unsigned int __i = 1; __i <= __n; ++__i) +13943: { +13943: _Tp __prev = __term; +13943: __term *= -(__n - __i + 1) / __x; +13943: if (std::abs(__term) > std::abs(__prev)) +13943: break; +13943: __sum += __term; +13943: } +13943: +13943: return std::exp(-__x) * __sum / __x; +13943: } +13943: # 442 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint_large_n(unsigned int __n, _Tp __x) +13943: { +13943: const _Tp __xpn = __x + __n; +13943: const _Tp __xpn2 = __xpn * __xpn; +13943: _Tp __term = _Tp(1); +13943: _Tp __sum = _Tp(1); +13943: for (unsigned int __i = 1; __i <= __n; ++__i) +13943: { +13943: _Tp __prev = __term; +13943: __term *= (__n - 2 * (__i - 1) * __x) / __xpn2; +13943: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: __sum += __term; +13943: } +13943: +13943: return std::exp(-__x) * __sum / __xpn; +13943: } +13943: # 476 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: _Tp +13943: __expint(unsigned int __n, _Tp __x) +13943: { +13943: +13943: if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__n <= 1 && __x == _Tp(0)) +13943: return std::numeric_limits<_Tp>::infinity(); +13943: else +13943: { +13943: _Tp __E0 = std::exp(__x) / __x; +13943: if (__n == 0) +13943: return __E0; +13943: +13943: _Tp __E1 = __expint_E1(__x); +13943: if (__n == 1) +13943: return __E1; +13943: +13943: if (__x == _Tp(0)) +13943: return _Tp(1) / static_cast<_Tp>(__n - 1); +13943: +13943: _Tp __En = __expint_En_recursion(__n, __x); +13943: +13943: return __En; +13943: } +13943: } +13943: # 516 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +13943: template +13943: inline _Tp +13943: __expint(_Tp __x) +13943: { +13943: if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else +13943: return __expint_Ei(__x); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 52 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/hypergeometric.tcc" 1 3 +13943: # 44 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 60 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: namespace __detail +13943: { +13943: # 83 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: template +13943: _Tp +13943: __conf_hyperg_series(_Tp __a, _Tp __c, _Tp __x) +13943: { +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: +13943: _Tp __term = _Tp(1); +13943: _Tp __Fac = _Tp(1); +13943: const unsigned int __max_iter = 100000; +13943: unsigned int __i; +13943: for (__i = 0; __i < __max_iter; ++__i) +13943: { +13943: __term *= (__a + _Tp(__i)) * __x +13943: / ((__c + _Tp(__i)) * _Tp(1 + __i)); +13943: if (std::abs(__term) < __eps) +13943: { +13943: break; +13943: } +13943: __Fac += __term; +13943: } +13943: if (__i == __max_iter) +13943: std::__throw_runtime_error(("Series failed to converge " "in __conf_hyperg_series.") +13943: ); +13943: +13943: return __Fac; +13943: } +13943: # 120 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: template +13943: _Tp +13943: __conf_hyperg_luke(_Tp __a, _Tp __c, _Tp __xin) +13943: { +13943: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L)); +13943: const int __nmax = 20000; +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __x = -__xin; +13943: const _Tp __x3 = __x * __x * __x; +13943: const _Tp __t0 = __a / __c; +13943: const _Tp __t1 = (__a + _Tp(1)) / (_Tp(2) * __c); +13943: const _Tp __t2 = (__a + _Tp(2)) / (_Tp(2) * (__c + _Tp(1))); +13943: _Tp __F = _Tp(1); +13943: _Tp __prec; +13943: +13943: _Tp __Bnm3 = _Tp(1); +13943: _Tp __Bnm2 = _Tp(1) + __t1 * __x; +13943: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x); +13943: +13943: _Tp __Anm3 = _Tp(1); +13943: _Tp __Anm2 = __Bnm2 - __t0 * __x; +13943: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x +13943: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x; +13943: +13943: int __n = 3; +13943: while(1) +13943: { +13943: _Tp __npam1 = _Tp(__n - 1) + __a; +13943: _Tp __npcm1 = _Tp(__n - 1) + __c; +13943: _Tp __npam2 = _Tp(__n - 2) + __a; +13943: _Tp __npcm2 = _Tp(__n - 2) + __c; +13943: _Tp __tnm1 = _Tp(2 * __n - 1); +13943: _Tp __tnm3 = _Tp(2 * __n - 3); +13943: _Tp __tnm5 = _Tp(2 * __n - 5); +13943: _Tp __F1 = (_Tp(__n - 2) - __a) / (_Tp(2) * __tnm3 * __npcm1); +13943: _Tp __F2 = (_Tp(__n) + __a) * __npam1 +13943: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1); +13943: _Tp __F3 = -__npam2 * __npam1 * (_Tp(__n - 2) - __a) +13943: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5 +13943: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1); +13943: _Tp __E = -__npam1 * (_Tp(__n - 1) - __c) +13943: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1); +13943: +13943: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1 +13943: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3; +13943: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1 +13943: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3; +13943: _Tp __r = __An / __Bn; +13943: +13943: __prec = std::abs((__F - __r) / __F); +13943: __F = __r; +13943: +13943: if (__prec < __eps || __n > __nmax) +13943: break; +13943: +13943: if (std::abs(__An) > __big || std::abs(__Bn) > __big) +13943: { +13943: __An /= __big; +13943: __Bn /= __big; +13943: __Anm1 /= __big; +13943: __Bnm1 /= __big; +13943: __Anm2 /= __big; +13943: __Bnm2 /= __big; +13943: __Anm3 /= __big; +13943: __Bnm3 /= __big; +13943: } +13943: else if (std::abs(__An) < _Tp(1) / __big +13943: || std::abs(__Bn) < _Tp(1) / __big) +13943: { +13943: __An *= __big; +13943: __Bn *= __big; +13943: __Anm1 *= __big; +13943: __Bnm1 *= __big; +13943: __Anm2 *= __big; +13943: __Bnm2 *= __big; +13943: __Anm3 *= __big; +13943: __Bnm3 *= __big; +13943: } +13943: +13943: ++__n; +13943: __Bnm3 = __Bnm2; +13943: __Bnm2 = __Bnm1; +13943: __Bnm1 = __Bn; +13943: __Anm3 = __Anm2; +13943: __Anm2 = __Anm1; +13943: __Anm1 = __An; +13943: } +13943: +13943: if (__n >= __nmax) +13943: std::__throw_runtime_error(("Iteration failed to converge " "in __conf_hyperg_luke.") +13943: ); +13943: +13943: return __F; +13943: } +13943: # 227 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: template +13943: _Tp +13943: __conf_hyperg(_Tp __a, _Tp __c, _Tp __x) +13943: { +13943: +13943: const _Tp __c_nint = ::std::nearbyint(__c); +13943: +13943: +13943: +13943: if (__isnan(__a) || __isnan(__c) || __isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__c_nint == __c && __c_nint <= 0) +13943: return std::numeric_limits<_Tp>::infinity(); +13943: else if (__a == _Tp(0)) +13943: return _Tp(1); +13943: else if (__c == __a) +13943: return std::exp(__x); +13943: else if (__x < _Tp(0)) +13943: return __conf_hyperg_luke(__a, __c, __x); +13943: else +13943: return __conf_hyperg_series(__a, __c, __x); +13943: } +13943: # 271 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: template +13943: _Tp +13943: __hyperg_series(_Tp __a, _Tp __b, _Tp __c, _Tp __x) +13943: { +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: +13943: _Tp __term = _Tp(1); +13943: _Tp __Fabc = _Tp(1); +13943: const unsigned int __max_iter = 100000; +13943: unsigned int __i; +13943: for (__i = 0; __i < __max_iter; ++__i) +13943: { +13943: __term *= (__a + _Tp(__i)) * (__b + _Tp(__i)) * __x +13943: / ((__c + _Tp(__i)) * _Tp(1 + __i)); +13943: if (std::abs(__term) < __eps) +13943: { +13943: break; +13943: } +13943: __Fabc += __term; +13943: } +13943: if (__i == __max_iter) +13943: std::__throw_runtime_error(("Series failed to converge " "in __hyperg_series.") +13943: ); +13943: +13943: return __Fabc; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _Tp +13943: __hyperg_luke(_Tp __a, _Tp __b, _Tp __c, _Tp __xin) +13943: { +13943: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L)); +13943: const int __nmax = 20000; +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __x = -__xin; +13943: const _Tp __x3 = __x * __x * __x; +13943: const _Tp __t0 = __a * __b / __c; +13943: const _Tp __t1 = (__a + _Tp(1)) * (__b + _Tp(1)) / (_Tp(2) * __c); +13943: const _Tp __t2 = (__a + _Tp(2)) * (__b + _Tp(2)) +13943: / (_Tp(2) * (__c + _Tp(1))); +13943: +13943: _Tp __F = _Tp(1); +13943: +13943: _Tp __Bnm3 = _Tp(1); +13943: _Tp __Bnm2 = _Tp(1) + __t1 * __x; +13943: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x); +13943: +13943: _Tp __Anm3 = _Tp(1); +13943: _Tp __Anm2 = __Bnm2 - __t0 * __x; +13943: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x +13943: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x; +13943: +13943: int __n = 3; +13943: while (1) +13943: { +13943: const _Tp __npam1 = _Tp(__n - 1) + __a; +13943: const _Tp __npbm1 = _Tp(__n - 1) + __b; +13943: const _Tp __npcm1 = _Tp(__n - 1) + __c; +13943: const _Tp __npam2 = _Tp(__n - 2) + __a; +13943: const _Tp __npbm2 = _Tp(__n - 2) + __b; +13943: const _Tp __npcm2 = _Tp(__n - 2) + __c; +13943: const _Tp __tnm1 = _Tp(2 * __n - 1); +13943: const _Tp __tnm3 = _Tp(2 * __n - 3); +13943: const _Tp __tnm5 = _Tp(2 * __n - 5); +13943: const _Tp __n2 = __n * __n; +13943: const _Tp __F1 = (_Tp(3) * __n2 + (__a + __b - _Tp(6)) * __n +13943: + _Tp(2) - __a * __b - _Tp(2) * (__a + __b)) +13943: / (_Tp(2) * __tnm3 * __npcm1); +13943: const _Tp __F2 = -(_Tp(3) * __n2 - (__a + __b + _Tp(6)) * __n +13943: + _Tp(2) - __a * __b) * __npam1 * __npbm1 +13943: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1); +13943: const _Tp __F3 = (__npam2 * __npam1 * __npbm2 * __npbm1 +13943: * (_Tp(__n - 2) - __a) * (_Tp(__n - 2) - __b)) +13943: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5 +13943: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1); +13943: const _Tp __E = -__npam1 * __npbm1 * (_Tp(__n - 1) - __c) +13943: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1); +13943: +13943: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1 +13943: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3; +13943: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1 +13943: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3; +13943: const _Tp __r = __An / __Bn; +13943: +13943: const _Tp __prec = std::abs((__F - __r) / __F); +13943: __F = __r; +13943: +13943: if (__prec < __eps || __n > __nmax) +13943: break; +13943: +13943: if (std::abs(__An) > __big || std::abs(__Bn) > __big) +13943: { +13943: __An /= __big; +13943: __Bn /= __big; +13943: __Anm1 /= __big; +13943: __Bnm1 /= __big; +13943: __Anm2 /= __big; +13943: __Bnm2 /= __big; +13943: __Anm3 /= __big; +13943: __Bnm3 /= __big; +13943: } +13943: else if (std::abs(__An) < _Tp(1) / __big +13943: || std::abs(__Bn) < _Tp(1) / __big) +13943: { +13943: __An *= __big; +13943: __Bn *= __big; +13943: __Anm1 *= __big; +13943: __Bnm1 *= __big; +13943: __Anm2 *= __big; +13943: __Bnm2 *= __big; +13943: __Anm3 *= __big; +13943: __Bnm3 *= __big; +13943: } +13943: +13943: ++__n; +13943: __Bnm3 = __Bnm2; +13943: __Bnm2 = __Bnm1; +13943: __Bnm1 = __Bn; +13943: __Anm3 = __Anm2; +13943: __Anm2 = __Anm1; +13943: __Anm1 = __An; +13943: } +13943: +13943: if (__n >= __nmax) +13943: std::__throw_runtime_error(("Iteration failed to converge " "in __hyperg_luke.") +13943: ); +13943: +13943: return __F; +13943: } +13943: # 438 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: template +13943: _Tp +13943: __hyperg_reflect(_Tp __a, _Tp __b, _Tp __c, _Tp __x) +13943: { +13943: const _Tp __d = __c - __a - __b; +13943: const int __intd = std::floor(__d + _Tp(0.5L)); +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __toler = _Tp(1000) * __eps; +13943: const _Tp __log_max = std::log(std::numeric_limits<_Tp>::max()); +13943: const bool __d_integer = (std::abs(__d - __intd) < __toler); +13943: +13943: if (__d_integer) +13943: { +13943: const _Tp __ln_omx = std::log(_Tp(1) - __x); +13943: const _Tp __ad = std::abs(__d); +13943: _Tp __F1, __F2; +13943: +13943: _Tp __d1, __d2; +13943: if (__d >= _Tp(0)) +13943: { +13943: __d1 = __d; +13943: __d2 = _Tp(0); +13943: } +13943: else +13943: { +13943: __d1 = _Tp(0); +13943: __d2 = __d; +13943: } +13943: +13943: const _Tp __lng_c = __log_gamma(__c); +13943: +13943: +13943: if (__ad < __eps) +13943: { +13943: +13943: __F1 = _Tp(0); +13943: } +13943: else +13943: { +13943: +13943: bool __ok_d1 = true; +13943: _Tp __lng_ad, __lng_ad1, __lng_bd1; +13943: try +13943: { +13943: __lng_ad = __log_gamma(__ad); +13943: __lng_ad1 = __log_gamma(__a + __d1); +13943: __lng_bd1 = __log_gamma(__b + __d1); +13943: } +13943: catch(...) +13943: { +13943: __ok_d1 = false; +13943: } +13943: +13943: if (__ok_d1) +13943: { +13943: +13943: +13943: +13943: _Tp __sum1 = _Tp(1); +13943: _Tp __term = _Tp(1); +13943: _Tp __ln_pre1 = __lng_ad + __lng_c + __d2 * __ln_omx +13943: - __lng_ad1 - __lng_bd1; +13943: +13943: +13943: +13943: for (int __i = 1; __i < __ad; ++__i) +13943: { +13943: const int __j = __i - 1; +13943: __term *= (__a + __d2 + __j) * (__b + __d2 + __j) +13943: / (_Tp(1) + __d2 + __j) / __i * (_Tp(1) - __x); +13943: __sum1 += __term; +13943: } +13943: +13943: if (__ln_pre1 > __log_max) +13943: std::__throw_runtime_error(("Overflow of gamma functions" " in __hyperg_luke.") +13943: ); +13943: else +13943: __F1 = std::exp(__ln_pre1) * __sum1; +13943: } +13943: else +13943: { +13943: +13943: +13943: __F1 = _Tp(0); +13943: } +13943: } +13943: +13943: +13943: bool __ok_d2 = true; +13943: _Tp __lng_ad2, __lng_bd2; +13943: try +13943: { +13943: __lng_ad2 = __log_gamma(__a + __d2); +13943: __lng_bd2 = __log_gamma(__b + __d2); +13943: } +13943: catch(...) +13943: { +13943: __ok_d2 = false; +13943: } +13943: +13943: if (__ok_d2) +13943: { +13943: +13943: +13943: const int __maxiter = 2000; +13943: const _Tp __psi_1 = -__numeric_constants<_Tp>::__gamma_e(); +13943: const _Tp __psi_1pd = __psi(_Tp(1) + __ad); +13943: const _Tp __psi_apd1 = __psi(__a + __d1); +13943: const _Tp __psi_bpd1 = __psi(__b + __d1); +13943: +13943: _Tp __psi_term = __psi_1 + __psi_1pd - __psi_apd1 +13943: - __psi_bpd1 - __ln_omx; +13943: _Tp __fact = _Tp(1); +13943: _Tp __sum2 = __psi_term; +13943: _Tp __ln_pre2 = __lng_c + __d1 * __ln_omx +13943: - __lng_ad2 - __lng_bd2; +13943: +13943: +13943: int __j; +13943: for (__j = 1; __j < __maxiter; ++__j) +13943: { +13943: +13943: +13943: const _Tp __term1 = _Tp(1) / _Tp(__j) +13943: + _Tp(1) / (__ad + __j); +13943: const _Tp __term2 = _Tp(1) / (__a + __d1 + _Tp(__j - 1)) +13943: + _Tp(1) / (__b + __d1 + _Tp(__j - 1)); +13943: __psi_term += __term1 - __term2; +13943: __fact *= (__a + __d1 + _Tp(__j - 1)) +13943: * (__b + __d1 + _Tp(__j - 1)) +13943: / ((__ad + __j) * __j) * (_Tp(1) - __x); +13943: const _Tp __delta = __fact * __psi_term; +13943: __sum2 += __delta; +13943: if (std::abs(__delta) < __eps * std::abs(__sum2)) +13943: break; +13943: } +13943: if (__j == __maxiter) +13943: std::__throw_runtime_error(("Sum F2 failed to converge " "in __hyperg_reflect") +13943: ); +13943: +13943: if (__sum2 == _Tp(0)) +13943: __F2 = _Tp(0); +13943: else +13943: __F2 = std::exp(__ln_pre2) * __sum2; +13943: } +13943: else +13943: { +13943: +13943: +13943: __F2 = _Tp(0); +13943: } +13943: +13943: const _Tp __sgn_2 = (__intd % 2 == 1 ? -_Tp(1) : _Tp(1)); +13943: const _Tp __F = __F1 + __sgn_2 * __F2; +13943: +13943: return __F; +13943: } +13943: else +13943: { +13943: +13943: +13943: +13943: +13943: bool __ok1 = true; +13943: _Tp __sgn_g1ca = _Tp(0), __ln_g1ca = _Tp(0); +13943: _Tp __sgn_g1cb = _Tp(0), __ln_g1cb = _Tp(0); +13943: try +13943: { +13943: __sgn_g1ca = __log_gamma_sign(__c - __a); +13943: __ln_g1ca = __log_gamma(__c - __a); +13943: __sgn_g1cb = __log_gamma_sign(__c - __b); +13943: __ln_g1cb = __log_gamma(__c - __b); +13943: } +13943: catch(...) +13943: { +13943: __ok1 = false; +13943: } +13943: +13943: bool __ok2 = true; +13943: _Tp __sgn_g2a = _Tp(0), __ln_g2a = _Tp(0); +13943: _Tp __sgn_g2b = _Tp(0), __ln_g2b = _Tp(0); +13943: try +13943: { +13943: __sgn_g2a = __log_gamma_sign(__a); +13943: __ln_g2a = __log_gamma(__a); +13943: __sgn_g2b = __log_gamma_sign(__b); +13943: __ln_g2b = __log_gamma(__b); +13943: } +13943: catch(...) +13943: { +13943: __ok2 = false; +13943: } +13943: +13943: const _Tp __sgn_gc = __log_gamma_sign(__c); +13943: const _Tp __ln_gc = __log_gamma(__c); +13943: const _Tp __sgn_gd = __log_gamma_sign(__d); +13943: const _Tp __ln_gd = __log_gamma(__d); +13943: const _Tp __sgn_gmd = __log_gamma_sign(-__d); +13943: const _Tp __ln_gmd = __log_gamma(-__d); +13943: +13943: const _Tp __sgn1 = __sgn_gc * __sgn_gd * __sgn_g1ca * __sgn_g1cb; +13943: const _Tp __sgn2 = __sgn_gc * __sgn_gmd * __sgn_g2a * __sgn_g2b; +13943: +13943: _Tp __pre1, __pre2; +13943: if (__ok1 && __ok2) +13943: { +13943: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb; +13943: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b +13943: + __d * std::log(_Tp(1) - __x); +13943: if (__ln_pre1 < __log_max && __ln_pre2 < __log_max) +13943: { +13943: __pre1 = std::exp(__ln_pre1); +13943: __pre2 = std::exp(__ln_pre2); +13943: __pre1 *= __sgn1; +13943: __pre2 *= __sgn2; +13943: } +13943: else +13943: { +13943: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") +13943: ); +13943: } +13943: } +13943: else if (__ok1 && !__ok2) +13943: { +13943: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb; +13943: if (__ln_pre1 < __log_max) +13943: { +13943: __pre1 = std::exp(__ln_pre1); +13943: __pre1 *= __sgn1; +13943: __pre2 = _Tp(0); +13943: } +13943: else +13943: { +13943: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") +13943: ); +13943: } +13943: } +13943: else if (!__ok1 && __ok2) +13943: { +13943: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b +13943: + __d * std::log(_Tp(1) - __x); +13943: if (__ln_pre2 < __log_max) +13943: { +13943: __pre1 = _Tp(0); +13943: __pre2 = std::exp(__ln_pre2); +13943: __pre2 *= __sgn2; +13943: } +13943: else +13943: { +13943: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") +13943: ); +13943: } +13943: } +13943: else +13943: { +13943: __pre1 = _Tp(0); +13943: __pre2 = _Tp(0); +13943: std::__throw_runtime_error(("Underflow of gamma functions " "in __hyperg_reflect") +13943: ); +13943: } +13943: +13943: const _Tp __F1 = __hyperg_series(__a, __b, _Tp(1) - __d, +13943: _Tp(1) - __x); +13943: const _Tp __F2 = __hyperg_series(__c - __a, __c - __b, _Tp(1) + __d, +13943: _Tp(1) - __x); +13943: +13943: const _Tp __F = __pre1 * __F1 + __pre2 * __F2; +13943: +13943: return __F; +13943: } +13943: } +13943: # 728 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +13943: template +13943: _Tp +13943: __hyperg(_Tp __a, _Tp __b, _Tp __c, _Tp __x) +13943: { +13943: +13943: const _Tp __a_nint = ::std::nearbyint(__a); +13943: const _Tp __b_nint = ::std::nearbyint(__b); +13943: const _Tp __c_nint = ::std::nearbyint(__c); +13943: +13943: +13943: +13943: +13943: +13943: const _Tp __toler = _Tp(1000) * std::numeric_limits<_Tp>::epsilon(); +13943: if (std::abs(__x) >= _Tp(1)) +13943: std::__throw_domain_error(("Argument outside unit circle " "in __hyperg.") +13943: ); +13943: else if (__isnan(__a) || __isnan(__b) +13943: || __isnan(__c) || __isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__c_nint == __c && __c_nint <= _Tp(0)) +13943: return std::numeric_limits<_Tp>::infinity(); +13943: else if (std::abs(__c - __b) < __toler || std::abs(__c - __a) < __toler) +13943: return std::pow(_Tp(1) - __x, __c - __a - __b); +13943: else if (__a >= _Tp(0) && __b >= _Tp(0) && __c >= _Tp(0) +13943: && __x >= _Tp(0) && __x < _Tp(0.995L)) +13943: return __hyperg_series(__a, __b, __c, __x); +13943: else if (std::abs(__a) < _Tp(10) && std::abs(__b) < _Tp(10)) +13943: { +13943: +13943: +13943: if (__a < _Tp(0) && std::abs(__a - __a_nint) < __toler) +13943: return __hyperg_series(__a_nint, __b, __c, __x); +13943: else if (__b < _Tp(0) && std::abs(__b - __b_nint) < __toler) +13943: return __hyperg_series(__a, __b_nint, __c, __x); +13943: else if (__x < -_Tp(0.25L)) +13943: return __hyperg_luke(__a, __b, __c, __x); +13943: else if (__x < _Tp(0.5L)) +13943: return __hyperg_series(__a, __b, __c, __x); +13943: else +13943: if (std::abs(__c) > _Tp(10)) +13943: return __hyperg_series(__a, __b, __c, __x); +13943: else +13943: return __hyperg_reflect(__a, __b, __c, __x); +13943: } +13943: else +13943: return __hyperg_luke(__a, __b, __c, __x); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 53 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/legendre_function.tcc" 1 3 +13943: # 49 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 65 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +13943: namespace __detail +13943: { +13943: # 80 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +13943: template +13943: _Tp +13943: __poly_legendre_p(unsigned int __l, _Tp __x) +13943: { +13943: +13943: if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__x == +_Tp(1)) +13943: return +_Tp(1); +13943: else if (__x == -_Tp(1)) +13943: return (__l % 2 == 1 ? -_Tp(1) : +_Tp(1)); +13943: else +13943: { +13943: _Tp __p_lm2 = _Tp(1); +13943: if (__l == 0) +13943: return __p_lm2; +13943: +13943: _Tp __p_lm1 = __x; +13943: if (__l == 1) +13943: return __p_lm1; +13943: +13943: _Tp __p_l = 0; +13943: for (unsigned int __ll = 2; __ll <= __l; ++__ll) +13943: { +13943: +13943: +13943: __p_l = _Tp(2) * __x * __p_lm1 - __p_lm2 +13943: - (__x * __p_lm1 - __p_lm2) / _Tp(__ll); +13943: __p_lm2 = __p_lm1; +13943: __p_lm1 = __p_l; +13943: } +13943: +13943: return __p_l; +13943: } +13943: } +13943: # 136 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +13943: template +13943: _Tp +13943: __assoc_legendre_p(unsigned int __l, unsigned int __m, _Tp __x, +13943: _Tp __phase = _Tp(+1)) +13943: { +13943: +13943: if (__m > __l) +13943: return _Tp(0); +13943: else if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__m == 0) +13943: return __poly_legendre_p(__l, __x); +13943: else +13943: { +13943: _Tp __p_mm = _Tp(1); +13943: if (__m > 0) +13943: { +13943: +13943: +13943: _Tp __root = std::sqrt(_Tp(1) - __x) * std::sqrt(_Tp(1) + __x); +13943: _Tp __fact = _Tp(1); +13943: for (unsigned int __i = 1; __i <= __m; ++__i) +13943: { +13943: __p_mm *= __phase * __fact * __root; +13943: __fact += _Tp(2); +13943: } +13943: } +13943: if (__l == __m) +13943: return __p_mm; +13943: +13943: _Tp __p_mp1m = _Tp(2 * __m + 1) * __x * __p_mm; +13943: if (__l == __m + 1) +13943: return __p_mp1m; +13943: +13943: _Tp __p_lm2m = __p_mm; +13943: _Tp __P_lm1m = __p_mp1m; +13943: _Tp __p_lm = _Tp(0); +13943: for (unsigned int __j = __m + 2; __j <= __l; ++__j) +13943: { +13943: __p_lm = (_Tp(2 * __j - 1) * __x * __P_lm1m +13943: - _Tp(__j + __m - 1) * __p_lm2m) / _Tp(__j - __m); +13943: __p_lm2m = __P_lm1m; +13943: __P_lm1m = __p_lm; +13943: } +13943: +13943: return __p_lm; +13943: } +13943: } +13943: # 214 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +13943: template +13943: _Tp +13943: __sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) +13943: { +13943: if (__isnan(__theta)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: +13943: const _Tp __x = std::cos(__theta); +13943: +13943: if (__m > __l) +13943: return _Tp(0); +13943: else if (__m == 0) +13943: { +13943: _Tp __P = __poly_legendre_p(__l, __x); +13943: _Tp __fact = std::sqrt(_Tp(2 * __l + 1) +13943: / (_Tp(4) * __numeric_constants<_Tp>::__pi())); +13943: __P *= __fact; +13943: return __P; +13943: } +13943: else if (__x == _Tp(1) || __x == -_Tp(1)) +13943: { +13943: +13943: return _Tp(0); +13943: } +13943: else +13943: { +13943: +13943: +13943: +13943: +13943: +13943: const _Tp __sgn = ( __m % 2 == 1 ? -_Tp(1) : _Tp(1)); +13943: const _Tp __y_mp1m_factor = __x * std::sqrt(_Tp(2 * __m + 3)); +13943: +13943: const _Tp __lncirc = ::std::log1p(-__x * __x); +13943: +13943: +13943: +13943: +13943: +13943: const _Tp __lnpoch = ::std::lgamma(_Tp(__m + _Tp(0.5L))) +13943: - ::std::lgamma(_Tp(__m)); +13943: +13943: +13943: +13943: +13943: const _Tp __lnpre_val = +13943: -_Tp(0.25L) * __numeric_constants<_Tp>::__lnpi() +13943: + _Tp(0.5L) * (__lnpoch + __m * __lncirc); +13943: const _Tp __sr = std::sqrt((_Tp(2) + _Tp(1) / __m) +13943: / (_Tp(4) * __numeric_constants<_Tp>::__pi())); +13943: _Tp __y_mm = __sgn * __sr * std::exp(__lnpre_val); +13943: _Tp __y_mp1m = __y_mp1m_factor * __y_mm; +13943: +13943: if (__l == __m) +13943: return __y_mm; +13943: else if (__l == __m + 1) +13943: return __y_mp1m; +13943: else +13943: { +13943: _Tp __y_lm = _Tp(0); +13943: +13943: +13943: for (unsigned int __ll = __m + 2; __ll <= __l; ++__ll) +13943: { +13943: const _Tp __rat1 = _Tp(__ll - __m) / _Tp(__ll + __m); +13943: const _Tp __rat2 = _Tp(__ll - __m - 1) / _Tp(__ll + __m - 1); +13943: const _Tp __fact1 = std::sqrt(__rat1 * _Tp(2 * __ll + 1) +13943: * _Tp(2 * __ll - 1)); +13943: const _Tp __fact2 = std::sqrt(__rat1 * __rat2 * _Tp(2 * __ll + 1) +13943: / _Tp(2 * __ll - 3)); +13943: __y_lm = (__x * __y_mp1m * __fact1 +13943: - (__ll + __m - 1) * __y_mm * __fact2) / _Tp(__ll - __m); +13943: __y_mm = __y_mp1m; +13943: __y_mp1m = __y_lm; +13943: } +13943: +13943: return __y_lm; +13943: } +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 54 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 1 3 +13943: # 51 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 65 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +13943: namespace __detail +13943: { +13943: # 83 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +13943: template +13943: void +13943: __bessel_ik(_Tp __nu, _Tp __x, +13943: _Tp & __Inu, _Tp & __Knu, _Tp & __Ipnu, _Tp & __Kpnu) +13943: { +13943: if (__x == _Tp(0)) +13943: { +13943: if (__nu == _Tp(0)) +13943: { +13943: __Inu = _Tp(1); +13943: __Ipnu = _Tp(0); +13943: } +13943: else if (__nu == _Tp(1)) +13943: { +13943: __Inu = _Tp(0); +13943: __Ipnu = _Tp(0.5L); +13943: } +13943: else +13943: { +13943: __Inu = _Tp(0); +13943: __Ipnu = _Tp(0); +13943: } +13943: __Knu = std::numeric_limits<_Tp>::infinity(); +13943: __Kpnu = -std::numeric_limits<_Tp>::infinity(); +13943: return; +13943: } +13943: +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: const _Tp __fp_min = _Tp(10) * std::numeric_limits<_Tp>::epsilon(); +13943: const int __max_iter = 15000; +13943: const _Tp __x_min = _Tp(2); +13943: +13943: const int __nl = static_cast(__nu + _Tp(0.5L)); +13943: +13943: const _Tp __mu = __nu - __nl; +13943: const _Tp __mu2 = __mu * __mu; +13943: const _Tp __xi = _Tp(1) / __x; +13943: const _Tp __xi2 = _Tp(2) * __xi; +13943: _Tp __h = __nu * __xi; +13943: if ( __h < __fp_min ) +13943: __h = __fp_min; +13943: _Tp __b = __xi2 * __nu; +13943: _Tp __d = _Tp(0); +13943: _Tp __c = __h; +13943: int __i; +13943: for ( __i = 1; __i <= __max_iter; ++__i ) +13943: { +13943: __b += __xi2; +13943: __d = _Tp(1) / (__b + __d); +13943: __c = __b + _Tp(1) / __c; +13943: const _Tp __del = __c * __d; +13943: __h *= __del; +13943: if (std::abs(__del - _Tp(1)) < __eps) +13943: break; +13943: } +13943: if (__i > __max_iter) +13943: std::__throw_runtime_error(("Argument x too large " "in __bessel_ik; " "try asymptotic expansion.") +13943: +13943: ); +13943: _Tp __Inul = __fp_min; +13943: _Tp __Ipnul = __h * __Inul; +13943: _Tp __Inul1 = __Inul; +13943: _Tp __Ipnu1 = __Ipnul; +13943: _Tp __fact = __nu * __xi; +13943: for (int __l = __nl; __l >= 1; --__l) +13943: { +13943: const _Tp __Inutemp = __fact * __Inul + __Ipnul; +13943: __fact -= __xi; +13943: __Ipnul = __fact * __Inutemp + __Inul; +13943: __Inul = __Inutemp; +13943: } +13943: _Tp __f = __Ipnul / __Inul; +13943: _Tp __Kmu, __Knu1; +13943: if (__x < __x_min) +13943: { +13943: const _Tp __x2 = __x / _Tp(2); +13943: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu; +13943: const _Tp __fact = (std::abs(__pimu) < __eps +13943: ? _Tp(1) : __pimu / std::sin(__pimu)); +13943: _Tp __d = -std::log(__x2); +13943: _Tp __e = __mu * __d; +13943: const _Tp __fact2 = (std::abs(__e) < __eps +13943: ? _Tp(1) : std::sinh(__e) / __e); +13943: _Tp __gam1, __gam2, __gampl, __gammi; +13943: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi); +13943: _Tp __ff = __fact +13943: * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d); +13943: _Tp __sum = __ff; +13943: __e = std::exp(__e); +13943: _Tp __p = __e / (_Tp(2) * __gampl); +13943: _Tp __q = _Tp(1) / (_Tp(2) * __e * __gammi); +13943: _Tp __c = _Tp(1); +13943: __d = __x2 * __x2; +13943: _Tp __sum1 = __p; +13943: int __i; +13943: for (__i = 1; __i <= __max_iter; ++__i) +13943: { +13943: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2); +13943: __c *= __d / __i; +13943: __p /= __i - __mu; +13943: __q /= __i + __mu; +13943: const _Tp __del = __c * __ff; +13943: __sum += __del; +13943: const _Tp __del1 = __c * (__p - __i * __ff); +13943: __sum1 += __del1; +13943: if (std::abs(__del) < __eps * std::abs(__sum)) +13943: break; +13943: } +13943: if (__i > __max_iter) +13943: std::__throw_runtime_error(("Bessel k series failed to converge " "in __bessel_ik.") +13943: ); +13943: __Kmu = __sum; +13943: __Knu1 = __sum1 * __xi2; +13943: } +13943: else +13943: { +13943: _Tp __b = _Tp(2) * (_Tp(1) + __x); +13943: _Tp __d = _Tp(1) / __b; +13943: _Tp __delh = __d; +13943: _Tp __h = __delh; +13943: _Tp __q1 = _Tp(0); +13943: _Tp __q2 = _Tp(1); +13943: _Tp __a1 = _Tp(0.25L) - __mu2; +13943: _Tp __q = __c = __a1; +13943: _Tp __a = -__a1; +13943: _Tp __s = _Tp(1) + __q * __delh; +13943: int __i; +13943: for (__i = 2; __i <= __max_iter; ++__i) +13943: { +13943: __a -= 2 * (__i - 1); +13943: __c = -__a * __c / __i; +13943: const _Tp __qnew = (__q1 - __b * __q2) / __a; +13943: __q1 = __q2; +13943: __q2 = __qnew; +13943: __q += __c * __qnew; +13943: __b += _Tp(2); +13943: __d = _Tp(1) / (__b + __a * __d); +13943: __delh = (__b * __d - _Tp(1)) * __delh; +13943: __h += __delh; +13943: const _Tp __dels = __q * __delh; +13943: __s += __dels; +13943: if ( std::abs(__dels / __s) < __eps ) +13943: break; +13943: } +13943: if (__i > __max_iter) +13943: std::__throw_runtime_error(("Steed's method failed " "in __bessel_ik.") +13943: ); +13943: __h = __a1 * __h; +13943: __Kmu = std::sqrt(__numeric_constants<_Tp>::__pi() / (_Tp(2) * __x)) +13943: * std::exp(-__x) / __s; +13943: __Knu1 = __Kmu * (__mu + __x + _Tp(0.5L) - __h) * __xi; +13943: } +13943: +13943: _Tp __Kpmu = __mu * __xi * __Kmu - __Knu1; +13943: _Tp __Inumu = __xi / (__f * __Kmu - __Kpmu); +13943: __Inu = __Inumu * __Inul1 / __Inul; +13943: __Ipnu = __Inumu * __Ipnu1 / __Inul; +13943: for ( __i = 1; __i <= __nl; ++__i ) +13943: { +13943: const _Tp __Knutemp = (__mu + __i) * __xi2 * __Knu1 + __Kmu; +13943: __Kmu = __Knu1; +13943: __Knu1 = __Knutemp; +13943: } +13943: __Knu = __Kmu; +13943: __Kpnu = __nu * __xi * __Kmu - __Knu1; +13943: +13943: return; +13943: } +13943: # 267 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +13943: template +13943: _Tp +13943: __cyl_bessel_i(_Tp __nu, _Tp __x) +13943: { +13943: if (__nu < _Tp(0) || __x < _Tp(0)) +13943: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_i.") +13943: ); +13943: else if (__isnan(__nu) || __isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__x * __x < _Tp(10) * (__nu + _Tp(1))) +13943: return __cyl_bessel_ij_series(__nu, __x, +_Tp(1), 200); +13943: else +13943: { +13943: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu; +13943: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +13943: return __I_nu; +13943: } +13943: } +13943: # 303 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +13943: template +13943: _Tp +13943: __cyl_bessel_k(_Tp __nu, _Tp __x) +13943: { +13943: if (__nu < _Tp(0) || __x < _Tp(0)) +13943: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_k.") +13943: ); +13943: else if (__isnan(__nu) || __isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else +13943: { +13943: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu; +13943: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +13943: return __K_nu; +13943: } +13943: } +13943: # 337 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +13943: template +13943: void +13943: __sph_bessel_ik(unsigned int __n, _Tp __x, +13943: _Tp & __i_n, _Tp & __k_n, _Tp & __ip_n, _Tp & __kp_n) +13943: { +13943: const _Tp __nu = _Tp(__n) + _Tp(0.5L); +13943: +13943: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu; +13943: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +13943: +13943: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2() +13943: / std::sqrt(__x); +13943: +13943: __i_n = __factor * __I_nu; +13943: __k_n = __factor * __K_nu; +13943: __ip_n = __factor * __Ip_nu - __i_n / (_Tp(2) * __x); +13943: __kp_n = __factor * __Kp_nu - __k_n / (_Tp(2) * __x); +13943: +13943: return; +13943: } +13943: # 373 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +13943: template +13943: void +13943: __airy(_Tp __x, _Tp & __Ai, _Tp & __Bi, _Tp & __Aip, _Tp & __Bip) +13943: { +13943: const _Tp __absx = std::abs(__x); +13943: const _Tp __rootx = std::sqrt(__absx); +13943: const _Tp __z = _Tp(2) * __absx * __rootx / _Tp(3); +13943: const _Tp _S_inf = std::numeric_limits<_Tp>::infinity(); +13943: +13943: if (__isnan(__x)) +13943: __Bip = __Aip = __Bi = __Ai = std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__z == _S_inf) +13943: { +13943: __Aip = __Ai = _Tp(0); +13943: __Bip = __Bi = _S_inf; +13943: } +13943: else if (__z == -_S_inf) +13943: __Bip = __Aip = __Bi = __Ai = _Tp(0); +13943: else if (__x > _Tp(0)) +13943: { +13943: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu; +13943: +13943: __bessel_ik(_Tp(1) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +13943: __Ai = __rootx * __K_nu +13943: / (__numeric_constants<_Tp>::__sqrt3() +13943: * __numeric_constants<_Tp>::__pi()); +13943: __Bi = __rootx * (__K_nu / __numeric_constants<_Tp>::__pi() +13943: + _Tp(2) * __I_nu / __numeric_constants<_Tp>::__sqrt3()); +13943: +13943: __bessel_ik(_Tp(2) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +13943: __Aip = -__x * __K_nu +13943: / (__numeric_constants<_Tp>::__sqrt3() +13943: * __numeric_constants<_Tp>::__pi()); +13943: __Bip = __x * (__K_nu / __numeric_constants<_Tp>::__pi() +13943: + _Tp(2) * __I_nu +13943: / __numeric_constants<_Tp>::__sqrt3()); +13943: } +13943: else if (__x < _Tp(0)) +13943: { +13943: _Tp __J_nu, __Jp_nu, __N_nu, __Np_nu; +13943: +13943: __bessel_jn(_Tp(1) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu); +13943: __Ai = __rootx * (__J_nu +13943: - __N_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2); +13943: __Bi = -__rootx * (__N_nu +13943: + __J_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2); +13943: +13943: __bessel_jn(_Tp(2) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu); +13943: __Aip = __absx * (__N_nu / __numeric_constants<_Tp>::__sqrt3() +13943: + __J_nu) / _Tp(2); +13943: __Bip = __absx * (__J_nu / __numeric_constants<_Tp>::__sqrt3() +13943: - __N_nu) / _Tp(2); +13943: } +13943: else +13943: { +13943: +13943: +13943: +13943: __Ai = _Tp(0.35502805388781723926L); +13943: __Bi = __Ai * __numeric_constants<_Tp>::__sqrt3(); +13943: +13943: +13943: +13943: +13943: __Aip = -_Tp(0.25881940379280679840L); +13943: __Bip = -__Aip * __numeric_constants<_Tp>::__sqrt3(); +13943: } +13943: +13943: return; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 55 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/poly_hermite.tcc" 1 3 +13943: # 42 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 56 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +13943: namespace __detail +13943: { +13943: # 72 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +13943: template +13943: _Tp +13943: __poly_hermite_recursion(unsigned int __n, _Tp __x) +13943: { +13943: +13943: _Tp __H_0 = 1; +13943: if (__n == 0) +13943: return __H_0; +13943: +13943: +13943: _Tp __H_1 = 2 * __x; +13943: if (__n == 1) +13943: return __H_1; +13943: +13943: +13943: _Tp __H_n, __H_nm1, __H_nm2; +13943: unsigned int __i; +13943: for (__H_nm2 = __H_0, __H_nm1 = __H_1, __i = 2; __i <= __n; ++__i) +13943: { +13943: __H_n = 2 * (__x * __H_nm1 - (__i - 1) * __H_nm2); +13943: __H_nm2 = __H_nm1; +13943: __H_nm1 = __H_n; +13943: } +13943: +13943: return __H_n; +13943: } +13943: # 114 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +13943: template +13943: inline _Tp +13943: __poly_hermite(unsigned int __n, _Tp __x) +13943: { +13943: if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else +13943: return __poly_hermite_recursion(__n, __x); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 56 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 1 3 +13943: # 44 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 60 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: namespace __detail +13943: { +13943: # 75 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: template +13943: _Tp +13943: __poly_laguerre_large_n(unsigned __n, _Tpa __alpha1, _Tp __x) +13943: { +13943: const _Tp __a = -_Tp(__n); +13943: const _Tp __b = _Tp(__alpha1) + _Tp(1); +13943: const _Tp __eta = _Tp(2) * __b - _Tp(4) * __a; +13943: const _Tp __cos2th = __x / __eta; +13943: const _Tp __sin2th = _Tp(1) - __cos2th; +13943: const _Tp __th = std::acos(std::sqrt(__cos2th)); +13943: const _Tp __pre_h = __numeric_constants<_Tp>::__pi_2() +13943: * __numeric_constants<_Tp>::__pi_2() +13943: * __eta * __eta * __cos2th * __sin2th; +13943: +13943: +13943: const _Tp __lg_b = ::std::lgamma(_Tp(__n) + __b); +13943: const _Tp __lnfact = ::std::lgamma(_Tp(__n + 1)); +13943: +13943: +13943: +13943: +13943: +13943: _Tp __pre_term1 = _Tp(0.5L) * (_Tp(1) - __b) +13943: * std::log(_Tp(0.25L) * __x * __eta); +13943: _Tp __pre_term2 = _Tp(0.25L) * std::log(__pre_h); +13943: _Tp __lnpre = __lg_b - __lnfact + _Tp(0.5L) * __x +13943: + __pre_term1 - __pre_term2; +13943: _Tp __ser_term1 = std::sin(__a * __numeric_constants<_Tp>::__pi()); +13943: _Tp __ser_term2 = std::sin(_Tp(0.25L) * __eta +13943: * (_Tp(2) * __th +13943: - std::sin(_Tp(2) * __th)) +13943: + __numeric_constants<_Tp>::__pi_4()); +13943: _Tp __ser = __ser_term1 + __ser_term2; +13943: +13943: return std::exp(__lnpre) * __ser; +13943: } +13943: # 129 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: template +13943: _Tp +13943: __poly_laguerre_hyperg(unsigned int __n, _Tpa __alpha1, _Tp __x) +13943: { +13943: const _Tp __b = _Tp(__alpha1) + _Tp(1); +13943: const _Tp __mx = -__x; +13943: const _Tp __tc_sgn = (__x < _Tp(0) ? _Tp(1) +13943: : ((__n % 2 == 1) ? -_Tp(1) : _Tp(1))); +13943: +13943: _Tp __tc = _Tp(1); +13943: const _Tp __ax = std::abs(__x); +13943: for (unsigned int __k = 1; __k <= __n; ++__k) +13943: __tc *= (__ax / __k); +13943: +13943: _Tp __term = __tc * __tc_sgn; +13943: _Tp __sum = __term; +13943: for (int __k = int(__n) - 1; __k >= 0; --__k) +13943: { +13943: __term *= ((__b + _Tp(__k)) / _Tp(int(__n) - __k)) +13943: * _Tp(__k + 1) / __mx; +13943: __sum += __term; +13943: } +13943: +13943: return __sum; +13943: } +13943: # 185 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: template +13943: _Tp +13943: __poly_laguerre_recursion(unsigned int __n, _Tpa __alpha1, _Tp __x) +13943: { +13943: +13943: _Tp __l_0 = _Tp(1); +13943: if (__n == 0) +13943: return __l_0; +13943: +13943: +13943: _Tp __l_1 = -__x + _Tp(1) + _Tp(__alpha1); +13943: if (__n == 1) +13943: return __l_1; +13943: +13943: +13943: _Tp __l_n2 = __l_0; +13943: _Tp __l_n1 = __l_1; +13943: _Tp __l_n = _Tp(0); +13943: for (unsigned int __nn = 2; __nn <= __n; ++__nn) +13943: { +13943: __l_n = (_Tp(2 * __nn - 1) + _Tp(__alpha1) - __x) +13943: * __l_n1 / _Tp(__nn) +13943: - (_Tp(__nn - 1) + _Tp(__alpha1)) * __l_n2 / _Tp(__nn); +13943: __l_n2 = __l_n1; +13943: __l_n1 = __l_n; +13943: } +13943: +13943: return __l_n; +13943: } +13943: # 244 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: template +13943: _Tp +13943: __poly_laguerre(unsigned int __n, _Tpa __alpha1, _Tp __x) +13943: { +13943: if (__x < _Tp(0)) +13943: std::__throw_domain_error(("Negative argument " "in __poly_laguerre.") +13943: ); +13943: +13943: else if (__isnan(__x)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__n == 0) +13943: return _Tp(1); +13943: else if (__n == 1) +13943: return _Tp(1) + _Tp(__alpha1) - __x; +13943: else if (__x == _Tp(0)) +13943: { +13943: _Tp __prod = _Tp(__alpha1) + _Tp(1); +13943: for (unsigned int __k = 2; __k <= __n; ++__k) +13943: __prod *= (_Tp(__alpha1) + _Tp(__k)) / _Tp(__k); +13943: return __prod; +13943: } +13943: else if (__n > 10000000 && _Tp(__alpha1) > -_Tp(1) +13943: && __x < _Tp(2) * (_Tp(__alpha1) + _Tp(1)) + _Tp(4 * __n)) +13943: return __poly_laguerre_large_n(__n, __alpha1, __x); +13943: else if (_Tp(__alpha1) >= _Tp(0) +13943: || (__x > _Tp(0) && _Tp(__alpha1) < -_Tp(__n + 1))) +13943: return __poly_laguerre_recursion(__n, __alpha1, __x); +13943: else +13943: return __poly_laguerre_hyperg(__n, __alpha1, __x); +13943: } +13943: # 296 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: template +13943: inline _Tp +13943: __assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) +13943: { return __poly_laguerre(__n, __m, __x); } +13943: # 316 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +13943: template +13943: inline _Tp +13943: __laguerre(unsigned int __n, _Tp __x) +13943: { return __poly_laguerre(__n, 0, __x); } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 57 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: # 1 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 1 3 +13943: # 47 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 63 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: namespace __detail +13943: { +13943: # 78 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: template +13943: _Tp +13943: __riemann_zeta_sum(_Tp __s) +13943: { +13943: +13943: if (__s < _Tp(1)) +13943: std::__throw_domain_error(("Bad argument in zeta sum.")); +13943: +13943: const unsigned int max_iter = 10000; +13943: _Tp __zeta = _Tp(0); +13943: for (unsigned int __k = 1; __k < max_iter; ++__k) +13943: { +13943: _Tp __term = std::pow(static_cast<_Tp>(__k), -__s); +13943: if (__term < std::numeric_limits<_Tp>::epsilon()) +13943: { +13943: break; +13943: } +13943: __zeta += __term; +13943: } +13943: +13943: return __zeta; +13943: } +13943: # 115 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: template +13943: _Tp +13943: __riemann_zeta_alt(_Tp __s) +13943: { +13943: _Tp __sgn = _Tp(1); +13943: _Tp __zeta = _Tp(0); +13943: for (unsigned int __i = 1; __i < 10000000; ++__i) +13943: { +13943: _Tp __term = __sgn / std::pow(__i, __s); +13943: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: __zeta += __term; +13943: __sgn *= _Tp(-1); +13943: } +13943: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s); +13943: +13943: return __zeta; +13943: } +13943: # 157 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: template +13943: _Tp +13943: __riemann_zeta_glob(_Tp __s) +13943: { +13943: _Tp __zeta = _Tp(0); +13943: +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: +13943: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10 +13943: * std::log(_Tp(10)) - _Tp(1); +13943: +13943: +13943: +13943: if (__s < _Tp(0)) +13943: { +13943: +13943: if (::std::fmod(__s,_Tp(2)) == _Tp(0)) +13943: return _Tp(0); +13943: else +13943: +13943: { +13943: _Tp __zeta = __riemann_zeta_glob(_Tp(1) - __s); +13943: __zeta *= std::pow(_Tp(2) +13943: * __numeric_constants<_Tp>::__pi(), __s) +13943: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) +13943: +13943: * std::exp(::std::lgamma(_Tp(1) - __s)) +13943: +13943: +13943: +13943: / __numeric_constants<_Tp>::__pi(); +13943: return __zeta; +13943: } +13943: } +13943: +13943: _Tp __num = _Tp(0.5L); +13943: const unsigned int __maxit = 10000; +13943: for (unsigned int __i = 0; __i < __maxit; ++__i) +13943: { +13943: bool __punt = false; +13943: _Tp __sgn = _Tp(1); +13943: _Tp __term = _Tp(0); +13943: for (unsigned int __j = 0; __j <= __i; ++__j) +13943: { +13943: +13943: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i)) +13943: - ::std::lgamma(_Tp(1 + __j)) +13943: - ::std::lgamma(_Tp(1 + __i - __j)); +13943: +13943: +13943: +13943: +13943: +13943: if (__bincoeff > __max_bincoeff) +13943: { +13943: +13943: __punt = true; +13943: break; +13943: } +13943: __bincoeff = std::exp(__bincoeff); +13943: __term += __sgn * __bincoeff * std::pow(_Tp(1 + __j), -__s); +13943: __sgn *= _Tp(-1); +13943: } +13943: if (__punt) +13943: break; +13943: __term *= __num; +13943: __zeta += __term; +13943: if (std::abs(__term/__zeta) < __eps) +13943: break; +13943: __num *= _Tp(0.5L); +13943: } +13943: +13943: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s); +13943: +13943: return __zeta; +13943: } +13943: # 252 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: template +13943: _Tp +13943: __riemann_zeta_product(_Tp __s) +13943: { +13943: static const _Tp __prime[] = { +13943: _Tp(2), _Tp(3), _Tp(5), _Tp(7), _Tp(11), _Tp(13), _Tp(17), _Tp(19), +13943: _Tp(23), _Tp(29), _Tp(31), _Tp(37), _Tp(41), _Tp(43), _Tp(47), +13943: _Tp(53), _Tp(59), _Tp(61), _Tp(67), _Tp(71), _Tp(73), _Tp(79), +13943: _Tp(83), _Tp(89), _Tp(97), _Tp(101), _Tp(103), _Tp(107), _Tp(109) +13943: }; +13943: static const unsigned int __num_primes = sizeof(__prime) / sizeof(_Tp); +13943: +13943: _Tp __zeta = _Tp(1); +13943: for (unsigned int __i = 0; __i < __num_primes; ++__i) +13943: { +13943: const _Tp __fact = _Tp(1) - std::pow(__prime[__i], -__s); +13943: __zeta *= __fact; +13943: if (_Tp(1) - __fact < std::numeric_limits<_Tp>::epsilon()) +13943: break; +13943: } +13943: +13943: __zeta = _Tp(1) / __zeta; +13943: +13943: return __zeta; +13943: } +13943: # 293 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: template +13943: _Tp +13943: __riemann_zeta(_Tp __s) +13943: { +13943: if (__isnan(__s)) +13943: return std::numeric_limits<_Tp>::quiet_NaN(); +13943: else if (__s == _Tp(1)) +13943: return std::numeric_limits<_Tp>::infinity(); +13943: else if (__s < -_Tp(19)) +13943: { +13943: _Tp __zeta = __riemann_zeta_product(_Tp(1) - __s); +13943: __zeta *= std::pow(_Tp(2) * __numeric_constants<_Tp>::__pi(), __s) +13943: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) +13943: +13943: * std::exp(::std::lgamma(_Tp(1) - __s)) +13943: +13943: +13943: +13943: / __numeric_constants<_Tp>::__pi(); +13943: return __zeta; +13943: } +13943: else if (__s < _Tp(20)) +13943: { +13943: +13943: bool __glob = true; +13943: if (__glob) +13943: return __riemann_zeta_glob(__s); +13943: else +13943: { +13943: if (__s > _Tp(1)) +13943: return __riemann_zeta_sum(__s); +13943: else +13943: { +13943: _Tp __zeta = std::pow(_Tp(2) +13943: * __numeric_constants<_Tp>::__pi(), __s) +13943: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) +13943: +13943: * ::std::tgamma(_Tp(1) - __s) +13943: +13943: +13943: +13943: * __riemann_zeta_sum(_Tp(1) - __s); +13943: return __zeta; +13943: } +13943: } +13943: } +13943: else +13943: return __riemann_zeta_product(__s); +13943: } +13943: # 365 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: template +13943: _Tp +13943: __hurwitz_zeta_glob(_Tp __a, _Tp __s) +13943: { +13943: _Tp __zeta = _Tp(0); +13943: +13943: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +13943: +13943: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10 +13943: * std::log(_Tp(10)) - _Tp(1); +13943: +13943: const unsigned int __maxit = 10000; +13943: for (unsigned int __i = 0; __i < __maxit; ++__i) +13943: { +13943: bool __punt = false; +13943: _Tp __sgn = _Tp(1); +13943: _Tp __term = _Tp(0); +13943: for (unsigned int __j = 0; __j <= __i; ++__j) +13943: { +13943: +13943: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i)) +13943: - ::std::lgamma(_Tp(1 + __j)) +13943: - ::std::lgamma(_Tp(1 + __i - __j)); +13943: +13943: +13943: +13943: +13943: +13943: if (__bincoeff > __max_bincoeff) +13943: { +13943: +13943: __punt = true; +13943: break; +13943: } +13943: __bincoeff = std::exp(__bincoeff); +13943: __term += __sgn * __bincoeff * std::pow(_Tp(__a + __j), -__s); +13943: __sgn *= _Tp(-1); +13943: } +13943: if (__punt) +13943: break; +13943: __term /= _Tp(__i + 1); +13943: if (std::abs(__term / __zeta) < __eps) +13943: break; +13943: __zeta += __term; +13943: } +13943: +13943: __zeta /= __s - _Tp(1); +13943: +13943: return __zeta; +13943: } +13943: # 430 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +13943: template +13943: inline _Tp +13943: __hurwitz_zeta(_Tp __a, _Tp __s) +13943: { return __hurwitz_zeta_glob(__a, __s); } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 58 "/usr/include/c++/14/bits/specfun.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 203 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: assoc_laguerref(unsigned int __n, unsigned int __m, float __x) +13943: { return __detail::__assoc_laguerre(__n, __m, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x) +13943: { return __detail::__assoc_laguerre(__n, __m, __x); } +13943: # 248 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__assoc_laguerre<__type>(__n, __m, __x); +13943: } +13943: # 264 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: assoc_legendref(unsigned int __l, unsigned int __m, float __x) +13943: { return __detail::__assoc_legendre_p(__l, __m, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: assoc_legendrel(unsigned int __l, unsigned int __m, long double __x) +13943: { return __detail::__assoc_legendre_p(__l, __m, __x); } +13943: # 294 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__assoc_legendre_p<__type>(__l, __m, __x); +13943: } +13943: # 309 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: betaf(float __a, float __b) +13943: { return __detail::__beta(__a, __b); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: betal(long double __a, long double __b) +13943: { return __detail::__beta(__a, __b); } +13943: # 339 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type +13943: beta(_Tpa __a, _Tpb __b) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type; +13943: return __detail::__beta<__type>(__a, __b); +13943: } +13943: # 355 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: comp_ellint_1f(float __k) +13943: { return __detail::__comp_ellint_1(__k); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: comp_ellint_1l(long double __k) +13943: { return __detail::__comp_ellint_1(__k); } +13943: # 387 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: comp_ellint_1(_Tp __k) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__comp_ellint_1<__type>(__k); +13943: } +13943: # 403 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: comp_ellint_2f(float __k) +13943: { return __detail::__comp_ellint_2(__k); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: comp_ellint_2l(long double __k) +13943: { return __detail::__comp_ellint_2(__k); } +13943: # 434 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: comp_ellint_2(_Tp __k) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__comp_ellint_2<__type>(__k); +13943: } +13943: # 450 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: comp_ellint_3f(float __k, float __nu) +13943: { return __detail::__comp_ellint_3(__k, __nu); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: comp_ellint_3l(long double __k, long double __nu) +13943: { return __detail::__comp_ellint_3(__k, __nu); } +13943: # 485 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type +13943: comp_ellint_3(_Tp __k, _Tpn __nu) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type; +13943: return __detail::__comp_ellint_3<__type>(__k, __nu); +13943: } +13943: # 501 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: cyl_bessel_if(float __nu, float __x) +13943: { return __detail::__cyl_bessel_i(__nu, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: cyl_bessel_il(long double __nu, long double __x) +13943: { return __detail::__cyl_bessel_i(__nu, __x); } +13943: # 531 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +13943: cyl_bessel_i(_Tpnu __nu, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +13943: return __detail::__cyl_bessel_i<__type>(__nu, __x); +13943: } +13943: # 547 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: cyl_bessel_jf(float __nu, float __x) +13943: { return __detail::__cyl_bessel_j(__nu, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: cyl_bessel_jl(long double __nu, long double __x) +13943: { return __detail::__cyl_bessel_j(__nu, __x); } +13943: # 577 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +13943: cyl_bessel_j(_Tpnu __nu, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +13943: return __detail::__cyl_bessel_j<__type>(__nu, __x); +13943: } +13943: # 593 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: cyl_bessel_kf(float __nu, float __x) +13943: { return __detail::__cyl_bessel_k(__nu, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: cyl_bessel_kl(long double __nu, long double __x) +13943: { return __detail::__cyl_bessel_k(__nu, __x); } +13943: # 629 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +13943: cyl_bessel_k(_Tpnu __nu, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +13943: return __detail::__cyl_bessel_k<__type>(__nu, __x); +13943: } +13943: # 645 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: cyl_neumannf(float __nu, float __x) +13943: { return __detail::__cyl_neumann_n(__nu, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: cyl_neumannl(long double __nu, long double __x) +13943: { return __detail::__cyl_neumann_n(__nu, __x); } +13943: # 677 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +13943: cyl_neumann(_Tpnu __nu, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +13943: return __detail::__cyl_neumann_n<__type>(__nu, __x); +13943: } +13943: # 693 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: ellint_1f(float __k, float __phi) +13943: { return __detail::__ellint_1(__k, __phi); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: ellint_1l(long double __k, long double __phi) +13943: { return __detail::__ellint_1(__k, __phi); } +13943: # 725 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type +13943: ellint_1(_Tp __k, _Tpp __phi) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; +13943: return __detail::__ellint_1<__type>(__k, __phi); +13943: } +13943: # 741 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: ellint_2f(float __k, float __phi) +13943: { return __detail::__ellint_2(__k, __phi); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: ellint_2l(long double __k, long double __phi) +13943: { return __detail::__ellint_2(__k, __phi); } +13943: # 773 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type +13943: ellint_2(_Tp __k, _Tpp __phi) +13943: { +13943: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; +13943: return __detail::__ellint_2<__type>(__k, __phi); +13943: } +13943: # 789 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: ellint_3f(float __k, float __nu, float __phi) +13943: { return __detail::__ellint_3(__k, __nu, __phi); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: ellint_3l(long double __k, long double __nu, long double __phi) +13943: { return __detail::__ellint_3(__k, __nu, __phi); } +13943: # 826 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type +13943: ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi) +13943: { +13943: typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type; +13943: return __detail::__ellint_3<__type>(__k, __nu, __phi); +13943: } +13943: # 841 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: expintf(float __x) +13943: { return __detail::__expint(__x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: expintl(long double __x) +13943: { return __detail::__expint(__x); } +13943: # 866 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: expint(_Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__expint<__type>(__x); +13943: } +13943: # 882 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: hermitef(unsigned int __n, float __x) +13943: { return __detail::__poly_hermite(__n, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: hermitel(unsigned int __n, long double __x) +13943: { return __detail::__poly_hermite(__n, __x); } +13943: # 914 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: hermite(unsigned int __n, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__poly_hermite<__type>(__n, __x); +13943: } +13943: # 930 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: laguerref(unsigned int __n, float __x) +13943: { return __detail::__laguerre(__n, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: laguerrel(unsigned int __n, long double __x) +13943: { return __detail::__laguerre(__n, __x); } +13943: # 958 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: laguerre(unsigned int __n, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__laguerre<__type>(__n, __x); +13943: } +13943: # 974 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: legendref(unsigned int __l, float __x) +13943: { return __detail::__poly_legendre_p(__l, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: legendrel(unsigned int __l, long double __x) +13943: { return __detail::__poly_legendre_p(__l, __x); } +13943: # 1003 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: legendre(unsigned int __l, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__poly_legendre_p<__type>(__l, __x); +13943: } +13943: # 1019 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: riemann_zetaf(float __s) +13943: { return __detail::__riemann_zeta(__s); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: riemann_zetal(long double __s) +13943: { return __detail::__riemann_zeta(__s); } +13943: # 1054 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: riemann_zeta(_Tp __s) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__riemann_zeta<__type>(__s); +13943: } +13943: # 1070 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: sph_besself(unsigned int __n, float __x) +13943: { return __detail::__sph_bessel(__n, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: sph_bessell(unsigned int __n, long double __x) +13943: { return __detail::__sph_bessel(__n, __x); } +13943: # 1098 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: sph_bessel(unsigned int __n, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__sph_bessel<__type>(__n, __x); +13943: } +13943: # 1114 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: sph_legendref(unsigned int __l, unsigned int __m, float __theta) +13943: { return __detail::__sph_legendre(__l, __m, __theta); } +13943: # 1125 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline long double +13943: sph_legendrel(unsigned int __l, unsigned int __m, long double __theta) +13943: { return __detail::__sph_legendre(__l, __m, __theta); } +13943: # 1145 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__sph_legendre<__type>(__l, __m, __theta); +13943: } +13943: # 1161 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: sph_neumannf(unsigned int __n, float __x) +13943: { return __detail::__sph_neumann(__n, __x); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline long double +13943: sph_neumannl(unsigned int __n, long double __x) +13943: { return __detail::__sph_neumann(__n, __x); } +13943: # 1189 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: sph_neumann(unsigned int __n, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: return __detail::__sph_neumann<__type>(__n, __x); +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 1216 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: airy_aif(float __x) +13943: { +13943: float __Ai, __Bi, __Aip, __Bip; +13943: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +13943: return __Ai; +13943: } +13943: +13943: +13943: +13943: +13943: inline long double +13943: airy_ail(long double __x) +13943: { +13943: long double __Ai, __Bi, __Aip, __Bip; +13943: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +13943: return __Ai; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: airy_ai(_Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: __type __Ai, __Bi, __Aip, __Bip; +13943: std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip); +13943: return __Ai; +13943: } +13943: +13943: +13943: +13943: +13943: inline float +13943: airy_bif(float __x) +13943: { +13943: float __Ai, __Bi, __Aip, __Bip; +13943: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +13943: return __Bi; +13943: } +13943: +13943: +13943: +13943: +13943: inline long double +13943: airy_bil(long double __x) +13943: { +13943: long double __Ai, __Bi, __Aip, __Bip; +13943: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +13943: return __Bi; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: inline typename __gnu_cxx::__promote<_Tp>::__type +13943: airy_bi(_Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +13943: __type __Ai, __Bi, __Aip, __Bip; +13943: std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip); +13943: return __Bi; +13943: } +13943: # 1292 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: conf_hypergf(float __a, float __c, float __x) +13943: { return std::__detail::__conf_hyperg(__a, __c, __x); } +13943: # 1303 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline long double +13943: conf_hypergl(long double __a, long double __c, long double __x) +13943: { return std::__detail::__conf_hyperg(__a, __c, __x); } +13943: # 1323 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type +13943: conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type; +13943: return std::__detail::__conf_hyperg<__type>(__a, __c, __x); +13943: } +13943: # 1340 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline float +13943: hypergf(float __a, float __b, float __c, float __x) +13943: { return std::__detail::__hyperg(__a, __b, __c, __x); } +13943: # 1351 "/usr/include/c++/14/bits/specfun.h" 3 +13943: inline long double +13943: hypergl(long double __a, long double __b, long double __c, long double __x) +13943: { return std::__detail::__hyperg(__a, __b, __c, __x); } +13943: # 1372 "/usr/include/c++/14/bits/specfun.h" 3 +13943: template +13943: inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type +13943: hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x) +13943: { +13943: typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp> +13943: ::__type __type; +13943: return std::__detail::__hyperg<__type>(__a, __b, __c, __x); +13943: } +13943: +13943: +13943: +13943: } +13943: # 3907 "/usr/include/c++/14/cmath" 2 3 +13943: +13943: +13943: } +13943: # 41 "/usr/include/c++/14/random" 2 3 +13943: +13943: # 1 "/usr/include/c++/14/cstdlib" 1 3 +13943: # 39 "/usr/include/c++/14/cstdlib" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdlib" 3 +13943: # 43 "/usr/include/c++/14/random" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/random.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/random.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 58 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: _RealType +13943: generate_canonical(_UniformRandomNumberGenerator& __g); +13943: +13943: +13943: +13943: namespace __detail +13943: { +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: +13943: template +13943: (std::numeric_limits<_UIntType>::digits)> +13943: struct _Shift +13943: { static constexpr _UIntType __value = 0; }; +13943: +13943: template +13943: struct _Shift<_UIntType, __w, true> +13943: { static constexpr _UIntType __value = _UIntType(1) << __w; }; +13943: +13943: template +13943: struct _Select_uint_least_t +13943: { +13943: static_assert(__which < 0, +13943: "sorry, would be too much trouble for a slow result"); +13943: }; +13943: +13943: template +13943: struct _Select_uint_least_t<__s, 4> +13943: { using type = unsigned int; }; +13943: +13943: template +13943: struct _Select_uint_least_t<__s, 3> +13943: { using type = unsigned long; }; +13943: +13943: template +13943: struct _Select_uint_least_t<__s, 2> +13943: { using type = unsigned long long; }; +13943: # 111 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: struct _Select_uint_least_t<__s, 1> +13943: { +13943: +13943: +13943: struct type +13943: { +13943: explicit +13943: type(uint64_t __a) noexcept : _M_lo(__a), _M_hi(0) { } +13943: +13943: +13943: friend type +13943: operator*(type __l, uint64_t __x) noexcept +13943: { +13943: +13943: +13943: +13943: +13943: constexpr uint64_t __mask = 0xffffffff; +13943: uint64_t __ll[2] = { __l._M_lo >> 32, __l._M_lo & __mask }; +13943: uint64_t __xx[2] = { __x >> 32, __x & __mask }; +13943: uint64_t __l0x0 = __ll[0] * __xx[0]; +13943: uint64_t __l0x1 = __ll[0] * __xx[1]; +13943: uint64_t __l1x0 = __ll[1] * __xx[0]; +13943: uint64_t __l1x1 = __ll[1] * __xx[1]; +13943: +13943: +13943: uint64_t __mid +13943: = (__l0x1 & __mask) + (__l1x0 & __mask) + (__l1x1 >> 32); +13943: __l._M_hi = __l0x0 + (__l0x1 >> 32) + (__l1x0 >> 32) + (__mid >> 32); +13943: __l._M_lo = (__mid << 32) + (__l1x1 & __mask); +13943: return __l; +13943: } +13943: +13943: friend type +13943: operator+(type __l, uint64_t __c) noexcept +13943: { +13943: __l._M_hi += __builtin_add_overflow(__l._M_lo, __c, &__l._M_lo); +13943: return __l; +13943: } +13943: +13943: friend type +13943: operator%(type __l, uint64_t __m) noexcept +13943: { +13943: if (__builtin_expect(__l._M_hi == 0, 0)) +13943: { +13943: __l._M_lo %= __m; +13943: return __l; +13943: } +13943: +13943: int __shift = __builtin_clzll(__m) + 64 +13943: - __builtin_clzll(__l._M_hi); +13943: type __x(0); +13943: if (__shift >= 64) +13943: { +13943: __x._M_hi = __m << (__shift - 64); +13943: __x._M_lo = 0; +13943: } +13943: else +13943: { +13943: __x._M_hi = __m >> (64 - __shift); +13943: __x._M_lo = __m << __shift; +13943: } +13943: +13943: while (__l._M_hi != 0 || __l._M_lo >= __m) +13943: { +13943: if (__x <= __l) +13943: { +13943: __l._M_hi -= __x._M_hi; +13943: __l._M_hi -= __builtin_sub_overflow(__l._M_lo, __x._M_lo, +13943: &__l._M_lo); +13943: } +13943: __x._M_lo = (__x._M_lo >> 1) | (__x._M_hi << 63); +13943: __x._M_hi >>= 1; +13943: } +13943: return __l; +13943: } +13943: +13943: +13943: explicit operator uint64_t() const noexcept +13943: { return _M_lo; } +13943: +13943: friend bool operator<(const type& __l, const type& __r) noexcept +13943: { +13943: if (__l._M_hi < __r._M_hi) +13943: return true; +13943: else if (__l._M_hi == __r._M_hi) +13943: return __l._M_lo < __r._M_lo; +13943: else +13943: return false; +13943: } +13943: +13943: friend bool operator<=(const type& __l, const type& __r) noexcept +13943: { return !(__r < __l); } +13943: +13943: uint64_t _M_lo; +13943: uint64_t _M_hi; +13943: }; +13943: }; +13943: +13943: +13943: +13943: template= __m - 1), +13943: bool __schrage_ok = __m % __a < __m / __a> +13943: struct _Mod +13943: { +13943: static _Tp +13943: __calc(_Tp __x) +13943: { +13943: using _Tp2 +13943: = typename _Select_uint_least_t::type; +13943: return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); +13943: } +13943: }; +13943: +13943: +13943: template +13943: struct _Mod<_Tp, __m, __a, __c, false, true> +13943: { +13943: static _Tp +13943: __calc(_Tp __x); +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct _Mod<_Tp, __m, __a, __c, true, __s> +13943: { +13943: static _Tp +13943: __calc(_Tp __x) +13943: { +13943: _Tp __res = __a * __x + __c; +13943: if (__m) +13943: __res %= __m; +13943: return __res; +13943: } +13943: }; +13943: +13943: template +13943: inline _Tp +13943: __mod(_Tp __x) +13943: { +13943: if constexpr (__a == 0) +13943: return __c; +13943: else +13943: return _Mod<_Tp, __m, __a, __c>::__calc(__x); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Adaptor +13943: { +13943: static_assert(std::is_floating_point<_DInputType>::value, +13943: "template argument must be a floating point type"); +13943: +13943: public: +13943: _Adaptor(_Engine& __g) +13943: : _M_g(__g) { } +13943: +13943: _DInputType +13943: min() const +13943: { return _DInputType(0); } +13943: +13943: _DInputType +13943: max() const +13943: { return _DInputType(1); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: _DInputType +13943: operator()() +13943: { +13943: return std::generate_canonical<_DInputType, +13943: std::numeric_limits<_DInputType>::digits, +13943: _Engine>(_M_g); +13943: } +13943: +13943: private: +13943: _Engine& _M_g; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: using __seed_seq_generate_t = decltype( +13943: std::declval<_Sseq&>().generate(std::declval(), +13943: std::declval())); +13943: +13943: template> +13943: using _If_seed_seq_for = _Require< +13943: __not_, _Engine>>, +13943: is_unsigned, +13943: __not_> +13943: >; +13943: +13943: #pragma GCC diagnostic pop +13943: } +13943: # 365 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class linear_congruential_engine +13943: { +13943: static_assert(std::is_unsigned<_UIntType>::value, +13943: "result_type must be an unsigned integral type"); +13943: static_assert(__m == 0u || (__a < __m && __c < __m), +13943: "template argument substituting __m out of bounds"); +13943: +13943: template +13943: using _If_seed_seq +13943: = __detail::_If_seed_seq_for<_Sseq, linear_congruential_engine, +13943: _UIntType>; +13943: +13943: public: +13943: +13943: typedef _UIntType result_type; +13943: +13943: +13943: static constexpr result_type multiplier = __a; +13943: +13943: static constexpr result_type increment = __c; +13943: +13943: static constexpr result_type modulus = __m; +13943: static constexpr result_type default_seed = 1u; +13943: +13943: +13943: +13943: +13943: +13943: linear_congruential_engine() : linear_congruential_engine(default_seed) +13943: { } +13943: # 404 "/usr/include/c++/14/bits/random.h" 3 +13943: explicit +13943: linear_congruential_engine(result_type __s) +13943: { seed(__s); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: explicit +13943: linear_congruential_engine(_Sseq& __q) +13943: { seed(__q); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: seed(result_type __s = default_seed); +13943: # 435 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: _If_seed_seq<_Sseq> +13943: seed(_Sseq& __q); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: min() +13943: { return __c == 0u ? 1u : 0u; } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: max() +13943: { return __m - 1u; } +13943: +13943: +13943: +13943: +13943: void +13943: discard(unsigned long long __z) +13943: { +13943: for (; __z != 0ULL; --__z) +13943: (*this)(); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: operator()() +13943: { +13943: _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x); +13943: return _M_x; +13943: } +13943: # 487 "/usr/include/c++/14/bits/random.h" 3 +13943: friend bool +13943: operator==(const linear_congruential_engine& __lhs, +13943: const linear_congruential_engine& __rhs) +13943: { return __lhs._M_x == __rhs._M_x; } +13943: # 500 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::linear_congruential_engine<_UIntType1, +13943: __a1, __c1, __m1>& __lcr); +13943: # 520 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::linear_congruential_engine<_UIntType1, __a1, +13943: __c1, __m1>& __lcr); +13943: +13943: private: +13943: _UIntType _M_x; +13943: }; +13943: # 543 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline bool +13943: operator!=(const std::linear_congruential_engine<_UIntType, __a, +13943: __c, __m>& __lhs, +13943: const std::linear_congruential_engine<_UIntType, __a, +13943: __c, __m>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: # 583 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class mersenne_twister_engine +13943: { +13943: static_assert(std::is_unsigned<_UIntType>::value, +13943: "result_type must be an unsigned integral type"); +13943: static_assert(1u <= __m && __m <= __n, +13943: "template argument substituting __m out of bounds"); +13943: static_assert(__r <= __w, "template argument substituting " +13943: "__r out of bound"); +13943: static_assert(__u <= __w, "template argument substituting " +13943: "__u out of bound"); +13943: static_assert(__s <= __w, "template argument substituting " +13943: "__s out of bound"); +13943: static_assert(__t <= __w, "template argument substituting " +13943: "__t out of bound"); +13943: static_assert(__l <= __w, "template argument substituting " +13943: "__l out of bound"); +13943: static_assert(__w <= std::numeric_limits<_UIntType>::digits, +13943: "template argument substituting __w out of bound"); +13943: static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1), +13943: "template argument substituting __a out of bound"); +13943: static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1), +13943: "template argument substituting __b out of bound"); +13943: static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1), +13943: "template argument substituting __c out of bound"); +13943: static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1), +13943: "template argument substituting __d out of bound"); +13943: static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1), +13943: "template argument substituting __f out of bound"); +13943: +13943: template +13943: using _If_seed_seq +13943: = __detail::_If_seed_seq_for<_Sseq, mersenne_twister_engine, +13943: _UIntType>; +13943: +13943: public: +13943: +13943: typedef _UIntType result_type; +13943: +13943: +13943: static constexpr size_t word_size = __w; +13943: static constexpr size_t state_size = __n; +13943: static constexpr size_t shift_size = __m; +13943: static constexpr size_t mask_bits = __r; +13943: static constexpr result_type xor_mask = __a; +13943: static constexpr size_t tempering_u = __u; +13943: static constexpr result_type tempering_d = __d; +13943: static constexpr size_t tempering_s = __s; +13943: static constexpr result_type tempering_b = __b; +13943: static constexpr size_t tempering_t = __t; +13943: static constexpr result_type tempering_c = __c; +13943: static constexpr size_t tempering_l = __l; +13943: static constexpr result_type initialization_multiplier = __f; +13943: static constexpr result_type default_seed = 5489u; +13943: +13943: +13943: +13943: mersenne_twister_engine() : mersenne_twister_engine(default_seed) { } +13943: +13943: explicit +13943: mersenne_twister_engine(result_type __sd) +13943: { seed(__sd); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: explicit +13943: mersenne_twister_engine(_Sseq& __q) +13943: { seed(__q); } +13943: +13943: void +13943: seed(result_type __sd = default_seed); +13943: +13943: template +13943: _If_seed_seq<_Sseq> +13943: seed(_Sseq& __q); +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: min() +13943: { return 0; } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: max() +13943: { return __detail::_Shift<_UIntType, __w>::__value - 1; } +13943: +13943: +13943: +13943: +13943: void +13943: discard(unsigned long long __z); +13943: +13943: result_type +13943: operator()(); +13943: # 703 "/usr/include/c++/14/bits/random.h" 3 +13943: friend bool +13943: operator==(const mersenne_twister_engine& __lhs, +13943: const mersenne_twister_engine& __rhs) +13943: { return (std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x) +13943: && __lhs._M_p == __rhs._M_p); } +13943: # 721 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::mersenne_twister_engine<_UIntType1, __w1, __n1, +13943: __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, +13943: __l1, __f1>& __x); +13943: # 747 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, +13943: __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, +13943: __l1, __f1>& __x); +13943: +13943: private: +13943: void _M_gen_rand(); +13943: +13943: _UIntType _M_x[state_size]; +13943: size_t _M_p; +13943: }; +13943: # 781 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline bool +13943: operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m, +13943: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs, +13943: const std::mersenne_twister_engine<_UIntType, __w, __n, __m, +13943: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: # 812 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class subtract_with_carry_engine +13943: { +13943: static_assert(std::is_unsigned<_UIntType>::value, +13943: "result_type must be an unsigned integral type"); +13943: static_assert(0u < __s && __s < __r, +13943: "0 < s < r"); +13943: static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, +13943: "template argument substituting __w out of bounds"); +13943: +13943: template +13943: using _If_seed_seq +13943: = __detail::_If_seed_seq_for<_Sseq, subtract_with_carry_engine, +13943: _UIntType>; +13943: +13943: public: +13943: +13943: typedef _UIntType result_type; +13943: +13943: +13943: static constexpr size_t word_size = __w; +13943: static constexpr size_t short_lag = __s; +13943: static constexpr size_t long_lag = __r; +13943: static constexpr uint_least32_t default_seed = 19780503u; +13943: +13943: subtract_with_carry_engine() : subtract_with_carry_engine(0u) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: subtract_with_carry_engine(result_type __sd) +13943: { seed(__sd); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: explicit +13943: subtract_with_carry_engine(_Sseq& __q) +13943: { seed(__q); } +13943: # 871 "/usr/include/c++/14/bits/random.h" 3 +13943: void +13943: seed(result_type __sd = 0u); +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _If_seed_seq<_Sseq> +13943: seed(_Sseq& __q); +13943: +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: min() +13943: { return 0; } +13943: +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: max() +13943: { return __detail::_Shift<_UIntType, __w>::__value - 1; } +13943: +13943: +13943: +13943: +13943: void +13943: discard(unsigned long long __z) +13943: { +13943: for (; __z != 0ULL; --__z) +13943: (*this)(); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: operator()(); +13943: # 926 "/usr/include/c++/14/bits/random.h" 3 +13943: friend bool +13943: operator==(const subtract_with_carry_engine& __lhs, +13943: const subtract_with_carry_engine& __rhs) +13943: { return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x) +13943: && __lhs._M_carry == __rhs._M_carry +13943: && __lhs._M_p == __rhs._M_p); } +13943: # 945 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::subtract_with_carry_engine<_UIntType1, __w1, +13943: __s1, __r1>& __x); +13943: # 964 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::subtract_with_carry_engine<_UIntType1, __w1, +13943: __s1, __r1>& __x); +13943: +13943: private: +13943: +13943: _UIntType _M_x[long_lag]; +13943: _UIntType _M_carry; +13943: size_t _M_p; +13943: }; +13943: # 991 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline bool +13943: operator!=(const std::subtract_with_carry_engine<_UIntType, __w, +13943: __s, __r>& __lhs, +13943: const std::subtract_with_carry_engine<_UIntType, __w, +13943: __s, __r>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: # 1009 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class discard_block_engine +13943: { +13943: static_assert(1 <= __r && __r <= __p, +13943: "template argument substituting __r out of bounds"); +13943: +13943: public: +13943: +13943: typedef typename _RandomNumberEngine::result_type result_type; +13943: +13943: template +13943: using _If_seed_seq +13943: = __detail::_If_seed_seq_for<_Sseq, discard_block_engine, +13943: result_type>; +13943: +13943: +13943: static constexpr size_t block_size = __p; +13943: static constexpr size_t used_block = __r; +13943: +13943: +13943: +13943: +13943: +13943: +13943: discard_block_engine() +13943: : _M_b(), _M_n(0) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: discard_block_engine(const _RandomNumberEngine& __rng) +13943: : _M_b(__rng), _M_n(0) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: discard_block_engine(_RandomNumberEngine&& __rng) +13943: : _M_b(std::move(__rng)), _M_n(0) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: discard_block_engine(result_type __s) +13943: : _M_b(__s), _M_n(0) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: explicit +13943: discard_block_engine(_Sseq& __q) +13943: : _M_b(__q), _M_n(0) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: seed() +13943: { +13943: _M_b.seed(); +13943: _M_n = 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: seed(result_type __s) +13943: { +13943: _M_b.seed(__s); +13943: _M_n = 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _If_seed_seq<_Sseq> +13943: seed(_Sseq& __q) +13943: { +13943: _M_b.seed(__q); +13943: _M_n = 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: const _RandomNumberEngine& +13943: base() const noexcept +13943: { return _M_b; } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: min() +13943: { return _RandomNumberEngine::min(); } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: max() +13943: { return _RandomNumberEngine::max(); } +13943: +13943: +13943: +13943: +13943: void +13943: discard(unsigned long long __z) +13943: { +13943: for (; __z != 0ULL; --__z) +13943: (*this)(); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: operator()(); +13943: # 1161 "/usr/include/c++/14/bits/random.h" 3 +13943: friend bool +13943: operator==(const discard_block_engine& __lhs, +13943: const discard_block_engine& __rhs) +13943: { return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; } +13943: # 1177 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::discard_block_engine<_RandomNumberEngine1, +13943: __p1, __r1>& __x); +13943: # 1195 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::discard_block_engine<_RandomNumberEngine1, +13943: __p1, __r1>& __x); +13943: +13943: private: +13943: _RandomNumberEngine _M_b; +13943: size_t _M_n; +13943: }; +13943: # 1219 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline bool +13943: operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, +13943: __r>& __lhs, +13943: const std::discard_block_engine<_RandomNumberEngine, __p, +13943: __r>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: # 1235 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class independent_bits_engine +13943: { +13943: static_assert(std::is_unsigned<_UIntType>::value, +13943: "result_type must be an unsigned integral type"); +13943: static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, +13943: "template argument substituting __w out of bounds"); +13943: +13943: template +13943: using _If_seed_seq +13943: = __detail::_If_seed_seq_for<_Sseq, independent_bits_engine, +13943: _UIntType>; +13943: +13943: public: +13943: +13943: typedef _UIntType result_type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: independent_bits_engine() +13943: : _M_b() { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: independent_bits_engine(const _RandomNumberEngine& __rng) +13943: : _M_b(__rng) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: independent_bits_engine(_RandomNumberEngine&& __rng) +13943: : _M_b(std::move(__rng)) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: independent_bits_engine(result_type __s) +13943: : _M_b(__s) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: explicit +13943: independent_bits_engine(_Sseq& __q) +13943: : _M_b(__q) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: seed() +13943: { _M_b.seed(); } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: seed(result_type __s) +13943: { _M_b.seed(__s); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _If_seed_seq<_Sseq> +13943: seed(_Sseq& __q) +13943: { _M_b.seed(__q); } +13943: +13943: +13943: +13943: +13943: +13943: const _RandomNumberEngine& +13943: base() const noexcept +13943: { return _M_b; } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: min() +13943: { return 0U; } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: max() +13943: { return __detail::_Shift<_UIntType, __w>::__value - 1; } +13943: +13943: +13943: +13943: +13943: void +13943: discard(unsigned long long __z) +13943: { +13943: for (; __z != 0ULL; --__z) +13943: (*this)(); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: operator()(); +13943: # 1377 "/usr/include/c++/14/bits/random.h" 3 +13943: friend bool +13943: operator==(const independent_bits_engine& __lhs, +13943: const independent_bits_engine& __rhs) +13943: { return __lhs._M_b == __rhs._M_b; } +13943: # 1394 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::independent_bits_engine<_RandomNumberEngine, +13943: __w, _UIntType>& __x) +13943: { +13943: __is >> __x._M_b; +13943: return __is; +13943: } +13943: +13943: private: +13943: _RandomNumberEngine _M_b; +13943: }; +13943: # 1421 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline bool +13943: operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, +13943: _UIntType>& __lhs, +13943: const std::independent_bits_engine<_RandomNumberEngine, __w, +13943: _UIntType>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: # 1440 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::independent_bits_engine<_RandomNumberEngine, +13943: __w, _UIntType>& __x) +13943: { +13943: __os << __x.base(); +13943: return __os; +13943: } +13943: # 1462 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class shuffle_order_engine +13943: { +13943: static_assert(1u <= __k, "template argument substituting " +13943: "__k out of bound"); +13943: +13943: public: +13943: +13943: typedef typename _RandomNumberEngine::result_type result_type; +13943: +13943: template +13943: using _If_seed_seq +13943: = __detail::_If_seed_seq_for<_Sseq, shuffle_order_engine, +13943: result_type>; +13943: +13943: static constexpr size_t table_size = __k; +13943: +13943: +13943: +13943: +13943: +13943: +13943: shuffle_order_engine() +13943: : _M_b() +13943: { _M_initialize(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: shuffle_order_engine(const _RandomNumberEngine& __rng) +13943: : _M_b(__rng) +13943: { _M_initialize(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: shuffle_order_engine(_RandomNumberEngine&& __rng) +13943: : _M_b(std::move(__rng)) +13943: { _M_initialize(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: shuffle_order_engine(result_type __s) +13943: : _M_b(__s) +13943: { _M_initialize(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: explicit +13943: shuffle_order_engine(_Sseq& __q) +13943: : _M_b(__q) +13943: { _M_initialize(); } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: seed() +13943: { +13943: _M_b.seed(); +13943: _M_initialize(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: seed(result_type __s) +13943: { +13943: _M_b.seed(__s); +13943: _M_initialize(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _If_seed_seq<_Sseq> +13943: seed(_Sseq& __q) +13943: { +13943: _M_b.seed(__q); +13943: _M_initialize(); +13943: } +13943: +13943: +13943: +13943: +13943: const _RandomNumberEngine& +13943: base() const noexcept +13943: { return _M_b; } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: min() +13943: { return _RandomNumberEngine::min(); } +13943: +13943: +13943: +13943: +13943: static constexpr result_type +13943: max() +13943: { return _RandomNumberEngine::max(); } +13943: +13943: +13943: +13943: +13943: void +13943: discard(unsigned long long __z) +13943: { +13943: for (; __z != 0ULL; --__z) +13943: (*this)(); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: operator()(); +13943: # 1615 "/usr/include/c++/14/bits/random.h" 3 +13943: friend bool +13943: operator==(const shuffle_order_engine& __lhs, +13943: const shuffle_order_engine& __rhs) +13943: { return (__lhs._M_b == __rhs._M_b +13943: && std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v) +13943: && __lhs._M_y == __rhs._M_y); } +13943: # 1633 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::shuffle_order_engine<_RandomNumberEngine1, +13943: __k1>& __x); +13943: # 1651 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); +13943: +13943: private: +13943: void _M_initialize() +13943: { +13943: for (size_t __i = 0; __i < __k; ++__i) +13943: _M_v[__i] = _M_b(); +13943: _M_y = _M_b(); +13943: } +13943: +13943: _RandomNumberEngine _M_b; +13943: result_type _M_v[__k]; +13943: result_type _M_y; +13943: }; +13943: # 1682 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline bool +13943: operator!=(const std::shuffle_order_engine<_RandomNumberEngine, +13943: __k>& __lhs, +13943: const std::shuffle_order_engine<_RandomNumberEngine, +13943: __k>& __rhs) +13943: { return !(__lhs == __rhs); } +13943: +13943: +13943: +13943: +13943: +13943: typedef linear_congruential_engine +13943: minstd_rand0; +13943: +13943: +13943: +13943: +13943: typedef linear_congruential_engine +13943: minstd_rand; +13943: # 1711 "/usr/include/c++/14/bits/random.h" 3 +13943: typedef mersenne_twister_engine< +13943: uint_fast32_t, +13943: 32, 624, 397, 31, +13943: 0x9908b0dfUL, 11, +13943: 0xffffffffUL, 7, +13943: 0x9d2c5680UL, 15, +13943: 0xefc60000UL, 18, 1812433253UL> mt19937; +13943: +13943: +13943: +13943: +13943: typedef mersenne_twister_engine< +13943: uint_fast64_t, +13943: 64, 312, 156, 31, +13943: 0xb5026f5aa96619e9ULL, 29, +13943: 0x5555555555555555ULL, 17, +13943: 0x71d67fffeda60000ULL, 37, +13943: 0xfff7eee000000000ULL, 43, +13943: 6364136223846793005ULL> mt19937_64; +13943: +13943: typedef subtract_with_carry_engine +13943: ranlux24_base; +13943: +13943: typedef subtract_with_carry_engine +13943: ranlux48_base; +13943: +13943: typedef discard_block_engine ranlux24; +13943: +13943: typedef discard_block_engine ranlux48; +13943: +13943: typedef shuffle_order_engine knuth_b; +13943: +13943: typedef minstd_rand0 default_random_engine; +13943: # 1752 "/usr/include/c++/14/bits/random.h" 3 +13943: class random_device +13943: { +13943: public: +13943: +13943: typedef unsigned int result_type; +13943: +13943: +13943: +13943: random_device() { _M_init("default"); } +13943: +13943: explicit +13943: random_device(const std::string& __token) { _M_init(__token); } +13943: +13943: ~random_device() +13943: { _M_fini(); } +13943: +13943: static constexpr result_type +13943: min() +13943: { return std::numeric_limits::min(); } +13943: +13943: static constexpr result_type +13943: max() +13943: { return std::numeric_limits::max(); } +13943: +13943: double +13943: entropy() const noexcept +13943: { return this->_M_getentropy(); } +13943: +13943: result_type +13943: operator()() +13943: { return this->_M_getval(); } +13943: +13943: +13943: random_device(const random_device&) = delete; +13943: void operator=(const random_device&) = delete; +13943: +13943: private: +13943: +13943: void _M_init(const std::string& __token); +13943: void _M_init_pretr1(const std::string& __token); +13943: void _M_fini(); +13943: +13943: result_type _M_getval(); +13943: result_type _M_getval_pretr1(); +13943: double _M_getentropy() const noexcept; +13943: +13943: void _M_init(const char*, size_t); +13943: +13943: __extension__ union +13943: { +13943: struct +13943: { +13943: void* _M_file; +13943: result_type (*_M_func)(void*); +13943: int _M_fd; +13943: }; +13943: mt19937 _M_mt; +13943: }; +13943: }; +13943: # 1833 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline bool +13943: operator!=(const std::uniform_int_distribution<_IntType>& __d1, +13943: const std::uniform_int_distribution<_IntType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 1850 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>&, +13943: const std::uniform_int_distribution<_IntType>&); +13943: # 1864 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>&, +13943: std::uniform_int_distribution<_IntType>&); +13943: # 1880 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class uniform_real_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef uniform_real_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(0) { } +13943: +13943: explicit +13943: param_type(_RealType __a, _RealType __b = _RealType(1)) +13943: : _M_a(__a), _M_b(__b) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: result_type +13943: a() const +13943: { return _M_a; } +13943: +13943: result_type +13943: b() const +13943: { return _M_b; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_a; +13943: _RealType _M_b; +13943: }; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: uniform_real_distribution() : uniform_real_distribution(0.0) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: uniform_real_distribution(_RealType __a, _RealType __b = _RealType(1)) +13943: : _M_param(__a, __b) +13943: { } +13943: +13943: explicit +13943: uniform_real_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: reset() { } +13943: +13943: result_type +13943: a() const +13943: { return _M_param.a(); } +13943: +13943: result_type +13943: b() const +13943: { return _M_param.b(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return this->a(); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return this->b(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: return (__aurng() * (__p.b() - __p.a())) + __p.a(); +13943: } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const uniform_real_distribution& __d1, +13943: const uniform_real_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::uniform_real_distribution<_IntType>& __d1, +13943: const std::uniform_real_distribution<_IntType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 2078 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>&, +13943: const std::uniform_real_distribution<_RealType>&); +13943: # 2092 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>&, +13943: std::uniform_real_distribution<_RealType>&); +13943: # 2117 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class normal_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef normal_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(0.0) { } +13943: +13943: explicit +13943: param_type(_RealType __mean, _RealType __stddev = _RealType(1)) +13943: : _M_mean(__mean), _M_stddev(__stddev) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_stddev > _RealType(0))) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: _RealType +13943: mean() const +13943: { return _M_mean; } +13943: +13943: _RealType +13943: stddev() const +13943: { return _M_stddev; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return (__p1._M_mean == __p2._M_mean +13943: && __p1._M_stddev == __p2._M_stddev); } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_mean; +13943: _RealType _M_stddev; +13943: }; +13943: +13943: public: +13943: normal_distribution() : normal_distribution(0.0) { } +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: normal_distribution(result_type __mean, +13943: result_type __stddev = result_type(1)) +13943: : _M_param(__mean, __stddev) +13943: { } +13943: +13943: explicit +13943: normal_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { _M_saved_available = false; } +13943: +13943: +13943: +13943: +13943: _RealType +13943: mean() const +13943: { return _M_param.mean(); } +13943: +13943: +13943: +13943: +13943: _RealType +13943: stddev() const +13943: { return _M_param.stddev(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return std::numeric_limits::lowest(); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator==(const std::normal_distribution<_RealType1>& __d1, +13943: const std::normal_distribution<_RealType1>& __d2); +13943: # 2288 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::normal_distribution<_RealType1>& __x); +13943: # 2303 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::normal_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: result_type _M_saved = 0; +13943: bool _M_saved_available = false; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::normal_distribution<_RealType>& __d1, +13943: const std::normal_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 2344 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class lognormal_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef lognormal_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(0.0) { } +13943: +13943: explicit +13943: param_type(_RealType __m, _RealType __s = _RealType(1)) +13943: : _M_m(__m), _M_s(__s) +13943: { } +13943: +13943: _RealType +13943: m() const +13943: { return _M_m; } +13943: +13943: _RealType +13943: s() const +13943: { return _M_s; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_m; +13943: _RealType _M_s; +13943: }; +13943: +13943: lognormal_distribution() : lognormal_distribution(0.0) { } +13943: +13943: explicit +13943: lognormal_distribution(_RealType __m, _RealType __s = _RealType(1)) +13943: : _M_param(__m, __s), _M_nd() +13943: { } +13943: +13943: explicit +13943: lognormal_distribution(const param_type& __p) +13943: : _M_param(__p), _M_nd() +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { _M_nd.reset(); } +13943: +13943: +13943: +13943: +13943: _RealType +13943: m() const +13943: { return _M_param.m(); } +13943: +13943: _RealType +13943: s() const +13943: { return _M_param.s(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const lognormal_distribution& __d1, +13943: const lognormal_distribution& __d2) +13943: { return (__d1._M_param == __d2._M_param +13943: && __d1._M_nd == __d2._M_nd); } +13943: # 2505 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::lognormal_distribution<_RealType1>& __x); +13943: # 2520 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::lognormal_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: std::normal_distribution _M_nd; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::lognormal_distribution<_RealType>& __d1, +13943: const std::lognormal_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 2569 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class gamma_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef gamma_distribution<_RealType> distribution_type; +13943: friend class gamma_distribution<_RealType>; +13943: +13943: param_type() : param_type(1.0) { } +13943: +13943: explicit +13943: param_type(_RealType __alpha_val, _RealType __beta_val = _RealType(1)) +13943: : _M_alpha(__alpha_val), _M_beta(__beta_val) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_alpha > _RealType(0))) std::__glibcxx_assert_fail(); } while (false); +13943: _M_initialize(); +13943: } +13943: +13943: _RealType +13943: alpha() const +13943: { return _M_alpha; } +13943: +13943: _RealType +13943: beta() const +13943: { return _M_beta; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return (__p1._M_alpha == __p2._M_alpha +13943: && __p1._M_beta == __p2._M_beta); } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: void +13943: _M_initialize(); +13943: +13943: _RealType _M_alpha; +13943: _RealType _M_beta; +13943: +13943: _RealType _M_malpha, _M_a2; +13943: }; +13943: +13943: public: +13943: +13943: +13943: +13943: gamma_distribution() : gamma_distribution(1.0) { } +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: gamma_distribution(_RealType __alpha_val, +13943: _RealType __beta_val = _RealType(1)) +13943: : _M_param(__alpha_val, __beta_val), _M_nd() +13943: { } +13943: +13943: explicit +13943: gamma_distribution(const param_type& __p) +13943: : _M_param(__p), _M_nd() +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { _M_nd.reset(); } +13943: +13943: +13943: +13943: +13943: _RealType +13943: alpha() const +13943: { return _M_param.alpha(); } +13943: +13943: +13943: +13943: +13943: _RealType +13943: beta() const +13943: { return _M_param.beta(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const gamma_distribution& __d1, +13943: const gamma_distribution& __d2) +13943: { return (__d1._M_param == __d2._M_param +13943: && __d1._M_nd == __d2._M_nd); } +13943: # 2751 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::gamma_distribution<_RealType1>& __x); +13943: # 2765 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::gamma_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: std::normal_distribution _M_nd; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::gamma_distribution<_RealType>& __d1, +13943: const std::gamma_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 2811 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class chi_squared_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef chi_squared_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(1) { } +13943: +13943: explicit +13943: param_type(_RealType __n) +13943: : _M_n(__n) +13943: { } +13943: +13943: _RealType +13943: n() const +13943: { return _M_n; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_n == __p2._M_n; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_n; +13943: }; +13943: +13943: chi_squared_distribution() : chi_squared_distribution(1) { } +13943: +13943: explicit +13943: chi_squared_distribution(_RealType __n) +13943: : _M_param(__n), _M_gd(__n / 2) +13943: { } +13943: +13943: explicit +13943: chi_squared_distribution(const param_type& __p) +13943: : _M_param(__p), _M_gd(__p.n() / 2) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { _M_gd.reset(); } +13943: +13943: +13943: +13943: +13943: _RealType +13943: n() const +13943: { return _M_param.n(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { +13943: _M_param = __param; +13943: typedef typename std::gamma_distribution::param_type +13943: param_type; +13943: _M_gd.param(param_type{__param.n() / 2}); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return 2 * _M_gd(__urng); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: typedef typename std::gamma_distribution::param_type +13943: param_type; +13943: return 2 * _M_gd(__urng, param_type(__p.n() / 2)); +13943: } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { typename std::gamma_distribution::param_type +13943: __p2(__p.n() / 2); +13943: this->__generate_impl(__f, __t, __urng, __p2); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { typename std::gamma_distribution::param_type +13943: __p2(__p.n() / 2); +13943: this->__generate_impl(__f, __t, __urng, __p2); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const chi_squared_distribution& __d1, +13943: const chi_squared_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } +13943: # 2981 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::chi_squared_distribution<_RealType1>& __x); +13943: # 2996 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::chi_squared_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng); +13943: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const typename +13943: std::gamma_distribution::param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: std::gamma_distribution _M_gd; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::chi_squared_distribution<_RealType>& __d1, +13943: const std::chi_squared_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 3041 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class cauchy_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef cauchy_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(0) { } +13943: +13943: explicit +13943: param_type(_RealType __a, _RealType __b = _RealType(1)) +13943: : _M_a(__a), _M_b(__b) +13943: { } +13943: +13943: _RealType +13943: a() const +13943: { return _M_a; } +13943: +13943: _RealType +13943: b() const +13943: { return _M_b; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_a; +13943: _RealType _M_b; +13943: }; +13943: +13943: cauchy_distribution() : cauchy_distribution(0.0) { } +13943: +13943: explicit +13943: cauchy_distribution(_RealType __a, _RealType __b = 1.0) +13943: : _M_param(__a, __b) +13943: { } +13943: +13943: explicit +13943: cauchy_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { } +13943: +13943: +13943: +13943: +13943: _RealType +13943: a() const +13943: { return _M_param.a(); } +13943: +13943: _RealType +13943: b() const +13943: { return _M_param.b(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return std::numeric_limits::lowest(); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const cauchy_distribution& __d1, +13943: const cauchy_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::cauchy_distribution<_RealType>& __d1, +13943: const std::cauchy_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 3222 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::cauchy_distribution<_RealType>& __x); +13943: # 3237 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::cauchy_distribution<_RealType>& __x); +13943: # 3256 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class fisher_f_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef fisher_f_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(1) { } +13943: +13943: explicit +13943: param_type(_RealType __m, _RealType __n = _RealType(1)) +13943: : _M_m(__m), _M_n(__n) +13943: { } +13943: +13943: _RealType +13943: m() const +13943: { return _M_m; } +13943: +13943: _RealType +13943: n() const +13943: { return _M_n; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_m; +13943: _RealType _M_n; +13943: }; +13943: +13943: fisher_f_distribution() : fisher_f_distribution(1.0) { } +13943: +13943: explicit +13943: fisher_f_distribution(_RealType __m, +13943: _RealType __n = _RealType(1)) +13943: : _M_param(__m, __n), _M_gd_x(__m / 2), _M_gd_y(__n / 2) +13943: { } +13943: +13943: explicit +13943: fisher_f_distribution(const param_type& __p) +13943: : _M_param(__p), _M_gd_x(__p.m() / 2), _M_gd_y(__p.n() / 2) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { +13943: _M_gd_x.reset(); +13943: _M_gd_y.reset(); +13943: } +13943: +13943: +13943: +13943: +13943: _RealType +13943: m() const +13943: { return _M_param.m(); } +13943: +13943: _RealType +13943: n() const +13943: { return _M_param.n(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: typedef typename std::gamma_distribution::param_type +13943: param_type; +13943: return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n()) +13943: / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m())); +13943: } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const fisher_f_distribution& __d1, +13943: const fisher_f_distribution& __d2) +13943: { return (__d1._M_param == __d2._M_param +13943: && __d1._M_gd_x == __d2._M_gd_x +13943: && __d1._M_gd_y == __d2._M_gd_y); } +13943: # 3433 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::fisher_f_distribution<_RealType1>& __x); +13943: # 3448 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::fisher_f_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng); +13943: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: std::gamma_distribution _M_gd_x, _M_gd_y; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::fisher_f_distribution<_RealType>& __d1, +13943: const std::fisher_f_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 3495 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class student_t_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef student_t_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(1) { } +13943: +13943: explicit +13943: param_type(_RealType __n) +13943: : _M_n(__n) +13943: { } +13943: +13943: _RealType +13943: n() const +13943: { return _M_n; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_n == __p2._M_n; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_n; +13943: }; +13943: +13943: student_t_distribution() : student_t_distribution(1.0) { } +13943: +13943: explicit +13943: student_t_distribution(_RealType __n) +13943: : _M_param(__n), _M_nd(), _M_gd(__n / 2, 2) +13943: { } +13943: +13943: explicit +13943: student_t_distribution(const param_type& __p) +13943: : _M_param(__p), _M_nd(), _M_gd(__p.n() / 2, 2) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { +13943: _M_nd.reset(); +13943: _M_gd.reset(); +13943: } +13943: +13943: +13943: +13943: +13943: _RealType +13943: n() const +13943: { return _M_param.n(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return std::numeric_limits::lowest(); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: typedef typename std::gamma_distribution::param_type +13943: param_type; +13943: +13943: const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2)); +13943: return _M_nd(__urng) * std::sqrt(__p.n() / __g); +13943: } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const student_t_distribution& __d1, +13943: const student_t_distribution& __d2) +13943: { return (__d1._M_param == __d2._M_param +13943: && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); } +13943: # 3662 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::student_t_distribution<_RealType1>& __x); +13943: # 3677 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::student_t_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng); +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: std::normal_distribution _M_nd; +13943: std::gamma_distribution _M_gd; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::student_t_distribution<_RealType>& __d1, +13943: const std::student_t_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 3729 "/usr/include/c++/14/bits/random.h" 3 +13943: class bernoulli_distribution +13943: { +13943: public: +13943: +13943: typedef bool result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef bernoulli_distribution distribution_type; +13943: +13943: param_type() : param_type(0.5) { } +13943: +13943: explicit +13943: param_type(double __p) +13943: : _M_p(__p) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool((_M_p >= 0.0) && (_M_p <= 1.0))) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: double +13943: p() const +13943: { return _M_p; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_p == __p2._M_p; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: double _M_p; +13943: }; +13943: +13943: public: +13943: +13943: +13943: +13943: bernoulli_distribution() : bernoulli_distribution(0.5) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: bernoulli_distribution(double __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: explicit +13943: bernoulli_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: reset() { } +13943: +13943: +13943: +13943: +13943: double +13943: p() const +13943: { return _M_param.p(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return std::numeric_limits::min(); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: if ((__aurng() - __aurng.min()) +13943: < __p.p() * (__aurng.max() - __aurng.min())) +13943: return true; +13943: return false; +13943: } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const bernoulli_distribution& __d1, +13943: const bernoulli_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline bool +13943: operator!=(const std::bernoulli_distribution& __d1, +13943: const std::bernoulli_distribution& __d2) +13943: { return !(__d1 == __d2); } +13943: # 3916 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::bernoulli_distribution& __x); +13943: # 3930 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: inline std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::bernoulli_distribution& __x) +13943: { +13943: double __p; +13943: if (__is >> __p) +13943: __x.param(bernoulli_distribution::param_type(__p)); +13943: return __is; +13943: } +13943: # 3952 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class binomial_distribution +13943: { +13943: static_assert(std::is_integral<_IntType>::value, +13943: "result_type must be an integral type"); +13943: +13943: public: +13943: +13943: typedef _IntType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef binomial_distribution<_IntType> distribution_type; +13943: friend class binomial_distribution<_IntType>; +13943: +13943: param_type() : param_type(1) { } +13943: +13943: explicit +13943: param_type(_IntType __t, double __p = 0.5) +13943: : _M_t(__t), _M_p(__p) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool((_M_t >= _IntType(0)) && (_M_p >= 0.0) && (_M_p <= 1.0))) std::__glibcxx_assert_fail(); } while (false) +13943: +13943: ; +13943: _M_initialize(); +13943: } +13943: +13943: _IntType +13943: t() const +13943: { return _M_t; } +13943: +13943: double +13943: p() const +13943: { return _M_p; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: void +13943: _M_initialize(); +13943: +13943: _IntType _M_t; +13943: double _M_p; +13943: +13943: double _M_q; +13943: +13943: double _M_d1, _M_d2, _M_s1, _M_s2, _M_c, +13943: _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; +13943: +13943: bool _M_easy; +13943: }; +13943: +13943: +13943: +13943: binomial_distribution() : binomial_distribution(1) { } +13943: +13943: explicit +13943: binomial_distribution(_IntType __t, double __p = 0.5) +13943: : _M_param(__t, __p), _M_nd() +13943: { } +13943: +13943: explicit +13943: binomial_distribution(const param_type& __p) +13943: : _M_param(__p), _M_nd() +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { _M_nd.reset(); } +13943: +13943: +13943: +13943: +13943: _IntType +13943: t() const +13943: { return _M_param.t(); } +13943: +13943: +13943: +13943: +13943: double +13943: p() const +13943: { return _M_param.p(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return 0; } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return _M_param.t(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const binomial_distribution& __d1, +13943: const binomial_distribution& __d2) +13943: +13943: { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +13943: # 4136 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::binomial_distribution<_IntType1>& __x); +13943: # 4152 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::binomial_distribution<_IntType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: result_type +13943: _M_waiting(_UniformRandomNumberGenerator& __urng, +13943: _IntType __t, double __q); +13943: +13943: param_type _M_param; +13943: +13943: +13943: std::normal_distribution _M_nd; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::binomial_distribution<_IntType>& __d1, +13943: const std::binomial_distribution<_IntType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 4198 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class geometric_distribution +13943: { +13943: static_assert(std::is_integral<_IntType>::value, +13943: "result_type must be an integral type"); +13943: +13943: public: +13943: +13943: typedef _IntType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef geometric_distribution<_IntType> distribution_type; +13943: friend class geometric_distribution<_IntType>; +13943: +13943: param_type() : param_type(0.5) { } +13943: +13943: explicit +13943: param_type(double __p) +13943: : _M_p(__p) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool((_M_p > 0.0) && (_M_p < 1.0))) std::__glibcxx_assert_fail(); } while (false); +13943: _M_initialize(); +13943: } +13943: +13943: double +13943: p() const +13943: { return _M_p; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_p == __p2._M_p; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: void +13943: _M_initialize() +13943: { _M_log_1_p = std::log(1.0 - _M_p); } +13943: +13943: double _M_p; +13943: +13943: double _M_log_1_p; +13943: }; +13943: +13943: +13943: +13943: geometric_distribution() : geometric_distribution(0.5) { } +13943: +13943: explicit +13943: geometric_distribution(double __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: explicit +13943: geometric_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: reset() { } +13943: +13943: +13943: +13943: +13943: double +13943: p() const +13943: { return _M_param.p(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return 0; } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const geometric_distribution& __d1, +13943: const geometric_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::geometric_distribution<_IntType>& __d1, +13943: const std::geometric_distribution<_IntType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 4383 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::geometric_distribution<_IntType>& __x); +13943: # 4398 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::geometric_distribution<_IntType>& __x); +13943: # 4415 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class negative_binomial_distribution +13943: { +13943: static_assert(std::is_integral<_IntType>::value, +13943: "result_type must be an integral type"); +13943: +13943: public: +13943: +13943: typedef _IntType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef negative_binomial_distribution<_IntType> distribution_type; +13943: +13943: param_type() : param_type(1) { } +13943: +13943: explicit +13943: param_type(_IntType __k, double __p = 0.5) +13943: : _M_k(__k), _M_p(__p) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0))) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: _IntType +13943: k() const +13943: { return _M_k; } +13943: +13943: double +13943: p() const +13943: { return _M_p; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _IntType _M_k; +13943: double _M_p; +13943: }; +13943: +13943: negative_binomial_distribution() : negative_binomial_distribution(1) { } +13943: +13943: explicit +13943: negative_binomial_distribution(_IntType __k, double __p = 0.5) +13943: : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p) +13943: { } +13943: +13943: explicit +13943: negative_binomial_distribution(const param_type& __p) +13943: : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p()) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { _M_gd.reset(); } +13943: +13943: +13943: +13943: +13943: _IntType +13943: k() const +13943: { return _M_param.k(); } +13943: +13943: +13943: +13943: +13943: double +13943: p() const +13943: { return _M_param.p(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng); +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate_impl(__f, __t, __urng); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const negative_binomial_distribution& __d1, +13943: const negative_binomial_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } +13943: # 4585 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::negative_binomial_distribution<_IntType1>& __x); +13943: # 4600 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::negative_binomial_distribution<_IntType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng); +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: std::gamma_distribution _M_gd; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::negative_binomial_distribution<_IntType>& __d1, +13943: const std::negative_binomial_distribution<_IntType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 4652 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class poisson_distribution +13943: { +13943: static_assert(std::is_integral<_IntType>::value, +13943: "result_type must be an integral type"); +13943: +13943: public: +13943: +13943: typedef _IntType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef poisson_distribution<_IntType> distribution_type; +13943: friend class poisson_distribution<_IntType>; +13943: +13943: param_type() : param_type(1.0) { } +13943: +13943: explicit +13943: param_type(double __mean) +13943: : _M_mean(__mean) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_mean > 0.0)) std::__glibcxx_assert_fail(); } while (false); +13943: _M_initialize(); +13943: } +13943: +13943: double +13943: mean() const +13943: { return _M_mean; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_mean == __p2._M_mean; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: +13943: void +13943: _M_initialize(); +13943: +13943: double _M_mean; +13943: +13943: double _M_lm_thr; +13943: +13943: double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; +13943: +13943: }; +13943: +13943: +13943: +13943: poisson_distribution() : poisson_distribution(1.0) { } +13943: +13943: explicit +13943: poisson_distribution(double __mean) +13943: : _M_param(__mean), _M_nd() +13943: { } +13943: +13943: explicit +13943: poisson_distribution(const param_type& __p) +13943: : _M_param(__p), _M_nd() +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { _M_nd.reset(); } +13943: +13943: +13943: +13943: +13943: double +13943: mean() const +13943: { return _M_param.mean(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return 0; } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const poisson_distribution& __d1, +13943: const poisson_distribution& __d2) +13943: +13943: { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +13943: # 4821 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::poisson_distribution<_IntType1>& __x); +13943: # 4836 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::poisson_distribution<_IntType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: +13943: +13943: std::normal_distribution _M_nd; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::poisson_distribution<_IntType>& __d1, +13943: const std::poisson_distribution<_IntType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 4884 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class exponential_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef exponential_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(1.0) { } +13943: +13943: explicit +13943: param_type(_RealType __lambda) +13943: : _M_lambda(__lambda) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(_M_lambda > _RealType(0))) std::__glibcxx_assert_fail(); } while (false); +13943: } +13943: +13943: _RealType +13943: lambda() const +13943: { return _M_lambda; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_lambda == __p2._M_lambda; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_lambda; +13943: }; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: exponential_distribution() : exponential_distribution(1.0) { } +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: exponential_distribution(_RealType __lambda) +13943: : _M_param(__lambda) +13943: { } +13943: +13943: explicit +13943: exponential_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: reset() { } +13943: +13943: +13943: +13943: +13943: _RealType +13943: lambda() const +13943: { return _M_param.lambda(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: return -std::log(result_type(1) - __aurng()) / __p.lambda(); +13943: } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const exponential_distribution& __d1, +13943: const exponential_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::exponential_distribution<_RealType>& __d1, +13943: const std::exponential_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 5073 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::exponential_distribution<_RealType>& __x); +13943: # 5088 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::exponential_distribution<_RealType>& __x); +13943: # 5106 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class weibull_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef weibull_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(1.0) { } +13943: +13943: explicit +13943: param_type(_RealType __a, _RealType __b = _RealType(1.0)) +13943: : _M_a(__a), _M_b(__b) +13943: { } +13943: +13943: _RealType +13943: a() const +13943: { return _M_a; } +13943: +13943: _RealType +13943: b() const +13943: { return _M_b; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_a; +13943: _RealType _M_b; +13943: }; +13943: +13943: weibull_distribution() : weibull_distribution(1.0) { } +13943: +13943: explicit +13943: weibull_distribution(_RealType __a, _RealType __b = _RealType(1)) +13943: : _M_param(__a, __b) +13943: { } +13943: +13943: explicit +13943: weibull_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { } +13943: +13943: +13943: +13943: +13943: _RealType +13943: a() const +13943: { return _M_param.a(); } +13943: +13943: +13943: +13943: +13943: _RealType +13943: b() const +13943: { return _M_param.b(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const weibull_distribution& __d1, +13943: const weibull_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::weibull_distribution<_RealType>& __d1, +13943: const std::weibull_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 5290 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::weibull_distribution<_RealType>& __x); +13943: # 5305 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::weibull_distribution<_RealType>& __x); +13943: # 5323 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class extreme_value_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef extreme_value_distribution<_RealType> distribution_type; +13943: +13943: param_type() : param_type(0.0) { } +13943: +13943: explicit +13943: param_type(_RealType __a, _RealType __b = _RealType(1.0)) +13943: : _M_a(__a), _M_b(__b) +13943: { } +13943: +13943: _RealType +13943: a() const +13943: { return _M_a; } +13943: +13943: _RealType +13943: b() const +13943: { return _M_b; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: _RealType _M_a; +13943: _RealType _M_b; +13943: }; +13943: +13943: extreme_value_distribution() : extreme_value_distribution(0.0) { } +13943: +13943: explicit +13943: extreme_value_distribution(_RealType __a, _RealType __b = _RealType(1)) +13943: : _M_param(__a, __b) +13943: { } +13943: +13943: explicit +13943: extreme_value_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { } +13943: +13943: +13943: +13943: +13943: _RealType +13943: a() const +13943: { return _M_param.a(); } +13943: +13943: +13943: +13943: +13943: _RealType +13943: b() const +13943: { return _M_param.b(); } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return std::numeric_limits::lowest(); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { return std::numeric_limits::max(); } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const extreme_value_distribution& __d1, +13943: const extreme_value_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::extreme_value_distribution<_RealType>& __d1, +13943: const std::extreme_value_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 5507 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::extreme_value_distribution<_RealType>& __x); +13943: # 5522 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::extreme_value_distribution<_RealType>& __x); +13943: # 5545 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class discrete_distribution +13943: { +13943: static_assert(std::is_integral<_IntType>::value, +13943: "result_type must be an integral type"); +13943: +13943: public: +13943: +13943: typedef _IntType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef discrete_distribution<_IntType> distribution_type; +13943: friend class discrete_distribution<_IntType>; +13943: +13943: param_type() +13943: : _M_prob(), _M_cp() +13943: { } +13943: +13943: template +13943: param_type(_InputIterator __wbegin, +13943: _InputIterator __wend) +13943: : _M_prob(__wbegin, __wend), _M_cp() +13943: { _M_initialize(); } +13943: +13943: param_type(initializer_list __wil) +13943: : _M_prob(__wil.begin(), __wil.end()), _M_cp() +13943: { _M_initialize(); } +13943: +13943: template +13943: param_type(size_t __nw, double __xmin, double __xmax, +13943: _Func __fw); +13943: +13943: +13943: param_type(const param_type&) = default; +13943: param_type& operator=(const param_type&) = default; +13943: +13943: std::vector +13943: probabilities() const +13943: { return _M_prob.empty() ? std::vector(1, 1.0) : _M_prob; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_prob == __p2._M_prob; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: void +13943: _M_initialize(); +13943: +13943: std::vector _M_prob; +13943: std::vector _M_cp; +13943: }; +13943: +13943: discrete_distribution() +13943: : _M_param() +13943: { } +13943: +13943: template +13943: discrete_distribution(_InputIterator __wbegin, +13943: _InputIterator __wend) +13943: : _M_param(__wbegin, __wend) +13943: { } +13943: +13943: discrete_distribution(initializer_list __wl) +13943: : _M_param(__wl) +13943: { } +13943: +13943: template +13943: discrete_distribution(size_t __nw, double __xmin, double __xmax, +13943: _Func __fw) +13943: : _M_param(__nw, __xmin, __xmax, __fw) +13943: { } +13943: +13943: explicit +13943: discrete_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { } +13943: +13943: +13943: +13943: +13943: std::vector +13943: probabilities() const +13943: { +13943: return _M_param._M_prob.empty() +13943: ? std::vector(1, 1.0) : _M_param._M_prob; +13943: } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { return result_type(0); } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { +13943: return _M_param._M_prob.empty() +13943: ? result_type(0) : result_type(_M_param._M_prob.size() - 1); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const discrete_distribution& __d1, +13943: const discrete_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: # 5733 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::discrete_distribution<_IntType1>& __x); +13943: # 5749 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::discrete_distribution<_IntType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::discrete_distribution<_IntType>& __d1, +13943: const std::discrete_distribution<_IntType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 5793 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class piecewise_constant_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef piecewise_constant_distribution<_RealType> distribution_type; +13943: friend class piecewise_constant_distribution<_RealType>; +13943: +13943: param_type() +13943: : _M_int(), _M_den(), _M_cp() +13943: { } +13943: +13943: template +13943: param_type(_InputIteratorB __bfirst, +13943: _InputIteratorB __bend, +13943: _InputIteratorW __wbegin); +13943: +13943: template +13943: param_type(initializer_list<_RealType> __bi, _Func __fw); +13943: +13943: template +13943: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, +13943: _Func __fw); +13943: +13943: +13943: param_type(const param_type&) = default; +13943: param_type& operator=(const param_type&) = default; +13943: +13943: std::vector<_RealType> +13943: intervals() const +13943: { +13943: if (_M_int.empty()) +13943: { +13943: std::vector<_RealType> __tmp(2); +13943: __tmp[1] = _RealType(1); +13943: return __tmp; +13943: } +13943: else +13943: return _M_int; +13943: } +13943: +13943: std::vector +13943: densities() const +13943: { return _M_den.empty() ? std::vector(1, 1.0) : _M_den; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: void +13943: _M_initialize(); +13943: +13943: std::vector<_RealType> _M_int; +13943: std::vector _M_den; +13943: std::vector _M_cp; +13943: }; +13943: +13943: piecewise_constant_distribution() +13943: : _M_param() +13943: { } +13943: +13943: template +13943: piecewise_constant_distribution(_InputIteratorB __bfirst, +13943: _InputIteratorB __bend, +13943: _InputIteratorW __wbegin) +13943: : _M_param(__bfirst, __bend, __wbegin) +13943: { } +13943: +13943: template +13943: piecewise_constant_distribution(initializer_list<_RealType> __bl, +13943: _Func __fw) +13943: : _M_param(__bl, __fw) +13943: { } +13943: +13943: template +13943: piecewise_constant_distribution(size_t __nw, +13943: _RealType __xmin, _RealType __xmax, +13943: _Func __fw) +13943: : _M_param(__nw, __xmin, __xmax, __fw) +13943: { } +13943: +13943: explicit +13943: piecewise_constant_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { } +13943: +13943: +13943: +13943: +13943: std::vector<_RealType> +13943: intervals() const +13943: { +13943: if (_M_param._M_int.empty()) +13943: { +13943: std::vector<_RealType> __tmp(2); +13943: __tmp[1] = _RealType(1); +13943: return __tmp; +13943: } +13943: else +13943: return _M_param._M_int; +13943: } +13943: +13943: +13943: +13943: +13943: std::vector +13943: densities() const +13943: { +13943: return _M_param._M_den.empty() +13943: ? std::vector(1, 1.0) : _M_param._M_den; +13943: } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { +13943: return _M_param._M_int.empty() +13943: ? result_type(0) : _M_param._M_int.front(); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { +13943: return _M_param._M_int.empty() +13943: ? result_type(1) : _M_param._M_int.back(); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const piecewise_constant_distribution& __d1, +13943: const piecewise_constant_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: # 6017 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::piecewise_constant_distribution<_RealType1>& __x); +13943: # 6033 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::piecewise_constant_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, +13943: const std::piecewise_constant_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 6073 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: class piecewise_linear_distribution +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "result_type must be a floating point type"); +13943: +13943: public: +13943: +13943: typedef _RealType result_type; +13943: +13943: +13943: struct param_type +13943: { +13943: typedef piecewise_linear_distribution<_RealType> distribution_type; +13943: friend class piecewise_linear_distribution<_RealType>; +13943: +13943: param_type() +13943: : _M_int(), _M_den(), _M_cp(), _M_m() +13943: { } +13943: +13943: template +13943: param_type(_InputIteratorB __bfirst, +13943: _InputIteratorB __bend, +13943: _InputIteratorW __wbegin); +13943: +13943: template +13943: param_type(initializer_list<_RealType> __bl, _Func __fw); +13943: +13943: template +13943: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, +13943: _Func __fw); +13943: +13943: +13943: param_type(const param_type&) = default; +13943: param_type& operator=(const param_type&) = default; +13943: +13943: std::vector<_RealType> +13943: intervals() const +13943: { +13943: if (_M_int.empty()) +13943: { +13943: std::vector<_RealType> __tmp(2); +13943: __tmp[1] = _RealType(1); +13943: return __tmp; +13943: } +13943: else +13943: return _M_int; +13943: } +13943: +13943: std::vector +13943: densities() const +13943: { return _M_den.empty() ? std::vector(2, 1.0) : _M_den; } +13943: +13943: friend bool +13943: operator==(const param_type& __p1, const param_type& __p2) +13943: { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } +13943: +13943: +13943: friend bool +13943: operator!=(const param_type& __p1, const param_type& __p2) +13943: { return !(__p1 == __p2); } +13943: +13943: +13943: private: +13943: void +13943: _M_initialize(); +13943: +13943: std::vector<_RealType> _M_int; +13943: std::vector _M_den; +13943: std::vector _M_cp; +13943: std::vector _M_m; +13943: }; +13943: +13943: piecewise_linear_distribution() +13943: : _M_param() +13943: { } +13943: +13943: template +13943: piecewise_linear_distribution(_InputIteratorB __bfirst, +13943: _InputIteratorB __bend, +13943: _InputIteratorW __wbegin) +13943: : _M_param(__bfirst, __bend, __wbegin) +13943: { } +13943: +13943: template +13943: piecewise_linear_distribution(initializer_list<_RealType> __bl, +13943: _Func __fw) +13943: : _M_param(__bl, __fw) +13943: { } +13943: +13943: template +13943: piecewise_linear_distribution(size_t __nw, +13943: _RealType __xmin, _RealType __xmax, +13943: _Func __fw) +13943: : _M_param(__nw, __xmin, __xmax, __fw) +13943: { } +13943: +13943: explicit +13943: piecewise_linear_distribution(const param_type& __p) +13943: : _M_param(__p) +13943: { } +13943: +13943: +13943: +13943: +13943: void +13943: reset() +13943: { } +13943: +13943: +13943: +13943: +13943: std::vector<_RealType> +13943: intervals() const +13943: { +13943: if (_M_param._M_int.empty()) +13943: { +13943: std::vector<_RealType> __tmp(2); +13943: __tmp[1] = _RealType(1); +13943: return __tmp; +13943: } +13943: else +13943: return _M_param._M_int; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: std::vector +13943: densities() const +13943: { +13943: return _M_param._M_den.empty() +13943: ? std::vector(2, 1.0) : _M_param._M_den; +13943: } +13943: +13943: +13943: +13943: +13943: param_type +13943: param() const +13943: { return _M_param; } +13943: +13943: +13943: +13943: +13943: +13943: void +13943: param(const param_type& __param) +13943: { _M_param = __param; } +13943: +13943: +13943: +13943: +13943: result_type +13943: min() const +13943: { +13943: return _M_param._M_int.empty() +13943: ? result_type(0) : _M_param._M_int.front(); +13943: } +13943: +13943: +13943: +13943: +13943: result_type +13943: max() const +13943: { +13943: return _M_param._M_int.empty() +13943: ? result_type(1) : _M_param._M_int.back(); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { return this->operator()(__urng, _M_param); } +13943: +13943: template +13943: result_type +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { this->__generate(__f, __t, __urng, _M_param); } +13943: +13943: template +13943: void +13943: __generate(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: template +13943: void +13943: __generate(result_type* __f, result_type* __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { this->__generate_impl(__f, __t, __urng, __p); } +13943: +13943: +13943: +13943: +13943: +13943: friend bool +13943: operator==(const piecewise_linear_distribution& __d1, +13943: const piecewise_linear_distribution& __d2) +13943: { return __d1._M_param == __d2._M_param; } +13943: # 6299 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const std::piecewise_linear_distribution<_RealType1>& __x); +13943: # 6315 "/usr/include/c++/14/bits/random.h" 3 +13943: template +13943: friend std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: std::piecewise_linear_distribution<_RealType1>& __x); +13943: +13943: private: +13943: template +13943: void +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p); +13943: +13943: param_type _M_param; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, +13943: const std::piecewise_linear_distribution<_RealType>& __d2) +13943: { return !(__d1 == __d2); } +13943: # 6360 "/usr/include/c++/14/bits/random.h" 3 +13943: class seed_seq +13943: { +13943: public: +13943: +13943: typedef uint_least32_t result_type; +13943: +13943: +13943: seed_seq() noexcept +13943: : _M_v() +13943: { } +13943: +13943: template>> +13943: seed_seq(std::initializer_list<_IntType> __il); +13943: +13943: template +13943: seed_seq(_InputIterator __begin, _InputIterator __end); +13943: +13943: +13943: template +13943: void +13943: generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); +13943: +13943: +13943: size_t size() const noexcept +13943: { return _M_v.size(); } +13943: +13943: template +13943: void +13943: param(_OutputIterator __dest) const +13943: { std::copy(_M_v.begin(), _M_v.end(), __dest); } +13943: +13943: +13943: seed_seq(const seed_seq&) = delete; +13943: seed_seq& operator=(const seed_seq&) = delete; +13943: +13943: private: +13943: std::vector _M_v; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 49 "/usr/include/c++/14/random" 2 3 +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/opt_random.h" 1 3 +13943: # 33 "/usr/include/arm-linux-gnueabihf/c++/14/bits/opt_random.h" 3 +13943: +13943: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/opt_random.h" 3 +13943: # 50 "/usr/include/c++/14/random" 2 3 +13943: # 1 "/usr/include/c++/14/bits/random.tcc" 1 3 +13943: # 33 "/usr/include/c++/14/bits/random.tcc" 3 +13943: # 1 "/usr/include/c++/14/numeric" 1 3 +13943: # 58 "/usr/include/c++/14/numeric" 3 +13943: +13943: # 59 "/usr/include/c++/14/numeric" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_numeric.h" 1 3 +13943: # 64 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 85 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: void +13943: iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: { +13943: *__first = __value; +13943: ++__value; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: # 131 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: inline _Tp +13943: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) +13943: { +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: __init = __init + *__first; +13943: return __init; +13943: } +13943: # 158 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: inline _Tp +13943: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, +13943: _BinaryOperation __binary_op) +13943: { +13943: +13943: +13943: ; +13943: +13943: for (; __first != __last; ++__first) +13943: __init = __binary_op(__init, *__first); +13943: return __init; +13943: } +13943: # 187 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: inline _Tp +13943: inner_product(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _Tp __init) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first1 != __last1; ++__first1, (void)++__first2) +13943: __init = __init + (*__first1 * *__first2); +13943: return __init; +13943: } +13943: # 219 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: inline _Tp +13943: inner_product(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _Tp __init, +13943: _BinaryOperation1 __binary_op1, +13943: _BinaryOperation2 __binary_op2) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: for (; __first1 != __last1; ++__first1, (void)++__first2) +13943: __init = __binary_op1(__init, +13943: __binary_op2(*__first1, *__first2)); +13943: return __init; +13943: } +13943: # 253 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: partial_sum(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result) +13943: { +13943: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return __result; +13943: _ValueType __value = *__first; +13943: *__result = __value; +13943: while (++__first != __last) +13943: { +13943: __value = __value + *__first; +13943: *++__result = __value; +13943: } +13943: return ++__result; +13943: } +13943: # 294 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: partial_sum(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _BinaryOperation __binary_op) +13943: { +13943: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return __result; +13943: _ValueType __value = *__first; +13943: *__result = __value; +13943: while (++__first != __last) +13943: { +13943: __value = __binary_op(__value, *__first); +13943: *++__result = __value; +13943: } +13943: return ++__result; +13943: } +13943: # 334 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: adjacent_difference(_InputIterator __first, +13943: _InputIterator __last, _OutputIterator __result) +13943: { +13943: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return __result; +13943: _ValueType __value = *__first; +13943: *__result = __value; +13943: while (++__first != __last) +13943: { +13943: _ValueType __tmp = *__first; +13943: *++__result = __tmp - __value; +13943: __value = std::move(__tmp); +13943: } +13943: return ++__result; +13943: } +13943: # 376 "/usr/include/c++/14/bits/stl_numeric.h" 3 +13943: template +13943: +13943: _OutputIterator +13943: adjacent_difference(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _BinaryOperation __binary_op) +13943: { +13943: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +13943: +13943: +13943: +13943: +13943: +13943: ; +13943: +13943: if (__first == __last) +13943: return __result; +13943: _ValueType __value = *__first; +13943: *__result = __value; +13943: while (++__first != __last) +13943: { +13943: _ValueType __tmp = *__first; +13943: *++__result = __binary_op(__tmp, __value); +13943: __value = std::move(__tmp); +13943: } +13943: return ++__result; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 63 "/usr/include/c++/14/numeric" 2 3 +13943: # 90 "/usr/include/c++/14/numeric" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 91 "/usr/include/c++/14/numeric" 2 3 +13943: # 104 "/usr/include/c++/14/numeric" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: namespace __detail +13943: { +13943: +13943: +13943: template +13943: constexpr _Res +13943: __abs_r(_Tp __val) +13943: { +13943: static_assert(sizeof(_Res) >= sizeof(_Tp), +13943: "result type must be at least as wide as the input type"); +13943: +13943: if (__val >= 0) +13943: return __val; +13943: +13943: +13943: +13943: +13943: return -static_cast<_Res>(__val); +13943: } +13943: +13943: template void __abs_r(bool) = delete; +13943: +13943: +13943: template +13943: constexpr _Tp +13943: __gcd(_Tp __m, _Tp __n) +13943: { +13943: static_assert(is_unsigned<_Tp>::value, "type must be unsigned"); +13943: +13943: if (__m == 0) +13943: return __n; +13943: if (__n == 0) +13943: return __m; +13943: +13943: const int __i = std::__countr_zero(__m); +13943: __m >>= __i; +13943: const int __j = std::__countr_zero(__n); +13943: __n >>= __j; +13943: const int __k = __i < __j ? __i : __j; +13943: +13943: while (true) +13943: { +13943: if (__m > __n) +13943: { +13943: _Tp __tmp = __m; +13943: __m = __n; +13943: __n = __tmp; +13943: } +13943: +13943: __n -= __m; +13943: +13943: if (__n == 0) +13943: return __m << __k; +13943: +13943: __n >>= std::__countr_zero(__n); +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: constexpr common_type_t<_Mn, _Nn> +13943: gcd(_Mn __m, _Nn __n) noexcept +13943: { +13943: static_assert(is_integral_v<_Mn> && is_integral_v<_Nn>, +13943: "std::gcd arguments must be integers"); +13943: static_assert(_Mn(2) == 2 && _Nn(2) == 2, +13943: "std::gcd arguments must not be bool"); +13943: using _Ct = common_type_t<_Mn, _Nn>; +13943: const _Ct __m2 = __detail::__abs_r<_Ct>(__m); +13943: const _Ct __n2 = __detail::__abs_r<_Ct>(__n); +13943: return __detail::__gcd>(__m2, __n2); +13943: } +13943: +13943: +13943: template +13943: constexpr common_type_t<_Mn, _Nn> +13943: lcm(_Mn __m, _Nn __n) noexcept +13943: { +13943: static_assert(is_integral_v<_Mn> && is_integral_v<_Nn>, +13943: "std::lcm arguments must be integers"); +13943: static_assert(_Mn(2) == 2 && _Nn(2) == 2, +13943: "std::lcm arguments must not be bool"); +13943: using _Ct = common_type_t<_Mn, _Nn>; +13943: const _Ct __m2 = __detail::__abs_r<_Ct>(__m); +13943: const _Ct __n2 = __detail::__abs_r<_Ct>(__n); +13943: if (__m2 == 0 || __n2 == 0) +13943: return 0; +13943: _Ct __r = __m2 / __detail::__gcd>(__m2, __n2); +13943: +13943: if constexpr (is_signed_v<_Ct>) +13943: if (__is_constant_evaluated()) +13943: return __r * __n2; +13943: +13943: bool __overflow = __builtin_mul_overflow(__r, __n2, &__r); +13943: do { if (std::__is_constant_evaluated() && !bool(!__overflow)) std::__glibcxx_assert_fail(); } while (false); +13943: return __r; +13943: } +13943: # 284 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _Tp +13943: reduce(_InputIterator __first, _InputIterator __last, _Tp __init, +13943: _BinaryOperation __binary_op) +13943: { +13943: using __ref = typename iterator_traits<_InputIterator>::reference; +13943: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, __ref>); +13943: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, __ref, _Tp&>); +13943: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>); +13943: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, __ref, __ref>); +13943: if constexpr (__is_random_access_iter<_InputIterator>::value) +13943: { +13943: while ((__last - __first) >= 4) +13943: { +13943: _Tp __v1 = __binary_op(__first[0], __first[1]); +13943: _Tp __v2 = __binary_op(__first[2], __first[3]); +13943: _Tp __v3 = __binary_op(__v1, __v2); +13943: __init = __binary_op(__init, __v3); +13943: __first += 4; +13943: } +13943: } +13943: for (; __first != __last; ++__first) +13943: __init = __binary_op(__init, *__first); +13943: return __init; +13943: } +13943: # 322 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: inline _Tp +13943: reduce(_InputIterator __first, _InputIterator __last, _Tp __init) +13943: { return std::reduce(__first, __last, std::move(__init), plus<>()); } +13943: # 339 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: inline typename iterator_traits<_InputIterator>::value_type +13943: reduce(_InputIterator __first, _InputIterator __last) +13943: { +13943: using value_type = typename iterator_traits<_InputIterator>::value_type; +13943: return std::reduce(__first, __last, value_type{}, plus<>()); +13943: } +13943: # 366 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _Tp +13943: transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _Tp __init, +13943: _BinaryOperation1 __binary_op1, +13943: _BinaryOperation2 __binary_op2) +13943: { +13943: if constexpr (__and_v<__is_random_access_iter<_InputIterator1>, +13943: __is_random_access_iter<_InputIterator2>>) +13943: { +13943: while ((__last1 - __first1) >= 4) +13943: { +13943: _Tp __v1 = __binary_op1(__binary_op2(__first1[0], __first2[0]), +13943: __binary_op2(__first1[1], __first2[1])); +13943: _Tp __v2 = __binary_op1(__binary_op2(__first1[2], __first2[2]), +13943: __binary_op2(__first1[3], __first2[3])); +13943: _Tp __v3 = __binary_op1(__v1, __v2); +13943: __init = __binary_op1(__init, __v3); +13943: __first1 += 4; +13943: __first2 += 4; +13943: } +13943: } +13943: for (; __first1 != __last1; ++__first1, (void) ++__first2) +13943: __init = __binary_op1(__init, __binary_op2(*__first1, *__first2)); +13943: return __init; +13943: } +13943: # 410 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: inline _Tp +13943: transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, +13943: _InputIterator2 __first2, _Tp __init) +13943: { +13943: return std::transform_reduce(__first1, __last1, __first2, +13943: std::move(__init), +13943: plus<>(), multiplies<>()); +13943: } +13943: # 435 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _Tp +13943: transform_reduce(_InputIterator __first, _InputIterator __last, _Tp __init, +13943: _BinaryOperation __binary_op, _UnaryOperation __unary_op) +13943: { +13943: if constexpr (__is_random_access_iter<_InputIterator>::value) +13943: { +13943: while ((__last - __first) >= 4) +13943: { +13943: _Tp __v1 = __binary_op(__unary_op(__first[0]), +13943: __unary_op(__first[1])); +13943: _Tp __v2 = __binary_op(__unary_op(__first[2]), +13943: __unary_op(__first[3])); +13943: _Tp __v3 = __binary_op(__v1, __v2); +13943: __init = __binary_op(__init, __v3); +13943: __first += 4; +13943: } +13943: } +13943: for (; __first != __last; ++__first) +13943: __init = __binary_op(__init, __unary_op(*__first)); +13943: return __init; +13943: } +13943: # 478 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _OutputIterator +13943: exclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _Tp __init, +13943: _BinaryOperation __binary_op) +13943: { +13943: while (__first != __last) +13943: { +13943: _Tp __v = std::move(__init); +13943: __init = __binary_op(__v, *__first); +13943: ++__first; +13943: *__result++ = std::move(__v); +13943: } +13943: return __result; +13943: } +13943: # 513 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: exclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _Tp __init) +13943: { +13943: return std::exclusive_scan(__first, __last, __result, std::move(__init), +13943: plus<>()); +13943: } +13943: # 541 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _OutputIterator +13943: inclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _BinaryOperation __binary_op, +13943: _Tp __init) +13943: { +13943: for (; __first != __last; ++__first) +13943: *__result++ = __init = __binary_op(__init, *__first); +13943: return __result; +13943: } +13943: # 570 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _OutputIterator +13943: inclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _BinaryOperation __binary_op) +13943: { +13943: if (__first != __last) +13943: { +13943: auto __init = *__first; +13943: *__result++ = __init; +13943: ++__first; +13943: if (__first != __last) +13943: __result = std::inclusive_scan(__first, __last, __result, +13943: __binary_op, std::move(__init)); +13943: } +13943: return __result; +13943: } +13943: # 604 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: inline _OutputIterator +13943: inclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result) +13943: { return std::inclusive_scan(__first, __last, __result, plus<>()); } +13943: # 631 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _OutputIterator +13943: transform_exclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, _Tp __init, +13943: _BinaryOperation __binary_op, +13943: _UnaryOperation __unary_op) +13943: { +13943: while (__first != __last) +13943: { +13943: auto __v = __init; +13943: __init = __binary_op(__init, __unary_op(*__first)); +13943: ++__first; +13943: *__result++ = std::move(__v); +13943: } +13943: return __result; +13943: } +13943: # 670 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _OutputIterator +13943: transform_inclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, +13943: _BinaryOperation __binary_op, +13943: _UnaryOperation __unary_op, +13943: _Tp __init) +13943: { +13943: for (; __first != __last; ++__first) +13943: *__result++ = __init = __binary_op(__init, __unary_op(*__first)); +13943: return __result; +13943: } +13943: # 704 "/usr/include/c++/14/numeric" 3 +13943: template +13943: +13943: _OutputIterator +13943: transform_inclusive_scan(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, +13943: _BinaryOperation __binary_op, +13943: _UnaryOperation __unary_op) +13943: { +13943: if (__first != __last) +13943: { +13943: auto __init = __unary_op(*__first); +13943: *__result++ = __init; +13943: ++__first; +13943: if (__first != __last) +13943: __result = std::transform_inclusive_scan(__first, __last, __result, +13943: __binary_op, __unary_op, +13943: std::move(__init)); +13943: } +13943: return __result; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 739 "/usr/include/c++/14/numeric" 3 +13943: # 1 "/usr/include/c++/14/pstl/glue_numeric_defs.h" 1 3 +13943: # 15 "/usr/include/c++/14/pstl/glue_numeric_defs.h" 3 +13943: namespace std +13943: { +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +13943: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init, +13943: _BinaryOperation __binary_op); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +13943: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, +13943: typename iterator_traits<_ForwardIterator>::value_type> +13943: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +13943: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _Tp __init); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +13943: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +13943: _ForwardIterator2 __first2, _Tp __init, _BinaryOperation1 __binary_op1, +13943: _BinaryOperation2 __binary_op2); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +13943: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init, +13943: _BinaryOperation __binary_op, _UnaryOperation __unary_op); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _Tp __init); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _BinaryOperation __binary_op); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _BinaryOperation __binary_op, _Tp __init); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: transform_exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op, +13943: _UnaryOperation __unary_op); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op, +13943: _Tp __init); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op); +13943: +13943: +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __d_first, _BinaryOperation __op); +13943: +13943: template +13943: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +13943: adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +13943: _ForwardIterator2 __d_first); +13943: +13943: } +13943: # 740 "/usr/include/c++/14/numeric" 2 3 +13943: # 34 "/usr/include/c++/14/bits/random.tcc" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: namespace __detail +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _Tp +13943: _Mod<_Tp, __m, __a, __c, false, true>:: +13943: __calc(_Tp __x) +13943: { +13943: if (__a == 1) +13943: __x %= __m; +13943: else +13943: { +13943: static const _Tp __q = __m / __a; +13943: static const _Tp __r = __m % __a; +13943: +13943: _Tp __t1 = __a * (__x % __q); +13943: _Tp __t2 = __r * (__x / __q); +13943: if (__t1 >= __t2) +13943: __x = __t1 - __t2; +13943: else +13943: __x = __m - __t2 + __t1; +13943: } +13943: +13943: if (__c != 0) +13943: { +13943: const _Tp __d = __m - __x; +13943: if (__d > __c) +13943: __x += __c; +13943: else +13943: __x = __c - __d; +13943: } +13943: return __x; +13943: } +13943: +13943: template +13943: _OutputIterator +13943: __normalize(_InputIterator __first, _InputIterator __last, +13943: _OutputIterator __result, const _Tp& __factor) +13943: { +13943: for (; __first != __last; ++__first, ++__result) +13943: *__result = *__first / __factor; +13943: return __result; +13943: } +13943: +13943: } +13943: # 116 "/usr/include/c++/14/bits/random.tcc" 3 +13943: template +13943: void +13943: linear_congruential_engine<_UIntType, __a, __c, __m>:: +13943: seed(result_type __s) +13943: { +13943: if ((__detail::__mod<_UIntType, __m>(__c) == 0) +13943: && (__detail::__mod<_UIntType, __m>(__s) == 0)) +13943: _M_x = 1; +13943: else +13943: _M_x = __detail::__mod<_UIntType, __m>(__s); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: template +13943: auto +13943: linear_congruential_engine<_UIntType, __a, __c, __m>:: +13943: seed(_Sseq& __q) +13943: -> _If_seed_seq<_Sseq> +13943: { +13943: const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits +13943: : std::__lg(__m); +13943: const _UIntType __k = (__k0 + 31) / 32; +13943: uint_least32_t __arr[__k + 3]; +13943: __q.generate(__arr + 0, __arr + __k + 3); +13943: _UIntType __factor = 1u; +13943: _UIntType __sum = 0u; +13943: for (size_t __j = 0; __j < __k; ++__j) +13943: { +13943: __sum += __arr[__j + 3] * __factor; +13943: __factor *= __detail::_Shift<_UIntType, 32>::__value; +13943: } +13943: seed(__sum); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const linear_congruential_engine<_UIntType, +13943: __a, __c, __m>& __lcr) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +13943: __os.fill(__os.widen(' ')); +13943: +13943: __os << __lcr._M_x; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec); +13943: +13943: __is >> __lcr._M_x; +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: # 320 "/usr/include/c++/14/bits/random.tcc" 3 +13943: template +13943: void +13943: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +13943: __s, __b, __t, __c, __l, __f>:: +13943: seed(result_type __sd) +13943: { +13943: _M_x[0] = __detail::__mod<_UIntType, +13943: __detail::_Shift<_UIntType, __w>::__value>(__sd); +13943: +13943: for (size_t __i = 1; __i < state_size; ++__i) +13943: { +13943: _UIntType __x = _M_x[__i - 1]; +13943: __x ^= __x >> (__w - 2); +13943: __x *= __f; +13943: __x += __detail::__mod<_UIntType, __n>(__i); +13943: _M_x[__i] = __detail::__mod<_UIntType, +13943: __detail::_Shift<_UIntType, __w>::__value>(__x); +13943: } +13943: _M_p = state_size; +13943: } +13943: +13943: template +13943: template +13943: auto +13943: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +13943: __s, __b, __t, __c, __l, __f>:: +13943: seed(_Sseq& __q) +13943: -> _If_seed_seq<_Sseq> +13943: { +13943: const _UIntType __upper_mask = (~_UIntType()) << __r; +13943: const size_t __k = (__w + 31) / 32; +13943: uint_least32_t __arr[__n * __k]; +13943: __q.generate(__arr + 0, __arr + __n * __k); +13943: +13943: bool __zero = true; +13943: for (size_t __i = 0; __i < state_size; ++__i) +13943: { +13943: _UIntType __factor = 1u; +13943: _UIntType __sum = 0u; +13943: for (size_t __j = 0; __j < __k; ++__j) +13943: { +13943: __sum += __arr[__k * __i + __j] * __factor; +13943: __factor *= __detail::_Shift<_UIntType, 32>::__value; +13943: } +13943: _M_x[__i] = __detail::__mod<_UIntType, +13943: __detail::_Shift<_UIntType, __w>::__value>(__sum); +13943: +13943: if (__zero) +13943: { +13943: if (__i == 0) +13943: { +13943: if ((_M_x[0] & __upper_mask) != 0u) +13943: __zero = false; +13943: } +13943: else if (_M_x[__i] != 0u) +13943: __zero = false; +13943: } +13943: } +13943: if (__zero) +13943: _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value; +13943: _M_p = state_size; +13943: } +13943: +13943: template +13943: void +13943: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +13943: __s, __b, __t, __c, __l, __f>:: +13943: _M_gen_rand(void) +13943: { +13943: const _UIntType __upper_mask = (~_UIntType()) << __r; +13943: const _UIntType __lower_mask = ~__upper_mask; +13943: +13943: for (size_t __k = 0; __k < (__n - __m); ++__k) +13943: { +13943: _UIntType __y = ((_M_x[__k] & __upper_mask) +13943: | (_M_x[__k + 1] & __lower_mask)); +13943: _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) +13943: ^ ((__y & 0x01) ? __a : 0)); +13943: } +13943: +13943: for (size_t __k = (__n - __m); __k < (__n - 1); ++__k) +13943: { +13943: _UIntType __y = ((_M_x[__k] & __upper_mask) +13943: | (_M_x[__k + 1] & __lower_mask)); +13943: _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) +13943: ^ ((__y & 0x01) ? __a : 0)); +13943: } +13943: +13943: _UIntType __y = ((_M_x[__n - 1] & __upper_mask) +13943: | (_M_x[0] & __lower_mask)); +13943: _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) +13943: ^ ((__y & 0x01) ? __a : 0)); +13943: _M_p = 0; +13943: } +13943: +13943: template +13943: void +13943: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +13943: __s, __b, __t, __c, __l, __f>:: +13943: discard(unsigned long long __z) +13943: { +13943: while (__z > state_size - _M_p) +13943: { +13943: __z -= state_size - _M_p; +13943: _M_gen_rand(); +13943: } +13943: _M_p += __z; +13943: } +13943: +13943: template +13943: typename +13943: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +13943: __s, __b, __t, __c, __l, __f>::result_type +13943: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +13943: __s, __b, __t, __c, __l, __f>:: +13943: operator()() +13943: { +13943: +13943: if (_M_p >= state_size) +13943: _M_gen_rand(); +13943: +13943: +13943: result_type __z = _M_x[_M_p++]; +13943: __z ^= (__z >> __u) & __d; +13943: __z ^= (__z << __s) & __b; +13943: __z ^= (__z << __t) & __c; +13943: __z ^= (__z >> __l); +13943: +13943: return __z; +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const mersenne_twister_engine<_UIntType, __w, __n, __m, +13943: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +13943: __os.fill(__space); +13943: +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: __os << __x._M_x[__i] << __space; +13943: __os << __x._M_p; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: mersenne_twister_engine<_UIntType, __w, __n, __m, +13943: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: for (size_t __i = 0; __i < __n; ++__i) +13943: __is >> __x._M_x[__i]; +13943: __is >> __x._M_p; +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: # 539 "/usr/include/c++/14/bits/random.tcc" 3 +13943: template +13943: void +13943: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +13943: seed(result_type __value) +13943: { +13943: +13943: +13943: +13943: std::linear_congruential_engine +13943: __lcg(__value == 0u ? default_seed : __value % 2147483563u); +13943: +13943: const size_t __n = (__w + 31) / 32; +13943: +13943: for (size_t __i = 0; __i < long_lag; ++__i) +13943: { +13943: _UIntType __sum = 0u; +13943: _UIntType __factor = 1u; +13943: for (size_t __j = 0; __j < __n; ++__j) +13943: { +13943: __sum += __detail::__mod::__value> +13943: (__lcg()) * __factor; +13943: __factor *= __detail::_Shift<_UIntType, 32>::__value; +13943: } +13943: _M_x[__i] = __detail::__mod<_UIntType, +13943: __detail::_Shift<_UIntType, __w>::__value>(__sum); +13943: } +13943: _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; +13943: _M_p = 0; +13943: } +13943: +13943: template +13943: template +13943: auto +13943: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +13943: seed(_Sseq& __q) +13943: -> _If_seed_seq<_Sseq> +13943: { +13943: const size_t __k = (__w + 31) / 32; +13943: uint_least32_t __arr[__r * __k]; +13943: __q.generate(__arr + 0, __arr + __r * __k); +13943: +13943: for (size_t __i = 0; __i < long_lag; ++__i) +13943: { +13943: _UIntType __sum = 0u; +13943: _UIntType __factor = 1u; +13943: for (size_t __j = 0; __j < __k; ++__j) +13943: { +13943: __sum += __arr[__k * __i + __j] * __factor; +13943: __factor *= __detail::_Shift<_UIntType, 32>::__value; +13943: } +13943: _M_x[__i] = __detail::__mod<_UIntType, +13943: __detail::_Shift<_UIntType, __w>::__value>(__sum); +13943: } +13943: _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; +13943: _M_p = 0; +13943: } +13943: +13943: template +13943: typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +13943: result_type +13943: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +13943: operator()() +13943: { +13943: +13943: long __ps = _M_p - short_lag; +13943: if (__ps < 0) +13943: __ps += long_lag; +13943: +13943: +13943: +13943: +13943: _UIntType __xi; +13943: if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) +13943: { +13943: __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; +13943: _M_carry = 0; +13943: } +13943: else +13943: { +13943: __xi = (__detail::_Shift<_UIntType, __w>::__value +13943: - _M_x[_M_p] - _M_carry + _M_x[__ps]); +13943: _M_carry = 1; +13943: } +13943: _M_x[_M_p] = __xi; +13943: +13943: +13943: if (++_M_p >= long_lag) +13943: _M_p = 0; +13943: +13943: return __xi; +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const subtract_with_carry_engine<_UIntType, +13943: __w, __s, __r>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +13943: __os.fill(__space); +13943: +13943: for (size_t __i = 0; __i < __r; ++__i) +13943: __os << __x._M_x[__i] << __space; +13943: __os << __x._M_carry << __space << __x._M_p; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: for (size_t __i = 0; __i < __r; ++__i) +13943: __is >> __x._M_x[__i]; +13943: __is >> __x._M_carry; +13943: __is >> __x._M_p; +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: # 686 "/usr/include/c++/14/bits/random.tcc" 3 +13943: template +13943: typename discard_block_engine<_RandomNumberEngine, +13943: __p, __r>::result_type +13943: discard_block_engine<_RandomNumberEngine, __p, __r>:: +13943: operator()() +13943: { +13943: if (_M_n >= used_block) +13943: { +13943: _M_b.discard(block_size - _M_n); +13943: _M_n = 0; +13943: } +13943: ++_M_n; +13943: return _M_b(); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const discard_block_engine<_RandomNumberEngine, +13943: __p, __r>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +13943: __os.fill(__space); +13943: +13943: __os << __x.base() << __space << __x._M_n; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: discard_block_engine<_RandomNumberEngine, __p, __r>& __x) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: __is >> __x._M_b >> __x._M_n; +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: +13943: result_type +13943: independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: +13943: operator()() +13943: { +13943: typedef typename _RandomNumberEngine::result_type _Eresult_type; +13943: const _Eresult_type __r +13943: = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() +13943: ? _M_b.max() - _M_b.min() + 1 : 0); +13943: const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; +13943: const unsigned __m = __r ? std::__lg(__r) : __edig; +13943: +13943: typedef typename std::common_type<_Eresult_type, result_type>::type +13943: __ctype; +13943: const unsigned __cdig = std::numeric_limits<__ctype>::digits; +13943: +13943: unsigned __n, __n0; +13943: __ctype __s0, __s1, __y0, __y1; +13943: +13943: for (size_t __i = 0; __i < 2; ++__i) +13943: { +13943: __n = (__w + __m - 1) / __m + __i; +13943: __n0 = __n - __w % __n; +13943: const unsigned __w0 = __w / __n; +13943: +13943: __s0 = 0; +13943: __s1 = 0; +13943: if (__w0 < __cdig) +13943: { +13943: __s0 = __ctype(1) << __w0; +13943: __s1 = __s0 << 1; +13943: } +13943: +13943: __y0 = 0; +13943: __y1 = 0; +13943: if (__r) +13943: { +13943: __y0 = __s0 * (__r / __s0); +13943: if (__s1) +13943: __y1 = __s1 * (__r / __s1); +13943: +13943: if (__r - __y0 <= __y0 / __n) +13943: break; +13943: } +13943: else +13943: break; +13943: } +13943: +13943: result_type __sum = 0; +13943: for (size_t __k = 0; __k < __n0; ++__k) +13943: { +13943: __ctype __u; +13943: do +13943: __u = _M_b() - _M_b.min(); +13943: while (__y0 && __u >= __y0); +13943: __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); +13943: } +13943: for (size_t __k = __n0; __k < __n; ++__k) +13943: { +13943: __ctype __u; +13943: do +13943: __u = _M_b() - _M_b.min(); +13943: while (__y1 && __u >= __y1); +13943: __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); +13943: } +13943: return __sum; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace __detail +13943: { +13943: +13943: template +13943: constexpr bool +13943: __representable_as_double(_Tp __x) noexcept +13943: { +13943: static_assert(numeric_limits<_Tp>::is_integer, ""); +13943: static_assert(!numeric_limits<_Tp>::is_signed, ""); +13943: +13943: return (__x <= (1ull << 53)) +13943: +13943: || (!(__x & 1) && __detail::__representable_as_double(__x >> 1)); +13943: } +13943: +13943: +13943: template +13943: constexpr bool +13943: __p1_representable_as_double(_Tp __x) noexcept +13943: { +13943: static_assert(numeric_limits<_Tp>::is_integer, ""); +13943: static_assert(!numeric_limits<_Tp>::is_signed, ""); +13943: return numeric_limits<_Tp>::digits < 53 +13943: || (bool(__x + 1u) +13943: && __detail::__representable_as_double(__x + 1u)); +13943: } +13943: } +13943: +13943: template +13943: typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type +13943: shuffle_order_engine<_RandomNumberEngine, __k>:: +13943: operator()() +13943: { +13943: constexpr result_type __range = max() - min(); +13943: size_t __j = __k; +13943: const result_type __y = _M_y - min(); +13943: +13943: if constexpr (__detail::__p1_representable_as_double(__range)) +13943: __j *= __y / (__range + 1.0); +13943: else +13943: __j *= __y / (__range + 1.0L); +13943: _M_y = _M_v[__j]; +13943: _M_v[__j] = _M_b(); +13943: +13943: return _M_y; +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const shuffle_order_engine<_RandomNumberEngine, __k>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +13943: __os.fill(__space); +13943: +13943: __os << __x.base(); +13943: for (size_t __i = 0; __i < __k; ++__i) +13943: __os << __space << __x._M_v[__i]; +13943: __os << __space << __x._M_y; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: shuffle_order_engine<_RandomNumberEngine, __k>& __x) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: __is >> __x._M_b; +13943: for (size_t __i = 0; __i < __k; ++__i) +13943: __is >> __x._M_v[__i]; +13943: __is >> __x._M_y; +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const uniform_int_distribution<_IntType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: +13943: __os << __x.a() << __space << __x.b(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: uniform_int_distribution<_IntType>& __x) +13943: { +13943: using param_type +13943: = typename uniform_int_distribution<_IntType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _IntType __a, __b; +13943: if (__is >> __a >> __b) +13943: __x.param(param_type(__a, __b)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: void +13943: uniform_real_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: auto __range = __p.b() - __p.a(); +13943: while (__f != __t) +13943: *__f++ = __aurng() * __range + __p.a(); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const uniform_real_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.a() << __space << __x.b(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: uniform_real_distribution<_RealType>& __x) +13943: { +13943: using param_type +13943: = typename uniform_real_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::skipws); +13943: +13943: _RealType __a, __b; +13943: if (__is >> __a >> __b) +13943: __x.param(param_type(__a, __b)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: void +13943: std::bernoulli_distribution:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: auto __limit = __p.p() * (__aurng.max() - __aurng.min()); +13943: +13943: while (__f != __t) +13943: *__f++ = (__aurng() - __aurng.min()) < __limit; +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const bernoulli_distribution& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__os.widen(' ')); +13943: __os.precision(std::numeric_limits::max_digits10); +13943: +13943: __os << __x.p(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: +13943: template +13943: template +13943: typename geometric_distribution<_IntType>::result_type +13943: geometric_distribution<_IntType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: +13943: const double __naf = +13943: (1 - std::numeric_limits::epsilon()) / 2; +13943: +13943: const double __thr = +13943: std::numeric_limits<_IntType>::max() + __naf; +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: double __cand; +13943: do +13943: __cand = std::floor(std::log(1.0 - __aurng()) / __param._M_log_1_p); +13943: while (__cand >= __thr); +13943: +13943: return result_type(__cand + __naf); +13943: } +13943: +13943: template +13943: template +13943: void +13943: geometric_distribution<_IntType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: +13943: +13943: const double __naf = +13943: (1 - std::numeric_limits::epsilon()) / 2; +13943: +13943: const double __thr = +13943: std::numeric_limits<_IntType>::max() + __naf; +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: while (__f != __t) +13943: { +13943: double __cand; +13943: do +13943: __cand = std::floor(std::log(1.0 - __aurng()) +13943: / __param._M_log_1_p); +13943: while (__cand >= __thr); +13943: +13943: *__f++ = __cand + __naf; +13943: } +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const geometric_distribution<_IntType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__os.widen(' ')); +13943: __os.precision(std::numeric_limits::max_digits10); +13943: +13943: __os << __x.p(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: geometric_distribution<_IntType>& __x) +13943: { +13943: using param_type = typename geometric_distribution<_IntType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::skipws); +13943: +13943: double __p; +13943: if (__is >> __p) +13943: __x.param(param_type(__p)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: typename negative_binomial_distribution<_IntType>::result_type +13943: negative_binomial_distribution<_IntType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng) +13943: { +13943: const double __y = _M_gd(__urng); +13943: +13943: +13943: std::poisson_distribution __poisson(__y); +13943: return __poisson(__urng); +13943: } +13943: +13943: template +13943: template +13943: typename negative_binomial_distribution<_IntType>::result_type +13943: negative_binomial_distribution<_IntType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: typedef typename std::gamma_distribution::param_type +13943: param_type; +13943: +13943: const double __y = +13943: _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); +13943: +13943: std::poisson_distribution __poisson(__y); +13943: return __poisson(__urng); +13943: } +13943: +13943: template +13943: template +13943: void +13943: negative_binomial_distribution<_IntType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { +13943: +13943: while (__f != __t) +13943: { +13943: const double __y = _M_gd(__urng); +13943: +13943: +13943: std::poisson_distribution __poisson(__y); +13943: *__f++ = __poisson(__urng); +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: negative_binomial_distribution<_IntType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: typename std::gamma_distribution::param_type +13943: __p2(__p.k(), (1.0 - __p.p()) / __p.p()); +13943: +13943: while (__f != __t) +13943: { +13943: const double __y = _M_gd(__urng, __p2); +13943: +13943: std::poisson_distribution __poisson(__y); +13943: *__f++ = __poisson(__urng); +13943: } +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const negative_binomial_distribution<_IntType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__os.widen(' ')); +13943: __os.precision(std::numeric_limits::max_digits10); +13943: +13943: __os << __x.k() << __space << __x.p() +13943: << __space << __x._M_gd; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: negative_binomial_distribution<_IntType>& __x) +13943: { +13943: using param_type +13943: = typename negative_binomial_distribution<_IntType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::skipws); +13943: +13943: _IntType __k; +13943: double __p; +13943: if (__is >> __k >> __p >> __x._M_gd) +13943: __x.param(param_type(__k, __p)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: void +13943: poisson_distribution<_IntType>::param_type:: +13943: _M_initialize() +13943: { +13943: +13943: if (_M_mean >= 12) +13943: { +13943: const double __m = std::floor(_M_mean); +13943: _M_lm_thr = std::log(_M_mean); +13943: _M_lfm = std::lgamma(__m + 1); +13943: _M_sm = std::sqrt(__m); +13943: +13943: const double __pi_4 = 0.7853981633974483096156608458198757L; +13943: const double __dx = std::sqrt(2 * __m * std::log(32 * __m +13943: / __pi_4)); +13943: _M_d = std::round(std::max(6.0, std::min(__m, __dx))); +13943: const double __cx = 2 * __m + _M_d; +13943: _M_scx = std::sqrt(__cx / 2); +13943: _M_1cx = 1 / __cx; +13943: +13943: _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); +13943: _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) +13943: / _M_d; +13943: } +13943: else +13943: +13943: _M_lm_thr = std::exp(-_M_mean); +13943: } +13943: # 1308 "/usr/include/c++/14/bits/random.tcc" 3 +13943: template +13943: template +13943: typename poisson_distribution<_IntType>::result_type +13943: poisson_distribution<_IntType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: if (__param.mean() >= 12) +13943: { +13943: double __x; +13943: +13943: +13943: const double __naf = +13943: (1 - std::numeric_limits::epsilon()) / 2; +13943: const double __thr = +13943: std::numeric_limits<_IntType>::max() + __naf; +13943: +13943: const double __m = std::floor(__param.mean()); +13943: +13943: const double __spi_2 = 1.2533141373155002512078826424055226L; +13943: const double __c1 = __param._M_sm * __spi_2; +13943: const double __c2 = __param._M_c2b + __c1; +13943: const double __c3 = __c2 + 1; +13943: const double __c4 = __c3 + 1; +13943: +13943: const double __178 = 0.0128205128205128205128205128205128L; +13943: +13943: const double __e178 = 1.0129030479320018583185514777512983L; +13943: const double __c5 = __c4 + __e178; +13943: const double __c = __param._M_cb + __c5; +13943: const double __2cx = 2 * (2 * __m + __param._M_d); +13943: +13943: bool __reject = true; +13943: do +13943: { +13943: const double __u = __c * __aurng(); +13943: const double __e = -std::log(1.0 - __aurng()); +13943: +13943: double __w = 0.0; +13943: +13943: if (__u <= __c1) +13943: { +13943: const double __n = _M_nd(__urng); +13943: const double __y = -std::abs(__n) * __param._M_sm - 1; +13943: __x = std::floor(__y); +13943: __w = -__n * __n / 2; +13943: if (__x < -__m) +13943: continue; +13943: } +13943: else if (__u <= __c2) +13943: { +13943: const double __n = _M_nd(__urng); +13943: const double __y = 1 + std::abs(__n) * __param._M_scx; +13943: __x = std::ceil(__y); +13943: __w = __y * (2 - __y) * __param._M_1cx; +13943: if (__x > __param._M_d) +13943: continue; +13943: } +13943: else if (__u <= __c3) +13943: +13943: +13943: __x = -1; +13943: else if (__u <= __c4) +13943: __x = 0; +13943: else if (__u <= __c5) +13943: { +13943: __x = 1; +13943: +13943: __w = __178; +13943: } +13943: else +13943: { +13943: const double __v = -std::log(1.0 - __aurng()); +13943: const double __y = __param._M_d +13943: + __v * __2cx / __param._M_d; +13943: __x = std::ceil(__y); +13943: __w = -__param._M_d * __param._M_1cx * (1 + __y / 2); +13943: } +13943: +13943: __reject = (__w - __e - __x * __param._M_lm_thr +13943: > __param._M_lfm - std::lgamma(__x + __m + 1)); +13943: +13943: __reject |= __x + __m >= __thr; +13943: +13943: } while (__reject); +13943: +13943: return result_type(__x + __m + __naf); +13943: } +13943: else +13943: +13943: { +13943: _IntType __x = 0; +13943: double __prod = 1.0; +13943: +13943: do +13943: { +13943: __prod *= __aurng(); +13943: __x += 1; +13943: } +13943: while (__prod > __param._M_lm_thr); +13943: +13943: return __x - 1; +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: poisson_distribution<_IntType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: +13943: while (__f != __t) +13943: *__f++ = this->operator()(__urng, __param); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const poisson_distribution<_IntType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits::max_digits10); +13943: +13943: __os << __x.mean() << __space << __x._M_nd; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: poisson_distribution<_IntType>& __x) +13943: { +13943: using param_type = typename poisson_distribution<_IntType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::skipws); +13943: +13943: double __mean; +13943: if (__is >> __mean >> __x._M_nd) +13943: __x.param(param_type(__mean)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: void +13943: binomial_distribution<_IntType>::param_type:: +13943: _M_initialize() +13943: { +13943: const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; +13943: +13943: _M_easy = true; +13943: +13943: +13943: if (_M_t * __p12 >= 8) +13943: { +13943: _M_easy = false; +13943: const double __np = std::floor(_M_t * __p12); +13943: const double __pa = __np / _M_t; +13943: const double __1p = 1 - __pa; +13943: +13943: const double __pi_4 = 0.7853981633974483096156608458198757L; +13943: const double __d1x = +13943: std::sqrt(__np * __1p * std::log(32 * __np +13943: / (81 * __pi_4 * __1p))); +13943: _M_d1 = std::round(std::max(1.0, __d1x)); +13943: const double __d2x = +13943: std::sqrt(__np * __1p * std::log(32 * _M_t * __1p +13943: / (__pi_4 * __pa))); +13943: _M_d2 = std::round(std::max(1.0, __d2x)); +13943: +13943: +13943: const double __spi_2 = 1.2533141373155002512078826424055226L; +13943: _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); +13943: _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * (_M_t * __1p))); +13943: _M_c = 2 * _M_d1 / __np; +13943: _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; +13943: const double __a12 = _M_a1 + _M_s2 * __spi_2; +13943: const double __s1s = _M_s1 * _M_s1; +13943: _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) +13943: * 2 * __s1s / _M_d1 +13943: * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); +13943: const double __s2s = _M_s2 * _M_s2; +13943: _M_s = (_M_a123 + 2 * __s2s / _M_d2 +13943: * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); +13943: _M_lf = (std::lgamma(__np + 1) +13943: + std::lgamma(_M_t - __np + 1)); +13943: _M_lp1p = std::log(__pa / __1p); +13943: +13943: _M_q = -std::log(1 - (__p12 - __pa) / __1p); +13943: } +13943: else +13943: +13943: _M_q = -std::log(1 - __p12); +13943: } +13943: +13943: template +13943: template +13943: typename binomial_distribution<_IntType>::result_type +13943: binomial_distribution<_IntType>:: +13943: _M_waiting(_UniformRandomNumberGenerator& __urng, +13943: _IntType __t, double __q) +13943: { +13943: _IntType __x = 0; +13943: double __sum = 0.0; +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: do +13943: { +13943: if (__t == __x) +13943: return __x; +13943: const double __e = -std::log(1.0 - __aurng()); +13943: __sum += __e / (__t - __x); +13943: __x += 1; +13943: } +13943: while (__sum <= __q); +13943: +13943: return __x - 1; +13943: } +13943: # 1563 "/usr/include/c++/14/bits/random.tcc" 3 +13943: template +13943: template +13943: typename binomial_distribution<_IntType>::result_type +13943: binomial_distribution<_IntType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: result_type __ret; +13943: const _IntType __t = __param.t(); +13943: const double __p = __param.p(); +13943: const double __p12 = __p <= 0.5 ? __p : 1.0 - __p; +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: +13943: if (!__param._M_easy) +13943: { +13943: double __x; +13943: +13943: +13943: const double __naf = +13943: (1 - std::numeric_limits::epsilon()) / 2; +13943: const double __thr = +13943: std::numeric_limits<_IntType>::max() + __naf; +13943: +13943: const double __np = std::floor(__t * __p12); +13943: +13943: +13943: const double __spi_2 = 1.2533141373155002512078826424055226L; +13943: const double __a1 = __param._M_a1; +13943: const double __a12 = __a1 + __param._M_s2 * __spi_2; +13943: const double __a123 = __param._M_a123; +13943: const double __s1s = __param._M_s1 * __param._M_s1; +13943: const double __s2s = __param._M_s2 * __param._M_s2; +13943: +13943: bool __reject; +13943: do +13943: { +13943: const double __u = __param._M_s * __aurng(); +13943: +13943: double __v; +13943: +13943: if (__u <= __a1) +13943: { +13943: const double __n = _M_nd(__urng); +13943: const double __y = __param._M_s1 * std::abs(__n); +13943: __reject = __y >= __param._M_d1; +13943: if (!__reject) +13943: { +13943: const double __e = -std::log(1.0 - __aurng()); +13943: __x = std::floor(__y); +13943: __v = -__e - __n * __n / 2 + __param._M_c; +13943: } +13943: } +13943: else if (__u <= __a12) +13943: { +13943: const double __n = _M_nd(__urng); +13943: const double __y = __param._M_s2 * std::abs(__n); +13943: __reject = __y >= __param._M_d2; +13943: if (!__reject) +13943: { +13943: const double __e = -std::log(1.0 - __aurng()); +13943: __x = std::floor(-__y); +13943: __v = -__e - __n * __n / 2; +13943: } +13943: } +13943: else if (__u <= __a123) +13943: { +13943: const double __e1 = -std::log(1.0 - __aurng()); +13943: const double __e2 = -std::log(1.0 - __aurng()); +13943: +13943: const double __y = __param._M_d1 +13943: + 2 * __s1s * __e1 / __param._M_d1; +13943: __x = std::floor(__y); +13943: __v = (-__e2 + __param._M_d1 * (1 / (__t - __np) +13943: -__y / (2 * __s1s))); +13943: __reject = false; +13943: } +13943: else +13943: { +13943: const double __e1 = -std::log(1.0 - __aurng()); +13943: const double __e2 = -std::log(1.0 - __aurng()); +13943: +13943: const double __y = __param._M_d2 +13943: + 2 * __s2s * __e1 / __param._M_d2; +13943: __x = std::floor(-__y); +13943: __v = -__e2 - __param._M_d2 * __y / (2 * __s2s); +13943: __reject = false; +13943: } +13943: +13943: __reject = __reject || __x < -__np || __x > __t - __np; +13943: if (!__reject) +13943: { +13943: const double __lfx = +13943: std::lgamma(__np + __x + 1) +13943: + std::lgamma(__t - (__np + __x) + 1); +13943: __reject = __v > __param._M_lf - __lfx +13943: + __x * __param._M_lp1p; +13943: } +13943: +13943: __reject |= __x + __np >= __thr; +13943: } +13943: while (__reject); +13943: +13943: __x += __np + __naf; +13943: +13943: const _IntType __z = _M_waiting(__urng, __t - _IntType(__x), +13943: __param._M_q); +13943: __ret = _IntType(__x) + __z; +13943: } +13943: else +13943: +13943: __ret = _M_waiting(__urng, __t, __param._M_q); +13943: +13943: if (__p12 != __p) +13943: __ret = __t - __ret; +13943: return __ret; +13943: } +13943: +13943: template +13943: template +13943: void +13943: binomial_distribution<_IntType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: +13943: while (__f != __t) +13943: *__f++ = this->operator()(__urng, __param); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const binomial_distribution<_IntType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits::max_digits10); +13943: +13943: __os << __x.t() << __space << __x.p() +13943: << __space << __x._M_nd; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: binomial_distribution<_IntType>& __x) +13943: { +13943: using param_type = typename binomial_distribution<_IntType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _IntType __t; +13943: double __p; +13943: if (__is >> __t >> __p >> __x._M_nd) +13943: __x.param(param_type(__t, __p)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: void +13943: std::exponential_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: while (__f != __t) +13943: *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const exponential_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__os.widen(' ')); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.lambda(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: exponential_distribution<_RealType>& __x) +13943: { +13943: using param_type +13943: = typename exponential_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __lambda; +13943: if (__is >> __lambda) +13943: __x.param(param_type(__lambda)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: # 1809 "/usr/include/c++/14/bits/random.tcc" 3 +13943: template +13943: template +13943: typename normal_distribution<_RealType>::result_type +13943: normal_distribution<_RealType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: result_type __ret; +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: +13943: if (_M_saved_available) +13943: { +13943: _M_saved_available = false; +13943: __ret = _M_saved; +13943: } +13943: else +13943: { +13943: result_type __x, __y, __r2; +13943: do +13943: { +13943: __x = result_type(2.0) * __aurng() - 1.0; +13943: __y = result_type(2.0) * __aurng() - 1.0; +13943: __r2 = __x * __x + __y * __y; +13943: } +13943: while (__r2 > 1.0 || __r2 == 0.0); +13943: +13943: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); +13943: _M_saved = __x * __mult; +13943: _M_saved_available = true; +13943: __ret = __y * __mult; +13943: } +13943: +13943: __ret = __ret * __param.stddev() + __param.mean(); +13943: return __ret; +13943: } +13943: +13943: template +13943: template +13943: void +13943: normal_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: +13943: if (__f == __t) +13943: return; +13943: +13943: if (_M_saved_available) +13943: { +13943: _M_saved_available = false; +13943: *__f++ = _M_saved * __param.stddev() + __param.mean(); +13943: +13943: if (__f == __t) +13943: return; +13943: } +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: +13943: while (__f + 1 < __t) +13943: { +13943: result_type __x, __y, __r2; +13943: do +13943: { +13943: __x = result_type(2.0) * __aurng() - 1.0; +13943: __y = result_type(2.0) * __aurng() - 1.0; +13943: __r2 = __x * __x + __y * __y; +13943: } +13943: while (__r2 > 1.0 || __r2 == 0.0); +13943: +13943: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); +13943: *__f++ = __y * __mult * __param.stddev() + __param.mean(); +13943: *__f++ = __x * __mult * __param.stddev() + __param.mean(); +13943: } +13943: +13943: if (__f != __t) +13943: { +13943: result_type __x, __y, __r2; +13943: do +13943: { +13943: __x = result_type(2.0) * __aurng() - 1.0; +13943: __y = result_type(2.0) * __aurng() - 1.0; +13943: __r2 = __x * __x + __y * __y; +13943: } +13943: while (__r2 > 1.0 || __r2 == 0.0); +13943: +13943: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); +13943: _M_saved = __x * __mult; +13943: _M_saved_available = true; +13943: *__f = __y * __mult * __param.stddev() + __param.mean(); +13943: } +13943: } +13943: +13943: template +13943: bool +13943: operator==(const std::normal_distribution<_RealType>& __d1, +13943: const std::normal_distribution<_RealType>& __d2) +13943: { +13943: if (__d1._M_param == __d2._M_param +13943: && __d1._M_saved_available == __d2._M_saved_available) +13943: return __d1._M_saved_available ? __d1._M_saved == __d2._M_saved : true; +13943: else +13943: return false; +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const normal_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.mean() << __space << __x.stddev() +13943: << __space << __x._M_saved_available; +13943: if (__x._M_saved_available) +13943: __os << __space << __x._M_saved; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: normal_distribution<_RealType>& __x) +13943: { +13943: using param_type = typename normal_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: double __mean, __stddev; +13943: bool __saved_avail; +13943: if (__is >> __mean >> __stddev >> __saved_avail) +13943: { +13943: if (!__saved_avail || (__is >> __x._M_saved)) +13943: { +13943: __x._M_saved_available = __saved_avail; +13943: __x.param(param_type(__mean, __stddev)); +13943: } +13943: } +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: void +13943: lognormal_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: while (__f != __t) +13943: *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const lognormal_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.m() << __space << __x.s() +13943: << __space << __x._M_nd; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: lognormal_distribution<_RealType>& __x) +13943: { +13943: using param_type +13943: = typename lognormal_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __m, __s; +13943: if (__is >> __m >> __s >> __x._M_nd) +13943: __x.param(param_type(__m, __s)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: template +13943: template +13943: void +13943: std::chi_squared_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { +13943: +13943: while (__f != __t) +13943: *__f++ = 2 * _M_gd(__urng); +13943: } +13943: +13943: template +13943: template +13943: void +13943: std::chi_squared_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const typename +13943: std::gamma_distribution::param_type& __p) +13943: { +13943: +13943: while (__f != __t) +13943: *__f++ = 2 * _M_gd(__urng, __p); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const chi_squared_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.n() << __space << __x._M_gd; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: chi_squared_distribution<_RealType>& __x) +13943: { +13943: using param_type +13943: = typename chi_squared_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __n; +13943: if (__is >> __n >> __x._M_gd) +13943: __x.param(param_type(__n)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: typename cauchy_distribution<_RealType>::result_type +13943: cauchy_distribution<_RealType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: _RealType __u; +13943: do +13943: __u = __aurng(); +13943: while (__u == 0.5); +13943: +13943: const _RealType __pi = 3.1415926535897932384626433832795029L; +13943: return __p.a() + __p.b() * std::tan(__pi * __u); +13943: } +13943: +13943: template +13943: template +13943: void +13943: cauchy_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: const _RealType __pi = 3.1415926535897932384626433832795029L; +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: while (__f != __t) +13943: { +13943: _RealType __u; +13943: do +13943: __u = __aurng(); +13943: while (__u == 0.5); +13943: +13943: *__f++ = __p.a() + __p.b() * std::tan(__pi * __u); +13943: } +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const cauchy_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.a() << __space << __x.b(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: cauchy_distribution<_RealType>& __x) +13943: { +13943: using param_type = typename cauchy_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __a, __b; +13943: if (__is >> __a >> __b) +13943: __x.param(param_type(__a, __b)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: void +13943: std::fisher_f_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { +13943: +13943: while (__f != __t) +13943: *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); +13943: } +13943: +13943: template +13943: template +13943: void +13943: std::fisher_f_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: typedef typename std::gamma_distribution::param_type +13943: param_type; +13943: param_type __p1(__p.m() / 2); +13943: param_type __p2(__p.n() / 2); +13943: while (__f != __t) +13943: *__f++ = ((_M_gd_x(__urng, __p1) * n()) +13943: / (_M_gd_y(__urng, __p2) * m())); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const fisher_f_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.m() << __space << __x.n() +13943: << __space << __x._M_gd_x << __space << __x._M_gd_y; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: fisher_f_distribution<_RealType>& __x) +13943: { +13943: using param_type +13943: = typename fisher_f_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __m, __n; +13943: if (__is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y) +13943: __x.param(param_type(__m, __n)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: void +13943: std::student_t_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng) +13943: { +13943: +13943: while (__f != __t) +13943: *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); +13943: } +13943: +13943: template +13943: template +13943: void +13943: std::student_t_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: typename std::gamma_distribution::param_type +13943: __p2(__p.n() / 2, 2); +13943: while (__f != __t) +13943: *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const student_t_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: student_t_distribution<_RealType>& __x) +13943: { +13943: using param_type +13943: = typename student_t_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __n; +13943: if (__is >> __n >> __x._M_nd >> __x._M_gd) +13943: __x.param(param_type(__n)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: void +13943: gamma_distribution<_RealType>::param_type:: +13943: _M_initialize() +13943: { +13943: _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha; +13943: +13943: const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0); +13943: _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: template +13943: typename gamma_distribution<_RealType>::result_type +13943: gamma_distribution<_RealType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: +13943: result_type __u, __v, __n; +13943: const result_type __a1 = (__param._M_malpha +13943: - _RealType(1.0) / _RealType(3.0)); +13943: +13943: do +13943: { +13943: do +13943: { +13943: __n = _M_nd(__urng); +13943: __v = result_type(1.0) + __param._M_a2 * __n; +13943: } +13943: while (__v <= 0.0); +13943: +13943: __v = __v * __v * __v; +13943: __u = __aurng(); +13943: } +13943: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n +13943: && (std::log(__u) > (0.5 * __n * __n + __a1 +13943: * (1.0 - __v + std::log(__v))))); +13943: +13943: if (__param.alpha() == __param._M_malpha) +13943: return __a1 * __v * __param.beta(); +13943: else +13943: { +13943: do +13943: __u = __aurng(); +13943: while (__u == 0.0); +13943: +13943: return (std::pow(__u, result_type(1.0) / __param.alpha()) +13943: * __a1 * __v * __param.beta()); +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: gamma_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: +13943: result_type __u, __v, __n; +13943: const result_type __a1 = (__param._M_malpha +13943: - _RealType(1.0) / _RealType(3.0)); +13943: +13943: if (__param.alpha() == __param._M_malpha) +13943: while (__f != __t) +13943: { +13943: do +13943: { +13943: do +13943: { +13943: __n = _M_nd(__urng); +13943: __v = result_type(1.0) + __param._M_a2 * __n; +13943: } +13943: while (__v <= 0.0); +13943: +13943: __v = __v * __v * __v; +13943: __u = __aurng(); +13943: } +13943: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n +13943: && (std::log(__u) > (0.5 * __n * __n + __a1 +13943: * (1.0 - __v + std::log(__v))))); +13943: +13943: *__f++ = __a1 * __v * __param.beta(); +13943: } +13943: else +13943: while (__f != __t) +13943: { +13943: do +13943: { +13943: do +13943: { +13943: __n = _M_nd(__urng); +13943: __v = result_type(1.0) + __param._M_a2 * __n; +13943: } +13943: while (__v <= 0.0); +13943: +13943: __v = __v * __v * __v; +13943: __u = __aurng(); +13943: } +13943: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n +13943: && (std::log(__u) > (0.5 * __n * __n + __a1 +13943: * (1.0 - __v + std::log(__v))))); +13943: +13943: do +13943: __u = __aurng(); +13943: while (__u == 0.0); +13943: +13943: *__f++ = (std::pow(__u, result_type(1.0) / __param.alpha()) +13943: * __a1 * __v * __param.beta()); +13943: } +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const gamma_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.alpha() << __space << __x.beta() +13943: << __space << __x._M_nd; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: gamma_distribution<_RealType>& __x) +13943: { +13943: using param_type = typename gamma_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __alpha_val, __beta_val; +13943: if (__is >> __alpha_val >> __beta_val >> __x._M_nd) +13943: __x.param(param_type(__alpha_val, __beta_val)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: typename weibull_distribution<_RealType>::result_type +13943: weibull_distribution<_RealType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: return __p.b() * std::pow(-std::log(result_type(1) - __aurng()), +13943: result_type(1) / __p.a()); +13943: } +13943: +13943: template +13943: template +13943: void +13943: weibull_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: auto __inv_a = result_type(1) / __p.a(); +13943: +13943: while (__f != __t) +13943: *__f++ = __p.b() * std::pow(-std::log(result_type(1) - __aurng()), +13943: __inv_a); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const weibull_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.a() << __space << __x.b(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: weibull_distribution<_RealType>& __x) +13943: { +13943: using param_type = typename weibull_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __a, __b; +13943: if (__is >> __a >> __b) +13943: __x.param(param_type(__a, __b)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: template +13943: typename extreme_value_distribution<_RealType>::result_type +13943: extreme_value_distribution<_RealType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: return __p.a() - __p.b() * std::log(-std::log(result_type(1) +13943: - __aurng())); +13943: } +13943: +13943: template +13943: template +13943: void +13943: extreme_value_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __p) +13943: { +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +13943: __aurng(__urng); +13943: +13943: while (__f != __t) +13943: *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) +13943: - __aurng())); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const extreme_value_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: __os << __x.a() << __space << __x.b(); +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: extreme_value_distribution<_RealType>& __x) +13943: { +13943: using param_type +13943: = typename extreme_value_distribution<_RealType>::param_type; +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: _RealType __a, __b; +13943: if (__is >> __a >> __b) +13943: __x.param(param_type(__a, __b)); +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: void +13943: discrete_distribution<_IntType>::param_type:: +13943: _M_initialize() +13943: { +13943: if (_M_prob.size() < 2) +13943: { +13943: _M_prob.clear(); +13943: return; +13943: } +13943: +13943: const double __sum = std::accumulate(_M_prob.begin(), +13943: _M_prob.end(), 0.0); +13943: do { if (std::__is_constant_evaluated() && !bool(__sum > 0)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __detail::__normalize(_M_prob.begin(), _M_prob.end(), _M_prob.begin(), +13943: __sum); +13943: +13943: _M_cp.reserve(_M_prob.size()); +13943: std::partial_sum(_M_prob.begin(), _M_prob.end(), +13943: std::back_inserter(_M_cp)); +13943: +13943: _M_cp[_M_cp.size() - 1] = 1.0; +13943: } +13943: +13943: template +13943: template +13943: discrete_distribution<_IntType>::param_type:: +13943: param_type(size_t __nw, double __xmin, double __xmax, _Func __fw) +13943: : _M_prob(), _M_cp() +13943: { +13943: const size_t __n = __nw == 0 ? 1 : __nw; +13943: const double __delta = (__xmax - __xmin) / __n; +13943: +13943: _M_prob.reserve(__n); +13943: for (size_t __k = 0; __k < __nw; ++__k) +13943: _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta)); +13943: +13943: _M_initialize(); +13943: } +13943: +13943: template +13943: template +13943: typename discrete_distribution<_IntType>::result_type +13943: discrete_distribution<_IntType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: if (__param._M_cp.empty()) +13943: return result_type(0); +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: const double __p = __aurng(); +13943: auto __pos = std::lower_bound(__param._M_cp.begin(), +13943: __param._M_cp.end(), __p); +13943: +13943: return __pos - __param._M_cp.begin(); +13943: } +13943: +13943: template +13943: template +13943: void +13943: discrete_distribution<_IntType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: +13943: if (__param._M_cp.empty()) +13943: { +13943: while (__f != __t) +13943: *__f++ = result_type(0); +13943: return; +13943: } +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: while (__f != __t) +13943: { +13943: const double __p = __aurng(); +13943: auto __pos = std::lower_bound(__param._M_cp.begin(), +13943: __param._M_cp.end(), __p); +13943: +13943: *__f++ = __pos - __param._M_cp.begin(); +13943: } +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const discrete_distribution<_IntType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits::max_digits10); +13943: +13943: std::vector __prob = __x.probabilities(); +13943: __os << __prob.size(); +13943: for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit) +13943: __os << __space << *__dit; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: namespace __detail +13943: { +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: __extract_params(basic_istream<_CharT, _Traits>& __is, +13943: vector<_ValT>& __vals, size_t __n) +13943: { +13943: __vals.reserve(__n); +13943: while (__n--) +13943: { +13943: _ValT __val; +13943: if (__is >> __val) +13943: __vals.push_back(__val); +13943: else +13943: break; +13943: } +13943: return __is; +13943: } +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: discrete_distribution<_IntType>& __x) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: size_t __n; +13943: if (__is >> __n) +13943: { +13943: std::vector __prob_vec; +13943: if (__detail::__extract_params(__is, __prob_vec, __n)) +13943: __x.param({__prob_vec.begin(), __prob_vec.end()}); +13943: } +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: void +13943: piecewise_constant_distribution<_RealType>::param_type:: +13943: _M_initialize() +13943: { +13943: if (_M_int.size() < 2 +13943: || (_M_int.size() == 2 +13943: && _M_int[0] == _RealType(0) +13943: && _M_int[1] == _RealType(1))) +13943: { +13943: _M_int.clear(); +13943: _M_den.clear(); +13943: return; +13943: } +13943: +13943: const double __sum = std::accumulate(_M_den.begin(), +13943: _M_den.end(), 0.0); +13943: do { if (std::__is_constant_evaluated() && !bool(__sum > 0)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), +13943: __sum); +13943: +13943: _M_cp.reserve(_M_den.size()); +13943: std::partial_sum(_M_den.begin(), _M_den.end(), +13943: std::back_inserter(_M_cp)); +13943: +13943: +13943: _M_cp[_M_cp.size() - 1] = 1.0; +13943: +13943: for (size_t __k = 0; __k < _M_den.size(); ++__k) +13943: _M_den[__k] /= _M_int[__k + 1] - _M_int[__k]; +13943: } +13943: +13943: template +13943: template +13943: piecewise_constant_distribution<_RealType>::param_type:: +13943: param_type(_InputIteratorB __bbegin, +13943: _InputIteratorB __bend, +13943: _InputIteratorW __wbegin) +13943: : _M_int(), _M_den(), _M_cp() +13943: { +13943: if (__bbegin != __bend) +13943: [ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o + { +13943: for (;;) +13943: { +13943: _M_int.push_back(*__bbegin); +13943: ++__bbegin; +13943: if (__bbegin == __bend) +13943: break; +13943: +13943: _M_den.push_back(*__wbegin); +13943: ++__wbegin; +13943: } +13943: } +13943: +13943: _M_initialize(); +13943: } +13943: +13943: template +13943: template +13943: piecewise_constant_distribution<_RealType>::param_type:: +13943: param_type(initializer_list<_RealType> __bl, _Func __fw) +13943: : _M_int(), _M_den(), _M_cp() +13943: { +13943: _M_int.reserve(__bl.size()); +13943: for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) +13943: _M_int.push_back(*__biter); +13943: +13943: _M_den.reserve(_M_int.size() - 1); +13943: for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) +13943: _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k]))); +13943: +13943: _M_initialize(); +13943: } +13943: +13943: template +13943: template +13943: piecewise_constant_distribution<_RealType>::param_type:: +13943: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) +13943: : _M_int(), _M_den(), _M_cp() +13943: { +13943: const size_t __n = __nw == 0 ? 1 : __nw; +13943: const _RealType __delta = (__xmax - __xmin) / __n; +13943: +13943: _M_int.reserve(__n + 1); +13943: for (size_t __k = 0; __k <= __nw; ++__k) +13943: _M_int.push_back(__xmin + __k * __delta); +13943: +13943: _M_den.reserve(__n); +13943: for (size_t __k = 0; __k < __nw; ++__k) +13943: _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta)); +13943: +13943: _M_initialize(); +13943: } +13943: +13943: template +13943: template +13943: typename piecewise_constant_distribution<_RealType>::result_type +13943: piecewise_constant_distribution<_RealType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: const double __p = __aurng(); +13943: if (__param._M_cp.empty()) +13943: return __p; +13943: +13943: auto __pos = std::lower_bound(__param._M_cp.begin(), +13943: __param._M_cp.end(), __p); +13943: const size_t __i = __pos - __param._M_cp.begin(); +13943: +13943: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; +13943: +13943: return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i]; +13943: } +13943: +13943: template +13943: template +13943: void +13943: piecewise_constant_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: if (__param._M_cp.empty()) +13943: { +13943: while (__f != __t) +13943: *__f++ = __aurng(); +13943: return; +13943: } +13943: +13943: while (__f != __t) +13943: { +13943: const double __p = __aurng(); +13943: +13943: auto __pos = std::lower_bound(__param._M_cp.begin(), +13943: __param._M_cp.end(), __p); +13943: const size_t __i = __pos - __param._M_cp.begin(); +13943: +13943: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; +13943: +13943: *__f++ = (__param._M_int[__i] +13943: + (__p - __pref) / __param._M_den[__i]); +13943: } +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const piecewise_constant_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: std::vector<_RealType> __int = __x.intervals(); +13943: __os << __int.size() - 1; +13943: +13943: for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) +13943: __os << __space << *__xit; +13943: +13943: std::vector __den = __x.densities(); +13943: for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) +13943: __os << __space << *__dit; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: piecewise_constant_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: size_t __n; +13943: if (__is >> __n) +13943: { +13943: std::vector<_RealType> __int_vec; +13943: if (__detail::__extract_params(__is, __int_vec, __n + 1)) +13943: { +13943: std::vector __den_vec; +13943: if (__detail::__extract_params(__is, __den_vec, __n)) +13943: { +13943: __x.param({ __int_vec.begin(), __int_vec.end(), +13943: __den_vec.begin() }); +13943: } +13943: } +13943: } +13943: +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: void +13943: piecewise_linear_distribution<_RealType>::param_type:: +13943: _M_initialize() +13943: { +13943: if (_M_int.size() < 2 +13943: || (_M_int.size() == 2 +13943: && _M_int[0] == _RealType(0) +13943: && _M_int[1] == _RealType(1) +13943: && _M_den[0] == _M_den[1])) +13943: { +13943: _M_int.clear(); +13943: _M_den.clear(); +13943: return; +13943: } +13943: +13943: double __sum = 0.0; +13943: _M_cp.reserve(_M_int.size() - 1); +13943: _M_m.reserve(_M_int.size() - 1); +13943: for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) +13943: { +13943: const _RealType __delta = _M_int[__k + 1] - _M_int[__k]; +13943: __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta; +13943: _M_cp.push_back(__sum); +13943: _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta); +13943: } +13943: do { if (std::__is_constant_evaluated() && !bool(__sum > 0)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: +13943: __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), +13943: __sum); +13943: +13943: __detail::__normalize(_M_cp.begin(), _M_cp.end(), _M_cp.begin(), __sum); +13943: +13943: __detail::__normalize(_M_m.begin(), _M_m.end(), _M_m.begin(), __sum); +13943: +13943: +13943: _M_cp[_M_cp.size() - 1] = 1.0; +13943: } +13943: +13943: template +13943: template +13943: piecewise_linear_distribution<_RealType>::param_type:: +13943: param_type(_InputIteratorB __bbegin, +13943: _InputIteratorB __bend, +13943: _InputIteratorW __wbegin) +13943: : _M_int(), _M_den(), _M_cp(), _M_m() +13943: { +13943: for (; __bbegin != __bend; ++__bbegin, ++__wbegin) +13943: { +13943: _M_int.push_back(*__bbegin); +13943: _M_den.push_back(*__wbegin); +13943: } +13943: +13943: _M_initialize(); +13943: } +13943: +13943: template +13943: template +13943: piecewise_linear_distribution<_RealType>::param_type:: +13943: param_type(initializer_list<_RealType> __bl, _Func __fw) +13943: : _M_int(), _M_den(), _M_cp(), _M_m() +13943: { +13943: _M_int.reserve(__bl.size()); +13943: _M_den.reserve(__bl.size()); +13943: for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) +13943: { +13943: _M_int.push_back(*__biter); +13943: _M_den.push_back(__fw(*__biter)); +13943: } +13943: +13943: _M_initialize(); +13943: } +13943: +13943: template +13943: template +13943: piecewise_linear_distribution<_RealType>::param_type:: +13943: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) +13943: : _M_int(), _M_den(), _M_cp(), _M_m() +13943: { +13943: const size_t __n = __nw == 0 ? 1 : __nw; +13943: const _RealType __delta = (__xmax - __xmin) / __n; +13943: +13943: _M_int.reserve(__n + 1); +13943: _M_den.reserve(__n + 1); +13943: for (size_t __k = 0; __k <= __nw; ++__k) +13943: { +13943: _M_int.push_back(__xmin + __k * __delta); +13943: _M_den.push_back(__fw(_M_int[__k] + __delta)); +13943: } +13943: +13943: _M_initialize(); +13943: } +13943: +13943: template +13943: template +13943: typename piecewise_linear_distribution<_RealType>::result_type +13943: piecewise_linear_distribution<_RealType>:: +13943: operator()(_UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +13943: __aurng(__urng); +13943: +13943: const double __p = __aurng(); +13943: if (__param._M_cp.empty()) +13943: return __p; +13943: +13943: auto __pos = std::lower_bound(__param._M_cp.begin(), +13943: __param._M_cp.end(), __p); +13943: const size_t __i = __pos - __param._M_cp.begin(); +13943: +13943: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; +13943: +13943: const double __a = 0.5 * __param._M_m[__i]; +13943: const double __b = __param._M_den[__i]; +13943: const double __cm = __p - __pref; +13943: +13943: _RealType __x = __param._M_int[__i]; +13943: if (__a == 0) +13943: __x += __cm / __b; +13943: else +13943: { +13943: const double __d = __b * __b + 4.0 * __a * __cm; +13943: __x += 0.5 * (std::sqrt(__d) - __b) / __a; +13943: } +13943: +13943: return __x; +13943: } +13943: +13943: template +13943: template +13943: void +13943: piecewise_linear_distribution<_RealType>:: +13943: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +13943: _UniformRandomNumberGenerator& __urng, +13943: const param_type& __param) +13943: { +13943: +13943: +13943: while (__f != __t) +13943: *__f++ = this->operator()(__urng, __param); +13943: } +13943: +13943: template +13943: std::basic_ostream<_CharT, _Traits>& +13943: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +13943: const piecewise_linear_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __os.flags(); +13943: const _CharT __fill = __os.fill(); +13943: const std::streamsize __precision = __os.precision(); +13943: const _CharT __space = __os.widen(' '); +13943: __os.flags(__ios_base::scientific | __ios_base::left); +13943: __os.fill(__space); +13943: __os.precision(std::numeric_limits<_RealType>::max_digits10); +13943: +13943: std::vector<_RealType> __int = __x.intervals(); +13943: __os << __int.size() - 1; +13943: +13943: for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) +13943: __os << __space << *__xit; +13943: +13943: std::vector __den = __x.densities(); +13943: for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) +13943: __os << __space << *__dit; +13943: +13943: __os.flags(__flags); +13943: __os.fill(__fill); +13943: __os.precision(__precision); +13943: return __os; +13943: } +13943: +13943: template +13943: std::basic_istream<_CharT, _Traits>& +13943: operator>>(std::basic_istream<_CharT, _Traits>& __is, +13943: piecewise_linear_distribution<_RealType>& __x) +13943: { +13943: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +13943: +13943: const typename __ios_base::fmtflags __flags = __is.flags(); +13943: __is.flags(__ios_base::dec | __ios_base::skipws); +13943: +13943: size_t __n; +13943: if (__is >> __n) +13943: { +13943: vector<_RealType> __int_vec; +13943: if (__detail::__extract_params(__is, __int_vec, __n + 1)) +13943: { +13943: vector __den_vec; +13943: if (__detail::__extract_params(__is, __den_vec, __n + 1)) +13943: { +13943: __x.param({ __int_vec.begin(), __int_vec.end(), +13943: __den_vec.begin() }); +13943: } +13943: } +13943: } +13943: __is.flags(__flags); +13943: return __is; +13943: } +13943: +13943: +13943: template +13943: seed_seq::seed_seq(std::initializer_list<_IntType> __il) +13943: { +13943: _M_v.reserve(__il.size()); +13943: for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) +13943: _M_v.push_back(__detail::__mod::__value>(*__iter)); +13943: } +13943: +13943: template +13943: seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) +13943: { +13943: if constexpr (__is_random_access_iter<_InputIterator>::value) +13943: _M_v.reserve(std::distance(__begin, __end)); +13943: +13943: for (_InputIterator __iter = __begin; __iter != __end; ++__iter) +13943: _M_v.push_back(__detail::__mod::__value>(*__iter)); +13943: } +13943: +13943: template +13943: void +13943: seed_seq::generate(_RandomAccessIterator __begin, +13943: _RandomAccessIterator __end) +13943: { +13943: typedef typename iterator_traits<_RandomAccessIterator>::value_type +13943: _Type; +13943: +13943: if (__begin == __end) +13943: return; +13943: +13943: std::fill(__begin, __end, _Type(0x8b8b8b8bu)); +13943: +13943: const size_t __n = __end - __begin; +13943: const size_t __s = _M_v.size(); +13943: const size_t __t = (__n >= 623) ? 11 +13943: : (__n >= 68) ? 7 +13943: : (__n >= 39) ? 5 +13943: : (__n >= 7) ? 3 +13943: : (__n - 1) / 2; +13943: const size_t __p = (__n - __t) / 2; +13943: const size_t __q = __p + __t; +13943: const size_t __m = std::max(size_t(__s + 1), __n); +13943: # 3292 "/usr/include/c++/14/bits/random.tcc" 3 +13943: { +13943: uint32_t __r1 = 1371501266u; +13943: uint32_t __r2 = __r1 + __s; +13943: __begin[__p] += __r1; +13943: __begin[__q] = (uint32_t)__begin[__q] + __r2; +13943: __begin[0] = __r2; +13943: } +13943: +13943: for (size_t __k = 1; __k <= __s; ++__k) +13943: { +13943: const size_t __kn = __k % __n; +13943: const size_t __kpn = (__k + __p) % __n; +13943: const size_t __kqn = (__k + __q) % __n; +13943: uint32_t __arg = (__begin[__kn] +13943: ^ __begin[__kpn] +13943: ^ __begin[(__k - 1) % __n]); +13943: uint32_t __r1 = 1664525u * (__arg ^ (__arg >> 27)); +13943: uint32_t __r2 = __r1 + (uint32_t)__kn + _M_v[__k - 1]; +13943: __begin[__kpn] = (uint32_t)__begin[__kpn] + __r1; +13943: __begin[__kqn] = (uint32_t)__begin[__kqn] + __r2; +13943: __begin[__kn] = __r2; +13943: } +13943: +13943: for (size_t __k = __s + 1; __k < __m; ++__k) +13943: { +13943: const size_t __kn = __k % __n; +13943: const size_t __kpn = (__k + __p) % __n; +13943: const size_t __kqn = (__k + __q) % __n; +13943: uint32_t __arg = (__begin[__kn] +13943: ^ __begin[__kpn] +13943: ^ __begin[(__k - 1) % __n]); +13943: uint32_t __r1 = 1664525u * (__arg ^ (__arg >> 27)); +13943: uint32_t __r2 = __r1 + (uint32_t)__kn; +13943: __begin[__kpn] = (uint32_t)__begin[__kpn] + __r1; +13943: __begin[__kqn] = (uint32_t)__begin[__kqn] + __r2; +13943: __begin[__kn] = __r2; +13943: } +13943: +13943: for (size_t __k = __m; __k < __m + __n; ++__k) +13943: { +13943: const size_t __kn = __k % __n; +13943: const size_t __kpn = (__k + __p) % __n; +13943: const size_t __kqn = (__k + __q) % __n; +13943: uint32_t __arg = (__begin[__kn] +13943: + __begin[__kpn] +13943: + __begin[(__k - 1) % __n]); +13943: uint32_t __r3 = 1566083941u * (__arg ^ (__arg >> 27)); +13943: uint32_t __r4 = __r3 - __kn; +13943: __begin[__kpn] ^= __r3; +13943: __begin[__kqn] ^= __r4; +13943: __begin[__kn] = __r4; +13943: } +13943: } +13943: +13943: template +13943: _RealType +13943: generate_canonical(_UniformRandomNumberGenerator& __urng) +13943: { +13943: static_assert(std::is_floating_point<_RealType>::value, +13943: "template argument must be a floating point type"); +13943: +13943: const size_t __b +13943: = std::min(static_cast(std::numeric_limits<_RealType>::digits), +13943: __bits); +13943: const long double __r = static_cast(__urng.max()) +13943: - static_cast(__urng.min()) + 1.0L; +13943: const size_t __log2r = std::log(__r) / std::log(2.0L); +13943: const size_t __m = std::max(1UL, +13943: (__b + __log2r - 1UL) / __log2r); +13943: _RealType __ret; +13943: _RealType __sum = _RealType(0); +13943: _RealType __tmp = _RealType(1); +13943: for (size_t __k = __m; __k != 0; --__k) +13943: { +13943: __sum += _RealType(__urng() - __urng.min()) * __tmp; +13943: __tmp *= __r; +13943: } +13943: __ret = __sum / __tmp; +13943: if (__builtin_expect(__ret >= _RealType(1), 0)) +13943: { +13943: +13943: __ret = std::nextafter(_RealType(1), _RealType(0)); +13943: +13943: +13943: +13943: +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: } +13943: # 51 "/usr/include/c++/14/random" 2 3 +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" 2 +13943: +13943: +13943: +13943: +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: class Random { +13943: private: +13943: enum : uint32_t { +13943: M = 2147483647L +13943: }; +13943: enum : uint64_t { +13943: A = 16807 +13943: }; +13943: +13943: uint32_t seed_; +13943: +13943: static uint32_t GoodSeed(uint32_t s) { return (s & M) != 0 ? (s & M) : 1; } +13943: +13943: public: +13943: +13943: enum : uint32_t { kMaxNext = M }; +13943: +13943: explicit Random(uint32_t s) : seed_(GoodSeed(s)) {} +13943: +13943: void Reset(uint32_t s) { seed_ = GoodSeed(s); } +13943: +13943: uint32_t Next() { +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t product = seed_ * A; +13943: +13943: +13943: seed_ = static_cast((product >> 31) + (product & M)); +13943: +13943: +13943: +13943: if (seed_ > M) { +13943: seed_ -= M; +13943: } +13943: return seed_; +13943: } +13943: +13943: uint64_t Next64() { return (uint64_t{Next()} << 32) | Next(); } +13943: +13943: +13943: +13943: uint32_t Uniform(int n) { return Next() % n; } +13943: +13943: +13943: +13943: bool OneIn(int n) { return Uniform(n) == 0; } +13943: +13943: +13943: +13943: bool OneInOpt(int n) { return n > 0 && OneIn(n); } +13943: +13943: +13943: +13943: +13943: bool PercentTrue(int percentage) { +13943: return static_cast(Uniform(100)) < percentage; +13943: } +13943: +13943: +13943: +13943: +13943: uint32_t Skewed(int max_log) { return Uniform(1 << Uniform(max_log + 1)); } +13943: +13943: +13943: std::string RandomString(int len); +13943: +13943: +13943: std::string HumanReadableString(int len); +13943: +13943: +13943: std::string RandomBinaryString(int len); +13943: +13943: +13943: +13943: static Random* GetTLSInstance(); +13943: }; +13943: +13943: +13943: +13943: +13943: class Random32 { +13943: private: +13943: std::mt19937 generator_; +13943: +13943: public: +13943: explicit Random32(uint32_t s) : generator_(s) {} +13943: +13943: +13943: uint32_t Next() { return static_cast(generator_()); } +13943: +13943: +13943: +13943: uint32_t Uniform(uint32_t n) { +13943: return static_cast( +13943: std::uniform_int_distribution( +13943: 0, n - 1)(generator_)); +13943: } +13943: +13943: +13943: +13943: +13943: uint32_t Uniformish(uint32_t n) { +13943: +13943: return static_cast((uint64_t(generator_()) * uint64_t(n)) >> 32); +13943: } +13943: +13943: +13943: +13943: bool OneIn(uint32_t n) { return Uniform(n) == 0; } +13943: +13943: +13943: +13943: +13943: uint32_t Skewed(int max_log) { +13943: return Uniform(uint32_t{1} << Uniform(max_log + 1)); +13943: } +13943: +13943: +13943: void Seed(uint32_t new_seed) { generator_.seed(new_seed); } +13943: }; +13943: +13943: +13943: class Random64 { +13943: private: +13943: std::mt19937_64 generator_; +13943: +13943: public: +13943: explicit Random64(uint64_t s) : generator_(s) {} +13943: +13943: +13943: uint64_t Next() { return generator_(); } +13943: +13943: +13943: +13943: uint64_t Uniform(uint64_t n) { +13943: return std::uniform_int_distribution(0, n - 1)(generator_); +13943: } +13943: +13943: +13943: +13943: bool OneIn(uint64_t n) { return Uniform(n) == 0; } +13943: +13943: +13943: +13943: +13943: uint64_t Skewed(int max_log) { +13943: return Uniform(uint64_t(1) << Uniform(max_log + 1)); +13943: } +13943: }; +13943: +13943: +13943: template +13943: void RandomShuffle(RandomIt first, RandomIt last, uint32_t seed) { +13943: std::mt19937 rng(seed); +13943: std::shuffle(first, last, rng); +13943: } +13943: +13943: +13943: template +13943: void RandomShuffle(RandomIt first, RandomIt last) { +13943: RandomShuffle(first, last, std::random_device{}()); +13943: } +13943: +13943: } +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: template +13943: class CoreLocalArray { +13943: public: +13943: CoreLocalArray(); +13943: +13943: size_t Size() const; +13943: +13943: +13943: T* Access() const; +13943: +13943: +13943: +13943: std::pair AccessElementAndIndex() const; +13943: +13943: +13943: T* AccessAtCore(size_t core_idx) const; +13943: +13943: private: +13943: std::unique_ptr data_; +13943: int size_shift_; +13943: }; +13943: +13943: template +13943: CoreLocalArray::CoreLocalArray() { +13943: int num_cpus = static_cast(std::thread::hardware_concurrency()); +13943: +13943: size_shift_ = 3; +13943: while (1 << size_shift_ < num_cpus) { +13943: ++size_shift_; +13943: } +13943: data_.reset(new T[static_cast(1) << size_shift_]); +13943: } +13943: +13943: template +13943: size_t CoreLocalArray::Size() const { +13943: return static_cast(1) << size_shift_; +13943: } +13943: +13943: template +13943: T* CoreLocalArray::Access() const { +13943: return AccessElementAndIndex().first; +13943: } +13943: +13943: template +13943: std::pair CoreLocalArray::AccessElementAndIndex() const { +13943: int cpuid = port::PhysicalCoreID(); +13943: size_t core_idx; +13943: if ((__builtin_expect((cpuid < 0), 0))) { +13943: +13943: core_idx = Random::GetTLSInstance()->Uniform(1 << size_shift_); +13943: } else { +13943: core_idx = static_cast(BottomNBits(cpuid, size_shift_)); +13943: } +13943: return {AccessAtCore(core_idx), core_idx}; +13943: } +13943: +13943: template +13943: T* CoreLocalArray::AccessAtCore(size_t core_idx) const { +13943: +13943: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 3 4 +13943: (static_cast ( +13943: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" +13943: core_idx < static_cast(1) << size_shift_ +13943: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" +13943: "core_idx < static_cast(1) << size_shift_" +13943: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" +13943: ; +13943: return &data_[core_idx]; +13943: } +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 2 +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" 1 +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +13943: +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +13943: namespace rocksdb { +13943: +13943: namespace detail { +13943: +13943: +13943: template +13943: struct FastRangeGenericImpl { +13943: +13943: }; +13943: +13943: template +13943: struct FastRangeGenericImpl { +13943: static inline Range Fn(uint32_t hash, Range range) { +13943: static_assert(std::is_unsigned::value, "must be unsigned"); +13943: static_assert(sizeof(Range) <= sizeof(uint32_t), +13943: "cannot be larger than hash (32 bits)"); +13943: +13943: uint64_t product = uint64_t{range} * hash; +13943: return static_cast(product >> 32); +13943: } +13943: }; +13943: +13943: template +13943: struct FastRangeGenericImpl { +13943: static inline Range Fn(uint64_t hash, Range range) { +13943: static_assert(std::is_unsigned::value, "must be unsigned"); +13943: static_assert(sizeof(Range) <= sizeof(uint64_t), +13943: "cannot be larger than hash (64 bits)"); +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +13943: uint64_t range64 = range; +13943: uint64_t tmp = uint64_t{range64 & 0xffffFFFF} * uint64_t{hash & 0xffffFFFF}; +13943: tmp >>= 32; +13943: tmp += uint64_t{range64 & 0xffffFFFF} * uint64_t{hash >> 32}; +13943: +13943: uint64_t tmp2 = uint64_t{range64 >> 32} * uint64_t{hash & 0xffffFFFF}; +13943: tmp += static_cast(tmp2); +13943: tmp >>= 32; +13943: tmp += (tmp2 >> 32); +13943: tmp += uint64_t{range64 >> 32} * uint64_t{hash >> 32}; +13943: return static_cast(tmp); +13943: +13943: } +13943: }; +13943: +13943: } +13943: # 96 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +13943: template +13943: inline Range FastRangeGeneric(Hash hash, Range range) { +13943: return detail::FastRangeGenericImpl::Fn(hash, range); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: inline size_t FastRange64(uint64_t hash, size_t range) { +13943: return FastRangeGeneric(hash, range); +13943: } +13943: +13943: +13943: inline uint32_t FastRange32(uint32_t hash, uint32_t range) { +13943: return FastRangeGeneric(hash, range); +13943: } +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/hash.h" 1 +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/hash.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: uint64_t Hash64(const char* data, size_t n, uint64_t seed); +13943: +13943: +13943: uint64_t Hash64(const char* data, size_t n); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline uint64_t NPHash64(const char* data, size_t n, uint64_t seed) { +13943: +13943: +13943: +13943: +13943: +13943: return Hash64(data, n, seed); +13943: +13943: } +13943: +13943: +13943: inline uint64_t NPHash64(const char* data, size_t n) { +13943: +13943: +13943: +13943: +13943: +13943: return Hash64(data, n); +13943: +13943: } +13943: +13943: +13943: +13943: void Hash2x64(const char* data, size_t n, uint64_t* high64, uint64_t* low64); +13943: void Hash2x64(const char* data, size_t n, uint64_t seed, uint64_t* high64, +13943: uint64_t* low64); +13943: +13943: +13943: +13943: void BijectiveHash2x64(uint64_t in_high64, uint64_t in_low64, +13943: uint64_t* out_high64, uint64_t* out_low64); +13943: void BijectiveHash2x64(uint64_t in_high64, uint64_t in_low64, uint64_t seed, +13943: uint64_t* out_high64, uint64_t* out_low64); +13943: +13943: +13943: void BijectiveUnhash2x64(uint64_t in_high64, uint64_t in_low64, +13943: uint64_t* out_high64, uint64_t* out_low64); +13943: void BijectiveUnhash2x64(uint64_t in_high64, uint64_t in_low64, uint64_t seed, +13943: uint64_t* out_high64, uint64_t* out_low64); +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint32_t Hash(const char* data, size_t n, uint32_t seed); +13943: +13943: +13943: inline uint32_t BloomHash(const Slice& key) { +13943: return Hash(key.data(), key.size(), 0xbc9f1d34); +13943: } +13943: +13943: inline uint64_t GetSliceHash64(const Slice& key) { +13943: return Hash64(key.data(), key.size()); +13943: } +13943: +13943: +13943: extern uint64_t (*kGetSliceNPHash64UnseededFnPtr)(const Slice&); +13943: +13943: inline uint64_t GetSliceNPHash64(const Slice& s) { +13943: return NPHash64(s.data(), s.size()); +13943: } +13943: +13943: inline uint64_t GetSliceNPHash64(const Slice& s, uint64_t seed) { +13943: return NPHash64(s.data(), s.size(), seed); +13943: } +13943: +13943: +13943: +13943: uint64_t GetSlicePartsNPHash64(const SliceParts& data, uint64_t seed); +13943: +13943: inline size_t GetSliceRangedNPHash(const Slice& s, size_t range) { +13943: return FastRange64(NPHash64(s.data(), s.size()), range); +13943: } +13943: +13943: +13943: inline uint32_t GetSliceHash(const Slice& s) { +13943: return Hash(s.data(), s.size(), 397); +13943: } +13943: +13943: +13943: inline uint32_t Upper32of64(uint64_t v) { +13943: return static_cast(v >> 32); +13943: } +13943: inline uint32_t Lower32of64(uint64_t v) { return static_cast(v); } +13943: +13943: +13943: struct SliceHasher32 { +13943: uint32_t operator()(const Slice& s) const { return GetSliceHash(s); } +13943: }; +13943: struct SliceNPHasher64 { +13943: uint64_t operator()(const Slice& s, uint64_t seed = 0) const { +13943: return GetSliceNPHash64(s, seed); +13943: } +13943: }; +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 2 +13943: +13943: namespace rocksdb { +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +13943: class MutexLock { +13943: public: +13943: explicit MutexLock(port::Mutex *mu) : mu_(mu) { this->mu_->Lock(); } +13943: +13943: MutexLock(const MutexLock &) = delete; +13943: void operator=(const MutexLock &) = delete; +13943: +13943: ~MutexLock() { this->mu_->Unlock(); } +13943: +13943: private: +13943: port::Mutex *const mu_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class ReadLock { +13943: public: +13943: explicit ReadLock(port::RWMutex *mu) : mu_(mu) { this->mu_->ReadLock(); } +13943: +13943: ReadLock(const ReadLock &) = delete; +13943: void operator=(const ReadLock &) = delete; +13943: +13943: ~ReadLock() { this->mu_->ReadUnlock(); } +13943: +13943: private: +13943: port::RWMutex *const mu_; +13943: }; +13943: +13943: +13943: +13943: +13943: class ReadUnlock { +13943: public: +13943: explicit ReadUnlock(port::RWMutex *mu) : mu_(mu) { mu->AssertHeld(); } +13943: +13943: ReadUnlock(const ReadUnlock &) = delete; +13943: ReadUnlock &operator=(const ReadUnlock &) = delete; +13943: +13943: ~ReadUnlock() { mu_->ReadUnlock(); } +13943: +13943: private: +13943: port::RWMutex *const mu_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class WriteLock { +13943: public: +13943: explicit WriteLock(port::RWMutex *mu) : mu_(mu) { this->mu_->WriteLock(); } +13943: +13943: WriteLock(const WriteLock &) = delete; +13943: void operator=(const WriteLock &) = delete; +13943: +13943: ~WriteLock() { this->mu_->WriteUnlock(); } +13943: +13943: private: +13943: port::RWMutex *const mu_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: class SpinMutex { +13943: public: +13943: SpinMutex() : locked_(false) {} +13943: +13943: bool try_lock() { +13943: auto currently_locked = locked_.load(std::memory_order_relaxed); +13943: return !currently_locked && +13943: locked_.compare_exchange_weak(currently_locked, true, +13943: std::memory_order_acquire, +13943: std::memory_order_relaxed); +13943: } +13943: +13943: void lock() { +13943: for (size_t tries = 0;; ++tries) { +13943: if (try_lock()) { +13943: +13943: break; +13943: } +13943: port::AsmVolatilePause(); +13943: if (tries > 100) { +13943: std::this_thread::yield(); +13943: } +13943: } +13943: } +13943: +13943: void unlock() { locked_.store(false, std::memory_order_release); } +13943: +13943: private: +13943: std::atomic locked_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct alignas(64U) CacheAlignedWrapper { +13943: T obj_; +13943: }; +13943: template +13943: struct Unwrap { +13943: using type = T; +13943: static type &Go(T &t) { return t; } +13943: }; +13943: template +13943: struct Unwrap> { +13943: using type = T; +13943: static type &Go(CacheAlignedWrapper &t) { return t.obj_; } +13943: }; +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +13943: template +13943: class Striped { +13943: public: +13943: explicit Striped(size_t stripe_count) +13943: : stripe_count_(stripe_count), data_(new T[stripe_count]) {} +13943: +13943: using Unwrapped = typename Unwrap::type; +13943: Unwrapped &Get(const Key &key, uint64_t seed = 0) { +13943: size_t index = FastRangeGeneric(hash_(key, seed), stripe_count_); +13943: return Unwrap::Go(data_[index]); +13943: } +13943: +13943: size_t ApproximateMemoryUsage() const { +13943: +13943: +13943: return sizeof(*this) + stripe_count_ * sizeof(T); +13943: } +13943: +13943: private: +13943: size_t stripe_count_; +13943: std::unique_ptr data_; +13943: Hash hash_; +13943: }; +13943: +13943: } +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" +13943: namespace rocksdb { +13943: +13943: enum TickersInternal : uint32_t { +13943: INTERNAL_TICKER_ENUM_START = TICKER_ENUM_MAX, +13943: INTERNAL_TICKER_ENUM_MAX +13943: }; +13943: +13943: enum HistogramsInternal : uint32_t { +13943: INTERNAL_HISTOGRAM_START = HISTOGRAM_ENUM_MAX, +13943: INTERNAL_HISTOGRAM_ENUM_MAX +13943: }; +13943: +13943: class StatisticsImpl : public Statistics { +13943: public: +13943: StatisticsImpl(std::shared_ptr stats); +13943: virtual ~StatisticsImpl(); +13943: const char* Name() const override { return kClassName(); } +13943: static const char* kClassName() { return "BasicStatistics"; } +13943: +13943: uint64_t getTickerCount(uint32_t ticker_type) const override; +13943: void histogramData(uint32_t histogram_type, +13943: HistogramData* const data) const override; +13943: std::string getHistogramString(uint32_t histogram_type) const override; +13943: +13943: void setTickerCount(uint32_t ticker_type, uint64_t count) override; +13943: uint64_t getAndResetTickerCount(uint32_t ticker_type) override; +13943: void recordTick(uint32_t ticker_type, uint64_t count) override; +13943: +13943: +13943: +13943: +13943: void measureTime(uint32_t histogramType, uint64_t time) override { +13943: recordInHistogram(histogramType, time); +13943: } +13943: void recordInHistogram(uint32_t histogram_type, uint64_t value) override; +13943: +13943: Status Reset() override; +13943: std::string ToString() const override; +13943: bool getTickerMap(std::map*) const override; +13943: bool HistEnabledForType(uint32_t type) const override; +13943: +13943: const Customizable* Inner() const override { return stats_.get(); } +13943: +13943: private: +13943: +13943: std::shared_ptr stats_; +13943: +13943: +13943: mutable port::Mutex aggregate_lock_; +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct alignas(64U) StatisticsData { +13943: std::atomic_uint_fast64_t tickers_[INTERNAL_TICKER_ENUM_MAX] = {{0}}; +13943: HistogramImpl histograms_[INTERNAL_HISTOGRAM_ENUM_MAX]; +13943: +13943: char +13943: padding[(64U - +13943: (INTERNAL_TICKER_ENUM_MAX * sizeof(std::atomic_uint_fast64_t) + +13943: INTERNAL_HISTOGRAM_ENUM_MAX * sizeof(HistogramImpl)) % +13943: 64U)] ; +13943: +13943: void* operator new(size_t s) { return port::cacheline_aligned_alloc(s); } +13943: void* operator new[](size_t s) { return port::cacheline_aligned_alloc(s); } +13943: void operator delete(void* p) { port::cacheline_aligned_free(p); } +13943: void operator delete[](void* p) { port::cacheline_aligned_free(p); } +13943: }; +13943: +13943: +13943: static_assert(sizeof(StatisticsData) % 64U == 0, +13943: "Expected " "64U" "-byte aligned"); +13943: +13943: +13943: CoreLocalArray per_core_stats_; +13943: +13943: uint64_t getTickerCountLocked(uint32_t ticker_type) const; +13943: std::unique_ptr getHistogramImplLocked( +13943: uint32_t histogram_type) const; +13943: void setTickerCountLocked(uint32_t ticker_type, uint64_t count); +13943: }; +13943: +13943: +13943: inline void RecordInHistogram(Statistics* statistics, uint32_t histogram_type, +13943: uint64_t value) { +13943: if (statistics) { +13943: statistics->recordInHistogram(histogram_type, value); +13943: } +13943: } +13943: +13943: inline void RecordTimeToHistogram(Statistics* statistics, +13943: uint32_t histogram_type, uint64_t value) { +13943: if (statistics) { +13943: statistics->reportTimeToHistogram(histogram_type, value); +13943: } +13943: } +13943: +13943: inline void RecordTick(Statistics* statistics, uint32_t ticker_type, +13943: uint64_t count = 1) { +13943: if (statistics) { +13943: statistics->recordTick(ticker_type, count); +13943: } +13943: } +13943: +13943: inline void SetTickerCount(Statistics* statistics, uint32_t ticker_type, +13943: uint64_t count) { +13943: if (statistics) { +13943: statistics->setTickerCount(ticker_type, count); +13943: } +13943: } +13943: +13943: } +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/chrono" 1 3 +13943: # 33 "/usr/include/c++/14/chrono" 3 +13943: +13943: # 34 "/usr/include/c++/14/chrono" 3 +13943: # 55 "/usr/include/c++/14/chrono" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 56 "/usr/include/c++/14/chrono" 2 3 +13943: +13943: +13943: # 57 "/usr/include/c++/14/chrono" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 74 "/usr/include/c++/14/chrono" 3 +13943: namespace chrono +13943: { +13943: # 3328 "/usr/include/c++/14/chrono" 3 +13943: } +13943: # 3356 "/usr/include/c++/14/chrono" 3 +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" 2 +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" +13943: +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" +13943: namespace rocksdb { +13943: struct ConfigOptions; +13943: +13943: +13943: +13943: class SystemClock : public Customizable { +13943: public: +13943: ~SystemClock() override {} +13943: +13943: static const char* Type() { return "SystemClock"; } +13943: static Status CreateFromString(const ConfigOptions& options, +13943: const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: const char* Name() const override = 0; +13943: +13943: +13943: +13943: static const char* kDefaultName() { return "DefaultClock"; } +13943: +13943: +13943: +13943: static const std::shared_ptr& Default(); +13943: +13943: +13943: +13943: +13943: virtual uint64_t NowMicros() = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual uint64_t NowNanos() { return NowMicros() * 1000; } +13943: +13943: +13943: +13943: virtual uint64_t CPUMicros() { return 0; } +13943: +13943: +13943: +13943: +13943: virtual uint64_t CPUNanos() { return CPUMicros() * 1000; } +13943: +13943: +13943: virtual void SleepForMicroseconds(int micros) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool TimedWait(port::CondVar* cv, std::chrono::microseconds deadline); +13943: +13943: +13943: +13943: virtual Status GetCurrentTime(int64_t* unix_time) = 0; +13943: +13943: +13943: virtual std::string TimeToString(uint64_t time) = 0; +13943: }; +13943: +13943: +13943: +13943: class SystemClockWrapper : public SystemClock { +13943: public: +13943: explicit SystemClockWrapper(const std::shared_ptr& t); +13943: +13943: uint64_t NowMicros() override { return target_->NowMicros(); } +13943: +13943: uint64_t NowNanos() override { return target_->NowNanos(); } +13943: +13943: uint64_t CPUMicros() override { return target_->CPUMicros(); } +13943: +13943: uint64_t CPUNanos() override { return target_->CPUNanos(); } +13943: +13943: void SleepForMicroseconds(int micros) override { +13943: return target_->SleepForMicroseconds(micros); +13943: } +13943: +13943: bool TimedWait(port::CondVar* cv, +13943: std::chrono::microseconds deadline) override { +13943: return target_->TimedWait(cv, deadline); +13943: } +13943: +13943: Status GetCurrentTime(int64_t* unix_time) override { +13943: return target_->GetCurrentTime(unix_time); +13943: } +13943: +13943: std::string TimeToString(uint64_t time) override { +13943: return target_->TimeToString(time); +13943: } +13943: +13943: Status PrepareOptions(const ConfigOptions& options) override; +13943: std::string SerializeOptions(const ConfigOptions& config_options, +13943: const std::string& header) const override; +13943: const Customizable* Inner() const override { return target_.get(); } +13943: +13943: protected: +13943: std::shared_ptr target_; +13943: }; +13943: +13943: } +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class PerfStepTimer { +13943: public: +13943: explicit PerfStepTimer( +13943: uint64_t* metric, SystemClock* clock = nullptr, bool use_cpu_time = false, +13943: PerfLevel enable_level = PerfLevel::kEnableTimeExceptForMutex, +13943: Statistics* statistics = nullptr, uint32_t ticker_type = 0) +13943: : perf_counter_enabled_(perf_level >= enable_level), +13943: use_cpu_time_(use_cpu_time), +13943: ticker_type_(ticker_type), +13943: clock_((perf_counter_enabled_ || statistics != nullptr) +13943: ? (clock ? clock : SystemClock::Default().get()) +13943: : nullptr), +13943: start_(0), +13943: metric_(metric), +13943: statistics_(statistics) {} +13943: +13943: ~PerfStepTimer() { Stop(); } +13943: +13943: void Start() { +13943: if (perf_counter_enabled_ || statistics_ != nullptr) { +13943: start_ = time_now(); +13943: } +13943: } +13943: +13943: void Measure() { +13943: if (start_) { +13943: uint64_t now = time_now(); +13943: *metric_ += now - start_; +13943: start_ = now; +13943: } +13943: } +13943: +13943: void Stop() { +13943: if (start_) { +13943: uint64_t duration = time_now() - start_; +13943: if (perf_counter_enabled_) { +13943: *metric_ += duration; +13943: } +13943: +13943: if (statistics_ != nullptr) { +13943: RecordTick(statistics_, ticker_type_, duration); +13943: } +13943: start_ = 0; +13943: } +13943: } +13943: +13943: private: +13943: uint64_t time_now() { +13943: if (!use_cpu_time_) { +13943: return clock_->NowNanos(); +13943: } else { +13943: return clock_->CPUNanos(); +13943: } +13943: } +13943: +13943: const bool perf_counter_enabled_; +13943: const bool use_cpu_time_; +13943: uint32_t ticker_type_; +13943: SystemClock* const clock_; +13943: uint64_t start_; +13943: uint64_t* metric_; +13943: Statistics* statistics_; +13943: }; +13943: +13943: } +13943: # 8 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +13943: namespace rocksdb { +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +13943: struct PerfContextByLevelBase { +13943: +13943: +13943: +13943: uint64_t bloom_filter_useful = 0; +13943: +13943: uint64_t bloom_filter_full_positive = 0; +13943: +13943: +13943: uint64_t bloom_filter_full_true_positive = 0; +13943: +13943: +13943: +13943: uint64_t user_key_return_count = 0; +13943: +13943: +13943: uint64_t get_from_table_nanos = 0; +13943: +13943: uint64_t block_cache_hit_count = 0; +13943: uint64_t block_cache_miss_count = 0; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct PerfContextByLevel : public PerfContextByLevelBase { +13943: void Reset(); +13943: }; +13943: # 67 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +13943: struct PerfContextBase { +13943: uint64_t user_key_comparison_count; +13943: uint64_t block_cache_hit_count; +13943: uint64_t block_read_count; +13943: uint64_t block_read_byte; +13943: uint64_t block_read_time; +13943: +13943: uint64_t block_read_cpu_time; +13943: uint64_t block_cache_index_hit_count; +13943: +13943: uint64_t block_cache_standalone_handle_count; +13943: +13943: +13943: uint64_t block_cache_real_handle_count; +13943: uint64_t index_block_read_count; +13943: uint64_t block_cache_filter_hit_count; +13943: uint64_t filter_block_read_count; +13943: uint64_t compression_dict_block_read_count; +13943: +13943: +13943: uint64_t block_cache_index_read_byte; +13943: uint64_t block_cache_filter_read_byte; +13943: uint64_t block_cache_compression_dict_read_byte; +13943: uint64_t block_cache_read_byte; +13943: +13943: uint64_t secondary_cache_hit_count; +13943: +13943: uint64_t compressed_sec_cache_insert_real_count; +13943: +13943: uint64_t compressed_sec_cache_insert_dummy_count; +13943: +13943: uint64_t compressed_sec_cache_uncompressed_bytes; +13943: +13943: uint64_t compressed_sec_cache_compressed_bytes; +13943: +13943: uint64_t block_checksum_time; +13943: uint64_t block_decompress_time; +13943: +13943: uint64_t get_read_bytes; +13943: uint64_t multiget_read_bytes; +13943: uint64_t iter_read_bytes; +13943: +13943: uint64_t blob_cache_hit_count; +13943: uint64_t blob_read_count; +13943: uint64_t blob_read_byte; +13943: uint64_t blob_read_time; +13943: uint64_t blob_checksum_time; +13943: uint64_t blob_decompress_time; +13943: # 133 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +13943: uint64_t internal_key_skipped_count; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t internal_delete_skipped_count; +13943: +13943: +13943: +13943: uint64_t internal_recent_skipped_count; +13943: +13943: +13943: +13943: uint64_t internal_merge_count; +13943: +13943: +13943: +13943: uint64_t internal_merge_point_lookup_count; +13943: +13943: +13943: +13943: uint64_t internal_range_del_reseek_count; +13943: +13943: uint64_t get_snapshot_time; +13943: uint64_t get_from_memtable_time; +13943: uint64_t get_from_memtable_count; +13943: +13943: uint64_t get_post_process_time; +13943: uint64_t get_from_output_files_time; +13943: +13943: uint64_t seek_on_memtable_time; +13943: +13943: +13943: uint64_t seek_on_memtable_count; +13943: +13943: uint64_t next_on_memtable_count; +13943: +13943: uint64_t prev_on_memtable_count; +13943: +13943: uint64_t seek_child_seek_time; +13943: +13943: uint64_t seek_child_seek_count; +13943: uint64_t seek_min_heap_time; +13943: uint64_t seek_max_heap_time; +13943: +13943: uint64_t seek_internal_seek_time; +13943: +13943: uint64_t find_next_user_entry_time; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t write_wal_time; +13943: +13943: uint64_t write_memtable_time; +13943: +13943: uint64_t write_delay_time; +13943: +13943: +13943: uint64_t write_scheduling_flushes_compactions_time; +13943: +13943: uint64_t write_pre_and_post_process_time; +13943: +13943: +13943: uint64_t write_thread_wait_nanos; +13943: +13943: +13943: uint64_t db_mutex_lock_nanos; +13943: +13943: uint64_t db_condition_wait_nanos; +13943: +13943: uint64_t merge_operator_time_nanos; +13943: +13943: +13943: uint64_t read_index_block_nanos; +13943: +13943: uint64_t read_filter_block_nanos; +13943: +13943: uint64_t new_table_block_iter_nanos; +13943: +13943: uint64_t new_table_iterator_nanos; +13943: +13943: uint64_t block_seek_nanos; +13943: +13943: uint64_t find_table_nanos; +13943: +13943: uint64_t bloom_memtable_hit_count; +13943: +13943: uint64_t bloom_memtable_miss_count; +13943: +13943: uint64_t bloom_sst_hit_count; +13943: +13943: uint64_t bloom_sst_miss_count; +13943: +13943: +13943: uint64_t key_lock_wait_time; +13943: +13943: uint64_t key_lock_wait_count; +13943: +13943: +13943: +13943: uint64_t env_new_sequential_file_nanos; +13943: uint64_t env_new_random_access_file_nanos; +13943: uint64_t env_new_writable_file_nanos; +13943: uint64_t env_reuse_writable_file_nanos; +13943: uint64_t env_new_random_rw_file_nanos; +13943: uint64_t env_new_directory_nanos; +13943: uint64_t env_file_exists_nanos; +13943: uint64_t env_get_children_nanos; +13943: uint64_t env_get_children_file_attributes_nanos; +13943: uint64_t env_delete_file_nanos; +13943: uint64_t env_create_dir_nanos; +13943: uint64_t env_create_dir_if_missing_nanos; +13943: uint64_t env_delete_dir_nanos; +13943: uint64_t env_get_file_size_nanos; +13943: uint64_t env_get_file_modification_time_nanos; +13943: uint64_t env_rename_file_nanos; +13943: uint64_t env_link_file_nanos; +13943: uint64_t env_lock_file_nanos; +13943: uint64_t env_unlock_file_nanos; +13943: uint64_t env_new_logger_nanos; +13943: +13943: uint64_t get_cpu_nanos; +13943: uint64_t iter_next_cpu_nanos; +13943: uint64_t iter_prev_cpu_nanos; +13943: uint64_t iter_seek_cpu_nanos; +13943: +13943: +13943: +13943: +13943: uint64_t iter_next_count; +13943: uint64_t iter_prev_count; +13943: uint64_t iter_seek_count; +13943: +13943: +13943: uint64_t encrypt_data_nanos; +13943: +13943: uint64_t decrypt_data_nanos; +13943: +13943: uint64_t number_async_seek; +13943: }; +13943: +13943: struct PerfContext : public PerfContextBase { +13943: ~PerfContext(); +13943: +13943: PerfContext() { Reset(); } +13943: +13943: PerfContext(const PerfContext&); +13943: PerfContext& operator=(const PerfContext&); +13943: PerfContext(PerfContext&&) noexcept; +13943: +13943: void Reset(); +13943: +13943: std::string ToString(bool exclude_zero_counters = false) const; +13943: +13943: +13943: void EnablePerLevelPerfContext(); +13943: +13943: +13943: void DisablePerLevelPerfContext(); +13943: +13943: +13943: void ClearPerLevelPerfContext(); +13943: +13943: std::map* level_to_perf_context = nullptr; +13943: bool per_level_perf_context_enabled = false; +13943: +13943: void copyMetrics(const PerfContext* other) noexcept; +13943: }; +13943: # 317 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +13943: PerfContext* get_perf_context(); +13943: +13943: } +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/stop_watch.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: class StopWatch { +13943: public: +13943: StopWatch(SystemClock* clock, Statistics* statistics, +13943: const uint32_t hist_type_1, +13943: const uint32_t hist_type_2 = Histograms::HISTOGRAM_ENUM_MAX, +13943: uint64_t* elapsed = nullptr, bool overwrite = true, +13943: bool delay_enabled = false) +13943: : clock_(clock), +13943: statistics_(statistics), +13943: hist_type_1_(statistics && statistics->HistEnabledForType(hist_type_1) +13943: ? hist_type_1 +13943: : Histograms::HISTOGRAM_ENUM_MAX), +13943: hist_type_2_(statistics && statistics->HistEnabledForType(hist_type_2) +13943: ? hist_type_2 +13943: : Histograms::HISTOGRAM_ENUM_MAX), +13943: elapsed_(elapsed), +13943: overwrite_(overwrite), +13943: stats_enabled_(statistics && +13943: statistics->get_stats_level() > +13943: StatsLevel::kExceptTimers && +13943: (hist_type_1_ != Histograms::HISTOGRAM_ENUM_MAX || +13943: hist_type_2_ != Histograms::HISTOGRAM_ENUM_MAX)), +13943: delay_enabled_(delay_enabled), +13943: total_delay_(0), +13943: delay_start_time_(0), +13943: start_time_((stats_enabled_ || elapsed != nullptr) ? clock->NowMicros() +13943: : 0) {} +13943: +13943: ~StopWatch() { +13943: if (elapsed_) { +13943: if (overwrite_) { +13943: *elapsed_ = clock_->NowMicros() - start_time_; +13943: } else { +13943: *elapsed_ += clock_->NowMicros() - start_time_; +13943: } +13943: } +13943: if (elapsed_ && delay_enabled_) { +13943: *elapsed_ -= total_delay_; +13943: } +13943: if (stats_enabled_) { +13943: const auto time = (elapsed_ != nullptr) +13943: ? *elapsed_ +13943: : (clock_->NowMicros() - start_time_); +13943: if (hist_type_1_ != Histograms::HISTOGRAM_ENUM_MAX) { +13943: statistics_->reportTimeToHistogram(hist_type_1_, time); +13943: } +13943: if (hist_type_2_ != Histograms::HISTOGRAM_ENUM_MAX) { +13943: statistics_->reportTimeToHistogram(hist_type_2_, time); +13943: } +13943: } +13943: } +13943: +13943: void DelayStart() { +13943: +13943: +13943: if (elapsed_ && delay_enabled_ && delay_start_time_ == 0) { +13943: delay_start_time_ = clock_->NowMicros(); +13943: } +13943: } +13943: +13943: void DelayStop() { +13943: if (elapsed_ && delay_enabled_ && delay_start_time_ != 0) { +13943: total_delay_ += clock_->NowMicros() - delay_start_time_; +13943: } +13943: +13943: +13943: delay_start_time_ = 0; +13943: } +13943: +13943: uint64_t GetDelay() const { return delay_enabled_ ? total_delay_ : 0; } +13943: +13943: uint64_t start_time() const { return start_time_; } +13943: +13943: private: +13943: SystemClock* clock_; +13943: Statistics* statistics_; +13943: const uint32_t hist_type_1_; +13943: const uint32_t hist_type_2_; +13943: uint64_t* elapsed_; +13943: bool overwrite_; +13943: bool stats_enabled_; +13943: bool delay_enabled_; +13943: uint64_t total_delay_; +13943: uint64_t delay_start_time_; +13943: const uint64_t start_time_; +13943: }; +13943: +13943: +13943: class StopWatchNano { +13943: public: +13943: explicit StopWatchNano(SystemClock* clock, bool auto_start = false) +13943: : clock_(clock), start_(0) { +13943: if (auto_start) { +13943: Start(); +13943: } +13943: } +13943: +13943: void Start() { start_ = clock_->NowNanos(); } +13943: +13943: uint64_t ElapsedNanos(bool reset = false) { +13943: auto now = clock_->NowNanos(); +13943: auto elapsed = now - start_; +13943: if (reset) { +13943: start_ = now; +13943: } +13943: return elapsed; +13943: } +13943: +13943: uint64_t ElapsedNanosSafe(bool reset = false) { +13943: return (clock_ != nullptr) ? ElapsedNanos(reset) : 0U; +13943: } +13943: +13943: bool IsStarted() { return start_ != 0; } +13943: +13943: private: +13943: SystemClock* clock_; +13943: uint64_t start_; +13943: }; +13943: +13943: } +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern thread_local PerfContext perf_context; +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" +13943: } +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: class UserComparatorWrapper { +13943: public: +13943: +13943: +13943: UserComparatorWrapper() : user_comparator_(nullptr) {} +13943: +13943: explicit UserComparatorWrapper(const Comparator* const user_cmp) +13943: : user_comparator_(user_cmp) {} +13943: +13943: ~UserComparatorWrapper() = default; +13943: +13943: const Comparator* user_comparator() const { return user_comparator_; } +13943: +13943: int Compare(const Slice& a, const Slice& b) const { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +13943: return user_comparator_->Compare(a, b); +13943: } +13943: +13943: bool Equal(const Slice& a, const Slice& b) const { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +13943: return user_comparator_->Equal(a, b); +13943: } +13943: +13943: int CompareTimestamp(const Slice& ts1, const Slice& ts2) const { +13943: return user_comparator_->CompareTimestamp(ts1, ts2); +13943: } +13943: +13943: int CompareWithoutTimestamp(const Slice& a, const Slice& b) const { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +13943: return user_comparator_->CompareWithoutTimestamp(a, b); +13943: } +13943: +13943: int CompareWithoutTimestamp(const Slice& a, bool a_has_ts, const Slice& b, +13943: bool b_has_ts) const { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +13943: return user_comparator_->CompareWithoutTimestamp(a, a_has_ts, b, b_has_ts); +13943: } +13943: +13943: bool EqualWithoutTimestamp(const Slice& a, const Slice& b) const { +13943: return user_comparator_->EqualWithoutTimestamp(a, b); +13943: } +13943: +13943: private: +13943: const Comparator* user_comparator_; +13943: }; +13943: +13943: } +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class InternalKey; +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum ValueType : unsigned char { +13943: kTypeDeletion = 0x0, +13943: kTypeValue = 0x1, +13943: kTypeMerge = 0x2, +13943: kTypeLogData = 0x3, +13943: kTypeColumnFamilyDeletion = 0x4, +13943: kTypeColumnFamilyValue = 0x5, +13943: kTypeColumnFamilyMerge = 0x6, +13943: kTypeSingleDeletion = 0x7, +13943: kTypeColumnFamilySingleDeletion = 0x8, +13943: kTypeBeginPrepareXID = 0x9, +13943: kTypeEndPrepareXID = 0xA, +13943: kTypeCommitXID = 0xB, +13943: kTypeRollbackXID = 0xC, +13943: kTypeNoop = 0xD, +13943: kTypeColumnFamilyRangeDeletion = 0xE, +13943: kTypeRangeDeletion = 0xF, +13943: kTypeColumnFamilyBlobIndex = 0x10, +13943: kTypeBlobIndex = 0x11, +13943: +13943: +13943: +13943: +13943: kTypeBeginPersistedPrepareXID = 0x12, +13943: +13943: +13943: +13943: kTypeBeginUnprepareXID = 0x13, +13943: kTypeDeletionWithTimestamp = 0x14, +13943: kTypeCommitXIDAndTimestamp = 0x15, +13943: kTypeWideColumnEntity = 0x16, +13943: kTypeColumnFamilyWideColumnEntity = 0x17, +13943: kTypeValuePreferredSeqno = 0x18, +13943: kTypeColumnFamilyValuePreferredSeqno = 0x19, +13943: kTypeMaxValid, +13943: +13943: kMaxValue = 0x7F +13943: }; +13943: +13943: +13943: extern const ValueType kValueTypeForSeek; +13943: extern const ValueType kValueTypeForSeekForPrev; +13943: +13943: +13943: +13943: struct UserKeyRange { +13943: +13943: +13943: Slice start; +13943: Slice limit; +13943: +13943: UserKeyRange() = default; +13943: UserKeyRange(const Slice& s, const Slice& l) : start(s), limit(l) {} +13943: }; +13943: +13943: +13943: +13943: struct UserKeyRangePtr { +13943: +13943: +13943: +13943: std::optional start; +13943: +13943: std::optional limit; +13943: +13943: UserKeyRangePtr(const std::optional& s, const std::optional& l) +13943: : start(s), limit(l) {} +13943: }; +13943: +13943: +13943: +13943: inline bool IsValueType(ValueType t) { +13943: return t <= kTypeMerge || kTypeSingleDeletion == t || kTypeBlobIndex == t || +13943: kTypeDeletionWithTimestamp == t || kTypeWideColumnEntity == t || +13943: kTypeValuePreferredSeqno == t; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: inline bool IsExtendedValueType(ValueType t) { +13943: return IsValueType(t) || t == kTypeRangeDeletion || t == kTypeMaxValid; +13943: } +13943: +13943: +13943: +13943: static const SequenceNumber kMaxSequenceNumber = ((0x1ull << 56) - 1); +13943: +13943: static const SequenceNumber kDisableGlobalSequenceNumber = +13943: std::numeric_limits::max(); +13943: +13943: constexpr uint64_t kNumInternalBytes = 8; +13943: +13943: +13943: extern const std::string kDisableUserTimestamp; +13943: +13943: +13943: +13943: struct ParsedInternalKey { +13943: Slice user_key; +13943: SequenceNumber sequence; +13943: ValueType type; +13943: +13943: ParsedInternalKey() +13943: : sequence(kMaxSequenceNumber), +13943: type(kTypeDeletion) +13943: {} +13943: +13943: ParsedInternalKey(const Slice& u, const SequenceNumber& seq, ValueType t) +13943: : user_key(u), sequence(seq), type(t) {} +13943: std::string DebugString(bool log_err_key, bool hex, +13943: const Comparator* ucmp = nullptr) const; +13943: +13943: void clear() { +13943: user_key.clear(); +13943: sequence = 0; +13943: type = kTypeDeletion; +13943: } +13943: +13943: void SetTimestamp(const Slice& ts) { +13943: +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ts.size() <= user_key.size() +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "ts.size() <= user_key.size()" +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: const char* addr = user_key.data() + user_key.size() - ts.size(); +13943: memcpy(const_cast(addr), ts.data(), ts.size()); +13943: } +13943: +13943: Slice GetTimestamp(size_t ts_sz) { +13943: +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ts_sz <= user_key.size() +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "ts_sz <= user_key.size()" +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: const char* addr = user_key.data() + user_key.size() - ts_sz; +13943: return Slice(const_cast(addr), ts_sz); +13943: } +13943: }; +13943: +13943: +13943: inline size_t InternalKeyEncodingLength(const ParsedInternalKey& key) { +13943: return key.user_key.size() + kNumInternalBytes; +13943: } +13943: +13943: +13943: inline uint64_t PackSequenceAndType(uint64_t seq, ValueType t) { +13943: +13943: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: seq <= kMaxSequenceNumber +13943: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "seq <= kMaxSequenceNumber" +13943: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: +13943: +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: IsExtendedValueType(t) || t == kTypeMaxValid +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "IsExtendedValueType(t) || t == kTypeMaxValid" +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return (seq << 8) | t; +13943: } +13943: +13943: +13943: +13943: inline void UnPackSequenceAndType(uint64_t packed, uint64_t* seq, +13943: ValueType* t) { +13943: *seq = packed >> 8; +13943: *t = static_cast(packed & 0xff); +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: const uint64_t kRangeTombstoneSentinel = +13943: PackSequenceAndType(kMaxSequenceNumber, kTypeRangeDeletion); +13943: +13943: EntryType GetEntryType(ValueType value_type); +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendInternalKey(std::string* result, const ParsedInternalKey& key); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendInternalKeyWithDifferentTimestamp(std::string* result, +13943: const ParsedInternalKey& key, +13943: const Slice& ts); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendUserKeyWithDifferentTimestamp(std::string* result, const Slice& key, +13943: const Slice& ts); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendInternalKeyFooter(std::string* result, SequenceNumber s, +13943: ValueType t); +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendKeyWithMinTimestamp(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendKeyWithMaxTimestamp(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendUserKeyWithMinTimestamp(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void AppendUserKeyWithMaxTimestamp(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: # 281 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: void PadInternalKeyWithMinTimestamp(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: void PadInternalKeyWithMaxTimestamp(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: # 301 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: void StripTimestampFromInternalKey(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: # 311 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: void ReplaceInternalKeyWithMinTimestamp(std::string* result, const Slice& key, +13943: size_t ts_sz); +13943: +13943: +13943: +13943: +13943: +13943: Status ParseInternalKey(const Slice& internal_key, ParsedInternalKey* result, +13943: bool log_err_key); +13943: +13943: +13943: +13943: +13943: +13943: inline Slice ExtractUserKey(const Slice& internal_key) { +13943: +13943: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: internal_key.size() >= kNumInternalBytes +13943: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "internal_key.size() >= kNumInternalBytes" +13943: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return Slice(internal_key.data(), internal_key.size() - kNumInternalBytes); +13943: } +13943: +13943: +13943: +13943: inline Slice ExtractUserKeyAndStripTimestamp(const Slice& internal_key, +13943: size_t ts_sz) { +13943: +13943: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: internal_key.size() >= kNumInternalBytes + ts_sz +13943: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "internal_key.size() >= kNumInternalBytes + ts_sz" +13943: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return Slice(internal_key.data(), +13943: internal_key.size() - (kNumInternalBytes + ts_sz)); +13943: } +13943: +13943: +13943: +13943: inline Slice StripTimestampFromUserKey(const Slice& user_key, size_t ts_sz) { +13943: +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: user_key.size() >= ts_sz +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "user_key.size() >= ts_sz" +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return Slice(user_key.data(), user_key.size() - ts_sz); +13943: } +13943: +13943: +13943: +13943: inline Slice ExtractTimestampFromUserKey(const Slice& user_key, size_t ts_sz) { +13943: +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: user_key.size() >= ts_sz +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "user_key.size() >= ts_sz" +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return Slice(user_key.data() + user_key.size() - ts_sz, ts_sz); +13943: } +13943: +13943: +13943: +13943: inline Slice ExtractTimestampFromKey(const Slice& internal_key, size_t ts_sz) { +13943: const size_t key_size = internal_key.size(); +13943: +13943: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: key_size >= kNumInternalBytes + ts_sz +13943: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "key_size >= kNumInternalBytes + ts_sz" +13943: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return Slice(internal_key.data() + key_size - ts_sz - kNumInternalBytes, +13943: ts_sz); +13943: } +13943: +13943: +13943: +13943: inline uint64_t ExtractInternalKeyFooter(const Slice& internal_key) { +13943: +13943: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: internal_key.size() >= kNumInternalBytes +13943: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "internal_key.size() >= kNumInternalBytes" +13943: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: const size_t n = internal_key.size(); +13943: return DecodeFixed64(internal_key.data() + n - kNumInternalBytes); +13943: } +13943: +13943: +13943: +13943: inline ValueType ExtractValueType(const Slice& internal_key) { +13943: uint64_t num = ExtractInternalKeyFooter(internal_key); +13943: unsigned char c = num & 0xff; +13943: return static_cast(c); +13943: } +13943: +13943: +13943: +13943: class InternalKeyComparator +13943: +13943: +13943: +13943: : public CompareInterface { +13943: private: +13943: UserComparatorWrapper user_comparator_; +13943: +13943: public: +13943: +13943: +13943: InternalKeyComparator() = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit InternalKeyComparator(const Comparator* c) : user_comparator_(c) {} +13943: virtual ~InternalKeyComparator() {} +13943: +13943: int Compare(const Slice& a, const Slice& b) const override; +13943: +13943: bool Equal(const Slice& a, const Slice& b) const { +13943: +13943: +13943: return Compare(a, b) == 0; +13943: } +13943: +13943: +13943: int CompareKeySeq(const Slice& a, const Slice& b) const; +13943: int CompareKeySeq(const ParsedInternalKey& a, const Slice& b) const; +13943: +13943: const Comparator* user_comparator() const { +13943: return user_comparator_.user_comparator(); +13943: } +13943: +13943: int Compare(const InternalKey& a, const InternalKey& b) const; +13943: int Compare(const ParsedInternalKey& a, const ParsedInternalKey& b) const; +13943: int Compare(const Slice& a, const ParsedInternalKey& b) const; +13943: int Compare(const ParsedInternalKey& a, const Slice& b) const; +13943: +13943: +13943: +13943: +13943: int Compare(const Slice& a, SequenceNumber a_global_seqno, const Slice& b, +13943: SequenceNumber b_global_seqno) const; +13943: }; +13943: +13943: +13943: class InternalKey { +13943: private: +13943: std::string rep_; +13943: +13943: public: +13943: InternalKey() {} +13943: InternalKey(const Slice& _user_key, SequenceNumber s, ValueType t) { +13943: AppendInternalKey(&rep_, ParsedInternalKey(_user_key, s, t)); +13943: } +13943: InternalKey(const Slice& _user_key, SequenceNumber s, ValueType t, Slice ts) { +13943: AppendInternalKeyWithDifferentTimestamp( +13943: &rep_, ParsedInternalKey(_user_key, s, t), ts); +13943: } +13943: +13943: +13943: +13943: void SetMaxPossibleForUserKey(const Slice& _user_key) { +13943: AppendInternalKey( +13943: &rep_, ParsedInternalKey(_user_key, 0, static_cast(0))); +13943: } +13943: +13943: +13943: +13943: void SetMinPossibleForUserKey(const Slice& _user_key) { +13943: AppendInternalKey(&rep_, ParsedInternalKey(_user_key, kMaxSequenceNumber, +13943: kValueTypeForSeek)); +13943: } +13943: +13943: bool Valid() const { +13943: ParsedInternalKey parsed; +13943: return (ParseInternalKey(Slice(rep_), &parsed, false ) +13943: .ok()); +13943: } +13943: +13943: void DecodeFrom(const Slice& s) { rep_.assign(s.data(), s.size()); } +13943: Slice Encode() const { +13943: +13943: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: !rep_.empty() +13943: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "!rep_.empty()" +13943: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return rep_; +13943: } +13943: +13943: Slice user_key() const { return ExtractUserKey(rep_); } +13943: size_t size() const { return rep_.size(); } +13943: +13943: void Set(const Slice& _user_key, SequenceNumber s, ValueType t) { +13943: SetFrom(ParsedInternalKey(_user_key, s, t)); +13943: } +13943: +13943: void Set(const Slice& _user_key_with_ts, SequenceNumber s, ValueType t, +13943: const Slice& ts) { +13943: ParsedInternalKey pik(_user_key_with_ts, s, t); +13943: +13943: +13943: SetFrom(pik, ts); +13943: } +13943: +13943: void SetFrom(const ParsedInternalKey& p) { +13943: rep_.clear(); +13943: AppendInternalKey(&rep_, p); +13943: } +13943: +13943: void SetFrom(const ParsedInternalKey& p, const Slice& ts) { +13943: rep_.clear(); +13943: AppendInternalKeyWithDifferentTimestamp(&rep_, p, ts); +13943: } +13943: +13943: void Clear() { rep_.clear(); } +13943: +13943: +13943: +13943: std::string* rep() { return &rep_; } +13943: +13943: +13943: +13943: void ConvertFromUserKey(SequenceNumber s, ValueType t) { +13943: AppendInternalKeyFooter(&rep_, s, t); +13943: } +13943: +13943: std::string DebugString(bool hex, const Comparator* ucmp = nullptr) const; +13943: }; +13943: +13943: inline int InternalKeyComparator::Compare(const InternalKey& a, +13943: const InternalKey& b) const { +13943: return Compare(a.Encode(), b.Encode()); +13943: } +13943: +13943: inline Status ParseInternalKey(const Slice& internal_key, +13943: ParsedInternalKey* result, bool log_err_key) { +13943: const size_t n = internal_key.size(); +13943: +13943: if (n < kNumInternalBytes) { +13943: return Status::Corruption("Corrupted Key: Internal Key too small. Size=" + +13943: std::to_string(n) + ". "); +13943: } +13943: +13943: uint64_t num = DecodeFixed64(internal_key.data() + n - kNumInternalBytes); +13943: unsigned char c = num & 0xff; +13943: result->sequence = num >> 8; +13943: result->type = static_cast(c); +13943: +13943: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: result->type <= ValueType::kMaxValue +13943: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "result->type <= ValueType::kMaxValue" +13943: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: result->user_key = Slice(internal_key.data(), n - kNumInternalBytes); +13943: +13943: if (IsExtendedValueType(result->type)) { +13943: return Status::OK(); +13943: } else { +13943: return Status::Corruption("Corrupted Key", +13943: result->DebugString(log_err_key, true)); +13943: } +13943: } +13943: +13943: +13943: +13943: inline void UpdateInternalKey(std::string* ikey, uint64_t seq, ValueType t) { +13943: size_t ikey_sz = ikey->size(); +13943: +13943: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ikey_sz >= kNumInternalBytes +13943: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "ikey_sz >= kNumInternalBytes" +13943: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: uint64_t newval = (seq << 8) | t; +13943: +13943: +13943: +13943: EncodeFixed64(&(*ikey)[ikey_sz - kNumInternalBytes], newval); +13943: } +13943: +13943: +13943: inline uint64_t GetInternalKeySeqno(const Slice& internal_key) { +13943: const size_t n = internal_key.size(); +13943: +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: n >= kNumInternalBytes +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "n >= kNumInternalBytes" +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: uint64_t num = DecodeFixed64(internal_key.data() + n - kNumInternalBytes); +13943: return num >> 8; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class IterKey { +13943: static constexpr size_t kInlineBufferSize = 39; +13943: +13943: +13943: static constexpr char kTsMin[] = "\x00\x00\x00\x00\x00\x00\x00\x00"; +13943: +13943: public: +13943: IterKey() +13943: : buf_(space_), +13943: key_(buf_), +13943: key_size_(0), +13943: buf_size_(kInlineBufferSize), +13943: is_user_key_(true), +13943: secondary_buf_(space_for_secondary_buf_), +13943: secondary_buf_size_(kInlineBufferSize) {} +13943: +13943: IterKey(const IterKey&) = delete; +13943: void operator=(const IterKey&) = delete; +13943: +13943: ~IterKey() { +13943: ResetBuffer(); +13943: ResetSecondaryBuffer(); +13943: } +13943: +13943: +13943: void SetIsUserKey(bool is_user_key) { is_user_key_ = is_user_key; } +13943: +13943: +13943: +13943: +13943: Slice GetKey() const { return Slice(key_, key_size_); } +13943: +13943: Slice GetInternalKey() const { +13943: +13943: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: !IsUserKey() +13943: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "!IsUserKey()" +13943: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return Slice(key_, key_size_); +13943: } +13943: +13943: +13943: +13943: Slice GetUserKey() const { +13943: if (IsUserKey()) { +13943: return Slice(key_, key_size_); +13943: } else { +13943: +13943: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: key_size_ >= kNumInternalBytes +13943: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "key_size_ >= kNumInternalBytes" +13943: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: return Slice(key_, key_size_ - kNumInternalBytes); +13943: } +13943: } +13943: +13943: size_t Size() const { return key_size_; } +13943: +13943: void Clear() { key_size_ = 0; } +13943: +13943: +13943: +13943: +13943: +13943: void TrimAppend(const size_t shared_len, const char* non_shared_data, +13943: const size_t non_shared_len) { +13943: +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: shared_len <= key_size_ +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "shared_len <= key_size_" +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: size_t total_size = shared_len + non_shared_len; +13943: +13943: if (IsKeyPinned() ) { +13943: +13943: EnlargeBufferIfNeeded(total_size); +13943: memcpy(buf_, key_, shared_len); +13943: } else if (total_size > buf_size_) { +13943: +13943: char* p = new char[total_size]; +13943: memcpy(p, key_, shared_len); +13943: +13943: if (buf_ != space_) { +13943: delete[] buf_; +13943: } +13943: +13943: buf_ = p; +13943: buf_size_ = total_size; +13943: } +13943: +13943: memcpy(buf_/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_open.cc + + shared_len, non_shared_data, non_shared_len); +13943: key_ = buf_; +13943: key_size_ = total_size; +13943: } +13943: +13943: +13943: +13943: +13943: void TrimAppendWithTimestamp(const size_t shared_len, +13943: const char* non_shared_data, +13943: const size_t non_shared_len, +13943: const size_t ts_sz) { +13943: +13943: +13943: +13943: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ts_sz == sizeof(uint64_t) +13943: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "ts_sz == sizeof(uint64_t)" +13943: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: size_t next_key_slice_index = 0; +13943: if (IsUserKey()) { +13943: key_slices_[next_key_slice_index++] = Slice(key_, shared_len); +13943: key_slices_[next_key_slice_index++] = +13943: Slice(non_shared_data, non_shared_len); +13943: key_slices_[next_key_slice_index++] = Slice(kTsMin, ts_sz); +13943: } else { +13943: +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: shared_len + non_shared_len >= kNumInternalBytes +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "shared_len + non_shared_len >= kNumInternalBytes" +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: const size_t user_key_len = key_size_ - kNumInternalBytes; +13943: const size_t sharable_user_key_len = user_key_len - ts_sz; +13943: const size_t shared_user_key_len = +13943: std::min(shared_len, sharable_user_key_len); +13943: const size_t shared_internal_bytes_len = shared_len - shared_user_key_len; +13943: +13943: +13943: +13943: bool ts_added = false; +13943: +13943: MaybeAddKeyPartsWithTimestamp( +13943: key_, shared_user_key_len, +13943: shared_internal_bytes_len + non_shared_len < kNumInternalBytes, +13943: shared_len + non_shared_len - kNumInternalBytes, ts_sz, +13943: &next_key_slice_index, &ts_added); +13943: MaybeAddKeyPartsWithTimestamp( +13943: key_ + user_key_len, shared_internal_bytes_len, +13943: non_shared_len < kNumInternalBytes, +13943: shared_internal_bytes_len + non_shared_len - kNumInternalBytes, ts_sz, +13943: &next_key_slice_index, &ts_added); +13943: MaybeAddKeyPartsWithTimestamp(non_shared_data, non_shared_len, +13943: non_shared_len >= kNumInternalBytes, +13943: non_shared_len - kNumInternalBytes, ts_sz, +13943: &next_key_slice_index, &ts_added); +13943: +13943: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ts_added +13943: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "ts_added" +13943: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: } +13943: SetKeyImpl(next_key_slice_index, +13943: shared_len + non_shared_len + ts_sz); +13943: } +13943: +13943: Slice SetKeyWithPaddedMinTimestamp(const Slice& key, size_t ts_sz) { +13943: +13943: +13943: +13943: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ts_sz == sizeof(uint64_t) +13943: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "ts_sz == sizeof(uint64_t)" +13943: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: size_t num_key_slices = 0; +13943: if (is_user_key_) { +13943: key_slices_[0] = key; +13943: key_slices_[1] = Slice(kTsMin, ts_sz); +13943: num_key_slices = 2; +13943: } else { +13943: +13943: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: key.size() >= kNumInternalBytes +13943: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "key.size() >= kNumInternalBytes" +13943: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: size_t user_key_size = key.size() - kNumInternalBytes; +13943: key_slices_[0] = Slice(key.data(), user_key_size); +13943: key_slices_[1] = Slice(kTsMin, ts_sz); +13943: key_slices_[2] = Slice(key.data() + user_key_size, kNumInternalBytes); +13943: num_key_slices = 3; +13943: } +13943: return SetKeyImpl(num_key_slices, key.size() + ts_sz); +13943: } +13943: +13943: Slice SetKey(const Slice& key, bool copy = true) { +13943: +13943: return SetKeyImpl(key, copy); +13943: } +13943: +13943: +13943: +13943: +13943: Slice SetUserKey(const Slice& key, bool copy = true) { +13943: is_user_key_ = true; +13943: return SetKeyImpl(key, copy); +13943: } +13943: +13943: Slice SetInternalKey(const Slice& key, bool copy = true) { +13943: is_user_key_ = false; +13943: return SetKeyImpl(key, copy); +13943: } +13943: +13943: +13943: +13943: Slice SetInternalKey(const Slice& key, ParsedInternalKey* ikey) { +13943: size_t key_n = key.size(); +13943: +13943: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: key_n >= kNumInternalBytes +13943: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "key_n >= kNumInternalBytes" +13943: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: SetInternalKey(key); +13943: ikey->user_key = Slice(key_, key_n - kNumInternalBytes); +13943: return Slice(key_, key_n); +13943: } +13943: +13943: +13943: +13943: void UpdateInternalKey(uint64_t seq, ValueType t, const Slice* ts = nullptr) { +13943: +13943: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: !IsKeyPinned() +13943: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "!IsKeyPinned()" +13943: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: +13943: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: key_size_ >= kNumInternalBytes +13943: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "key_size_ >= kNumInternalBytes" +13943: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: if (ts) { +13943: +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: key_size_ >= kNumInternalBytes + ts->size() +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "key_size_ >= kNumInternalBytes + ts->size()" +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: memcpy(&buf_[key_size_ - kNumInternalBytes - ts->size()], ts->data(), +13943: ts->size()); +13943: } +13943: uint64_t newval = (seq << 8) | t; +13943: if (key_ == buf_) { +13943: EncodeFixed64(&buf_[key_size_ - kNumInternalBytes], newval); +13943: } else { +13943: +13943: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: key_ == secondary_buf_ +13943: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "key_ == secondary_buf_" +13943: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: EncodeFixed64(&secondary_buf_[key_size_ - kNumInternalBytes], newval); +13943: } +13943: } +13943: +13943: bool IsKeyPinned() const { return key_ != buf_ && key_ != secondary_buf_; } +13943: +13943: +13943: +13943: +13943: void SetInternalKey(const Slice& key_prefix, const Slice& user_key, +13943: SequenceNumber s, +13943: ValueType value_type = kValueTypeForSeek, +13943: const Slice* ts = nullptr) { +13943: size_t psize = key_prefix.size(); +13943: size_t usize = user_key.size(); +13943: size_t ts_sz = (ts != nullptr ? ts->size() : 0); +13943: EnlargeBufferIfNeeded(psize + usize + sizeof(uint64_t) + ts_sz); +13943: if (psize > 0) { +13943: memcpy(buf_, key_prefix.data(), psize); +13943: } +13943: memcpy(buf_ + psize, user_key.data(), usize); +13943: if (ts) { +13943: memcpy(buf_ + psize + usize, ts->data(), ts_sz); +13943: } +13943: EncodeFixed64(buf_ + usize + psize + ts_sz, +13943: PackSequenceAndType(s, value_type)); +13943: +13943: key_ = buf_; +13943: key_size_ = psize + usize + sizeof(uint64_t) + ts_sz; +13943: is_user_key_ = false; +13943: } +13943: +13943: void SetInternalKey(const Slice& user_key, SequenceNumber s, +13943: ValueType value_type = kValueTypeForSeek, +13943: const Slice* ts = nullptr) { +13943: SetInternalKey(Slice(), user_key, s, value_type, ts); +13943: } +13943: +13943: void Reserve(size_t size) { +13943: EnlargeBufferIfNeeded(size); +13943: key_size_ = size; +13943: } +13943: +13943: void SetInternalKey(const ParsedInternalKey& parsed_key) { +13943: SetInternalKey(Slice(), parsed_key); +13943: } +13943: +13943: void SetInternalKey(const Slice& key_prefix, +13943: const ParsedInternalKey& parsed_key_suffix) { +13943: SetInternalKey(key_prefix, parsed_key_suffix.user_key, +13943: parsed_key_suffix.sequence, parsed_key_suffix.type); +13943: } +13943: +13943: void EncodeLengthPrefixedKey(const Slice& key) { +13943: auto size = key.size(); +13943: EnlargeBufferIfNeeded(size + static_cast(VarintLength(size))); +13943: char* ptr = EncodeVarint32(buf_, static_cast(size)); +13943: memcpy(ptr, key.data(), size); +13943: key_ = buf_; +13943: is_user_key_ = true; +13943: } +13943: +13943: bool IsUserKey() const { return is_user_key_; } +13943: +13943: private: +13943: char* buf_; +13943: const char* key_; +13943: size_t key_size_; +13943: size_t buf_size_; +13943: char space_[kInlineBufferSize]; +13943: bool is_user_key_; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: char space_for_secondary_buf_[kInlineBufferSize]; +13943: +13943: char* secondary_buf_; +13943: size_t secondary_buf_size_; +13943: +13943: +13943: +13943: std::array key_slices_; +13943: +13943: +13943: Slice SetKeyImpl(const Slice& key, bool copy) { +13943: size_t size = key.size(); +13943: if (copy) { +13943: +13943: EnlargeBufferIfNeeded(size); +13943: memcpy(buf_, key.data(), size); +13943: key_ = buf_; +13943: } else { +13943: +13943: key_ = key.data(); +13943: } +13943: key_size_ = size; +13943: return Slice(key_, key_size_); +13943: } +13943: +13943: Slice SetKeyImpl(size_t num_key_slices, size_t total_bytes) { +13943: +13943: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: num_key_slices <= 5 +13943: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "num_key_slices <= 5" +13943: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: char* buf_start = nullptr; +13943: if (key_ == buf_) { +13943: +13943: +13943: EnlargeSecondaryBufferIfNeeded(total_bytes); +13943: buf_start = secondary_buf_; +13943: key_ = secondary_buf_; +13943: } else { +13943: +13943: EnlargeBufferIfNeeded(total_bytes); +13943: buf_start = buf_; +13943: key_ = buf_; +13943: } +13943: +13943: size_t actual_total_bytes = 0; +13943: +13943: for (size_t i = 0; i < num_key_slices; i++) { +13943: size_t key_slice_size = key_slices_[i].size(); +13943: memcpy(buf_start, key_slices_[i].data(), key_slice_size); +13943: buf_start += key_slice_size; +13943: +13943: actual_total_bytes += key_slice_size; +13943: +13943: } +13943: +13943: +13943: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: actual_total_bytes == total_bytes +13943: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "actual_total_bytes == total_bytes" +13943: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: +13943: key_size_ = total_bytes; +13943: return Slice(key_, key_size_); +13943: } +13943: +13943: void ResetBuffer() { +13943: if (key_ == buf_) { +13943: key_size_ = 0; +13943: } +13943: if (buf_ != space_) { +13943: delete[] buf_; +13943: buf_ = space_; +13943: } +13943: buf_size_ = kInlineBufferSize; +13943: } +13943: +13943: void ResetSecondaryBuffer() { +13943: if (key_ == secondary_buf_) { +13943: key_size_ = 0; +13943: } +13943: if (secondary_buf_ != space_for_secondary_buf_) { +13943: delete[] secondary_buf_; +13943: secondary_buf_ = space_for_secondary_buf_; +13943: } +13943: secondary_buf_size_ = kInlineBufferSize; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void EnlargeBufferIfNeeded(size_t key_size) { +13943: +13943: +13943: if (key_size > buf_size_) { +13943: EnlargeBuffer(key_size); +13943: } +13943: } +13943: +13943: void EnlargeSecondaryBufferIfNeeded(size_t key_size); +13943: +13943: void EnlargeBuffer(size_t key_size); +13943: +13943: void MaybeAddKeyPartsWithTimestamp(const char* slice_data, +13943: const size_t slice_sz, bool add_timestamp, +13943: const size_t left_sz, const size_t ts_sz, +13943: size_t* next_key_slice_idx, +13943: bool* ts_added) { +13943: +13943: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: next_key_slice_idx +13943: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "next_key_slice_idx" +13943: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: if (add_timestamp && !*ts_added) { +13943: +13943: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: slice_sz >= left_sz +13943: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "slice_sz >= left_sz" +13943: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: key_slices_[(*next_key_slice_idx)++] = Slice(slice_data, left_sz); +13943: key_slices_[(*next_key_slice_idx)++] = Slice(kTsMin, ts_sz); +13943: key_slices_[(*next_key_slice_idx)++] = +13943: Slice(slice_data + left_sz, slice_sz - left_sz); +13943: *ts_added = true; +13943: } else { +13943: key_slices_[(*next_key_slice_idx)++] = Slice(slice_data, slice_sz); +13943: } +13943: +13943: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: *next_key_slice_idx <= 5 +13943: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "*next_key_slice_idx <= 5" +13943: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: } +13943: }; +13943: +13943: +13943: +13943: class InternalKeySliceTransform : public SliceTransform { +13943: public: +13943: explicit InternalKeySliceTransform(const SliceTransform* transform) +13943: : transform_(transform) {} +13943: +13943: const char* Name() const override { return transform_->Name(); } +13943: +13943: Slice Transform(const Slice& src) const override { +13943: auto user_key = ExtractUserKey(src); +13943: return transform_->Transform(user_key); +13943: } +13943: +13943: bool InDomain(const Slice& src) const override { +13943: auto user_key = ExtractUserKey(src); +13943: return transform_->InDomain(user_key); +13943: } +13943: +13943: bool InRange(const Slice& dst) const override { +13943: auto user_key = ExtractUserKey(dst); +13943: return transform_->InRange(user_key); +13943: } +13943: +13943: const SliceTransform* user_prefix_extractor() const { return transform_; } +13943: +13943: private: +13943: +13943: +13943: const SliceTransform* const transform_; +13943: }; +13943: +13943: +13943: +13943: +13943: bool ReadKeyFromWriteBatchEntry(Slice* input, Slice* key, bool cf_record); +13943: # 1004 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: Status ReadRecordFromWriteBatch(Slice* input, char* tag, +13943: uint32_t* column_family, Slice* key, +13943: Slice* value, Slice* blob, Slice* xid, +13943: uint64_t* write_unix_time); +13943: +13943: +13943: +13943: +13943: +13943: struct RangeTombstone { +13943: Slice start_key_; +13943: Slice end_key_; +13943: SequenceNumber seq_; +13943: +13943: +13943: Slice ts_; +13943: std::string pinned_start_key_; +13943: std::string pinned_end_key_; +13943: +13943: RangeTombstone() = default; +13943: RangeTombstone(Slice sk, Slice ek, SequenceNumber sn) +13943: : start_key_(sk), end_key_(ek), seq_(sn) {} +13943: +13943: +13943: +13943: +13943: RangeTombstone(Slice sk, Slice ek, SequenceNumber sn, Slice ts) : seq_(sn) { +13943: const size_t ts_sz = ts.size(); +13943: +13943: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: (static_cast ( +13943: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ts_sz > 0 +13943: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: "ts_sz > 0" +13943: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: ; +13943: pinned_start_key_.reserve(sk.size()); +13943: pinned_end_key_.reserve(ek.size()); +13943: AppendUserKeyWithDifferentTimestamp(&pinned_start_key_, sk, ts); +13943: AppendUserKeyWithDifferentTimestamp(&pinned_end_key_, ek, ts); +13943: start_key_ = pinned_start_key_; +13943: end_key_ = pinned_end_key_; +13943: ts_ = Slice(pinned_start_key_.data() + sk.size() - ts_sz, ts_sz); +13943: } +13943: +13943: RangeTombstone(ParsedInternalKey parsed_key, Slice value) { +13943: start_key_ = parsed_key.user_key; +13943: seq_ = parsed_key.sequence; +13943: end_key_ = value; +13943: } +13943: +13943: +13943: std::pair Serialize() const { +13943: auto key = InternalKey(start_key_, seq_, kTypeRangeDeletion); +13943: return std::make_pair(std::move(key), end_key_); +13943: } +13943: +13943: +13943: InternalKey SerializeKey() const { +13943: return InternalKey(start_key_, seq_, kTypeRangeDeletion); +13943: } +13943: # 1066 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +13943: InternalKey SerializeEndKey() const { +13943: if (!ts_.empty()) { +13943: static constexpr char kTsMax[] = "\xff\xff\xff\xff\xff\xff\xff\xff\xff"; +13943: if (ts_.size() <= strlen(kTsMax)) { +13943: return InternalKey(end_key_, kMaxSequenceNumber, kTypeRangeDeletion, +13943: Slice(kTsMax, ts_.size())); +13943: } else { +13943: return InternalKey(end_key_, kMaxSequenceNumber, kTypeRangeDeletion, +13943: std::string(ts_.size(), '\xff')); +13943: } +13943: } +13943: return InternalKey(end_key_, kMaxSequenceNumber, kTypeRangeDeletion); +13943: } +13943: }; +13943: +13943: inline int InternalKeyComparator::Compare(const Slice& akey, +13943: const Slice& bkey) const { +13943: +13943: +13943: +13943: +13943: int r = user_comparator_.Compare(ExtractUserKey(akey), ExtractUserKey(bkey)); +13943: if (r == 0) { +13943: const uint64_t anum = +13943: DecodeFixed64(akey.data() + akey.size() - kNumInternalBytes); +13943: const uint64_t bnum = +13943: DecodeFixed64(bkey.data() + bkey.size() - kNumInternalBytes); +13943: if (anum > bnum) { +13943: r = -1; +13943: } else if (anum < bnum) { +13943: r = +1; +13943: } +13943: } +13943: return r; +13943: } +13943: +13943: inline int InternalKeyComparator::CompareKeySeq(const Slice& akey, +13943: const Slice& bkey) const { +13943: +13943: +13943: +13943: int r = user_comparator_.Compare(ExtractUserKey(akey), ExtractUserKey(bkey)); +13943: if (r == 0) { +13943: +13943: const uint64_t anum = +13943: DecodeFixed64(akey.data() + akey.size() - kNumInternalBytes) >> 8; +13943: const uint64_t bnum = +13943: DecodeFixed64(bkey.data() + bkey.size() - kNumInternalBytes) >> 8; +13943: if (anum > bnum) { +13943: r = -1; +13943: } else if (anum < bnum) { +13943: r = +1; +13943: } +13943: } +13943: return r; +13943: } +13943: +13943: inline int InternalKeyComparator::CompareKeySeq(const ParsedInternalKey& a, +13943: const Slice& b) const { +13943: +13943: +13943: +13943: int r = user_comparator_.Compare(a.user_key, ExtractUserKey(b)); +13943: if (r == 0) { +13943: +13943: const uint64_t anum = a.sequence; +13943: const uint64_t bnum = +13943: DecodeFixed64(b.data() + b.size() - kNumInternalBytes) >> 8; +13943: if (anum > bnum) { +13943: r = -1; +13943: } else if (anum < bnum) { +13943: r = +1; +13943: } +13943: } +13943: return r; +13943: } +13943: +13943: inline int InternalKeyComparator::Compare(const Slice& a, +13943: SequenceNumber a_global_seqno, +13943: const Slice& b, +13943: SequenceNumber b_global_seqno) const { +13943: int r = user_comparator_.Compare(ExtractUserKey(a), ExtractUserKey(b)); +13943: if (r == 0) { +13943: uint64_t a_footer, b_footer; +13943: if (a_global_seqno == kDisableGlobalSequenceNumber) { +13943: a_footer = ExtractInternalKeyFooter(a); +13943: } else { +13943: a_footer = PackSequenceAndType(a_global_seqno, ExtractValueType(a)); +13943: } +13943: if (b_global_seqno == kDisableGlobalSequenceNumber) { +13943: b_footer = ExtractInternalKeyFooter(b); +13943: } else { +13943: b_footer = PackSequenceAndType(b_global_seqno, ExtractValueType(b)); +13943: } +13943: if (a_footer > b_footer) { +13943: r = -1; +13943: } else if (a_footer < b_footer) { +13943: r = +1; +13943: } +13943: } +13943: return r; +13943: } +13943: +13943: +13943: struct ParsedInternalKeyComparator { +13943: explicit ParsedInternalKeyComparator(const InternalKeyComparator* c) +13943: : cmp(c) {} +13943: +13943: bool operator()(const ParsedInternalKey& a, +13943: const ParsedInternalKey& b) const { +13943: return cmp->Compare(a, b) < 0; +13943: } +13943: +13943: const InternalKeyComparator* cmp; +13943: }; +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 1 +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: template +13943: class ProtectionInfo; +13943: template +13943: class ProtectionInfoKVO; +13943: template +13943: class ProtectionInfoKVOC; +13943: template +13943: class ProtectionInfoKVOS; +13943: template +13943: class ProtectionInfoKV; +13943: +13943: +13943: using ProtectionInfo64 = ProtectionInfo; +13943: using ProtectionInfoKVO64 = ProtectionInfoKVO; +13943: using ProtectionInfoKVOC64 = ProtectionInfoKVOC; +13943: using ProtectionInfoKVOS64 = ProtectionInfoKVOS; +13943: +13943: template +13943: class ProtectionInfo { +13943: public: +13943: ProtectionInfo() = default; +13943: +13943: Status GetStatus() const; +13943: ProtectionInfoKVO ProtectKVO(const Slice& key, const Slice& value, +13943: ValueType op_type) const; +13943: ProtectionInfoKVO ProtectKVO(const SliceParts& key, +13943: const SliceParts& value, +13943: ValueType op_type) const; +13943: ProtectionInfoKV ProtectKV(const Slice& key, const Slice& value) const; +13943: +13943: private: +13943: friend class ProtectionInfoKVO; +13943: friend class ProtectionInfoKVOS; +13943: friend class ProtectionInfoKVOC; +13943: friend class ProtectionInfoKV; +13943: # 84 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: static const uint64_t kSeedK = 0; +13943: static const uint64_t kSeedV = 0xD28AAD72F49BD50B; +13943: static const uint64_t kSeedO = 0xA5155AE5E937AA16; +13943: static const uint64_t kSeedS = 0x77A00858DDD37F21; +13943: static const uint64_t kSeedC = 0x4A2AB5CBD26F542C; +13943: +13943: ProtectionInfo(T val) : val_(val) { +13943: static_assert(sizeof(ProtectionInfo) == sizeof(T), ""); +13943: } +13943: +13943: T GetVal() const { return val_; } +13943: void SetVal(T val) { val_ = val; } +13943: +13943: void Encode(uint8_t len, char* dst) const { +13943: +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: (static_cast ( +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: sizeof(val_) >= len +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: "sizeof(val_) >= len" +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: ; +13943: switch (len) { +13943: case 1: +13943: dst[0] = static_cast(val_); +13943: break; +13943: case 2: +13943: EncodeFixed16(dst, static_cast(val_)); +13943: break; +13943: case 4: +13943: EncodeFixed32(dst, static_cast(val_)); +13943: break; +13943: case 8: +13943: EncodeFixed64(dst, static_cast(val_)); +13943: break; +13943: default: +13943: +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: (static_cast ( +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: false +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: "false" +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: ; +13943: } +13943: } +13943: +13943: bool Verify(uint8_t len, const char* checksum_ptr) const { +13943: +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: (static_cast ( +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: sizeof(val_) >= len +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: "sizeof(val_) >= len" +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: ; +13943: switch (len) { +13943: case 1: +13943: return static_cast(checksum_ptr[0]) == +13943: static_cast(val_); +13943: case 2: +13943: return DecodeFixed16(checksum_ptr) == static_cast(val_); +13943: case 4: +13943: return DecodeFixed32(checksum_ptr) == static_cast(val_); +13943: case 8: +13943: return DecodeFixed64(checksum_ptr) == static_cast(val_); +13943: default: +13943: +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: (static_cast ( +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: false +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: "false" +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +13943: ; +13943: return false; +13943: } +13943: } +13943: +13943: T val_ = 0; +13943: }; +13943: +13943: template +13943: class ProtectionInfoKVO { +13943: public: +13943: ProtectionInfoKVO() = default; +13943: +13943: ProtectionInfo StripKVO(const Slice& key, const Slice& value, +13943: ValueType op_type) const; +13943: ProtectionInfo StripKVO(const SliceParts& key, const SliceParts& value, +13943: ValueType op_type) const; +13943: +13943: ProtectionInfoKVOC ProtectC(ColumnFamilyId column_family_id) const; +13943: ProtectionInfoKVOS ProtectS(SequenceNumber sequence_number) const; +13943: +13943: void UpdateK(const Slice& old_key, const Slice& new_key); +13943: void UpdateK(const SliceParts& old_key, const SliceParts& new_key); +13943: void UpdateV(const Slice& old_value, const Slice& new_value); +13943: void UpdateV(const SliceParts& old_value, const SliceParts& new_value); +13943: void UpdateO(ValueType old_op_type, ValueType new_op_type); +13943: +13943: +13943: void Encode(uint8_t len, char* dst) const { info_.Encode(len, dst); } +13943: +13943: +13943: +13943: bool Verify(uint8_t len, const char* checksum_ptr) const { +13943: return info_.Verify(len, checksum_ptr); +13943: } +13943: +13943: private: +13943: friend class ProtectionInfo; +13943: friend class ProtectionInfoKVOS; +13943: friend class ProtectionInfoKVOC; +13943: +13943: explicit ProtectionInfoKVO(T val) : info_(val) { +13943: static_assert(sizeof(ProtectionInfoKVO) == sizeof(T), ""); +13943: } +13943: +13943: T GetVal() const { return info_.GetVal(); } +13943: void SetVal(T val) { info_.SetVal(val); } +13943: +13943: ProtectionInfo info_; +13943: }; +13943: +13943: template +13943: class ProtectionInfoKVOC { +13943: public: +13943: ProtectionInfoKVOC() = default; +13943: +13943: ProtectionInfoKVO StripC(ColumnFamilyId column_family_id) const; +13943: +13943: void UpdateK(const Slice& old_key, const Slice& new_key) { +13943: kvo_.UpdateK(old_key, new_key); +13943: } +13943: void UpdateK(const SliceParts& old_key, const SliceParts& new_key) { +13943: kvo_.UpdateK(old_key, new_key); +13943: } +13943: void UpdateV(const Slice& old_value, const Slice& new_value) { +13943: kvo_.UpdateV(old_value, new_value); +13943: } +13943: void UpdateV(const SliceParts& old_value, const SliceParts& new_value) { +13943: kvo_.UpdateV(old_value, new_value); +13943: } +13943: void UpdateO(ValueType old_op_type, ValueType new_op_type) { +13943: kvo_.UpdateO(old_op_type, new_op_type); +13943: } +13943: void UpdateC(ColumnFamilyId old_column_family_id, +13943: ColumnFamilyId new_column_family_id); +13943: +13943: void Encode(uint8_t len, char* dst) const { kvo_.Encode(len, dst); } +13943: bool Verify(uint8_t len, const char* checksum_ptr) const { +13943: return kvo_.Verify(len, checksum_ptr); +13943: } +13943: +13943: private: +13943: friend class ProtectionInfoKVO; +13943: +13943: explicit ProtectionInfoKVOC(T val) : kvo_(val) { +13943: static_assert(sizeof(ProtectionInfoKVOC) == sizeof(T), ""); +13943: } +13943: +13943: T GetVal() const { return kvo_.GetVal(); } +13943: void SetVal(T val) { kvo_.SetVal(val); } +13943: +13943: ProtectionInfoKVO kvo_; +13943: }; +13943: +13943: template +13943: class ProtectionInfoKVOS { +13943: public: +13943: ProtectionInfoKVOS() = default; +13943: +13943: ProtectionInfoKVO StripS(SequenceNumber sequence_number) const; +13943: +13943: void UpdateK(const Slice& old_key, const Slice& new_key) { +13943: kvo_.UpdateK(old_key, new_key); +13943: } +13943: void UpdateK(const SliceParts& old_key, const SliceParts& new_key) { +13943: kvo_.UpdateK(old_key, new_key); +13943: } +13943: void UpdateV(const Slice& old_value, const Slice& new_value) { +13943: kvo_.UpdateV(old_value, new_value); +13943: } +13943: void UpdateV(const SliceParts& old_value, const SliceParts& new_value) { +13943: kvo_.UpdateV(old_value, new_value); +13943: } +13943: void UpdateO(ValueType old_op_type, ValueType new_op_type) { +13943: kvo_.UpdateO(old_op_type, new_op_type); +13943: } +13943: void UpdateS(SequenceNumber old_sequence_number, +13943: SequenceNumber new_sequence_number); +13943: +13943: void Encode(uint8_t len, char* dst) const { kvo_.Encode(len, dst); } +13943: bool Verify(uint8_t len, const char* checksum_ptr) const { +13943: return kvo_.Verify(len, checksum_ptr); +13943: } +13943: +13943: private: +13943: friend class ProtectionInfoKVO; +13943: +13943: explicit ProtectionInfoKVOS(T val) : kvo_(val) { +13943: static_assert(sizeof(ProtectionInfoKVOS) == sizeof(T), ""); +13943: } +13943: +13943: T GetVal() const { return kvo_.GetVal(); } +13943: void SetVal(T val) { kvo_.SetVal(val); } +13943: +13943: ProtectionInfoKVO kvo_; +13943: }; +13943: +13943: template +13943: class ProtectionInfoKV { +13943: public: +13943: ProtectionInfoKV() = default; +13943: +13943: void Encode(uint8_t len, char* dst) const { info_.Encode(len, dst); } +13943: bool Verify(uint8_t len, const char* checksum_ptr) const { +13943: return info_.Verify(len, checksum_ptr); +13943: } +13943: +13943: private: +13943: friend class ProtectionInfo; +13943: +13943: explicit ProtectionInfoKV(T val) : info_(val) { +13943: static_assert(sizeof(ProtectionInfoKV) == sizeof(T)); +13943: } +13943: +13943: ProtectionInfo info_; +13943: }; +13943: +13943: template +13943: Status ProtectionInfo::GetStatus() const { +13943: if (val_ != 0) { +13943: return Status::Corruption("ProtectionInfo mismatch"); +13943: } +13943: return Status::OK(); +13943: } +13943: +13943: template +13943: ProtectionInfoKVO ProtectionInfo::ProtectKVO(const Slice& key, +13943: const Slice& value, +13943: ValueType op_type) const { +13943: T val = GetVal(); +13943: val = val ^ static_cast(GetSliceNPHash64(key, ProtectionInfo::kSeedK)); +13943: val = +13943: val ^ static_cast(GetSliceNPHash64(value, ProtectionInfo::kSeedV)); +13943: val = val ^ +13943: static_cast(NPHash64(reinterpret_cast(&op_type), +13943: sizeof(op_type), ProtectionInfo::kSeedO)); +13943: return ProtectionInfoKVO(val); +13943: } +13943: +13943: template +13943: ProtectionInfoKVO ProtectionInfo::ProtectKVO(const SliceParts& key, +13943: const SliceParts& value, +13943: ValueType op_type) const { +13943: T val = GetVal(); +13943: val = val ^ +13943: static_cast(GetSlicePartsNPHash64(key, ProtectionInfo::kSeedK)); +13943: val = val ^ +13943: static_cast(GetSlicePartsNPHash64(value, ProtectionInfo::kSeedV)); +13943: val = val ^ +13943: static_cast(NPHash64(reinterpret_cast(&op_type), +13943: sizeof(op_type), ProtectionInfo::kSeedO)); +13943: return ProtectionInfoKVO(val); +13943: } +13943: +13943: template +13943: ProtectionInfoKV ProtectionInfo::ProtectKV(const Slice& key, +13943: const Slice& value) const { +13943: T val = GetVal(); +13943: val = val ^ static_cast(GetSliceNPHash64(key, ProtectionInfo::kSeedK)); +13943: val = +13943: val ^ static_cast(GetSliceNPHash64(value, ProtectionInfo::kSeedV)); +13943: return ProtectionInfoKV(val); +13943: } +13943: +13943: template +13943: void ProtectionInfoKVO::UpdateK(const Slice& old_key, const Slice& new_key) { +13943: T val = GetVal(); +13943: val = val ^ +13943: static_cast(GetSliceNPHash64(old_key, ProtectionInfo::kSeedK)); +13943: val = val ^ +13943: static_cast(GetSliceNPHash64(new_key, ProtectionInfo::kSeedK)); +13943: SetVal(val); +13943: } +13943: +13943: template +13943: void ProtectionInfoKVO::UpdateK(const SliceParts& old_key, +13943: const SliceParts& new_key) { +13943: T val = GetVal(); +13943: val = val ^ static_cast( +13943: GetSlicePartsNPHash64(old_key, ProtectionInfo::kSeedK)); +13943: val = val ^ static_cast( +13943: GetSlicePartsNPHash64(new_key, ProtectionInfo::kSeedK)); +13943: SetVal(val); +13943: } +13943: +13943: template +13943: void ProtectionInfoKVO::UpdateV(const Slice& old_value, +13943: const Slice& new_value) { +13943: T val = GetVal(); +13943: val = val ^ +13943: static_cast(GetSliceNPHash64(old_value, ProtectionInfo::kSeedV)); +13943: val = val ^ +13943: static_cast(GetSliceNPHash64(new_value, ProtectionInfo::kSeedV)); +13943: SetVal(val); +13943: } +13943: +13943: template +13943: void ProtectionInfoKVO::UpdateV(const SliceParts& old_value, +13943: const SliceParts& new_value) { +13943: T val = GetVal(); +13943: val = val ^ static_cast( +13943: GetSlicePartsNPHash64(old_value, ProtectionInfo::kSeedV)); +13943: val = val ^ static_cast( +13943: GetSlicePartsNPHash64(new_value, ProtectionInfo::kSeedV)); +13943: SetVal(val); +13943: } +13943: +13943: template +13943: void ProtectionInfoKVO::UpdateO(ValueType old_op_type, +13943: ValueType new_op_type) { +13943: T val = GetVal(); +13943: val = val ^ static_cast(NPHash64(reinterpret_cast(&old_op_type), +13943: sizeof(old_op_type), +13943: ProtectionInfo::kSeedO)); +13943: val = val ^ static_cast(NPHash64(reinterpret_cast(&new_op_type), +13943: sizeof(new_op_type), +13943: ProtectionInfo::kSeedO)); +13943: SetVal(val); +13943: } +13943: +13943: template +13943: ProtectionInfo ProtectionInfoKVO::StripKVO(const Slice& key, +13943: const Slice& value, +13943: ValueType op_type) const { +13943: T val = GetVal(); +13943: val = val ^ static_cast(GetSliceNPHash64(key, ProtectionInfo::kSeedK)); +13943: val = +13943: val ^ static_cast(GetSliceNPHash64(value, ProtectionInfo::kSeedV)); +13943: val = val ^ +13943: static_cast(NPHash64(reinterpret_cast(&op_type), +13943: sizeof(op_type), ProtectionInfo::kSeedO)); +13943: return ProtectionInfo(val); +13943: } +13943: +13943: template +13943: ProtectionInfo ProtectionInfoKVO::StripKVO(const SliceParts& key, +13943: const SliceParts& value, +13943: ValueType op_type) const { +13943: T val = GetVal(); +13943: val = val ^ +13943: static_cast(GetSlicePartsNPHash64(key, ProtectionInfo::kSeedK)); +13943: val = val ^ +13943: static_cast(GetSlicePartsNPHash64(value, ProtectionInfo::kSeedV)); +13943: val = val ^ +13943: static_cast(NPHash64(reinterpret_cast(&op_type), +13943: sizeof(op_type), ProtectionInfo::kSeedO)); +13943: return ProtectionInfo(val); +13943: } +13943: +13943: template +13943: ProtectionInfoKVOC ProtectionInfoKVO::ProtectC( +13943: ColumnFamilyId column_family_id) const { +13943: T val = GetVal(); +13943: val = val ^ static_cast(NPHash64( +13943: reinterpret_cast(&column_family_id), +13943: sizeof(column_family_id), ProtectionInfo::kSeedC)); +13943: return ProtectionInfoKVOC(val); +13943: } +13943: +13943: template +13943: ProtectionInfoKVO ProtectionInfoKVOC::StripC( +13943: ColumnFamilyId column_family_id) const { +13943: T val = GetVal(); +13943: val = val ^ static_cast(NPHash64( +13943: reinterpret_cast(&column_family_id), +13943: sizeof(column_family_id), ProtectionInfo::kSeedC)); +13943: return ProtectionInfoKVO(val); +13943: } +13943: +13943: template +13943: void ProtectionInfoKVOC::UpdateC(ColumnFamilyId old_column_family_id, +13943: ColumnFamilyId new_column_family_id) { +13943: T val = GetVal(); +13943: val = val ^ static_cast(NPHash64( +13943: reinterpret_cast(&old_column_family_id), +13943: sizeof(old_column_family_id), ProtectionInfo::kSeedC)); +13943: val = val ^ static_cast(NPHash64( +13943: reinterpret_cast(&new_column_family_id), +13943: sizeof(new_column_family_id), ProtectionInfo::kSeedC)); +13943: SetVal(val); +13943: } +13943: +13943: template +13943: ProtectionInfoKVOS ProtectionInfoKVO::ProtectS( +13943: SequenceNumber sequence_number) const { +13943: T val = GetVal(); +13943: val = val ^ static_cast(NPHash64(reinterpret_cast(&sequence_number), +13943: sizeof(sequence_number), +13943: ProtectionInfo::kSeedS)); +13943: return ProtectionInfoKVOS(val); +13943: } +13943: +13943: template +13943: ProtectionInfoKVO ProtectionInfoKVOS::StripS( +13943: SequenceNumber sequence_number) const { +13943: T val = GetVal(); +13943: val = val ^ static_cast(NPHash64(reinterpret_cast(&sequence_number), +13943: sizeof(sequence_number), +13943: ProtectionInfo::kSeedS)); +13943: return ProtectionInfoKVO(val); +13943: } +13943: +13943: template +13943: void ProtectionInfoKVOS::UpdateS(SequenceNumber old_sequence_number, +13943: SequenceNumber new_sequence_number) { +13943: T val = GetVal(); +13943: val = val ^ static_cast(NPHash64( +13943: reinterpret_cast(&old_sequence_number), +13943: sizeof(old_sequence_number), ProtectionInfo::kSeedS)); +13943: val = val ^ static_cast(NPHash64( +13943: reinterpret_cast(&new_sequence_number), +13943: sizeof(new_sequence_number), ProtectionInfo::kSeedS)); +13943: SetVal(val); +13943: } +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/attribute_groups.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class IteratorBase : public Cleanable { +13943: public: +13943: IteratorBase() {} +13943: +13943: IteratorBase(const IteratorBase&) = delete; +13943: void operator=(const IteratorBase&) = delete; +13943: +13943: virtual ~IteratorBase() {} +13943: +13943: +13943: +13943: +13943: virtual bool Valid() const = 0; +13943: +13943: +13943: +13943: virtual void SeekToFirst() = 0; +13943: +13943: +13943: +13943: virtual void SeekToLast() = 0; +13943: # 43 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" +13943: virtual void Seek(const Slice& target) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void SeekForPrev(const Slice& target) = 0; +13943: +13943: +13943: +13943: +13943: virtual void Next() = 0; +13943: +13943: +13943: +13943: +13943: virtual void Prev() = 0; +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" +13943: virtual Status Refresh() { return Refresh(nullptr); } +13943: +13943: +13943: +13943: virtual Status Refresh(const class Snapshot*) { +13943: return Status::NotSupported("Refresh() is not supported"); +13943: } +13943: # 96 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" +13943: virtual bool PrepareValue() { return true; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Slice key() const = 0; +13943: +13943: +13943: +13943: +13943: virtual Status status() const = 0; +13943: }; +13943: +13943: } +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/attribute_groups.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/ostream" 1 3 +13943: # 36 "/usr/include/c++/14/ostream" 3 +13943: +13943: # 37 "/usr/include/c++/14/ostream" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/ios" 1 3 +13943: # 36 "/usr/include/c++/14/ios" 3 +13943: +13943: # 37 "/usr/include/c++/14/ios" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/ios_base.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/locale_classes.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: # 47 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: +13943: # 47 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 66 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: class locale +13943: { +13943: public: +13943: +13943: +13943: typedef int category; +13943: +13943: +13943: class facet; +13943: class id; +13943: class _Impl; +13943: +13943: friend class facet; +13943: friend class _Impl; +13943: +13943: template +13943: friend bool +13943: has_facet(const locale&) throw(); +13943: +13943: template +13943: friend const _Facet& +13943: use_facet(const locale&); +13943: +13943: template +13943: friend const _Facet* +13943: __try_use_facet(const locale&) noexcept; +13943: +13943: template +13943: friend struct __use_cache; +13943: # 106 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: static const category none = 0; +13943: static const category ctype = 1L << 0; +13943: static const category numeric = 1L << 1; +13943: static const category collate = 1L << 2; +13943: static const category time = 1L << 3; +13943: static const category monetary = 1L << 4; +13943: static const category messages = 1L << 5; +13943: static const category all = (ctype | numeric | collate | +13943: time | monetary | messages); +13943: # 125 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: locale() throw(); +13943: # 134 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: locale(const locale& __other) throw(); +13943: # 144 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: explicit +13943: locale(const char* __s); +13943: # 159 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: locale(const locale& __base, const char* __s, category __cat); +13943: # 170 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: explicit +13943: locale(const std::string& __s) : locale(__s.c_str()) { } +13943: # 185 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: locale(const locale& __base, const std::string& __s, category __cat) +13943: : locale(__base, __s.c_str(), __cat) { } +13943: # 200 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: locale(const locale& __base, const locale& __add, category __cat); +13943: # 213 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: template +13943: locale(const locale& __other, _Facet* __f); +13943: +13943: +13943: ~locale() throw(); +13943: # 227 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: const locale& +13943: operator=(const locale& __other) throw(); +13943: # 242 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: locale +13943: combine(const locale& __other) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] __attribute ((__abi_tag__ ("cxx11"))) +13943: string +13943: name() const; +13943: # 273 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: [[__nodiscard__]] +13943: bool +13943: operator==(const locale& __other) const throw(); +13943: # 284 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: [[__nodiscard__]] +13943: bool +13943: operator!=(const locale& __other) const throw() +13943: { return !(this->operator==(__other)); } +13943: # 305 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: bool +13943: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, +13943: const basic_string<_Char, _Traits, _Alloc>& __s2) const; +13943: # 322 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: static locale +13943: global(const locale& __loc); +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: static const locale& +13943: classic(); +13943: +13943: private: +13943: +13943: _Impl* _M_impl; +13943: +13943: +13943: static _Impl* _S_classic; +13943: +13943: +13943: static _Impl* _S_global; +13943: +13943: +13943: +13943: +13943: +13943: static const char* const* const _S_categories; +13943: # 358 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: enum { _S_categories_size = 6 + 6 }; +13943: +13943: +13943: static __gthread_once_t _S_once; +13943: +13943: +13943: explicit +13943: locale(_Impl*) throw(); +13943: +13943: static void +13943: _S_initialize(); +13943: +13943: static void +13943: _S_initialize_once() throw(); +13943: +13943: static category +13943: _S_normalize_category(category); +13943: +13943: void +13943: _M_coalesce(const locale& __base, const locale& __add, category __cat); +13943: +13943: +13943: static const id* const _S_twinned_facets[]; +13943: +13943: }; +13943: # 396 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: class locale::facet +13943: { +13943: private: +13943: friend class locale; +13943: friend class locale::_Impl; +13943: +13943: mutable _Atomic_word _M_refcount; +13943: +13943: +13943: static __c_locale _S_c_locale; +13943: +13943: +13943: static const char _S_c_name[2]; +13943: +13943: +13943: static __gthread_once_t _S_once; +13943: +13943: +13943: static void +13943: _S_initialize_once(); +13943: +13943: protected: +13943: # 427 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: explicit +13943: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) +13943: { } +13943: +13943: +13943: virtual +13943: ~facet(); +13943: +13943: static void +13943: _S_create_c_locale(__c_locale& __cloc, const char* __s, +13943: __c_locale __old = 0); +13943: +13943: static __c_locale +13943: _S_clone_c_locale(__c_locale& __cloc) throw(); +13943: +13943: static void +13943: _S_destroy_c_locale(__c_locale& __cloc); +13943: +13943: static __c_locale +13943: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); +13943: +13943: +13943: +13943: static __c_locale +13943: _S_get_c_locale(); +13943: +13943: __attribute__ ((__const__)) static const char* +13943: _S_get_c_name() throw(); +13943: # 463 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: facet(const facet&) = delete; +13943: +13943: facet& +13943: operator=(const facet&) = delete; +13943: +13943: +13943: private: +13943: void +13943: _M_add_reference() const throw() +13943: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } +13943: +13943: void +13943: _M_remove_reference() const throw() +13943: { +13943: +13943: ; +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) +13943: { +13943: ; +13943: try +13943: { delete this; } +13943: catch(...) +13943: { } +13943: } +13943: } +13943: +13943: const facet* _M_sso_shim(const id*) const; +13943: const facet* _M_cow_shim(const id*) const; +13943: +13943: protected: +13943: class __shim; +13943: }; +13943: # 508 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: class locale::id +13943: { +13943: private: +13943: friend class locale; +13943: friend class locale::_Impl; +13943: +13943: template +13943: friend const _Facet& +13943: use_facet(const locale&); +13943: +13943: template +13943: friend bool +13943: has_facet(const locale&) throw(); +13943: +13943: template +13943: friend const _Facet* +13943: __try_use_facet(const locale&) noexcept; +13943: +13943: +13943: +13943: +13943: mutable size_t _M_index; +13943: +13943: +13943: static _Atomic_word _S_refcount; +13943: +13943: void +13943: operator=(const id&); +13943: +13943: id(const id&); +13943: +13943: public: +13943: +13943: +13943: +13943: id() { } +13943: +13943: size_t +13943: _M_id() const throw(); +13943: }; +13943: +13943: +13943: +13943: class locale::_Impl +13943: { +13943: public: +13943: +13943: friend class locale; +13943: friend class locale::facet; +13943: +13943: template +13943: friend bool +13943: has_facet(const locale&) throw(); +13943: +13943: template +13943: friend const _Facet& +13943: use_facet(const locale&); +13943: +13943: template +13943: friend const _Facet* +13943: __try_use_facet(const locale&) noexcept; +13943: +13943: template +13943: friend struct __use_cache; +13943: +13943: private: +13943: +13943: _Atomic_word _M_refcount; +13943: const facet** _M_facets; +13943: size_t _M_facets_size; +13943: const facet** _M_caches; +13943: char** _M_names; +13943: static const locale::id* const _S_id_ctype[]; +13943: static const locale::id* const _S_id_numeric[]; +13943: static const locale::id* const _S_id_collate[]; +13943: static const locale::id* const _S_id_time[]; +13943: static const locale::id* const _S_id_monetary[]; +13943: static const locale::id* const _S_id_messages[]; +13943: static const locale::id* const* const _S_facet_categories[]; +13943: +13943: void +13943: _M_add_reference() throw() +13943: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } +13943: +13943: void +13943: _M_remove_reference() throw() +13943: { +13943: +13943: ; +13943: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) +13943: { +13943: ; +13943: try +13943: { delete this; } +13943: catch(...) +13943: { } +13943: } +13943: } +13943: +13943: _Impl(const _Impl&, size_t); +13943: _Impl(const char*, size_t); +13943: _Impl(size_t) throw(); +13943: +13943: ~_Impl() throw(); +13943: +13943: _Impl(const _Impl&); +13943: +13943: void +13943: operator=(const _Impl&); +13943: +13943: bool +13943: _M_check_same_name() +13943: { +13943: bool __ret = true; +13943: if (_M_names[1]) +13943: +13943: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) +13943: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; +13943: return __ret; +13943: } +13943: +13943: void +13943: _M_replace_categories(const _Impl*, category); +13943: +13943: void +13943: _M_replace_category(const _Impl*, const locale::id* const*); +13943: +13943: void +13943: _M_replace_facet(const _Impl*, const locale::id*); +13943: +13943: void +13943: _M_install_facet(const locale::id*, const facet*); +13943: +13943: template +13943: void +13943: _M_init_facet(_Facet* __facet) +13943: { _M_install_facet(&_Facet::id, __facet); } +13943: +13943: template +13943: void +13943: _M_init_facet_unchecked(_Facet* __facet) +13943: { +13943: __facet->_M_add_reference(); +13943: _M_facets[_Facet::id._M_id()] = __facet; +13943: } +13943: +13943: void +13943: _M_install_cache(const facet*, size_t); +13943: +13943: void _M_init_extra(facet**); +13943: void _M_init_extra(void*, void*, const char*, const char*); +13943: +13943: +13943: +13943: +13943: }; +13943: # 678 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: template +13943: class __cxx11:: collate : public locale::facet +13943: { +13943: public: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef basic_string<_CharT> string_type; +13943: +13943: +13943: protected: +13943: +13943: +13943: __c_locale _M_c_locale_collate; +13943: +13943: public: +13943: +13943: static locale::id id; +13943: # 705 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: explicit +13943: collate(size_t __refs = 0) +13943: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) +13943: { } +13943: # 719 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: explicit +13943: collate(__c_locale __cloc, size_t __refs = 0) +13943: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) +13943: { } +13943: # 736 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: int +13943: compare(const _CharT* __lo1, const _CharT* __hi1, +13943: const _CharT* __lo2, const _CharT* __hi2) const +13943: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } +13943: # 755 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: string_type +13943: transform(const _CharT* __lo, const _CharT* __hi) const +13943: { return this->do_transform(__lo, __hi); } +13943: # 769 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: long +13943: hash(const _CharT* __lo, const _CharT* __hi) const +13943: { return this->do_hash(__lo, __hi); } +13943: +13943: +13943: int +13943: _M_compare(const _CharT*, const _CharT*) const throw(); +13943: +13943: size_t +13943: _M_transform(_CharT*, const _CharT*, size_t) const throw(); +13943: +13943: protected: +13943: +13943: virtual +13943: ~collate() +13943: { _S_destroy_c_locale(_M_c_locale_collate); } +13943: # 798 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: virtual int +13943: do_compare(const _CharT* __lo1, const _CharT* __hi1, +13943: const _CharT* __lo2, const _CharT* __hi2) const; +13943: # 812 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: virtual string_type +13943: do_transform(const _CharT* __lo, const _CharT* __hi) const; +13943: # 825 "/usr/include/c++/14/bits/locale_classes.h" 3 +13943: virtual long +13943: do_hash(const _CharT* __lo, const _CharT* __hi) const; +13943: }; +13943: +13943: template +13943: locale::id collate<_CharT>::id; +13943: +13943: +13943: template<> +13943: int +13943: collate::_M_compare(const char*, const char*) const throw(); +13943: +13943: template<> +13943: size_t +13943: collate::_M_transform(char*, const char*, size_t) const throw(); +13943: +13943: +13943: template<> +13943: int +13943: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); +13943: +13943: template<> +13943: size_t +13943: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); +13943: +13943: +13943: +13943: template +13943: class __cxx11:: collate_byname : public collate<_CharT> +13943: { +13943: public: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef basic_string<_CharT> string_type; +13943: +13943: +13943: explicit +13943: collate_byname(const char* __s, size_t __refs = 0) +13943: : collate<_CharT>(__refs) +13943: { +13943: if (__builtin_strcmp(__s, "C") != 0 +13943: && __builtin_strcmp(__s, "POSIX") != 0) +13943: { +13943: this->_S_destroy_c_locale(this->_M_c_locale_collate); +13943: this->_S_create_c_locale(this->_M_c_locale_collate, __s); +13943: } +13943: } +13943: +13943: +13943: explicit +13943: collate_byname(const string& __s, size_t __refs = 0) +13943: : collate_byname(__s.c_str(), __refs) { } +13943: +13943: +13943: protected: +13943: virtual +13943: ~collate_byname() { } +13943: }; +13943: +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/locale_classes.tcc" 1 3 +13943: # 37 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: locale:: +13943: locale(const locale& __other, _Facet* __f) +13943: { +13943: _M_impl = new _Impl(*__other._M_impl, 1); +13943: +13943: try +13943: { _M_impl->_M_install_facet(&_Facet::id, __f); } +13943: catch(...) +13943: { +13943: _M_impl->_M_remove_reference(); +13943: throw; +13943: } +13943: delete [] _M_impl->_M_names[0]; +13943: _M_impl->_M_names[0] = 0; +13943: } +13943: +13943: template +13943: locale +13943: locale:: +13943: combine(const locale& __other) const +13943: { +13943: _Impl* __tmp = new _Impl(*_M_impl, 1); +13943: try +13943: { +13943: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); +13943: } +13943: catch(...) +13943: { +13943: __tmp->_M_remove_reference(); +13943: throw; +13943: } +13943: return locale(__tmp); +13943: } +13943: +13943: template +13943: bool +13943: locale:: +13943: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, +13943: const basic_string<_CharT, _Traits, _Alloc>& __s2) const +13943: { +13943: typedef std::collate<_CharT> __collate_type; +13943: const __collate_type& __collate = use_facet<__collate_type>(*this); +13943: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), +13943: __s2.data(), __s2.data() + __s2.length()) < 0); +13943: } +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++17-extensions" +13943: template +13943: inline const _Facet* +13943: __try_use_facet(const locale& __loc) noexcept +13943: { +13943: const size_t __i = _Facet::id._M_id(); +13943: const locale::facet** __facets = __loc._M_impl->_M_facets; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if constexpr (__is_same(_Facet, ctype)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, num_get)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, num_put)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, collate)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, money_get)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, money_put)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, numpunct)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, time_get)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, time_put)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, messages)) return static_cast(__facets[__i]); +13943: +13943: +13943: if constexpr (__is_same(_Facet, ctype)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, num_get)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, num_put)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, collate)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, money_get)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, money_put)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, numpunct)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, time_get)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, time_put)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, messages)) return static_cast(__facets[__i]); +13943: +13943: +13943: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +13943: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +13943: +13943: +13943: +13943: +13943: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) +13943: return 0; +13943: +13943: +13943: return dynamic_cast(__facets[__i]); +13943: +13943: +13943: +13943: } +13943: #pragma GCC diagnostic pop +13943: # 164 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: has_facet(const locale& __loc) throw() +13943: { +13943: +13943: static_assert(__is_base_of(locale::facet, _Facet), +13943: "template argument must be derived from locale::facet"); +13943: +13943: +13943: +13943: return std::__try_use_facet<_Facet>(__loc) != 0; +13943: } +13943: # 192 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdangling-reference" +13943: template +13943: [[__nodiscard__]] +13943: inline const _Facet& +13943: use_facet(const locale& __loc) +13943: { +13943: +13943: static_assert(__is_base_of(locale::facet, _Facet), +13943: "template argument must be derived from locale::facet"); +13943: +13943: +13943: +13943: if (const _Facet* __f = std::__try_use_facet<_Facet>(__loc)) +13943: return *__f; +13943: __throw_bad_cast(); +13943: } +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: template +13943: int +13943: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () +13943: { return 0; } +13943: +13943: +13943: template +13943: size_t +13943: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () +13943: { return 0; } +13943: +13943: template +13943: int +13943: collate<_CharT>:: +13943: do_compare(const _CharT* __lo1, const _CharT* __hi1, +13943: const _CharT* __lo2, const _CharT* __hi2) const +13943: { +13943: +13943: +13943: const string_type __one(__lo1, __hi1); +13943: const string_type __two(__lo2, __hi2); +13943: +13943: const _CharT* __p = __one.c_str(); +13943: const _CharT* __pend = __one.data() + __one.length(); +13943: const _CharT* __q = __two.c_str(); +13943: const _CharT* __qend = __two.data() + __two.length(); +13943: +13943: +13943: +13943: +13943: for (;;) +13943: { +13943: const int __res = _M_compare(__p, __q); +13943: if (__res) +13943: return __res; +13943: +13943: __p += char_traits<_CharT>::length(__p); +13943: __q += char_traits<_CharT>::length(__q); +13943: if (__p == __pend && __q == __qend) +13943: return 0; +13943: else if (__p == __pend) +13943: return -1; +13943: else if (__q == __qend) +13943: return 1; +13943: +13943: __p++; +13943: __q++; +13943: } +13943: } +13943: +13943: template +13943: typename collate<_CharT>::string_type +13943: collate<_CharT>:: +13943: do_transform(const _CharT* __lo, const _CharT* __hi) const +13943: { +13943: string_type __ret; +13943: +13943: +13943: const string_type __str(__lo, __hi); +13943: +13943: const _CharT* __p = __str.c_str(); +13943: const _CharT* __pend = __str.data() + __str.length(); +13943: +13943: size_t __len = (__hi - __lo) * 2; +13943: +13943: _CharT* __c = new _CharT[__len]; +13943: +13943: try +13943: { +13943: +13943: +13943: +13943: for (;;) +13943: { +13943: +13943: size_t __res = _M_transform(__c, __p, __len); +13943: +13943: +13943: if (__res >= __len) +13943: { +13943: __len = __res + 1; +13943: delete [] __c, __c = 0; +13943: __c = new _CharT[__len]; +13943: __res = _M_transform(__c, __p, __len); +13943: } +13943: +13943: __ret.append(__c, __res); +13943: __p += char_traits<_CharT>::length(__p); +13943: if (__p == __pend) +13943: break; +13943: +13943: __p++; +13943: __ret.push_back(_CharT()); +13943: } +13943: } +13943: catch(...) +13943: { +13943: delete [] __c; +13943: throw; +13943: } +13943: +13943: delete [] __c; +13943: +13943: return __ret; +13943: } +13943: +13943: template +13943: long +13943: collate<_CharT>:: +13943: do_hash(const _CharT* __lo, const _CharT* __hi) const +13943: { +13943: unsigned long __val = 0; +13943: for (; __lo < __hi; ++__lo) +13943: __val = +13943: *__lo + ((__val << 7) +13943: | (__val >> (__gnu_cxx::__numeric_traits:: +13943: __digits - 7))); +13943: return static_cast(__val); +13943: } +13943: +13943: +13943: +13943: +13943: extern template class collate; +13943: extern template class collate_byname; +13943: +13943: extern template +13943: const collate* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const collate& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: +13943: extern template class collate; +13943: extern template class collate_byname; +13943: +13943: extern template +13943: const collate* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const collate& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: +13943: +13943: +13943: } +13943: # 889 "/usr/include/c++/14/bits/locale_classes.h" 2 3 +13943: # 42 "/usr/include/c++/14/bits/ios_base.h" 2 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/system_error" 1 3 +13943: # 32 "/usr/include/c++/14/system_error" 3 +13943: +13943: # 33 "/usr/include/c++/14/system_error" 3 +13943: # 43 "/usr/include/c++/14/system_error" 3 +13943: # 1 "/usr/include/c++/14/stdexcept" 1 3 +13943: # 36 "/usr/include/c++/14/stdexcept" 3 +13943: +13943: # 37 "/usr/include/c++/14/stdexcept" 3 +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: struct __cow_string +13943: { +13943: union { +13943: const char* _M_p; +13943: char _M_bytes[sizeof(const char*)]; +13943: }; +13943: +13943: __cow_string(); +13943: __cow_string(const std::string&); +13943: __cow_string(const char*, size_t); +13943: __cow_string(const __cow_string&) noexcept; +13943: __cow_string& operator=(const __cow_string&) noexcept; +13943: ~__cow_string(); +13943: +13943: __cow_string(__cow_string&&) noexcept; +13943: __cow_string& operator=(__cow_string&&) noexcept; +13943: +13943: }; +13943: +13943: typedef basic_string __sso_string; +13943: # 113 "/usr/include/c++/14/stdexcept" 3 +13943: class logic_error : public exception +13943: { +13943: __cow_string _M_msg; +13943: +13943: public: +13943: +13943: explicit +13943: logic_error(const string& __arg) ; +13943: +13943: +13943: explicit +13943: logic_error(const char*) ; +13943: +13943: logic_error(logic_error&&) noexcept; +13943: logic_error& operator=(logic_error&&) noexcept; +13943: +13943: +13943: +13943: logic_error(const logic_error&) noexcept; +13943: logic_error& operator=(const logic_error&) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: virtual ~logic_error() noexcept; +13943: +13943: +13943: +13943: virtual const char* +13943: what() const noexcept; +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: class domain_error : public logic_error +13943: { +13943: public: +13943: explicit domain_error(const string& __arg) ; +13943: +13943: explicit domain_error(const char*) ; +13943: domain_error(const domain_error&) = default; +13943: domain_error& operator=(const domain_error&) = default; +13943: domain_error(domain_error&&) = default; +13943: domain_error& operator=(domain_error&&) = default; +13943: +13943: virtual ~domain_error() noexcept; +13943: }; +13943: +13943: +13943: class invalid_argument : public logic_error +13943: { +13943: public: +13943: explicit invalid_argument(const string& __arg) ; +13943: +13943: explicit invalid_argument(const char*) ; +13943: invalid_argument(const invalid_argument&) = default; +13943: invalid_argument& operator=(const invalid_argument&) = default; +13943: invalid_argument(invalid_argument&&) = default; +13943: invalid_argument& operator=(invalid_argument&&) = default; +13943: +13943: virtual ~invalid_argument() noexcept; +13943: }; +13943: +13943: +13943: +13943: class length_error : public logic_error +13943: { +13943: public: +13943: explicit length_error(const string& __arg) ; +13943: +13943: explicit length_error(const char*) ; +13943: length_error(const length_error&) = default; +13943: length_error& operator=(const length_error&) = default; +13943: length_error(length_error&&) = default; +13943: length_error& operator=(length_error&&) = default; +13943: +13943: virtual ~length_error() noexcept; +13943: }; +13943: +13943: +13943: +13943: class out_of_range : public logic_error +13943: { +13943: public: +13943: explicit out_of_range(const string& __arg) ; +13943: +13943: explicit out_of_range(const char*) ; +13943: out_of_range(const out_of_range&) = default; +13943: out_of_range& operator=(const out_of_range&) = default; +13943: out_of_range(out_of_range&&) = default; +13943: out_of_range& operator=(out_of_range&&) = default; +13943: +13943: virtual ~out_of_range() noexcept; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class runtime_error : public exception +13943: { +13943: __cow_string _M_msg; +13943: +13943: public: +13943: +13943: explicit +13943: runtime_error(const string& __arg) ; +13943: +13943: +13943: explicit +13943: runtime_error(const char*) ; +13943: +13943: runtime_error(runtime_error&&) noexcept; +13943: runtime_error& operator=(runtime_error&&) noexcept; +13943: +13943: +13943: +13943: runtime_error(const runtime_error&) noexcept; +13943: runtime_error& operator=(const runtime_error&) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: virtual ~runtime_error() noexcept; +13943: +13943: +13943: +13943: virtual const char* +13943: what() const noexcept; +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: class range_error : public runtime_error +13943: { +13943: public: +13943: explicit range_error(const string& __arg) ; +13943: +13943: explicit range_error(const char*) ; +13943: range_error(const range_error&) = default; +13943: range_error& operator=(const range_error&) = default; +13943: range_error(range_error&&) = default; +13943: range_error& operator=(range_error&&) = default; +13943: +13943: virtual ~range_error() noexcept; +13943: }; +13943: +13943: +13943: class overflow_error : public runtime_error +13943: { +13943: public: +13943: explicit overflow_error(const string& __arg) ; +13943: +13943: explicit overflow_error(const char*) ; +13943: overflow_error(const overflow_error&) = default; +13943: overflow_error& operator=(const overflow_error&) = default; +13943: overflow_error(overflow_error&&) = default; +13943: overflow_error& operator=(overflow_error&&) = default; +13943: +13943: virtual ~overflow_error() noexcept; +13943: }; +13943: +13943: +13943: class underflow_error : public runtime_error +13943: { +13943: public: +13943: explicit underflow_error(const string& __arg) ; +13943: +13943: explicit underflow_error(const char*) ; +13943: underflow_error(const underflow_error&) = default; +13943: underflow_error& operator=(const underflow_error&) = default; +13943: underflow_error(underflow_error&&) = default; +13943: underflow_error& operator=(underflow_error&&) = default; +13943: +13943: virtual ~underflow_error() noexcept; +13943: }; +13943: +13943: +13943: +13943: +13943: } +13943: # 44 "/usr/include/c++/14/system_error" 2 3 +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: class error_code; +13943: class error_condition; +13943: class system_error; +13943: +13943: +13943: template +13943: struct is_error_code_enum : public false_type { }; +13943: +13943: +13943: template +13943: struct is_error_condition_enum : public false_type { }; +13943: +13943: template<> +13943: struct is_error_condition_enum +13943: : public true_type { }; +13943: +13943: +13943: template +13943: inline constexpr bool is_error_code_enum_v = +13943: is_error_code_enum<_Tp>::value; +13943: template +13943: inline constexpr bool is_error_condition_enum_v = +13943: is_error_condition_enum<_Tp>::value; +13943: +13943: +13943: +13943: inline namespace _V2 { +13943: # 106 "/usr/include/c++/14/system_error" 3 +13943: class error_category +13943: { +13943: public: +13943: constexpr error_category() noexcept = default; +13943: +13943: virtual ~error_category(); +13943: +13943: error_category(const error_category&) = delete; +13943: error_category& operator=(const error_category&) = delete; +13943: +13943: +13943: virtual const char* +13943: name() const noexcept = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: private: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: virtual __cow_string +13943: _M_message(int) const; +13943: +13943: public: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: virtual string +13943: message(int) const = 0; +13943: # 144 "/usr/include/c++/14/system_error" 3 +13943: public: +13943: +13943: virtual error_condition +13943: default_error_condition(int __i) const noexcept; +13943: +13943: +13943: virtual bool +13943: equivalent(int __i, const error_condition& __cond) const noexcept; +13943: +13943: +13943: virtual bool +13943: equivalent(const error_code& __code, int __i) const noexcept; +13943: +13943: +13943: [[__nodiscard__]] +13943: bool +13943: operator==(const error_category& __other) const noexcept +13943: { return this == &__other; } +13943: # 170 "/usr/include/c++/14/system_error" 3 +13943: bool +13943: operator<(const error_category& __other) const noexcept +13943: { return less()(this, &__other); } +13943: +13943: bool +13943: operator!=(const error_category& __other) const noexcept +13943: { return this != &__other; } +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: [[__nodiscard__, __gnu__::__const__]] +13943: const error_category& +13943: generic_category() noexcept; +13943: +13943: +13943: [[__nodiscard__, __gnu__::__const__]] +13943: const error_category& +13943: system_category() noexcept; +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: namespace __adl_only +13943: { +13943: void make_error_code() = delete; +13943: void make_error_condition() = delete; +13943: } +13943: # 223 "/usr/include/c++/14/system_error" 3 +13943: class error_code +13943: { +13943: template +13943: using _Check +13943: = __enable_if_t::value>; +13943: +13943: public: +13943: error_code() noexcept +13943: : _M_value(0), _M_cat(&system_category()) { } +13943: +13943: error_code(int __v, const error_category& __cat) noexcept +13943: : _M_value(__v), _M_cat(&__cat) { } +13943: +13943: +13943: template> +13943: error_code(_ErrorCodeEnum __e) noexcept +13943: { +13943: using __adl_only::make_error_code; +13943: *this = make_error_code(__e); +13943: } +13943: +13943: error_code(const error_code&) = default; +13943: error_code& operator=(const error_code&) = default; +13943: +13943: void +13943: assign(int __v, const error_category& __cat) noexcept +13943: { +13943: _M_value = __v; +13943: _M_cat = &__cat; +13943: } +13943: +13943: void +13943: clear() noexcept +13943: { assign(0, system_category()); } +13943: +13943: +13943: [[__nodiscard__]] +13943: int +13943: value() const noexcept { return _M_value; } +13943: +13943: +13943: [[__nodiscard__]] +13943: const error_category& +13943: category() const noexcept { return *_M_cat; } +13943: +13943: +13943: error_condition +13943: default_error_condition() const noexcept; +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: string +13943: message() const +13943: { return category().message(value()); } +13943: +13943: +13943: [[__nodiscard__]] +13943: explicit operator bool() const noexcept +13943: { return _M_value != 0; } +13943: +13943: +13943: private: +13943: int _M_value; +13943: const error_category* _M_cat; +13943: }; +13943: # 300 "/usr/include/c++/14/system_error" 3 +13943: [[__nodiscard__]] +13943: inline error_code +13943: make_error_code(errc __e) noexcept +13943: { return error_code(static_cast(__e), generic_category()); } +13943: # 323 "/usr/include/c++/14/system_error" 3 +13943: inline bool +13943: operator<(const error_code& __lhs, const error_code& __rhs) noexcept +13943: { +13943: return (__lhs.category() < __rhs.category() +13943: || (__lhs.category() == __rhs.category() +13943: && __lhs.value() < __rhs.value())); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) +13943: { return (__os << __e.category().name() << ':' << __e.value()); } +13943: # 354 "/usr/include/c++/14/system_error" 3 +13943: class error_condition +13943: { +13943: template +13943: using _Check +13943: = __enable_if_t::value>; +13943: +13943: public: +13943: +13943: error_condition() noexcept +13943: : _M_value(0), _M_cat(&generic_category()) { } +13943: +13943: +13943: error_condition(int __v, const error_category& __cat) noexcept +13943: : _M_value(__v), _M_cat(&__cat) { } +13943: +13943: +13943: template> +13943: error_condition(_ErrorConditionEnum __e) noexcept +13943: { +13943: using __adl_only::make_error_condition; +13943: *this = make_error_condition(__e); +13943: } +13943: +13943: error_condition(const error_condition&) = default; +13943: error_condition& operator=(const error_condition&) = default; +13943: +13943: +13943: void +13943: assign(int __v, const error_category& __cat) noexcept +13943: { +13943: _M_value = __v; +13943: _M_cat = &__cat; +13943: } +13943: +13943: +13943: void +13943: clear() noexcept +13943: { assign(0, generic_category()); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: int +13943: value() const noexcept { return _M_value; } +13943: +13943: +13943: [[__nodiscard__]] +13943: const error_category& +13943: category() const noexcept { return *_M_cat; } +13943: +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: string +13943: message() const +13943: { return category().message(value()); } +13943: +13943: +13943: [[__nodiscard__]] +13943: explicit operator bool() const noexcept +13943: { return _M_value != 0; } +13943: +13943: +13943: private: +13943: int _M_value; +13943: const error_category* _M_cat; +13943: }; +13943: # 433 "/usr/include/c++/14/system_error" 3 +13943: [[__nodiscard__]] +13943: inline error_condition +13943: make_error_condition(errc __e) noexcept +13943: { return error_condition(static_cast(__e), generic_category()); } +13943: # 447 "/usr/include/c++/14/system_error" 3 +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const error_code& __lhs, const error_code& __rhs) noexcept +13943: { +13943: return __lhs.category() == __rhs.category() +13943: && __lhs.value() == __rhs.value(); +13943: } +13943: # 463 "/usr/include/c++/14/system_error" 3 +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept +13943: { +13943: return __lhs.category().equivalent(__lhs.value(), __rhs) +13943: || __rhs.category().equivalent(__lhs, __rhs.value()); +13943: } +13943: # 478 "/usr/include/c++/14/system_error" 3 +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const error_condition& __lhs, +13943: const error_condition& __rhs) noexcept +13943: { +13943: return __lhs.category() == __rhs.category() +13943: && __lhs.value() == __rhs.value(); +13943: } +13943: # 506 "/usr/include/c++/14/system_error" 3 +13943: inline bool +13943: operator<(const error_condition& __lhs, +13943: const error_condition& __rhs) noexcept +13943: { +13943: return (__lhs.category() < __rhs.category() +13943: || (__lhs.category() == __rhs.category() +13943: && __lhs.value() < __rhs.value())); +13943: } +13943: +13943: +13943: inline bool +13943: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept +13943: { +13943: return (__rhs.category().equivalent(__rhs.value(), __lhs) +13943: || __lhs.category().equivalent(__rhs, __lhs.value())); +13943: } +13943: +13943: +13943: inline bool +13943: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept +13943: { return !(__lhs == __rhs); } +13943: +13943: +13943: inline bool +13943: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept +13943: { return !(__lhs == __rhs); } +13943: +13943: +13943: inline bool +13943: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept +13943: { return !(__lhs == __rhs); } +13943: +13943: +13943: inline bool +13943: operator!=(const error_condition& __lhs, +13943: const error_condition& __rhs) noexcept +13943: { return !(__lhs == __rhs); } +13943: # 556 "/usr/include/c++/14/system_error" 3 +13943: class system_error : public std::runtime_error +13943: { +13943: private: +13943: error_code _M_code; +13943: +13943: public: +13943: system_error(error_code __ec = error_code()) +13943: : runtime_error(__ec.message()), _M_code(__ec) { } +13943: +13943: system_error(error_code __ec, const string& __what) +13943: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } +13943: +13943: system_error(error_code __ec, const char* __what) +13943: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } +13943: +13943: system_error(int __v, const error_category& __ecat, const char* __what) +13943: : system_error(error_code(__v, __ecat), __what) { } +13943: +13943: system_error(int __v, const error_category& __ecat) +13943: : runtime_error(error_code(__v, __ecat).message()), +13943: _M_code(__v, __ecat) { } +13943: +13943: system_error(int __v, const error_category& __ecat, const string& __what) +13943: : runtime_error(__what + (": " + error_code(__v, __ecat).message())), +13943: _M_code(__v, __ecat) { } +13943: +13943: +13943: system_error (const system_error &) = default; +13943: system_error &operator= (const system_error &) = default; +13943: +13943: +13943: virtual ~system_error() noexcept; +13943: +13943: const error_code& +13943: code() const noexcept { return _M_code; } +13943: }; +13943: +13943: +13943: } +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: size_t +13943: operator()(const error_code& __e) const noexcept +13943: { +13943: const size_t __tmp = std::_Hash_impl::hash(__e.value()); +13943: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp); +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: struct hash +13943: : public __hash_base +13943: { +13943: size_t +13943: operator()(const error_condition& __e) const noexcept +13943: { +13943: const size_t __tmp = std::_Hash_impl::hash(__e.value()); +13943: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp); +13943: } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 47 "/usr/include/c++/14/bits/ios_base.h" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum _Ios_Fmtflags +13943: { +13943: _S_boolalpha = 1L << 0, +13943: _S_dec = 1L << 1, +13943: _S_fixed = 1L << 2, +13943: _S_hex = 1L << 3, +13943: _S_internal = 1L << 4, +13943: _S_left = 1L << 5, +13943: _S_oct = 1L << 6, +13943: _S_right = 1L << 7, +13943: _S_scientific = 1L << 8, +13943: _S_showbase = 1L << 9, +13943: _S_showpoint = 1L << 10, +13943: _S_showpos = 1L << 11, +13943: _S_skipws = 1L << 12, +13943: _S_unitbuf = 1L << 13, +13943: _S_uppercase = 1L << 14, +13943: _S_adjustfield = _S_left | _S_right | _S_internal, +13943: _S_basefield = _S_dec | _S_oct | _S_hex, +13943: _S_floatfield = _S_scientific | _S_fixed, +13943: _S_ios_fmtflags_end = 1L << 16, +13943: _S_ios_fmtflags_max = 0x7fffffff, +13943: _S_ios_fmtflags_min = ~0x7fffffff +13943: }; +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Fmtflags +13943: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept +13943: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Fmtflags +13943: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept +13943: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Fmtflags +13943: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept +13943: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Fmtflags +13943: operator~(_Ios_Fmtflags __a) noexcept +13943: { return _Ios_Fmtflags(~static_cast(__a)); } +13943: +13943: constexpr +13943: inline const _Ios_Fmtflags& +13943: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept +13943: { return __a = __a | __b; } +13943: +13943: constexpr +13943: inline const _Ios_Fmtflags& +13943: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept +13943: { return __a = __a & __b; } +13943: +13943: constexpr +13943: inline const _Ios_Fmtflags& +13943: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept +13943: { return __a = __a ^ __b; } +13943: +13943: +13943: enum _Ios_Openmode +13943: { +13943: _S_app = 1L << 0, +13943: _S_ate = 1L << 1, +13943: _S_bin = 1L << 2, +13943: _S_in = 1L << 3, +13943: _S_out = 1L << 4, +13943: _S_trunc = 1L << 5, +13943: _S_noreplace = 1L << 6, +13943: _S_ios_openmode_end = 1L << 16, +13943: _S_ios_openmode_max = 0x7fffffff, +13943: _S_ios_openmode_min = ~0x7fffffff +13943: }; +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Openmode +13943: operator&(_Ios_Openmode __a, _Ios_Openmode __b) noexcept +13943: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Openmode +13943: operator|(_Ios_Openmode __a, _Ios_Openmode __b) noexcept +13943: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Openmode +13943: operator^(_Ios_Openmode __a, _Ios_Openmode __b) noexcept +13943: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Openmode +13943: operator~(_Ios_Openmode __a) noexcept +13943: { return _Ios_Openmode(~static_cast(__a)); } +13943: +13943: constexpr +13943: inline const _Ios_Openmode& +13943: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept +13943: { return __a = __a | __b; } +13943: +13943: constexpr +13943: inline const _Ios_Openmode& +13943: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept +13943: { return __a = __a & __b; } +13943: +13943: constexpr +13943: inline const _Ios_Openmode& +13943: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept +13943: { return __a = __a ^ __b; } +13943: +13943: +13943: enum _Ios_Iostate +13943: { +13943: _S_goodbit = 0, +13943: _S_badbit = 1L << 0, +13943: _S_eofbit = 1L << 1, +13943: _S_failbit = 1L << 2, +13943: _S_ios_iostate_end = 1L << 16, +13943: _S_ios_iostate_max = 0x7fffffff, +13943: _S_ios_iostate_min = ~0x7fffffff +13943: }; +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Iostate +13943: operator&(_Ios_Iostate __a, _Ios_Iostate __b) noexcept +13943: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Iostate +13943: operator|(_Ios_Iostate __a, _Ios_Iostate __b) noexcept +13943: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Iostate +13943: operator^(_Ios_Iostate __a, _Ios_Iostate __b) noexcept +13943: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } +13943: +13943: [[__nodiscard__]] constexpr +13943: inline _Ios_Iostate +13943: operator~(_Ios_Iostate __a) noexcept +13943: { return _Ios_Iostate(~static_cast(__a)); } +13943: +13943: constexpr +13943: inline const _Ios_Iostate& +13943: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept +13943: { return __a = __a | __b; } +13943: +13943: constexpr +13943: inline const _Ios_Iostate& +13943: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept +13943: { return __a = __a & __b; } +13943: +13943: constexpr +13943: inline const _Ios_Iostate& +13943: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept +13943: { return __a = __a ^ __b; } +13943: +13943: +13943: enum _Ios_Seekdir +13943: { +13943: _S_beg = 0, +13943: _S_cur = 1, +13943: _S_end = 2, +13943: _S_ios_seekdir_end = 1L << 16 +13943: }; +13943: +13943: +13943: +13943: enum class io_errc { stream = 1 }; +13943: +13943: template <> struct is_error_code_enum : public true_type { }; +13943: +13943: [[__nodiscard__, __gnu__::__const__]] +13943: const error_category& +13943: iostream_category() noexcept; +13943: +13943: [[__nodiscard__]] +13943: inline error_code +13943: make_error_code(io_errc __e) noexcept +13943: { return error_code(static_cast(__e), iostream_category()); } +13943: +13943: [[__nodiscard__]] +13943: inline error_condition +13943: make_error_condition(io_errc __e) noexcept +13943: { return error_condition(static_cast(__e), iostream_category()); } +13943: # 254 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: class ios_base +13943: { +13943: # 272 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: public: +13943: # 281 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error +13943: { +13943: public: +13943: explicit +13943: failure(const string& __str); +13943: +13943: +13943: explicit +13943: failure(const string&, const error_code&); +13943: +13943: explicit +13943: failure(const char*, const error_code& = io_errc::stream); +13943: +13943: +13943: virtual +13943: ~failure() throw(); +13943: +13943: virtual const char* +13943: what() const throw(); +13943: }; +13943: # 367 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: typedef _Ios_Fmtflags fmtflags; +13943: +13943: +13943: static const fmtflags boolalpha = _S_boolalpha; +13943: +13943: +13943: static const fmtflags dec = _S_dec; +13943: +13943: +13943: static const fmtflags fixed = _S_fixed; +13943: +13943: +13943: static const fmtflags hex = _S_hex; +13943: +13943: +13943: +13943: +13943: static const fmtflags internal = _S_internal; +13943: +13943: +13943: +13943: static const fmtflags left = _S_left; +13943: +13943: +13943: static const fmtflags oct = _S_oct; +13943: +13943: +13943: +13943: static const fmtflags right = _S_right; +13943: +13943: +13943: static const fmtflags scientific = _S_scientific; +13943: +13943: +13943: +13943: static const fmtflags showbase = _S_showbase; +13943: +13943: +13943: +13943: static const fmtflags showpoint = _S_showpoint; +13943: +13943: +13943: static const fmtflags showpos = _S_showpos; +13943: +13943: +13943: static const fmtflags skipws = _S_skipws; +13943: +13943: +13943: static const fmtflags unitbuf = _S_unitbuf; +13943: +13943: +13943: +13943: static const fmtflags uppercase = _S_uppercase; +13943: +13943: +13943: static const fmtflags adjustfield = _S_adjustfield; +13943: +13943: +13943: static const fmtflags basefield = _S_basefield; +13943: +13943: +13943: static const fmtflags floatfield = _S_floatfield; +13943: # 442 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: typedef _Ios_Iostate iostate; +13943: +13943: +13943: +13943: static const iostate badbit = _S_badbit; +13943: +13943: +13943: static const iostate eofbit = _S_eofbit; +13943: +13943: +13943: +13943: +13943: static const iostate failbit = _S_failbit; +13943: +13943: +13943: static const iostate goodbit = _S_goodbit; +13943: # 473 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: typedef _Ios_Openmode openmode; +13943: +13943: +13943: static const openmode app = _S_app; +13943: +13943: +13943: static const openmode ate = _S_ate; +13943: +13943: +13943: +13943: +13943: static const openmode binary = _S_bin; +13943: +13943: +13943: static const openmode in = _S_in; +13943: +13943: +13943: static const openmode out = _S_out; +13943: +13943: +13943: static const openmode trunc = _S_trunc; +13943: +13943: static const openmode __noreplace = _S_noreplace; +13943: # 512 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: typedef _Ios_Seekdir seekdir; +13943: +13943: +13943: static const seekdir beg = _S_beg; +13943: +13943: +13943: static const seekdir cur = _S_cur; +13943: +13943: +13943: static const seekdir end = _S_end; +13943: # 545 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: enum event +13943: { +13943: erase_event, +13943: imbue_event, +13943: copyfmt_event +13943: }; +13943: # 562 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: typedef void (*event_callback) (event __e, ios_base& __b, int __i); +13943: # 574 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: void +13943: register_callback(event_callback __fn, int __index); +13943: +13943: protected: +13943: streamsize _M_precision; +13943: streamsize _M_width; +13943: fmtflags _M_flags; +13943: iostate _M_exception; +13943: iostate _M_streambuf_state; +13943: +13943: +13943: +13943: struct _Callback_list +13943: { +13943: +13943: _Callback_list* _M_next; +13943: ios_base::event_callback _M_fn; +13943: int _M_index; +13943: _Atomic_word _M_refcount; +13943: +13943: _Callback_list(ios_base::event_callback __fn, int __index, +13943: _Callback_list* __cb) +13943: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } +13943: +13943: void +13943: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } +13943: +13943: +13943: int +13943: _M_remove_reference() +13943: { +13943: +13943: ; +13943: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); +13943: if (__res == 0) +13943: { +13943: ; +13943: } +13943: return __res; +13943: } +13943: }; +13943: +13943: _Callback_list* _M_callbacks; +13943: +13943: void +13943: _M_call_callbacks(event __ev) throw(); +13943: +13943: void +13943: _M_dispose_callbacks(void) throw(); +13943: +13943: +13943: struct _Words +13943: { +13943: void* _M_pword; +13943: long _M_iword; +13943: _Words() : _M_pword(0), _M_iword(0) { } +13943: }; +13943: +13943: +13943: _Words _M_word_zero; +13943: +13943: +13943: +13943: enum { _S_local_word_size = 8 }; +13943: _Words _M_local_word[_S_local_word_size]; +13943: +13943: +13943: int _M_word_size; +13943: _Words* _M_word; +13943: +13943: _Words& +13943: _M_grow_words(int __index, bool __iword); +13943: +13943: +13943: locale _M_ios_locale; +13943: +13943: void +13943: _M_init() throw(); +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: class Init +13943: { +13943: friend class ios_base; +13943: public: +13943: Init(); +13943: ~Init(); +13943: +13943: +13943: Init(const Init&) = default; +13943: Init& operator=(const Init&) = default; +13943: +13943: +13943: private: +13943: static _Atomic_word _S_refcount; +13943: static bool _S_synced_with_stdio; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: fmtflags +13943: flags() const +13943: { return _M_flags; } +13943: # 692 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: fmtflags +13943: flags(fmtflags __fmtfl) +13943: { +13943: fmtflags __old = _M_flags; +13943: _M_flags = __fmtfl; +13943: return __old; +13943: } +13943: # 708 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: fmtflags +13943: setf(fmtflags __fmtfl) +13943: { +13943: fmtflags __old = _M_flags; +13943: _M_flags |= __fmtfl; +13943: return __old; +13943: } +13943: # 725 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: fmtflags +13943: setf(fmtflags __fmtfl, fmtflags __mask) +13943: { +13943: fmtflags __old = _M_flags; +13943: _M_flags &= ~__mask; +13943: _M_flags |= (__fmtfl & __mask); +13943: return __old; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: unsetf(fmtflags __mask) +13943: { _M_flags &= ~__mask; } +13943: # 751 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: streamsize +13943: precision() const +13943: { return _M_precision; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: streamsize +13943: precision(streamsize __prec) +13943: { +13943: streamsize __old = _M_precision; +13943: _M_precision = __prec; +13943: return __old; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: streamsize +13943: width() const +13943: { return _M_width; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: streamsize +13943: width(streamsize __wide) +13943: { +13943: streamsize __old = _M_width; +13943: _M_width = __wide; +13943: return __old; +13943: } +13943: # 802 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: static bool +13943: sync_with_stdio(bool __sync = true); +13943: # 814 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: locale +13943: imbue(const locale& __loc) throw(); +13943: # 825 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: locale +13943: getloc() const +13943: { return _M_ios_locale; } +13943: # 836 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: const locale& +13943: _M_getloc() const +13943: { return _M_ios_locale; } +13943: # 855 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: static int +13943: xalloc() throw(); +13943: # 871 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: long& +13943: iword(int __ix) +13943: { +13943: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) +13943: ? _M_word[__ix] : _M_grow_words(__ix, true); +13943: return __word._M_iword; +13943: } +13943: # 892 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: void*& +13943: pword(int __ix) +13943: { +13943: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) +13943: ? _M_word[__ix] : _M_grow_words(__ix, false); +13943: return __word._M_pword; +13943: } +13943: # 909 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: virtual ~ios_base(); +13943: +13943: protected: +13943: ios_base() throw (); +13943: # 923 "/usr/include/c++/14/bits/ios_base.h" 3 +13943: public: +13943: ios_base(const ios_base&) = delete; +13943: +13943: ios_base& +13943: operator=(const ios_base&) = delete; +13943: +13943: protected: +13943: void +13943: _M_move(ios_base&) noexcept; +13943: +13943: void +13943: _M_swap(ios_base& __rhs) noexcept; +13943: +13943: }; +13943: +13943: +13943: +13943: inline ios_base& +13943: boolalpha(ios_base& __base) +13943: { +13943: __base.setf(ios_base::boolalpha); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: noboolalpha(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::boolalpha); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: showbase(ios_base& __base) +13943: { +13943: __base.setf(ios_base::showbase); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: noshowbase(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::showbase); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: showpoint(ios_base& __base) +13943: { +13943: __base.setf(ios_base::showpoint); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: noshowpoint(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::showpoint); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: showpos(ios_base& __base) +13943: { +13943: __base.setf(ios_base::showpos); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: noshowpos(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::showpos); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: skipws(ios_base& __base) +13943: { +13943: __base.setf(ios_base::skipws); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: noskipws(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::skipws); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: uppercase(ios_base& __base) +13943: { +13943: __base.setf(ios_base::uppercase); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: nouppercase(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::uppercase); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: unitbuf(ios_base& __base) +13943: { +13943: __base.setf(ios_base::unitbuf); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: nounitbuf(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::unitbuf); +13943: return __base; +13943: } +13943: +13943: +13943: +13943: inline ios_base& +13943: internal(ios_base& __base) +13943: { +13943: __base.setf(ios_base::internal, ios_base::adjustfield); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: left(ios_base& __base) +13943: { +13943: __base.setf(ios_base::left, ios_base::adjustfield); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: right(ios_base& __base) +13943: { +13943: __base.setf(ios_base::right, ios_base::adjustfield); +13943: return __base; +13943: } +13943: +13943: +13943: +13943: inline ios_base& +13943: dec(ios_base& __base) +13943: { +13943: __base.setf(ios_base::dec, ios_base::basefield); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: hex(ios_base& __base) +13943: { +13943: __base.setf(ios_base::hex, ios_base::basefield); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: oct(ios_base& __base) +13943: { +13943: __base.setf(ios_base::oct, ios_base::basefield); +13943: return __base; +13943: } +13943: +13943: +13943: +13943: inline ios_base& +13943: fixed(ios_base& __base) +13943: { +13943: __base.setf(ios_base::fixed, ios_base::floatfield); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: scientific(ios_base& __base) +13943: { +13943: __base.setf(ios_base::scientific, ios_base::floatfield); +13943: return __base; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline ios_base& +13943: hexfloat(ios_base& __base) +13943: { +13943: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); +13943: return __base; +13943: } +13943: +13943: +13943: inline ios_base& +13943: defaultfloat(ios_base& __base) +13943: { +13943: __base.unsetf(ios_base::floatfield); +13943: return __base; +13943: } +13943: +13943: +13943: +13943: } +13943: # 45 "/usr/include/c++/14/ios" 2 3 +13943: # 1 "/usr/include/c++/14/streambuf" 1 3 +13943: # 36 "/usr/include/c++/14/streambuf" 3 +13943: +13943: # 37 "/usr/include/c++/14/streambuf" 3 +13943: # 47 "/usr/include/c++/14/streambuf" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: streamsize +13943: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, +13943: basic_streambuf<_CharT, _Traits>*, bool&); +13943: # 123 "/usr/include/c++/14/streambuf" 3 +13943: template +13943: class basic_streambuf +13943: { +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: +13943: +13943: +13943: typedef basic_streambuf __streambuf_type; +13943: +13943: +13943: friend class basic_ios; +13943: friend class basic_istream; +13943: friend class basic_ostream; +13943: friend class istreambuf_iterator; +13943: friend class ostreambuf_iterator; +13943: +13943: friend streamsize +13943: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: _CharT2*>::__type +13943: __copy_move_a2(istreambuf_iterator<_CharT2>, +13943: istreambuf_iterator<_CharT2>, _CharT2*); +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: istreambuf_iterator<_CharT2> >::__type +13943: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +13943: const _CharT2&); +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: void>::__type +13943: advance(istreambuf_iterator<_CharT2>&, _Distance); +13943: +13943: friend void __istream_extract(istream&, char*, streamsize); +13943: +13943: template +13943: friend basic_istream<_CharT2, _Traits2>& +13943: operator>>(basic_istream<_CharT2, _Traits2>&, +13943: basic_string<_CharT2, _Traits2, _Alloc>&); +13943: +13943: template +13943: friend basic_istream<_CharT2, _Traits2>& +13943: getline(basic_istream<_CharT2, _Traits2>&, +13943: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: char_type* _M_in_beg; +13943: char_type* _M_in_cur; +13943: char_type* _M_in_end; +13943: char_type* _M_out_beg; +13943: char_type* _M_out_cur; +13943: char_type* _M_out_end; +13943: +13943: +13943: locale _M_buf_locale; +13943: +13943: public: +13943: +13943: virtual +13943: ~basic_streambuf() +13943: { } +13943: # 215 "/usr/include/c++/14/streambuf" 3 +13943: locale +13943: pubimbue(const locale& __loc) +13943: { +13943: locale __tmp(this->getloc()); +13943: this->imbue(__loc); +13943: _M_buf_locale = __loc; +13943: return __tmp; +13943: } +13943: # 232 "/usr/include/c++/14/streambuf" 3 +13943: locale +13943: getloc() const +13943: { return _M_buf_locale; } +13943: # 245 "/usr/include/c++/14/streambuf" 3 +13943: basic_streambuf* +13943: pubsetbuf(char_type* __s, streamsize __n) +13943: { return this->setbuf(__s, __n); } +13943: # 257 "/usr/include/c++/14/streambuf" 3 +13943: pos_type +13943: pubseekoff(off_type __off, ios_base::seekdir __way, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: { return this->seekoff(__off, __way, __mode); } +13943: # 269 "/usr/include/c++/14/streambuf" 3 +13943: pos_type +13943: pubseekpos(pos_type __sp, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: { return this->seekpos(__sp, __mode); } +13943: +13943: +13943: +13943: +13943: int +13943: pubsync() { return this->sync(); } +13943: # 290 "/usr/include/c++/14/streambuf" 3 +13943: streamsize +13943: in_avail() +13943: { +13943: const streamsize __ret = this->egptr() - this->gptr(); +13943: return __ret ? __ret : this->showmanyc(); +13943: } +13943: # 304 "/usr/include/c++/14/streambuf" 3 +13943: int_type +13943: snextc() +13943: { +13943: int_type __ret = traits_type::eof(); +13943: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), +13943: __ret), true)) +13943: __ret = this->sgetc(); +13943: return __ret; +13943: } +13943: # 322 "/usr/include/c++/14/streambuf" 3 +13943: int_type +13943: sbumpc() +13943: { +13943: int_type __ret; +13943: if (__builtin_expect(this->gptr() < this->egptr(), true)) +13943: { +13943: __ret = traits_type::to_int_type(*this->gptr()); +13943: this->gbump(1); +13943: } +13943: else +13943: __ret = this->uflow(); +13943: return __ret; +13943: } +13943: # 344 "/usr/include/c++/14/streambuf" 3 +13943: int_type +13943: sgetc() +13943: { +13943: int_type __ret; +13943: if (__builtin_expect(this->gptr() < this->egptr(), true)) +13943: __ret = traits_type::to_int_type(*this->gptr()); +13943: else +13943: __ret = this->underflow(); +13943: return __ret; +13943: } +13943: # 363 "/usr/include/c++/14/streambuf" 3 +13943: streamsize +13943: sgetn(char_type* __s, streamsize __n) +13943: { return this->xsgetn(__s, __n); } +13943: # 378 "/usr/include/c++/14/streambuf" 3 +13943: int_type +13943: sputbackc(char_type __c) +13943: { +13943: int_type __ret; +13943: const bool __testpos = this->eback() < this->gptr(); +13943: if (__builtin_expect(!__testpos || +13943: !traits_type::eq(__c, this->gptr()[-1]), false)) +13943: __ret = this->pbackfail(traits_type::to_int_type(__c)); +13943: else +13943: { +13943: this->gbump(-1); +13943: __ret = traits_type::to_int_type(*this->gptr()); +13943: } +13943: return __ret; +13943: } +13943: # 403 "/usr/include/c++/14/streambuf" 3 +13943: int_type +13943: sungetc() +13943: { +13943: int_type __ret; +13943: if (__builtin_expect(this->eback() < this->gptr(), true)) +13943: { +13943: this->gbump(-1); +13943: __ret = traits_type::to_int_type(*this->gptr()); +13943: } +13943: else +13943: __ret = this->pbackfail(); +13943: return __ret; +13943: } +13943: # 430 "/usr/include/c++/14/streambuf" 3 +13943: int_type +13943: sputc(char_type __c) +13943: { +13943: int_type __ret; +13943: if (__builtin_expect(this->pptr() < this->epptr(), true)) +13943: { +13943: *this->pptr() = __c; +13943: this->pbump(1); +13943: __ret = traits_type::to_int_type(__c); +13943: } +13943: else +13943: __ret = this->overflow(traits_type::to_int_type(__c)); +13943: return __ret; +13943: } +13943: # 456 "/usr/include/c++/14/streambuf" 3 +13943: streamsize +13943: sputn(const char_type* __s, streamsize __n) +13943: { return this->xsputn(__s, __n); } +13943: +13943: protected: +13943: # 470 "/usr/include/c++/14/streambuf" 3 +13943: basic_streambuf() +13943: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), +13943: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), +13943: _M_buf_locale(locale()) +13943: { } +13943: # 488 "/usr/include/c++/14/streambuf" 3 +13943: char_type* +13943: eback() const { return _M_in_beg; } +13943: +13943: char_type* +13943: gptr() const { return _M_in_cur; } +13943: +13943: char_type* +13943: egptr() const { return _M_in_end; } +13943: # 504 "/usr/include/c++/14/streambuf" 3 +13943: void +13943: gbump(int __n) { _M_in_cur += __n; } +13943: # 515 "/usr/include/c++/14/streambuf" 3 +13943: void +13943: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) +13943: { +13943: _M_in_beg = __gbeg; +13943: _M_in_cur = __gnext; +13943: _M_in_end = __gend; +13943: } +13943: # 535 "/usr/include/c++/14/streambuf" 3 +13943: char_type* +13943: pbase() const { return _M_out_beg; } +13943: +13943: char_type* +13943: pptr() const { return _M_out_cur; } +13943: +13943: char_type* +13943: epptr() const { return _M_out_end; } +13943: # 551 "/usr/include/c++/14/streambuf" 3 +13943: void +13943: pbump(int __n) { _M_out_cur += __n; } +13943: # 561 "/usr/include/c++/14/streambuf" 3 +13943: void +13943: setp(char_type* __pbeg, char_type* __pend) +13943: { +13943: _M_out_beg = _M_out_cur = __pbeg; +13943: _M_out_end = __pend; +13943: } +13943: # 582 "/usr/include/c++/14/streambuf" 3 +13943: virtual void +13943: imbue(const locale& __loc __attribute__ ((__unused__))) +13943: { } +13943: # 597 "/usr/include/c++/14/streambuf" 3 +13943: virtual basic_streambuf* +13943: setbuf(char_type*, streamsize) +13943: { return this; } +13943: # 608 "/usr/include/c++/14/streambuf" 3 +13943: virtual pos_type +13943: seekoff(off_type, ios_base::seekdir, +13943: ios_base::openmode = ios_base::in | ios_base::out) +13943: { return pos_type(off_type(-1)); } +13943: # 620 "/usr/include/c++/14/streambuf" 3 +13943: virtual pos_type +13943: seekpos(pos_type, +13943: ios_base::openmode = ios_base::in | ios_base::out) +13943: { return pos_type(off_type(-1)); } +13943: # 633 "/usr/include/c++/14/streambuf" 3 +13943: virtual int +13943: sync() { return 0; } +13943: # 655 "/usr/include/c++/14/streambuf" 3 +13943: virtual streamsize +13943: showmanyc() { return 0; } +13943: # 671 "/usr/include/c++/14/streambuf" 3 +13943: virtual streamsize +13943: xsgetn(char_type* __s, streamsize __n); +13943: # 693 "/usr/include/c++/14/streambuf" 3 +13943: virtual int_type +13943: underflow() +13943: { return traits_type::eof(); } +13943: # 706 "/usr/include/c++/14/streambuf" 3 +13943: virtual int_type +13943: uflow() +13943: { +13943: int_type __ret = traits_type::eof(); +13943: const bool __testeof = traits_type::eq_int_type(this->underflow(), +13943: __ret); +13943: if (!__testeof) +13943: { +13943: __ret = traits_type::to_int_type(*this->gptr()); +13943: this->gbump(1); +13943: } +13943: return __ret; +13943: } +13943: # 730 "/usr/include/c++/14/streambuf" 3 +13943: virtual int_type +13943: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) +13943: { return traits_type::eof(); } +13943: # 748 "/usr/include/c++/14/streambuf" 3 +13943: virtual streamsize +13943: xsputn(const char_type* __s, streamsize __n); +13943: # 774 "/usr/include/c++/14/streambuf" 3 +13943: virtual int_type +13943: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) +13943: { return traits_type::eof(); } +13943: # 801 "/usr/include/c++/14/streambuf" 3 +13943: void +13943: __safe_gbump(streamsize __n) { _M_in_cur += __n; } +13943: +13943: void +13943: __safe_pbump(streamsize __n) { _M_out_cur += __n; } +13943: +13943: +13943: +13943: +13943: protected: +13943: +13943: basic_streambuf(const basic_streambuf&); +13943: +13943: basic_streambuf& +13943: operator=(const basic_streambuf&); +13943: +13943: +13943: void +13943: swap(basic_streambuf& __sb) +13943: { +13943: std::swap(_M_in_beg, __sb._M_in_beg); +13943: std::swap(_M_in_cur, __sb._M_in_cur); +13943: std::swap(_M_in_end, __sb._M_in_end); +13943: std::swap(_M_out_beg, __sb._M_out_beg); +13943: std::swap(_M_out_cur, __sb._M_out_cur); +13943: std::swap(_M_out_end, __sb._M_out_end); +13943: std::swap(_M_buf_locale, __sb._M_buf_locale); +13943: } +13943: +13943: }; +13943: +13943: +13943: template +13943: std::basic_streambuf<_CharT, _Traits>:: +13943: basic_streambuf(const basic_streambuf&) = default; +13943: +13943: template +13943: std::basic_streambuf<_CharT, _Traits>& +13943: std::basic_streambuf<_CharT, _Traits>:: +13943: operator=(const basic_streambuf&) = default; +13943: +13943: +13943: +13943: template<> +13943: streamsize +13943: __copy_streambufs_eof(basic_streambuf* __sbin, +13943: basic_streambuf* __sbout, bool& __ineof); +13943: +13943: template<> +13943: streamsize +13943: __copy_streambufs_eof(basic_streambuf* __sbin, +13943: basic_streambuf* __sbout, bool& __ineof); +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/streambuf.tcc" 1 3 +13943: # 37 "/usr/include/c++/14/bits/streambuf.tcc" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/streambuf.tcc" 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: streamsize +13943: basic_streambuf<_CharT, _Traits>:: +13943: xsgetn(char_type* __s, streamsize __n) +13943: { +13943: streamsize __ret = 0; +13943: while (__ret < __n) +13943: { +13943: const streamsize __buf_len = this->egptr() - this->gptr(); +13943: if (__buf_len) +13943: { +13943: const streamsize __remaining = __n - __ret; +13943: const streamsize __len = std::min(__buf_len, __remaining); +13943: traits_type::copy(__s, this->gptr(), __len); +13943: __ret += __len; +13943: __s += __len; +13943: this->__safe_gbump(__len); +13943: } +13943: +13943: if (__ret < __n) +13943: { +13943: const int_type __c = this->uflow(); +13943: if (!traits_type::eq_int_type(__c, traits_type::eof())) +13943: { +13943: traits_type::assign(*__s++, traits_type::to_char_type(__c)); +13943: ++__ret; +13943: } +13943: else +13943: break; +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: streamsize +13943: basic_streambuf<_CharT, _Traits>:: +13943: xsputn(const char_type* __s, streamsize __n) +13943: { +13943: streamsize __ret = 0; +13943: while (__ret < __n) +13943: { +13943: const streamsize __buf_len = this->epptr() - this->pptr(); +13943: if (__buf_len) +13943: { +13943: const streamsize __remaining = __n - __ret; +13943: const streamsize __len = std::min(__buf_len, __remaining); +13943: traits_type::copy(this->pptr(), __s, __len); +13943: __ret += __len; +13943: __s += __len; +13943: this->__safe_pbump(__len); +13943: } +13943: +13943: if (__ret < __n) +13943: { +13943: int_type __c = this->overflow(traits_type::to_int_type(*__s)); +13943: if (!traits_type::eq_int_type(__c, traits_type::eof())) +13943: { +13943: ++__ret; +13943: ++__s; +13943: } +13943: else +13943: break; +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: streamsize +13943: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, +13943: basic_streambuf<_CharT, _Traits>* __sbout, +13943: bool& __ineof) +13943: { +13943: streamsize __ret = 0; +13943: __ineof = true; +13943: typename _Traits::int_type __c = __sbin->sgetc(); +13943: while (!_Traits::eq_int_type(__c, _Traits::eof())) +13943: { +13943: __c = __sbout->sputc(_Traits::to_char_type(__c)); +13943: if (_Traits::eq_int_type(__c, _Traits::eof())) +13943: { +13943: __ineof = false; +13943: break; +13943: } +13943: ++__ret; +13943: __c = __sbin->snextc(); +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: inline streamsize +13943: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, +13943: basic_streambuf<_CharT, _Traits>* __sbout) +13943: { +13943: bool __ineof; +13943: return __copy_streambufs_eof(__sbin, __sbout, __ineof); +13943: } +13943: +13943: +13943: +13943: +13943: extern template class basic_streambuf; +13943: +13943: extern template +13943: streamsize +13943: __copy_streambufs(basic_streambuf*, +13943: basic_streambuf*); +13943: +13943: +13943: extern template class basic_streambuf; +13943: +13943: extern template +13943: streamsize +13943: __copy_streambufs(basic_streambuf*, +13943: basic_streambuf*); +13943: +13943: +13943: +13943: +13943: } +13943: # 861 "/usr/include/c++/14/streambuf" 2 3 +13943: # 46 "/usr/include/c++/14/ios" 2 3 +13943: # 1 "/usr/include/c++/14/bits/basic_ios.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/locale_facets.h" 1 3 +13943: # 37 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: +13943: # 1 "/usr/include/c++/14/cwctype" 1 3 +13943: # 39 "/usr/include/c++/14/cwctype" 3 +13943: +13943: # 40 "/usr/include/c++/14/cwctype" 3 +13943: # 50 "/usr/include/c++/14/cwctype" 3 +13943: # 1 "/usr/include/wctype.h" 1 3 4 +13943: # 38 "/usr/include/wctype.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 1 3 4 +13943: # 38 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 +13943: typedef unsigned long int wctype_t; +13943: # 56 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 +13943: enum +13943: { +13943: __ISwupper = 0, +13943: __ISwlower = 1, +13943: __ISwalpha = 2, +13943: __ISwdigit = 3, +13943: __ISwxdigit = 4, +13943: __ISwspace = 5, +13943: __ISwprint = 6, +13943: __ISwgraph = 7, +13943: __ISwblank = 8, +13943: __ISwcntrl = 9, +13943: __ISwpunct = 10, +13943: __ISwalnum = 11, +13943: +13943: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), +13943: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), +13943: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), +13943: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), +13943: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), +13943: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), +13943: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), +13943: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), +13943: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), +13943: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), +13943: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), +13943: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) +13943: }; +13943: +13943: +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int iswalnum (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern int iswalpha (wint_t __wc) noexcept (true); +13943: +13943: +13943: extern int iswcntrl (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: extern int iswdigit (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: extern int iswgraph (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswlower (wint_t __wc) noexcept (true); +13943: +13943: +13943: extern int iswprint (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswpunct (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswspace (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswupper (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswxdigit (wint_t __wc) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern int iswblank (wint_t __wc) noexcept (true); +13943: # 155 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 +13943: extern wctype_t wctype (const char *__property) noexcept (true); +13943: +13943: +13943: +13943: extern int iswctype (wint_t __wc, wctype_t __desc) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t towlower (wint_t __wc) noexcept (true); +13943: +13943: +13943: extern wint_t towupper (wint_t __wc) noexcept (true); +13943: +13943: } +13943: # 39 "/usr/include/wctype.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: extern "C" { +13943: +13943: +13943: +13943: typedef const __int32_t *wctrans_t; +13943: +13943: +13943: +13943: extern wctrans_t wctrans (const char *__property) noexcept (true); +13943: +13943: +13943: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int iswalnum_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern int iswalpha_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: extern int iswcntrl_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: extern int iswdigit_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: extern int iswgraph_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswlower_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: extern int iswprint_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswpunct_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswspace_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswupper_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswxdigit_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int iswblank_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: extern wctype_t wctype_l (const char *__property, locale_t __locale) +13943: noexcept (true); +13943: +13943: +13943: +13943: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern wint_t towlower_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: extern wint_t towupper_l (wint_t __wc, locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) +13943: noexcept (true); +13943: +13943: +13943: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, +13943: locale_t __locale) noexcept (true); +13943: +13943: +13943: +13943: } +13943: # 51 "/usr/include/c++/14/cwctype" 2 3 +13943: # 80 "/usr/include/c++/14/cwctype" 3 +13943: namespace std +13943: { +13943: using ::wctrans_t; +13943: using ::wctype_t; +13943: using ::wint_t; +13943: +13943: using ::iswalnum; +13943: using ::iswalpha; +13943: +13943: using ::iswblank; +13943: +13943: using ::iswcntrl; +13943: using ::iswctype; +13943: using ::iswdigit; +13943: using ::iswgraph; +13943: using ::iswlower; +13943: using ::iswprint; +13943: using ::iswpunct; +13943: using ::iswspace; +13943: using ::iswupper; +13943: using ::iswxdigit; +13943: using ::towctrans; +13943: using ::towlower; +13943: using ::towupper; +13943: using ::wctrans; +13943: using ::wctype; +13943: } +13943: # 40 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +13943: # 1 "/usr/include/c++/14/cctype" 1 3 +13943: # 39 "/usr/include/c++/14/cctype" 3 +13943: +13943: # 40 "/usr/include/c++/14/cctype" 3 +13943: # 41 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_base.h" 1 3 +13943: # 36 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_base.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: struct ctype_base +13943: { +13943: +13943: typedef const int* __to_type; +13943: +13943: +13943: +13943: typedef unsigned short mask; +13943: static const mask upper = _ISupper; +13943: static const mask lower = _ISlower; +13943: static const mask alpha = _ISalpha; +13943: static const mask digit = _ISdigit; +13943: static const mask xdigit = _ISxdigit; +13943: static const mask space = _ISspace; +13943: static const mask print = _ISprint; +13943: static const mask graph = _ISalpha | _ISdigit | _ISpunct; +13943: static const mask cntrl = _IScntrl; +13943: static const mask punct = _ISpunct; +13943: static const mask alnum = _ISalpha | _ISdigit; +13943: +13943: static const mask blank = _ISblank; +13943: +13943: }; +13943: +13943: +13943: } +13943: # 42 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/streambuf_iterator.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 49 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: template +13943: class istreambuf_iterator +13943: : public iterator +13943: { +13943: public: +13943: # 70 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef typename _Traits::int_type int_type; +13943: typedef basic_streambuf<_CharT, _Traits> streambuf_type; +13943: typedef basic_istream<_CharT, _Traits> istream_type; +13943: +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: ostreambuf_iterator<_CharT2> >::__type +13943: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +13943: ostreambuf_iterator<_CharT2>); +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: _CharT2*>::__type +13943: __copy_move_a2(istreambuf_iterator<_CharT2>, +13943: istreambuf_iterator<_CharT2>, _CharT2*); +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: _CharT2*>::__type +13943: __copy_n_a(istreambuf_iterator<_CharT2>, _Size, _CharT2*, bool); +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: istreambuf_iterator<_CharT2> >::__type +13943: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +13943: const _CharT2&); +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: void>::__type +13943: advance(istreambuf_iterator<_CharT2>&, _Distance); +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: mutable streambuf_type* _M_sbuf; +13943: int_type _M_c; +13943: +13943: public: +13943: +13943: constexpr istreambuf_iterator() noexcept +13943: : _M_sbuf(0), _M_c(traits_type::eof()) { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; +13943: +13943: ~istreambuf_iterator() = default; +13943: +13943: +13943: +13943: istreambuf_iterator(istream_type& __s) noexcept +13943: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } +13943: +13943: +13943: istreambuf_iterator(streambuf_type* __s) noexcept +13943: : _M_sbuf(__s), _M_c(traits_type::eof()) { } +13943: +13943: +13943: istreambuf_iterator& +13943: operator=(const istreambuf_iterator&) noexcept = default; +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: char_type +13943: operator*() const +13943: { +13943: int_type __c = _M_get(); +13943: # 161 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +13943: return traits_type::to_char_type(__c); +13943: } +13943: +13943: +13943: istreambuf_iterator& +13943: operator++() +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: _M_sbuf->sbumpc(); +13943: _M_c = traits_type::eof(); +13943: return *this; +13943: } +13943: +13943: +13943: istreambuf_iterator +13943: operator++(int) +13943: { +13943: +13943: +13943: +13943: ; +13943: +13943: istreambuf_iterator __old = *this; +13943: __old._M_c = _M_sbuf->sbumpc(); +13943: _M_c = traits_type::eof(); +13943: return __old; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: bool +13943: equal(const istreambuf_iterator& __b) const +13943: { return _M_at_eof() == __b._M_at_eof(); } +13943: +13943: private: +13943: int_type +13943: _M_get() const +13943: { +13943: int_type __ret = _M_c; +13943: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) +13943: _M_sbuf = 0; +13943: return __ret; +13943: } +13943: +13943: bool +13943: _M_at_eof() const +13943: { return _S_is_eof(_M_get()); } +13943: +13943: static bool +13943: _S_is_eof(int_type __c) +13943: { +13943: const int_type __eof = traits_type::eof(); +13943: return traits_type::eq_int_type(__c, __eof); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, +13943: const istreambuf_iterator<_CharT, _Traits>& __b) +13943: { return __a.equal(__b); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, +13943: const istreambuf_iterator<_CharT, _Traits>& __b) +13943: { return !__a.equal(__b); } +13943: +13943: +13943: +13943: template +13943: class ostreambuf_iterator +13943: : public iterator +13943: { +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef basic_streambuf<_CharT, _Traits> streambuf_type; +13943: typedef basic_ostream<_CharT, _Traits> ostream_type; +13943: +13943: +13943: template +13943: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +13943: ostreambuf_iterator<_CharT2> >::__type +13943: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +13943: ostreambuf_iterator<_CharT2>); +13943: +13943: private: +13943: streambuf_type* _M_sbuf; +13943: bool _M_failed; +13943: +13943: public: +13943: # 284 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +13943: ostreambuf_iterator(ostream_type& __s) noexcept +13943: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } +13943: +13943: +13943: ostreambuf_iterator(streambuf_type* __s) noexcept +13943: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } +13943: +13943: +13943: ostreambuf_iterator& +13943: operator=(_CharT __c) +13943: { +13943: if (!_M_failed && +13943: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) +13943: _M_failed = true; +13943: return *this; +13943: } +13943: +13943: +13943: [[__nodiscard__]] +13943: ostreambuf_iterator& +13943: operator*() +13943: { return *this; } +13943: +13943: +13943: ostreambuf_iterator& +13943: operator++(int) +13943: { return *this; } +13943: +13943: +13943: ostreambuf_iterator& +13943: operator++() +13943: { return *this; } +13943: +13943: +13943: [[__nodiscard__]] +13943: bool +13943: failed() const noexcept +13943: { return _M_failed; } +13943: +13943: ostreambuf_iterator& +13943: _M_put(const _CharT* __ws, streamsize __len) +13943: { +13943: if (__builtin_expect(!_M_failed, true) +13943: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, +13943: false)) +13943: _M_failed = true; +13943: return *this; +13943: } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: ostreambuf_iterator<_CharT> >::__type +13943: copy(istreambuf_iterator<_CharT> __first, +13943: istreambuf_iterator<_CharT> __last, +13943: ostreambuf_iterator<_CharT> __result) +13943: { +13943: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) +13943: { +13943: bool __ineof; +13943: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); +13943: if (!__ineof) +13943: __result._M_failed = true; +13943: } +13943: return __result; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: ostreambuf_iterator<_CharT> >::__type +13943: __copy_move_a2(_CharT* __first, _CharT* __last, +13943: ostreambuf_iterator<_CharT> __result) +13943: { +13943: const streamsize __num = __last - __first; +13943: if (__num > 0) +13943: __result._M_put(__first, __num); +13943: return __result; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: ostreambuf_iterator<_CharT> >::__type +13943: __copy_move_a2(const _CharT* __first, const _CharT* __last, +13943: ostreambuf_iterator<_CharT> __result) +13943: { +13943: const streamsize __num = __last - __first; +13943: if (__num > 0) +13943: __result._M_put(__first, __num); +13943: return __result; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: _CharT*>::__type +13943: __copy_move_a2(istreambuf_iterator<_CharT> __first, +13943: istreambuf_iterator<_CharT> __last, _CharT* __result) +13943: { +13943: typedef istreambuf_iterator<_CharT> __is_iterator_type; +13943: typedef typename __is_iterator_type::traits_type traits_type; +13943: typedef typename __is_iterator_type::streambuf_type streambuf_type; +13943: typedef typename traits_type::int_type int_type; +13943: +13943: if (__first._M_sbuf && !__last._M_sbuf) +13943: { +13943: streambuf_type* __sb = __first._M_sbuf; +13943: int_type __c = __sb->sgetc(); +13943: while (!traits_type::eq_int_type(__c, traits_type::eof())) +13943: { +13943: const streamsize __n = __sb->egptr() - __sb->gptr(); +13943: if (__n > 1) +13943: { +13943: traits_type::copy(__result, __sb->gptr(), __n); +13943: __sb->__safe_gbump(__n); +13943: __result += __n; +13943: __c = __sb->underflow(); +13943: } +13943: else +13943: { +13943: *__result++ = traits_type::to_char_type(__c); +13943: __c = __sb->snextc(); +13943: } +13943: } +13943: } +13943: return __result; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: _CharT*>::__type +13943: __copy_n_a(istreambuf_iterator<_CharT> __it, _Size __n, _CharT* __result, +13943: bool __strict __attribute__((__unused__))) +13943: { +13943: if (__n == 0) +13943: return __result; +13943: +13943: +13943: +13943: ; +13943: _CharT* __beg = __result; +13943: __result += __it._M_sbuf->sgetn(__beg, __n); +13943: +13943: +13943: ; +13943: return __result; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: istreambuf_iterator<_CharT> >::__type +13943: find(istreambuf_iterator<_CharT> __first, +13943: istreambuf_iterator<_CharT> __last, const _CharT& __val) +13943: { +13943: typedef istreambuf_iterator<_CharT> __is_iterator_type; +13943: typedef typename __is_iterator_type::traits_type traits_type; +13943: typedef typename __is_iterator_type::streambuf_type streambuf_type; +13943: typedef typename traits_type::int_type int_type; +13943: const int_type __eof = traits_type::eof(); +13943: +13943: if (__first._M_sbuf && !__last._M_sbuf) +13943: { +13943: const int_type __ival = traits_type::to_int_type(__val); +13943: streambuf_type* __sb = __first._M_sbuf; +13943: int_type __c = __sb->sgetc(); +13943: while (!traits_type::eq_int_type(__c, __eof) +13943: && !traits_type::eq_int_type(__c, __ival)) +13943: { +13943: streamsize __n = __sb->egptr() - __sb->gptr(); +13943: if (__n > 1) +13943: { +13943: const _CharT* __p = traits_type::find(__sb->gptr(), +13943: __n, __val); +13943: if (__p) +13943: __n = __p - __sb->gptr(); +13943: __sb->__safe_gbump(__n); +13943: __c = __sb->sgetc(); +13943: } +13943: else +13943: __c = __sb->snextc(); +13943: } +13943: +13943: __first._M_c = __eof; +13943: } +13943: +13943: return __first; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +13943: void>::__type +13943: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) +13943: { +13943: if (__n == 0) +13943: return; +13943: +13943: do { if (std::__is_constant_evaluated() && !bool(__n > 0)) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: +13943: ; +13943: +13943: typedef istreambuf_iterator<_CharT> __is_iterator_type; +13943: typedef typename __is_iterator_type::traits_type traits_type; +13943: typedef typename __is_iterator_type::streambuf_type streambuf_type; +13943: typedef typename traits_type::int_type int_type; +13943: const int_type __eof = traits_type::eof(); +13943: +13943: streambuf_type* __sb = __i._M_sbuf; +13943: while (__n > 0) +13943: { +13943: streamsize __size = __sb->egptr() - __sb->gptr(); +13943: if (__size > __n) +13943: { +13943: __sb->__safe_gbump(__n); +13943: break; +13943: } +13943: +13943: __sb->__safe_gbump(__size); +13943: __n -= __size; +13943: if (traits_type::eq_int_type(__sb->underflow(), __eof)) +13943: { +13943: +13943: +13943: ; +13943: break; +13943: } +13943: } +13943: +13943: __i._M_c = __eof; +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: # 49 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 74 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template +13943: void +13943: __convert_to_v(const char*, _Tp&, ios_base::iostate&, +13943: const __c_locale&) throw(); +13943: +13943: +13943: template<> +13943: void +13943: __convert_to_v(const char*, float&, ios_base::iostate&, +13943: const __c_locale&) throw(); +13943: +13943: template<> +13943: void +13943: __convert_to_v(const char*, double&, ios_base::iostate&, +13943: const __c_locale&) throw(); +13943: +13943: template<> +13943: void +13943: __convert_to_v(const char*, long double&, ios_base::iostate&, +13943: const __c_locale&) throw(); +13943: +13943: +13943: +13943: template +13943: struct __pad +13943: { +13943: static void +13943: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, +13943: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: _CharT* +13943: __add_grouping(_CharT* __s, _CharT __sep, +13943: const char* __gbeg, size_t __gsize, +13943: const _CharT* __first, const _CharT* __last); +13943: +13943: +13943: +13943: +13943: template +13943: inline +13943: ostreambuf_iterator<_CharT> +13943: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) +13943: { +13943: __s._M_put(__ws, __len); +13943: return __s; +13943: } +13943: +13943: +13943: template +13943: inline +13943: _OutIter +13943: __write(_OutIter __s, const _CharT* __ws, int __len) +13943: { +13943: for (int __j = 0; __j < __len; __j++, ++__s) +13943: *__s = __ws[__j]; +13943: return __s; +13943: } +13943: # 152 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template +13943: class __ctype_abstract_base : public locale::facet, public ctype_base +13943: { +13943: public: +13943: +13943: +13943: typedef _CharT char_type; +13943: # 171 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: bool +13943: is(mask __m, char_type __c) const +13943: { return this->do_is(__m, __c); } +13943: # 188 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: is(const char_type *__lo, const char_type *__hi, mask *__vec) const +13943: { return this->do_is(__lo, __hi, __vec); } +13943: # 204 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const +13943: { return this->do_scan_is(__m, __lo, __hi); } +13943: # 220 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const +13943: { return this->do_scan_not(__m, __lo, __hi); } +13943: # 234 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: toupper(char_type __c) const +13943: { return this->do_toupper(__c); } +13943: # 249 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: toupper(char_type *__lo, const char_type* __hi) const +13943: { return this->do_toupper(__lo, __hi); } +13943: # 263 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: tolower(char_type __c) const +13943: { return this->do_tolower(__c); } +13943: # 278 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: tolower(char_type* __lo, const char_type* __hi) const +13943: { return this->do_tolower(__lo, __hi); } +13943: # 295 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: widen(char __c) const +13943: { return this->do_widen(__c); } +13943: # 314 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char* +13943: widen(const char* __lo, const char* __hi, char_type* __to) const +13943: { return this->do_widen(__lo, __hi, __to); } +13943: # 333 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char +13943: narrow(char_type __c, char __dfault) const +13943: { return this->do_narrow(__c, __dfault); } +13943: # 355 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: narrow(const char_type* __lo, const char_type* __hi, +13943: char __dfault, char* __to) const +13943: { return this->do_narrow(__lo, __hi, __dfault, __to); } +13943: +13943: protected: +13943: explicit +13943: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } +13943: +13943: virtual +13943: ~__ctype_abstract_base() { } +13943: # 380 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual bool +13943: do_is(mask __m, char_type __c) const = 0; +13943: # 399 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_is(const char_type* __lo, const char_type* __hi, +13943: mask* __vec) const = 0; +13943: # 418 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_scan_is(mask __m, const char_type* __lo, +13943: const char_type* __hi) const = 0; +13943: # 437 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_scan_not(mask __m, const char_type* __lo, +13943: const char_type* __hi) const = 0; +13943: # 455 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_toupper(char_type __c) const = 0; +13943: # 472 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_toupper(char_type* __lo, const char_type* __hi) const = 0; +13943: # 488 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_tolower(char_type __c) const = 0; +13943: # 505 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_tolower(char_type* __lo, const char_type* __hi) const = 0; +13943: # 524 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_widen(char __c) const = 0; +13943: # 545 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char* +13943: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; +13943: # 566 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char +13943: do_narrow(char_type __c, char __dfault) const = 0; +13943: # 591 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_narrow(const char_type* __lo, const char_type* __hi, +13943: char __dfault, char* __to) const = 0; +13943: }; +13943: # 614 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template +13943: class ctype : public __ctype_abstract_base<_CharT> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef typename __ctype_abstract_base<_CharT>::mask mask; +13943: +13943: +13943: static locale::id id; +13943: +13943: explicit +13943: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } +13943: +13943: protected: +13943: virtual +13943: ~ctype(); +13943: +13943: virtual bool +13943: do_is(mask __m, char_type __c) const; +13943: +13943: virtual const char_type* +13943: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; +13943: +13943: virtual const char_type* +13943: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; +13943: +13943: virtual const char_type* +13943: do_scan_not(mask __m, const char_type* __lo, +13943: const char_type* __hi) const; +13943: +13943: virtual char_type +13943: do_toupper(char_type __c) const; +13943: +13943: virtual const char_type* +13943: do_toupper(char_type* __lo, const char_type* __hi) const; +13943: +13943: virtual char_type +13943: do_tolower(char_type __c) const; +13943: +13943: virtual const char_type* +13943: do_tolower(char_type* __lo, const char_type* __hi) const; +13943: +13943: virtual char_type +13943: do_widen(char __c) const; +13943: +13943: virtual const char* +13943: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; +13943: +13943: virtual char +13943: do_narrow(char_type, char __dfault) const; +13943: +13943: virtual const char_type* +13943: do_narrow(const char_type* __lo, const char_type* __hi, +13943: char __dfault, char* __to) const; +13943: }; +13943: +13943: template +13943: locale::id ctype<_CharT>::id; +13943: +13943: +13943: +13943: template +13943: class ctype >; +13943: # 688 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template<> +13943: class ctype : public locale::facet, public ctype_base +13943: { +13943: public: +13943: +13943: +13943: typedef char char_type; +13943: +13943: protected: +13943: +13943: __c_locale _M_c_locale_ctype; +13943: bool _M_del; +13943: __to_type _M_toupper; +13943: __to_type _M_tolower; +13943: const mask* _M_table; +13943: mutable char _M_widen_ok; +13943: mutable char _M_widen[1 + static_cast(-1)]; +13943: mutable char _M_narrow[1 + static_cast(-1)]; +13943: mutable char _M_narrow_ok; +13943: +13943: +13943: public: +13943: +13943: static locale::id id; +13943: +13943: static const size_t table_size = 1 + static_cast(-1); +13943: # 725 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); +13943: # 738 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, +13943: size_t __refs = 0); +13943: # 751 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: inline bool +13943: is(mask __m, char __c) const; +13943: # 766 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: inline const char* +13943: is(const char* __lo, const char* __hi, mask* __vec) const; +13943: # 780 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: inline const char* +13943: scan_is(mask __m, const char* __lo, const char* __hi) const; +13943: # 794 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: inline const char* +13943: scan_not(mask __m, const char* __lo, const char* __hi) const; +13943: # 809 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: toupper(char_type __c) const +13943: { return this->do_toupper(__c); } +13943: # 826 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: toupper(char_type *__lo, const char_type* __hi) const +13943: { return this->do_toupper(__lo, __hi); } +13943: # 842 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: tolower(char_type __c) const +13943: { return this->do_tolower(__c); } +13943: # 859 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: tolower(char_type* __lo, const char_type* __hi) const +13943: { return this->do_tolower(__lo, __hi); } +13943: # 879 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: widen(char __c) const +13943: { +13943: if (_M_widen_ok) +13943: return _M_widen[static_cast(__c)]; +13943: this->_M_widen_init(); +13943: return this->do_widen(__c); +13943: } +13943: # 906 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char* +13943: widen(const char* __lo, const char* __hi, char_type* __to) const +13943: { +13943: if (_M_widen_ok == 1) +13943: { +13943: if (__builtin_expect(__hi != __lo, true)) +13943: __builtin_memcpy(__to, __lo, __hi - __lo); +13943: return __hi; +13943: } +13943: if (!_M_widen_ok) +13943: _M_widen_init(); +13943: return this->do_widen(__lo, __hi, __to); +13943: } +13943: # 938 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char +13943: narrow(char_type __c, char __dfault) const +13943: { +13943: if (_M_narrow[static_cast(__c)]) +13943: return _M_narrow[static_cast(__c)]; +13943: const char __t = do_narrow(__c, __dfault); +13943: if (__t != __dfault) +13943: _M_narrow[static_cast(__c)] = __t; +13943: return __t; +13943: } +13943: # 971 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: const char_type* +13943: narrow(const char_type* __lo, const char_type* __hi, +13943: char __dfault, char* __to) const +13943: { +13943: if (__builtin_expect(_M_narrow_ok == 1, true)) +13943: { +13943: if (__builtin_expect(__hi != __lo, true)) +13943: __builtin_memcpy(__to, __lo, __hi - __lo); +13943: return __hi; +13943: } +13943: if (!_M_narrow_ok) +13943: _M_narrow_init(); +13943: return this->do_narrow(__lo, __hi, __dfault, __to); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: const mask* +13943: table() const throw() +13943: { return _M_table; } +13943: +13943: +13943: static const mask* +13943: classic_table() throw(); +13943: protected: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual +13943: ~ctype(); +13943: # 1021 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_toupper(char_type __c) const; +13943: # 1038 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_toupper(char_type* __lo, const char_type* __hi) const; +13943: # 1054 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_tolower(char_type __c) const; +13943: # 1071 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_tolower(char_type* __lo, const char_type* __hi) const; +13943: # 1091 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_widen(char __c) const +13943: { return __c; } +13943: # 1114 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char* +13943: do_widen(const char* __lo, const char* __hi, char_type* __to) const +13943: { +13943: if (__builtin_expect(__hi != __lo, true)) +13943: __builtin_memcpy(__to, __lo, __hi - __lo); +13943: return __hi; +13943: } +13943: # 1141 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char +13943: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const +13943: { return __c; } +13943: # 1167 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_narrow(const char_type* __lo, const char_type* __hi, +13943: char __dfault __attribute__((__unused__)), char* __to) const +13943: { +13943: if (__builtin_expect(__hi != __lo, true)) +13943: __builtin_memcpy(__to, __lo, __hi - __lo); +13943: return __hi; +13943: } +13943: +13943: private: +13943: void _M_narrow_init() const; +13943: void _M_widen_init() const; +13943: }; +13943: # 1193 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template<> +13943: class ctype : public __ctype_abstract_base +13943: { +13943: public: +13943: +13943: +13943: typedef wchar_t char_type; +13943: typedef wctype_t __wmask_type; +13943: +13943: protected: +13943: __c_locale _M_c_locale_ctype; +13943: +13943: +13943: bool _M_narrow_ok; +13943: char _M_narrow[128]; +13943: wint_t _M_widen[1 + static_cast(-1)]; +13943: +13943: +13943: mask _M_bit[16]; +13943: __wmask_type _M_wmask[16]; +13943: +13943: public: +13943: +13943: +13943: static locale::id id; +13943: # 1226 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: ctype(size_t __refs = 0); +13943: # 1237 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: ctype(__c_locale __cloc, size_t __refs = 0); +13943: +13943: protected: +13943: __wmask_type +13943: _M_convert_to_wmask(const mask __m) const throw(); +13943: +13943: +13943: virtual +13943: ~ctype(); +13943: # 1261 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual bool +13943: do_is(mask __m, char_type __c) const; +13943: # 1280 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; +13943: # 1298 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; +13943: # 1316 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_scan_not(mask __m, const char_type* __lo, +13943: const char_type* __hi) const; +13943: # 1333 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_toupper(char_type __c) const; +13943: # 1350 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_toupper(char_type* __lo, const char_type* __hi) const; +13943: # 1366 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_tolower(char_type __c) const; +13943: # 1383 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_tolower(char_type* __lo, const char_type* __hi) const; +13943: # 1403 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_widen(char __c) const; +13943: # 1425 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char* +13943: do_widen(const char* __lo, const char* __hi, char_type* __to) const; +13943: # 1448 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char +13943: do_narrow(char_type __c, char __dfault) const; +13943: # 1474 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual const char_type* +13943: do_narrow(const char_type* __lo, const char_type* __hi, +13943: char __dfault, char* __to) const; +13943: +13943: +13943: void +13943: _M_initialize_ctype() throw(); +13943: }; +13943: +13943: +13943: +13943: template +13943: class ctype_byname : public ctype<_CharT> +13943: { +13943: public: +13943: typedef typename ctype<_CharT>::mask mask; +13943: +13943: explicit +13943: ctype_byname(const char* __s, size_t __refs = 0); +13943: +13943: +13943: explicit +13943: ctype_byname(const string& __s, size_t __refs = 0) +13943: : ctype_byname(__s.c_str(), __refs) { } +13943: +13943: +13943: protected: +13943: virtual +13943: ~ctype_byname() { } +13943: }; +13943: +13943: +13943: template<> +13943: class ctype_byname : public ctype +13943: { +13943: public: +13943: explicit +13943: ctype_byname(const char* __s, size_t __refs = 0); +13943: +13943: +13943: explicit +13943: ctype_byname(const string& __s, size_t __refs = 0); +13943: +13943: +13943: protected: +13943: virtual +13943: ~ctype_byname(); +13943: }; +13943: +13943: +13943: template<> +13943: class ctype_byname : public ctype +13943: { +13943: public: +13943: explicit +13943: ctype_byname(const char* __s, size_t __refs = 0); +13943: +13943: +13943: explicit +13943: ctype_byname(const string& __s, size_t __refs = 0); +13943: +13943: +13943: protected: +13943: virtual +13943: ~ctype_byname(); +13943: }; +13943: +13943: +13943: +13943: } +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_inline.h" 1 3 +13943: # 37 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_inline.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: bool +13943: ctype:: +13943: is(mask __m, char __c) const +13943: { return _M_table[static_cast(__c)] & __m; } +13943: +13943: const char* +13943: ctype:: +13943: is(const char* __low, const char* __high, mask* __vec) const +13943: { +13943: while (__low < __high) +13943: *__vec++ = _M_table[static_cast(*__low++)]; +13943: return __high; +13943: } +13943: +13943: const char* +13943: ctype:: +13943: scan_is(mask __m, const char* __low, const char* __high) const +13943: { +13943: while (__low < __high +13943: && !(_M_table[static_cast(*__low)] & __m)) +13943: ++__low; +13943: return __low; +13943: } +13943: +13943: const char* +13943: ctype:: +13943: scan_not(mask __m, const char* __low, const char* __high) const +13943: { +13943: while (__low < __high +13943: && (_M_table[static_cast(*__low)] & __m) != 0) +13943: ++__low; +13943: return __low; +13943: } +13943: +13943: +13943: } +13943: # 1547 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: class __num_base +13943: { +13943: public: +13943: +13943: +13943: enum +13943: { +13943: _S_ominus, +13943: _S_oplus, +13943: _S_ox, +13943: _S_oX, +13943: _S_odigits, +13943: _S_odigits_end = _S_odigits + 16, +13943: _S_oudigits = _S_odigits_end, +13943: _S_oudigits_end = _S_oudigits + 16, +13943: _S_oe = _S_odigits + 14, +13943: _S_oE = _S_oudigits + 14, +13943: _S_oend = _S_oudigits_end +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: static const char* _S_atoms_out; +13943: +13943: +13943: +13943: static const char* _S_atoms_in; +13943: +13943: enum +13943: { +13943: _S_iminus, +13943: _S_iplus, +13943: _S_ix, +13943: _S_iX, +13943: _S_izero, +13943: _S_ie = _S_izero + 14, +13943: _S_iE = _S_izero + 20, +13943: _S_iend = 26 +13943: }; +13943: +13943: +13943: +13943: static void +13943: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); +13943: }; +13943: +13943: template +13943: struct __numpunct_cache : public locale::facet +13943: { +13943: const char* _M_grouping; +13943: size_t _M_grouping_size; +13943: bool _M_use_grouping; +13943: const _CharT* _M_truename; +13943: size_t _M_truename_size; +13943: const _CharT* _M_falsename; +13943: size_t _M_falsename_size; +13943: _CharT _M_decimal_point; +13943: _CharT _M_thousands_sep; +13943: +13943: +13943: +13943: +13943: +13943: _CharT _M_atoms_out[__num_base::_S_oend]; +13943: +13943: +13943: +13943: +13943: +13943: _CharT _M_atoms_in[__num_base::_S_iend]; +13943: +13943: bool _M_allocated; +13943: +13943: __numpunct_cache(size_t __refs = 0) +13943: : facet(__refs), _M_grouping(0), _M_grouping_size(0), +13943: _M_use_grouping(false), +13943: _M_truename(0), _M_truename_size(0), _M_falsename(0), +13943: _M_falsename_size(0), _M_decimal_point(_CharT()), +13943: _M_thousands_sep(_CharT()), _M_allocated(false) +13943: { } +13943: +13943: ~__numpunct_cache(); +13943: +13943: void +13943: _M_cache(const locale& __loc); +13943: +13943: private: +13943: __numpunct_cache& +13943: operator=(const __numpunct_cache&); +13943: +13943: explicit +13943: __numpunct_cache(const __numpunct_cache&); +13943: }; +13943: +13943: template +13943: __numpunct_cache<_CharT>::~__numpunct_cache() +13943: { +13943: if (_M_allocated) +13943: { +13943: delete [] _M_grouping; +13943: delete [] _M_truename; +13943: delete [] _M_falsename; +13943: } +13943: } +13943: +13943: namespace __cxx11 { +13943: # 1677 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template +13943: class numpunct : public locale::facet +13943: { +13943: public: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef basic_string<_CharT> string_type; +13943: +13943: typedef __numpunct_cache<_CharT> __cache_type; +13943: +13943: protected: +13943: __cache_type* _M_data; +13943: +13943: public: +13943: +13943: static locale::id id; +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: numpunct(size_t __refs = 0) +13943: : facet(__refs), _M_data(0) +13943: { _M_initialize_numpunct(); } +13943: # 1715 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: numpunct(__cache_type* __cache, size_t __refs = 0) +13943: : facet(__refs), _M_data(__cache) +13943: { _M_initialize_numpunct(); } +13943: # 1729 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: numpunct(__c_locale __cloc, size_t __refs = 0) +13943: : facet(__refs), _M_data(0) +13943: { _M_initialize_numpunct(__cloc); } +13943: # 1743 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: decimal_point() const +13943: { return this->do_decimal_point(); } +13943: # 1756 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: char_type +13943: thousands_sep() const +13943: { return this->do_thousands_sep(); } +13943: # 1787 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: string +13943: grouping() const +13943: { return this->do_grouping(); } +13943: # 1800 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: string_type +13943: truename() const +13943: { return this->do_truename(); } +13943: # 1813 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: string_type +13943: falsename() const +13943: { return this->do_falsename(); } +13943: +13943: protected: +13943: +13943: virtual +13943: ~numpunct(); +13943: # 1830 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_decimal_point() const +13943: { return _M_data->_M_decimal_point; } +13943: # 1842 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual char_type +13943: do_thousands_sep() const +13943: { return _M_data->_M_thousands_sep; } +13943: # 1855 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual string +13943: do_grouping() const +13943: { return _M_data->_M_grouping; } +13943: # 1868 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual string_type +13943: do_truename() const +13943: { return _M_data->_M_truename; } +13943: # 1881 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual string_type +13943: do_falsename() const +13943: { return _M_data->_M_falsename; } +13943: +13943: +13943: void +13943: _M_initialize_numpunct(__c_locale __cloc = 0); +13943: }; +13943: +13943: template +13943: locale::id numpunct<_CharT>::id; +13943: +13943: template<> +13943: numpunct::~numpunct(); +13943: +13943: template<> +13943: void +13943: numpunct::_M_initialize_numpunct(__c_locale __cloc); +13943: +13943: +13943: template<> +13943: numpunct::~numpunct(); +13943: +13943: template<> +13943: void +13943: numpunct::_M_initialize_numpunct(__c_locale __cloc); +13943: +13943: +13943: +13943: template +13943: class numpunct_byname : public numpunct<_CharT> +13943: { +13943: public: +13943: typedef _CharT char_type; +13943: typedef basic_string<_CharT> string_type; +13943: +13943: explicit +13943: numpunct_byname(const char* __s, size_t __refs = 0) +13943: : numpunct<_CharT>(__refs) +13943: { +13943: if (__builtin_strcmp(__s, "C") != 0 +13943: && __builtin_strcmp(__s, "POSIX") != 0) +13943: { +13943: __c_locale __tmp; +13943: this->_S_create_c_locale(__tmp, __s); +13943: this->_M_initialize_numpunct(__tmp); +13943: this->_S_destroy_c_locale(__tmp); +13943: } +13943: } +13943: +13943: +13943: explicit +13943: numpunct_byname(const string& __s, size_t __refs = 0) +13943: : numpunct_byname(__s.c_str(), __refs) { } +13943: +13943: +13943: protected: +13943: virtual +13943: ~numpunct_byname() { } +13943: }; +13943: +13943: } +13943: +13943: +13943: # 1959 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template +13943: class num_get : public locale::facet +13943: { +13943: public: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef _InIter iter_type; +13943: +13943: +13943: +13943: static locale::id id; +13943: # 1980 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: num_get(size_t __refs = 0) : facet(__refs) { } +13943: # 2006 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, bool& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: # 2043 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, long& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned short& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned int& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned long& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, long long& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned long long& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: #pragma GCC diagnostic pop +13943: # 2106 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, float& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, double& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, long double& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: # 2149 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: get(iter_type __in, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, void*& __v) const +13943: { return this->do_get(__in, __end, __io, __err, __v); } +13943: +13943: protected: +13943: +13943: virtual ~num_get() { } +13943: +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iter_type +13943: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, +13943: string&) const; +13943: +13943: template +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iter_type +13943: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, +13943: _ValueT&) const; +13943: +13943: template +13943: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type +13943: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const +13943: { +13943: int __ret = -1; +13943: if (__len <= 10) +13943: { +13943: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) +13943: __ret = __c - _CharT2('0'); +13943: } +13943: else +13943: { +13943: if (__c >= _CharT2('0') && __c <= _CharT2('9')) +13943: __ret = __c - _CharT2('0'); +13943: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) +13943: __ret = 10 + (__c - _CharT2('a')); +13943: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) +13943: __ret = 10 + (__c - _CharT2('A')); +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename __gnu_cxx::__enable_if::__value, +13943: int>::__type +13943: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const +13943: { +13943: int __ret = -1; +13943: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); +13943: if (__q) +13943: { +13943: __ret = __q - __zero; +13943: if (__ret > 15) +13943: __ret -= 6; +13943: } +13943: return __ret; +13943: } +13943: # 2222 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual iter_type +13943: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; +13943: +13943: virtual iter_type +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, long& __v) const +13943: { return _M_extract_int(__beg, __end, __io, __err, __v); } +13943: +13943: virtual iter_type +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned short& __v) const +13943: { return _M_extract_int(__beg, __end, __io, __err, __v); } +13943: +13943: virtual iter_type +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned int& __v) const +13943: { return _M_extract_int(__beg, __end, __io, __err, __v); } +13943: +13943: virtual iter_type +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned long& __v) const +13943: { return _M_extract_int(__beg, __end, __io, __err, __v); } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: virtual iter_type +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, long long& __v) const +13943: { return _M_extract_int(__beg, __end, __io, __err, __v); } +13943: +13943: virtual iter_type +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, unsigned long long& __v) const +13943: { return _M_extract_int(__beg, __end, __io, __err, __v); } +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: virtual iter_type +13943: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; +13943: +13943: virtual iter_type +13943: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, +13943: double&) const; +13943: # 2277 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual iter_type +13943: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, +13943: long double&) const; +13943: +13943: +13943: virtual iter_type +13943: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; +13943: # 2305 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: }; +13943: +13943: template +13943: locale::id num_get<_CharT, _InIter>::id; +13943: # 2323 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: template +13943: class num_put : public locale::facet +13943: { +13943: public: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef _OutIter iter_type; +13943: +13943: +13943: +13943: static locale::id id; +13943: # 2344 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: explicit +13943: num_put(size_t __refs = 0) : facet(__refs) { } +13943: # 2362 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: # 2404 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, +13943: unsigned long __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, +13943: unsigned long long __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: #pragma GCC diagnostic pop +13943: # 2470 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, +13943: long double __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: # 2495 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: iter_type +13943: put(iter_type __s, ios_base& __io, char_type __fill, +13943: const void* __v) const +13943: { return this->do_put(__s, __io, __fill, __v); } +13943: +13943: protected: +13943: template +13943: iter_type +13943: _M_insert_float(iter_type, ios_base& __io, char_type __fill, +13943: char __mod, _ValueT __v) const; +13943: +13943: void +13943: _M_group_float(const char* __grouping, size_t __grouping_size, +13943: char_type __sep, const char_type* __p, char_type* __new, +13943: char_type* __cs, int& __len) const; +13943: +13943: template +13943: iter_type +13943: _M_insert_int(iter_type, ios_base& __io, char_type __fill, +13943: _ValueT __v) const; +13943: +13943: void +13943: _M_group_int(const char* __grouping, size_t __grouping_size, +13943: char_type __sep, ios_base& __io, char_type* __new, +13943: char_type* __cs, int& __len) const; +13943: +13943: void +13943: _M_pad(char_type __fill, streamsize __w, ios_base& __io, +13943: char_type* __new, const char_type* __cs, int& __len) const; +13943: +13943: +13943: virtual +13943: ~num_put() { } +13943: # 2543 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: virtual iter_type +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; +13943: +13943: virtual iter_type +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const +13943: { return _M_insert_int(__s, __io, __fill, __v); } +13943: +13943: virtual iter_type +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, +13943: unsigned long __v) const +13943: { return _M_insert_int(__s, __io, __fill, __v); } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: virtual iter_type +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, +13943: long long __v) const +13943: { return _M_insert_int(__s, __io, __fill, __v); } +13943: +13943: virtual iter_type +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, +13943: unsigned long long __v) const +13943: { return _M_insert_int(__s, __io, __fill, __v); } +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: virtual iter_type +13943: do_put(iter_type, ios_base&, char_type, double) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual iter_type +13943: do_put(iter_type, ios_base&, char_type, long double) const; +13943: +13943: +13943: virtual iter_type +13943: do_put(iter_type, ios_base&, char_type, const void*) const; +13943: # 2598 "/usr/include/c++/14/bits/locale_facets.h" 3 +13943: }; +13943: +13943: template +13943: locale::id num_put<_CharT, _OutIter>::id; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline bool +13943: isspace(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::space, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: isprint(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::print, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: iscntrl(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: isupper(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::upper, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: islower(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::lower, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: isalpha(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::alpha, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: isdigit(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::digit, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: ispunct(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::punct, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: isxdigit(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: isalnum(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::alnum, __c); } +13943: +13943: +13943: template +13943: inline bool +13943: isgraph(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::graph, __c); } +13943: +13943: +13943: +13943: template +13943: inline bool +13943: isblank(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).is(ctype_base::blank, __c); } +13943: +13943: +13943: +13943: template +13943: inline _CharT +13943: toupper(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).toupper(__c); } +13943: +13943: +13943: template +13943: inline _CharT +13943: tolower(_CharT __c, const locale& __loc) +13943: { return use_facet >(__loc).tolower(__c); } +13943: +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/locale_facets.tcc" 1 3 +13943: # 33 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template +13943: struct __use_cache +13943: { +13943: const _Facet* +13943: operator() (const locale& __loc) const; +13943: }; +13943: +13943: +13943: template +13943: struct __use_cache<__numpunct_cache<_CharT> > +13943: { +13943: const __numpunct_cache<_CharT>* +13943: operator() (const locale& __loc) const +13943: { +13943: const size_t __i = numpunct<_CharT>::id._M_id(); +13943: const locale::facet** __caches = __loc._M_impl->_M_caches; +13943: if (!__caches[__i]) +13943: { +13943: __numpunct_cache<_CharT>* __tmp = 0; +13943: try +13943: { +13943: __tmp = new __numpunct_cache<_CharT>; +13943: __tmp->_M_cache(__loc); +13943: } +13943: catch(...) +13943: { +13943: delete __tmp; +13943: throw; +13943: } +13943: __loc._M_impl->_M_install_cache(__tmp, __i); +13943: } +13943: return static_cast*>(__caches[__i]); +13943: } +13943: }; +13943: +13943: template +13943: void +13943: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) +13943: { +13943: const numpunct<_CharT>& __np = use_facet >(__loc); +13943: +13943: char* __grouping = 0; +13943: _CharT* __truename = 0; +13943: _CharT* __falsename = 0; +13943: try +13943: { +13943: const string& __g = __np.grouping(); +13943: _M_grouping_size = __g.size(); +13943: __grouping = new char[_M_grouping_size]; +13943: __g.copy(__grouping, _M_grouping_size); +13943: _M_use_grouping = (_M_grouping_size +13943: && static_cast(__grouping[0]) > 0 +13943: && (__grouping[0] +13943: != __gnu_cxx::__numeric_traits::__max)); +13943: +13943: const basic_string<_CharT>& __tn = __np.truename(); +13943: _M_truename_size = __tn.size(); +13943: __truename = new _CharT[_M_truename_size]; +13943: __tn.copy(__truename, _M_truename_size); +13943: +13943: const basic_string<_CharT>& __fn = __np.falsename(); +13943: _M_falsename_size = __fn.size(); +13943: __falsename = new _CharT[_M_falsename_size]; +13943: __fn.copy(__falsename, _M_falsename_size); +13943: +13943: _M_decimal_point = __np.decimal_point(); +13943: _M_thousands_sep = __np.thousands_sep(); +13943: +13943: const ctype<_CharT>& __ct = use_facet >(__loc); +13943: __ct.widen(__num_base::_S_atoms_out, +13943: __num_base::_S_atoms_out +13943: + __num_base::_S_oend, _M_atoms_out); +13943: __ct.widen(__num_base::_S_atoms_in, +13943: __num_base::_S_atoms_in +13943: + __num_base::_S_iend, _M_atoms_in); +13943: +13943: _M_grouping = __grouping; +13943: _M_truename = __truename; +13943: _M_falsename = __falsename; +13943: _M_allocated = true; +13943: } +13943: catch(...) +13943: { +13943: delete [] __grouping; +13943: delete [] __truename; +13943: delete [] __falsename; +13943: throw; +13943: } +13943: } +13943: # 139 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: __attribute__ ((__pure__)) bool +13943: __verify_grouping(const char* __grouping, size_t __grouping_size, +13943: const string& __grouping_tmp) throw (); +13943: +13943: +13943: +13943: template +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: _InIter +13943: num_get<_CharT, _InIter>:: +13943: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, +13943: ios_base::iostate& __err, string& __xtrc) const +13943: { +13943: typedef char_traits<_CharT> __traits_type; +13943: typedef __numpunct_cache<_CharT> __cache_type; +13943: __use_cache<__cache_type> __uc; +13943: const locale& __loc = __io._M_getloc(); +13943: const __cache_type* __lc = __uc(__loc); +13943: const _CharT* __lit = __lc->_M_atoms_in; +13943: char_type __c = char_type(); +13943: +13943: +13943: bool __testeof = __beg == __end; +13943: +13943: +13943: if (!__testeof) +13943: { +13943: __c = *__beg; +13943: const bool __plus = __c == __lit[__num_base::_S_iplus]; +13943: if ((__plus || __c == __lit[__num_base::_S_iminus]) +13943: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +13943: && !(__c == __lc->_M_decimal_point)) +13943: { +13943: __xtrc += __plus ? '+' : '-'; +13943: if (++__beg != __end) +13943: __c = *__beg; +13943: else +13943: __testeof = true; +13943: } +13943: } +13943: +13943: +13943: bool __found_mantissa = false; +13943: int __sep_pos = 0; +13943: while (!__testeof) +13943: { +13943: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +13943: || __c == __lc->_M_decimal_point) +13943: break; +13943: else if (__c == __lit[__num_base::_S_izero]) +13943: { +13943: if (!__found_mantissa) +13943: { +13943: __xtrc += '0'; +13943: __found_mantissa = true; +13943: } +13943: ++__sep_pos; +13943: +13943: if (++__beg != __end) +13943: __c = *__beg; +13943: else +13943: __testeof = true; +13943: } +13943: else +13943: break; +13943: } +13943: +13943: +13943: bool __found_dec = false; +13943: bool __found_sci = false; +13943: string __found_grouping; +13943: if (__lc->_M_use_grouping) +13943: __found_grouping.reserve(32); +13943: const char_type* __lit_zero = __lit + __num_base::_S_izero; +13943: +13943: if (!__lc->_M_allocated) +13943: +13943: while (!__testeof) +13943: { +13943: const int __digit = _M_find(__lit_zero, 10, __c); +13943: if (__digit != -1) +13943: { +13943: __xtrc += '0' + __digit; +13943: __found_mantissa = true; +13943: } +13943: else if (__c == __lc->_M_decimal_point +13943: && !__found_dec && !__found_sci) +13943: { +13943: __xtrc += '.'; +13943: __found_dec = true; +13943: } +13943: else if ((__c == __lit[__num_base::_S_ie] +13943: || __c == __lit[__num_base::_S_iE]) +13943: && !__found_sci && __found_mantissa) +13943: { +13943: +13943: __xtrc += 'e'; +13943: __found_sci = true; +13943: +13943: +13943: if (++__beg != __end) +13943: { +13943: __c = *__beg; +13943: const bool __plus = __c == __lit[__num_base::_S_iplus]; +13943: if (__plus || __c == __lit[__num_base::_S_iminus]) +13943: __xtrc += __plus ? '+' : '-'; +13943: else +13943: continue; +13943: } +13943: else +13943: { +13943: __testeof = true; +13943: break; +13943: } +13943: } +13943: else +13943: break; +13943: +13943: if (++__beg != __end) +13943: __c = *__beg; +13943: else +13943: __testeof = true; +13943: } +13943: else +13943: while (!__testeof) +13943: { +13943: +13943: +13943: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +13943: { +13943: if (!__found_dec && !__found_sci) +13943: { +13943: +13943: +13943: if (__sep_pos) +13943: { +13943: __found_grouping += static_cast(__sep_pos); +13943: __sep_pos = 0; +13943: } +13943: else +13943: { +13943: +13943: +13943: __xtrc.clear(); +13943: break; +13943: } +13943: } +13943: else +13943: break; +13943: } +13943: else if (__c == __lc->_M_decimal_point) +13943: { +13943: if (!__found_dec && !__found_sci) +13943: { +13943: +13943: +13943: +13943: if (__found_grouping.size()) +13943: __found_grouping += static_cast(__sep_pos); +13943: __xtrc += '.'; +13943: __found_dec = true; +13943: } +13943: else +13943: break; +13943: } +13943: else +13943: { +13943: const char_type* __q = +13943: __traits_type::find(__lit_zero, 10, __c); +13943: if (__q) +13943: { +13943: __xtrc += '0' + (__q - __lit_zero); +13943: __found_mantissa = true; +13943: ++__sep_pos; +13943: } +13943: else if ((__c == __lit[__num_base::_S_ie] +13943: || __c == __lit[__num_base::_S_iE]) +13943: && !__found_sci && __found_mantissa) +13943: { +13943: +13943: if (__found_grouping.size() && !__found_dec) +13943: __found_grouping += static_cast(__sep_pos); +13943: __xtrc += 'e'; +13943: __found_sci = true; +13943: +13943: +13943: if (++__beg != __end) +13943: { +13943: __c = *__beg; +13943: const bool __plus = __c == __lit[__num_base::_S_iplus]; +13943: if ((__plus || __c == __lit[__num_base::_S_iminus]) +13943: && !(__lc->_M_use_grouping +13943: && __c == __lc->_M_thousands_sep) +13943: && !(__c == __lc->_M_decimal_point)) +13943: __xtrc += __plus ? '+' : '-'; +13943: else +13943: continue; +13943: } +13943: else +13943: { +13943: __testeof = true; +13943: break; +13943: } +13943: } +13943: else +13943: break; +13943: } +13943: +13943: if (++__beg != __end) +13943: __c = *__beg; +13943: else +13943: __testeof = true; +13943: } +13943: +13943: +13943: +13943: if (__found_grouping.size()) +13943: { +13943: +13943: if (!__found_dec && !__found_sci) +13943: __found_grouping += static_cast(__sep_pos); +13943: +13943: if (!std::__verify_grouping(__lc->_M_grouping, +13943: __lc->_M_grouping_size, +13943: __found_grouping)) +13943: __err = ios_base::failbit; +13943: } +13943: +13943: return __beg; +13943: } +13943: +13943: template +13943: template +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: _InIter +13943: num_get<_CharT, _InIter>:: +13943: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, +13943: ios_base::iostate& __err, _ValueT& __v) const +13943: { +13943: typedef char_traits<_CharT> __traits_type; +13943: using __gnu_cxx::__add_unsigned; +13943: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; +13943: typedef __numpunct_cache<_CharT> __cache_type; +13943: __use_cache<__cache_type> __uc; +13943: const locale& __loc = __io._M_getloc(); +13943: const __cache_type* __lc = __uc(__loc); +13943: const _CharT* __lit = __lc->_M_atoms_in; +13943: char_type __c = char_type(); +13943: +13943: +13943: const ios_base::fmtflags __basefield = __io.flags() +13943: & ios_base::basefield; +13943: const bool __oct = __basefield == ios_base::oct; +13943: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); +13943: +13943: +13943: bool __testeof = __beg == __end; +13943: +13943: +13943: bool __negative = false; +13943: if (!__testeof) +13943: { +13943: __c = *__beg; +13943: __negative = __c == __lit[__num_base::_S_iminus]; +13943: if ((__negative || __c == __lit[__num_base::_S_iplus]) +13943: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +13943: && !(__c == __lc->_M_decimal_point)) +13943: { +13943: if (++__beg != __end) +13943: __c = *__beg; +13943: else +13943: __testeof = true; +13943: } +13943: } +13943: +13943: +13943: +13943: bool __found_zero = false; +13943: int __sep_pos = 0; +13943: while (!__testeof) +13943: { +13943: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +13943: || __c == __lc->_M_decimal_point) +13943: break; +13943: else if (__c == __lit[__num_base::_S_izero] +13943: && (!__found_zero || __base == 10)) +13943: { +13943: __found_zero = true; +13943: ++__sep_pos; +13943: if (__basefield == 0) +13943: __base = 8; +13943: if (__base == 8) +13943: __sep_pos = 0; +13943: } +13943: else if (__found_zero +13943: && (__c == __lit[__num_base::_S_ix] +13943: || __c == __lit[__num_base::_S_iX])) +13943: { +13943: if (__basefield == 0) +13943: __base = 16; +13943: if (__base == 16) +13943: { +13943: __found_zero = false; +13943: __sep_pos = 0; +13943: } +13943: else +13943: break; +13943: } +13943: else +13943: break; +13943: +13943: if (++__beg != __end) +13943: { +13943: __c = *__beg; +13943: if (!__found_zero) +13943: break; +13943: } +13943: else +13943: __testeof = true; +13943: } +13943: +13943: +13943: +13943: const size_t __len = (__base == 16 ? __num_base::_S_iend +13943: - __num_base::_S_izero : __base); +13943: +13943: +13943: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; +13943: string __found_grouping; +13943: if (__lc->_M_use_grouping) +13943: __found_grouping.reserve(32); +13943: bool __testfail = false; +13943: bool __testoverflow = false; +13943: const __unsigned_type __max = +13943: (__negative && __num_traits::__is_signed) +13943: ? -static_cast<__unsigned_type>(__num_traits::__min) +13943: : __num_traits::__max; +13943: const __unsigned_type __smax = __max / __base; +13943: __unsigned_type __result = 0; +13943: int __digit = 0; +13943: const char_type* __lit_zero = __lit + __num_base::_S_izero; +13943: +13943: if (!__lc->_M_allocated) +13943: +13943: while (!__testeof) +13943: { +13943: __digit = _M_find(__lit_zero, __len, __c); +13943: if (__digit == -1) +13943: break; +13943: +13943: if (__result > __smax) +13943: __testoverflow = true; +13943: else +13943: { +13943: __result *= __base; +13943: __testoverflow |= __result > __max - __digit; +13943: __result += __digit; +13943: ++__sep_pos; +13943: } +13943: +13943: if (++__beg != __end) +13943: __c = *__beg; +13943: else +13943: __testeof = true; +13943: } +13943: else +13943: while (!__testeof) +13943: { +13943: +13943: +13943: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +13943: { +13943: +13943: +13943: if (__sep_pos) +13943: { +13943: __found_grouping += static_cast(__sep_pos); +13943: __sep_pos = 0; +13943: } +13943: else +13943: { +13943: __testfail = true; +13943: break; +13943: } +13943: } +13943: else if (__c == __lc->_M_decimal_point) +13943: break; +13943: else +13943: { +13943: const char_type* __q = +13943: __traits_type::find(__lit_zero, __len, __c); +13943: if (!__q) +13943: break; +13943: +13943: __digit = __q - __lit_zero; +13943: if (__digit > 15) +13943: __digit -= 6; +13943: if (__result > __smax) +13943: __testoverflow = true; +13943: else +13943: { +13943: __result *= __base; +13943: __testoverflow |= __result > __max - __digit; +13943: __result += __digit; +13943: ++__sep_pos; +13943: } +13943: } +13943: +13943: if (++__beg != __end) +13943: __c = *__beg; +13943: else +13943: __testeof = true; +13943: } +13943: +13943: +13943: +13943: if (__found_grouping.size()) +13943: { +13943: +13943: __found_grouping += static_cast(__sep_pos); +13943: +13943: if (!std::__verify_grouping(__lc->_M_grouping, +13943: __lc->_M_grouping_size, +13943: __found_grouping)) +13943: __err = ios_base::failbit; +13943: } +13943: +13943: +13943: +13943: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) +13943: || __testfail) +13943: { +13943: __v = 0; +13943: __err = ios_base::failbit; +13943: } +13943: else if (__testoverflow) +13943: { +13943: if (__negative && __num_traits::__is_signed) +13943: __v = __num_traits::__min; +13943: else +13943: __v = __num_traits::__max; +13943: __err = ios_base::failbit; +13943: } +13943: else +13943: __v = __negative ? -__result : __result; +13943: +13943: if (__testeof) +13943: __err |= ios_base::eofbit; +13943: return __beg; +13943: } +13943: +13943: +13943: +13943: template +13943: _InIter +13943: num_get<_CharT, _InIter>:: +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, bool& __v) const +13943: { +13943: if (!(__io.flags() & ios_base::boolalpha)) +13943: { +13943: +13943: +13943: +13943: long __l = -1; +13943: __beg = _M_extract_int(__beg, __end, __io, __err, __l); +13943: if (__l == 0 || __l == 1) +13943: __v = bool(__l); +13943: else +13943: { +13943: +13943: +13943: __v = true; +13943: __err = ios_base::failbit; +13943: if (__beg == __end) +13943: __err |= ios_base::eofbit; +13943: } +13943: } +13943: else +13943: { +13943: +13943: typedef __numpunct_cache<_CharT> __cache_type; +13943: __use_cache<__cache_type> __uc; +13943: const locale& __loc = __io._M_getloc(); +13943: const __cache_type* __lc = __uc(__loc); +13943: +13943: bool __testf = true; +13943: bool __testt = true; +13943: bool __donef = __lc->_M_falsename_size == 0; +13943: bool __donet = __lc->_M_truename_size == 0; +13943: bool __testeof = false; +13943: size_t __n = 0; +13943: while (!__donef || !__donet) +13943: { +13943: if (__beg == __end) +13943: { +13943: __testeof = true; +13943: break; +13943: } +13943: +13943: const char_type __c = *__beg; +13943: +13943: if (!__donef) +13943: __testf = __c == __lc->_M_falsename[__n]; +13943: +13943: if (!__testf && __donet) +13943: break; +13943: +13943: if (!__donet) +13943: __testt = __c == __lc->_M_truename[__n]; +13943: +13943: if (!__testt && __donef) +13943: break; +13943: +13943: if (!__testt && !__testf) +13943: break; +13943: +13943: ++__n; +13943: ++__beg; +13943: +13943: __donef = !__testf || __n >= __lc->_M_falsename_size; +13943: __donet = !__testt || __n >= __lc->_M_truename_size; +13943: } +13943: if (__testf && __n == __lc->_M_falsename_size && __n) +13943: { +13943: __v = false; +13943: if (__testt && __n == __lc->_M_truename_size) +13943: __err = ios_base::failbit; +13943: else +13943: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; +13943: } +13943: else if (__testt && __n == __lc->_M_truename_size && __n) +13943: { +13943: __v = true; +13943: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; +13943: } +13943: else +13943: { +13943: +13943: +13943: __v = false; +13943: __err = ios_base::failbit; +13943: if (__testeof) +13943: __err |= ios_base::eofbit; +13943: } +13943: } +13943: return __beg; +13943: } +13943: +13943: template +13943: _InIter +13943: num_get<_CharT, _InIter>:: +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, float& __v) const +13943: { +13943: string __xtrc; +13943: __xtrc.reserve(32); +13943: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); +13943: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); +13943: if (__beg == __end) +13943: __err |= ios_base::eofbit; +13943: return __beg; +13943: } +13943: +13943: template +13943: _InIter +13943: num_get<_CharT, _InIter>:: +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, double& __v) const +13943: { +13943: string __xtrc; +13943: __xtrc.reserve(32); +13943: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); +13943: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); +13943: if (__beg == __end) +13943: __err |= ios_base::eofbit; +13943: return __beg; +13943: } +13943: # 735 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: template +13943: _InIter +13943: num_get<_CharT, _InIter>:: +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, long double& __v) const +13943: { +13943: string __xtrc; +13943: __xtrc.reserve(32); +13943: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); +13943: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); +13943: if (__beg == __end) +13943: __err |= ios_base::eofbit; +13943: return __beg; +13943: } +13943: +13943: template +13943: _InIter +13943: num_get<_CharT, _InIter>:: +13943: do_get(iter_type __beg, iter_type __end, ios_base& __io, +13943: ios_base::iostate& __err, void*& __v) const +13943: { +13943: +13943: typedef ios_base::fmtflags fmtflags; +13943: const fmtflags __fmt = __io.flags(); +13943: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: typedef __gnu_cxx::__conditional_type<(sizeof(void*) +13943: <= sizeof(unsigned long)), +13943: unsigned long, unsigned long long>::__type _UIntPtrType; +13943: #pragma GCC diagnostic pop +13943: +13943: _UIntPtrType __ul; +13943: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); +13943: +13943: +13943: __io.flags(__fmt); +13943: +13943: __v = reinterpret_cast(__ul); +13943: return __beg; +13943: } +13943: # 798 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: template +13943: void +13943: num_put<_CharT, _OutIter>:: +13943: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, +13943: _CharT* __new, const _CharT* __cs, int& __len) const +13943: { +13943: +13943: +13943: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, +13943: __cs, __w, __len); +13943: __len = static_cast(__w); +13943: } +13943: +13943: +13943: +13943: template +13943: int +13943: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, +13943: ios_base::fmtflags __flags, bool __dec) +13943: { +13943: _CharT* __buf = __bufend; +13943: if (__builtin_expect(__dec, true)) +13943: { +13943: +13943: do +13943: { +13943: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; +13943: __v /= 10; +13943: } +13943: while (__v != 0); +13943: } +13943: else if ((__flags & ios_base::basefield) == ios_base::oct) +13943: { +13943: +13943: do +13943: { +13943: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; +13943: __v >>= 3; +13943: } +13943: while (__v != 0); +13943: } +13943: else +13943: { +13943: +13943: const bool __uppercase = __flags & ios_base::uppercase; +13943: const int __case_offset = __uppercase ? __num_base::_S_oudigits +13943: : __num_base::_S_odigits; +13943: do +13943: { +13943: *--__buf = __lit[(__v & 0xf) + __case_offset]; +13943: __v >>= 4; +13943: } +13943: while (__v != 0); +13943: } +13943: return __bufend - __buf; +13943: } +13943: +13943: +13943: +13943: template +13943: void +13943: num_put<_CharT, _OutIter>:: +13943: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, +13943: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const +13943: { +13943: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, +13943: __grouping_size, __cs, __cs + __len); +13943: __len = __p - __new; +13943: } +13943: +13943: template +13943: template +13943: _OutIter +13943: num_put<_CharT, _OutIter>:: +13943: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, +13943: _ValueT __v) const +13943: { +13943: using __gnu_cxx::__add_unsigned; +13943: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; +13943: typedef __numpunct_cache<_CharT> __cache_type; +13943: __use_cache<__cache_type> __uc; +13943: const locale& __loc = __io._M_getloc(); +13943: const __cache_type* __lc = __uc(__loc); +13943: const _CharT* __lit = __lc->_M_atoms_out; +13943: const ios_base::fmtflags __flags = __io.flags(); +13943: +13943: +13943: const int __ilen = 5 * sizeof(_ValueT); +13943: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * __ilen)); +13943: +13943: +13943: +13943: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; +13943: const bool __dec = (__basefield != ios_base::oct +13943: && __basefield != ios_base::hex); +13943: const __unsigned_type __u = ((__v > 0 || !__dec) +13943: ? __unsigned_type(__v) +13943: : -__unsigned_type(__v)); +13943: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); +13943: __cs += __ilen - __len; +13943: +13943: +13943: if (__lc->_M_use_grouping) +13943: { +13943: +13943: +13943: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * (__len + 1) +13943: * 2)); +13943: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, +13943: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); +13943: __cs = __cs2 + 2; +13943: } +13943: +13943: +13943: if (__builtin_expect(__dec, true)) +13943: { +13943: +13943: if (__v >= 0) +13943: { +13943: if (bool(__flags & ios_base::showpos) +13943: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) +13943: *--__cs = __lit[__num_base::_S_oplus], ++__len; +13943: } +13943: else +13943: *--__cs = __lit[__num_base::_S_ominus], ++__len; +13943: } +13943: else if (bool(__flags & ios_base::showbase) && __v) +13943: { +13943: if (__basefield == ios_base::oct) +13943: *--__cs = __lit[__num_base::_S_odigits], ++__len; +13943: else +13943: { +13943: +13943: const bool __uppercase = __flags & ios_base::uppercase; +13943: *--__cs = __lit[__num_base::_S_ox + __uppercase]; +13943: +13943: *--__cs = __lit[__num_base::_S_odigits]; +13943: __len += 2; +13943: } +13943: } +13943: +13943: +13943: const streamsize __w = __io.width(); +13943: if (__w > static_cast(__len)) +13943: { +13943: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * __w)); +13943: _M_pad(__fill, __w, __io, __cs3, __cs, __len); +13943: __cs = __cs3; +13943: } +13943: __io.width(0); +13943: +13943: +13943: +13943: return std::__write(__s, __cs, __len); +13943: } +13943: +13943: template +13943: void +13943: num_put<_CharT, _OutIter>:: +13943: _M_group_float(const char* __grouping, size_t __grouping_size, +13943: _CharT __sep, const _CharT* __p, _CharT* __new, +13943: _CharT* __cs, int& __len) const +13943: { +13943: +13943: +13943: +13943: const int __declen = __p ? __p - __cs : __len; +13943: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, +13943: __grouping_size, +13943: __cs, __cs + __declen); +13943: +13943: +13943: int __newlen = __p2 - __new; +13943: if (__p) +13943: { +13943: char_traits<_CharT>::copy(__p2, __p, __len - __declen); +13943: __newlen += __len - __declen; +13943: } +13943: __len = __newlen; +13943: } +13943: # 992 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: template +13943: template +13943: _OutIter +13943: num_put<_CharT, _OutIter>:: +13943: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, +13943: _ValueT __v) const +13943: { +13943: typedef __numpunct_cache<_CharT> __cache_type; +13943: __use_cache<__cache_type> __uc; +13943: const locale& __loc = __io._M_getloc(); +13943: const __cache_type* __lc = __uc(__loc); +13943: +13943: +13943: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); +13943: +13943: const int __max_digits = +13943: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; +13943: +13943: +13943: int __len; +13943: +13943: char __fbuf[16]; +13943: __num_base::_S_format_float(__io, __fbuf, __mod); +13943: +13943: +13943: +13943: const bool __use_prec = +13943: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; +13943: +13943: +13943: +13943: int __cs_size = __max_digits * 3; +13943: char* __cs = static_cast(__builtin_alloca(__cs_size)); +13943: if (__use_prec) +13943: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +13943: __fbuf, __prec, __v); +13943: else +13943: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +13943: __fbuf, __v); +13943: +13943: +13943: if (__len >= __cs_size) +13943: { +13943: __cs_size = __len + 1; +13943: __cs = static_cast(__builtin_alloca(__cs_size)); +13943: if (__use_prec) +13943: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +13943: __fbuf, __prec, __v); +13943: else +13943: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +13943: __fbuf, __v); +13943: } +13943: # 1065 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: const ctype<_CharT>& __ctype = use_facet >(__loc); +13943: +13943: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * __len)); +13943: __ctype.widen(__cs, __cs + __len, __ws); +13943: +13943: +13943: _CharT* __wp = 0; +13943: const char* __p = char_traits::find(__cs, __len, '.'); +13943: if (__p) +13943: { +13943: __wp = __ws + (__p - __cs); +13943: *__wp = __lc->_M_decimal_point; +13943: } +13943: +13943: +13943: +13943: +13943: if (__lc->_M_use_grouping +13943: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' +13943: && __cs[1] >= '0' && __cs[2] >= '0'))) +13943: { +13943: +13943: +13943: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * __len * 2)); +13943: +13943: streamsize __off = 0; +13943: if (__cs[0] == '-' || __cs[0] == '+') +13943: { +13943: __off = 1; +13943: __ws2[0] = __ws[0]; +13943: __len -= 1; +13943: } +13943: +13943: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, +13943: __lc->_M_thousands_sep, __wp, __ws2 + __off, +13943: __ws + __off, __len); +13943: __len += __off; +13943: +13943: __ws = __ws2; +13943: } +13943: +13943: +13943: const streamsize __w = __io.width(); +13943: if (__w > static_cast(__len)) +13943: { +13943: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * __w)); +13943: _M_pad(__fill, __w, __io, __ws3, __ws, __len); +13943: __ws = __ws3; +13943: } +13943: __io.width(0); +13943: +13943: +13943: +13943: return std::__write(__s, __ws, __len); +13943: } +13943: +13943: template +13943: _OutIter +13943: num_put<_CharT, _OutIter>:: +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const +13943: { +13943: const ios_base::fmtflags __flags = __io.flags(); +13943: if ((__flags & ios_base::boolalpha) == 0) +13943: { +13943: const long __l = __v; +13943: __s = _M_insert_int(__s, __io, __fill, __l); +13943: } +13943: else +13943: { +13943: typedef __numpunct_cache<_CharT> __cache_type; +13943: __use_cache<__cache_type> __uc; +13943: const locale& __loc = __io._M_getloc(); +13943: const __cache_type* __lc = __uc(__loc); +13943: +13943: const _CharT* __name = __v ? __lc->_M_truename +13943: : __lc->_M_falsename; +13943: int __len = __v ? __lc->_M_truename_size +13943: : __lc->_M_falsename_size; +13943: +13943: const streamsize __w = __io.width(); +13943: if (__w > static_cast(__len)) +13943: { +13943: const streamsize __plen = __w - __len; +13943: _CharT* __ps +13943: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +13943: * __plen)); +13943: +13943: char_traits<_CharT>::assign(__ps, __plen, __fill); +13943: __io.width(0); +13943: +13943: if ((__flags & ios_base::adjustfield) == ios_base::left) +13943: { +13943: __s = std::__write(__s, __name, __len); +13943: __s = std::__write(__s, __ps, __plen); +13943: } +13943: else +13943: { +13943: __s = std::__write(__s, __ps, __plen); +13943: __s = std::__write(__s, __name, __len); +13943: } +13943: return __s; +13943: } +13943: __io.width(0); +13943: __s = std::__write(__s, __name, __len); +13943: } +13943: return __s; +13943: } +13943: +13943: template +13943: _OutIter +13943: num_put<_CharT, _OutIter>:: +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const +13943: { return _M_insert_float(__s, __io, __fill, char(), __v); } +13943: # 1190 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: template +13943: _OutIter +13943: num_put<_CharT, _OutIter>:: +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, +13943: long double __v) const +13943: { return _M_insert_float(__s, __io, __fill, 'L', __v); } +13943: +13943: template +13943: _OutIter +13943: num_put<_CharT, _OutIter>:: +13943: do_put(iter_type __s, ios_base& __io, char_type __fill, +13943: const void* __v) const +13943: { +13943: const ios_base::fmtflags __flags = __io.flags(); +13943: const ios_base::fmtflags __fmt = ~(ios_base::basefield +13943: | ios_base::uppercase); +13943: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) +13943: <= sizeof(unsigned long)), +13943: unsigned long, unsigned long long>::__type _UIntPtrType; +13943: #pragma GCC diagnostic pop +13943: +13943: __s = _M_insert_int(__s, __io, __fill, +13943: reinterpret_cast<_UIntPtrType>(__v)); +13943: __io.flags(__flags); +13943: return __s; +13943: } +13943: # 1230 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: +13943: # 1239 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +13943: template +13943: void +13943: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, +13943: _CharT* __news, const _CharT* __olds, +13943: streamsize __newlen, streamsize __oldlen) +13943: { +13943: const size_t __plen = static_cast(__newlen - __oldlen); +13943: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; +13943: +13943: +13943: if (__adjust == ios_base::left) +13943: { +13943: _Traits::copy(__news, __olds, __oldlen); +13943: _Traits::assign(__news + __oldlen, __plen, __fill); +13943: return; +13943: } +13943: +13943: size_t __mod = 0; +13943: if (__adjust == ios_base::internal) +13943: { +13943: +13943: +13943: +13943: const locale& __loc = __io._M_getloc(); +13943: const ctype<_CharT>& __ctype = use_facet >(__loc); +13943: +13943: if (__ctype.widen('-') == __olds[0] +13943: || __ctype.widen('+') == __olds[0]) +13943: { +13943: __news[0] = __olds[0]; +13943: __mod = 1; +13943: ++__news; +13943: } +13943: else if (__ctype.widen('0') == __olds[0] +13943: && __oldlen > 1 +13943: && (__ctype.widen('x') == __olds[1] +13943: || __ctype.widen('X') == __olds[1])) +13943: { +13943: __news[0] = __olds[0]; +13943: __news[1] = __olds[1]; +13943: __mod = 2; +13943: __news += 2; +13943: } +13943: +13943: } +13943: _Traits::assign(__news, __plen, __fill); +13943: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); +13943: } +13943: +13943: template +13943: _CharT* +13943: __add_grouping(_CharT* __s, _CharT __sep, +13943: const char* __gbeg, size_t __gsize, +13943: const _CharT* __first, const _CharT* __last) +13943: { +13943: size_t __idx = 0; +13943: size_t __ctr = 0; +13943: +13943: while (__last - __first > __gbeg[__idx] +13943: && static_cast(__gbeg[__idx]) > 0 +13943: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) +13943: { +13943: __last -= __gbeg[__idx]; +13943: __idx < __gsize - 1 ? ++__idx : ++__ctr; +13943: } +13943: +13943: while (__first != __last) +13943: *__s++ = *__first++; +13943: +13943: while (__ctr--) +13943: { +13943: *__s++ = __sep; +13943: for (char __i = __gbeg[__idx]; __i > 0; --__i) +13943: *__s++ = *__first++; +13943: } +13943: +13943: while (__idx--) +13943: { +13943: *__s++ = __sep; +13943: for (char __i = __gbeg[__idx]; __i > 0; --__i) +13943: *__s++ = *__first++; +13943: } +13943: +13943: return __s; +13943: } +13943: +13943: +13943: +13943: +13943: extern template class __cxx11:: numpunct; +13943: extern template class __cxx11:: numpunct_byname; +13943: extern template class num_get; +13943: extern template class num_put; +13943: extern template class ctype_byname; +13943: +13943: extern template +13943: const ctype* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const numpunct* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const num_put* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const num_get* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const ctype& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: const numpunct& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: const num_put& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: const num_get& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: +13943: extern template class __cxx11:: numpunct; +13943: extern template class __cxx11:: numpunct_byname; +13943: extern template class num_get; +13943: extern template class num_put; +13943: extern template class ctype_byname; +13943: +13943: extern template +13943: const ctype* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const numpunct* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const num_put* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const num_get* +13943: __try_use_facet >(const locale&) noexcept; +13943: +13943: extern template +13943: const ctype& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: const numpunct& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: const num_put& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: const num_get& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: +13943: +13943: +13943: } +13943: # 2700 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +13943: # 38 "/usr/include/c++/14/bits/basic_ios.h" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: inline const _Facet& +13943: __check_facet(const _Facet* __f) +13943: { +13943: if (!__f) +13943: __throw_bad_cast(); +13943: return *__f; +13943: } +13943: # 66 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: template +13943: class basic_ios : public ios_base +13943: { +13943: +13943: +13943: +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef typename _Traits::int_type int_type; +13943: typedef typename _Traits::pos_type pos_type; +13943: typedef typename _Traits::off_type off_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef ctype<_CharT> __ctype_type; +13943: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > +13943: __num_put_type; +13943: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > +13943: __num_get_type; +13943: +13943: +13943: +13943: protected: +13943: basic_ostream<_CharT, _Traits>* _M_tie; +13943: mutable char_type _M_fill; +13943: mutable bool _M_fill_init; +13943: basic_streambuf<_CharT, _Traits>* _M_streambuf; +13943: +13943: +13943: const __ctype_type* _M_ctype; +13943: +13943: const __num_put_type* _M_num_put; +13943: +13943: const __num_get_type* _M_num_get; +13943: +13943: public: +13943: # 121 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: explicit operator bool() const +13943: { return !this->fail(); } +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: operator!() const +13943: { return this->fail(); } +13943: # 140 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: iostate +13943: rdstate() const +13943: { return _M_streambuf_state; } +13943: # 151 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: void +13943: clear(iostate __state = goodbit); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: setstate(iostate __state) +13943: { this->clear(this->rdstate() | __state); } +13943: +13943: +13943: +13943: +13943: void +13943: _M_setstate(iostate __state) +13943: { +13943: +13943: +13943: _M_streambuf_state |= __state; +13943: if (this->exceptions() & __state) +13943: throw; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: good() const +13943: { return this->rdstate() == 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: eof() const +13943: { return (this->rdstate() & eofbit) != 0; } +13943: # 204 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: bool +13943: fail() const +13943: { return (this->rdstate() & (badbit | failbit)) != 0; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: bad() const +13943: { return (this->rdstate() & badbit) != 0; } +13943: # 225 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: iostate +13943: exceptions() const +13943: { return _M_exception; } +13943: # 260 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: void +13943: exceptions(iostate __except) +13943: { +13943: _M_exception = __except; +13943: this->clear(_M_streambuf_state); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) +13943: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), +13943: _M_ctype(0), _M_num_put(0), _M_num_get(0) +13943: { this->init(__sb); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual +13943: ~basic_ios() { } +13943: # 298 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: basic_ostream<_CharT, _Traits>* +13943: tie() const +13943: { return _M_tie; } +13943: # 310 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: basic_ostream<_CharT, _Traits>* +13943: tie(basic_ostream<_CharT, _Traits>* __tiestr) +13943: { +13943: basic_ostream<_CharT, _Traits>* __old = _M_tie; +13943: _M_tie = __tiestr; +13943: return __old; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_streambuf<_CharT, _Traits>* +13943: rdbuf() const +13943: { return _M_streambuf; } +13943: # 350 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: basic_streambuf<_CharT, _Traits>* +13943: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); +13943: # 364 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: basic_ios& +13943: copyfmt(const basic_ios& __rhs); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: char_type +13943: fill() const +13943: { +13943: if (!_M_fill_init) +13943: { +13943: _M_fill = this->widen(' '); +13943: _M_fill_init = true; +13943: } +13943: return _M_fill; +13943: } +13943: # 393 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: char_type +13943: fill(char_type __ch) +13943: { +13943: char_type __old = this->fill(); +13943: _M_fill = __ch; +13943: return __old; +13943: } +13943: # 413 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: locale +13943: imbue(const locale& __loc); +13943: # 433 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: char +13943: narrow(char_type __c, char __dfault) const +13943: { return __check_facet(_M_ctype).narrow(__c, __dfault); } +13943: # 452 "/usr/include/c++/14/bits/basic_ios.h" 3 +13943: char_type +13943: widen(char __c) const +13943: { return __check_facet(_M_ctype).widen(__c); } +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_ios() +13943: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), +13943: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) +13943: { } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: init(basic_streambuf<_CharT, _Traits>* __sb); +13943: +13943: +13943: basic_ios(const basic_ios&) = delete; +13943: basic_ios& operator=(const basic_ios&) = delete; +13943: +13943: void +13943: move(basic_ios& __rhs) +13943: { +13943: ios_base::_M_move(__rhs); +13943: _M_cache_locale(_M_ios_locale); +13943: this->tie(__rhs.tie(nullptr)); +13943: _M_fill = __rhs._M_fill; +13943: _M_fill_init = __rhs._M_fill_init; +13943: _M_streambuf = nullptr; +13943: } +13943: +13943: void +13943: move(basic_ios&& __rhs) +13943: { this->move(__rhs); } +13943: +13943: void +13943: swap(basic_ios& __rhs) noexcept +13943: { +13943: ios_base::_M_swap(__rhs); +13943: _M_cache_locale(_M_ios_locale); +13943: __rhs._M_cache_locale(__rhs._M_ios_locale); +13943: std::swap(_M_tie, __rhs._M_tie); +13943: std::swap(_M_fill, __rhs._M_fill); +13943: std::swap(_M_fill_init, __rhs._M_fill_init); +13943: } +13943: +13943: void +13943: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) +13943: { _M_streambuf = __sb; } +13943: +13943: +13943: void +13943: _M_cache_locale(const locale& __loc); +13943: }; +13943: +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/basic_ios.tcc" 1 3 +13943: # 33 "/usr/include/c++/14/bits/basic_ios.tcc" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/basic_ios.tcc" 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: void +13943: basic_ios<_CharT, _Traits>::clear(iostate __state) +13943: { +13943: if (this->rdbuf()) +13943: _M_streambuf_state = __state; +13943: else +13943: _M_streambuf_state = __state | badbit; +13943: if (this->exceptions() & this->rdstate()) +13943: __throw_ios_failure(("basic_ios::clear")); +13943: } +13943: +13943: template +13943: basic_streambuf<_CharT, _Traits>* +13943: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) +13943: { +13943: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; +13943: _M_streambuf = __sb; +13943: this->clear(); +13943: return __old; +13943: } +13943: +13943: template +13943: basic_ios<_CharT, _Traits>& +13943: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) +13943: { +13943: +13943: +13943: if (this != std::__addressof(__rhs)) +13943: { +13943: +13943: +13943: +13943: +13943: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? +13943: _M_local_word : new _Words[__rhs._M_word_size]; +13943: +13943: +13943: _Callback_list* __cb = __rhs._M_callbacks; +13943: if (__cb) +13943: __cb->_M_add_reference(); +13943: _M_call_callbacks(erase_event); +13943: if (_M_word != _M_local_word) +13943: { +13943: delete [] _M_word; +13943: _M_word = 0; +13943: } +13943: _M_dispose_callbacks(); +13943: +13943: +13943: _M_callbacks = __cb; +13943: for (int __i = 0; __i < __rhs._M_word_size; ++__i) +13943: __words[__i] = __rhs._M_word[__i]; +13943: _M_word = __words; +13943: _M_word_size = __rhs._M_word_size; +13943: +13943: this->flags(__rhs.flags()); +13943: this->width(__rhs.width()); +13943: this->precision(__rhs.precision()); +13943: this->tie(__rhs.tie()); +13943: this->fill(__rhs.fill()); +13943: _M_ios_locale = __rhs.getloc(); +13943: _M_cache_locale(_M_ios_locale); +13943: +13943: _M_call_callbacks(copyfmt_event); +13943: +13943: +13943: this->exceptions(__rhs.exceptions()); +13943: } +13943: return *this; +13943: } +13943: +13943: +13943: template +13943: locale +13943: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) +13943: { +13943: locale __old(this->getloc()); +13943: ios_base::imbue(__loc); +13943: _M_cache_locale(__loc); +13943: if (this->rdbuf() != 0) +13943: this->rdbuf()->pubimbue(__loc); +13943: return __old; +13943: } +13943: +13943: template +13943: void +13943: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) +13943: { +13943: +13943: ios_base::_M_init(); +13943: +13943: +13943: _M_cache_locale(_M_ios_locale); +13943: # 146 "/usr/include/c++/14/bits/basic_ios.tcc" 3 +13943: _M_fill = _CharT(); +13943: _M_fill_init = false; +13943: +13943: _M_tie = 0; +13943: _M_exception = goodbit; +13943: _M_streambuf = __sb; +13943: _M_streambuf_state = __sb ? goodbit : badbit; +13943: } +13943: +13943: template +13943: void +13943: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) +13943: { +13943: _M_ctype = std::__try_use_facet<__ctype_type>(__loc); +13943: _M_num_put = std::__try_use_facet<__num_put_type>(__loc); +13943: _M_num_get = std::__try_use_facet<__num_get_type>(__loc); +13943: } +13943: +13943: +13943: +13943: +13943: extern template class basic_ios; +13943: +13943: +13943: extern template class basic_ios; +13943: +13943: +13943: +13943: +13943: } +13943: # 521 "/usr/include/c++/14/bits/basic_ios.h" 2 3 +13943: # 47 "/usr/include/c++/14/ios" 2 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 50 "/usr/include/c++/14/ios" 2 3 +13943: # 41 "/usr/include/c++/14/ostream" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 48 "/usr/include/c++/14/ostream" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 65 "/usr/include/c++/14/ostream" 3 +13943: template +13943: class basic_ostream : virtual public basic_ios<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef typename _Traits::int_type int_type; +13943: typedef typename _Traits::pos_type pos_type; +13943: typedef typename _Traits::off_type off_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +13943: typedef basic_ios<_CharT, _Traits> __ios_type; +13943: typedef basic_ostream<_CharT, _Traits> __ostream_type; +13943: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > +13943: __num_put_type; +13943: typedef ctype<_CharT> __ctype_type; +13943: # 91 "/usr/include/c++/14/ostream" 3 +13943: explicit +13943: basic_ostream(__streambuf_type* __sb) +13943: { this->init(__sb); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual +13943: ~basic_ostream() { } +13943: +13943: +13943: class sentry; +13943: friend class sentry; +13943: # 115 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: operator<<(__ostream_type& (*__pf)(__ostream_type&)) +13943: { +13943: +13943: +13943: +13943: return __pf(*this); +13943: } +13943: +13943: __ostream_type& +13943: operator<<(__ios_type& (*__pf)(__ios_type&)) +13943: { +13943: +13943: +13943: +13943: __pf(*this); +13943: return *this; +13943: } +13943: +13943: __ostream_type& +13943: operator<<(ios_base& (*__pf) (ios_base&)) +13943: { +13943: +13943: +13943: +13943: __pf(*this); +13943: return *this; +13943: } +13943: # 173 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: operator<<(long __n) +13943: { return _M_insert(__n); } +13943: +13943: __ostream_type& +13943: operator<<(unsigned long __n) +13943: { return _M_insert(__n); } +13943: +13943: __ostream_type& +13943: operator<<(bool __n) +13943: { return _M_insert(__n); } +13943: +13943: __ostream_type& +13943: operator<<(short __n); +13943: +13943: __ostream_type& +13943: operator<<(unsigned short __n) +13943: { +13943: +13943: +13943: return _M_insert(static_cast(__n)); +13943: } +13943: +13943: __ostream_type& +13943: operator<<(int __n); +13943: +13943: __ostream_type& +13943: operator<<(unsigned int __n) +13943: { +13943: +13943: +13943: return _M_insert(static_cast(__n)); +13943: } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: __ostream_type& +13943: operator<<(long long __n) +13943: { return _M_insert(__n); } +13943: +13943: __ostream_type& +13943: operator<<(unsigned long long __n) +13943: { return _M_insert(__n); } +13943: #pragma GCC diagnostic pop +13943: # 230 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: operator<<(double __f) +13943: { return _M_insert(__f); } +13943: +13943: __ostream_type& +13943: operator<<(float __f) +13943: { +13943: +13943: +13943: return _M_insert(static_cast(__f)); +13943: } +13943: +13943: __ostream_type& +13943: operator<<(long double __f) +13943: { return _M_insert(__f); } +13943: # 300 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: operator<<(const void* __p) +13943: { return _M_insert(__p); } +13943: +13943: +13943: __ostream_type& +13943: operator<<(nullptr_t) +13943: { return *this << "nullptr"; } +13943: # 338 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: operator<<(__streambuf_type* __sb); +13943: # 371 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: put(char_type __c); +13943: # 390 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: write(const char_type* __s, streamsize __n); +13943: # 403 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: flush(); +13943: # 413 "/usr/include/c++/14/ostream" 3 +13943: pos_type +13943: tellp(); +13943: # 424 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: seekp(pos_type); +13943: # 436 "/usr/include/c++/14/ostream" 3 +13943: __ostream_type& +13943: seekp(off_type, ios_base::seekdir); +13943: +13943: protected: +13943: basic_ostream() +13943: { this->init(0); } +13943: +13943: +13943: +13943: basic_ostream(basic_iostream<_CharT, _Traits>&) { } +13943: +13943: basic_ostream(const basic_ostream&) = delete; +13943: +13943: basic_ostream(basic_ostream&& __rhs) +13943: : __ios_type() +13943: { __ios_type::move(__rhs); } +13943: +13943: +13943: +13943: basic_ostream& operator=(const basic_ostream&) = delete; +13943: +13943: basic_ostream& +13943: operator=(basic_ostream&& __rhs) +13943: { +13943: swap(__rhs); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_ostream& __rhs) +13943: { __ios_type::swap(__rhs); } +13943: +13943: +13943: template +13943: __ostream_type& +13943: _M_insert(_ValueT __v); +13943: +13943: private: +13943: +13943: void +13943: _M_write(const char_type* __s, streamsize __n) +13943: { std::__ostream_insert(*this, __s, __n); } +13943: +13943: }; +13943: # 488 "/usr/include/c++/14/ostream" 3 +13943: template +13943: class basic_ostream<_CharT, _Traits>::sentry +13943: { +13943: +13943: bool _M_ok; +13943: basic_ostream<_CharT, _Traits>& _M_os; +13943: +13943: public: +13943: # 507 "/usr/include/c++/14/ostream" 3 +13943: explicit +13943: sentry(basic_ostream<_CharT, _Traits>& __os); +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~sentry() +13943: { +13943: +13943: if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) +13943: { +13943: +13943: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) +13943: _M_os.setstate(ios_base::badbit); +13943: } +13943: } +13943: #pragma GCC diagnostic pop +13943: # 539 "/usr/include/c++/14/ostream" 3 +13943: explicit +13943: +13943: operator bool() const +13943: { return _M_ok; } +13943: }; +13943: # 561 "/usr/include/c++/14/ostream" 3 +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) +13943: { +13943: if (__out.width() != 0) +13943: return __ostream_insert(__out, &__c, 1); +13943: __out.put(__c); +13943: return __out; +13943: } +13943: +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) +13943: { return (__out << __out.widen(__c)); } +13943: +13943: +13943: template +13943: inline basic_ostream& +13943: operator<<(basic_ostream& __out, char __c) +13943: { +13943: if (__out.width() != 0) +13943: return __ostream_insert(__out, &__c, 1); +13943: __out.put(__c); +13943: return __out; +13943: } +13943: +13943: +13943: template +13943: inline basic_ostream& +13943: operator<<(basic_ostream& __out, signed char __c) +13943: { return (__out << static_cast(__c)); } +13943: +13943: template +13943: inline basic_ostream& +13943: operator<<(basic_ostream& __out, unsigned char __c) +13943: { return (__out << static_cast(__c)); } +13943: # 652 "/usr/include/c++/14/ostream" 3 +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) +13943: { +13943: if (!__s) +13943: __out.setstate(ios_base::badbit); +13943: else +13943: __ostream_insert(__out, __s, +13943: static_cast(_Traits::length(__s))); +13943: return __out; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits> & +13943: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); +13943: +13943: +13943: template +13943: inline basic_ostream& +13943: operator<<(basic_ostream& __out, const char* __s) +13943: { +13943: if (!__s) +13943: __out.setstate(ios_base::badbit); +13943: else +13943: __ostream_insert(__out, __s, +13943: static_cast(_Traits::length(__s))); +13943: return __out; +13943: } +13943: +13943: +13943: template +13943: inline basic_ostream& +13943: operator<<(basic_ostream& __out, const signed char* __s) +13943: { return (__out << reinterpret_cast(__s)); } +13943: +13943: template +13943: inline basic_ostream & +13943: operator<<(basic_ostream& __out, const unsigned char* __s) +13943: { return (__out << reinterpret_cast(__s)); } +13943: # 742 "/usr/include/c++/14/ostream" 3 +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: endl(basic_ostream<_CharT, _Traits>& __os) +13943: { return flush(__os.put(__os.widen('\n'))); } +13943: # 754 "/usr/include/c++/14/ostream" 3 +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: ends(basic_ostream<_CharT, _Traits>& __os) +13943: { return __os.put(_CharT()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline basic_ostream<_CharT, _Traits>& +13943: flush(basic_ostream<_CharT, _Traits>& __os) +13943: { return __os.flush(); } +13943: # 786 "/usr/include/c++/14/ostream" 3 +13943: template +13943: using _Require_derived_from_ios_base +13943: = _Require, __not_>, +13943: is_convertible::type, ios_base*>>; +13943: +13943: template, +13943: typename +13943: = decltype(std::declval<_Os&>() << std::declval())> +13943: using __rvalue_stream_insertion_t = _Os&&; +13943: # 808 "/usr/include/c++/14/ostream" 3 +13943: template +13943: inline __rvalue_stream_insertion_t<_Ostream, _Tp> +13943: operator<<(_Ostream&& __os, const _Tp& __x) +13943: { +13943: __os << __x; +13943: return std::move(__os); +13943: } +13943: # 1019 "/usr/include/c++/14/ostream" 3 +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/ostream.tcc" 1 3 +13943: # 37 "/usr/include/c++/14/bits/ostream.tcc" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/ostream.tcc" 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>::sentry:: +13943: sentry(basic_ostream<_CharT, _Traits>& __os) +13943: : _M_ok(false), _M_os(__os) +13943: { +13943: +13943: if (__os.tie() && __os.good()) +13943: __os.tie()->flush(); +13943: +13943: if (__os.good()) +13943: _M_ok = true; +13943: else if (__os.bad()) +13943: __os.setstate(ios_base::failbit); +13943: } +13943: +13943: template +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: _M_insert(_ValueT __v) +13943: { +13943: sentry __cerb(*this); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: +13943: const __num_put_type& __np = __check_facet(this->_M_num_put); +13943: +13943: +13943: +13943: +13943: if (__np.put(*this, *this, this->fill(), __v).failed()) +13943: __err |= ios_base::badbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: operator<<(short __n) +13943: { +13943: +13943: +13943: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; +13943: if (__fmt == ios_base::oct || __fmt == ios_base::hex) +13943: return _M_insert(static_cast(static_cast(__n))); +13943: else +13943: return _M_insert(static_cast(__n)); +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: operator<<(int __n) +13943: { +13943: +13943: +13943: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; +13943: if (__fmt == ios_base::oct || __fmt == ios_base::hex) +13943: return _M_insert(static_cast(static_cast(__n))); +13943: else +13943: return _M_insert(static_cast(__n)); +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: operator<<(__streambuf_type* __sbin) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: sentry __cerb(*this); +13943: if (__cerb && __sbin) +13943: { +13943: try +13943: { +13943: if (!__copy_streambufs(__sbin, this->rdbuf())) +13943: __err |= ios_base::failbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::failbit); } +13943: } +13943: else if (!__sbin) +13943: __err |= ios_base::badbit; +13943: if (__err) +13943: this->setstate(__err); +13943: return *this; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: put(char_type __c) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: sentry __cerb(*this); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const int_type __put = this->rdbuf()->sputc(__c); +13943: if (traits_type::eq_int_type(__put, traits_type::eof())) +13943: __err |= ios_base::badbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: write(const _CharT* __s, streamsize __n) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: sentry __cerb(*this); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: if (this->rdbuf()->sputn(__s, __n) != __n) +13943: __err = ios_base::badbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(ios_base::badbit); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: flush() +13943: { +13943: +13943: +13943: +13943: +13943: +13943: if (__streambuf_type* __buf = this->rdbuf()) +13943: { +13943: sentry __cerb(*this); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: if (this->rdbuf()->pubsync() == -1) +13943: __err |= ios_base::badbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: typename basic_ostream<_CharT, _Traits>::pos_type +13943: basic_ostream<_CharT, _Traits>:: +13943: tellp() +13943: { +13943: sentry __cerb(*this); +13943: pos_type __ret = pos_type(-1); +13943: if (!this->fail()) +13943: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); +13943: return __ret; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: seekp(pos_type __pos) +13943: { +13943: sentry __cerb(*this); +13943: if (!this->fail()) +13943: { +13943: +13943: +13943: const pos_type __p = this->rdbuf()->pubseekpos(__pos, ios_base::out); +13943: +13943: +13943: if (__p == pos_type(off_type(-1))) +13943: this->setstate(ios_base::failbit); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: basic_ostream<_CharT, _Traits>:: +13943: seekp(off_type __off, ios_base::seekdir __dir) +13943: { +13943: sentry __cerb(*this); +13943: if (!this->fail()) +13943: { +13943: +13943: +13943: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, +13943: ios_base::out); +13943: +13943: +13943: if (__p == pos_type(off_type(-1))) +13943: this->setstate(ios_base::failbit); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_ostream<_CharT, _Traits>& +13943: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) +13943: { +13943: if (!__s) +13943: __out.setstate(ios_base::badbit); +13943: else +13943: { +13943: +13943: +13943: const size_t __clen = char_traits::length(__s); +13943: try +13943: { +13943: struct __ptr_guard +13943: { +13943: _CharT *__p; +13943: __ptr_guard (_CharT *__ip): __p(__ip) { } +13943: ~__ptr_guard() { delete[] __p; } +13943: _CharT* __get() { return __p; } +13943: } __pg (new _CharT[__clen]); +13943: +13943: _CharT *__ws = __pg.__get(); +13943: for (size_t __i = 0; __i < __clen; ++__i) +13943: __ws[__i] = __out.widen(__s[__i]); +13943: __ostream_insert(__out, __ws, __clen); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: __out._M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { __out._M_setstate(ios_base::badbit); } +13943: } +13943: return __out; +13943: } +13943: +13943: +13943: +13943: +13943: extern template class basic_ostream; +13943: extern template ostream& endl(ostream&); +13943: extern template ostream& ends(ostream&); +13943: extern template ostream& flush(ostream&); +13943: extern template ostream& operator<<(ostream&, char); +13943: extern template ostream& operator<<(ostream&, unsigned char); +13943: extern template ostream& operator<<(ostream&, signed char); +13943: extern template ostream& operator<<(ostream&, const char*); +13943: extern template ostream& operator<<(ostream&, const unsigned char*); +13943: extern template ostream& operator<<(ostream&, const signed char*); +13943: +13943: extern template ostream& ostream::_M_insert(long); +13943: extern template ostream& ostream::_M_insert(unsigned long); +13943: extern template ostream& ostream::_M_insert(bool); +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: extern template ostream& ostream::_M_insert(long long); +13943: extern template ostream& ostream::_M_insert(unsigned long long); +13943: #pragma GCC diagnostic pop +13943: +13943: extern template ostream& ostream::_M_insert(double); +13943: extern template ostream& ostream::_M_insert(long double); +13943: extern template ostream& ostream::_M_insert(const void*); +13943: +13943: +13943: extern template class basic_ostream; +13943: extern template wostream& endl(wostream&); +13943: extern template wostream& ends(wostream&); +13943: extern template wostream& flush(wostream&); +13943: extern template wostream& operator<<(wostream&, wchar_t); +13943: extern template wostream& operator<<(wostream&, char); +13943: extern template wostream& operator<<(wostream&, const wchar_t*); +13943: extern template wostream& operator<<(wostream&, const char*); +13943: +13943: extern template wostream& wostream::_M_insert(long); +13943: extern template wostream& wostream::_M_insert(unsigned long); +13943: extern template wostream& wostream::_M_insert(bool); +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: extern template wostream& wostream::_M_insert(long long); +13943: extern template wostream& wostream::_M_insert(unsigned long long); +13943: #pragma GCC diagnostic pop +13943: +13943: extern template wostream& wostream::_M_insert(double); +13943: extern template wostream& wostream::_M_insert(long double); +13943: extern template wostream& wostream::_M_insert(const void*); +13943: +13943: +13943: +13943: +13943: } +13943: # 1023 "/usr/include/c++/14/ostream" 2 3 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 2 +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: namespace rocksdb { +13943: +13943: class ColumnFamilyHandle; +13943: +13943: +13943: +13943: class WideColumn { +13943: public: +13943: WideColumn() = default; +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: template +13943: WideColumn(N&& name, V&& value) +13943: : name_(std::forward(name)), value_(std::forward(value)) {} +13943: # 49 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: template +13943: WideColumn(std::piecewise_construct_t, NTuple&& name_tuple, +13943: VTuple&& value_tuple) +13943: : name_(std::make_from_tuple(std::forward(name_tuple))), +13943: value_(std::make_from_tuple(std::forward(value_tuple))) { +13943: } +13943: +13943: const Slice& name() const { return name_; } +13943: const Slice& value() const { return value_; } +13943: +13943: Slice& name() { return name_; } +13943: Slice& value() { return value_; } +13943: +13943: private: +13943: Slice name_; +13943: Slice value_; +13943: }; +13943: +13943: +13943: inline bool operator==(const WideColumn& lhs, const WideColumn& rhs) { +13943: return lhs.name() == rhs.name() && lhs.value() == rhs.value(); +13943: } +13943: +13943: inline bool operator!=(const WideColumn& lhs, const WideColumn& rhs) { +13943: return !(lhs == rhs); +13943: } +13943: +13943: inline std::ostream& operator<<(std::ostream& os, const WideColumn& column) { +13943: const bool hex = +13943: (os.flags() & std::ios_base::basefield) == std::ios_base::hex; +13943: if (!column.name().empty()) { +13943: if (hex) { +13943: os << "0x"; +13943: } +13943: os << column.name().ToString(hex); +13943: } +13943: os << ':'; +13943: if (!column.value().empty()) { +13943: if (hex) { +13943: os << "0x"; +13943: } +13943: os << column.value().ToString(hex); +13943: } +13943: return os; +13943: } +13943: +13943: +13943: using WideColumns = std::vector; +13943: +13943: +13943: extern const Slice kDefaultWideColumnName; +13943: +13943: +13943: extern const WideColumns kNoWideColumns; +13943: +13943: +13943: +13943: class PinnableWideColumns { +13943: public: +13943: PinnableWideColumns() = default; +13943: +13943: PinnableWideColumns(const PinnableWideColumns&) = delete; +13943: PinnableWideColumns& operator=(const PinnableWideColumns&) = delete; +13943: +13943: PinnableWideColumns(PinnableWideColumns&&); +13943: PinnableWideColumns& operator=(PinnableWideColumns&&); +13943: +13943: ~PinnableWideColumns() = default; +13943: +13943: const WideColumns& columns() const { return columns_; } +13943: size_t serialized_size() const { return value_.size(); } +13943: +13943: void SetPlainValue(const Slice& value); +13943: void SetPlainValue(const Slice& value, Cleanable* cleanable); +13943: void SetPlainValue(PinnableSlice&& value); +13943: void SetPlainValue(std::string&& value); +13943: +13943: Status SetWideColumnValue(const Slice& value); +13943: Status SetWideColumnValue(const Slice& value, Cleanable* cleanable); +13943: Status SetWideColumnValue(PinnableSlice&& value); +13943: Status SetWideColumnValue(std::string&& value); +13943: +13943: void Reset(); +13943: +13943: private: +13943: void Move(PinnableWideColumns&& other); +13943: void CopyValue(const Slice& value); +13943: void PinOrCopyValue(const Slice& value, Cleanable* cleanable); +13943: void MoveValue(PinnableSlice&& value); +13943: void MoveValue(std::string&& value); +13943: +13943: void CreateIndexForPlainValue(); +13943: Status CreateIndexForWideColumns(); +13943: +13943: PinnableSlice value_; +13943: WideColumns columns_; +13943: }; +13943: +13943: inline void PinnableWideColumns::Reset() { +13943: value_.Reset(); +13943: columns_.clear(); +13943: } +13943: +13943: inline void PinnableWideColumns::Move(PinnableWideColumns&& other) { +13943: +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: (static_cast ( +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: columns_.empty() +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: "columns_.empty()" +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: ; +13943: +13943: if (other.columns_.empty()) { +13943: return; +13943: } +13943: +13943: const char* const data = other.value_.data(); +13943: const bool is_plain_value = +13943: other.columns_.size() == 1 && +13943: other.columns_.front().name() == kDefaultWideColumnName && +13943: other.columns_.front().value() == other.value_; +13943: +13943: MoveValue(std::move(other.value_)); +13943: +13943: if (value_.data() == data) { +13943: columns_ = std::move(other.columns_); +13943: } else { +13943: if (is_plain_value) { +13943: CreateIndexForPlainValue(); +13943: } else { +13943: const Status s = CreateIndexForWideColumns(); +13943: +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: (static_cast ( +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: s.ok() +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: "s.ok()" +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: ; +13943: +13943: s.PermitUncheckedError(); +13943: } +13943: } +13943: +13943: other.Reset(); +13943: } +13943: +13943: inline void PinnableWideColumns::CopyValue(const Slice& value) { +13943: value_.PinSelf(value); +13943: } +13943: +13943: inline void PinnableWideColumns::PinOrCopyValue(const Slice& value, +13943: Cleanable* cleanable) { +13943: if (!cleanable) { +13943: CopyValue(value); +13943: return; +13943: } +13943: +13943: value_.PinSlice(value, cleanable); +13943: } +13943: +13943: inline void PinnableWideColumns::MoveValue(PinnableSlice&& value) { +13943: value_ = std::move(value); +13943: } +13943: +13943: inline void PinnableWideColumns::MoveValue(std::string&& value) { +13943: std::string* const buf = value_.GetSelf(); +13943: +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: (static_cast ( +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: buf +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: "buf" +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +13943: ; +13943: +13943: *buf = std::move(value); +13943: value_.PinSelf(); +13943: } +13943: +13943: inline void PinnableWideColumns::CreateIndexForPlainValue() { +13943: columns_ = WideColumns{{kDefaultWideColumnName, value_}}; +13943: } +13943: +13943: inline void PinnableWideColumns::SetPlainValue(const Slice& value) { +13943: CopyValue(value); +13943: CreateIndexForPlainValue(); +13943: } +13943: +13943: inline void PinnableWideColumns::SetPlainValue(const Slice& value, +13943: Cleanable* cleanable) { +13943: PinOrCopyValue(value, cleanable); +13943: CreateIndexForPlainValue(); +13943: } +13943: +13943: inline void PinnableWideColumns::SetPlainValue(PinnableSlice&& value) { +13943: MoveValue(std::move(value)); +13943: CreateIndexForPlainValue(); +13943: } +13943: +13943: inline void PinnableWideColumns::SetPlainValue(std::string&& value) { +13943: MoveValue(std::move(value)); +13943: CreateIndexForPlainValue(); +13943: } +13943: +13943: inline Status PinnableWideColumns::SetWideColumnValue(const Slice& value) { +13943: CopyValue(value); +13943: +13943: const Status s = CreateIndexForWideColumns(); +13943: if (!s.ok()) { +13943: Reset(); +13943: } +13943: +13943: return s; +13943: } +13943: +13943: inline Status PinnableWideColumns::SetWideColumnValue(const Slice& value, +13943: Cleanable* cleanable) { +13943: PinOrCopyValue(value, cleanable); +13943: +13943: const Status s = CreateIndexForWideColumns(); +13943: if (!s.ok()) { +13943: Reset(); +13943: } +13943: +13943: return s; +13943: } +13943: +13943: inline Status PinnableWideColumns::SetWideColumnValue(PinnableSlice&& value) { +13943: MoveValue(std::move(value)); +13943: +13943: const Status s = CreateIndexForWideColumns(); +13943: if (!s.ok()) { +13943: Reset(); +13943: } +13943: +13943: return s; +13943: } +13943: +13943: inline Status PinnableWideColumns::SetWideColumnValue(std::string&& value) { +13943: MoveValue(std::move(value)); +13943: +13943: const Status s = CreateIndexForWideColumns(); +13943: if (!s.ok()) { +13943: Reset(); +13943: } +13943: +13943: return s; +13943: } +13943: +13943: inline PinnableWideColumns::PinnableWideColumns(PinnableWideColumns&& other) { +13943: Move(std::move(other)); +13943: } +13943: +13943: inline PinnableWideColumns& PinnableWideColumns::operator=( +13943: PinnableWideColumns&& other) { +13943: if (this != &other) { +13943: Reset(); +13943: Move(std::move(other)); +13943: } +13943: +13943: return *this; +13943: } +13943: +13943: inline bool operator==(const PinnableWideColumns& lhs, +13943: const PinnableWideColumns& rhs) { +13943: return lhs.columns() == rhs.columns(); +13943: } +13943: +13943: inline bool operator!=(const PinnableWideColumns& lhs, +13943: const PinnableWideColumns& rhs) { +13943: return !(lhs == rhs); +13943: } +13943: +13943: } +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/attribute_groups.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class ColumnFamilyHandle; +13943: +13943: +13943: +13943: +13943: class AttributeGroup { +13943: public: +13943: explicit AttributeGroup(ColumnFamilyHandle* column_family, +13943: const WideColumns& columns) +13943: : column_family_(column_family), columns_(columns) {} +13943: +13943: ColumnFamilyHandle* column_family() const { return column_family_; } +13943: const WideColumns& columns() const { return columns_; } +13943: WideColumns& columns() { return columns_; } +13943: +13943: private: +13943: ColumnFamilyHandle* column_family_; +13943: WideColumns columns_; +13943: }; +13943: +13943: inline bool operator==(const AttributeGroup& lhs, const AttributeGroup& rhs) { +13943: return lhs.column_family() == rhs.column_family() && +13943: lhs.columns() == rhs.columns(); +13943: } +13943: +13943: inline bool operator!=(const AttributeGroup& lhs, const AttributeGroup& rhs) { +13943: return !(lhs == rhs); +13943: } +13943: +13943: +13943: using AttributeGroups = std::vector; +13943: +13943: +13943: extern const AttributeGroups kNoAttributeGroups; +13943: +13943: +13943: class PinnableAttributeGroup { +13943: public: +13943: explicit PinnableAttributeGroup(ColumnFamilyHandle* column_family) +13943: : column_family_(column_family), status_(Status::OK()) {} +13943: +13943: ColumnFamilyHandle* column_family() const { return column_family_; } +13943: const Status& status() const { return status_; } +13943: const WideColumns& columns() const { return columns_.columns(); } +13943: +13943: void SetStatus(const Status& status); +13943: void SetColumns(PinnableWideColumns&& columns); +13943: +13943: void Reset(); +13943: +13943: private: +13943: ColumnFamilyHandle* column_family_; +13943: Status status_; +13943: PinnableWideColumns columns_; +13943: }; +13943: +13943: inline void PinnableAttributeGroup::SetStatus(const Status& status) { +13943: status_ = status; +13943: } +13943: inline void PinnableAttributeGroup::SetColumns(PinnableWideColumns&& columns) { +13943: columns_ = std::move(columns); +13943: } +13943: +13943: inline void PinnableAttributeGroup::Reset() { +13943: SetStatus(Status::OK()); +13943: columns_.Reset(); +13943: } +13943: +13943: +13943: using PinnableAttributeGroups = std::vector; +13943: +13943: +13943: +13943: class IteratorAttributeGroup { +13943: public: +13943: explicit IteratorAttributeGroup(ColumnFamilyHandle* column_family, +13943: const WideColumns* columns) +13943: : column_family_(column_family), columns_(columns) {} +13943: +13943: explicit IteratorAttributeGroup(const AttributeGroup& attribute_group) +13943: : IteratorAttributeGroup(attribute_group.column_family(), +13943: &attribute_group.columns()) {} +13943: +13943: ColumnFamilyHandle* column_family() const { return column_family_; } +13943: const WideColumns& columns() const { return *columns_; } +13943: +13943: private: +13943: ColumnFamilyHandle* column_family_; +13943: const WideColumns* columns_; +13943: }; +13943: +13943: inline bool operator==(const IteratorAttributeGroup& lhs, +13943: const IteratorAttributeGroup& rhs) { +13943: return lhs.column_family() == rhs.column_family() && +13943: lhs.columns() == rhs.columns(); +13943: } +13943: +13943: inline bool operator!=(const IteratorAttributeGroup& lhs, +13943: const IteratorAttributeGroup& rhs) { +13943: return !(lhs == rhs); +13943: } +13943: +13943: using IteratorAttributeGroups = std::vector; +13943: +13943: extern const IteratorAttributeGroups kNoIteratorAttributeGroups; +13943: +13943: +13943: +13943: class AttributeGroupIterator : public IteratorBase { +13943: public: +13943: AttributeGroupIterator() {} +13943: ~AttributeGroupIterator() override {} +13943: +13943: +13943: AttributeGroupIterator(const AttributeGroupIterator&) = delete; +13943: AttributeGroupIterator& operator=(const AttributeGroupIterator&) = delete; +13943: +13943: virtual const IteratorAttributeGroups& attribute_groups() const = 0; +13943: }; +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 1 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum CompressionType : unsigned char { +13943: +13943: +13943: kNoCompression = 0x0, +13943: kSnappyCompression = 0x1, +13943: kZlibCompression = 0x2, +13943: kBZip2Compression = 0x3, +13943: kLZ4Compression = 0x4, +13943: kLZ4HCCompression = 0x5, +13943: kXpressCompression = 0x6, +13943: kZSTD = 0x7, +13943: +13943: +13943: +13943: +13943: +13943: +13943: kZSTDNotFinalCompression = 0x40, +13943: +13943: +13943: kDisableCompressionOption = 0xff, +13943: }; +13943: +13943: +13943: struct CompressionOptions { +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: static constexpr int kDefaultCompressionLevel = 32767; +13943: +13943: +13943: int window_bits = -14; +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: int level = kDefaultCompressionLevel; +13943: +13943: +13943: int strategy = 0; +13943: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: uint32_t max_dict_bytes = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint32_t zstd_max_train_bytes = 0; +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: uint32_t parallel_threads = 1; +13943: # 122 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: bool enabled = false; +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: uint64_t max_dict_buffer_bytes = 0; +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: bool use_zstd_dict_trainer = true; +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +13943: int max_compressed_bytes_per_kb = 1024 * 7 / 8; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool checksum = false; +13943: +13943: +13943: +13943: +13943: void SetMinRatio(double min_ratio) { +13943: max_compressed_bytes_per_kb = static_cast(1024.0 / min_ratio + 0.5); +13943: } +13943: }; +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: namespace detail { +13943: int CountTrailingZeroBitsForSmallEnumSet(uint64_t); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: class SmallEnumSet { +13943: private: +13943: using StateT = uint64_t; +13943: static constexpr int kStateBits = sizeof(StateT) * 8; +13943: static constexpr int kMaxMax = kStateBits - 1; +13943: static constexpr int kMaxValue = static_cast(MAX_ENUMERATOR); +13943: static_assert(kMaxValue >= 0); +13943: static_assert(kMaxValue <= kMaxMax); +13943: +13943: public: +13943: +13943: SmallEnumSet() : state_(0) {} +13943: +13943: template +13943: constexpr SmallEnumSet(const ENUM_TYPE e, TRest... rest) { +13943: *this = SmallEnumSet(rest...).With(e); +13943: } +13943: +13943: +13943: +13943: static constexpr SmallEnumSet All() { +13943: StateT tmp = StateT{1} << kMaxValue; +13943: return SmallEnumSet(RawStateMarker(), tmp | (tmp - 1)); +13943: } +13943: +13943: +13943: bool operator==(const SmallEnumSet& that) const { +13943: return this->state_ == that.state_; +13943: } +13943: bool operator!=(const SmallEnumSet& that) const { return !(*this == that); } +13943: +13943: +13943: +13943: +13943: bool Contains(const ENUM_TYPE e) const { +13943: int value = static_cast(e); +13943: +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: (static_cast ( +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: value >= 0 && value <= kMaxValue +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: "value >= 0 && value <= kMaxValue" +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: ; +13943: StateT tmp = 1; +13943: return state_ & (tmp << value); +13943: } +13943: +13943: bool empty() const { return state_ == 0; } +13943: +13943: +13943: class const_iterator { +13943: public: +13943: +13943: const_iterator(const const_iterator& that) = default; +13943: const_iterator& operator=(const const_iterator& that) = default; +13943: +13943: +13943: const_iterator(const_iterator&& that) noexcept = default; +13943: const_iterator& operator=(const_iterator&& that) noexcept = default; +13943: +13943: +13943: bool operator==(const const_iterator& that) const { +13943: +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: (static_cast ( +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: set_ == that.set_ +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: "set_ == that.set_" +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: ; +13943: return this->pos_ == that.pos_; +13943: } +13943: +13943: bool operator!=(const const_iterator& that) const { +13943: return !(*this == that); +13943: } +13943: +13943: +13943: const_iterator& operator++() { +13943: if (pos_ < kMaxValue) { +13943: pos_ = set_->SkipUnset(pos_ + 1); +13943: } else { +13943: pos_ = kStateBits; +13943: } +13943: return *this; +13943: } +13943: +13943: +13943: const_iterator operator++(int) { +13943: auto old = *this; +13943: ++*this; +13943: return old; +13943: } +13943: +13943: ENUM_TYPE operator*() const { +13943: +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: (static_cast ( +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: pos_ <= kMaxValue +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: "pos_ <= kMaxValue" +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: ; +13943: return static_cast(pos_); +13943: } +13943: +13943: private: +13943: friend class SmallEnumSet; +13943: const_iterator(const SmallEnumSet* set, int pos) : set_(set), pos_(pos) {} +13943: const SmallEnumSet* set_; +13943: int pos_; +13943: }; +13943: +13943: const_iterator begin() const { return const_iterator(this, SkipUnset(0)); } +13943: +13943: const_iterator end() const { return const_iterator(this, kStateBits); } +13943: +13943: +13943: +13943: +13943: +13943: bool Add(const ENUM_TYPE e) { +13943: int value = static_cast(e); +13943: +13943: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: (static_cast ( +13943: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: value >= 0 && value <= kMaxValue +13943: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: "value >= 0 && value <= kMaxValue" +13943: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: ; +13943: StateT old_state = state_; +13943: state_ |= (StateT{1} << value); +13943: return old_state != state_; +13943: } +13943: +13943: +13943: +13943: bool Remove(const ENUM_TYPE e) { +13943: int value = static_cast(e); +13943: +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: (static_cast ( +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: value >= 0 && value <= kMaxValue +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: "value >= 0 && value <= kMaxValue" +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: ; +13943: StateT old_state = state_; +13943: state_ &= ~(StateT{1} << value); +13943: return old_state != state_; +13943: } +13943: +13943: +13943: +13943: +13943: constexpr SmallEnumSet With(const ENUM_TYPE e) const { +13943: int value = static_cast(e); +13943: +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: (static_cast ( +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: value >= 0 && value <= kMaxValue +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: "value >= 0 && value <= kMaxValue" +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: ; +13943: return SmallEnumSet(RawStateMarker(), state_ | (StateT{1} << value)); +13943: } +13943: template +13943: constexpr SmallEnumSet With(const ENUM_TYPE e1, const ENUM_TYPE e2, +13943: TRest... rest) const { +13943: return With(e1).With(e2, rest...); +13943: } +13943: +13943: +13943: constexpr SmallEnumSet Without(const ENUM_TYPE e) const { +13943: int value = static_cast(e); +13943: +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: (static_cast ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: value >= 0 && value <= kMaxValue +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: "value >= 0 && value <= kMaxValue" +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +13943: ; +13943: return SmallEnumSet(RawStateMarker(), state_ & ~(StateT{1} << value)); +13943: } +13943: template +13943: constexpr SmallEnumSet Without(const ENUM_TYPE e1, const ENUM_TYPE e2, +13943: TRest... rest) const { +13943: return Without(e1).Without(e2, rest...); +13943: } +13943: +13943: private: +13943: int SkipUnset(int pos) const { +13943: StateT tmp = state_ >> pos; +13943: if (tmp == 0) { +13943: return kStateBits; +13943: } else { +13943: return pos + detail::CountTrailingZeroBitsForSmallEnumSet(tmp); +13943: } +13943: } +13943: struct RawStateMarker {}; +13943: explicit SmallEnumSet(RawStateMarker, StateT state) : state_(state) {} +13943: +13943: StateT state_; +13943: }; +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memory_allocator.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: class MemoryAllocator : public Customizable { +13943: public: +13943: static const char* Type() { return "MemoryAllocator"; } +13943: static Status CreateFromString(const ConfigOptions& options, +13943: const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: +13943: virtual void* Allocate(size_t size) = 0; +13943: +13943: +13943: virtual void Deallocate(void* p) = 0; +13943: +13943: +13943: +13943: virtual size_t UsableSize(void* , size_t allocation_size) const { +13943: +13943: return allocation_size; +13943: } +13943: +13943: std::string GetId() const override { return GenerateIndividualId(); } +13943: }; +13943: +13943: struct JemallocAllocatorOptions { +13943: static const char* kName() { return "JemallocAllocatorOptions"; } +13943: +13943: +13943: +13943: +13943: +13943: bool limit_tcache_size = false; +13943: +13943: +13943: +13943: size_t tcache_size_lower_bound = 1024; +13943: +13943: +13943: +13943: size_t tcache_size_upper_bound = 16 * 1024; +13943: +13943: +13943: +13943: +13943: size_t num_arenas = 1; +13943: }; +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memory_allocator.h" +13943: Status NewJemallocNodumpAllocator( +13943: const JemallocAllocatorOptions& options, +13943: std::shared_ptr* memory_allocator); +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class Cache; +13943: struct ConfigOptions; +13943: class SecondaryCache; +13943: # 46 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: using BlockCache = Cache; +13943: using RowCache = Cache; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum class CacheEntryRole { +13943: +13943: kDataBlock, +13943: +13943: kFilterBlock, +13943: +13943: kFilterMetaBlock, +13943: +13943: kDeprecatedFilterBlock, +13943: +13943: kIndexBlock, +13943: +13943: kOtherBlock, +13943: +13943: kWriteBuffer, +13943: +13943: +13943: kCompressionDictionaryBuildingBuffer, +13943: +13943: +13943: kFilterConstruction, +13943: +13943: kBlockBasedTableReader, +13943: +13943: kFileMetadata, +13943: +13943: kBlobValue, +13943: +13943: +13943: kBlobCache, +13943: +13943: +13943: kMisc, +13943: }; +13943: constexpr uint32_t kNumCacheEntryRoles = +13943: static_cast(CacheEntryRole::kMisc) + 1; +13943: +13943: +13943: const std::string& GetCacheEntryRoleName(CacheEntryRole); +13943: +13943: +13943: using CacheEntryRoleSet = SmallEnumSet; +13943: +13943: +13943: +13943: +13943: struct BlockCacheEntryStatsMapKeys { +13943: static const std::string& CacheId(); +13943: static const std::string& CacheCapacityBytes(); +13943: static const std::string& LastCollectionDurationSeconds(); +13943: static const std::string& LastCollectionAgeSeconds(); +13943: +13943: static std::string EntryCount(CacheEntryRole); +13943: static std::string UsedBytes(CacheEntryRole); +13943: static std::string UsedPercent(CacheEntryRole); +13943: }; +13943: +13943: extern const bool kDefaultToAdaptiveMutex; +13943: +13943: enum CacheMetadataChargePolicy { +13943: +13943: +13943: kDontChargeCacheMetadata, +13943: +13943: +13943: +13943: kFullChargeCacheMetadata +13943: }; +13943: const CacheMetadataChargePolicy kDefaultCacheMetadataChargePolicy = +13943: kFullChargeCacheMetadata; +13943: +13943: +13943: +13943: struct ShardedCacheOptions { +13943: +13943: +13943: +13943: size_t capacity = 0; +13943: +13943: +13943: +13943: +13943: +13943: int num_shard_bits = -1; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool strict_capacity_limit = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::shared_ptr memory_allocator; +13943: +13943: +13943: CacheMetadataChargePolicy metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy; +13943: +13943: +13943: +13943: std::shared_ptr secondary_cache; +13943: +13943: +13943: static constexpr int32_t kQuasiRandomHashSeed = -1; +13943: static constexpr int32_t kHostHashSeed = -2; +13943: # 190 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: int32_t hash_seed = kHostHashSeed; +13943: +13943: ShardedCacheOptions() {} +13943: ShardedCacheOptions( +13943: size_t _capacity, int _num_shard_bits, bool _strict_capacity_limit, +13943: std::shared_ptr _memory_allocator = nullptr, +13943: CacheMetadataChargePolicy _metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy) +13943: : capacity(_capacity), +13943: num_shard_bits(_num_shard_bits), +13943: strict_capacity_limit(_strict_capacity_limit), +13943: memory_allocator(std::move(_memory_allocator)), +13943: metadata_charge_policy(_metadata_charge_policy) {} +13943: +13943: virtual ~ShardedCacheOptions() = default; +13943: }; +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: struct LRUCacheOptions : public ShardedCacheOptions { +13943: # 237 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: double high_pri_pool_ratio = 0.5; +13943: double low_pri_pool_ratio = 0.0; +13943: +13943: +13943: +13943: +13943: +13943: bool use_adaptive_mutex = kDefaultToAdaptiveMutex; +13943: +13943: LRUCacheOptions() {} +13943: LRUCacheOptions(size_t _capacity, int _num_shard_bits, +13943: bool _strict_capacity_limit, double _high_pri_pool_ratio, +13943: std::shared_ptr _memory_allocator = nullptr, +13943: bool _use_adaptive_mutex = kDefaultToAdaptiveMutex, +13943: CacheMetadataChargePolicy _metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy, +13943: double _low_pri_pool_ratio = 0.0) +13943: : ShardedCacheOptions(_capacity, _num_shard_bits, _strict_capacity_limit, +13943: std::move(_memory_allocator), +13943: _metadata_charge_policy), +13943: high_pri_pool_ratio(_high_pri_pool_ratio), +13943: low_pri_pool_ratio(_low_pri_pool_ratio), +13943: use_adaptive_mutex(_use_adaptive_mutex) {} +13943: +13943: +13943: std::shared_ptr MakeSharedCache() const; +13943: +13943: +13943: +13943: std::shared_ptr MakeSharedRowCache() const; +13943: }; +13943: +13943: +13943: inline std::shared_ptr NewLRUCache( +13943: size_t capacity, int num_shard_bits = -1, +13943: bool strict_capacity_limit = false, double high_pri_pool_ratio = 0.5, +13943: std::shared_ptr memory_allocator = nullptr, +13943: bool use_adaptive_mutex = kDefaultToAdaptiveMutex, +13943: CacheMetadataChargePolicy metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy, +13943: double low_pri_pool_ratio = 0.0) { +13943: return LRUCacheOptions(capacity, num_shard_bits, strict_capacity_limit, +13943: high_pri_pool_ratio, memory_allocator, +13943: use_adaptive_mutex, metadata_charge_policy, +13943: low_pri_pool_ratio) +13943: .MakeSharedCache(); +13943: } +13943: +13943: +13943: inline std::shared_ptr NewLRUCache(const LRUCacheOptions& cache_opts) { +13943: return cache_opts.MakeSharedCache(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: struct CompressedSecondaryCacheOptions : LRUCacheOptions { +13943: +13943: CompressionType compression_type = CompressionType::kLZ4Compression; +13943: +13943: +13943: CompressionOptions compression_opts; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint32_t compress_format_version = 2; +13943: +13943: +13943: +13943: bool enable_custom_split_merge = false; +13943: +13943: +13943: +13943: CacheEntryRoleSet do_not_compress_roles = {CacheEntryRole::kFilterBlock}; +13943: +13943: CompressedSecondaryCacheOptions() {} +13943: CompressedSecondaryCacheOptions( +13943: size_t _capacity, int _num_shard_bits, bool _strict_capacity_limit, +13943: double _high_pri_pool_ratio, double _low_pri_pool_ratio = 0.0, +13943: std::shared_ptr _memory_allocator = nullptr, +13943: bool _use_adaptive_mutex = kDefaultToAdaptiveMutex, +13943: CacheMetadataChargePolicy _metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy, +13943: CompressionType _compression_type = CompressionType::kLZ4Compression, +13943: uint32_t _compress_format_version = 2, +13943: bool _enable_custom_split_merge = false, +13943: const CacheEntryRoleSet& _do_not_compress_roles = +13943: {CacheEntryRole::kFilterBlock}) +13943: : LRUCacheOptions(_capacity, _num_shard_bits, _strict_capacity_limit, +13943: _high_pri_pool_ratio, std::move(_memory_allocator), +13943: _use_adaptive_mutex, _metadata_charge_policy, +13943: _low_pri_pool_ratio), +13943: compression_type(_compression_type), +13943: compress_format_version(_compress_format_version), +13943: enable_custom_split_merge(_enable_custom_split_merge), +13943: do_not_compress_roles(_do_not_compress_roles) {} +13943: +13943: +13943: std::shared_ptr MakeSharedSecondaryCache() const; +13943: +13943: +13943: std::shared_ptr MakeSharedCache() const = delete; +13943: }; +13943: +13943: +13943: inline std::shared_ptr NewCompressedSecondaryCache( +13943: size_t capacity, int num_shard_bits = -1, +13943: bool strict_capacity_limit = false, double high_pri_pool_ratio = 0.5, +13943: double low_pri_pool_ratio = 0.0, +13943: std::shared_ptr memory_allocator = nullptr, +13943: bool use_adaptive_mutex = kDefaultToAdaptiveMutex, +13943: CacheMetadataChargePolicy metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy, +13943: CompressionType compression_type = CompressionType::kLZ4Compression, +13943: uint32_t compress_format_version = 2, +13943: bool enable_custom_split_merge = false, +13943: const CacheEntryRoleSet& _do_not_compress_roles = { +13943: CacheEntryRole::kFilterBlock}) { +13943: return CompressedSecondaryCacheOptions( +13943: capacity, num_shard_bits, strict_capacity_limit, +13943: high_pri_pool_ratio, low_pri_pool_ratio, memory_allocator, +13943: use_adaptive_mutex, metadata_charge_policy, compression_type, +13943: compress_format_version, enable_custom_split_merge, +13943: _do_not_compress_roles) +13943: .MakeSharedSecondaryCache(); +13943: } +13943: +13943: +13943: inline std::shared_ptr NewCompressedSecondaryCache( +13943: const CompressedSecondaryCacheOptions& opts) { +13943: return opts.MakeSharedSecondaryCache(); +13943: } +13943: # 388 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: struct HyperClockCacheOptions : public ShardedCacheOptions { +13943: # 425 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: size_t estimated_entry_charge; +13943: # 442 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: size_t min_avg_entry_charge = 450; +13943: # 479 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: int eviction_effort_cap = 30; +13943: +13943: HyperClockCacheOptions( +13943: size_t _capacity, size_t _estimated_entry_charge, +13943: int _num_shard_bits = -1, bool _strict_capacity_limit = false, +13943: std::shared_ptr _memory_allocator = nullptr, +13943: CacheMetadataChargePolicy _metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy) +13943: : ShardedCacheOptions(_capacity, _num_shard_bits, _strict_capacity_limit, +13943: std::move(_memory_allocator), +13943: _metadata_charge_policy), +13943: estimated_entry_charge(_estimated_entry_charge) {} +13943: +13943: +13943: std::shared_ptr MakeSharedCache() const; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: std::shared_ptr NewClockCache( +13943: size_t capacity, int num_shard_bits = -1, +13943: bool strict_capacity_limit = false, +13943: CacheMetadataChargePolicy metadata_charge_policy = +13943: kDefaultCacheMetadataChargePolicy); +13943: +13943: enum PrimaryCacheType { +13943: kCacheTypeLRU, +13943: kCacheTypeHCC, +13943: kCacheTypeMax, +13943: }; +13943: +13943: enum TieredAdmissionPolicy { +13943: +13943: kAdmPolicyAuto, +13943: +13943: +13943: +13943: kAdmPolicyPlaceholder, +13943: +13943: +13943: kAdmPolicyAllowCacheHits, +13943: +13943: +13943: +13943: kAdmPolicyThreeQueue, +13943: +13943: +13943: +13943: +13943: kAdmPolicyAllowAll, +13943: kAdmPolicyMax, +13943: }; +13943: # 543 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: struct TieredCacheOptions { +13943: +13943: +13943: +13943: +13943: ShardedCacheOptions* cache_opts = nullptr; +13943: PrimaryCacheType cache_type = PrimaryCacheType::kCacheTypeLRU; +13943: TieredAdmissionPolicy adm_policy = TieredAdmissionPolicy::kAdmPolicyAuto; +13943: CompressedSecondaryCacheOptions comp_cache_opts; +13943: +13943: +13943: +13943: +13943: size_t total_capacity = 0; +13943: double compressed_secondary_ratio = 0.0; +13943: +13943: +13943: +13943: std::shared_ptr nvm_sec_cache; +13943: }; +13943: +13943: std::shared_ptr NewTieredCache(const TieredCacheOptions& cache_opts); +13943: # 575 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +13943: Status UpdateTieredCache( +13943: const std::shared_ptr& cache, int64_t total_capacity = -1, +13943: double compressed_secondary_ratio = std::numeric_limits::max(), +13943: TieredAdmissionPolicy adm_policy = TieredAdmissionPolicy::kAdmPolicyMax); +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 1 +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/stdlib.h" 1 3 +13943: # 36 "/usr/include/c++/14/stdlib.h" 3 +13943: # 1 "/usr/include/c++/14/cstdlib" 1 3 +13943: # 39 "/usr/include/c++/14/cstdlib" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdlib" 3 +13943: # 37 "/usr/include/c++/14/stdlib.h" 2 3 +13943: +13943: +13943: # 38 "/usr/include/c++/14/stdlib.h" 3 +13943: using std::abort; +13943: using std::atexit; +13943: using std::exit; +13943: +13943: +13943: using std::at_quick_exit; +13943: +13943: +13943: using std::quick_exit; +13943: +13943: +13943: using std::_Exit; +13943: +13943: +13943: +13943: +13943: using std::div_t; +13943: using std::ldiv_t; +13943: +13943: using std::abs; +13943: using std::atof; +13943: using std::atoi; +13943: using std::atol; +13943: using std::bsearch; +13943: using std::calloc; +13943: using std::div; +13943: using std::free; +13943: using std::getenv; +13943: using std::labs; +13943: using std::ldiv; +13943: using std::malloc; +13943: +13943: using std::mblen; +13943: using std::mbstowcs; +13943: using std::mbtowc; +13943: +13943: using std::qsort; +13943: using std::rand; +13943: using std::realloc; +13943: using std::srand; +13943: using std::strtod; +13943: using std::strtol; +13943: using std::strtoul; +13943: using std::system; +13943: +13943: using std::wcstombs; +13943: using std::wctomb; +13943: # 40 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 2 +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: namespace rocksdb { +13943: +13943: class Arena; +13943: class Allocator; +13943: class LookupKey; +13943: class SliceTransform; +13943: class Logger; +13943: struct DBOptions; +13943: +13943: using KeyHandle = void*; +13943: +13943: Slice GetLengthPrefixedSlice(const char* data); +13943: +13943: class MemTableRep { +13943: public: +13943: +13943: +13943: class KeyComparator { +13943: public: +13943: using DecodedType = rocksdb::Slice; +13943: +13943: virtual DecodedType decode_key(const char* key) const { +13943: +13943: +13943: return GetLengthPrefixedSlice(key); +13943: } +13943: +13943: +13943: +13943: virtual int operator()(const char* prefix_len_key1, +13943: const char* prefix_len_key2) const = 0; +13943: +13943: virtual int operator()(const char* prefix_len_key, +13943: const Slice& key) const = 0; +13943: +13943: virtual ~KeyComparator() {} +13943: }; +13943: +13943: explicit MemTableRep(Allocator* allocator) : allocator_(allocator) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual KeyHandle Allocate(const size_t len, char** buf); +13943: +13943: +13943: +13943: +13943: +13943: virtual void Insert(KeyHandle handle) = 0; +13943: +13943: +13943: +13943: +13943: virtual bool InsertKey(KeyHandle handle) { +13943: Insert(handle); +13943: return true; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void InsertWithHint(KeyHandle handle, void** ) { +13943: +13943: Insert(handle); +13943: } +13943: +13943: +13943: +13943: +13943: virtual bool InsertKeyWithHint(KeyHandle handle, void** hint) { +13943: InsertWithHint(handle, hint); +13943: return true; +13943: } +13943: # 137 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: virtual void InsertWithHintConcurrently(KeyHandle handle, void** ) { +13943: +13943: InsertConcurrently(handle); +13943: } +13943: +13943: +13943: +13943: +13943: virtual bool InsertKeyWithHintConcurrently(KeyHandle handle, void** hint) { +13943: InsertWithHintConcurrently(handle, hint); +13943: return true; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void InsertConcurrently(KeyHandle handle); +13943: +13943: +13943: +13943: +13943: virtual bool InsertKeyConcurrently(KeyHandle handle) { +13943: InsertConcurrently(handle); +13943: return true; +13943: } +13943: +13943: +13943: virtual bool Contains(const char* key) const = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void MarkReadOnly() {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void MarkFlushed() {} +13943: # 194 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: virtual void Get(const LookupKey& k, void* callback_args, +13943: bool (*callback_func)(void* arg, const char* entry)); +13943: +13943: +13943: virtual Status GetAndValidate(const LookupKey& , +13943: void* , +13943: bool (* )(void* arg, +13943: const char* entry), +13943: bool ) { +13943: return Status::NotSupported("GetAndValidate() not implemented."); +13943: } +13943: +13943: virtual uint64_t ApproximateNumEntries(const Slice& , +13943: const Slice& ) { +13943: return 0; +13943: } +13943: +13943: +13943: +13943: virtual void UniqueRandomSample(const uint64_t num_entries, +13943: const uint64_t target_sample_size, +13943: std::unordered_set* entries) { +13943: (void)num_entries; +13943: (void)target_sample_size; +13943: (void)entries; +13943: +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 3 4 +13943: (static_cast ( +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: false +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: "false" +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: ; +13943: } +13943: +13943: +13943: +13943: virtual size_t ApproximateMemoryUsage() = 0; +13943: +13943: virtual ~MemTableRep() {} +13943: +13943: +13943: class Iterator { +13943: public: +13943: +13943: +13943: +13943: virtual ~Iterator() {} +13943: +13943: +13943: virtual bool Valid() const = 0; +13943: +13943: +13943: +13943: virtual const char* key() const = 0; +13943: +13943: +13943: +13943: virtual void Next() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status NextAndValidate(bool ) { +13943: return Status::NotSupported("NextAndValidate() not implemented."); +13943: } +13943: +13943: +13943: +13943: virtual void Prev() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status PrevAndValidate(bool ) { +13943: return Status::NotSupported("PrevAndValidate() not implemented."); +13943: } +13943: +13943: +13943: virtual void Seek(const Slice& internal_key, const char* memtable_key) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status SeekAndValidate(const Slice& , +13943: const char* , +13943: bool ) { +13943: return Status::NotSupported("SeekAndValidate() not implemented."); +13943: } +13943: +13943: +13943: virtual void SeekForPrev(const Slice& internal_key, +13943: const char* memtable_key) = 0; +13943: +13943: virtual void RandomSeek() {} +13943: +13943: +13943: +13943: virtual void SeekToFirst() = 0; +13943: +13943: +13943: +13943: virtual void SeekToLast() = 0; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Iterator* GetIterator(Arena* arena = nullptr) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Iterator* GetDynamicPrefixIterator(Arena* arena = nullptr) { +13943: return GetIterator(arena); +13943: } +13943: +13943: +13943: +13943: virtual bool IsMergeOperatorSupported() const { return true; } +13943: +13943: +13943: +13943: virtual bool IsSnapshotSupported() const { return true; } +13943: +13943: protected: +13943: +13943: +13943: virtual Slice UserKey(const char* key) const; +13943: +13943: Allocator* allocator_; +13943: }; +13943: +13943: +13943: +13943: class MemTableRepFactory : public Customizable { +13943: public: +13943: ~MemTableRepFactory() override {} +13943: +13943: static const char* Type() { return "MemTableRepFactory"; } +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& id, +13943: std::unique_ptr* factory); +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& id, +13943: std::shared_ptr* factory); +13943: +13943: virtual MemTableRep* CreateMemTableRep(const MemTableRep::KeyComparator&, +13943: Allocator*, const SliceTransform*, +13943: Logger* logger) = 0; +13943: virtual MemTableRep* CreateMemTableRep( +13943: const MemTableRep::KeyComparator& key_cmp, Allocator* allocator, +13943: const SliceTransform* slice_transform, Logger* logger, +13943: uint32_t ) { +13943: return CreateMemTableRep(key_cmp, allocator, slice_transform, logger); +13943: } +13943: +13943: const char* Name() const override = 0; +13943: +13943: +13943: +13943: virtual bool IsInsertConcurrentlySupported() const { return false; } +13943: +13943: +13943: +13943: +13943: +13943: virtual bool CanHandleDuplicatedKey() const { return false; } +13943: }; +13943: # 371 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: class SkipListFactory : public MemTableRepFactory { +13943: public: +13943: explicit SkipListFactory(size_t lookahead = 0); +13943: +13943: +13943: static const char* kClassName() { return "SkipListFactory"; } +13943: static const char* kNickName() { return "skip_list"; } +13943: const char* Name() const override { return kClassName(); } +13943: const char* NickName() const override { return kNickName(); } +13943: std::string GetId() const override; +13943: +13943: +13943: using MemTableRepFactory::CreateMemTableRep; +13943: MemTableRep* CreateMemTableRep(const MemTableRep::KeyComparator&, Allocator*, +13943: const SliceTransform*, +13943: Logger* logger) override; +13943: +13943: bool IsInsertConcurrentlySupported() const override { return true; } +13943: +13943: bool CanHandleDuplicatedKey() const override { return true; } +13943: +13943: private: +13943: size_t lookahead_; +13943: }; +13943: # 404 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: class VectorRepFactory : public MemTableRepFactory { +13943: size_t count_; +13943: +13943: public: +13943: explicit VectorRepFactory(size_t count = 0); +13943: +13943: +13943: static const char* kClassName() { return "VectorRepFactory"; } +13943: static const char* kNickName() { return "vector"; } +13943: const char* Name() const override { return kClassName(); } +13943: const char* NickName() const override { return kNickName(); } +13943: +13943: +13943: using MemTableRepFactory::CreateMemTableRep; +13943: MemTableRep* CreateMemTableRep(const MemTableRep::KeyComparator&, Allocator*, +13943: const SliceTransform*, +13943: Logger* logger) override; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: MemTableRepFactory* NewHashSkipListRepFactory( +13943: size_t bucket_count = 1000000, int32_t skiplist_height = 4, +13943: int32_t skiplist_branching_factor = 4); +13943: # 449 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +13943: MemTableRepFactory* NewHashLinkListRepFactory( +13943: size_t bucket_count = 50000, size_t huge_page_tlb_size = 0, +13943: int bucket_entries_logging_threshold = 4096, +13943: bool if_log_bucket_dist_when_flash = true, +13943: uint32_t threshold_use_skiplist = 256); +13943: +13943: } +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/climits" 1 3 +13943: # 39 "/usr/include/c++/14/climits" 3 +13943: +13943: # 40 "/usr/include/c++/14/climits" 3 +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +13943: # 34 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/syslimits.h" 1 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +13943: # 210 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 3 4 +13943: # 1 "/usr/include/limits.h" 1 3 4 +13943: # 26 "/usr/include/limits.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +13943: # 27 "/usr/include/limits.h" 2 3 4 +13943: # 195 "/usr/include/limits.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 28 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 +13943: # 161 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 1 3 4 +13943: # 38 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4 +13943: # 1 "/usr/include/linux/limits.h" 1 3 4 +13943: # 39 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4 +13943: # 162 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 +13943: # 196 "/usr/include/limits.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 1 3 4 +13943: # 200 "/usr/include/limits.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 1 3 4 +13943: # 64 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 1 3 4 +13943: # 65 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 2 3 4 +13943: # 204 "/usr/include/limits.h" 2 3 4 +13943: # 211 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 2 3 4 +13943: # 8 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/syslimits.h" 2 3 4 +13943: # 35 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 2 3 4 +13943: # 43 "/usr/include/c++/14/climits" 2 3 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: enum CompactionStopStyle { +13943: kCompactionStopStyleSimilarSize, +13943: kCompactionStopStyleTotalSize +13943: }; +13943: +13943: class CompactionOptionsUniversal { +13943: public: +13943: +13943: +13943: +13943: unsigned int size_ratio; +13943: +13943: +13943: unsigned int min_merge_width; +13943: +13943: +13943: unsigned int max_merge_width; +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +13943: unsigned int max_size_amplification_percent; +13943: # 66 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +13943: int compression_size_percent; +13943: # 96 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +13943: int max_read_amp; +13943: +13943: +13943: +13943: CompactionStopStyle stop_style; +13943: +13943: +13943: +13943: +13943: bool allow_trivial_move; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool incremental; +13943: +13943: +13943: CompactionOptionsUniversal() +13943: : size_ratio(1), +13943: min_merge_width(2), +13943: max_merge_width( +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" 3 4 +13943: (0x7fffffff * 2U + 1U) +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +13943: ), +13943: max_size_amplification_percent(200), +13943: compression_size_percent(-1), +13943: max_read_amp(-1), +13943: stop_style(kCompactionStopStyleTotalSize), +13943: allow_trivial_move(false), +13943: incremental(false) {} +13943: }; +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: class SliceTransform; +13943: class TablePropertiesCollectorFactory; +13943: class TableFactory; +13943: struct Options; +13943: +13943: enum CompactionStyle : char { +13943: +13943: kCompactionStyleLevel = 0x0, +13943: +13943: kCompactionStyleUniversal = 0x1, +13943: +13943: kCompactionStyleFIFO = 0x2, +13943: +13943: +13943: kCompactionStyleNone = 0x3, +13943: }; +13943: +13943: +13943: +13943: +13943: enum CompactionPri : char { +13943: +13943: kByCompensatedSize = 0x0, +13943: +13943: +13943: kOldestLargestSeqFirst = 0x1, +13943: +13943: +13943: +13943: kOldestSmallestSeqFirst = 0x2, +13943: +13943: +13943: +13943: +13943: +13943: kMinOverlappingRatio = 0x3, +13943: +13943: +13943: +13943: +13943: kRoundRobin = 0x4, +13943: }; +13943: +13943: struct FileTemperatureAge { +13943: Temperature temperature = Temperature::kUnknown; +13943: uint64_t age = 0; +13943: }; +13943: +13943: struct CompactionOptionsFIFO { +13943: +13943: +13943: +13943: uint64_t max_table_files_size; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool allow_compaction = false; +13943: +13943: +13943: +13943: +13943: uint64_t age_for_warm = 0; +13943: # 113 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: std::vector file_temperature_age_thresholds{}; +13943: +13943: CompactionOptionsFIFO() : max_table_files_size(1 * 1024 * 1024 * 1024) {} +13943: CompactionOptionsFIFO(uint64_t _max_table_files_size, bool _allow_compaction) +13943: : max_table_files_size(_max_table_files_size), +13943: allow_compaction(_allow_compaction) {} +13943: }; +13943: +13943: +13943: +13943: +13943: enum class CacheTier : uint8_t { +13943: kVolatileTier = 0, +13943: kVolatileCompressedTier = 0x01, +13943: kNonVolatileBlockTier = 0x02, +13943: }; +13943: +13943: enum UpdateStatus { +13943: UPDATE_FAILED = 0, +13943: UPDATED_INPLACE = 1, +13943: UPDATED = 2, +13943: }; +13943: +13943: enum class PrepopulateBlobCache : uint8_t { +13943: kDisable = 0x0, +13943: kFlushOnly = 0x1, +13943: }; +13943: +13943: struct AdvancedColumnFamilyOptions { +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: int max_write_buffer_number = 2; +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: int min_write_buffer_number_to_merge = 1; +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: int max_write_buffer_number_to_maintain = 0; +13943: # 221 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: int64_t max_write_buffer_size_to_maintain = 0; +13943: # 242 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool inplace_update_support = false; +13943: +13943: +13943: +13943: +13943: +13943: size_t inplace_update_num_locks = 10000; +13943: # 265 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: double experimental_mempurge_threshold = 0.0; +13943: # 308 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: UpdateStatus (*inplace_callback)(char* existing_value, +13943: uint32_t* existing_value_size, +13943: Slice delta_value, +13943: std::string* merged_value) = nullptr; +13943: # 327 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: double memtable_prefix_bloom_size_ratio = 0.0; +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool memtable_whole_key_filtering = false; +13943: # 348 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: size_t memtable_huge_page_size = 0; +13943: # 369 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: std::shared_ptr +13943: memtable_insert_with_hint_prefix_extractor = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint32_t bloom_locality = 0; +13943: # 395 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: size_t arena_block_size = 0; +13943: # 426 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: std::vector compression_per_level; +13943: +13943: +13943: int num_levels = 7; +13943: # 438 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: int level0_slowdown_writes_trigger = 20; +13943: +13943: +13943: +13943: +13943: +13943: +13943: int level0_stop_writes_trigger = 36; +13943: # 459 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t target_file_size_base = 64 * 1048576; +13943: +13943: +13943: +13943: +13943: +13943: int target_file_size_multiplier = 1; +13943: # 546 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool level_compaction_dynamic_level_bytes = true; +13943: +13943: +13943: +13943: +13943: double max_bytes_for_level_multiplier = 10; +13943: # 562 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: std::vector max_bytes_for_level_multiplier_additional = +13943: std::vector(static_cast(num_levels), 1); +13943: # 572 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t max_compaction_bytes = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t soft_pending_compaction_bytes_limit = 64 * 1073741824ull; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t hard_pending_compaction_bytes_limit = 256 * 1073741824ull; +13943: +13943: +13943: CompactionStyle compaction_style = kCompactionStyleLevel; +13943: +13943: +13943: +13943: +13943: CompactionPri compaction_pri = kMinOverlappingRatio; +13943: +13943: +13943: +13943: +13943: +13943: +13943: CompactionOptionsUniversal compaction_options_universal; +13943: +13943: +13943: +13943: +13943: +13943: +13943: CompactionOptionsFIFO compaction_options_fifo; +13943: # 620 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t max_sequential_skip_in_iterations = 8; +13943: +13943: +13943: +13943: +13943: std::shared_ptr memtable_factory = +13943: std::shared_ptr(new SkipListFactory); +13943: # 645 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: using TablePropertiesCollectorFactories = +13943: std::vector>; +13943: TablePropertiesCollectorFactories table_properties_collector_factories; +13943: # 661 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: size_t max_successive_merges = 0; +13943: # 671 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool strict_max_successive_merges = false; +13943: # 687 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool optimize_filters_for_hits = false; +13943: # 696 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool paranoid_file_checks = false; +13943: # 706 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool force_consistency_checks = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool report_bg_io_stats = false; +13943: # 747 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t ttl = 0xfffffffffffffffe; +13943: # 795 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t periodic_compaction_seconds = 0xfffffffffffffffe; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t sample_for_compression = 0; +13943: # 810 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: Temperature last_level_temperature = Temperature::kUnknown; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Temperature default_write_temperature = Temperature::kUnknown; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Temperature default_temperature = Temperature::kUnknown; +13943: # 843 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t preclude_last_level_data_seconds = 0; +13943: # 866 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t preserve_internal_time_seconds = 0; +13943: # 880 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool enable_blob_files = false; +13943: # 892 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t min_blob_size = 0; +13943: # 901 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint64_t blob_file_size = 1ULL << 28; +13943: # 910 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: CompressionType blob_compression_type = kNoCompression; +13943: # 922 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool enable_blob_garbage_collection = false; +13943: # 933 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: double blob_garbage_collection_age_cutoff = 0.25; +13943: # 945 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: double blob_garbage_collection_force_threshold = 1.0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t blob_compaction_readahead_size = 0; +13943: # 967 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: int blob_file_starting_level = 0; +13943: # 977 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: std::shared_ptr blob_cache = nullptr; +13943: # 988 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: PrepopulateBlobCache prepopulate_blob_cache = PrepopulateBlobCache::kDisable; +13943: # 1004 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint32_t memtable_protection_bytes_per_key = 0; +13943: # 1054 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: bool persist_user_defined_timestamps = true; +13943: # 1069 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint8_t block_protection_bytes_per_key = 0; +13943: # 1081 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +13943: uint32_t bottommost_file_compaction_delay = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool paranoid_memory_checks = false; +13943: +13943: +13943: AdvancedColumnFamilyOptions(); +13943: +13943: explicit AdvancedColumnFamilyOptions(const Options& options); +13943: +13943: +13943: }; +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 1 +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cstdarg" 1 3 +13943: # 39 "/usr/include/c++/14/cstdarg" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdarg" 3 +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 1 3 4 +13943: # 44 "/usr/include/c++/14/cstdarg" 2 3 +13943: # 53 "/usr/include/c++/14/cstdarg" 3 +13943: +13943: # 53 "/usr/include/c++/14/cstdarg" 3 +13943: namespace std +13943: { +13943: using ::va_list; +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/functor_wrapper.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/functor_wrapper.h" +13943: namespace rocksdb { +13943: +13943: namespace detail { +13943: template +13943: struct IndexSequence {}; +13943: +13943: template +13943: struct IndexSequenceHelper +13943: : public IndexSequenceHelper {}; +13943: +13943: template +13943: struct IndexSequenceHelper<0U, Next...> { +13943: using type = IndexSequence; +13943: }; +13943: +13943: template +13943: using make_index_sequence = typename IndexSequenceHelper::type; +13943: +13943: template +13943: void call(Function f, Tuple t, IndexSequence) { +13943: f(std::get(t)...); +13943: } +13943: +13943: template +13943: void call(Function f, Tuple t) { +13943: static constexpr auto size = std::tuple_size::value; +13943: call(f, t, make_index_sequence{}); +13943: } +13943: } +13943: +13943: template +13943: class FunctorWrapper { +13943: public: +13943: explicit FunctorWrapper(std::function functor, Args &&...args) +13943: : functor_(std::move(functor)), args_(std::forward(args)...) {} +13943: +13943: void invoke() { detail::call(functor_, args_); } +13943: +13943: private: +13943: std::function functor_; +13943: std::tuple args_; +13943: }; +13943: } +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h" 1 +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h" +13943: +13943: # 29 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: template +13943: struct constexpr_max { +13943: static const int result = (A > B) ? A : B; +13943: }; +13943: +13943: +13943: +13943: +13943: struct ThreadStatus { +13943: +13943: enum ThreadType : int { +13943: HIGH_PRIORITY = 0, +13943: LOW_PRIORITY, +13943: USER, +13943: BOTTOM_PRIORITY, +13943: NUM_THREAD_TYPES +13943: }; +13943: +13943: +13943: +13943: +13943: enum OperationType : int { +13943: OP_UNKNOWN = 0, +13943: OP_COMPACTION, +13943: OP_FLUSH, +13943: OP_DBOPEN, +13943: OP_GET, +13943: OP_MULTIGET, +13943: OP_DBITERATOR, +13943: OP_VERIFY_DB_CHECKSUM, +13943: OP_VERIFY_FILE_CHECKSUMS, +13943: OP_GETENTITY, +13943: OP_MULTIGETENTITY, +13943: OP_READ_MANIFEST, +13943: NUM_OP_TYPES +13943: }; +13943: +13943: enum OperationStage : int { +13943: STAGE_UNKNOWN = 0, +13943: STAGE_FLUSH_RUN, +13943: STAGE_FLUSH_WRITE_L0, +13943: STAGE_COMPACTION_PREPARE, +13943: STAGE_COMPACTION_RUN, +13943: STAGE_COMPACTION_PROCESS_KV, +13943: STAGE_COMPACTION_INSTALL, +13943: STAGE_COMPACTION_SYNC_FILE, +13943: STAGE_PICK_MEMTABLES_TO_FLUSH, +13943: STAGE_MEMTABLE_ROLLBACK, +13943: STAGE_MEMTABLE_INSTALL_FLUSH_RESULTS, +13943: NUM_OP_STAGES +13943: }; +13943: +13943: enum CompactionPropertyType : int { +13943: COMPACTION_JOB_ID = 0, +13943: COMPACTION_INPUT_OUTPUT_LEVEL, +13943: COMPACTION_PROP_FLAGS, +13943: COMPACTION_TOTAL_INPUT_BYTES, +13943: COMPACTION_BYTES_READ, +13943: COMPACTION_BYTES_WRITTEN, +13943: NUM_COMPACTION_PROPERTIES +13943: }; +13943: +13943: enum FlushPropertyType : int { +13943: FLUSH_JOB_ID = 0, +13943: FLUSH_BYTES_MEMTABLES, +13943: FLUSH_BYTES_WRITTEN, +13943: NUM_FLUSH_PROPERTIES +13943: }; +13943: +13943: +13943: +13943: static const int kNumOperationProperties = +13943: constexpr_max::result; +13943: +13943: +13943: +13943: +13943: enum StateType : int { +13943: STATE_UNKNOWN = 0, +13943: STATE_MUTEX_WAIT = 1, +13943: NUM_STATE_TYPES +13943: }; +13943: +13943: ThreadStatus(const uint64_t _id, const ThreadType _thread_type, +13943: const std::string& _db_name, const std::string& _cf_name, +13943: const OperationType _operation_type, +13943: const uint64_t _op_elapsed_micros, +13943: const OperationStage _operation_stage, +13943: const uint64_t _op_props[], const StateType _state_type) +13943: : thread_id(_id), +13943: thread_type(_thread_type), +13943: db_name(_db_name), +13943: cf_name(_cf_name), +13943: operation_type(_operation_type), +13943: op_elapsed_micros(_op_elapsed_micros), +13943: operation_stage(_operation_stage), +13943: state_type(_state_type) { +13943: for (int i = 0; i < kNumOperationProperties; ++i) { +13943: op_properties[i] = _op_props[i]; +13943: } +13943: } +13943: +13943: +13943: const uint64_t thread_id; +13943: +13943: +13943: +13943: const ThreadType thread_type; +13943: +13943: +13943: +13943: +13943: const std::string db_name; +13943: +13943: +13943: +13943: +13943: const std::string cf_name; +13943: +13943: +13943: const OperationType operation_type; +13943: +13943: +13943: const uint64_t op_elapsed_micros; +13943: +13943: +13943: +13943: const OperationStage operation_stage; +13943: +13943: +13943: +13943: +13943: uint64_t op_properties[kNumOperationProperties]; +13943: +13943: +13943: const StateType state_type; +13943: +13943: +13943: +13943: +13943: static std::string GetThreadTypeName(ThreadType thread_type); +13943: +13943: +13943: static const std::string& GetOperationName(OperationType op_type); +13943: +13943: static const std::string MicrosToString(uint64_t op_elapsed_time); +13943: +13943: +13943: static const std::string& GetOperationStageName(OperationStage stage); +13943: +13943: +13943: +13943: static const std::string& GetOperationPropertyName(OperationType op_type, +13943: int i); +13943: +13943: +13943: +13943: static std::map InterpretOperationProperties( +13943: OperationType op_type, const uint64_t* op_properties); +13943: +13943: +13943: static const std::string& GetStateName(StateType state_type); +13943: }; +13943: +13943: } +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 2 +13943: # 49 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: namespace rocksdb { +13943: +13943: class DynamicLibrary; +13943: class FileLock; +13943: class Logger; +13943: class RandomAccessFile; +13943: class SequentialFile; +13943: class Slice; +13943: struct DataVerificationInfo; +13943: class WritableFile; +13943: class RandomRWFile; +13943: class MemoryMappedFileBuffer; +13943: class Directory; +13943: struct DBOptions; +13943: struct ImmutableDBOptions; +13943: struct MutableDBOptions; +13943: class RateLimiter; +13943: class ThreadStatusUpdater; +13943: struct ThreadStatus; +13943: class FileSystem; +13943: class SystemClock; +13943: struct ConfigOptions; +13943: struct IOOptions; +13943: +13943: const size_t kDefaultPageSize = 4 * 1024; +13943: +13943: +13943: struct EnvOptions { +13943: +13943: EnvOptions(); +13943: +13943: +13943: explicit EnvOptions(const DBOptions& options); +13943: +13943: +13943: +13943: bool use_mmap_reads = false; +13943: +13943: +13943: bool use_mmap_writes = true; +13943: +13943: +13943: bool use_direct_reads = false; +13943: +13943: +13943: bool use_direct_writes = false; +13943: +13943: +13943: bool allow_fallocate = true; +13943: +13943: +13943: bool set_fd_cloexec = true; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t bytes_per_sync = 0; +13943: # 123 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: bool strict_bytes_per_sync = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool fallocate_with_keep_size = true; +13943: +13943: +13943: size_t compaction_readahead_size = 0; +13943: +13943: +13943: size_t random_access_max_buffer_size = 0; +13943: +13943: +13943: size_t writable_file_max_buffer_size = 1024 * 1024; +13943: +13943: +13943: RateLimiter* rate_limiter = nullptr; +13943: }; +13943: # 154 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: class Env : public Customizable { +13943: public: +13943: static const char* kDefaultName() { return "DefaultEnv"; } +13943: struct FileAttributes { +13943: +13943: std::string name; +13943: +13943: +13943: uint64_t size_bytes; +13943: +13943: +13943: Temperature temperature = Temperature::kUnknown; +13943: }; +13943: +13943: Env(); +13943: +13943: +13943: explicit Env(const std::shared_ptr& fs); +13943: Env(const std::shared_ptr& fs, +13943: const std::shared_ptr& clock); +13943: +13943: Env(const Env&) = delete; +13943: void operator=(const Env&) = delete; +13943: +13943: ~Env() override; +13943: +13943: static const char* Type() { return "Environment"; } +13943: +13943: +13943: +13943: const char* Name() const override { return ""; } +13943: # 199 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& value, Env** result); +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& value, Env** result, +13943: std::shared_ptr* guard); +13943: +13943: +13943: +13943: +13943: +13943: static Status CreateFromUri(const ConfigOptions& options, +13943: const std::string& env_uri, +13943: const std::string& fs_uri, Env** result, +13943: std::shared_ptr* guard); +13943: +13943: +13943: +13943: +13943: +13943: +13943: static Env* Default(); +13943: +13943: +13943: virtual Status RegisterDbPaths(const std::vector& ) { +13943: return Status::OK(); +13943: } +13943: +13943: virtual Status UnregisterDbPaths(const std::vector& ) { +13943: return Status::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status NewSequentialFile(const std::string& fname, +13943: std::unique_ptr* result, +13943: const EnvOptions& options) = 0; +13943: # 247 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status NewRandomAccessFile(const std::string& fname, +13943: std::unique_ptr* result, +13943: const EnvOptions& options) = 0; +13943: +13943: +13943: enum WriteLifeTimeHint { +13943: WLTH_NOT_SET = 0, +13943: WLTH_NONE, +13943: WLTH_SHORT, +13943: WLTH_MEDIUM, +13943: WLTH_LONG, +13943: WLTH_EXTREME, +13943: }; +13943: # 268 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status NewWritableFile(const std::string& fname, +13943: std::unique_ptr* result, +13943: const EnvOptions& options) = 0; +13943: # 280 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status ReopenWritableFile(const std::string& , +13943: std::unique_ptr* , +13943: const EnvOptions& ) { +13943: return Status::NotSupported("Env::ReopenWritableFile() not supported."); +13943: } +13943: +13943: +13943: virtual Status ReuseWritableFile(const std::string& fname, +13943: const std::string& old_fname, +13943: std::unique_ptr* result, +13943: const EnvOptions& options); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status NewRandomRWFile(const std::string& , +13943: std::unique_ptr* , +13943: const EnvOptions& ) { +13943: return Status::NotSupported("RandomRWFile is not implemented in this Env"); +13943: } +13943: +13943: +13943: +13943: +13943: virtual Status NewMemoryMappedFileBuffer( +13943: const std::string& , +13943: std::unique_ptr* ) { +13943: return Status::NotSupported( +13943: "MemoryMappedFileBuffer is not implemented in this Env"); +13943: } +13943: # 320 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status NewDirectory(const std::string& name, +13943: std::unique_ptr* result) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status FileExists(const std::string& fname) = 0; +13943: # 338 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status GetChildren(const std::string& dir, +13943: std::vector* result) = 0; +13943: # 352 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status GetChildrenFileAttributes(const std::string& dir, +13943: std::vector* result); +13943: +13943: +13943: virtual Status DeleteFile(const std::string& fname) = 0; +13943: +13943: +13943: virtual Status Truncate(const std::string& , size_t ) { +13943: return Status::NotSupported("Truncate is not supported for this Env"); +13943: } +13943: +13943: +13943: virtual Status CreateDir(const std::string& dirname) = 0; +13943: +13943: +13943: +13943: virtual Status CreateDirIfMissing(const std::string& dirname) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status DeleteDir(const std::string& dirname) = 0; +13943: +13943: +13943: virtual Status GetFileSize(const std::string& fname, uint64_t* file_size) = 0; +13943: +13943: +13943: virtual Status GetFileModificationTime(const std::string& fname, +13943: uint64_t* file_mtime) = 0; +13943: +13943: virtual Status RenameFile(const std::string& src, +13943: const std::string& target) = 0; +13943: +13943: +13943: virtual Status LinkFile(const std::string& , +13943: const std::string& ) { +13943: return Status::NotSupported("LinkFile is not supported for this Env"); +13943: } +13943: +13943: virtual Status NumFileLinks(const std::string& , +13943: uint64_t* ) { +13943: return Status::NotSupported( +13943: "Getting number of file links is not supported for this Env"); +13943: } +13943: +13943: virtual Status AreFilesSame(const std::string& , +13943: const std::string& , bool* ) { +13943: return Status::NotSupported("AreFilesSame is not supported for this Env"); +13943: } +13943: # 416 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status LockFile(const std::string& fname, FileLock** lock) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status UnlockFile(FileLock* lock) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status LoadLibrary(const std::string& , +13943: const std::string& , +13943: std::shared_ptr* ) { +13943: return Status::NotSupported("LoadLibrary is not implemented in this Env"); +13943: } +13943: +13943: +13943: enum Priority { BOTTOM, LOW, HIGH, USER, TOTAL }; +13943: +13943: static std::string PriorityToString(Priority priority); +13943: +13943: +13943: enum IOPriority { +13943: IO_LOW = 0, +13943: IO_MID = 1, +13943: IO_HIGH = 2, +13943: IO_USER = 3, +13943: IO_TOTAL = 4 +13943: }; +13943: +13943: +13943: enum class IOActivity : uint8_t { +13943: kFlush = 0, +13943: kCompaction = 1, +13943: kDBOpen = 2, +13943: kGet = 3, +13943: kMultiGet = 4, +13943: kDBIterator = 5, +13943: kVerifyDBChecksum = 6, +13943: kVerifyFileChecksums = 7, +13943: kGetEntity = 8, +13943: kMultiGetEntity = 9, +13943: kReadManifest = 10, +13943: kUnknown, +13943: }; +13943: # 475 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual void Schedule(void (*function)(void* arg), void* arg, +13943: Priority pri = LOW, void* tag = nullptr, +13943: void (*unschedFunction)(void* arg) = nullptr) = 0; +13943: +13943: +13943: +13943: virtual int UnSchedule(void* , Priority ) { return 0; } +13943: +13943: +13943: +13943: virtual void StartThread(void (*function)(void* arg), void* arg) = 0; +13943: +13943: +13943: +13943: template +13943: void StartThreadTyped(FunctionT function, Args&&... args) { +13943: using FWType = FunctorWrapper; +13943: StartThread( +13943: [](void* arg) { +13943: auto* functor = static_cast(arg); +13943: functor->invoke(); +13943: delete functor; +13943: }, +13943: new FWType(std::function(function), +13943: std::forward(args)...)); +13943: } +13943: +13943: +13943: virtual void WaitForJoin() {} +13943: +13943: +13943: virtual int ReserveThreads(int , Priority ) { +13943: return 0; +13943: } +13943: +13943: +13943: +13943: virtual int ReleaseThreads(int , Priority ) { +13943: return 0; +13943: } +13943: +13943: +13943: virtual unsigned int GetThreadPoolQueueLen(Priority = LOW) const { +13943: return 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetTestDirectory(std::string* path) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status NewLogger(const std::string& fname, +13943: std::shared_ptr* result); +13943: +13943: +13943: +13943: +13943: virtual uint64_t NowMicros() = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual uint64_t NowNanos() { return NowMicros() * 1000; } +13943: +13943: +13943: virtual uint64_t NowCPUNanos() { return 0; } +13943: +13943: +13943: virtual void SleepForMicroseconds(int micros) = 0; +13943: +13943: +13943: +13943: virtual Status GetHostName(char* name, uint64_t len) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status GetHostNameString(std::string* result); +13943: +13943: +13943: +13943: virtual Status GetCurrentTime(int64_t* unix_time) = 0; +13943: +13943: +13943: virtual Status GetAbsolutePath(const std::string& db_path, +13943: std::string* output_path) = 0; +13943: +13943: +13943: +13943: +13943: virtual void SetBackgroundThreads(int number, Priority pri = LOW) = 0; +13943: virtual int GetBackgroundThreads(Priority pri = LOW) = 0; +13943: +13943: virtual Status SetAllowNonOwnerAccess(bool ) { +13943: return Status::NotSupported("Env::SetAllowNonOwnerAccess() not supported."); +13943: } +13943: +13943: +13943: +13943: +13943: virtual void IncBackgroundThreadsIfNeeded(int number, Priority pri) = 0; +13943: +13943: +13943: virtual void LowerThreadPoolIOPriority(Priority = LOW) {} +13943: +13943: +13943: virtual Status LowerThreadPoolCPUPriority(Priority , +13943: CpuPriority ) { +13943: return Status::NotSupported( +13943: "Env::LowerThreadPoolCPUPriority(Priority, CpuPriority) not supported"); +13943: } +13943: +13943: +13943: virtual void LowerThreadPoolCPUPriority(Priority = LOW) {} +13943: +13943: +13943: virtual std::string TimeToString(uint64_t time) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual std::string GenerateUniqueId(); +13943: +13943: +13943: +13943: virtual EnvOptions OptimizeForLogRead(const EnvOptions& env_options) const; +13943: +13943: +13943: +13943: +13943: virtual EnvOptions OptimizeForManifestRead( +13943: const EnvOptions& env_options) const; +13943: +13943: +13943: +13943: +13943: virtual EnvOptions OptimizeForLogWrite(const EnvOptions& env_options, +13943: const DBOptions& db_options) const; +13943: +13943: +13943: +13943: virtual EnvOptions OptimizeForManifestWrite( +13943: const EnvOptions& env_options) const; +13943: +13943: +13943: +13943: +13943: virtual EnvOptions OptimizeForCompactionTableWrite( +13943: const EnvOptions& env_options, +13943: const ImmutableDBOptions& immutable_ops) const; +13943: +13943: +13943: +13943: +13943: virtual EnvOptions OptimizeForCompactionTableRead( +13943: const EnvOptions& env_options, +13943: const ImmutableDBOptions& db_options) const; +13943: +13943: +13943: +13943: +13943: virtual EnvOptions OptimizeForBlobFileRead( +13943: const EnvOptions& env_options, +13943: const ImmutableDBOptions& db_options) const; +13943: +13943: +13943: virtual Status GetThreadList(std::vector* ) { +13943: return Status::NotSupported("Env::GetThreadList() not supported."); +13943: } +13943: +13943: +13943: +13943: +13943: virtual ThreadStatusUpdater* GetThreadStatusUpdater() const { +13943: return thread_status_updater_; +13943: } +13943: +13943: +13943: virtual uint64_t GetThreadID() const; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetFreeSpace(const std::string& , +13943: uint64_t* ) { +13943: return Status::NotSupported("Env::GetFreeSpace() not supported."); +13943: } +13943: +13943: +13943: virtual Status IsDirectory(const std::string& , bool* ) { +13943: return Status::NotSupported("Env::IsDirectory() not supported."); +13943: } +13943: +13943: virtual void SanitizeEnvOptions(EnvOptions* ) const {} +13943: +13943: +13943: +13943: const std::shared_ptr& GetFileSystem() const; +13943: +13943: +13943: +13943: const std::shared_ptr& GetSystemClock() const; +13943: +13943: +13943: +13943: protected: +13943: +13943: +13943: ThreadStatusUpdater* thread_status_updater_; +13943: +13943: +13943: std::shared_ptr file_system_; +13943: +13943: +13943: std::shared_ptr system_clock_; +13943: +13943: private: +13943: static const size_t kMaxHostNameLen = 256; +13943: }; +13943: +13943: +13943: +13943: +13943: ThreadStatusUpdater* CreateThreadStatusUpdater(); +13943: +13943: +13943: class SequentialFile { +13943: public: +13943: SequentialFile() {} +13943: virtual ~SequentialFile(); +13943: # 726 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status Read(size_t n, Slice* result, char* scratch) = 0; +13943: # 735 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status Skip(uint64_t n) = 0; +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: +13943: +13943: +13943: +13943: virtual Status InvalidateCache(size_t , size_t ) { +13943: return Status::NotSupported( +13943: "SequentialFile::InvalidateCache not supported."); +13943: } +13943: +13943: +13943: +13943: virtual Status PositionedRead(uint64_t , size_t , +13943: Slice* , char* ) { +13943: return Status::NotSupported( +13943: "SequentialFile::PositionedRead() not supported."); +13943: } +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: struct ReadRequest { +13943: +13943: uint64_t offset; +13943: +13943: +13943: +13943: size_t len; +13943: +13943: +13943: +13943: char* scratch; +13943: +13943: +13943: +13943: Slice result; +13943: +13943: +13943: Status status; +13943: }; +13943: +13943: +13943: class RandomAccessFile { +13943: public: +13943: RandomAccessFile() {} +13943: virtual ~RandomAccessFile(); +13943: # 806 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status Read(uint64_t offset, size_t n, Slice* result, +13943: char* scratch) const = 0; +13943: +13943: +13943: virtual Status Prefetch(uint64_t , size_t ) { +13943: return Status::OK(); +13943: } +13943: # 821 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status MultiRead(ReadRequest* reqs, size_t num_reqs) { +13943: +13943: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: (static_cast ( +13943: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: reqs != nullptr +13943: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: "reqs != nullptr" +13943: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: ; +13943: for (size_t i = 0; i < num_reqs; ++i) { +13943: ReadRequest& req = reqs[i]; +13943: req.status = Read(req.offset, req.len, &req.result, req.scratch); +13943: } +13943: return Status::OK(); +13943: } +13943: # 845 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual size_t GetUniqueId(char* , size_t ) const { +13943: return 0; +13943: +13943: } +13943: +13943: enum AccessPattern { NORMAL, RANDOM, SEQUENTIAL, WILLNEED, DONTNEED }; +13943: +13943: virtual void Hint(AccessPattern ) {} +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: +13943: +13943: +13943: +13943: virtual Status InvalidateCache(size_t , size_t ) { +13943: return Status::NotSupported( +13943: "RandomAccessFile::InvalidateCache not supported."); +13943: } +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: class WritableFile { +13943: public: +13943: WritableFile() +13943: : last_preallocated_block_(0), +13943: preallocation_block_size_(0), +13943: io_priority_(Env::IO_TOTAL), +13943: write_hint_(Env::WLTH_NOT_SET), +13943: strict_bytes_per_sync_(false) {} +13943: +13943: explicit WritableFile(const EnvOptions& options) +13943: : last_preallocated_block_(0), +13943: preallocation_block_size_(0), +13943: io_priority_(Env::IO_TOTAL), +13943: write_hint_(Env::WLTH_NOT_SET), +13943: strict_bytes_per_sync_(options.strict_bytes_per_sync) {} +13943: +13943: WritableFile(const WritableFile&) = delete; +13943: void operator=(const WritableFile&) = delete; +13943: +13943: +13943: +13943: +13943: virtual ~WritableFile(); +13943: +13943: +13943: +13943: +13943: virtual Status Append(const Slice& data) = 0; +13943: # 913 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status Append(const Slice& data, +13943: const DataVerificationInfo& ) { +13943: return Append(data); +13943: } +13943: # 938 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status PositionedAppend(const Slice& , +13943: uint64_t ) { +13943: return Status::NotSupported( +13943: "WritableFile::PositionedAppend() not supported."); +13943: } +13943: # 951 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status PositionedAppend( +13943: const Slice& , uint64_t , +13943: const DataVerificationInfo& ) { +13943: return Status::NotSupported("PositionedAppend"); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Truncate(uint64_t ) { return Status::OK(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Close() = 0; +13943: virtual Status Flush() = 0; +13943: virtual Status Sync() = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Fsync() { return Sync(); } +13943: +13943: +13943: +13943: virtual bool IsSyncThreadSafe() const { return false; } +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: # 1003 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual void SetIOPriority(Env::IOPriority pri) { io_priority_ = pri; } +13943: +13943: virtual Env::IOPriority GetIOPriority() { return io_priority_; } +13943: +13943: virtual void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) { +13943: write_hint_ = hint; +13943: } +13943: +13943: virtual Env::WriteLifeTimeHint GetWriteLifeTimeHint() { return write_hint_; } +13943: +13943: +13943: +13943: virtual uint64_t GetFileSize() = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void SetPreallocationBlockSize(size_t size) { +13943: preallocation_block_size_ = size; +13943: } +13943: +13943: virtual void GetPreallocationStatus(size_t* block_size, +13943: size_t* last_allocated_block) { +13943: *last_allocated_block = last_preallocated_block_; +13943: *block_size = preallocation_block_size_; +13943: } +13943: +13943: +13943: virtual size_t GetUniqueId(char* , size_t ) const { +13943: return 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual Status InvalidateCache(size_t , size_t ) { +13943: return Status::NotSupported("WritableFile::InvalidateCache not supported."); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status RangeSync(uint64_t , uint64_t ) { +13943: if (strict_bytes_per_sync_) { +13943: return Sync(); +13943: } +13943: return Status::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void PrepareWrite(size_t offset, size_t len) { +13943: if (preallocation_block_size_ == 0) { +13943: return; +13943: } +13943: +13943: +13943: +13943: const auto block_size = preallocation_block_size_; +13943: size_t new_last_preallocated_block = +13943: (offset + len + block_size - 1) / block_size; +13943: if (new_last_preallocated_block > last_preallocated_block_) { +13943: size_t num_spanned_blocks = +13943: new_last_preallocated_block - last_preallocated_block_; +13943: +13943: Allocate(block_size * last_preallocated_block_, +13943: block_size * num_spanned_blocks) +13943: .PermitUncheckedError(); +13943: last_preallocated_block_ = new_last_preallocated_block; +13943: } +13943: } +13943: +13943: +13943: virtual Status Allocate(uint64_t , uint64_t ) { +13943: return Status::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: protected: +13943: size_t preallocation_block_size() { return preallocation_block_size_; } +13943: +13943: private: +13943: size_t last_preallocated_block_; +13943: size_t preallocation_block_size_; +13943: +13943: protected: +13943: Env::IOPriority io_priority_; +13943: Env::WriteLifeTimeHint write_hint_; +13943: const bool strict_bytes_per_sync_; +13943: }; +13943: +13943: +13943: class RandomRWFile { +13943: public: +13943: RandomRWFile() {} +13943: +13943: RandomRWFile(const RandomRWFile&) = delete; +13943: RandomRWFile& operator=(const RandomRWFile&) = delete; +13943: +13943: +13943: +13943: +13943: virtual ~RandomRWFile() {} +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: +13943: +13943: +13943: virtual Status Write(uint64_t offset, const Slice& data) = 0; +13943: # 1139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: virtual Status Read(uint64_t offset, size_t n, Slice* result, +13943: char* scratch) const = 0; +13943: +13943: virtual Status Flush() = 0; +13943: +13943: virtual Status Sync() = 0; +13943: +13943: virtual Status Fsync() { return Sync(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Close() = 0; +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: class MemoryMappedFileBuffer { +13943: public: +13943: MemoryMappedFileBuffer(void* _base, size_t _length) +13943: : base_(_base), length_(_length) {} +13943: +13943: virtual ~MemoryMappedFileBuffer() = 0; +13943: +13943: +13943: +13943: MemoryMappedFileBuffer(const MemoryMappedFileBuffer&) = delete; +13943: MemoryMappedFileBuffer& operator=(const MemoryMappedFileBuffer&) = delete; +13943: +13943: void* GetBase() const { return base_; } +13943: size_t GetLen() const { return length_; } +13943: +13943: protected: +13943: void* base_; +13943: const size_t length_; +13943: }; +13943: +13943: +13943: +13943: class Directory { +13943: public: +13943: +13943: +13943: virtual ~Directory() {} +13943: +13943: virtual Status Fsync() = 0; +13943: +13943: +13943: +13943: virtual Status Close() { return Status::NotSupported("Close"); } +13943: +13943: virtual size_t GetUniqueId(char* , size_t ) const { +13943: return 0; +13943: } +13943: +13943: +13943: +13943: }; +13943: +13943: enum InfoLogLevel : unsigned char { +13943: DEBUG_LEVEL = 0, +13943: INFO_LEVEL, +13943: WARN_LEVEL, +13943: ERROR_LEVEL, +13943: FATAL_LEVEL, +13943: HEADER_LEVEL, +13943: NUM_INFO_LOG_LEVELS, +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class Logger { +13943: public: +13943: static constexpr size_t kDoNotSupportGetLogFileSize = +13943: # 1220 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: (4294967295U) +13943: # 1220 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: ; +13943: +13943: +13943: +13943: static const InfoLogLevel kDefaultLogLevel; +13943: +13943: explicit Logger(const InfoLogLevel log_level = InfoLogLevel::INFO_LEVEL) +13943: : closed_(false), log_level_(log_level) {} +13943: +13943: Logger(const Logger&) = delete; +13943: void operator=(const Logger&) = delete; +13943: +13943: virtual ~Logger(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Close(); +13943: +13943: +13943: +13943: +13943: virtual void LogHeader(const char* format, va_list ap) { +13943: +13943: +13943: Logv(InfoLogLevel::INFO_LEVEL, format, ap); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void Logv(const char* , va_list ) { +13943: +13943: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: (static_cast ( +13943: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: false +13943: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: "false" +13943: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: ; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual void Logv(const InfoLogLevel log_level, const char* format, +13943: va_list ap); +13943: +13943: virtual size_t GetLogFileSize() const { return kDoNotSupportGetLogFileSize; } +13943: +13943: virtual void Flush() {} +13943: virtual InfoLogLevel GetInfoLogLevel() const { return log_level_; } +13943: virtual void SetInfoLogLevel(const InfoLogLevel log_level) { +13943: log_level_ = log_level; +13943: } +13943: +13943: +13943: +13943: protected: +13943: virtual Status CloseImpl(); +13943: bool closed_; +13943: +13943: private: +13943: InfoLogLevel log_level_; +13943: }; +13943: +13943: +13943: +13943: +13943: class FileLock { +13943: public: +13943: FileLock() {} +13943: virtual ~FileLock(); +13943: +13943: private: +13943: +13943: FileLock(const FileLock&) = delete; +13943: void operator=(const FileLock&) = delete; +13943: }; +13943: +13943: class DynamicLibrary { +13943: public: +13943: virtual ~DynamicLibrary() {} +13943: +13943: +13943: virtual const char* Name() const = 0; +13943: +13943: +13943: +13943: template +13943: Status LoadFunction(const std::string& sym_name, std::function* function) { +13943: +13943: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: (static_cast ( +13943: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: nullptr != function +13943: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: "nullptr != function" +13943: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: ; +13943: void* ptr = nullptr; +13943: Status s = LoadSymbol(sym_name, &ptr); +13943: *function = reinterpret_cast(ptr); +13943: return s; +13943: } +13943: +13943: virtual Status LoadSymbol(const std::string& sym_name, void** func) = 0; +13943: }; +13943: +13943: void LogFlush(const std::shared_ptr& info_log); +13943: +13943: void Log(const InfoLogLevel log_level, const std::shared_ptr& info_log, +13943: const char* format, ...) __attribute__((__format__(__printf__, 3, 4))); +13943: +13943: +13943: void Header(const std::shared_ptr& info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Debug(const std::shared_ptr& info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Info(const std::shared_ptr& info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Warn(const std::shared_ptr& info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Error(const std::shared_ptr& info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Fatal(const std::shared_ptr& info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: +13943: +13943: +13943: void Log(const std::shared_ptr& info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: +13943: void LogFlush(Logger* info_log); +13943: +13943: void Log(const InfoLogLevel log_level, Logger* info_log, const char* format, +13943: ...) __attribute__((__format__(__printf__, 3, 4))); +13943: +13943: +13943: void Log(Logger* info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: +13943: +13943: void Header(Logger* info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Debug(Logger* info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Info(Logger* info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Warn(Logger* info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Error(Logger* info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: void Fatal(Logger* info_log, const char* format, ...) +13943: __attribute__((__format__(__printf__, 2, 3))); +13943: +13943: +13943: Status WriteStringToFile(Env* env, const Slice& data, const std::string& fname, +13943: bool should_sync = false, +13943: const IOOptions* io_options = nullptr); +13943: +13943: +13943: Status ReadFileToString(Env* env, const std::string& fname, std::string* data); +13943: # 1402 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +13943: class EnvWrapper : public Env { +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: struct Target { +13943: Env* env; +13943: std::shared_ptr guard; +13943: +13943: +13943: explicit Target(Env* t) : env(t) {} +13943: +13943: +13943: explicit Target(std::unique_ptr&& t) : guard(t.release()) { +13943: env = guard.get(); +13943: } +13943: +13943: +13943: explicit Target(const std::shared_ptr& t) : guard(t) { +13943: env = guard.get(); +13943: } +13943: +13943: +13943: void Prepare() { +13943: if (guard.get() != nullptr) { +13943: env = guard.get(); +13943: } else if (env == nullptr) { +13943: env = Env::Default(); +13943: } +13943: } +13943: }; +13943: +13943: +13943: explicit EnvWrapper(Env* t); +13943: explicit EnvWrapper(std::unique_ptr&& t); +13943: explicit EnvWrapper(const std::shared_ptr& t); +13943: ~EnvWrapper() override; +13943: +13943: +13943: Env* target() const { return target_.env; } +13943: +13943: +13943: +13943: const char* Name() const override { return target_.env->Name(); } +13943: +13943: +13943: Status RegisterDbPaths(const std::vector& paths) override { +13943: return target_.env->RegisterDbPaths(paths); +13943: } +13943: +13943: Status UnregisterDbPaths(const std::vector& paths) override { +13943: return target_.env->UnregisterDbPaths(paths); +13943: } +13943: +13943: Status NewSequentialFile(const std::string& f, +13943: std::unique_ptr* r, +13943: const EnvOptions& options) override { +13943: return target_.env->NewSequentialFile(f, r, options); +13943: } +13943: Status NewRandomAccessFile(const std::string& f, +13943: std::unique_ptr* r, +13943: const EnvOptions& options) override { +13943: return target_.env->NewRandomAccessFile(f, r, options); +13943: } +13943: Status NewWritableFile(const std::string& f, std::unique_ptr* r, +13943: const EnvOptions& options) override { +13943: return target_.env->NewWritableFile(f, r, options); +13943: } +13943: Status ReopenWritableFile(const std::string& fname, +13943: std::unique_ptr* result, +13943: const EnvOptions& options) override { +13943: return target_.env->ReopenWritableFile(fname, result, options); +13943: } +13943: Status ReuseWritableFile(const std::string& fname, +13943: const std::string& old_fname, +13943: std::unique_ptr* r, +13943: const EnvOptions& options) override { +13943: return target_.env->ReuseWritableFile(fname, old_fname, r, options); +13943: } +13943: Status NewRandomRWFile(const std::string& fname, +13943: std::unique_ptr* result, +13943: const EnvOptions& options) override { +13943: return target_.env->NewRandomRWFile(fname, result, options); +13943: } +13943: Status NewMemoryMappedFileBuffer( +13943: const std::string& fname, +13943: std::unique_ptr* result) override { +13943: return target_.env->NewMemoryMappedFileBuffer(fname, result); +13943: } +13943: Status NewDirectory(const std::string& name, +13943: std::unique_ptr* result) override { +13943: return target_.env->NewDirectory(name, result); +13943: } +13943: Status FileExists(const std::string& f) override { +13943: return target_.env->FileExists(f); +13943: } +13943: Status GetChildren(const std::string& dir, +13943: std::vector* r) override { +13943: return target_.env->GetChildren(dir, r); +13943: } +13943: Status GetChildrenFileAttributes( +13943: const std::string& dir, std::vector* result) override { +13943: return target_.env->GetChildrenFileAttributes(dir, result); +13943: } +13943: Status DeleteFile(const std::string& f) override { +13943: return target_.env->DeleteFile(f); +13943: } +13943: Status Truncate(const std::string& fname, size_t size) override { +13943: return target_.env->Truncate(fname, size); +13943: } +13943: Status CreateDir(const std::string& d) override { +13943: return target_.env->CreateDir(d); +13943: } +13943: Status CreateDirIfMissing(const std::string& d) override { +13943: return target_.env->CreateDirIfMissing(d); +13943: } +13943: Status DeleteDir(const std::string& d) override { +13943: return target_.env->DeleteDir(d); +13943: } +13943: Status GetFileSize(const std::string& f, uint64_t* s) override { +13943: return target_.env->GetFileSize(f, s); +13943: } +13943: +13943: Status GetFileModificationTime(const std::string& fname, +13943: uint64_t* file_mtime) override { +13943: return target_.env->GetFileModificationTime(fname, file_mtime); +13943: } +13943: +13943: Status RenameFile(const std::string& s, const std::string& t) override { +13943: return target_.env->RenameFile(s, t); +13943: } +13943: +13943: Status LinkFile(const std::string& s, const std::string& t) override { +13943: return target_.env->LinkFile(s, t); +13943: } +13943: +13943: Status NumFileLinks(const std::string& fname, uint64_t* count) override { +13943: return target_.env->NumFileLinks(fname, count); +13943: } +13943: +13943: Status AreFilesSame(const std::string& first, const std::string& second, +13943: bool* res) override { +13943: return target_.env->AreFilesSame(first, second, res); +13943: } +13943: +13943: Status LockFile(const std::string& f, FileLock** l) override { +13943: return target_.env->LockFile(f, l); +13943: } +13943: +13943: Status UnlockFile(FileLock* l) override { return target_.env->UnlockFile(l); } +13943: +13943: Status IsDirectory(const std::string& path, bool* is_dir) override { +13943: return target_.env->IsDirectory(path, is_dir); +13943: } +13943: +13943: Status LoadLibrary(const std::string& lib_name, +13943: const std::string& search_path, +13943: std::shared_ptr* result) override { +13943: return target_.env->LoadLibrary(lib_name, search_path, result); +13943: } +13943: +13943: void Schedule(void (*f)(void* arg), void* a, Priority pri, +13943: void* tag = nullptr, void (*u)(void* arg) = nullptr) override { +13943: return target_.env->Schedule(f, a, pri, tag, u); +13943: } +13943: +13943: int UnSchedule(void* tag, Priority pri) override { +13943: return target_.env->UnSchedule(tag, pri); +13943: } +13943: +13943: void StartThread(void (*f)(void*), void* a) override { +13943: return target_.env->StartThread(f, a); +13943: } +13943: void WaitForJoin() override { return target_.env->WaitForJoin(); } +13943: unsigned int GetThreadPoolQueueLen(Priority pri = LOW) const override { +13943: return target_.env->GetThreadPoolQueueLen(pri); +13943: } +13943: +13943: int ReserveThreads(int threads_to_be_reserved, Priority pri) override { +13943: return target_.env->ReserveThreads(threads_to_be_reserved, pri); +13943: } +13943: +13943: int ReleaseThreads(int threads_to_be_released, Priority pri) override { +13943: return target_.env->ReleaseThreads(threads_to_be_released, pri); +13943: } +13943: +13943: Status GetTestDirectory(std::string* path) override { +13943: return target_.env->GetTestDirectory(path); +13943: } +13943: Status NewLogger(const std::string& fname, +13943: std::shared_ptr* result) override { +13943: return target_.env->NewLogger(fname, result); +13943: } +13943: uint64_t NowMicros() override { return target_.env->NowMicros(); } +13943: uint64_t NowNanos() override { return target_.env->NowNanos(); } +13943: uint64_t NowCPUNanos() override { return target_.env->NowCPUNanos(); } +13943: +13943: void SleepForMicroseconds(int micros) override { +13943: target_.env->SleepForMicroseconds(micros); +13943: } +13943: Status GetHostName(char* name, uint64_t len) override { +13943: return target_.env->GetHostName(name, len); +13943: } +13943: Status GetCurrentTime(int64_t* unix_time) override { +13943: return target_.env->GetCurrentTime(unix_time); +13943: } +13943: Status GetAbsolutePath(const std::string& db_path, +13943: std::string* output_path) override { +13943: return target_.env->GetAbsolutePath(db_path, output_path); +13943: } +13943: void SetBackgroundThreads(int num, Priority pri) override { +13943: return target_.env->SetBackgroundThreads(num, pri); +13943: } +13943: int GetBackgroundThreads(Priority pri) override { +13943: return target_.env->GetBackgroundThreads(pri); +13943: } +13943: +13943: Status SetAllowNonOwnerAccess(bool allow_non_owner_access) override { +13943: return target_.env->SetAllowNonOwnerAccess(allow_non_owner_access); +13943: } +13943: +13943: void IncBackgroundThreadsIfNeeded(int num, Priority pri) override { +13943: return target_.env->IncBackgroundThreadsIfNeeded(num, pri); +13943: } +13943: +13943: void LowerThreadPoolIOPriority(Priority pool) override { +13943: target_.env->LowerThreadPoolIOPriority(pool); +13943: } +13943: +13943: void LowerThreadPoolCPUPriority(Priority pool) override { +13943: target_.env->LowerThreadPoolCPUPriority(pool); +13943: } +13943: +13943: Status LowerThreadPoolCPUPriority(Priority pool, CpuPriority pri) override { +13943: return target_.env->LowerThreadPoolCPUPriority(pool, pri); +13943: } +13943: +13943: std::string TimeToString(uint64_t time) override { +13943: return target_.env->TimeToString(time); +13943: } +13943: +13943: Status GetThreadList(std::vector* thread_list) override { +13943: return target_.env->GetThreadList(thread_list); +13943: } +13943: +13943: ThreadStatusUpdater* GetThreadStatusUpdater() const override { +13943: return target_.env->GetThreadStatusUpdater(); +13943: } +13943: +13943: uint64_t GetThreadID() const override { return target_.env->GetThreadID(); } +13943: +13943: std::string GenerateUniqueId() override { +13943: return target_.env->GenerateUniqueId(); +13943: } +13943: +13943: EnvOptions OptimizeForLogRead(const EnvOptions& env_options) const override { +13943: return target_.env->OptimizeForLogRead(env_options); +13943: } +13943: EnvOptions OptimizeForManifestRead( +13943: const EnvOptions& env_options) const override { +13943: return target_.env->OptimizeForManifestRead(env_options); +13943: } +13943: EnvOptions OptimizeForLogWrite(const EnvOptions& env_options, +13943: const DBOptions& db_options) const override { +13943: return target_.env->OptimizeForLogWrite(env_options, db_options); +13943: } +13943: EnvOptions OptimizeForManifestWrite( +13943: const EnvOptions& env_options) const override { +13943: return target_.env->OptimizeForManifestWrite(env_options); +13943: } +13943: EnvOptions OptimizeForCompactionTableWrite( +13943: const EnvOptions& env_options, +13943: const ImmutableDBOptions& immutable_ops) const override { +13943: return target_.env->OptimizeForCompactionTableWrite(env_options, +13943: immutable_ops); +13943: } +13943: EnvOptions OptimizeForCompactionTableRead( +13943: const EnvOptions& env_options, +13943: const ImmutableDBOptions& db_options) const override { +13943: return target_.env->OptimizeForCompactionTableRead(env_options, db_options); +13943: } +13943: EnvOptions OptimizeForBlobFileRead( +13943: const EnvOptions& env_options, +13943: const ImmutableDBOptions& db_options) const override { +13943: return target_.env->OptimizeForBlobFileRead(env_options, db_options); +13943: } +13943: Status GetFreeSpace(const std::string& path, uint64_t* diskfree) override { +13943: return target_.env->GetFreeSpace(path, diskfree); +13943: } +13943: void SanitizeEnvOptions(EnvOptions* env_opts) const override { +13943: target_.env->SanitizeEnvOptions(env_opts); +13943: } +13943: Status PrepareOptions(const ConfigOptions& options) override; +13943: std::string SerializeOptions(const ConfigOptions& config_options, +13943: const std::string& header) const override; +13943: +13943: private: +13943: Target target_; +13943: }; +13943: +13943: class SequentialFileWrapper : public SequentialFile { +13943: public: +13943: explicit SequentialFileWrapper(SequentialFile* target) : target_(target) {} +13943: +13943: Status Read(size_t n, Slice* result, char* scratch) override { +13943: return target_->Read(n, result, scratch); +13943: } +13943: Status Skip(uint64_t n) override { return target_->Skip(n); } +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: Status InvalidateCache(size_t offset, size_t length) override { +13943: return target_->InvalidateCache(offset, length); +13943: } +13943: Status PositionedRead(uint64_t offset, size_t n, Slice* result, +13943: char* scratch) override { +13943: return target_->PositionedRead(offset, n, result, scratch); +13943: } +13943: +13943: private: +13943: SequentialFile* target_; +13943: }; +13943: +13943: class RandomAccessFileWrapper : public RandomAccessFile { +13943: public: +13943: explicit RandomAccessFileWrapper(RandomAccessFile* target) +13943: : target_(target) {} +13943: +13943: Status Read(uint64_t offset, size_t n, Slice* result, +13943: char* scratch) const override { +13943: return target_->Read(offset, n, result, scratch); +13943: } +13943: Status MultiRead(ReadRequest* reqs, size_t num_reqs) override { +13943: return target_->MultiRead(reqs, num_reqs); +13943: } +13943: Status Prefetch(uint64_t offset, size_t n) override { +13943: return target_->Prefetch(offset, n); +13943: } +13943: size_t GetUniqueId(char* id, size_t max_size) const override { +13943: return target_->GetUniqueId(id, max_size); +13943: } +13943: void Hint(AccessPattern pattern) override { target_->Hint(pattern); } +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: Status InvalidateCache(size_t offset, size_t length) override { +13943: return target_->InvalidateCache(offset, length); +13943: } +13943: +13943: private: +13943: RandomAccessFile* target_; +13943: }; +13943: +13943: class WritableFileWrapper : public WritableFile { +13943: public: +13943: explicit WritableFileWrapper(WritableFile* t) : target_(t) {} +13943: +13943: Status Append(const Slice& data) override { return target_->Append(data); } +13943: Status Append(const Slice& data, +13943: const DataVerificationInfo& verification_info) override { +13943: return target_->Append(data, verification_info); +13943: } +13943: Status PositionedAppend(const Slice& data, uint64_t offset) override { +13943: return target_->PositionedAppend(data, offset); +13943: } +13943: Status PositionedAppend( +13943: const Slice& data, uint64_t offset, +13943: const DataVerificationInfo& verification_info) override { +13943: return target_->PositionedAppend(data, offset, verification_info); +13943: } +13943: Status Truncate(uint64_t size) override { return target_->Truncate(size); } +13943: Status Close() override { return target_->Close(); } +13943: Status Flush() override { return target_->Flush(); } +13943: Status Sync() override { return target_->Sync(); } +13943: Status Fsync() override { return target_->Fsync(); } +13943: bool IsSyncThreadSafe() const override { return target_->IsSyncThreadSafe(); } +13943: +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: +13943: void SetIOPriority(Env::IOPriority pri) override { +13943: target_->SetIOPriority(pri); +13943: } +13943: +13943: Env::IOPriority GetIOPriority() override { return target_->GetIOPriority(); } +13943: +13943: void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) override { +13943: target_->SetWriteLifeTimeHint(hint); +13943: } +13943: +13943: Env::WriteLifeTimeHint GetWriteLifeTimeHint() override { +13943: return target_->GetWriteLifeTimeHint(); +13943: } +13943: +13943: uint64_t GetFileSize() override { return target_->GetFileSize(); } +13943: +13943: void SetPreallocationBlockSize(size_t size) override { +13943: target_->SetPreallocationBlockSize(size); +13943: } +13943: +13943: void GetPreallocationStatus(size_t* block_size, +13943: size_t* last_allocated_block) override { +13943: target_->GetPreallocationStatus(block_size, last_allocated_block); +13943: } +13943: +13943: size_t GetUniqueId(char* id, size_t max_size) const override { +13943: return target_->GetUniqueId(id, max_size); +13943: } +13943: +13943: Status InvalidateCache(size_t offset, size_t length) override { +13943: return target_->InvalidateCache(offset, length); +13943: } +13943: +13943: Status RangeSync(uint64_t offset, uint64_t nbytes) override { +13943: return target_->RangeSync(offset, nbytes); +13943: } +13943: +13943: void PrepareWrite(size_t offset, size_t len) override { +13943: target_->PrepareWrite(offset, len); +13943: } +13943: +13943: Status Allocate(uint64_t offset, uint64_t len) override { +13943: return target_->Allocate(offset, len); +13943: } +13943: +13943: private: +13943: WritableFile* target_; +13943: }; +13943: +13943: class RandomRWFileWrapper : public RandomRWFile { +13943: public: +13943: explicit RandomRWFileWrapper(RandomRWFile* target) : target_(target) {} +13943: +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: Status Write(uint64_t offset, const Slice& data) override { +13943: return target_->Write(offset, data); +13943: } +13943: Status Read(uint64_t offset, size_t n, Slice* result, +13943: char* scratch) const override { +13943: return target_->Read(offset, n, result, scratch); +13943: } +13943: Status Flush() override { return target_->Flush(); } +13943: Status Sync() override { return target_->Sync(); } +13943: Status Fsync() override { return target_->Fsync(); } +13943: Status Close() override { return target_->Close(); } +13943: +13943: private: +13943: RandomRWFile* target_; +13943: }; +13943: +13943: class DirectoryWrapper : public Directory { +13943: public: +13943: explicit DirectoryWrapper(Directory* target) : target_(target) {} +13943: +13943: Status Fsync() override { return target_->Fsync(); } +13943: Status Close() override { return target_->Close(); } +13943: size_t GetUniqueId(char* id, size_t max_size) const override { +13943: return target_->GetUniqueId(id, max_size); +13943: } +13943: +13943: private: +13943: Directory* target_; +13943: }; +13943: +13943: class LoggerWrapper : public Logger { +13943: public: +13943: explicit LoggerWrapper(Logger* target) : target_(target) {} +13943: +13943: Status Close() override { return target_->Close(); } +13943: void LogHeader(const char* format, va_list ap) override { +13943: return target_->LogHeader(format, ap); +13943: } +13943: void Logv(const char* format, va_list ap) override { +13943: return target_->Logv(format, ap); +13943: } +13943: void Logv(const InfoLogLevel log_level, const char* format, +13943: va_list ap) override { +13943: return target_->Logv(log_level, format, ap); +13943: } +13943: size_t GetLogFileSize() const override { return target_->GetLogFileSize(); } +13943: void Flush() override { return target_->Flush(); } +13943: InfoLogLevel GetInfoLogLevel() const override { +13943: return target_->GetInfoLogLevel(); +13943: } +13943: void SetInfoLogLevel(const InfoLogLevel log_level) override { +13943: return target_->SetInfoLogLevel(log_level); +13943: } +13943: +13943: private: +13943: Logger* target_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: Env* NewMemEnv(Env* base_env); +13943: +13943: +13943: +13943: +13943: Env* NewTimedEnv(Env* base_env); +13943: +13943: +13943: +13943: +13943: Status NewEnvLogger(const std::string& fname, Env* env, +13943: std::shared_ptr* result); +13943: +13943: +13943: +13943: std::unique_ptr NewCompositeEnv(const std::shared_ptr& fs); +13943: +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +13943: +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" 2 +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +13943: namespace rocksdb { +13943: +13943: +13943: constexpr char kUnknownFileChecksum[] = ""; +13943: +13943: constexpr char kUnknownFileChecksumFuncName[] = "Unknown"; +13943: +13943: +13943: +13943: constexpr char kStandardDbFileChecksumFuncName[] = "FileChecksumCrc32c"; +13943: +13943: struct FileChecksumGenContext { +13943: std::string file_name; +13943: +13943: +13943: +13943: +13943: std::string requested_checksum_func_name; +13943: }; +13943: # 50 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +13943: class FileChecksumGenerator { +13943: public: +13943: virtual ~FileChecksumGenerator() {} +13943: +13943: +13943: +13943: +13943: virtual void Update(const char* data, size_t n) = 0; +13943: +13943: +13943: virtual void Finalize() = 0; +13943: +13943: +13943: +13943: virtual std::string GetChecksum() const = 0; +13943: +13943: +13943: virtual const char* Name() const = 0; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FileChecksumGenFactory : public Customizable { +13943: public: +13943: ~FileChecksumGenFactory() override {} +13943: static const char* Type() { return "FileChecksumGenFactory"; } +13943: static Status CreateFromString( +13943: const ConfigOptions& options, const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: +13943: virtual std::unique_ptr CreateFileChecksumGenerator( +13943: const FileChecksumGenContext& context) = 0; +13943: +13943: +13943: const char* Name() const override = 0; +13943: }; +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +13943: class FileChecksumList { +13943: public: +13943: virtual ~FileChecksumList() {} +13943: +13943: +13943: virtual void reset() = 0; +13943: +13943: +13943: virtual size_t size() const = 0; +13943: +13943: +13943: +13943: +13943: virtual Status GetAllFileChecksums( +13943: std::vector* file_numbers, std::vector* checksums, +13943: std::vector* checksum_func_names) = 0; +13943: +13943: +13943: +13943: virtual Status SearchOneFileChecksum(uint64_t file_number, +13943: std::string* checksum, +13943: std::string* checksum_func_name) = 0; +13943: +13943: +13943: virtual Status InsertOneFileChecksum( +13943: uint64_t file_number, const std::string& checksum, +13943: const std::string& checksum_func_name) = 0; +13943: +13943: +13943: virtual Status RemoveOneFileChecksum(uint64_t file_number) = 0; +13943: }; +13943: +13943: +13943: FileChecksumList* NewFileChecksumList(); +13943: # 143 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +13943: extern std::shared_ptr +13943: GetFileChecksumGenCrc32cFactory(); +13943: +13943: } +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_job_stats.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 8 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_job_stats.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: struct CompactionJobStats { +13943: CompactionJobStats() { Reset(); } +13943: void Reset(); +13943: +13943: void Add(const CompactionJobStats& stats); +13943: +13943: +13943: uint64_t elapsed_micros = 0; +13943: +13943: +13943: uint64_t cpu_micros = 0; +13943: +13943: +13943: +13943: bool has_num_input_records = false; +13943: +13943: uint64_t num_input_records = 0; +13943: +13943: uint64_t num_blobs_read = 0; +13943: +13943: size_t num_input_files = 0; +13943: +13943: size_t num_input_files_at_output_level = 0; +13943: +13943: +13943: size_t num_filtered_input_files = 0; +13943: +13943: +13943: size_t num_filtered_input_files_at_output_level = 0; +13943: +13943: +13943: uint64_t num_output_records = 0; +13943: +13943: size_t num_output_files = 0; +13943: +13943: size_t num_output_files_blob = 0; +13943: +13943: +13943: bool is_full_compaction = false; +13943: +13943: bool is_manual_compaction = false; +13943: +13943: bool is_remote_compaction = false; +13943: +13943: +13943: uint64_t total_input_bytes = 0; +13943: +13943: uint64_t total_blob_bytes_read = 0; +13943: +13943: uint64_t total_output_bytes = 0; +13943: +13943: uint64_t total_output_bytes_blob = 0; +13943: +13943: +13943: uint64_t total_skipped_input_bytes = 0; +13943: +13943: +13943: +13943: +13943: uint64_t num_records_replaced = 0; +13943: +13943: +13943: uint64_t total_input_raw_key_bytes = 0; +13943: +13943: uint64_t total_input_raw_value_bytes = 0; +13943: +13943: +13943: +13943: uint64_t num_input_deletion_records = 0; +13943: +13943: +13943: +13943: uint64_t num_expired_deletion_records = 0; +13943: +13943: +13943: +13943: uint64_t num_corrupt_keys = 0; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t file_write_nanos = 0; +13943: +13943: +13943: uint64_t file_range_sync_nanos = 0; +13943: +13943: +13943: uint64_t file_fsync_nanos = 0; +13943: +13943: +13943: uint64_t file_prepare_write_nanos = 0; +13943: +13943: +13943: +13943: static const size_t kMaxPrefixLength = 8; +13943: +13943: std::string smallest_output_key_prefix; +13943: std::string largest_output_key_prefix; +13943: +13943: +13943: uint64_t num_single_del_fallthru = 0; +13943: +13943: +13943: uint64_t num_single_del_mismatch = 0; +13943: +13943: +13943: }; +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 1 +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cstring" 1 3 +13943: # 39 "/usr/include/c++/14/cstring" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstring" 3 +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 43 "/usr/include/c++/14/cstring" 2 3 +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 2 +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class IOStatus : public Status { +13943: public: +13943: using Code = Status::Code; +13943: using SubCode = Status::SubCode; +13943: +13943: enum IOErrorScope : unsigned char { +13943: kIOErrorScopeFileSystem, +13943: kIOErrorScopeFile, +13943: kIOErrorScopeRange, +13943: kIOErrorScopeMax, +13943: }; +13943: +13943: +13943: IOStatus() : IOStatus(kOk, kNone) {} +13943: ~IOStatus() {} +13943: +13943: +13943: IOStatus(const IOStatus& s); +13943: IOStatus& operator=(const IOStatus& s); +13943: IOStatus(IOStatus&& s) noexcept; +13943: IOStatus& operator=(IOStatus&& s) noexcept; +13943: bool operator==(const IOStatus& rhs) const; +13943: bool operator!=(const IOStatus& rhs) const; +13943: +13943: void SetRetryable(bool retryable) { retryable_ = retryable; } +13943: void SetDataLoss(bool data_loss) { data_loss_ = data_loss; } +13943: void SetScope(IOErrorScope scope) { +13943: scope_ = static_cast(scope); +13943: } +13943: +13943: bool GetRetryable() const { return retryable_; } +13943: bool GetDataLoss() const { return data_loss_; } +13943: IOErrorScope GetScope() const { return static_cast(scope_); } +13943: +13943: +13943: static IOStatus OK() { return IOStatus(); } +13943: +13943: static IOStatus NotSupported(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kNotSupported, msg, msg2); +13943: } +13943: static IOStatus NotSupported(SubCode msg = kNone) { +13943: return IOStatus(kNotSupported, msg); +13943: } +13943: +13943: +13943: static IOStatus NotFound(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kNotFound, msg, msg2); +13943: } +13943: +13943: static IOStatus NotFound(SubCode msg = kNone) { +13943: return IOStatus(kNotFound, msg); +13943: } +13943: +13943: static IOStatus Corruption(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kCorruption, msg, msg2); +13943: } +13943: static IOStatus Corruption(SubCode msg = kNone) { +13943: return IOStatus(kCorruption, msg); +13943: } +13943: +13943: static IOStatus InvalidArgument(const Slice& msg, +13943: const Slice& msg2 = Slice()) { +13943: return IOStatus(kInvalidArgument, msg, msg2); +13943: } +13943: static IOStatus InvalidArgument(SubCode msg = kNone) { +13943: return IOStatus(kInvalidArgument, msg); +13943: } +13943: +13943: static IOStatus IOError(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kIOError, msg, msg2); +13943: } +13943: static IOStatus IOError(SubCode msg = kNone) { +13943: return IOStatus(kIOError, msg); +13943: } +13943: +13943: static IOStatus Busy(SubCode msg = kNone) { return IOStatus(kBusy, msg); } +13943: static IOStatus Busy(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kBusy, msg, msg2); +13943: } +13943: +13943: static IOStatus TimedOut(SubCode msg = kNone) { +13943: return IOStatus(kTimedOut, msg); +13943: } +13943: static IOStatus TimedOut(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kTimedOut, msg, msg2); +13943: } +13943: +13943: static IOStatus NoSpace() { return IOStatus(kIOError, kNoSpace); } +13943: static IOStatus NoSpace(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kIOError, kNoSpace, msg, msg2); +13943: } +13943: +13943: static IOStatus PathNotFound() { return IOStatus(kIOError, kPathNotFound); } +13943: static IOStatus PathNotFound(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kIOError, kPathNotFound, msg, msg2); +13943: } +13943: +13943: static IOStatus IOFenced() { return IOStatus(kIOError, kIOFenced); } +13943: static IOStatus IOFenced(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kIOError, kIOFenced, msg, msg2); +13943: } +13943: +13943: static IOStatus Aborted(SubCode msg = kNone) { +13943: return IOStatus(kAborted, msg); +13943: } +13943: static IOStatus Aborted(const Slice& msg, const Slice& msg2 = Slice()) { +13943: return IOStatus(kAborted, msg, msg2); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: private: +13943: friend IOStatus status_to_io_status(Status&&); +13943: +13943: explicit IOStatus(Code _code, SubCode _subcode = kNone) +13943: : Status(_code, _subcode, false, false, kIOErrorScopeFileSystem) {} +13943: +13943: IOStatus(Code _code, SubCode _subcode, const Slice& msg, const Slice& msg2); +13943: IOStatus(Code _code, const Slice& msg, const Slice& msg2) +13943: : IOStatus(_code, kNone, msg, msg2) {} +13943: }; +13943: +13943: inline IOStatus::IOStatus(Code _code, SubCode _subcode, const Slice& msg, +13943: const Slice& msg2) +13943: : Status(_code, _subcode, false, false, kIOErrorScopeFileSystem) { +13943: +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +13943: (static_cast ( +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +13943: code_ != kOk +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +13943: "code_ != kOk" +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +13943: ; +13943: +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +13943: (static_cast ( +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +13943: subcode_ != kMaxSubCode +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +13943: "subcode_ != kMaxSubCode" +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +13943: ; +13943: const size_t len1 = msg.size(); +13943: const size_t len2 = msg2.size(); +13943: const size_t size = len1 + (len2 ? (2 + len2) : 0); +13943: char* const result = new char[size + 1]; +13943: memcpy(result, msg.data(), len1); +13943: if (len2) { +13943: result[len1] = ':'; +13943: result[len1 + 1] = ' '; +13943: memcpy(result + len1 + 2, msg2.data(), len2); +13943: } +13943: result[size] = '\0'; +13943: state_.reset(result); +13943: } +13943: +13943: inline IOStatus::IOStatus(const IOStatus& s) : Status(s.code_, s.subcode_) { +13943: +13943: +13943: +13943: retryable_ = s.retryable_; +13943: data_loss_ = s.data_loss_; +13943: scope_ = s.scope_; +13943: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +13943: } +13943: inline IOStatus& IOStatus::operator=(const IOStatus& s) { +13943: +13943: +13943: if (this != &s) { +13943: +13943: +13943: +13943: +13943: code_ = s.code_; +13943: subcode_ = s.subcode_; +13943: retryable_ = s.retryable_; +13943: data_loss_ = s.data_loss_; +13943: scope_ = s.scope_; +13943: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +13943: } +13943: return *this; +13943: } +13943: +13943: inline IOStatus::IOStatus(IOStatus&& s) noexcept : IOStatus() { +13943: *this = std::move(s); +13943: } +13943: +13943: inline IOStatus& IOStatus::operator=(IOStatus&& s) noexcept { +13943: if (this != &s) { +13943: +13943: +13943: +13943: +13943: code_ = std::move(s.code_); +13943: s.code_ = kOk; +13943: subcode_ = std::move(s.subcode_); +13943: s.subcode_ = kNone; +13943: retryable_ = s.retryable_; +13943: data_loss_ = s.data_loss_; +13943: scope_ = s.scope_; +13943: s.scope_ = kIOErrorScopeFileSystem; +13943: state_ = std::move(s.state_); +13943: } +13943: return *this; +13943: } +13943: +13943: inline bool IOStatus::operator==(const IOStatus& rhs) const { +13943: +13943: +13943: +13943: +13943: return (code_ == rhs.code_); +13943: } +13943: +13943: inline bool IOStatus::operator!=(const IOStatus& rhs) const { +13943: +13943: +13943: +13943: +13943: return !(*this == rhs); +13943: } +13943: +13943: inline IOStatus status_to_io_status(Status&& status) { +13943: IOStatus io_s; +13943: Status& s = io_s; +13943: s = std::move(status); +13943: return io_s; +13943: } +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +13943: namespace rocksdb { +13943: +13943: class InternalTblPropColl; +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +13943: using UserCollectedProperties = std::map; +13943: +13943: +13943: struct TablePropertiesNames { +13943: static const std::string kDbId; +13943: static const std::string kDbSessionId; +13943: static const std::string kDbHostId; +13943: static const std::string kOriginalFileNumber; +13943: static const std::string kDataSize; +13943: static const std::string kIndexSize; +13943: static const std::string kIndexPartitions; +13943: static const std::string kTopLevelIndexSize; +13943: static const std::string kIndexKeyIsUserKey; +13943: static const std::string kIndexValueIsDeltaEncoded; +13943: static const std::string kFilterSize; +13943: static const std::string kRawKeySize; +13943: static const std::string kRawValueSize; +13943: static const std::string kNumDataBlocks; +13943: static const std::string kNumEntries; +13943: static const std::string kNumFilterEntries; +13943: static const std::string kDeletedKeys; +13943: static const std::string kMergeOperands; +13943: static const std::string kNumRangeDeletions; +13943: static const std::string kFormatVersion; +13943: static const std::string kFixedKeyLen; +13943: static const std::string kFilterPolicy; +13943: static const std::string kColumnFamilyName; +13943: static const std::string kColumnFamilyId; +13943: static const std::string kComparator; +13943: static const std::string kMergeOperator; +13943: static const std::string kPrefixExtractorName; +13943: static const std::string kPropertyCollectors; +13943: static const std::string kCompression; +13943: static const std::string kCompressionOptions; +13943: static const std::string kCreationTime; +13943: static const std::string kOldestKeyTime; +13943: static const std::string kNewestKeyTime; +13943: static const std::string kFileCreationTime; +13943: static const std::string kSlowCompressionEstimatedDataSize; +13943: static const std::string kFastCompressionEstimatedDataSize; +13943: static const std::string kSequenceNumberTimeMapping; +13943: static const std::string kTailStartOffset; +13943: static const std::string kUserDefinedTimestampsPersisted; +13943: static const std::string kKeyLargestSeqno; +13943: }; +13943: # 94 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +13943: class TablePropertiesCollector { +13943: public: +13943: virtual ~TablePropertiesCollector() {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Add(const Slice& , const Slice& ) { +13943: return Status::InvalidArgument( +13943: "TablePropertiesCollector::Add() deprecated."); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual Status AddUserKey(const Slice& key, const Slice& value, +13943: EntryType , SequenceNumber , +13943: uint64_t ) { +13943: +13943: return Add(key, value); +13943: } +13943: +13943: +13943: virtual void BlockAdd(uint64_t , +13943: uint64_t , +13943: uint64_t ) { +13943: +13943: return; +13943: } +13943: # 135 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +13943: virtual Status Finish(UserCollectedProperties* properties) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual UserCollectedProperties GetReadableProperties() const = 0; +13943: +13943: +13943: virtual const char* Name() const = 0; +13943: +13943: +13943: virtual bool NeedCompact() const { return false; } +13943: +13943: +13943: virtual InternalTblPropColl* AsInternal() { return nullptr; } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class TablePropertiesCollectorFactory : public Customizable { +13943: public: +13943: struct Context { +13943: uint32_t column_family_id; +13943: +13943: +13943: int level_at_creation = kUnknownLevelAtCreation; +13943: int num_levels = kUnknownNumLevels; +13943: +13943: +13943: +13943: +13943: SequenceNumber last_level_inclusive_max_seqno_threshold; +13943: static const uint32_t kUnknownColumnFamily; +13943: static const int kUnknownLevelAtCreation = -1; +13943: static const int kUnknownNumLevels = -1; +13943: +13943: Context() {} +13943: +13943: Context(uint32_t _column_family_id, int _level_at_creation, int _num_levels, +13943: SequenceNumber _last_level_inclusive_max_seqno_threshold) +13943: : column_family_id(_column_family_id), +13943: level_at_creation(_level_at_creation), +13943: num_levels(_num_levels), +13943: last_level_inclusive_max_seqno_threshold( +13943: _last_level_inclusive_max_seqno_threshold) {} +13943: }; +13943: +13943: ~TablePropertiesCollectorFactory() override {} +13943: static const char* Type() { return "TablePropertiesCollectorFactory"; } +13943: static Status CreateFromString( +13943: const ConfigOptions& options, const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual TablePropertiesCollector* CreateTablePropertiesCollector( +13943: TablePropertiesCollectorFactory::Context context) = 0; +13943: +13943: +13943: const char* Name() const override = 0; +13943: +13943: +13943: +13943: +13943: virtual std::string ToString() const { return Name(); } +13943: }; +13943: +13943: +13943: +13943: struct TableProperties { +13943: public: +13943: +13943: +13943: uint64_t orig_file_number = 0; +13943: +13943: uint64_t data_size = 0; +13943: +13943: uint64_t index_size = 0; +13943: +13943: uint64_t index_partitions = 0; +13943: +13943: uint64_t top_level_index_size = 0; +13943: +13943: +13943: uint64_t index_key_is_user_key = 0; +13943: +13943: uint64_t index_value_is_delta_encoded = 0; +13943: +13943: uint64_t filter_size = 0; +13943: +13943: uint64_t raw_key_size = 0; +13943: +13943: uint64_t raw_value_size = 0; +13943: +13943: uint64_t num_data_blocks = 0; +13943: +13943: uint64_t num_entries = 0; +13943: +13943: uint64_t num_filter_entries = 0; +13943: +13943: uint64_t num_deletions = 0; +13943: +13943: uint64_t num_merge_operands = 0; +13943: +13943: uint64_t num_range_deletions = 0; +13943: +13943: uint64_t format_version = 0; +13943: +13943: uint64_t fixed_key_len = 0; +13943: +13943: +13943: uint64_t column_family_id = rocksdb:: +13943: TablePropertiesCollectorFactory::Context::kUnknownColumnFamily; +13943: # 270 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +13943: uint64_t creation_time = 0; +13943: +13943: +13943: uint64_t oldest_key_time = 0; +13943: +13943: uint64_t newest_key_time = 0; +13943: +13943: uint64_t file_creation_time = 0; +13943: +13943: +13943: +13943: uint64_t slow_compression_estimated_data_size = 0; +13943: +13943: +13943: +13943: uint64_t fast_compression_estimated_data_size = 0; +13943: +13943: +13943: +13943: uint64_t external_sst_file_global_seqno_offset = 0; +13943: +13943: +13943: +13943: uint64_t tail_start_offset = 0; +13943: +13943: +13943: +13943: +13943: uint64_t user_defined_timestamps_persisted = 1; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t key_largest_seqno = +13943: # 304 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" 3 4 +13943: (18446744073709551615ULL) +13943: # 304 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +13943: ; +13943: +13943: +13943: +13943: +13943: std::string db_id; +13943: +13943: +13943: +13943: +13943: +13943: std::string db_session_id; +13943: +13943: +13943: +13943: +13943: +13943: std::string db_host_id; +13943: +13943: +13943: +13943: std::string column_family_name; +13943: +13943: +13943: +13943: std::string filter_policy_name; +13943: +13943: +13943: std::string comparator_name; +13943: +13943: +13943: +13943: std::string merge_operator_name; +13943: +13943: +13943: +13943: std::string prefix_extractor_name; +13943: +13943: +13943: +13943: +13943: std::string property_collectors_names; +13943: +13943: +13943: std::string compression_name; +13943: +13943: +13943: std::string compression_options; +13943: +13943: +13943: std::string seqno_to_time_mapping; +13943: +13943: +13943: UserCollectedProperties user_collected_properties; +13943: UserCollectedProperties readable_properties; +13943: +13943: +13943: +13943: std::string ToString(const std::string& prop_delim = "; ", +13943: const std::string& kv_delim = "=") const; +13943: +13943: +13943: +13943: void Add(const TableProperties& tp); +13943: +13943: +13943: +13943: +13943: std::map GetAggregatablePropertiesAsMap() const; +13943: +13943: +13943: +13943: std::size_t ApproximateMemoryUsage() const; +13943: +13943: +13943: Status Serialize(const ConfigOptions& opts, std::string* output) const; +13943: static Status Parse(const ConfigOptions& opts, const std::string& serialized, +13943: TableProperties* table_properties); +13943: bool AreEqual(const ConfigOptions& opts, +13943: const TableProperties* other_table_properties, +13943: std::string* mismatch) const; +13943: }; +13943: # 395 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +13943: uint64_t GetDeletedKeys(const UserCollectedProperties& props); +13943: uint64_t GetMergeOperands(const UserCollectedProperties& props, +13943: bool* property_present); +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: using TablePropertiesCollection = +13943: std::unordered_map>; +13943: +13943: class DB; +13943: class ColumnFamilyHandle; +13943: class Status; +13943: struct CompactionJobStats; +13943: +13943: struct FileCreationBriefInfo { +13943: FileCreationBriefInfo() = default; +13943: FileCreationBriefInfo(const std::string& _db_name, +13943: const std::string& _cf_name, +13943: const std::string& _file_path, int _job_id) +13943: : db_name(_db_name), +13943: cf_name(_cf_name), +13943: file_path(_file_path), +13943: job_id(_job_id) {} +13943: +13943: std::string db_name; +13943: +13943: std::string cf_name; +13943: +13943: std::string file_path; +13943: +13943: +13943: int job_id = 0; +13943: }; +13943: +13943: struct TableFileCreationBriefInfo : public FileCreationBriefInfo { +13943: +13943: TableFileCreationReason reason; +13943: }; +13943: +13943: struct TableFileCreationInfo : public TableFileCreationBriefInfo { +13943: TableFileCreationInfo() = default; +13943: explicit TableFileCreationInfo(TableProperties&& prop) +13943: : table_properties(prop) {} +13943: +13943: uint64_t file_size; +13943: +13943: TableProperties table_properties; +13943: +13943: Status status; +13943: +13943: std::string file_checksum; +13943: +13943: std::string file_checksum_func_name; +13943: }; +13943: +13943: struct BlobFileCreationBriefInfo : public FileCreationBriefInfo { +13943: BlobFileCreationBriefInfo(const std::string& _db_name, +13943: const std::string& _cf_name, +13943: const std::string& _file_path, int _job_id, +13943: BlobFileCreationReason _reason) +13943: : FileCreationBriefInfo(_db_name, _cf_name, _file_path, _job_id), +13943: reason(_reason) {} +13943: +13943: BlobFileCreationReason reason; +13943: }; +13943: +13943: struct BlobFileCreationInfo : public BlobFileCreationBriefInfo { +13943: BlobFileCreationInfo(const std::string& _db_name, const std::string& _cf_name, +13943: const std::string& _file_path, int _job_id, +13943: BlobFileCreationReason _reason, +13943: uint64_t _total_blob_count, uint64_t _total_blob_bytes, +13943: Status _status, const std::string& _file_checksum, +13943: const std::string& _file_checksum_func_name) +13943: : BlobFileCreationBriefInfo(_db_name, _cf_name, _file_path, _job_id, +13943: _reason), +13943: total_blob_count(_total_blob_count), +13943: total_blob_bytes(_total_blob_bytes), +13943: status(_status), +13943: file_checksum(_file_checksum), +13943: file_checksum_func_name(_file_checksum_func_name) {} +13943: +13943: +13943: uint64_t total_blob_count; +13943: +13943: uint64_t total_blob_bytes; +13943: +13943: Status status; +13943: +13943: std::string file_checksum; +13943: +13943: std::string file_checksum_func_name; +13943: }; +13943: +13943: enum class CompactionReason : int { +13943: kUnknown = 0, +13943: +13943: kLevelL0FilesNum, +13943: +13943: kLevelMaxLevelSize, +13943: +13943: kUniversalSizeAmplification, +13943: +13943: kUniversalSizeRatio, +13943: +13943: kUniversalSortedRunNum, +13943: +13943: kFIFOMaxSize, +13943: +13943: kFIFOReduceNumFiles, +13943: +13943: kFIFOTtl, +13943: +13943: kManualCompaction, +13943: +13943: kFilesMarkedForCompaction, +13943: +13943: +13943: kBottommostFiles, +13943: +13943: kTtl, +13943: +13943: +13943: kFlush, +13943: +13943: +13943: +13943: +13943: kExternalSstIngestion, +13943: +13943: kPeriodicCompaction, +13943: +13943: kChangeTemperature, +13943: +13943: kForcedBlobGC, +13943: +13943: +13943: kRoundRobinTtl, +13943: +13943: +13943: kRefitLevel, +13943: +13943: kNumOfReasons, +13943: }; +13943: +13943: const char* GetCompactionReasonString(CompactionReason compaction_reason); +13943: +13943: +13943: enum class FlushReason : int { +13943: kOthers = 0x00, +13943: kGetLiveFiles = 0x01, +13943: kShutDown = 0x02, +13943: kExternalFileIngestion = 0x03, +13943: kManualCompaction = 0x04, +13943: kWriteBufferManager = 0x05, +13943: kWriteBufferFull = 0x06, +13943: kTest = 0x07, +13943: kDeleteFiles = 0x08, +13943: kAutoCompaction = 0x09, +13943: kManualFlush = 0x0a, +13943: kErrorRecovery = 0xb, +13943: +13943: +13943: kErrorRecoveryRetryFlush = 0xc, +13943: kWalFull = 0xd, +13943: +13943: kCatchUpAfterErrorRecovery = 0xe, +13943: }; +13943: +13943: const char* GetFlushReasonString(FlushReason flush_reason); +13943: +13943: +13943: +13943: +13943: +13943: enum class BackgroundErrorReason { +13943: kFlush, +13943: kCompaction, +13943: kWriteCallback, +13943: kMemTable, +13943: kManifestWrite, +13943: kFlushNoWAL, +13943: kManifestWriteNoWAL, +13943: }; +13943: +13943: struct WriteStallInfo { +13943: +13943: std::string cf_name; +13943: +13943: struct { +13943: WriteStallCondition cur; +13943: WriteStallCondition prev; +13943: } condition; +13943: }; +13943: +13943: +13943: struct FileDeletionInfo { +13943: FileDeletionInfo() = default; +13943: +13943: FileDeletionInfo(const std::string& _db_name, const std::string& _file_path, +13943: int _job_id, Status _status) +13943: : db_name(_db_name), +13943: file_path(_file_path), +13943: job_id(_job_id), +13943: status(_status) {} +13943: +13943: std::string db_name; +13943: +13943: std::string file_path; +13943: +13943: int job_id = 0; +13943: +13943: Status status; +13943: }; +13943: +13943: struct TableFileDeletionInfo : public FileDeletionInfo {}; +13943: +13943: struct BlobFileDeletionInfo : public FileDeletionInfo { +13943: BlobFileDeletionInfo(const std::string& _db_name, +13943: const std::string& _file_path, int _job_id, +13943: Status _status) +13943: : FileDeletionInfo(_db_name, _file_path, _job_id, _status) {} +13943: }; +13943: +13943: enum class FileOperationType { +13943: kRead, +13943: kWrite, +13943: kTruncate, +13943: kClose, +13943: kFlush, +13943: kSync, +13943: kFsync, +13943: kRangeSync, +13943: kAppend, +13943: kPositionedAppend, +13943: kOpen, +13943: kVerify +13943: }; +13943: +13943: struct FileOperationInfo { +13943: using Duration = std::chrono::nanoseconds; +13943: using SteadyTimePoint = +13943: std::chrono::time_point; +13943: using SystemTimePoint = +13943: std::chrono::time_point; +13943: using StartTimePoint = std::pair; +13943: using FinishTimePoint = SteadyTimePoint; +13943: +13943: FileOperationType type; +13943: const std::string& path; +13943: +13943: +13943: Temperature temperature; +13943: uint64_t offset; +13943: size_t length; +13943: const Duration duration; +13943: const SystemTimePoint& start_ts; +13943: Status status; +13943: +13943: FileOperationInfo(const FileOperationType _type, const std::string& _path, +13943: const StartTimePoint& _start_ts, +13943: const FinishTimePoint& _finish_ts, const Status& _status, +13943: const Temperature _temperature = Temperature::kUnknown) +13943: : type(_type), +13943: path(_path), +13943: temperature(_temperature), +13943: duration(std::chrono::duration_cast( +13943: _finish_ts - _start_ts.second)), +13943: start_ts(_start_ts.first), +13943: status(_status) {} +13943: static StartTimePoint StartNow() { +13943: return std::make_pair( +13943: std::chrono::system_clock::now(), std::chrono::steady_clock::now()); +13943: } +13943: static FinishTimePoint FinishNow() { +13943: return std::chrono::steady_clock::now(); +13943: } +13943: }; +13943: +13943: struct BlobFileInfo { +13943: BlobFileInfo(const std::string& _blob_file_path, +13943: const uint64_t _blob_file_number) +13943: : blob_file_path(_blob_file_path), blob_file_number(_blob_file_number) {} +13943: +13943: std::string blob_file_path; +13943: uint64_t blob_file_number; +13943: }; +13943: +13943: struct BlobFileAdditionInfo : public BlobFileInfo { +13943: BlobFileAdditionInfo(const std::string& _blob_file_path, +13943: const uint64_t _blob_file_number, +13943: const uint64_t _total_blob_count, +13943: const uint64_t _total_blob_bytes) +13943: : BlobFileInfo(_blob_file_path, _blob_file_number), +13943: total_blob_count(_total_blob_count), +13943: total_blob_bytes(_total_blob_bytes) {} +13943: uint64_t total_blob_count; +13943: uint64_t total_blob_bytes; +13943: }; +13943: +13943: struct BlobFileGarbageInfo : public BlobFileInfo { +13943: BlobFileGarbageInfo(const std::string& _blob_file_path, +13943: const uint64_t _blob_file_number, +13943: const uint64_t _garbage_blob_count, +13943: const uint64_t _garbage_blob_bytes) +13943: : BlobFileInfo(_blob_file_path, _blob_file_number), +13943: garbage_blob_count(_garbage_blob_count), +13943: garbage_blob_bytes(_garbage_blob_bytes) {} +13943: uint64_t garbage_blob_count; +13943: uint64_t garbage_blob_bytes; +13943: }; +13943: +13943: struct ManualFlushInfo { +13943: +13943: uint32_t cf_id; +13943: +13943: std::string cf_name; +13943: +13943: FlushReason flush_reason; +13943: }; +13943: +13943: struct FlushJobInfo { +13943: +13943: uint32_t cf_id; +13943: +13943: std::string cf_name; +13943: +13943: std::string file_path; +13943: +13943: uint64_t file_number; +13943: +13943: uint64_t oldest_blob_file_number; +13943: +13943: uint64_t thread_id; +13943: +13943: int job_id; +13943: +13943: +13943: +13943: +13943: bool triggered_writes_slowdown; +13943: +13943: +13943: +13943: +13943: bool triggered_writes_stop; +13943: +13943: SequenceNumber smallest_seqno; +13943: +13943: SequenceNumber largest_seqno; +13943: +13943: TableProperties table_properties; +13943: +13943: FlushReason flush_reason; +13943: +13943: +13943: CompressionType blob_compression_type; +13943: +13943: +13943: std::vector blob_file_addition_infos; +13943: }; +13943: +13943: struct CompactionFileInfo { +13943: +13943: int level; +13943: +13943: +13943: uint64_t file_number; +13943: +13943: +13943: uint64_t oldest_blob_file_number; +13943: }; +13943: +13943: struct SubcompactionJobInfo { +13943: ~SubcompactionJobInfo() { status.PermitUncheckedError(); } +13943: +13943: uint32_t cf_id; +13943: +13943: std::string cf_name; +13943: +13943: Status status; +13943: +13943: uint64_t thread_id; +13943: +13943: int job_id; +13943: +13943: +13943: +13943: +13943: +13943: int subcompaction_job_id; +13943: +13943: int base_input_level; +13943: +13943: int output_level; +13943: +13943: +13943: CompactionReason compaction_reason; +13943: +13943: +13943: CompressionType compression; +13943: +13943: +13943: CompactionJobStats stats; +13943: +13943: +13943: CompressionType blob_compression_type; +13943: }; +13943: +13943: struct CompactionJobInfo { +13943: ~CompactionJobInfo() { status.PermitUncheckedError(); } +13943: +13943: uint32_t cf_id; +13943: +13943: std::string cf_name; +13943: +13943: Status status; +13943: +13943: uint64_t thread_id; +13943: +13943: int job_id; +13943: +13943: +13943: int base_input_level; +13943: +13943: int output_level; +13943: # 453 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: std::vector input_files; +13943: +13943: +13943: std::vector input_file_infos; +13943: +13943: +13943: std::vector output_files; +13943: +13943: +13943: std::vector output_file_infos; +13943: +13943: +13943: +13943: TablePropertiesCollection table_properties; +13943: +13943: +13943: CompactionReason compaction_reason; +13943: +13943: +13943: CompressionType compression; +13943: +13943: +13943: CompactionJobStats stats; +13943: +13943: +13943: CompressionType blob_compression_type; +13943: +13943: +13943: +13943: std::vector blob_file_addition_infos; +13943: +13943: +13943: +13943: std::vector blob_file_garbage_infos; +13943: }; +13943: +13943: struct MemTableInfo { +13943: +13943: std::string cf_name; +13943: +13943: +13943: SequenceNumber first_seqno; +13943: +13943: +13943: +13943: +13943: SequenceNumber earliest_seqno; +13943: +13943: uint64_t num_entries; +13943: +13943: uint64_t num_deletes; +13943: +13943: +13943: +13943: std::string newest_udt; +13943: }; +13943: +13943: struct ExternalFileIngestionInfo { +13943: +13943: std::string cf_name; +13943: +13943: std::string external_file_path; +13943: +13943: std::string internal_file_path; +13943: +13943: SequenceNumber global_seqno; +13943: +13943: TableProperties table_properties; +13943: }; +13943: +13943: +13943: struct BackgroundErrorRecoveryInfo { +13943: +13943: Status old_bg_error; +13943: +13943: +13943: +13943: Status new_bg_error; +13943: }; +13943: +13943: struct IOErrorInfo { +13943: IOErrorInfo(const IOStatus& _io_status, FileOperationType _operation, +13943: const std::string& _file_path, size_t _length, uint64_t _offset) +13943: : io_status(_io_status), +13943: operation(_operation), +13943: file_path(_file_path), +13943: length(_length), +13943: offset(_offset) {} +13943: +13943: IOStatus io_status; +13943: FileOperationType operation; +13943: std::string file_path; +13943: size_t length; +13943: uint64_t offset; +13943: }; +13943: # 580 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: class EventListener : public Customizable { +13943: public: +13943: static const char* Type() { return "EventListener"; } +13943: static Status CreateFromString(const ConfigOptions& options, +13943: const std::string& id, +13943: std::shared_ptr* result); +13943: const char* Name() const override { +13943: +13943: +13943: return ""; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnFlushCompleted(DB* , +13943: const FlushJobInfo& ) {} +13943: # 608 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnFlushBegin(DB* , +13943: const FlushJobInfo& ) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnManualFlushScheduled( +13943: DB* , const std::vector& ) {} +13943: # 630 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnTableFileDeleted(const TableFileDeletionInfo& ) {} +13943: # 639 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnCompactionBegin(DB* , const CompactionJobInfo& ) {} +13943: # 654 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnCompactionCompleted(DB* , +13943: const CompactionJobInfo& ) {} +13943: # 674 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnSubcompactionBegin(const SubcompactionJobInfo& ) {} +13943: # 692 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnSubcompactionCompleted(const SubcompactionJobInfo& ) {} +13943: # 709 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnTableFileCreated(const TableFileCreationInfo& ) {} +13943: # 718 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnTableFileCreationStarted( +13943: const TableFileCreationBriefInfo& ) {} +13943: # 731 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnMemTableSealed(const MemTableInfo& ) {} +13943: # 741 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnColumnFamilyHandleDeletionStarted( +13943: ColumnFamilyHandle* ) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnExternalFileIngested( +13943: DB* , const ExternalFileIngestionInfo& ) {} +13943: # 764 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnBackgroundError(BackgroundErrorReason , +13943: Status* ) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnStallConditionsChanged(const WriteStallInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnFileReadFinish(const FileOperationInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnFileWriteFinish(const FileOperationInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnFileFlushFinish(const FileOperationInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnFileSyncFinish(const FileOperationInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnFileRangeSyncFinish(const FileOperationInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnFileTruncateFinish(const FileOperationInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnFileCloseFinish(const FileOperationInfo& ) {} +13943: +13943: +13943: +13943: virtual bool ShouldBeNotifiedOnFileIO() { return false; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnErrorRecoveryBegin(BackgroundErrorReason , +13943: Status , +13943: bool* ) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnErrorRecoveryCompleted(Status old_bg_error) { +13943: old_bg_error.PermitUncheckedError(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnErrorRecoveryEnd(const BackgroundErrorRecoveryInfo& ) { +13943: } +13943: # 840 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnBlobFileCreationStarted( +13943: const BlobFileCreationBriefInfo& ) {} +13943: # 851 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +13943: virtual void OnBlobFileCreated(const BlobFileCreationInfo& ) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void OnBlobFileDeleted(const BlobFileDeletionInfo& ) {} +13943: +13943: +13943: +13943: virtual void OnIOError(const IOErrorInfo& ) {} +13943: +13943: ~EventListener() override {} +13943: }; +13943: +13943: +13943: } +13943: # 29 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_partitioner.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_partitioner.h" +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: +13943: enum PartitionerResult : char { +13943: +13943: kNotRequired = 0x0, +13943: +13943: kRequired = 0x1 +13943: +13943: }; +13943: +13943: struct PartitionerRequest { +13943: PartitionerRequest(const Slice& prev_user_key_, +13943: const Slice& current_user_key_, +13943: uint64_t current_output_file_size_) +13943: : prev_user_key(&prev_user_key_), +13943: current_user_key(¤t_user_key_), +13943: current_output_file_size(current_output_file_size_) {} +13943: const Slice* prev_user_key; +13943: const Slice* current_user_key; +13943: uint64_t current_output_file_size; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class SstPartitioner { +13943: public: +13943: virtual ~SstPartitioner() {} +13943: +13943: +13943: virtual const char* Name() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual PartitionerResult ShouldPartition( +13943: const PartitionerRequest& request) = 0; +13943: +13943: +13943: +13943: virtual bool CanDoTrivialMove(const Slice& smallest_user_key, +13943: const Slice& largest_user_key) = 0; +13943: +13943: +13943: struct Context { +13943: +13943: bool is_full_compaction; +13943: +13943: +13943: bool is_manual_compaction; +13943: +13943: int output_level; +13943: +13943: Slice smallest_user_key; +13943: +13943: Slice largest_user_key; +13943: }; +13943: }; +13943: +13943: +13943: +13943: +13943: class SstPartitionerFactory : public Customizable { +13943: public: +13943: ~SstPartitionerFactory() override {} +13943: static const char* Type() { return "SstPartitionerFactory"; } +13943: static Status CreateFromString( +13943: const ConfigOptions& options, const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: virtual std::unique_ptr CreatePartitioner( +13943: const SstPartitioner::Context& context) const = 0; +13943: +13943: +13943: const char* Name() const override = 0; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: class SstPartitionerFixedPrefix : public SstPartitioner { +13943: public: +13943: explicit SstPartitionerFixedPrefix(size_t len) : len_(len) {} +13943: +13943: ~SstPartitionerFixedPrefix() override {} +13943: +13943: const char* Name() const override { return "SstPartitionerFixedPrefix"; } +13943: +13943: PartitionerResult ShouldPartition(const PartitionerRequest& request) override; +13943: +13943: bool CanDoTrivialMove(const Slice& smallest_user_key, +13943: const Slice& largest_user_key) override; +13943: +13943: private: +13943: size_t len_; +13943: }; +13943: +13943: +13943: +13943: +13943: class SstPartitionerFixedPrefixFactory : public SstPartitionerFactory { +13943: public: +13943: explicit SstPartitionerFixedPrefixFactory(size_t len); +13943: +13943: ~SstPartitionerFixedPrefixFactory() override {} +13943: +13943: static const char* kClassName() { return "SstPartitionerFixedPrefixFactory"; } +13943: const char* Name() const override { return kClassName(); } +13943: +13943: std::unique_ptr CreatePartitioner( +13943: const SstPartitioner::Context& ) const override; +13943: +13943: private: +13943: size_t len_; +13943: }; +13943: +13943: std::shared_ptr NewSstPartitionerFixedPrefixFactory( +13943: size_t prefix_len); +13943: +13943: } +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/version.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/version.h" +13943: namespace rocksdb { +13943: +13943: +13943: const std::unordered_map& GetRocksBuildProperties(); +13943: +13943: +13943: +13943: +13943: std::string GetRocksVersionAsString(bool with_patch = true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::string GetRocksBuildInfoAsString(const std::string& program, +13943: bool verbose = false); +13943: } +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 1 +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/condition_variable" 1 3 +13943: # 32 "/usr/include/c++/14/condition_variable" 3 +13943: +13943: # 33 "/usr/include/c++/14/condition_variable" 3 +13943: # 54 "/usr/include/c++/14/condition_variable" 3 +13943: +13943: # 54 "/usr/include/c++/14/condition_variable" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 67 "/usr/include/c++/14/condition_variable" 3 +13943: enum class cv_status { no_timeout, timeout }; +13943: +13943: +13943: class condition_variable +13943: { +13943: using steady_clock = chrono::steady_clock; +13943: using system_clock = chrono::system_clock; +13943: +13943: using __clock_t = steady_clock; +13943: +13943: +13943: +13943: +13943: __condvar _M_cond; +13943: +13943: public: +13943: typedef __gthread_cond_t* native_handle_type; +13943: +13943: condition_variable() noexcept; +13943: ~condition_variable() noexcept; +13943: +13943: condition_variable(const condition_variable&) = delete; +13943: condition_variable& operator=(const condition_variable&) = delete; +13943: +13943: void +13943: notify_one() noexcept; +13943: +13943: void +13943: notify_all() noexcept; +13943: +13943: void +13943: wait(unique_lock& __lock); +13943: +13943: template +13943: void +13943: wait(unique_lock& __lock, _Predicate __p) +13943: { +13943: while (!__p()) +13943: wait(__lock); +13943: } +13943: +13943: +13943: template +13943: cv_status +13943: wait_until(unique_lock& __lock, +13943: const chrono::time_point& __atime) +13943: { return __wait_until_impl(__lock, __atime); } +13943: +13943: +13943: template +13943: cv_status +13943: wait_until(unique_lock& __lock, +13943: const chrono::time_point& __atime) +13943: { return __wait_until_impl(__lock, __atime); } +13943: +13943: template +13943: cv_status +13943: wait_until(unique_lock& __lock, +13943: const chrono::time_point<_Clock, _Duration>& __atime) +13943: { +13943: +13943: +13943: +13943: using __s_dur = typename __clock_t::duration; +13943: const typename _Clock::time_point __c_entry = _Clock::now(); +13943: const __clock_t::time_point __s_entry = __clock_t::now(); +13943: const auto __delta = __atime - __c_entry; +13943: const auto __s_atime = __s_entry + +13943: chrono::__detail::ceil<__s_dur>(__delta); +13943: +13943: if (__wait_until_impl(__lock, __s_atime) == cv_status::no_timeout) +13943: return cv_status::no_timeout; +13943: +13943: +13943: +13943: if (_Clock::now() < __atime) +13943: return cv_status::no_timeout; +13943: return cv_status::timeout; +13943: } +13943: +13943: template +13943: bool +13943: wait_until(unique_lock& __lock, +13943: const chrono::time_point<_Clock, _Duration>& __atime, +13943: _Predicate __p) +13943: { +13943: while (!__p()) +13943: if (wait_until(__lock, __atime) == cv_status::timeout) +13943: return __p(); +13943: return true; +13943: } +13943: +13943: template +13943: cv_status +13943: wait_for(unique_lock& __lock, +13943: const chrono::duration<_Rep, _Period>& __rtime) +13943: { +13943: using __dur = typename steady_clock::duration; +13943: return wait_until(__lock, +13943: steady_clock::now() + +13943: chrono::__detail::ceil<__dur>(__rtime)); +13943: } +13943: +13943: template +13943: bool +13943: wait_for(unique_lock& __lock, +13943: const chrono::duration<_Rep, _Period>& __rtime, +13943: _Predicate __p) +13943: { +13943: using __dur = typename steady_clock::duration; +13943: return wait_until(__lock, +13943: steady_clock::now() + +13943: chrono::__detail::ceil<__dur>(__rtime), +13943: std::move(__p)); +13943: } +13943: +13943: native_handle_type +13943: native_handle() +13943: { return _M_cond.native_handle(); } +13943: +13943: private: +13943: +13943: template +13943: cv_status +13943: __wait_until_impl(unique_lock& __lock, +13943: const chrono::time_point& __atime) +13943: { +13943: auto __s = chrono::time_point_cast(__atime); +13943: auto __ns = chrono::duration_cast(__atime - __s); +13943: +13943: __gthread_time_t __ts = +13943: { +13943: static_cast(__s.time_since_epoch().count()), +13943: static_cast(__ns.count()) +13943: }; +13943: +13943: _M_cond.wait_until(*__lock.mutex(), 1, __ts); +13943: +13943: return (steady_clock::now() < __atime +13943: ? cv_status::no_timeout : cv_status::timeout); +13943: } +13943: +13943: +13943: template +13943: cv_status +13943: __wait_until_impl(unique_lock& __lock, +13943: const chrono::time_point& __atime) +13943: { +13943: auto __s = chrono::time_point_cast(__atime); +13943: auto __ns = chrono::duration_cast(__atime - __s); +13943: +13943: __gthread_time_t __ts = +13943: { +13943: static_cast(__s.time_since_epoch().count()), +13943: static_cast(__ns.count()) +13943: }; +13943: +13943: _M_cond.wait_until(*__lock.mutex(), __ts); +13943: +13943: return (system_clock::now() < __atime +13943: ? cv_status::no_timeout : cv_status::timeout); +13943: } +13943: }; +13943: +13943: void +13943: notify_all_at_thread_exit(condition_variable&, unique_lock); +13943: +13943: struct __at_thread_exit_elt +13943: { +13943: __at_thread_exit_elt* _M_next; +13943: void (*_M_cb)(void*); +13943: }; +13943: +13943: inline namespace _V2 { +13943: +13943: +13943: +13943: class condition_variable_any +13943: { +13943: +13943: using __clock_t = chrono::steady_clock; +13943: +13943: +13943: +13943: condition_variable _M_cond; +13943: shared_ptr _M_mutex; +13943: +13943: +13943: template +13943: struct _Unlock +13943: { +13943: explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); } +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: ~_Unlock() noexcept(false) +13943: { +13943: if (uncaught_exception()) +13943: { +13943: try +13943: { _M_lock.lock(); } +13943: catch(const __cxxabiv1::__forced_unwind&) +13943: { throw; } +13943: catch(...) +13943: { } +13943: } +13943: else +13943: _M_lock.lock(); +13943: } +13943: #pragma GCC diagnostic pop +13943: +13943: _Unlock(const _Unlock&) = delete; +13943: _Unlock& operator=(const _Unlock&) = delete; +13943: +13943: _Lock& _M_lock; +13943: }; +13943: +13943: public: +13943: condition_variable_any() : _M_mutex(std::make_shared()) { } +13943: ~condition_variable_any() = default; +13943: +13943: condition_variable_any(const condition_variable_any&) = delete; +13943: condition_variable_any& operator=(const condition_variable_any&) = delete; +13943: +13943: void +13943: notify_one() noexcept +13943: { +13943: lock_guard __lock(*_M_mutex); +13943: _M_cond.notify_one(); +13943: } +13943: +13943: void +13943: notify_all() noexcept +13943: { +13943: lock_guard __lock(*_M_mutex); +13943: _M_cond.notify_all(); +13943: } +13943: +13943: template +13943: void +13943: wait(_Lock& __lock) +13943: { +13943: shared_ptr __mutex = _M_mutex; +13943: unique_lock __my_lock(*__mutex); +13943: _Unlock<_Lock> __unlock(__lock); +13943: +13943: +13943: unique_lock __my_lock2(std::move(__my_lock)); +13943: _M_cond.wait(__my_lock2); +13943: } +13943: +13943: +13943: template +13943: void +13943: wait(_Lock& __lock, _Predicate __p) +13943: { +13943: while (!__p()) +13943: wait(__lock); +13943: } +13943: +13943: template +13943: cv_status +13943: wait_until(_Lock& __lock, +13943: const chrono::time_point<_Clock, _Duration>& __atime) +13943: { +13943: shared_ptr __mutex = _M_mutex; +13943: unique_lock __my_lock(*__mutex); +13943: _Unlock<_Lock> __unlock(__lock); +13943: +13943: +13943: unique_lock __my_lock2(std::move(__my_lock)); +13943: return _M_cond.wait_until(__my_lock2, __atime); +13943: } +13943: +13943: template +13943: bool +13943: wait_until(_Lock& __lock, +13943: const chrono::time_point<_Clock, _Duration>& __atime, +13943: _Predicate __p) +13943: { +13943: while (!__p()) +13943: if (wait_until(__lock, __atime) == cv_status::timeout) +13943: return __p(); +13943: return true; +13943: } +13943: +13943: template +13943: cv_status +13943: wait_for(_Lock& __lock, const chrono::duration<_Rep, _Period>& __rtime) +13943: { return wait_until(__lock, __clock_t::now() + __rtime); } +13943: +13943: template +13943: bool +13943: wait_for(_Lock& __lock, +13943: const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p) +13943: { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); } +13943: # 443 "/usr/include/c++/14/condition_variable" 3 +13943: }; +13943: +13943: } +13943: +13943: +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 2 +13943: +13943: # 1 "/usr/include/c++/14/list" 1 3 +13943: # 58 "/usr/include/c++/14/list" 3 +13943: +13943: # 59 "/usr/include/c++/14/list" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_list.h" 1 3 +13943: # 68 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: namespace __detail +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct _List_node_base +13943: { +13943: _List_node_base* _M_next; +13943: _List_node_base* _M_prev; +13943: +13943: static void +13943: swap(_List_node_base& __x, _List_node_base& __y) noexcept; +13943: +13943: void +13943: _M_transfer(_List_node_base* const __first, +13943: _List_node_base* const __last) noexcept; +13943: +13943: void +13943: _M_reverse() noexcept; +13943: +13943: void +13943: _M_hook(_List_node_base* const __position) noexcept; +13943: +13943: void +13943: _M_unhook() noexcept; +13943: }; +13943: +13943: +13943: struct _List_node_header : public _List_node_base +13943: { +13943: +13943: std::size_t _M_size; +13943: +13943: +13943: _List_node_header() noexcept +13943: { _M_init(); } +13943: +13943: +13943: _List_node_header(_List_node_header&& __x) noexcept +13943: : _List_node_base{ __x._M_next, __x._M_prev } +13943: +13943: , _M_size(__x._M_size) +13943: +13943: { +13943: if (__x._M_base()->_M_next == __x._M_base()) +13943: this->_M_next = this->_M_prev = this; +13943: else +13943: { +13943: this->_M_next->_M_prev = this->_M_prev->_M_next = this->_M_base(); +13943: __x._M_init(); +13943: } +13943: } +13943: +13943: void +13943: _M_move_nodes(_List_node_header&& __x) +13943: { +13943: _List_node_base* const __xnode = __x._M_base(); +13943: if (__xnode->_M_next == __xnode) +13943: _M_init(); +13943: else +13943: { +13943: _List_node_base* const __node = this->_M_base(); +13943: __node->_M_next = __xnode->_M_next; +13943: __node->_M_prev = __xnode->_M_prev; +13943: __node->_M_next->_M_prev = __node->_M_prev->_M_next = __node; +13943: +13943: _M_size = __x._M_size; +13943: +13943: __x._M_init(); +13943: } +13943: } +13943: +13943: +13943: void +13943: _M_init() noexcept +13943: { +13943: this->_M_next = this->_M_prev = this; +13943: +13943: this->_M_size = 0; +13943: +13943: } +13943: +13943: private: +13943: _List_node_base* _M_base() { return this; } +13943: }; +13943: +13943: +13943: struct _Scratch_list : _List_node_base +13943: { +13943: _Scratch_list() { _M_next = _M_prev = this; } +13943: +13943: bool empty() const { return _M_next == this; } +13943: +13943: void swap(_List_node_base& __l) { _List_node_base::swap(*this, __l); } +13943: +13943: template +13943: struct _Ptr_cmp +13943: { +13943: _Cmp _M_cmp; +13943: +13943: bool +13943: operator()(__detail::_List_node_base* __lhs, +13943: __detail::_List_node_base* __rhs) +13943: { return _M_cmp(*_Iter(__lhs), *_Iter(__rhs)); } +13943: }; +13943: +13943: template +13943: struct _Ptr_cmp<_Iter, void> +13943: { +13943: bool +13943: operator()(__detail::_List_node_base* __lhs, +13943: __detail::_List_node_base* __rhs) const +13943: { return *_Iter(__lhs) < *_Iter(__rhs); } +13943: }; +13943: +13943: +13943: template +13943: void +13943: merge(_List_node_base& __x, _Cmp __comp) +13943: { +13943: _List_node_base* __first1 = _M_next; +13943: _List_node_base* const __last1 = this; +13943: _List_node_base* __first2 = __x._M_next; +13943: _List_node_base* const __last2 = std::__addressof(__x); +13943: +13943: while (__first1 != __last1 && __first2 != __last2) +13943: { +13943: if (__comp(__first2, __first1)) +13943: { +13943: _List_node_base* __next = __first2->_M_next; +13943: __first1->_M_transfer(__first2, __next); +13943: __first2 = __next; +13943: } +13943: else +13943: __first1 = __first1->_M_next; +13943: } +13943: if (__first2 != __last2) +13943: this->_M_transfer(__first2, __last2); +13943: } +13943: +13943: +13943: void _M_take_one(_List_node_base* __i) +13943: { this->_M_transfer(__i, __i->_M_next); } +13943: +13943: +13943: void _M_put_all(_List_node_base* __i) +13943: { +13943: if (!empty()) +13943: __i->_M_transfer(_M_next, this); +13943: } +13943: }; +13943: +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: struct _List_node : public __detail::_List_node_base +13943: { +13943: +13943: __gnu_cxx::__aligned_membuf<_Tp> _M_storage; +13943: _Tp* _M_valptr() { return _M_storage._M_ptr(); } +13943: _Tp const* _M_valptr() const { return _M_storage._M_ptr(); } +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _List_iterator +13943: { +13943: typedef _List_iterator<_Tp> _Self; +13943: typedef _List_node<_Tp> _Node; +13943: +13943: typedef ptrdiff_t difference_type; +13943: typedef std::bidirectional_iterator_tag iterator_category; +13943: typedef _Tp value_type; +13943: typedef _Tp* pointer; +13943: typedef _Tp& reference; +13943: +13943: _List_iterator() noexcept +13943: : _M_node() { } +13943: +13943: explicit +13943: _List_iterator(__detail::_List_node_base* __x) noexcept +13943: : _M_node(__x) { } +13943: +13943: _Self +13943: _M_const_cast() const noexcept +13943: { return *this; } +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: operator*() const noexcept +13943: { return *static_cast<_Node*>(_M_node)->_M_valptr(); } +13943: +13943: [[__nodiscard__]] +13943: pointer +13943: operator->() const noexcept +13943: { return static_cast<_Node*>(_M_node)->_M_valptr(); } +13943: +13943: _Self& +13943: operator++() noexcept +13943: { +13943: _M_node = _M_node->_M_next; +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator++(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _M_node->_M_next; +13943: return __tmp; +13943: } +13943: +13943: _Self& +13943: operator--() noexcept +13943: { +13943: _M_node = _M_node->_M_prev; +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator--(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _M_node->_M_prev; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator==(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node == __y._M_node; } +13943: +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator!=(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node != __y._M_node; } +13943: +13943: +13943: +13943: __detail::_List_node_base* _M_node; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _List_const_iterator +13943: { +13943: typedef _List_const_iterator<_Tp> _Self; +13943: typedef const _List_node<_Tp> _Node; +13943: typedef _List_iterator<_Tp> iterator; +13943: +13943: typedef ptrdiff_t difference_type; +13943: typedef std::bidirectional_iterator_tag iterator_category; +13943: typedef _Tp value_type; +13943: typedef const _Tp* pointer; +13943: typedef const _Tp& reference; +13943: +13943: _List_const_iterator() noexcept +13943: : _M_node() { } +13943: +13943: explicit +13943: _List_const_iterator(const __detail::_List_node_base* __x) +13943: noexcept +13943: : _M_node(__x) { } +13943: +13943: _List_const_iterator(const iterator& __x) noexcept +13943: : _M_node(__x._M_node) { } +13943: +13943: iterator +13943: _M_const_cast() const noexcept +13943: { return iterator(const_cast<__detail::_List_node_base*>(_M_node)); } +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: operator*() const noexcept +13943: { return *static_cast<_Node*>(_M_node)->_M_valptr(); } +13943: +13943: [[__nodiscard__]] +13943: pointer +13943: operator->() const noexcept +13943: { return static_cast<_Node*>(_M_node)->_M_valptr(); } +13943: +13943: _Self& +13943: operator++() noexcept +13943: { +13943: _M_node = _M_node->_M_next; +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator++(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _M_node->_M_next; +13943: return __tmp; +13943: } +13943: +13943: _Self& +13943: operator--() noexcept +13943: { +13943: _M_node = _M_node->_M_prev; +13943: return *this; +13943: } +13943: +13943: _Self +13943: operator--(int) noexcept +13943: { +13943: _Self __tmp = *this; +13943: _M_node = _M_node->_M_prev; +13943: return __tmp; +13943: } +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator==(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node == __y._M_node; } +13943: +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator!=(const _Self& __x, const _Self& __y) noexcept +13943: { return __x._M_node != __y._M_node; } +13943: +13943: +13943: +13943: const __detail::_List_node_base* _M_node; +13943: }; +13943: +13943: namespace __cxx11 { +13943: +13943: template +13943: class _List_base +13943: { +13943: protected: +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_Tp>::other _Tp_alloc_type; +13943: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tp_alloc_traits; +13943: typedef typename _Tp_alloc_traits::template +13943: rebind<_List_node<_Tp> >::other _Node_alloc_type; +13943: typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; +13943: +13943: +13943: static size_t +13943: _S_distance(const __detail::_List_node_base* __first, +13943: const __detail::_List_node_base* __last) +13943: { +13943: size_t __n = 0; +13943: while (__first != __last) +13943: { +13943: __first = __first->_M_next; +13943: ++__n; +13943: } +13943: return __n; +13943: } +13943: +13943: +13943: struct _List_impl +13943: : public _Node_alloc_type +13943: { +13943: __detail::_List_node_header _M_node; +13943: +13943: _List_impl() noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value) +13943: +13943: : _Node_alloc_type() +13943: { } +13943: +13943: _List_impl(const _Node_alloc_type& __a) noexcept +13943: : _Node_alloc_type(__a) +13943: { } +13943: +13943: +13943: _List_impl(_List_impl&&) = default; +13943: +13943: _List_impl(_Node_alloc_type&& __a, _List_impl&& __x) +13943: : _Node_alloc_type(std::move(__a)), _M_node(std::move(__x._M_node)) +13943: { } +13943: +13943: _List_impl(_Node_alloc_type&& __a) noexcept +13943: : _Node_alloc_type(std::move(__a)) +13943: { } +13943: +13943: }; +13943: +13943: _List_impl _M_impl; +13943: +13943: +13943: size_t _M_get_size() const { return _M_impl._M_node._M_size; } +13943: +13943: void _M_set_size(size_t __n) { _M_impl._M_node._M_size = __n; } +13943: +13943: void _M_inc_size(size_t __n) { _M_impl._M_node._M_size += __n; } +13943: +13943: void _M_dec_size(size_t __n) { _M_impl._M_node._M_size -= __n; } +13943: +13943: +13943: size_t +13943: _M_distance(const __detail::_List_node_base* __first, +13943: const __detail::_List_node_base* __last) const +13943: { return _S_distance(__first, __last); } +13943: +13943: +13943: size_t _M_node_count() const { return _M_get_size(); } +13943: # 516 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: typename _Node_alloc_traits::pointer +13943: _M_get_node() +13943: { return _Node_alloc_traits::allocate(_M_impl, 1); } +13943: +13943: void +13943: _M_put_node(typename _Node_alloc_traits::pointer __p) noexcept +13943: { _Node_alloc_traits::deallocate(_M_impl, __p, 1); } +13943: +13943: public: +13943: typedef _Alloc allocator_type; +13943: +13943: _Node_alloc_type& +13943: _M_get_Node_allocator() noexcept +13943: { return _M_impl; } +13943: +13943: const _Node_alloc_type& +13943: _M_get_Node_allocator() const noexcept +13943: { return _M_impl; } +13943: +13943: +13943: _List_base() = default; +13943: +13943: +13943: +13943: +13943: _List_base(const _Node_alloc_type& __a) noexcept +13943: : _M_impl(__a) +13943: { } +13943: +13943: +13943: _List_base(_List_base&&) = default; +13943: +13943: +13943: _List_base(_List_base&& __x, _Node_alloc_type&& __a) +13943: : _M_impl(std::move(__a)) +13943: { +13943: if (__x._M_get_Node_allocator() == _M_get_Node_allocator()) +13943: _M_move_nodes(std::move(__x)); +13943: +13943: } +13943: +13943: +13943: +13943: _List_base(_Node_alloc_type&& __a, _List_base&& __x) +13943: : _M_impl(std::move(__a), std::move(__x._M_impl)) +13943: { } +13943: +13943: +13943: _List_base(_Node_alloc_type&& __a) +13943: : _M_impl(std::move(__a)) +13943: { } +13943: +13943: void +13943: _M_move_nodes(_List_base&& __x) +13943: { _M_impl._M_node._M_move_nodes(std::move(__x._M_impl._M_node)); } +13943: +13943: +13943: +13943: ~_List_base() noexcept +13943: { _M_clear(); } +13943: +13943: void +13943: _M_clear() noexcept; +13943: +13943: void +13943: _M_init() noexcept +13943: { this->_M_impl._M_node._M_init(); } +13943: }; +13943: # 631 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template > +13943: class list : protected _List_base<_Tp, _Alloc> +13943: { +13943: # 644 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: static_assert(is_same::type, _Tp>::value, +13943: "std::list must have a non-const, non-volatile value_type"); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef _List_base<_Tp, _Alloc> _Base; +13943: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; +13943: typedef typename _Base::_Tp_alloc_traits _Tp_alloc_traits; +13943: typedef typename _Base::_Node_alloc_type _Node_alloc_type; +13943: typedef typename _Base::_Node_alloc_traits _Node_alloc_traits; +13943: +13943: public: +13943: typedef _Tp value_type; +13943: typedef typename _Tp_alloc_traits::pointer pointer; +13943: typedef typename _Tp_alloc_traits::const_pointer const_pointer; +13943: typedef typename _Tp_alloc_traits::reference reference; +13943: typedef typename _Tp_alloc_traits::const_reference const_reference; +13943: typedef _List_iterator<_Tp> iterator; +13943: typedef _List_const_iterator<_Tp> const_iterator; +13943: typedef std::reverse_iterator const_reverse_iterator; +13943: typedef std::reverse_iterator reverse_iterator; +13943: typedef size_t size_type; +13943: typedef ptrdiff_t difference_type; +13943: typedef _Alloc allocator_type; +13943: +13943: protected: +13943: +13943: +13943: typedef _List_node<_Tp> _Node; +13943: +13943: using _Base::_M_impl; +13943: using _Base::_M_put_node; +13943: using _Base::_M_get_node; +13943: using _Base::_M_get_Node_allocator; +13943: # 706 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: _Node* +13943: _M_create_node(_Args&&... __args) +13943: { +13943: auto __p = this->_M_get_node(); +13943: auto& __alloc = _M_get_Node_allocator(); +13943: __allocated_ptr<_Node_alloc_type> __guard{__alloc, __p}; +13943: _Node_alloc_traits::construct(__alloc, __p->_M_valptr(), +13943: std::forward<_Args>(__args)...); +13943: __guard = nullptr; +13943: return __p; +13943: } +13943: +13943: +13943: +13943: static size_t +13943: _S_distance(const_iterator __first, const_iterator __last) +13943: { return std::distance(__first, __last); } +13943: +13943: +13943: size_t +13943: _M_node_count() const +13943: { return this->_M_get_size(); } +13943: # 741 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: list() = default; +13943: # 758 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: explicit +13943: list(const allocator_type& __a) noexcept +13943: : _Base(_Node_alloc_type(__a)) { } +13943: # 771 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: explicit +13943: list(size_type __n, const allocator_type& __a = allocator_type()) +13943: : _Base(_Node_alloc_type(__a)) +13943: { _M_default_initialize(__n); } +13943: # 784 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: list(size_type __n, const value_type& __value, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(_Node_alloc_type(__a)) +13943: { _M_fill_initialize(__n, __value); } +13943: # 811 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: list(const list& __x) +13943: : _Base(_Node_alloc_traits:: +13943: _S_select_on_copy(__x._M_get_Node_allocator())) +13943: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } +13943: # 824 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: list(list&&) = default; +13943: # 834 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: list(initializer_list __l, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(_Node_alloc_type(__a)) +13943: { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); } +13943: +13943: list(const list& __x, const __type_identity_t& __a) +13943: : _Base(_Node_alloc_type(__a)) +13943: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } +13943: +13943: private: +13943: list(list&& __x, const allocator_type& __a, true_type) noexcept +13943: : _Base(_Node_alloc_type(__a), std::move(__x)) +13943: { } +13943: +13943: list(list&& __x, const allocator_type& __a, false_type) +13943: : _Base(_Node_alloc_type(__a)) +13943: { +13943: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator()) +13943: this->_M_move_nodes(std::move(__x)); +13943: else +13943: insert(begin(), std::__make_move_if_noexcept_iterator(__x.begin()), +13943: std::__make_move_if_noexcept_iterator(__x.end())); +13943: } +13943: +13943: public: +13943: list(list&& __x, const __type_identity_t& __a) +13943: noexcept(_Node_alloc_traits::_S_always_equal()) +13943: : list(std::move(__x), __a, +13943: typename _Node_alloc_traits::is_always_equal{}) +13943: { } +13943: # 877 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template> +13943: list(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a = allocator_type()) +13943: : _Base(_Node_alloc_type(__a)) +13943: { _M_initialize_dispatch(__first, __last, __false_type()); } +13943: # 903 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: ~list() = default; +13943: # 914 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: list& +13943: operator=(const list& __x); +13943: # 928 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: list& +13943: operator=(list&& __x) +13943: noexcept(_Node_alloc_traits::_S_nothrow_move()) +13943: { +13943: constexpr bool __move_storage = +13943: _Node_alloc_traits::_S_propagate_on_move_assign() +13943: || _Node_alloc_traits::_S_always_equal(); +13943: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); +13943: return *this; +13943: } +13943: # 946 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: list& +13943: operator=(initializer_list __l) +13943: { +13943: this->assign(__l.begin(), __l.end()); +13943: return *this; +13943: } +13943: # 964 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: assign(size_type __n, const value_type& __val) +13943: { _M_fill_assign(__n, __val); } +13943: # 981 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template> +13943: void +13943: assign(_InputIterator __first, _InputIterator __last) +13943: { _M_assign_dispatch(__first, __last, __false_type()); } +13943: # 1005 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: assign(initializer_list __l) +13943: { this->_M_assign_dispatch(__l.begin(), __l.end(), __false_type()); } +13943: +13943: +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_Base::_M_get_Node_allocator()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: begin() noexcept +13943: { return iterator(this->_M_impl._M_node._M_next); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: begin() const noexcept +13943: { return const_iterator(this->_M_impl._M_node._M_next); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: iterator +13943: end() noexcept +13943: { return iterator(&this->_M_impl._M_node); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: end() const noexcept +13943: { return const_iterator(&this->_M_impl._M_node); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rbegin() noexcept +13943: { return reverse_iterator(end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reverse_iterator +13943: rend() noexcept +13943: { return reverse_iterator(begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: rend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cbegin() const noexcept +13943: { return const_iterator(this->_M_impl._M_node._M_next); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_iterator +13943: cend() const noexcept +13943: { return const_iterator(&this->_M_impl._M_node); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crbegin() const noexcept +13943: { return const_reverse_iterator(end()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reverse_iterator +13943: crend() const noexcept +13943: { return const_reverse_iterator(begin()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; } +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: size() const noexcept +13943: { return _M_node_count(); } +13943: +13943: +13943: [[__nodiscard__]] +13943: size_type +13943: max_size() const noexcept +13943: { return _Node_alloc_traits::max_size(_M_get_Node_allocator()); } +13943: # 1168 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: resize(size_type __new_size); +13943: # 1181 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: resize(size_type __new_size, const value_type& __x); +13943: # 1203 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: [[__nodiscard__]] +13943: reference +13943: front() noexcept +13943: { return *begin(); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: front() const noexcept +13943: { return *begin(); } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: reference +13943: back() noexcept +13943: { +13943: iterator __tmp = end(); +13943: --__tmp; +13943: return *__tmp; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: const_reference +13943: back() const noexcept +13943: { +13943: const_iterator __tmp = end(); +13943: --__tmp; +13943: return *__tmp; +13943: } +13943: # 1254 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: push_front(const value_type& __x) +13943: { this->_M_insert(begin(), __x); } +13943: +13943: +13943: void +13943: push_front(value_type&& __x) +13943: { this->_M_insert(begin(), std::move(__x)); } +13943: +13943: template +13943: +13943: reference +13943: +13943: +13943: +13943: emplace_front(_Args&&... __args) +13943: { +13943: this->_M_insert(begin(), std::forward<_Args>(__args)...); +13943: +13943: return front(); +13943: +13943: } +13943: # 1290 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: pop_front() noexcept +13943: { this->_M_erase(begin()); } +13943: # 1304 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: push_back(const value_type& __x) +13943: { this->_M_insert(end(), __x); } +13943: +13943: +13943: void +13943: push_back(value_type&& __x) +13943: { this->_M_insert(end(), std::move(__x)); } +13943: +13943: template +13943: +13943: reference +13943: +13943: +13943: +13943: emplace_back(_Args&&... __args) +13943: { +13943: this->_M_insert(end(), std::forward<_Args>(__args)...); +13943: +13943: return back(); +13943: +13943: } +13943: # 1339 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: pop_back() noexcept +13943: { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } +13943: # 1356 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: iterator +13943: emplace(const_iterator __position, _Args&&... __args); +13943: # 1371 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: iterator +13943: insert(const_iterator __position, const value_type& __x); +13943: # 1401 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: iterator +13943: insert(const_iterator __position, value_type&& __x) +13943: { return emplace(__position, std::move(__x)); } +13943: # 1420 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: iterator +13943: insert(const_iterator __p, initializer_list __l) +13943: { return this->insert(__p, __l.begin(), __l.end()); } +13943: # 1440 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: iterator +13943: insert(const_iterator __position, size_type __n, const value_type& __x); +13943: # 1479 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template> +13943: iterator +13943: insert(const_iterator __position, _InputIterator __first, +13943: _InputIterator __last); +13943: # 1523 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: iterator +13943: +13943: erase(const_iterator __position) noexcept; +13943: # 1548 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: iterator +13943: +13943: erase(const_iterator __first, const_iterator __last) noexcept +13943: +13943: +13943: +13943: { +13943: while (__first != __last) +13943: __first = erase(__first); +13943: return __last._M_const_cast(); +13943: } +13943: # 1571 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: swap(list& __x) noexcept +13943: { +13943: __detail::_List_node_base::swap(this->_M_impl._M_node, +13943: __x._M_impl._M_node); +13943: +13943: size_t __xsize = __x._M_get_size(); +13943: __x._M_set_size(this->_M_get_size()); +13943: this->_M_set_size(__xsize); +13943: +13943: _Node_alloc_traits::_S_on_swap(this->_M_get_Node_allocator(), +13943: __x._M_get_Node_allocator()); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: clear() noexcept +13943: { +13943: _Base::_M_clear(); +13943: _Base::_M_init(); +13943: } +13943: # 1610 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: +13943: splice(const_iterator __position, list&& __x) noexcept +13943: +13943: +13943: +13943: { +13943: if (!__x.empty()) +13943: { +13943: _M_check_equal_allocators(__x); +13943: +13943: this->_M_transfer(__position._M_const_cast(), +13943: __x.begin(), __x.end()); +13943: +13943: this->_M_inc_size(__x._M_get_size()); +13943: __x._M_set_size(0); +13943: } +13943: } +13943: +13943: +13943: void +13943: splice(const_iterator __position, list& __x) noexcept +13943: { splice(__position, std::move(__x)); } +13943: # 1646 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: splice(const_iterator __position, list&& __x, const_iterator __i) noexcept +13943: # 1661 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: { +13943: iterator __j = __i._M_const_cast(); +13943: ++__j; +13943: if (__position == __i || __position == __j) +13943: return; +13943: +13943: if (this != std::__addressof(__x)) +13943: _M_check_equal_allocators(__x); +13943: +13943: this->_M_transfer(__position._M_const_cast(), +13943: __i._M_const_cast(), __j); +13943: +13943: this->_M_inc_size(1); +13943: __x._M_dec_size(1); +13943: } +13943: # 1688 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: splice(const_iterator __position, list& __x, const_iterator __i) noexcept +13943: { splice(__position, std::move(__x), __i); } +13943: # 1707 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: splice(const_iterator __position, list&& __x, const_iterator __first, +13943: const_iterator __last) noexcept +13943: # 1727 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: { +13943: if (__first != __last) +13943: { +13943: if (this != std::__addressof(__x)) +13943: _M_check_equal_allocators(__x); +13943: +13943: size_t __n = _S_distance(__first, __last); +13943: this->_M_inc_size(__n); +13943: __x._M_dec_size(__n); +13943: +13943: this->_M_transfer(__position._M_const_cast(), +13943: __first._M_const_cast(), +13943: __last._M_const_cast()); +13943: } +13943: } +13943: # 1757 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: splice(const_iterator __position, list& __x, const_iterator __first, +13943: const_iterator __last) noexcept +13943: { splice(__position, std::move(__x), __first, __last); } +13943: +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: +13943: typedef void __remove_return_type; +13943: +13943: +13943: public: +13943: # 1785 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: +13943: __remove_return_type +13943: remove(const _Tp& __value); +13943: # 1800 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: __remove_return_type +13943: remove_if(_Predicate); +13943: # 1814 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: +13943: __remove_return_type +13943: unique(); +13943: # 1830 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: __remove_return_type +13943: unique(_BinaryPredicate); +13943: # 1846 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: merge(list&& __x); +13943: +13943: void +13943: merge(list& __x) +13943: { merge(std::move(__x)); } +13943: # 1871 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: void +13943: merge(list&& __x, _StrictWeakOrdering __comp); +13943: +13943: template +13943: void +13943: merge(list& __x, _StrictWeakOrdering __comp) +13943: { merge(std::move(__x), __comp); } +13943: # 1890 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: void +13943: reverse() noexcept +13943: { this->_M_impl._M_node._M_reverse(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: sort(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: sort(_StrictWeakOrdering); +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: void +13943: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) +13943: { _M_fill_initialize(static_cast(__n), __x); } +13943: +13943: +13943: template +13943: void +13943: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, +13943: __false_type) +13943: { +13943: for (; __first != __last; ++__first) +13943: +13943: emplace_back(*__first); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: void +13943: _M_fill_initialize(size_type __n, const value_type& __x) +13943: { +13943: for (; __n; --__n) +13943: push_back(__x); +13943: } +13943: +13943: +13943: +13943: void +13943: _M_default_initialize(size_type __n) +13943: { +13943: for (; __n; --__n) +13943: emplace_back(); +13943: } +13943: +13943: +13943: void +13943: _M_default_append(size_type __n); +13943: # 1968 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: void +13943: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) +13943: { _M_fill_assign(__n, __val); } +13943: +13943: +13943: template +13943: void +13943: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, +13943: __false_type); +13943: +13943: +13943: +13943: void +13943: _M_fill_assign(size_type __n, const value_type& __val); +13943: +13943: +13943: +13943: void +13943: _M_transfer(iterator __position, iterator __first, iterator __last) +13943: { __position._M_node->_M_transfer(__first._M_node, __last._M_node); } +13943: # 2000 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: void +13943: _M_insert(iterator __position, _Args&&... __args) +13943: { +13943: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); +13943: __tmp->_M_hook(__position._M_node); +13943: this->_M_inc_size(1); +13943: } +13943: +13943: +13943: +13943: void +13943: _M_erase(iterator __position) noexcept +13943: { +13943: this->_M_dec_size(1); +13943: __position._M_node->_M_unhook(); +13943: _Node* __n = static_cast<_Node*>(__position._M_node); +13943: +13943: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __n->_M_valptr()); +13943: +13943: +13943: +13943: +13943: _M_put_node(__n); +13943: } +13943: +13943: +13943: void +13943: _M_check_equal_allocators(const list& __x) noexcept +13943: { +13943: if (_M_get_Node_allocator() != __x._M_get_Node_allocator()) +13943: __builtin_abort(); +13943: } +13943: +13943: +13943: const_iterator +13943: _M_resize_pos(size_type& __new_size) const; +13943: +13943: +13943: void +13943: _M_move_assign(list&& __x, true_type) noexcept +13943: { +13943: this->clear(); +13943: this->_M_move_nodes(std::move(__x)); +13943: std::__alloc_on_move(this->_M_get_Node_allocator(), +13943: __x._M_get_Node_allocator()); +13943: } +13943: +13943: void +13943: _M_move_assign(list&& __x, false_type) +13943: { +13943: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator()) +13943: _M_move_assign(std::move(__x), true_type{}); +13943: else +13943: +13943: +13943: _M_assign_dispatch(std::make_move_iterator(__x.begin()), +13943: std::make_move_iterator(__x.end()), +13943: __false_type{}); +13943: } +13943: +13943: +13943: +13943: +13943: struct _Finalize_merge +13943: { +13943: explicit +13943: _Finalize_merge(list& __dest, list& __src, const iterator& __src_next) +13943: : _M_dest(__dest), _M_src(__src), _M_next(__src_next) +13943: { } +13943: +13943: ~_Finalize_merge() +13943: { +13943: +13943: +13943: +13943: const size_t __num_unmerged = std::distance(_M_next, _M_src.end()); +13943: const size_t __orig_size = _M_src._M_get_size(); +13943: _M_dest._M_inc_size(__orig_size - __num_unmerged); +13943: _M_src._M_set_size(__num_unmerged); +13943: } +13943: +13943: list& _M_dest; +13943: list& _M_src; +13943: const iterator& _M_next; +13943: +13943: +13943: _Finalize_merge(const _Finalize_merge&) = delete; +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: template::value_type, +13943: typename _Allocator = allocator<_ValT>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireAllocator<_Allocator>> +13943: list(_InputIterator, _InputIterator, _Allocator = _Allocator()) +13943: -> list<_ValT, _Allocator>; +13943: +13943: +13943: } +13943: # 2119 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +13943: { +13943: +13943: if (__x.size() != __y.size()) +13943: return false; +13943: +13943: +13943: typedef typename list<_Tp, _Alloc>::const_iterator const_iterator; +13943: const_iterator __end1 = __x.end(); +13943: const_iterator __end2 = __y.end(); +13943: +13943: const_iterator __i1 = __x.begin(); +13943: const_iterator __i2 = __y.begin(); +13943: while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) +13943: { +13943: ++__i1; +13943: ++__i2; +13943: } +13943: return __i1 == __end1 && __i2 == __end2; +13943: } +13943: # 2176 "/usr/include/c++/14/bits/stl_list.h" 3 +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +13943: { return std::lexicographical_compare(__x.begin(), __x.end(), +13943: __y.begin(), __y.end()); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: [[__nodiscard__]] +13943: inline bool +13943: operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline ptrdiff_t +13943: __distance(std::_List_iterator<_Tp> __first, +13943: std::_List_iterator<_Tp> __last, +13943: input_iterator_tag __tag) +13943: { +13943: typedef std::_List_const_iterator<_Tp> _CIter; +13943: return std::__distance(_CIter(__first), _CIter(__last), __tag); +13943: } +13943: +13943: template +13943: inline ptrdiff_t +13943: __distance(std::_List_const_iterator<_Tp> __first, +13943: std::_List_const_iterator<_Tp> __last, +13943: input_iterator_tag) +13943: { +13943: typedef __detail::_List_node_header _Sentinel; +13943: std::_List_const_iterator<_Tp> __beyond = __last; +13943: ++__beyond; +13943: const bool __whole = __first == __beyond; +13943: if (__builtin_constant_p (__whole) && __whole) +13943: return static_cast(__last._M_node)->_M_size; +13943: +13943: ptrdiff_t __n = 0; +13943: while (__first != __last) +13943: { +13943: ++__first; +13943: ++__n; +13943: } +13943: return __n; +13943: } +13943: +13943: +13943: +13943: } +13943: # 66 "/usr/include/c++/14/list" 2 3 +13943: # 1 "/usr/include/c++/14/bits/list.tcc" 1 3 +13943: # 59 "/usr/include/c++/14/bits/list.tcc" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: void +13943: _List_base<_Tp, _Alloc>:: +13943: _M_clear() noexcept +13943: { +13943: typedef _List_node<_Tp> _Node; +13943: __detail::_List_node_base* __cur = _M_impl._M_node._M_next; +13943: while (__cur != &_M_impl._M_node) +13943: { +13943: _Node* __tmp = static_cast<_Node*>(__cur); +13943: __cur = __tmp->_M_next; +13943: _Tp* __val = __tmp->_M_valptr(); +13943: +13943: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __val); +13943: +13943: +13943: +13943: _M_put_node(__tmp); +13943: } +13943: } +13943: +13943: +13943: template +13943: template +13943: typename list<_Tp, _Alloc>::iterator +13943: list<_Tp, _Alloc>:: +13943: emplace(const_iterator __position, _Args&&... __args) +13943: { +13943: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); +13943: __tmp->_M_hook(__position._M_const_cast()._M_node); +13943: this->_M_inc_size(1); +13943: return iterator(__tmp); +13943: } +13943: +13943: +13943: template +13943: typename list<_Tp, _Alloc>::iterator +13943: list<_Tp, _Alloc>:: +13943: +13943: insert(const_iterator __position, const value_type& __x) +13943: +13943: +13943: +13943: { +13943: _Node* __tmp = _M_create_node(__x); +13943: __tmp->_M_hook(__position._M_const_cast()._M_node); +13943: this->_M_inc_size(1); +13943: return iterator(__tmp); +13943: } +13943: +13943: +13943: template +13943: typename list<_Tp, _Alloc>::iterator +13943: list<_Tp, _Alloc>:: +13943: insert(const_iterator __position, size_type __n, const value_type& __x) +13943: { +13943: if (__n) +13943: { +13943: list __tmp(__n, __x, get_allocator()); +13943: iterator __it = __tmp.begin(); +13943: splice(__position, __tmp); +13943: return __it; +13943: } +13943: return __position._M_const_cast(); +13943: } +13943: +13943: template +13943: template +13943: typename list<_Tp, _Alloc>::iterator +13943: list<_Tp, _Alloc>:: +13943: insert(const_iterator __position, _InputIterator __first, +13943: _InputIterator __last) +13943: { +13943: list __tmp(__first, __last, get_allocator()); +13943: if (!__tmp.empty()) +13943: { +13943: iterator __it = __tmp.begin(); +13943: splice(__position, __tmp); +13943: return __it; +13943: } +13943: return __position._M_const_cast(); +13943: } +13943: +13943: +13943: template +13943: typename list<_Tp, _Alloc>::iterator +13943: list<_Tp, _Alloc>:: +13943: +13943: erase(const_iterator __position) noexcept +13943: +13943: +13943: +13943: { +13943: iterator __ret = iterator(__position._M_node->_M_next); +13943: _M_erase(__position._M_const_cast()); +13943: return __ret; +13943: } +13943: # 173 "/usr/include/c++/14/bits/list.tcc" 3 +13943: template +13943: typename list<_Tp, _Alloc>::const_iterator +13943: list<_Tp, _Alloc>:: +13943: _M_resize_pos(size_type& __new_size) const +13943: { +13943: const_iterator __i; +13943: +13943: const size_type __len = size(); +13943: if (__new_size < __len) +13943: { +13943: if (__new_size <= __len / 2) +13943: { +13943: __i = begin(); +13943: std::advance(__i, __new_size); +13943: } +13943: else +13943: { +13943: __i = end(); +13943: ptrdiff_t __num_erase = __len - __new_size; +13943: std::advance(__i, -__num_erase); +13943: } +13943: __new_size = 0; +13943: return __i; +13943: } +13943: else +13943: __i = end(); +13943: +13943: +13943: +13943: +13943: +13943: __new_size -= __len; +13943: return __i; +13943: } +13943: +13943: +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: _M_default_append(size_type __n) +13943: { +13943: size_type __i = 0; +13943: try +13943: { +13943: for (; __i < __n; ++__i) +13943: emplace_back(); +13943: } +13943: catch(...) +13943: { +13943: for (; __i; --__i) +13943: pop_back(); +13943: throw; +13943: } +13943: } +13943: +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: resize(size_type __new_size) +13943: { +13943: const_iterator __i = _M_resize_pos(__new_size); +13943: if (__new_size) +13943: _M_default_append(__new_size); +13943: else +13943: erase(__i, end()); +13943: } +13943: +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: resize(size_type __new_size, const value_type& __x) +13943: { +13943: const_iterator __i = _M_resize_pos(__new_size); +13943: if (__new_size) +13943: insert(end(), __new_size, __x); +13943: else +13943: erase(__i, end()); +13943: } +13943: # 265 "/usr/include/c++/14/bits/list.tcc" 3 +13943: template +13943: list<_Tp, _Alloc>& +13943: list<_Tp, _Alloc>:: +13943: operator=(const list& __x) +13943: { +13943: if (this != std::__addressof(__x)) +13943: { +13943: +13943: if (_Node_alloc_traits::_S_propagate_on_copy_assign()) +13943: { +13943: auto& __this_alloc = this->_M_get_Node_allocator(); +13943: auto& __that_alloc = __x._M_get_Node_allocator(); +13943: if (!_Node_alloc_traits::_S_always_equal() +13943: && __this_alloc != __that_alloc) +13943: { +13943: +13943: clear(); +13943: } +13943: std::__alloc_on_copy(__this_alloc, __that_alloc); +13943: } +13943: +13943: _M_assign_dispatch(__x.begin(), __x.end(), __false_type()); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: _M_fill_assign(size_type __n, const value_type& __val) +13943: { +13943: iterator __i = begin(); +13943: for (; __i != end() && __n > 0; ++__i, --__n) +13943: *__i = __val; +13943: if (__n > 0) +13943: insert(end(), __n, __val); +13943: else +13943: erase(__i, end()); +13943: } +13943: +13943: template +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, +13943: __false_type) +13943: { +13943: iterator __first1 = begin(); +13943: iterator __last1 = end(); +13943: for (; __first1 != __last1 && __first2 != __last2; +13943: ++__first1, (void)++__first2) +13943: *__first1 = *__first2; +13943: if (__first2 == __last2) +13943: erase(__first1, __last1); +13943: else +13943: insert(__last1, __first2, __last2); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: typename list<_Tp, _Alloc>::__remove_return_type +13943: list<_Tp, _Alloc>:: +13943: remove(const value_type& __value) +13943: { +13943: +13943: +13943: +13943: list __to_destroy(get_allocator()); +13943: iterator __first = begin(); +13943: iterator __last = end(); +13943: while (__first != __last) +13943: { +13943: iterator __next = __first; +13943: ++__next; +13943: if (*__first == __value) +13943: { +13943: +13943: +13943: +13943: __to_destroy.splice(__to_destroy.begin(), *this, __first); +13943: +13943: +13943: +13943: } +13943: +13943: __first = __next; +13943: } +13943: +13943: +13943: +13943: +13943: return ; +13943: +13943: } +13943: +13943: template +13943: typename list<_Tp, _Alloc>::__remove_return_type +13943: list<_Tp, _Alloc>:: +13943: unique() +13943: { +13943: iterator __first = begin(); +13943: iterator __last = end(); +13943: if (__first == __last) +13943: return ; +13943: +13943: +13943: +13943: list __to_destroy(get_allocator()); +13943: iterator __next = __first; +13943: while (++__next != __last) +13943: { +13943: if (*__first == *__next) +13943: { +13943: __to_destroy.splice(__to_destroy.begin(), *this, __next); +13943: +13943: +13943: +13943: } +13943: else +13943: __first = __next; +13943: __next = __first; +13943: } +13943: +13943: +13943: +13943: +13943: return ; +13943: +13943: } +13943: +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: +13943: merge(list&& __x) +13943: +13943: +13943: +13943: { +13943: +13943: +13943: if (this != std::__addressof(__x)) +13943: { +13943: _M_check_equal_allocators(__x); +13943: +13943: iterator __first1 = begin(); +13943: iterator __last1 = end(); +13943: iterator __first2 = __x.begin(); +13943: iterator __last2 = __x.end(); +13943: +13943: const _Finalize_merge __fin(*this, __x, __first2); +13943: +13943: while (__first1 != __last1 && __first2 != __last2) +13943: if (*__first2 < *__first1) +13943: { +13943: iterator __next = __first2; +13943: _M_transfer(__first1, __first2, ++__next); +13943: __first2 = __next; +13943: } +13943: else +13943: ++__first1; +13943: if (__first2 != __last2) +13943: { +13943: _M_transfer(__last1, __first2, __last2); +13943: __first2 = __last2; +13943: } +13943: } +13943: } +13943: +13943: template +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: +13943: merge(list&& __x, _StrictWeakOrdering __comp) +13943: +13943: +13943: +13943: { +13943: +13943: +13943: if (this != std::__addressof(__x)) +13943: { +13943: _M_check_equal_allocators(__x); +13943: +13943: iterator __first1 = begin(); +13943: iterator __last1 = end(); +13943: iterator __first2 = __x.begin(); +13943: iterator __last2 = __x.end(); +13943: +13943: const _Finalize_merge __fin(*this, __x, __first2); +13943: +13943: while (__first1 != __last1 && __first2 != __last2) +13943: if (__comp(*__first2, *__first1)) +13943: { +13943: iterator __next = __first2; +13943: _M_transfer(__first1, __first2, ++__next); +13943: __first2 = __next; +13943: } +13943: else +13943: ++__first1; +13943: if (__first2 != __last2) +13943: { +13943: _M_transfer(__last1, __first2, __last2); +13943: __first2 = __last2; +13943: } +13943: } +13943: } +13943: +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: sort() +13943: { +13943: +13943: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node +13943: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) +13943: { +13943: using __detail::_Scratch_list; +13943: # 497 "/usr/include/c++/14/bits/list.tcc" 3 +13943: _Scratch_list __carry; +13943: _Scratch_list __tmp[64]; +13943: _Scratch_list* __fill = __tmp; +13943: _Scratch_list* __counter; +13943: +13943: _Scratch_list::_Ptr_cmp __ptr_comp; +13943: +13943: try +13943: { +13943: do +13943: { +13943: __carry._M_take_one(begin()._M_node); +13943: +13943: for(__counter = __tmp; +13943: __counter != __fill && !__counter->empty(); +13943: ++__counter) +13943: { +13943: +13943: __counter->merge(__carry, __ptr_comp); +13943: __carry.swap(*__counter); +13943: } +13943: __carry.swap(*__counter); +13943: if (__counter == __fill) +13943: ++__fill; +13943: } +13943: while ( !empty() ); +13943: +13943: for (__counter = __tmp + 1; __counter != __fill; ++__counter) +13943: __counter->merge(__counter[-1], __ptr_comp); +13943: __fill[-1].swap(this->_M_impl._M_node); +13943: } +13943: catch(...) +13943: { +13943: +13943: __carry._M_put_all(end()._M_node); +13943: for (int __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i) +13943: __tmp[__i]._M_put_all(end()._M_node); +13943: throw; +13943: } +13943: } +13943: } +13943: +13943: template +13943: template +13943: typename list<_Tp, _Alloc>::__remove_return_type +13943: list<_Tp, _Alloc>:: +13943: remove_if(_Predicate __pred) +13943: { +13943: +13943: +13943: +13943: list __to_destroy(get_allocator()); +13943: iterator __first = begin(); +13943: iterator __last = end(); +13943: while (__first != __last) +13943: { +13943: iterator __next = __first; +13943: ++__next; +13943: if (__pred(*__first)) +13943: { +13943: __to_destroy.splice(__to_destroy.begin(), *this, __first); +13943: +13943: +13943: +13943: } +13943: __first = __next; +13943: } +13943: +13943: +13943: +13943: +13943: return ; +13943: +13943: } +13943: +13943: template +13943: template +13943: typename list<_Tp, _Alloc>::__remove_return_type +13943: list<_Tp, _Alloc>:: +13943: unique(_BinaryPredicate __binary_pred) +13943: { +13943: iterator __first = begin(); +13943: iterator __last = end(); +13943: if (__first == __last) +13943: return ; +13943: +13943: +13943: +13943: list __to_destroy(get_allocator()); +13943: iterator __next = __first; +13943: while (++__next != __last) +13943: { +13943: if (__binary_pred(*__first, *__next)) +13943: { +13943: __to_destroy.splice(__to_destroy.begin(), *this, __next); +13943: +13943: +13943: +13943: } +13943: else +13943: __first = __next; +13943: __next = __first; +13943: } +13943: +13943: +13943: +13943: +13943: return ; +13943: +13943: } +13943: +13943: +13943: +13943: template +13943: template +13943: void +13943: list<_Tp, _Alloc>:: +13943: sort(_StrictWeakOrdering __comp) +13943: { +13943: +13943: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node +13943: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) +13943: { +13943: using __detail::_Scratch_list; +13943: _Scratch_list __carry; +13943: _Scratch_list __tmp[64]; +13943: _Scratch_list* __fill = __tmp; +13943: _Scratch_list* __counter; +13943: +13943: _Scratch_list::_Ptr_cmp __ptr_comp +13943: = { __comp }; +13943: +13943: try +13943: { +13943: do +13943: { +13943: __carry._M_take_one(begin()._M_node); +13943: +13943: for(__counter = __tmp; +13943: __counter != __fill && !__counter->empty(); +13943: ++__counter) +13943: { +13943: +13943: __counter->merge(__carry, __ptr_comp); +13943: __carry.swap(*__counter); +13943: } +13943: __carry.swap(*__counter); +13943: if (__counter == __fill) +13943: ++__fill; +13943: } +13943: while ( !empty() ); +13943: +13943: for (__counter = __tmp + 1; __counter != __fill; ++__counter) +13943: __counter->merge(__counter[-1], __ptr_comp); +13943: __fill[-1].swap(this->_M_impl._M_node); +13943: } +13943: catch(...) +13943: { +13943: +13943: __carry._M_put_all(end()._M_node); +13943: for (size_t __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i) +13943: __tmp[__i]._M_put_all(end()._M_node); +13943: throw; +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: } +13943: # 67 "/usr/include/c++/14/list" 2 3 +13943: # 77 "/usr/include/c++/14/list" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 78 "/usr/include/c++/14/list" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr +13943: { +13943: template +13943: using list = std::list<_Tp, polymorphic_allocator<_Tp>>; +13943: } +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +13943: namespace rocksdb { +13943: class CacheReservationManager; +13943: +13943: +13943: +13943: class StallInterface { +13943: public: +13943: virtual ~StallInterface() {} +13943: +13943: virtual void Block() = 0; +13943: +13943: virtual void Signal() = 0; +13943: }; +13943: +13943: class WriteBufferManager final { +13943: public: +13943: # 50 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +13943: explicit WriteBufferManager(size_t _buffer_size, +13943: std::shared_ptr cache = {}, +13943: bool allow_stall = false); +13943: +13943: WriteBufferManager(const WriteBufferManager&) = delete; +13943: WriteBufferManager& operator=(const WriteBufferManager&) = delete; +13943: +13943: ~WriteBufferManager(); +13943: +13943: +13943: +13943: bool enabled() const { return buffer_size() > 0; } +13943: +13943: +13943: bool cost_to_cache() const { return cache_res_mgr_ != nullptr; } +13943: +13943: +13943: +13943: size_t memory_usage() const { +13943: return memory_used_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: size_t mutable_memtable_memory_usage() const { +13943: return memory_active_.load(std::memory_order_relaxed); +13943: } +13943: +13943: size_t dummy_entries_in_cache_usage() const; +13943: +13943: +13943: size_t buffer_size() const { +13943: return buffer_size_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: void SetBufferSize(size_t new_size) { +13943: +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 3 4 +13943: (static_cast ( +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +13943: new_size > 0 +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +13943: "new_size > 0" +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +13943: ; +13943: buffer_size_.store(new_size, std::memory_order_relaxed); +13943: mutable_limit_.store(new_size * 7 / 8, std::memory_order_relaxed); +13943: +13943: MaybeEndWriteStall(); +13943: } +13943: +13943: void SetAllowStall(bool new_allow_stall) { +13943: allow_stall_.store(new_allow_stall, std::memory_order_relaxed); +13943: MaybeEndWriteStall(); +13943: } +13943: +13943: +13943: +13943: +13943: bool ShouldFlush() const { +13943: if (enabled()) { +13943: if (mutable_memtable_memory_usage() > +13943: mutable_limit_.load(std::memory_order_relaxed)) { +13943: return true; +13943: } +13943: size_t local_size = buffer_size(); +13943: if (memory_usage() >= local_size && +13943: mutable_memtable_memory_usage() >= local_size / 2) { +13943: +13943: +13943: +13943: return true; +13943: } +13943: } +13943: return false; +13943: } +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +13943: bool ShouldStall() const { +13943: if (!allow_stall_.load(std::memory_order_relaxed) || !enabled()) { +13943: return false; +13943: } +13943: +13943: return IsStallActive() || IsStallThresholdExceeded(); +13943: } +13943: +13943: +13943: bool IsStallActive() const { +13943: return stall_active_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: bool IsStallThresholdExceeded() const { +13943: return memory_usage() >= buffer_size_; +13943: } +13943: +13943: void ReserveMem(size_t mem); +13943: +13943: +13943: +13943: void ScheduleFreeMem(size_t mem); +13943: +13943: void FreeMem(size_t mem); +13943: +13943: +13943: +13943: void BeginWriteStall(StallInterface* wbm_stall); +13943: +13943: +13943: +13943: void MaybeEndWriteStall(); +13943: +13943: void RemoveDBFromQueue(StallInterface* wbm_stall); +13943: +13943: private: +13943: std::atomic buffer_size_; +13943: std::atomic mutable_limit_; +13943: std::atomic memory_used_; +13943: +13943: std::atomic memory_active_; +13943: std::shared_ptr cache_res_mgr_; +13943: +13943: std::mutex cache_res_mgr_mu_; +13943: +13943: std::list queue_; +13943: +13943: std::mutex mu_; +13943: std::atomic allow_stall_; +13943: +13943: +13943: std::atomic stall_active_; +13943: +13943: void ReserveMemWithCache(size_t mem); +13943: void FreeMemWithCache(size_t mem); +13943: }; +13943: } +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Cache; +13943: class CompactionFilter; +13943: class CompactionFilterFactory; +13943: class Comparator; +13943: class ConcurrentTaskLimiter; +13943: class Env; +13943: enum InfoLogLevel : unsigned char; +13943: class SstFileManager; +13943: class FilterPolicy; +13943: class Logger; +13943: class MergeOperator; +13943: class Snapshot; +13943: class MemTableRepFactory; +13943: class RateLimiter; +13943: class Slice; +13943: class Statistics; +13943: class InternalKeyComparator; +13943: class WalFilter; +13943: class FileSystem; +13943: +13943: struct Options; +13943: struct DbPath; +13943: +13943: using FileTypeSet = SmallEnumSet; +13943: +13943: struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions { +13943: +13943: +13943: +13943: +13943: +13943: +13943: ColumnFamilyOptions* OldDefaults(int rocksdb_major_version = 4, +13943: int rocksdb_minor_version = 6); +13943: +13943: +13943: +13943: +13943: +13943: ColumnFamilyOptions* OptimizeForSmallDb( +13943: std::shared_ptr* cache = nullptr); +13943: +13943: +13943: +13943: +13943: ColumnFamilyOptions* OptimizeForPointLookup(uint64_t block_cache_size_mb); +13943: # 102 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: ColumnFamilyOptions* OptimizeLevelStyleCompaction( +13943: uint64_t memtable_memory_budget = 512 * 1024 * 1024); +13943: ColumnFamilyOptions* OptimizeUniversalStyleCompaction( +13943: uint64_t memtable_memory_budget = 512 * 1024 * 1024); +13943: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: const Comparator* comparator = BytewiseComparator(); +13943: # 128 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr merge_operator = nullptr; +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: const CompactionFilter* compaction_filter = nullptr; +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr compaction_filter_factory = nullptr; +13943: # 186 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: size_t write_buffer_size = 64 << 20; +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: CompressionType compression; +13943: # 223 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: CompressionType bottommost_compression = kDisableCompressionOption; +13943: +13943: +13943: +13943: +13943: +13943: CompressionOptions bottommost_compression_opts; +13943: +13943: +13943: CompressionOptions compression_opts; +13943: # 246 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: int level0_file_num_compaction_trigger = 4; +13943: # 280 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr prefix_extractor = nullptr; +13943: # 294 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t max_bytes_for_level_base = 256 * 1048576; +13943: +13943: +13943: uint64_t snap_refresh_nanos = 0; +13943: +13943: +13943: +13943: +13943: +13943: bool disable_auto_compactions = false; +13943: +13943: +13943: +13943: +13943: +13943: std::shared_ptr table_factory; +13943: # 323 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::vector cf_paths; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::shared_ptr compaction_thread_limiter = nullptr; +13943: # 340 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr sst_partitioner_factory = nullptr; +13943: # 351 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint32_t memtable_max_range_deletions = 0; +13943: # 395 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint32_t uncache_aggressiveness = 0; +13943: +13943: +13943: ColumnFamilyOptions(); +13943: +13943: explicit ColumnFamilyOptions(const Options& options); +13943: +13943: void Dump(Logger* log) const; +13943: }; +13943: +13943: enum class WALRecoveryMode : char { +13943: # 425 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: kTolerateCorruptedTailRecords = 0x00, +13943: +13943: +13943: +13943: +13943: kAbsoluteConsistency = 0x01, +13943: +13943: +13943: +13943: +13943: kPointInTimeRecovery = 0x02, +13943: +13943: +13943: +13943: +13943: +13943: kSkipAnyCorruptedRecords = 0x03, +13943: }; +13943: +13943: struct DbPath { +13943: std::string path; +13943: uint64_t target_size; +13943: +13943: DbPath() : target_size(0) {} +13943: DbPath(const std::string& p, uint64_t t) : path(p), target_size(t) {} +13943: }; +13943: +13943: extern const char* kHostnameForDbHostId; +13943: +13943: enum class CompactionServiceJobStatus : char { +13943: kSuccess, +13943: kFailure, +13943: kUseLocal, +13943: }; +13943: +13943: struct CompactionServiceJobInfo { +13943: std::string db_name; +13943: std::string db_id; +13943: std::string db_session_id; +13943: uint64_t job_id; +13943: +13943: +13943: +13943: +13943: Env::Priority priority; +13943: +13943: +13943: CompactionReason compaction_reason; +13943: bool is_full_compaction; +13943: bool is_manual_compaction; +13943: bool bottommost_level; +13943: +13943: CompactionServiceJobInfo(std::string db_name_, std::string db_id_, +13943: std::string db_session_id_, uint64_t job_id_, +13943: Env::Priority priority_, +13943: CompactionReason compaction_reason_, +13943: bool is_full_compaction_, bool is_manual_compaction_, +13943: bool bottommost_level_) +13943: : db_name(std::move(db_name_)), +13943: db_id(std::move(db_id_)), +13943: db_session_id(std::move(db_session_id_)), +13943: job_id(job_id_), +13943: priority(priority_), +13943: compaction_reason(compaction_reason_), +13943: is_full_compaction(is_full_compaction_), +13943: is_manual_compaction(is_manual_compaction_), +13943: bottommost_level(bottommost_level_) {} +13943: }; +13943: +13943: struct CompactionServiceScheduleResponse { +13943: std::string scheduled_job_id; +13943: +13943: CompactionServiceJobStatus status; +13943: CompactionServiceScheduleResponse(std::string scheduled_job_id_, +13943: CompactionServiceJobStatus status_) +13943: : scheduled_job_id(scheduled_job_id_), status(status_) {} +13943: explicit CompactionServiceScheduleResponse(CompactionServiceJobStatus status_) +13943: : status(status_) {} +13943: }; +13943: +13943: +13943: +13943: +13943: class CompactionService : public Customizable { +13943: public: +13943: static const char* Type() { return "CompactionService"; } +13943: +13943: +13943: const char* Name() const override = 0; +13943: +13943: +13943: virtual CompactionServiceScheduleResponse Schedule( +13943: const CompactionServiceJobInfo& , +13943: const std::string& ) { +13943: CompactionServiceScheduleResponse response( +13943: CompactionServiceJobStatus::kUseLocal); +13943: return response; +13943: } +13943: +13943: +13943: virtual CompactionServiceJobStatus Wait( +13943: const std::string& , std::string* ) { +13943: return CompactionServiceJobStatus::kUseLocal; +13943: } +13943: +13943: +13943: virtual void OnInstallation(const std::string& , +13943: CompactionServiceJobStatus ) {} +13943: +13943: ~CompactionService() override = default; +13943: }; +13943: +13943: struct DBOptions { +13943: +13943: +13943: +13943: +13943: +13943: DBOptions* OldDefaults(int rocksdb_major_version = 4, +13943: int rocksdb_minor_version = 6); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: DBOptions* OptimizeForSmallDb(std::shared_ptr* cache = nullptr); +13943: +13943: +13943: +13943: +13943: +13943: +13943: DBOptions* IncreaseParallelism(int total_threads = 16); +13943: +13943: +13943: +13943: bool create_if_missing = false; +13943: +13943: +13943: +13943: +13943: bool create_missing_column_families = false; +13943: +13943: +13943: +13943: bool error_if_exists = false; +13943: # 588 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool paranoid_checks = true; +13943: # 600 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool flush_verify_memtable_count = true; +13943: # 617 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool compaction_verify_record_count = true; +13943: # 633 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool track_and_verify_wals_in_manifest = false; +13943: # 653 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool verify_sst_unique_id_in_manifest = true; +13943: +13943: +13943: +13943: +13943: Env* env = Env::Default(); +13943: # 676 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr rate_limiter = nullptr; +13943: # 692 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr sst_file_manager = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: std::shared_ptr info_log = nullptr; +13943: +13943: +13943: +13943: +13943: InfoLogLevel info_log_level = Logger::kDefaultLogLevel; +13943: # 718 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: int max_open_files = -1; +13943: +13943: +13943: +13943: +13943: int max_file_opening_threads = 16; +13943: # 746 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t max_total_wal_size = 0; +13943: +13943: +13943: std::shared_ptr statistics = nullptr; +13943: # 759 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool use_fsync = false; +13943: # 785 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::vector db_paths; +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::string db_log_dir = ""; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::string wal_dir = ""; +13943: # 810 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t delete_obsolete_files_period_micros = 6ULL * 60 * 60 * 1000000; +13943: +13943: +13943: +13943: +13943: +13943: +13943: int max_background_jobs = 2; +13943: # 835 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: int max_background_compactions = -1; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint32_t max_subcompactions = 1; +13943: # 865 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: int max_background_flushes = -1; +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t max_log_file_size = 0; +13943: +13943: +13943: +13943: +13943: +13943: size_t log_file_time_to_roll = 0; +13943: +13943: +13943: +13943: size_t keep_log_file_num = 1000; +13943: # 892 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: size_t recycle_log_file_num = 0; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t max_manifest_file_size = 1024 * 1024 * 1024; +13943: +13943: +13943: int table_cache_numshardbits = 6; +13943: # 920 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t WAL_ttl_seconds = 0; +13943: uint64_t WAL_size_limit_MB = 0; +13943: +13943: +13943: +13943: +13943: +13943: size_t manifest_preallocation_size = 4 * 1024 * 1024; +13943: # 940 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool allow_mmap_reads = false; +13943: +13943: +13943: +13943: +13943: bool allow_mmap_writes = false; +13943: # 957 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool use_direct_reads = false; +13943: +13943: +13943: +13943: bool use_direct_io_for_flush_and_compaction = false; +13943: # 972 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool allow_fallocate = true; +13943: +13943: +13943: bool is_fd_close_on_exec = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: unsigned int stats_dump_period_sec = 600; +13943: +13943: +13943: +13943: unsigned int stats_persist_period_sec = 600; +13943: # 998 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool persist_stats_to_disk = false; +13943: +13943: +13943: +13943: +13943: size_t stats_history_buffer_size = 1024 * 1024; +13943: +13943: +13943: +13943: +13943: bool advise_random_on_open = true; +13943: # 1020 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: size_t db_write_buffer_size = 0; +13943: # 1037 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr write_buffer_manager = nullptr; +13943: # 1046 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: size_t compaction_readahead_size = 2 * 1024 * 1024; +13943: # 1063 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: size_t random_access_max_buffer_size = 1024 * 1024; +13943: # 1074 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: size_t writable_file_max_buffer_size = 1024 * 1024; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool use_adaptive_mutex = false; +13943: +13943: +13943: DBOptions(); +13943: +13943: explicit DBOptions(const Options& options); +13943: +13943: void Dump(Logger* log) const; +13943: # 1106 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t bytes_per_sync = 0; +13943: # 1116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t wal_bytes_per_sync = 0; +13943: # 1137 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool strict_bytes_per_sync = false; +13943: +13943: +13943: +13943: std::vector> listeners; +13943: +13943: +13943: +13943: +13943: +13943: bool enable_thread_tracking = false; +13943: # 1165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t delayed_write_rate = 0; +13943: # 1180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool enable_pipelined_write = false; +13943: # 1206 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool unordered_write = false; +13943: # 1216 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool allow_concurrent_memtable_write = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool enable_write_thread_adaptive_yield = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t max_write_batch_group_size_bytes = 1 << 20; +13943: # 1240 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t write_thread_max_yield_usec = 100; +13943: # 1250 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t write_thread_slow_yield_usec = 3; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool skip_stats_update_on_db_open = false; +13943: # 1268 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool skip_checking_sst_file_sizes_on_db_open = false; +13943: +13943: +13943: +13943: WALRecoveryMode wal_recovery_mode = WALRecoveryMode::kPointInTimeRecovery; +13943: +13943: +13943: +13943: bool allow_2pc = false; +13943: +13943: +13943: +13943: +13943: +13943: std::shared_ptr row_cache = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: +13943: WalFilter* wal_filter = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool fail_if_options_file_error = true; +13943: +13943: +13943: +13943: +13943: bool dump_malloc_stats = false; +13943: # 1311 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool avoid_flush_during_recovery = false; +13943: # 1320 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool avoid_flush_during_shutdown = false; +13943: # 1335 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool allow_ingest_behind = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool two_write_queues = false; +13943: +13943: +13943: +13943: +13943: bool manual_wal_flush = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: CompressionType wal_compression = kNoCompression; +13943: # 1363 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool background_close_inactive_wals = false; +13943: # 1377 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool atomic_flush = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool avoid_unnecessary_blocking_io = false; +13943: # 1397 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool write_dbid_to_manifest = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool write_identity_file = true; +13943: # 1415 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool prefix_seek_opt_in_only = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t log_readahead_size = 0; +13943: # 1431 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr file_checksum_gen_factory = nullptr; +13943: # 1480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool best_efforts_recovery = false; +13943: # 1490 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: int max_bgerror_resume_count = 0x7fffffff +13943: # 1490 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t bgerror_resume_retry_interval = 1000000; +13943: # 1506 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool allow_data_in_errors = false; +13943: # 1519 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::string db_host_id = kHostnameForDbHostId; +13943: # 1529 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: FileTypeSet checksum_handoff_file_types; +13943: # 1538 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::shared_ptr compaction_service = nullptr; +13943: # 1550 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier; +13943: # 1565 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool enforce_single_del_contracts = true; +13943: # 1582 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::string daily_offpeak_time_utc = ""; +13943: # 1592 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: uint64_t follower_refresh_catchup_period_ms = 10000; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t follower_catchup_retry_count = 10; +13943: +13943: +13943: +13943: uint64_t follower_catchup_retry_wait_ms = 100; +13943: +13943: +13943: +13943: +13943: +13943: Temperature metadata_write_temperature = Temperature::kUnknown; +13943: +13943: +13943: +13943: +13943: Temperature wal_write_temperature = Temperature::kUnknown; +13943: +13943: }; +13943: +13943: +13943: struct Options : public DBOptions, public ColumnFamilyOptions { +13943: +13943: Options() : DBOptions(), ColumnFamilyOptions() {} +13943: +13943: Options(const DBOptions& db_options, +13943: const ColumnFamilyOptions& column_family_options) +13943: : DBOptions(db_options), ColumnFamilyOptions(column_family_options) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: Options* OldDefaults(int rocksdb_major_version = 4, +13943: int rocksdb_minor_version = 6); +13943: +13943: void Dump(Logger* log) const; +13943: +13943: void DumpCFOptions(Logger* log) const; +13943: # 1650 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: Options* PrepareForBulkLoad(); +13943: +13943: +13943: +13943: Options* OptimizeForSmallDb(); +13943: +13943: +13943: +13943: +13943: +13943: Options* DisableExtraChecks(); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum ReadTier { +13943: kReadAllTier = 0x0, +13943: kBlockCacheTier = 0x1, +13943: kPersistedTier = 0x2, +13943: +13943: +13943: +13943: kMemtableTier = 0x3 +13943: }; +13943: +13943: +13943: struct ReadOptions { +13943: +13943: +13943: +13943: +13943: +13943: +13943: const Snapshot* snapshot = nullptr; +13943: # 1699 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: const Slice* timestamp = nullptr; +13943: const Slice* iter_start_ts = nullptr; +13943: # 1711 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: std::chrono::microseconds deadline = std::chrono::microseconds::zero(); +13943: +13943: +13943: +13943: +13943: +13943: std::chrono::microseconds io_timeout = std::chrono::microseconds::zero(); +13943: +13943: +13943: +13943: +13943: ReadTier read_tier = kReadAllTier; +13943: # 1736 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: Env::IOPriority rate_limiter_priority = Env::IO_TOTAL; +13943: +13943: +13943: +13943: +13943: uint64_t value_size_soft_limit = std::numeric_limits::max(); +13943: +13943: +13943: +13943: +13943: +13943: std::optional merge_operand_count_threshold; +13943: +13943: +13943: +13943: bool verify_checksums = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool fill_cache = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool ignore_range_deletions = false; +13943: +13943: +13943: +13943: +13943: bool async_io = false; +13943: # 1779 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool optimize_multiget_for_io = true; +13943: # 1792 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: size_t readahead_size = 0; +13943: +13943: +13943: +13943: +13943: uint64_t max_skippable_internal_keys = 0; +13943: # 1810 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: const Slice* iterate_lower_bound = nullptr; +13943: # 1830 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: const Slice* iterate_upper_bound = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: bool tailing = false; +13943: +13943: +13943: +13943: bool managed = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool total_order_seek = false; +13943: # 1863 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool auto_prefix_mode = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool prefix_same_as_start = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool pin_data = false; +13943: # 1888 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool adaptive_readahead = false; +13943: +13943: +13943: +13943: +13943: bool background_purge_on_iterator_cleanup = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::function table_filter; +13943: # 1928 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool auto_readahead_size = true; +13943: # 1941 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool allow_unprepared_value = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: Env::IOActivity io_activity = Env::IOActivity::kUnknown; +13943: +13943: +13943: +13943: ReadOptions() {} +13943: ReadOptions(bool _verify_checksums, bool _fill_cache); +13943: explicit ReadOptions(Env::IOActivity _io_activity); +13943: }; +13943: +13943: +13943: struct WriteOptions { +13943: # 1975 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool sync = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool disableWAL = false; +13943: +13943: +13943: +13943: +13943: +13943: bool ignore_missing_column_families = false; +13943: +13943: +13943: +13943: +13943: bool no_slowdown = false; +13943: # 2003 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool low_pri = false; +13943: # 2012 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool memtable_insert_hint_per_batch = false; +13943: # 2027 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: Env::IOPriority rate_limiter_priority = Env::IO_TOTAL; +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t protection_bytes_per_key = 0; +13943: +13943: +13943: +13943: +13943: Env::IOActivity io_activity = Env::IOActivity::kUnknown; +13943: +13943: WriteOptions() {} +13943: explicit WriteOptions(Env::IOActivity _io_activity); +13943: explicit WriteOptions( +13943: Env::IOPriority _rate_limiter_priority, +13943: Env::IOActivity _io_activity = Env::IOActivity::kUnknown); +13943: }; +13943: +13943: +13943: struct FlushOptions { +13943: +13943: +13943: bool wait; +13943: +13943: +13943: +13943: +13943: +13943: bool allow_write_stall; +13943: +13943: FlushOptions() : wait(true), allow_write_stall(false) {} +13943: }; +13943: +13943: +13943: Status CreateLoggerFromOptions(const std::string& dbname, +13943: const DBOptions& options, +13943: std::shared_ptr* logger); +13943: +13943: +13943: struct CompactionOptions { +13943: # 2082 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: CompressionType compression; +13943: +13943: +13943: +13943: uint64_t output_file_size_limit; +13943: +13943: +13943: uint32_t max_subcompactions; +13943: +13943: CompactionOptions() +13943: : compression(kDisableCompressionOption), +13943: output_file_size_limit(std::numeric_limits::max()), +13943: max_subcompactions(0) {} +13943: }; +13943: +13943: +13943: +13943: enum class BottommostLevelCompaction { +13943: +13943: kSkip, +13943: +13943: +13943: +13943: +13943: +13943: kIfHaveCompactionFilter, +13943: +13943: kForce, +13943: +13943: +13943: kForceOptimized, +13943: }; +13943: +13943: +13943: +13943: enum class BlobGarbageCollectionPolicy { +13943: +13943: kForce, +13943: +13943: kDisable, +13943: +13943: kUseDefault, +13943: }; +13943: +13943: +13943: struct CompactRangeOptions { +13943: +13943: +13943: +13943: +13943: bool exclusive_manual_compaction = false; +13943: +13943: +13943: +13943: bool change_level = false; +13943: +13943: +13943: int target_level = -1; +13943: +13943: +13943: uint32_t target_path_id = 0; +13943: +13943: +13943: BottommostLevelCompaction bottommost_level_compaction = +13943: BottommostLevelCompaction::kIfHaveCompactionFilter; +13943: +13943: +13943: bool allow_write_stall = false; +13943: +13943: uint32_t max_subcompactions = 0; +13943: +13943: +13943: const Slice* full_history_ts_low = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: std::atomic* canceled = nullptr; +13943: # 2173 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: BlobGarbageCollectionPolicy blob_garbage_collection_policy = +13943: BlobGarbageCollectionPolicy::kUseDefault; +13943: +13943: +13943: +13943: +13943: +13943: double blob_garbage_collection_age_cutoff = -1; +13943: }; +13943: +13943: +13943: struct IngestExternalFileOptions { +13943: +13943: +13943: +13943: +13943: +13943: bool move_files = false; +13943: +13943: +13943: bool link_files = false; +13943: +13943: +13943: bool failed_move_fall_back_to_copy = true; +13943: +13943: +13943: bool snapshot_consistency = true; +13943: +13943: +13943: +13943: +13943: bool allow_global_seqno = true; +13943: +13943: +13943: bool allow_blocking_flush = true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool ingest_behind = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool write_global_seqno = false; +13943: +13943: +13943: +13943: +13943: bool verify_checksums_before_ingest = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t verify_checksums_readahead_size = 0; +13943: # 2255 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool verify_file_checksum = true; +13943: # 2265 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool fail_if_not_bottommost_level = false; +13943: # 2278 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: bool allow_db_generated_files = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool fill_cache = true; +13943: }; +13943: +13943: enum TraceFilterType : uint64_t { +13943: +13943: kTraceFilterNone = 0x0, +13943: +13943: kTraceFilterGet = 0x1 << 0, +13943: +13943: kTraceFilterWrite = 0x1 << 1, +13943: +13943: kTraceFilterIteratorSeek = 0x1 << 2, +13943: +13943: kTraceFilterIteratorSeekForPrev = 0x1 << 3, +13943: +13943: kTraceFilterMultiGet = 0x1 << 4, +13943: }; +13943: +13943: +13943: struct TraceOptions { +13943: +13943: +13943: uint64_t max_trace_file_size = uint64_t{64} * 1024 * 1024 * 1024; +13943: +13943: +13943: uint64_t sampling_frequency = 1; +13943: +13943: uint64_t filter = kTraceFilterNone; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool preserve_write_order = false; +13943: }; +13943: +13943: +13943: struct ImportColumnFamilyOptions { +13943: +13943: bool move_files = false; +13943: }; +13943: +13943: +13943: struct SizeApproximationOptions { +13943: +13943: +13943: bool include_memtables = false; +13943: +13943: +13943: bool include_files = true; +13943: # 2346 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +13943: double files_size_error_margin = -1.0; +13943: }; +13943: +13943: struct CompactionServiceOptionsOverride { +13943: Env* env = Env::Default(); +13943: std::shared_ptr file_checksum_gen_factory = nullptr; +13943: +13943: const Comparator* comparator = BytewiseComparator(); +13943: std::shared_ptr merge_operator = nullptr; +13943: const CompactionFilter* compaction_filter = nullptr; +13943: std::shared_ptr compaction_filter_factory = nullptr; +13943: std::shared_ptr prefix_extractor = nullptr; +13943: std::shared_ptr table_factory; +13943: std::shared_ptr sst_partitioner_factory = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::vector> listeners; +13943: +13943: +13943: +13943: +13943: std::shared_ptr statistics = nullptr; +13943: +13943: +13943: +13943: std::vector> +13943: table_properties_collector_factories; +13943: }; +13943: +13943: struct OpenAndCompactOptions { +13943: +13943: std::atomic* canceled = nullptr; +13943: }; +13943: +13943: struct LiveFilesStorageInfoOptions { +13943: +13943: bool include_checksum_info = false; +13943: +13943: +13943: +13943: uint64_t wal_size_for_flush = 0; +13943: }; +13943: +13943: struct WaitForCompactOptions { +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool abort_on_pause = false; +13943: +13943: +13943: bool flush = false; +13943: +13943: +13943: bool wait_for_purge = false; +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool close_db = false; +13943: +13943: +13943: +13943: +13943: +13943: std::chrono::microseconds timeout = std::chrono::microseconds::zero(); +13943: }; +13943: +13943: } +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_reader_caller.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: enum TableReaderCaller : char { +13943: kUserGet = 1, +13943: kUserMultiGet = 2, +13943: kUserIterator = 3, +13943: kUserApproximateSize = 4, +13943: kUserVerifyChecksum = 5, +13943: kSSTDumpTool = 6, +13943: kExternalSSTIngestion = 7, +13943: kRepair = 8, +13943: kPrefetch = 9, +13943: kCompaction = 10, +13943: +13943: +13943: kCompactionRefill = 11, +13943: +13943: +13943: kFlush = 12, +13943: +13943: kSSTFileReader = 13, +13943: +13943: +13943: kUncategorized = 14, +13943: +13943: kMaxBlockCacheLookupCaller +13943: }; +13943: } +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_reader_writer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_reader_writer.h" +13943: class TraceWriter { +13943: public: +13943: virtual ~TraceWriter() = default; +13943: +13943: virtual Status Write(const Slice& data) = 0; +13943: virtual Status Close() = 0; +13943: virtual uint64_t GetFileSize() = 0; +13943: }; +13943: +13943: +13943: +13943: class TraceReader { +13943: public: +13943: virtual ~TraceReader() = default; +13943: +13943: virtual Status Read(std::string* data) = 0; +13943: virtual Status Close() = 0; +13943: +13943: +13943: +13943: virtual Status Reset() = 0; +13943: }; +13943: +13943: +13943: +13943: Status NewFileTraceWriter(Env* env, const EnvOptions& env_options, +13943: const std::string& trace_filename, +13943: std::unique_ptr* trace_writer); +13943: Status NewFileTraceReader(Env* env, const EnvOptions& env_options, +13943: const std::string& trace_filename, +13943: std::unique_ptr* trace_reader); +13943: +13943: } +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_record.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_record.h" +13943: namespace rocksdb { +13943: +13943: class ColumnFamilyHandle; +13943: class DB; +13943: +13943: +13943: enum TraceType : char { +13943: kTraceNone = 0, +13943: kTraceBegin = 1, +13943: kTraceEnd = 2, +13943: +13943: kTraceWrite = 3, +13943: kTraceGet = 4, +13943: kTraceIteratorSeek = 5, +13943: kTraceIteratorSeekForPrev = 6, +13943: +13943: kBlockTraceIndexBlock = 7, +13943: +13943: kBlockTraceFilterBlock = 8, +13943: kBlockTraceDataBlock = 9, +13943: kBlockTraceUncompressionDictBlock = 10, +13943: kBlockTraceRangeDeletionBlock = 11, +13943: +13943: kIOTracer = 12, +13943: +13943: kTraceMultiGet = 13, +13943: +13943: kTraceMax, +13943: }; +13943: +13943: class GetQueryTraceRecord; +13943: class IteratorSeekQueryTraceRecord; +13943: class MultiGetQueryTraceRecord; +13943: class TraceRecordResult; +13943: class WriteQueryTraceRecord; +13943: +13943: +13943: class TraceRecord { +13943: public: +13943: explicit TraceRecord(uint64_t timestamp); +13943: +13943: virtual ~TraceRecord() = default; +13943: +13943: +13943: virtual TraceType GetTraceType() const = 0; +13943: +13943: +13943: virtual uint64_t GetTimestamp() const; +13943: +13943: class Handler { +13943: public: +13943: virtual ~Handler() = default; +13943: +13943: virtual Status Handle(const WriteQueryTraceRecord& record, +13943: std::unique_ptr* result) = 0; +13943: +13943: virtual Status Handle(const GetQueryTraceRecord& record, +13943: std::unique_ptr* result) = 0; +13943: +13943: virtual Status Handle(const IteratorSeekQueryTraceRecord& record, +13943: std::unique_ptr* result) = 0; +13943: +13943: virtual Status Handle(const MultiGetQueryTraceRecord& record, +13943: std::unique_ptr* result) = 0; +13943: }; +13943: +13943: +13943: virtual Status Accept(Handler* handler, +13943: std::unique_ptr* result) = 0; +13943: +13943: +13943: static Handler* NewExecutionHandler( +13943: DB* db, const std::vector& handles); +13943: +13943: private: +13943: uint64_t timestamp_; +13943: }; +13943: +13943: +13943: class QueryTraceRecord : public TraceRecord { +13943: public: +13943: explicit QueryTraceRecord(uint64_t timestamp); +13943: }; +13943: +13943: +13943: class WriteQueryTraceRecord : public QueryTraceRecord { +13943: public: +13943: WriteQueryTraceRecord(PinnableSlice&& write_batch_rep, uint64_t timestamp); +13943: +13943: WriteQueryTraceRecord(const std::string& write_batch_rep, uint64_t timestamp); +13943: +13943: ~WriteQueryTraceRecord() override; +13943: +13943: TraceType GetTraceType() const override { return kTraceWrite; } +13943: +13943: +13943: virtual Slice GetWriteBatchRep() const; +13943: +13943: Status Accept(Handler* handler, +13943: std::unique_ptr* result) override; +13943: +13943: private: +13943: PinnableSlice rep_; +13943: }; +13943: +13943: +13943: class GetQueryTraceRecord : public QueryTraceRecord { +13943: public: +13943: GetQueryTraceRecord(uint32_t column_family_id, PinnableSlice&& key, +13943: uint64_t timestamp); +13943: +13943: GetQueryTraceRecord(uint32_t column_family_id, const std::string& key, +13943: uint64_t timestamp); +13943: +13943: ~GetQueryTraceRecord() override; +13943: +13943: TraceType GetTraceType() const override { return kTraceGet; } +13943: +13943: +13943: virtual uint32_t GetColumnFamilyID() const; +13943: +13943: +13943: virtual Slice GetKey() const; +13943: +13943: Status Accept(Handler* handler, +13943: std::unique_ptr* result) override; +13943: +13943: private: +13943: uint32_t cf_id_; +13943: PinnableSlice key_; +13943: }; +13943: +13943: +13943: class IteratorQueryTraceRecord : public QueryTraceRecord { +13943: public: +13943: explicit IteratorQueryTraceRecord(uint64_t timestamp); +13943: +13943: IteratorQueryTraceRecord(PinnableSlice&& lower_bound, +13943: PinnableSlice&& upper_bound, uint64_t timestamp); +13943: +13943: IteratorQueryTraceRecord(const std::string& lower_bound, +13943: const std::string& upper_bound, uint64_t timestamp); +13943: +13943: ~IteratorQueryTraceRecord() override; +13943: +13943: +13943: +13943: virtual Slice GetLowerBound() const; +13943: virtual Slice GetUpperBound() const; +13943: +13943: private: +13943: PinnableSlice lower_; +13943: PinnableSlice upper_; +13943: }; +13943: +13943: +13943: class IteratorSeekQueryTraceRecord : public IteratorQueryTraceRecord { +13943: public: +13943: +13943: enum SeekType { +13943: kSeek = kTraceIteratorSeek, +13943: kSeekForPrev = kTraceIteratorSeekForPrev +13943: }; +13943: +13943: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +13943: PinnableSlice&& key, uint64_t timestamp); +13943: +13943: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +13943: const std::string& key, uint64_t timestamp); +13943: +13943: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +13943: PinnableSlice&& key, PinnableSlice&& lower_bound, +13943: PinnableSlice&& upper_bound, uint64_t timestamp); +13943: +13943: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +13943: const std::string& key, +13943: const std::string& lower_bound, +13943: const std::string& upper_bound, +13943: uint64_t timestamp); +13943: +13943: ~IteratorSeekQueryTraceRecord() override; +13943: +13943: +13943: TraceType GetTraceType() const override; +13943: +13943: +13943: virtual SeekType GetSeekType() const; +13943: +13943: +13943: virtual uint32_t GetColumnFamilyID() const; +13943: +13943: +13943: virtual Slice GetKey() const; +13943: +13943: Status Accept(Handler* handler, +13943: std::unique_ptr* result) override; +13943: +13943: private: +13943: SeekType type_; +13943: uint32_t cf_id_; +13943: PinnableSlice key_; +13943: }; +13943: +13943: +13943: class MultiGetQueryTraceRecord : public QueryTraceRecord { +13943: public: +13943: MultiGetQueryTraceRecord(std::vector column_family_ids, +13943: std::vector&& keys, +13943: uint64_t timestamp); +13943: +13943: MultiGetQueryTraceRecord(std::vector column_family_ids, +13943: const std::vector& keys, +13943: uint64_t timestamp); +13943: +13943: ~MultiGetQueryTraceRecord() override; +13943: +13943: TraceType GetTraceType() const override { return kTraceMultiGet; } +13943: +13943: +13943: virtual std::vector GetColumnFamilyIDs() const; +13943: +13943: +13943: virtual std::vector GetKeys() const; +13943: +13943: Status Accept(Handler* handler, +13943: std::unique_ptr* result) override; +13943: +13943: private: +13943: std::vector cf_ids_; +13943: std::vector keys_; +13943: }; +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: struct BlockCacheTraceRecord { +13943: +13943: uint64_t access_timestamp = 0; +13943: +13943: +13943: +13943: +13943: std::string block_key; +13943: +13943: +13943: TraceType block_type = TraceType::kTraceMax; +13943: +13943: +13943: uint64_t block_size = 0; +13943: +13943: +13943: +13943: +13943: uint64_t cf_id = 0; +13943: +13943: +13943: std::string cf_name; +13943: +13943: +13943: uint32_t level = 0; +13943: +13943: +13943: uint64_t sst_fd_number = 0; +13943: +13943: +13943: +13943: +13943: TableReaderCaller caller = TableReaderCaller::kMaxBlockCacheLookupCaller; +13943: +13943: +13943: bool is_cache_hit = false; +13943: +13943: +13943: bool no_insert = false; +13943: +13943: +13943: +13943: +13943: uint64_t get_id = kReservedGetId; +13943: +13943: +13943: bool get_from_user_specified_snapshot = false; +13943: +13943: +13943: std::string referenced_key; +13943: +13943: +13943: +13943: +13943: uint64_t referenced_data_size = 0; +13943: +13943: +13943: uint64_t num_keys_in_block = 0; +13943: +13943: +13943: bool referenced_key_exist_in_block = false; +13943: +13943: static const uint64_t kReservedGetId; +13943: +13943: BlockCacheTraceRecord() {} +13943: +13943: BlockCacheTraceRecord(uint64_t _access_timestamp, std::string _block_key, +13943: TraceType _block_type, uint64_t _block_size, +13943: uint64_t _cf_id, std::string _cf_name, uint32_t _level, +13943: uint64_t _sst_fd_number, TableReaderCaller _caller, +13943: bool _is_cache_hit, bool _no_insert, uint64_t _get_id, +13943: bool _get_from_user_specified_snapshot = false, +13943: std::string _referenced_key = "", +13943: uint64_t _referenced_data_size = 0, +13943: uint64_t _num_keys_in_block = 0, +13943: bool _referenced_key_exist_in_block = false) +13943: : access_timestamp(_access_timestamp), +13943: block_key(_block_key), +13943: block_type(_block_type), +13943: block_size(_block_size), +13943: cf_id(_cf_id), +13943: cf_name(_cf_name), +13943: level(_level), +13943: sst_fd_number(_sst_fd_number), +13943: caller(_caller), +13943: is_cache_hit(_is_cache_hit), +13943: no_insert(_no_insert), +13943: get_id(_get_id), +13943: get_from_user_specified_snapshot(_get_from_user_specified_snapshot), +13943: referenced_key(_referenced_key), +13943: referenced_data_size(_referenced_data_size), +13943: num_keys_in_block(_num_keys_in_block), +13943: referenced_key_exist_in_block(_referenced_key_exist_in_block) {} +13943: }; +13943: +13943: +13943: struct BlockCacheTraceOptions { +13943: +13943: +13943: uint64_t sampling_frequency = 1; +13943: }; +13943: +13943: +13943: struct BlockCacheTraceWriterOptions { +13943: uint64_t max_trace_file_size = uint64_t{64} * 1024 * 1024 * 1024; +13943: }; +13943: +13943: +13943: +13943: +13943: class BlockCacheTraceWriter { +13943: public: +13943: virtual ~BlockCacheTraceWriter() {} +13943: +13943: +13943: virtual Status WriteBlockAccess(const BlockCacheTraceRecord& record, +13943: const Slice& block_key, const Slice& cf_name, +13943: const Slice& referenced_key) = 0; +13943: +13943: +13943: +13943: virtual Status WriteHeader() = 0; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: std::unique_ptr NewBlockCacheTraceWriter( +13943: SystemClock* clock, const BlockCacheTraceWriterOptions& trace_options, +13943: std::unique_ptr&& trace_writer); +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 1 +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Iterator : public IteratorBase { +13943: public: +13943: Iterator() {} +13943: +13943: Iterator(const Iterator&) = delete; +13943: void operator=(const Iterator&) = delete; +13943: +13943: virtual ~Iterator() override {} +13943: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: virtual Slice value() const = 0; +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: virtual const WideColumns& columns() const { +13943: +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +13943: (static_cast ( +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: false +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: "false" +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: ; +13943: return kNoWideColumns; +13943: } +13943: # 90 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: virtual Status GetProperty(std::string prop_name, std::string* prop); +13943: +13943: virtual Slice timestamp() const { +13943: +13943: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +13943: (static_cast ( +13943: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: false +13943: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: "false" +13943: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +13943: ; +13943: return Slice(); +13943: } +13943: }; +13943: +13943: +13943: Iterator* NewEmptyIterator(); +13943: +13943: +13943: Iterator* NewErrorIterator(const Status& status); +13943: +13943: } +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct FileStorageInfo { +13943: +13943: std::string relative_filename; +13943: +13943: +13943: std::string directory; +13943: +13943: +13943: +13943: uint64_t file_number = 0; +13943: +13943: FileType file_type = kTempFile; +13943: +13943: +13943: uint64_t size = 0; +13943: +13943: +13943: Temperature temperature = Temperature::kUnknown; +13943: +13943: +13943: +13943: +13943: +13943: std::string file_checksum; +13943: +13943: +13943: +13943: +13943: +13943: std::string file_checksum_func_name; +13943: }; +13943: +13943: +13943: +13943: struct LiveFileStorageInfo : public FileStorageInfo { +13943: +13943: +13943: +13943: +13943: +13943: std::string replacement_contents; +13943: +13943: +13943: +13943: +13943: bool trim_to_size = false; +13943: }; +13943: +13943: +13943: +13943: struct SstFileMetaData : public FileStorageInfo { +13943: SstFileMetaData() { file_type = kTableFile; } +13943: +13943: SstFileMetaData(const std::string& _file_name, uint64_t _file_number, +13943: const std::string& _directory, uint64_t _size, +13943: SequenceNumber _smallest_seqno, SequenceNumber _largest_seqno, +13943: const std::string& _smallestkey, +13943: const std::string& _largestkey, uint64_t _num_reads_sampled, +13943: bool _being_compacted, Temperature _temperature, +13943: uint64_t _oldest_blob_file_number, +13943: uint64_t _oldest_ancester_time, uint64_t _file_creation_time, +13943: uint64_t _epoch_number, std::string& _file_checksum, +13943: std::string& _file_checksum_func_name) +13943: : smallest_seqno(_smallest_seqno), +13943: largest_seqno(_largest_seqno), +13943: smallestkey(_smallestkey), +13943: largestkey(_largestkey), +13943: num_reads_sampled(_num_reads_sampled), +13943: being_compacted(_being_compacted), +13943: num_entries(0), +13943: num_deletions(0), +13943: oldest_blob_file_number(_oldest_blob_file_number), +13943: oldest_ancester_time(_oldest_ancester_time), +13943: file_creation_time(_file_creation_time), +13943: epoch_number(_epoch_number) { +13943: if (!_file_name.empty()) { +13943: if (_file_name[0] == '/') { +13943: relative_filename = _file_name.substr(1); +13943: name = _file_name; +13943: } else { +13943: relative_filename = _file_name; +13943: name = std::string("/") + _file_name; +13943: } +13943: +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: (static_cast ( +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: relative_filename.size() + 1 == name.size() +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: "relative_filename.size() + 1 == name.size()" +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: ; +13943: +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: (static_cast ( +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: relative_filename[0] != '/' +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: "relative_filename[0] != '/'" +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: ; +13943: +13943: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: (static_cast ( +13943: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: name[0] == '/' +13943: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: "name[0] == '/'" +13943: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: ; +13943: } +13943: directory = _directory; +13943: db_path = _directory; +13943: file_number = _file_number; +13943: file_type = kTableFile; +13943: size = _size; +13943: temperature = _temperature; +13943: file_checksum = _file_checksum; +13943: file_checksum_func_name = _file_checksum_func_name; +13943: } +13943: +13943: SequenceNumber smallest_seqno = 0; +13943: SequenceNumber largest_seqno = 0; +13943: std::string smallestkey; +13943: std::string largestkey; +13943: uint64_t num_reads_sampled = 0; +13943: bool being_compacted = +13943: false; +13943: +13943: uint64_t num_entries = 0; +13943: uint64_t num_deletions = 0; +13943: +13943: uint64_t oldest_blob_file_number = 0; +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +13943: uint64_t oldest_ancester_time = 0; +13943: +13943: +13943: uint64_t file_creation_time = 0; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t epoch_number = 0; +13943: +13943: +13943: +13943: +13943: std::string smallest{}; +13943: std::string largest{}; +13943: +13943: +13943: +13943: +13943: std::string name; +13943: +13943: +13943: std::string db_path; +13943: }; +13943: +13943: +13943: struct LiveFileMetaData : SstFileMetaData { +13943: std::string column_family_name; +13943: int level; +13943: LiveFileMetaData() : column_family_name(), level(0) {} +13943: }; +13943: +13943: +13943: struct BlobMetaData { +13943: BlobMetaData() +13943: : blob_file_number(0), +13943: blob_file_size(0), +13943: total_blob_count(0), +13943: total_blob_bytes(0), +13943: garbage_blob_count(0), +13943: garbage_blob_bytes(0) {} +13943: +13943: BlobMetaData(uint64_t _file_number, const std::string& _file_name, +13943: const std::string& _file_path, uint64_t _file_size, +13943: uint64_t _total_blob_count, uint64_t _total_blob_bytes, +13943: uint64_t _garbage_blob_count, uint64_t _garbage_blob_bytes, +13943: const std::string& _file_checksum, +13943: const std::string& _file_checksum_func_name) +13943: : blob_file_number(_file_number), +13943: blob_file_name(_file_name), +13943: blob_file_path(_file_path), +13943: blob_file_size(_file_size), +13943: total_blob_count(_total_blob_count), +13943: total_blob_bytes(_total_blob_bytes), +13943: garbage_blob_count(_garbage_blob_count), +13943: garbage_blob_bytes(_garbage_blob_bytes), +13943: checksum_method(_file_checksum), +13943: checksum_value(_file_checksum_func_name) {} +13943: uint64_t blob_file_number; +13943: std::string blob_file_name; +13943: std::string blob_file_path; +13943: uint64_t blob_file_size; +13943: uint64_t total_blob_count; +13943: uint64_t total_blob_bytes; +13943: uint64_t garbage_blob_count; +13943: uint64_t garbage_blob_bytes; +13943: std::string checksum_method; +13943: std::string checksum_value; +13943: }; +13943: +13943: +13943: struct LevelMetaData { +13943: LevelMetaData(int _level, uint64_t _size, +13943: const std::vector&& _files) +13943: : level(_level), size(_size), files(_files) {} +13943: +13943: +13943: const int level; +13943: +13943: +13943: const uint64_t size; +13943: +13943: const std::vector files; +13943: }; +13943: +13943: +13943: struct ColumnFamilyMetaData { +13943: ColumnFamilyMetaData() : size(0), file_count(0), name("") {} +13943: ColumnFamilyMetaData(const std::string& _name, uint64_t _size, +13943: const std::vector&& _levels) +13943: : size(_size), name(_name), levels(_levels) {} +13943: +13943: +13943: +13943: uint64_t size; +13943: +13943: size_t file_count; +13943: +13943: std::string name; +13943: +13943: std::vector levels; +13943: +13943: +13943: uint64_t blob_file_size = 0; +13943: +13943: size_t blob_file_count = 0; +13943: +13943: std::vector blob_files; +13943: }; +13943: +13943: +13943: +13943: struct ExportImportFilesMetaData { +13943: std::string db_comparator_name; +13943: std::vector files; +13943: }; +13943: } +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/snapshot.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class DB; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class Snapshot { +13943: public: +13943: virtual SequenceNumber GetSequenceNumber() const = 0; +13943: +13943: +13943: +13943: virtual int64_t GetUnixTime() const = 0; +13943: +13943: virtual uint64_t GetTimestamp() const = 0; +13943: +13943: protected: +13943: virtual ~Snapshot(); +13943: }; +13943: +13943: +13943: +13943: +13943: class ManagedSnapshot { +13943: public: +13943: explicit ManagedSnapshot(DB* db); +13943: +13943: +13943: ManagedSnapshot(DB* db, const Snapshot* _snapshot); +13943: +13943: ~ManagedSnapshot(); +13943: +13943: const Snapshot* snapshot(); +13943: +13943: private: +13943: DB* db_; +13943: const Snapshot* snapshot_; +13943: }; +13943: +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +13943: namespace rocksdb { +13943: +13943: class Comparator; +13943: +13943: +13943: +13943: struct ExternalSstFileInfo { +13943: ExternalSstFileInfo() +13943: : file_path(""), +13943: smallest_key(""), +13943: largest_key(""), +13943: smallest_range_del_key(""), +13943: largest_range_del_key(""), +13943: file_checksum(""), +13943: file_checksum_func_name(""), +13943: sequence_number(0), +13943: file_size(0), +13943: num_entries(0), +13943: num_range_del_entries(0), +13943: version(0) {} +13943: +13943: ExternalSstFileInfo(const std::string& _file_path, +13943: const std::string& _smallest_key, +13943: const std::string& _largest_key, +13943: SequenceNumber _sequence_number, uint64_t _file_size, +13943: uint64_t _num_entries, int32_t _version) +13943: : file_path(_file_path), +13943: smallest_key(_smallest_key), +13943: largest_key(_largest_key), +13943: smallest_range_del_key(""), +13943: largest_range_del_key(""), +13943: file_checksum(""), +13943: file_checksum_func_name(""), +13943: sequence_number(_sequence_number), +13943: file_size(_file_size), +13943: num_entries(_num_entries), +13943: num_range_del_entries(0), +13943: version(_version) {} +13943: +13943: std::string file_path; +13943: std::string smallest_key; +13943: std::string largest_key; +13943: std::string +13943: smallest_range_del_key; +13943: std::string largest_range_del_key; +13943: std::string file_checksum; +13943: std::string file_checksum_func_name; +13943: SequenceNumber sequence_number; +13943: uint64_t file_size; +13943: uint64_t num_entries; +13943: uint64_t num_range_del_entries; +13943: int32_t version; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: class SstFileWriter { +13943: public: +13943: # 95 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +13943: SstFileWriter(const EnvOptions& env_options, const Options& options, +13943: ColumnFamilyHandle* column_family = nullptr, +13943: bool invalidate_page_cache = true, +13943: Env::IOPriority io_priority = Env::IOPriority::IO_TOTAL, +13943: bool skip_filters = false) +13943: : SstFileWriter(env_options, options, options.comparator, column_family, +13943: invalidate_page_cache, io_priority, skip_filters) {} +13943: +13943: +13943: SstFileWriter(const EnvOptions& env_options, const Options& options, +13943: const Comparator* user_comparator, +13943: ColumnFamilyHandle* column_family = nullptr, +13943: bool invalidate_page_cache = true, +13943: Env::IOPriority io_priority = Env::IOPriority::IO_TOTAL, +13943: bool skip_filters = false); +13943: +13943: ~SstFileWriter(); +13943: +13943: +13943: Status Open(const std::string& file_path, +13943: Temperature temp = Temperature::kUnknown); +13943: +13943: +13943: +13943: +13943: +13943: __attribute__((__deprecated__)) Status Add(const Slice& user_key, const Slice& value); +13943: +13943: +13943: +13943: +13943: +13943: Status Put(const Slice& user_key, const Slice& value); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status Put(const Slice& user_key, const Slice& timestamp, const Slice& value); +13943: +13943: +13943: +13943: Status PutEntity(const Slice& user_key, const WideColumns& columns); +13943: +13943: +13943: +13943: +13943: +13943: Status Merge(const Slice& user_key, const Slice& value); +13943: +13943: +13943: +13943: +13943: +13943: Status Delete(const Slice& user_key); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status Delete(const Slice& user_key, const Slice& timestamp); +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +13943: Status DeleteRange(const Slice& begin_key, const Slice& end_key); +13943: # 186 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +13943: Status DeleteRange(const Slice& begin_key, const Slice& end_key, +13943: const Slice& timestamp); +13943: +13943: +13943: +13943: +13943: +13943: Status Finish(ExternalSstFileInfo* file_info = nullptr); +13943: +13943: +13943: uint64_t FileSize(); +13943: +13943: +13943: static bool CreatedBySstFileWriter(const TableProperties&); +13943: +13943: private: +13943: void InvalidatePageCache(bool closing); +13943: struct Rep; +13943: std::unique_ptr rep_; +13943: }; +13943: } +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/transaction_log.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" 1 +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +13943: +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: class Status; +13943: class ColumnFamilyHandle; +13943: class WriteBatch; +13943: struct SliceParts; +13943: +13943: +13943: +13943: +13943: class WriteBatchBase { +13943: public: +13943: virtual ~WriteBatchBase() {} +13943: +13943: +13943: virtual Status Put(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value) = 0; +13943: virtual Status Put(const Slice& key, const Slice& value) = 0; +13943: virtual Status Put(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts, const Slice& value) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status Put(ColumnFamilyHandle* column_family, const SliceParts& key, +13943: const SliceParts& value); +13943: virtual Status Put(const SliceParts& key, const SliceParts& value); +13943: # 58 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" +13943: virtual Status TimedPut(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value, uint64_t write_unix_time) = 0; +13943: +13943: +13943: +13943: virtual Status PutEntity(ColumnFamilyHandle* column_family, const Slice& key, +13943: const WideColumns& columns) = 0; +13943: +13943: +13943: +13943: virtual Status PutEntity(const Slice& key, +13943: const AttributeGroups& attribute_groups) = 0; +13943: +13943: +13943: +13943: virtual Status Merge(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value) = 0; +13943: virtual Status Merge(const Slice& key, const Slice& value) = 0; +13943: virtual Status Merge(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts, const Slice& value) = 0; +13943: +13943: +13943: virtual Status Merge(ColumnFamilyHandle* column_family, const SliceParts& key, +13943: const SliceParts& value); +13943: virtual Status Merge(const SliceParts& key, const SliceParts& value); +13943: +13943: +13943: virtual Status Delete(ColumnFamilyHandle* column_family, +13943: const Slice& key) = 0; +13943: virtual Status Delete(const Slice& key) = 0; +13943: virtual Status Delete(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts) = 0; +13943: +13943: +13943: virtual Status Delete(ColumnFamilyHandle* column_family, +13943: const SliceParts& key); +13943: virtual Status Delete(const SliceParts& key); +13943: +13943: +13943: +13943: virtual Status SingleDelete(ColumnFamilyHandle* column_family, +13943: const Slice& key) = 0; +13943: virtual Status SingleDelete(const Slice& key) = 0; +13943: virtual Status SingleDelete(ColumnFamilyHandle* column_family, +13943: const Slice& key, const Slice& ts) = 0; +13943: +13943: +13943: virtual Status SingleDelete(ColumnFamilyHandle* column_family, +13943: const SliceParts& key); +13943: virtual Status SingleDelete(const SliceParts& key); +13943: +13943: +13943: +13943: virtual Status DeleteRange(ColumnFamilyHandle* column_family, +13943: const Slice& begin_key, const Slice& end_key) = 0; +13943: virtual Status DeleteRange(const Slice& begin_key, const Slice& end_key) = 0; +13943: virtual Status DeleteRange(ColumnFamilyHandle* column_family, +13943: const Slice& begin_key, const Slice& end_key, +13943: const Slice& ts) = 0; +13943: +13943: +13943: virtual Status DeleteRange(ColumnFamilyHandle* column_family, +13943: const SliceParts& begin_key, +13943: const SliceParts& end_key); +13943: virtual Status DeleteRange(const SliceParts& begin_key, +13943: const SliceParts& end_key); +13943: # 135 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" +13943: virtual Status PutLogData(const Slice& blob) = 0; +13943: +13943: +13943: virtual void Clear() = 0; +13943: +13943: +13943: +13943: +13943: virtual WriteBatch* GetWriteBatch() = 0; +13943: +13943: +13943: +13943: virtual void SetSavePoint() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status RollbackToSavePoint() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status PopSavePoint() = 0; +13943: +13943: +13943: virtual void SetMaxBytes(size_t max_bytes) = 0; +13943: }; +13943: +13943: } +13943: # 37 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: class ColumnFamilyHandle; +13943: struct SavePoints; +13943: struct SliceParts; +13943: +13943: struct SavePoint { +13943: size_t size; +13943: uint32_t count; +13943: uint32_t content_flags; +13943: +13943: SavePoint() : size(0), count(0), content_flags(0) {} +13943: +13943: SavePoint(size_t _size, uint32_t _count, uint32_t _flags) +13943: : size(_size), count(_count), content_flags(_flags) {} +13943: +13943: void clear() { +13943: size = 0; +13943: count = 0; +13943: content_flags = 0; +13943: } +13943: +13943: bool is_cleared() const { return (size | count | content_flags) == 0; } +13943: }; +13943: +13943: class WriteBatch : public WriteBatchBase { +13943: public: +13943: explicit WriteBatch(size_t reserved_bytes = 0, size_t max_bytes = 0) +13943: : WriteBatch(reserved_bytes, max_bytes, 0, 0) {} +13943: +13943: +13943: +13943: +13943: explicit WriteBatch(size_t reserved_bytes, size_t max_bytes, +13943: size_t protection_bytes_per_key, size_t default_cf_ts_sz); +13943: ~WriteBatch() override; +13943: +13943: using WriteBatchBase::Put; +13943: +13943: +13943: +13943: +13943: +13943: Status Put(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value) override; +13943: Status Put(const Slice& key, const Slice& value) override { +13943: return Put(nullptr, key, value); +13943: } +13943: Status Put(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts, const Slice& value) override; +13943: # 97 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +13943: Status Put(ColumnFamilyHandle* column_family, const SliceParts& key, +13943: const SliceParts& value) override; +13943: Status Put(const SliceParts& key, const SliceParts& value) override { +13943: return Put(nullptr, key, value); +13943: } +13943: +13943: using WriteBatchBase::TimedPut; +13943: +13943: +13943: +13943: +13943: Status TimedPut(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value, uint64_t write_unix_time) override; +13943: +13943: +13943: +13943: using WriteBatchBase::PutEntity; +13943: Status PutEntity(ColumnFamilyHandle* column_family, const Slice& key, +13943: const WideColumns& columns) override; +13943: +13943: +13943: +13943: Status PutEntity(const Slice& key, +13943: const AttributeGroups& attribute_groups) override; +13943: +13943: using WriteBatchBase::Delete; +13943: +13943: +13943: +13943: +13943: +13943: Status Delete(ColumnFamilyHandle* column_family, const Slice& key) override; +13943: Status Delete(const Slice& key) override { return Delete(nullptr, key); } +13943: Status Delete(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts) override; +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status Delete(ColumnFamilyHandle* column_family, +13943: const SliceParts& key) override; +13943: Status Delete(const SliceParts& key) override { return Delete(nullptr, key); } +13943: +13943: using WriteBatchBase::SingleDelete; +13943: +13943: Status SingleDelete(ColumnFamilyHandle* column_family, +13943: const Slice& key) override; +13943: Status SingleDelete(const Slice& key) override { +13943: return SingleDelete(nullptr, key); +13943: } +13943: Status SingleDelete(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts) override; +13943: +13943: +13943: Status SingleDelete(ColumnFamilyHandle* column_family, +13943: const SliceParts& key) override; +13943: Status SingleDelete(const SliceParts& key) override { +13943: return SingleDelete(nullptr, key); +13943: } +13943: +13943: using WriteBatchBase::DeleteRange; +13943: +13943: Status DeleteRange(ColumnFamilyHandle* column_family, const Slice& begin_key, +13943: const Slice& end_key) override; +13943: Status DeleteRange(const Slice& begin_key, const Slice& end_key) override { +13943: return DeleteRange(nullptr, begin_key, end_key); +13943: } +13943: +13943: Status DeleteRange(ColumnFamilyHandle* column_family, const Slice& begin_key, +13943: const Slice& end_key, const Slice& ts) override; +13943: +13943: +13943: Status DeleteRange(ColumnFamilyHandle* column_family, +13943: const SliceParts& begin_key, +13943: const SliceParts& end_key) override; +13943: Status DeleteRange(const SliceParts& begin_key, +13943: const SliceParts& end_key) override { +13943: return DeleteRange(nullptr, begin_key, end_key); +13943: } +13943: +13943: using WriteBatchBase::Merge; +13943: +13943: +13943: Status Merge(ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value) override; +13943: Status Merge(const Slice& key, const Slice& value) override { +13943: return Merge(nullptr, key, value); +13943: } +13943: Status Merge(ColumnFamilyHandle* , const Slice& , +13943: const Slice& , const Slice& ) override; +13943: +13943: +13943: Status Merge(ColumnFamilyHandle* column_family, const SliceParts& key, +13943: const SliceParts& value) override; +13943: Status Merge(const SliceParts& key, const SliceParts& value) override { +13943: return Merge(nullptr, key, value); +13943: } +13943: +13943: using WriteBatchBase::PutLogData; +13943: # 208 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +13943: Status PutLogData(const Slice& blob) override; +13943: +13943: using WriteBatchBase::Clear; +13943: +13943: +13943: +13943: void Clear() override; +13943: +13943: +13943: +13943: void SetSavePoint() override; +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status RollbackToSavePoint() override; +13943: +13943: +13943: +13943: +13943: +13943: Status PopSavePoint() override; +13943: +13943: +13943: +13943: class Handler { +13943: public: +13943: virtual ~Handler(); +13943: # 246 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +13943: virtual Status PutCF(uint32_t column_family_id, const Slice& key, +13943: const Slice& value) { +13943: if (column_family_id == 0) { +13943: +13943: +13943: +13943: Put(key, value); +13943: return Status::OK(); +13943: } +13943: return Status::InvalidArgument( +13943: "non-default column family and PutCF not implemented"); +13943: } +13943: +13943: virtual void Put(const Slice& , const Slice& ) {} +13943: +13943: +13943: virtual Status TimedPutCF(uint32_t , +13943: const Slice& , const Slice& , +13943: uint64_t ) { +13943: return Status::InvalidArgument("TimedPutCF not implemented"); +13943: } +13943: +13943: +13943: virtual Status PutEntityCF(uint32_t , +13943: const Slice& , +13943: const Slice& ) { +13943: return Status::NotSupported("PutEntityCF not implemented"); +13943: } +13943: +13943: +13943: virtual Status DeleteCF(uint32_t column_family_id, const Slice& key) { +13943: if (column_family_id == 0) { +13943: Delete(key); +13943: return Status::OK(); +13943: } +13943: return Status::InvalidArgument( +13943: "non-default column family and DeleteCF not implemented"); +13943: } +13943: +13943: virtual void Delete(const Slice& ) {} +13943: +13943: +13943: virtual Status SingleDeleteCF(uint32_t column_family_id, const Slice& key) { +13943: if (column_family_id == 0) { +13943: SingleDelete(key); +13943: return Status::OK(); +13943: } +13943: return Status::InvalidArgument( +13943: "non-default column family and SingleDeleteCF not implemented"); +13943: } +13943: +13943: virtual void SingleDelete(const Slice& ) {} +13943: +13943: +13943: +13943: virtual Status DeleteRangeCF(uint32_t , +13943: const Slice& , +13943: const Slice& ) { +13943: return Status::InvalidArgument("DeleteRangeCF not implemented"); +13943: } +13943: +13943: +13943: virtual Status MergeCF(uint32_t column_family_id, const Slice& key, +13943: const Slice& value) { +13943: if (column_family_id == 0) { +13943: Merge(key, value); +13943: return Status::OK(); +13943: } +13943: return Status::InvalidArgument( +13943: "non-default column family and MergeCF not implemented"); +13943: } +13943: +13943: virtual void Merge(const Slice& , const Slice& ) {} +13943: +13943: +13943: virtual Status PutBlobIndexCF(uint32_t , +13943: const Slice& , +13943: const Slice& ) { +13943: return Status::InvalidArgument("PutBlobIndexCF not implemented"); +13943: } +13943: +13943: +13943: virtual void LogData(const Slice& blob); +13943: +13943: virtual Status MarkBeginPrepare(bool = false) { +13943: return Status::InvalidArgument("MarkBeginPrepare() handler not defined."); +13943: } +13943: +13943: virtual Status MarkEndPrepare(const Slice& ) { +13943: return Status::InvalidArgument("MarkEndPrepare() handler not defined."); +13943: } +13943: +13943: virtual Status MarkNoop(bool ) { +13943: return Status::InvalidArgument("MarkNoop() handler not defined."); +13943: } +13943: +13943: virtual Status MarkRollback(const Slice& ) { +13943: return Status::InvalidArgument( +13943: "MarkRollbackPrepare() handler not defined."); +13943: } +13943: +13943: virtual Status MarkCommit(const Slice& ) { +13943: return Status::InvalidArgument("MarkCommit() handler not defined."); +13943: } +13943: +13943: virtual Status MarkCommitWithTimestamp(const Slice& , +13943: const Slice& ) { +13943: return Status::InvalidArgument( +13943: "MarkCommitWithTimestamp() handler not defined."); +13943: } +13943: +13943: +13943: +13943: +13943: virtual bool Continue(); +13943: +13943: protected: +13943: friend class WriteBatchInternal; +13943: enum class OptionState { +13943: kUnknown, +13943: kDisabled, +13943: kEnabled, +13943: }; +13943: virtual OptionState WriteAfterCommit() const { +13943: return OptionState::kUnknown; +13943: } +13943: virtual OptionState WriteBeforePrepare() const { +13943: return OptionState::kUnknown; +13943: } +13943: }; +13943: Status Iterate(Handler* handler) const; +13943: +13943: +13943: const std::string& Data() const { return rep_; } +13943: +13943: +13943: std::string Release(); +13943: +13943: +13943: size_t GetDataSize() const { return rep_.size(); } +13943: +13943: +13943: uint32_t Count() const; +13943: +13943: +13943: bool HasPut() const; +13943: +13943: +13943: bool HasTimedPut() const; +13943: +13943: +13943: bool HasPutEntity() const; +13943: +13943: +13943: bool HasDelete() const; +13943: +13943: +13943: bool HasSingleDelete() const; +13943: +13943: +13943: bool HasDeleteRange() const; +13943: +13943: +13943: bool HasMerge() const; +13943: +13943: +13943: bool HasBeginPrepare() const; +13943: +13943: +13943: bool HasEndPrepare() const; +13943: +13943: +13943: bool HasCommit() const; +13943: +13943: +13943: bool HasRollback() const; +13943: # 439 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +13943: Status UpdateTimestamps(const Slice& ts, +13943: std::function ts_sz_func); +13943: +13943: +13943: +13943: +13943: +13943: void SetTrackTimestampSize(bool track_timestamp_size) { +13943: track_timestamp_size_ = track_timestamp_size; +13943: } +13943: +13943: inline void MaybeTrackTimestampSize(uint32_t column_family_id, size_t ts_sz) { +13943: if (!track_timestamp_size_) { +13943: return; +13943: } +13943: auto iter = cf_id_to_ts_sz_.find(column_family_id); +13943: if (iter == cf_id_to_ts_sz_.end()) { +13943: cf_id_to_ts_sz_.emplace(column_family_id, ts_sz); +13943: } +13943: } +13943: +13943: +13943: +13943: const std::unordered_map& GetColumnFamilyToTimestampSize() { +13943: return cf_id_to_ts_sz_; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: Status VerifyChecksum() const; +13943: +13943: using WriteBatchBase::GetWriteBatch; +13943: WriteBatch* GetWriteBatch() override { return this; } +13943: +13943: +13943: explicit WriteBatch(const std::string& rep); +13943: explicit WriteBatch(std::string&& rep); +13943: +13943: WriteBatch(const WriteBatch& src); +13943: WriteBatch(WriteBatch&& src) noexcept; +13943: WriteBatch& operator=(const WriteBatch& src); +13943: WriteBatch& operator=(WriteBatch&& src); +13943: +13943: +13943: +13943: void MarkWalTerminationPoint(); +13943: const SavePoint& GetWalTerminationPoint() const { return wal_term_point_; } +13943: +13943: void SetMaxBytes(size_t max_bytes) override { max_bytes_ = max_bytes; } +13943: +13943: struct ProtectionInfo; +13943: size_t GetProtectionBytesPerKey() const; +13943: +13943: private: +13943: friend class WriteBatchInternal; +13943: friend class LocalSavePoint; +13943: +13943: +13943: +13943: friend class WriteBatchWithIndex; +13943: std::unique_ptr save_points_; +13943: +13943: +13943: +13943: +13943: SavePoint wal_term_point_; +13943: +13943: +13943: +13943: +13943: +13943: bool is_latest_persistent_state_ = false; +13943: # 521 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +13943: bool needs_in_place_update_ts_ = false; +13943: +13943: +13943: +13943: bool has_key_with_ts_ = false; +13943: +13943: +13943: mutable std::atomic content_flags_; +13943: +13943: +13943: uint32_t ComputeContentFlags() const; +13943: +13943: +13943: size_t max_bytes_; +13943: +13943: std::unique_ptr prot_info_; +13943: +13943: size_t default_cf_ts_sz_ = 0; +13943: +13943: bool track_timestamp_size_ = false; +13943: +13943: std::unordered_map cf_id_to_ts_sz_; +13943: +13943: protected: +13943: std::string rep_; +13943: }; +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/transaction_log.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class WalFile; +13943: using VectorWalPtr = std::vector>; +13943: +13943: using VectorLogPtr = VectorWalPtr; +13943: +13943: enum WalFileType { +13943: +13943: +13943: +13943: +13943: +13943: +13943: kArchivedLogFile = 0, +13943: +13943: +13943: kAliveLogFile = 1 +13943: }; +13943: +13943: class WalFile { +13943: public: +13943: WalFile() {} +13943: virtual ~WalFile() {} +13943: +13943: +13943: +13943: +13943: virtual std::string PathName() const = 0; +13943: +13943: +13943: +13943: virtual uint64_t LogNumber() const = 0; +13943: +13943: +13943: virtual WalFileType Type() const = 0; +13943: +13943: +13943: virtual SequenceNumber StartSequence() const = 0; +13943: +13943: +13943: +13943: virtual uint64_t SizeFileBytes() const = 0; +13943: }; +13943: +13943: +13943: using LogFile = WalFile; +13943: +13943: struct BatchResult { +13943: SequenceNumber sequence = 0; +13943: std::unique_ptr writeBatchPtr; +13943: +13943: +13943: +13943: +13943: BatchResult() {} +13943: +13943: ~BatchResult() {} +13943: +13943: BatchResult(const BatchResult&) = delete; +13943: +13943: BatchResult& operator=(const BatchResult&) = delete; +13943: +13943: BatchResult(BatchResult&& bResult) +13943: : sequence(std::move(bResult.sequence)), +13943: writeBatchPtr(std::move(bResult.writeBatchPtr)) {} +13943: +13943: BatchResult& operator=(BatchResult&& bResult) { +13943: sequence = std::move(bResult.sequence); +13943: writeBatchPtr = std::move(bResult.writeBatchPtr); +13943: return *this; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: class TransactionLogIterator { +13943: public: +13943: TransactionLogIterator() {} +13943: virtual ~TransactionLogIterator() {} +13943: +13943: +13943: +13943: +13943: virtual bool Valid() = 0; +13943: +13943: +13943: +13943: virtual void Next() = 0; +13943: +13943: +13943: +13943: virtual Status status() = 0; +13943: +13943: +13943: +13943: +13943: virtual BatchResult GetBatch() = 0; +13943: +13943: +13943: struct ReadOptions { +13943: +13943: +13943: +13943: bool verify_checksums_; +13943: +13943: ReadOptions() : verify_checksums_(true) {} +13943: +13943: explicit ReadOptions(bool verify_checksums) +13943: : verify_checksums_(verify_checksums) {} +13943: }; +13943: }; +13943: } +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/user_write_callback.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: class UserWriteCallback { +13943: public: +13943: virtual ~UserWriteCallback() {} +13943: +13943: +13943: virtual void OnWriteEnqueued() = 0; +13943: +13943: +13943: virtual void OnWalWriteFinish() = 0; +13943: }; +13943: +13943: } +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: class CompactOnDeletionCollectorFactory +13943: : public TablePropertiesCollectorFactory { +13943: public: +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +13943: CompactOnDeletionCollectorFactory(size_t sliding_window_size, +13943: size_t deletion_trigger, +13943: double deletion_ratio); +13943: +13943: ~CompactOnDeletionCollectorFactory() override {} +13943: +13943: TablePropertiesCollector* CreateTablePropertiesCollector( +13943: TablePropertiesCollectorFactory::Context context) override; +13943: +13943: +13943: +13943: void SetWindowSize(size_t sliding_window_size) { +13943: sliding_window_size_.store(sliding_window_size); +13943: } +13943: size_t GetWindowSize() const { return sliding_window_size_.load(); } +13943: +13943: +13943: void SetDeletionTrigger(size_t deletion_trigger) { +13943: deletion_trigger_.store(deletion_trigger); +13943: } +13943: +13943: size_t GetDeletionTrigger() const { return deletion_trigger_.load(); } +13943: +13943: +13943: +13943: void SetDeletionRatio(double deletion_ratio) { +13943: deletion_ratio_.store(deletion_ratio); +13943: } +13943: +13943: double GetDeletionRatio() const { return deletion_ratio_.load(); } +13943: static const char* kClassName() { return "CompactOnDeletionCollector"; } +13943: const char* Name() const override { return kClassName(); } +13943: +13943: std::string ToString() const override; +13943: +13943: private: +13943: std::atomic sliding_window_size_; +13943: std::atomic deletion_trigger_; +13943: std::atomic deletion_ratio_; +13943: }; +13943: # 85 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +13943: std::shared_ptr +13943: NewCompactOnDeletionCollectorFactory(size_t sliding_window_size, +13943: size_t deletion_trigger, +13943: double deletion_ratio = 0); +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +13943: class CompactForTieringCollectorFactory +13943: : public TablePropertiesCollectorFactory { +13943: public: +13943: +13943: +13943: +13943: CompactForTieringCollectorFactory(double compaction_trigger_ratio); +13943: +13943: ~CompactForTieringCollectorFactory() override {} +13943: +13943: TablePropertiesCollector* CreateTablePropertiesCollector( +13943: TablePropertiesCollectorFactory::Context context) override; +13943: +13943: void SetCompactionTriggerRatio(double new_ratio) { +13943: compaction_trigger_ratio_.store(new_ratio); +13943: } +13943: +13943: double GetCompactionTriggerRatio() const { +13943: return compaction_trigger_ratio_.load(); +13943: } +13943: +13943: static const char* kClassName() { return "CompactForTieringCollector"; } +13943: const char* Name() const override { return kClassName(); } +13943: +13943: std::string ToString() const override; +13943: +13943: private: +13943: std::atomic compaction_trigger_ratio_; +13943: }; +13943: +13943: std::shared_ptr +13943: NewCompactForTieringCollectorFactory(double compaction_trigger_ratio); +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct DataCollectionUnixWriteTimeInfo { +13943: +13943: uint64_t min_write_time = 0; +13943: +13943: uint64_t max_write_time = 0; +13943: +13943: uint64_t average_write_time = 0; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t num_entries_infinitely_old = 0; +13943: +13943: +13943: uint64_t num_entries_write_time_aggregated = 0; +13943: +13943: +13943: uint64_t num_entries_write_time_untracked = 0; +13943: +13943: DataCollectionUnixWriteTimeInfo() {} +13943: +13943: DataCollectionUnixWriteTimeInfo(uint64_t _min_write_time, +13943: uint64_t _max_write_time, +13943: uint64_t _average_write_time, +13943: uint64_t _num_entries_infinitely_old, +13943: uint64_t _num_entries_write_time_aggregated, +13943: uint64_t _num_entries_write_time_untracked) +13943: : min_write_time(_min_write_time), +13943: max_write_time(_max_write_time), +13943: average_write_time(_average_write_time), +13943: num_entries_infinitely_old(_num_entries_infinitely_old), +13943: num_entries_write_time_aggregated(_num_entries_write_time_aggregated), +13943: num_entries_write_time_untracked(_num_entries_write_time_untracked) {} +13943: +13943: +13943: +13943: bool DataCollectionIsEmpty() const { +13943: return num_entries_infinitely_old == 0 && +13943: num_entries_write_time_aggregated == 0 && +13943: num_entries_write_time_untracked == 0; +13943: } +13943: # 193 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +13943: double TrackedDataRatio() const { +13943: if (DataCollectionIsEmpty()) { +13943: return 0; +13943: } +13943: uint64_t num_entries_write_time_tracked = +13943: num_entries_infinitely_old + num_entries_write_time_aggregated; +13943: return num_entries_write_time_tracked / +13943: static_cast(num_entries_write_time_tracked + +13943: num_entries_write_time_untracked); +13943: } +13943: +13943: +13943: bool HasInfinitelyOldData() const { return num_entries_infinitely_old > 0; } +13943: }; +13943: +13943: +13943: +13943: Status GetDataCollectionUnixWriteTimeInfoForFile( +13943: const std::shared_ptr& table_properties, +13943: std::unique_ptr* file_info); +13943: +13943: +13943: +13943: Status GetDataCollectionUnixWriteTimeInfoForLevels( +13943: const std::vector>& +13943: levels_table_properties, +13943: std::vector>* levels_info); +13943: } +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +13943: # 47 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: namespace rocksdb { +13943: +13943: struct ColumnFamilyOptions; +13943: struct CompactionOptions; +13943: struct CompactRangeOptions; +13943: struct DBOptions; +13943: struct ExternalSstFileInfo; +13943: struct FlushOptions; +13943: struct Options; +13943: struct ReadOptions; +13943: struct TableProperties; +13943: struct WriteOptions; +13943: struct WaitForCompactOptions; +13943: class Env; +13943: class EventListener; +13943: class FileSystem; +13943: class Replayer; +13943: class StatsHistoryIterator; +13943: class TraceReader; +13943: class TraceWriter; +13943: class WriteBatch; +13943: +13943: extern const std::string kDefaultColumnFamilyName; +13943: extern const std::string kPersistentStatsColumnFamilyName; +13943: struct ColumnFamilyDescriptor { +13943: std::string name; +13943: ColumnFamilyOptions options; +13943: ColumnFamilyDescriptor() +13943: : name(kDefaultColumnFamilyName), options(ColumnFamilyOptions()) {} +13943: ColumnFamilyDescriptor(const std::string& _name, +13943: const ColumnFamilyOptions& _options) +13943: : name(_name), options(_options) {} +13943: }; +13943: +13943: class ColumnFamilyHandle { +13943: public: +13943: virtual ~ColumnFamilyHandle() {} +13943: +13943: virtual const std::string& GetName() const = 0; +13943: +13943: virtual uint32_t GetID() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetDescriptor(ColumnFamilyDescriptor* desc) = 0; +13943: +13943: +13943: virtual const Comparator* GetComparator() const = 0; +13943: }; +13943: +13943: static const int kMajorVersion = 9; +13943: static const int kMinorVersion = 10; +13943: +13943: +13943: struct Range { +13943: +13943: +13943: Slice start; +13943: Slice limit; +13943: +13943: Range() {} +13943: Range(const Slice& s, const Slice& l) : start(s), limit(l) {} +13943: }; +13943: +13943: struct RangePtr { +13943: +13943: +13943: const Slice* start; +13943: const Slice* limit; +13943: +13943: RangePtr() : start(nullptr), limit(nullptr) {} +13943: RangePtr(const Slice* s, const Slice* l) : start(s), limit(l) {} +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct IngestExternalFileArg { +13943: ColumnFamilyHandle* column_family = nullptr; +13943: std::vector external_files; +13943: IngestExternalFileOptions options; +13943: std::vector files_checksums; +13943: std::vector files_checksum_func_names; +13943: +13943: Temperature file_temperature = Temperature::kUnknown; +13943: }; +13943: +13943: struct GetMergeOperandsOptions { +13943: using ContinueCallback = std::function; +13943: +13943: +13943: +13943: +13943: +13943: +13943: int expected_max_number_of_operands = 0; +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: ContinueCallback continue_cb; +13943: }; +13943: +13943: +13943: +13943: +13943: using TablePropertiesCollection = +13943: std::unordered_map>; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class DB { +13943: public: +13943: # 186 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status Open(const Options& options, const std::string& name, +13943: DB** dbptr); +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status Open(const DBOptions& db_options, const std::string& name, +13943: const std::vector& column_families, +13943: std::vector* handles, DB** dbptr); +13943: # 221 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status OpenForReadOnly(const Options& options, const std::string& name, +13943: DB** dbptr, +13943: bool error_if_wal_file_exists = false); +13943: # 232 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status OpenForReadOnly( +13943: const DBOptions& db_options, const std::string& name, +13943: const std::vector& column_families, +13943: std::vector* handles, DB** dbptr, +13943: bool error_if_wal_file_exists = false); +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status OpenAsSecondary(const Options& options, const std::string& name, +13943: const std::string& secondary_path, DB** dbptr); +13943: # 297 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status OpenAsSecondary( +13943: const DBOptions& db_options, const std::string& name, +13943: const std::string& secondary_path, +13943: const std::vector& column_families, +13943: std::vector* handles, DB** dbptr); +13943: # 314 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status OpenAsFollower(const Options& options, const std::string& name, +13943: const std::string& leader_path, +13943: std::unique_ptr* dbptr); +13943: +13943: +13943: static Status OpenAsFollower( +13943: const DBOptions& db_options, const std::string& name, +13943: const std::string& leader_path, +13943: const std::vector& column_families, +13943: std::vector* handles, std::unique_ptr* dbptr); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: static Status OpenAndCompact( +13943: const std::string& name, const std::string& output_directory, +13943: const std::string& input, std::string* output, +13943: const CompactionServiceOptionsOverride& override_options); +13943: +13943: static Status OpenAndCompact( +13943: const OpenAndCompactOptions& options, const std::string& name, +13943: const std::string& output_directory, const std::string& input, +13943: std::string* output, +13943: const CompactionServiceOptionsOverride& override_options); +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static Status OpenAndTrimHistory( +13943: const DBOptions& db_options, const std::string& dbname, +13943: const std::vector& column_families, +13943: std::vector* handles, DB** dbptr, +13943: std::string trim_ts); +13943: # 367 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status Resume() { return Status::NotSupported(); } +13943: # 386 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status Close() { return Status::NotSupported(); } +13943: +13943: +13943: +13943: +13943: +13943: static Status ListColumnFamilies(const DBOptions& db_options, +13943: const std::string& name, +13943: std::vector* column_families); +13943: +13943: +13943: DB() {} +13943: +13943: DB(const DB&) = delete; +13943: void operator=(const DB&) = delete; +13943: +13943: virtual ~DB(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status CreateColumnFamily(const ColumnFamilyOptions& options, +13943: const std::string& column_family_name, +13943: ColumnFamilyHandle** handle); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status CreateColumnFamilies( +13943: const ColumnFamilyOptions& options, +13943: const std::vector& column_family_names, +13943: std::vector* handles); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status CreateColumnFamilies( +13943: const std::vector& column_families, +13943: std::vector* handles); +13943: +13943: +13943: +13943: +13943: virtual Status DropColumnFamily(ColumnFamilyHandle* column_family); +13943: +13943: +13943: +13943: +13943: +13943: virtual Status DropColumnFamilies( +13943: const std::vector& column_families); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status DestroyColumnFamilyHandle(ColumnFamilyHandle* column_family); +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Put(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value) = 0; +13943: virtual Status Put(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts, const Slice& value) = 0; +13943: virtual Status Put(const WriteOptions& options, const Slice& key, +13943: const Slice& value) { +13943: return Put(options, DefaultColumnFamily(), key, value); +13943: } +13943: virtual Status Put(const WriteOptions& options, const Slice& key, +13943: const Slice& ts, const Slice& value) { +13943: return Put(options, DefaultColumnFamily(), key, ts, value); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status PutEntity(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: const WideColumns& columns); +13943: +13943: +13943: virtual Status PutEntity(const WriteOptions& options, const Slice& key, +13943: const AttributeGroups& attribute_groups); +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Delete(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const Slice& key) = 0; +13943: virtual Status Delete(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& ts) = 0; +13943: virtual Status Delete(const WriteOptions& options, const Slice& key) { +13943: return Delete(options, DefaultColumnFamily(), key); +13943: } +13943: virtual Status Delete(const WriteOptions& options, const Slice& key, +13943: const Slice& ts) { +13943: return Delete(options, DefaultColumnFamily(), key, ts); +13943: } +13943: # 518 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status SingleDelete(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const Slice& key) = 0; +13943: virtual Status SingleDelete(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const Slice& key, const Slice& ts) = 0; +13943: virtual Status SingleDelete(const WriteOptions& options, const Slice& key) { +13943: return SingleDelete(options, DefaultColumnFamily(), key); +13943: } +13943: virtual Status SingleDelete(const WriteOptions& options, const Slice& key, +13943: const Slice& ts) { +13943: return SingleDelete(options, DefaultColumnFamily(), key, ts); +13943: } +13943: # 548 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status DeleteRange(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const Slice& begin_key, const Slice& end_key); +13943: virtual Status DeleteRange(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const Slice& begin_key, const Slice& end_key, +13943: const Slice& ts); +13943: virtual Status DeleteRange(const WriteOptions& options, +13943: const Slice& begin_key, const Slice& end_key) { +13943: return DeleteRange(options, DefaultColumnFamily(), begin_key, end_key); +13943: } +13943: virtual Status DeleteRange(const WriteOptions& options, +13943: const Slice& begin_key, const Slice& end_key, +13943: const Slice& ts) { +13943: return DeleteRange(options, DefaultColumnFamily(), begin_key, end_key, ts); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Merge(const WriteOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: const Slice& value) = 0; +13943: virtual Status Merge(const WriteOptions& options, const Slice& key, +13943: const Slice& value) { +13943: return Merge(options, DefaultColumnFamily(), key, value); +13943: } +13943: virtual Status Merge(const WriteOptions& , +13943: ColumnFamilyHandle* , +13943: const Slice& , const Slice& , +13943: const Slice& ); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Write(const WriteOptions& options, WriteBatch* updates) = 0; +13943: +13943: +13943: +13943: virtual Status WriteWithCallback(const WriteOptions& , +13943: WriteBatch* , +13943: UserWriteCallback* ) { +13943: return Status::NotSupported( +13943: "WriteWithCallback not implemented for this interface."); +13943: } +13943: # 611 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status Get(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: PinnableSlice* value, std::string* timestamp) = 0; +13943: +13943: +13943: +13943: +13943: virtual inline Status Get(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: std::string* value, std::string* timestamp) final { +13943: +13943: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: (static_cast ( +13943: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: value != nullptr +13943: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: "value != nullptr" +13943: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: ; +13943: PinnableSlice pinnable_val(value); +13943: +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: (static_cast ( +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: !pinnable_val.IsPinned() +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: "!pinnable_val.IsPinned()" +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: ; +13943: auto s = Get(options, column_family, key, &pinnable_val, timestamp); +13943: if (s.ok() && pinnable_val.IsPinned()) { +13943: value->assign(pinnable_val.data(), pinnable_val.size()); +13943: } +13943: return s; +13943: } +13943: +13943: +13943: +13943: virtual Status Get(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: PinnableSlice* value) final { +13943: return Get(options, column_family, key, value, nullptr); +13943: } +13943: +13943: +13943: +13943: virtual inline Status Get(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: std::string* value) final { +13943: +13943: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: (static_cast ( +13943: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: value != nullptr +13943: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: "value != nullptr" +13943: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: ; +13943: PinnableSlice pinnable_val(value); +13943: +13943: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: (static_cast ( +13943: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: !pinnable_val.IsPinned() +13943: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: "!pinnable_val.IsPinned()" +13943: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: ; +13943: auto s = Get(options, column_family, key, &pinnable_val); +13943: if (s.ok() && pinnable_val.IsPinned()) { +13943: value->assign(pinnable_val.data(), pinnable_val.size()); +13943: } +13943: return s; +13943: } +13943: +13943: +13943: +13943: +13943: virtual Status Get(const ReadOptions& options, const Slice& key, +13943: std::string* value) final { +13943: return Get(options, DefaultColumnFamily(), key, value); +13943: } +13943: +13943: +13943: +13943: +13943: virtual Status Get(const ReadOptions& options, const Slice& key, +13943: std::string* value, std::string* timestamp) final { +13943: return Get(options, DefaultColumnFamily(), key, value, timestamp); +13943: } +13943: # 679 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status GetEntity(const ReadOptions& , +13943: ColumnFamilyHandle* , +13943: const Slice& , +13943: PinnableWideColumns* ) { +13943: return Status::NotSupported("GetEntity not supported"); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetEntity(const ReadOptions& , +13943: const Slice& , +13943: PinnableAttributeGroups* ) { +13943: return Status::NotSupported("GetEntity not supported"); +13943: } +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status GetMergeOperands( +13943: const ReadOptions& options, ColumnFamilyHandle* column_family, +13943: const Slice& key, PinnableSlice* merge_operands, +13943: GetMergeOperandsOptions* get_merge_operands_options, +13943: int* number_of_operands) = 0; +13943: # 741 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual std::vector MultiGet( +13943: const ReadOptions& options, +13943: const std::vector& column_families, +13943: const std::vector& keys, std::vector* values, +13943: std::vector* timestamps) final { +13943: size_t num_keys = keys.size(); +13943: std::vector statuses(num_keys); +13943: std::vector pin_values(num_keys); +13943: +13943: values->resize(num_keys); +13943: if (timestamps) { +13943: timestamps->resize(num_keys); +13943: } +13943: MultiGet(options, num_keys, +13943: const_cast(column_families.data()), +13943: keys.data(), pin_values.data(), +13943: timestamps ? timestamps->data() : nullptr, statuses.data(), +13943: false); +13943: for (size_t i = 0; i < num_keys; ++i) { +13943: if (statuses[i].ok()) { +13943: (*values)[i].assign(pin_values[i].data(), pin_values[i].size()); +13943: } +13943: } +13943: return statuses; +13943: } +13943: +13943: +13943: +13943: virtual std::vector MultiGet( +13943: const ReadOptions& options, +13943: const std::vector& column_family, +13943: const std::vector& keys, std::vector* values) final { +13943: values->resize(keys.size()); +13943: return MultiGet(options, column_family, keys, values, nullptr); +13943: } +13943: +13943: +13943: +13943: virtual std::vector MultiGet(const ReadOptions& options, +13943: const std::vector& keys, +13943: std::vector* values) final { +13943: values->resize(keys.size()); +13943: return MultiGet( +13943: options, +13943: std::vector(keys.size(), DefaultColumnFamily()), +13943: keys, values); +13943: } +13943: +13943: +13943: +13943: virtual std::vector MultiGet( +13943: const ReadOptions& options, const std::vector& keys, +13943: std::vector* values, +13943: std::vector* timestamps) final { +13943: values->resize(keys.size()); +13943: return MultiGet( +13943: options, +13943: std::vector(keys.size(), DefaultColumnFamily()), +13943: keys, values, timestamps); +13943: } +13943: # 830 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual void MultiGet(const ReadOptions& options, const size_t num_keys, +13943: ColumnFamilyHandle** column_families, const Slice* keys, +13943: PinnableSlice* values, std::string* timestamps, +13943: Status* statuses, const bool sorted_input = false) = 0; +13943: +13943: +13943: +13943: virtual void MultiGet(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const size_t num_keys, const Slice* keys, +13943: PinnableSlice* values, std::string* timestamps, +13943: Status* statuses, +13943: const bool sorted_input = false) final; +13943: +13943: +13943: +13943: virtual void MultiGet(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const size_t num_keys, const Slice* keys, +13943: PinnableSlice* values, Status* statuses, +13943: const bool sorted_input = false) final { +13943: MultiGet(options, column_family, num_keys, keys, values, nullptr, statuses, +13943: sorted_input); +13943: } +13943: +13943: +13943: +13943: virtual void MultiGet(const ReadOptions& options, const size_t num_keys, +13943: ColumnFamilyHandle** column_families, const Slice* keys, +13943: PinnableSlice* values, Status* statuses, +13943: const bool sorted_input = false) final { +13943: MultiGet(options, num_keys, column_families, keys, values, nullptr, +13943: statuses, sorted_input); +13943: } +13943: # 884 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual void MultiGetEntity(const ReadOptions& , +13943: ColumnFamilyHandle* , +13943: size_t num_keys, const Slice* , +13943: PinnableWideColumns* , +13943: Status* statuses, +13943: bool = false) { +13943: for (size_t i = 0; i < num_keys; ++i) { +13943: statuses[i] = Status::NotSupported("MultiGetEntity not supported"); +13943: } +13943: } +13943: # 916 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual void MultiGetEntity(const ReadOptions& , size_t num_keys, +13943: ColumnFamilyHandle** , +13943: const Slice* , +13943: PinnableWideColumns* , +13943: Status* statuses, +13943: bool = false) { +13943: for (size_t i = 0; i < num_keys; ++i) { +13943: statuses[i] = Status::NotSupported("MultiGetEntity not supported"); +13943: } +13943: } +13943: # 944 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual void MultiGetEntity(const ReadOptions& , size_t num_keys, +13943: const Slice* , +13943: PinnableAttributeGroups* results) { +13943: for (size_t i = 0; i < num_keys; ++i) { +13943: for (size_t j = 0; j < results[i].size(); ++j) { +13943: results[i][j].SetStatus( +13943: Status::NotSupported("MultiGetEntity not supported")); +13943: } +13943: } +13943: } +13943: # 962 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual bool KeyMayExist(const ReadOptions& , +13943: ColumnFamilyHandle* , +13943: const Slice& , std::string* , +13943: std::string* , +13943: bool* value_found = nullptr) { +13943: if (value_found != nullptr) { +13943: *value_found = false; +13943: } +13943: return true; +13943: } +13943: +13943: virtual bool KeyMayExist(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family, const Slice& key, +13943: std::string* value, bool* value_found = nullptr) { +13943: return KeyMayExist(options, column_family, key, value, +13943: nullptr, value_found); +13943: } +13943: +13943: virtual bool KeyMayExist(const ReadOptions& options, const Slice& key, +13943: std::string* value, bool* value_found = nullptr) { +13943: return KeyMayExist(options, DefaultColumnFamily(), key, value, value_found); +13943: } +13943: +13943: virtual bool KeyMayExist(const ReadOptions& options, const Slice& key, +13943: std::string* value, std::string* timestamp, +13943: bool* value_found = nullptr) { +13943: return KeyMayExist(options, DefaultColumnFamily(), key, value, timestamp, +13943: value_found); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Iterator* NewIterator(const ReadOptions& options, +13943: ColumnFamilyHandle* column_family) = 0; +13943: virtual Iterator* NewIterator(const ReadOptions& options) { +13943: return NewIterator(options, DefaultColumnFamily()); +13943: } +13943: +13943: +13943: +13943: virtual Status NewIterators( +13943: const ReadOptions& options, +13943: const std::vector& column_families, +13943: std::vector* iterators) = 0; +13943: # 1024 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual std::unique_ptr NewCoalescingIterator( +13943: const ReadOptions& options, +13943: const std::vector& column_families) = 0; +13943: +13943: +13943: +13943: virtual std::unique_ptr NewAttributeGroupIterator( +13943: const ReadOptions& options, +13943: const std::vector& column_families) = 0; +13943: # 1041 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual const Snapshot* GetSnapshot() = 0; +13943: +13943: +13943: +13943: virtual void ReleaseSnapshot(const Snapshot* snapshot) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct Properties { +13943: +13943: +13943: +13943: static const std::string kNumFilesAtLevelPrefix; +13943: +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kCompressionRatioAtLevelPrefix; +13943: +13943: +13943: +13943: static const std::string kStats; +13943: +13943: +13943: +13943: static const std::string kSSTables; +13943: +13943: +13943: +13943: static const std::string kCFStats; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kCFStatsNoFileHistogram; +13943: +13943: +13943: +13943: static const std::string kCFFileHistogram; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kCFWriteStallStats; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kDBWriteStallStats; +13943: +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kDBStats; +13943: +13943: +13943: +13943: static const std::string kLevelStats; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kBlockCacheEntryStats; +13943: +13943: +13943: +13943: static const std::string kFastBlockCacheEntryStats; +13943: +13943: +13943: +13943: static const std::string kNumImmutableMemTable; +13943: +13943: +13943: +13943: static const std::string kNumImmutableMemTableFlushed; +13943: +13943: +13943: +13943: static const std::string kMemTableFlushPending; +13943: +13943: +13943: +13943: static const std::string kNumRunningFlushes; +13943: +13943: +13943: +13943: static const std::string kCompactionPending; +13943: +13943: +13943: +13943: static const std::string kNumRunningCompactions; +13943: +13943: +13943: +13943: static const std::string kBackgroundErrors; +13943: +13943: +13943: +13943: static const std::string kCurSizeActiveMemTable; +13943: +13943: +13943: +13943: static const std::string kCurSizeAllMemTables; +13943: +13943: +13943: +13943: static const std::string kSizeAllMemTables; +13943: +13943: +13943: +13943: static const std::string kNumEntriesActiveMemTable; +13943: +13943: +13943: +13943: static const std::string kNumEntriesImmMemTables; +13943: +13943: +13943: +13943: static const std::string kNumDeletesActiveMemTable; +13943: +13943: +13943: +13943: static const std::string kNumDeletesImmMemTables; +13943: +13943: +13943: +13943: static const std::string kEstimateNumKeys; +13943: +13943: +13943: +13943: +13943: static const std::string kEstimateTableReadersMem; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kIsFileDeletionsEnabled; +13943: +13943: +13943: +13943: static const std::string kNumSnapshots; +13943: +13943: +13943: +13943: static const std::string kOldestSnapshotTime; +13943: +13943: +13943: +13943: static const std::string kOldestSnapshotSequence; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kNumLiveVersions; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kCurrentSuperVersionNumber; +13943: +13943: +13943: +13943: +13943: static const std::string kEstimateLiveDataSize; +13943: +13943: +13943: +13943: static const std::string kMinLogNumberToKeep; +13943: +13943: +13943: +13943: +13943: static const std::string kMinObsoleteSstNumberToKeep; +13943: +13943: +13943: +13943: +13943: static const std::string kTotalSstFilesSize; +13943: +13943: +13943: +13943: static const std::string kLiveSstFilesSize; +13943: # 1246 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static const std::string kObsoleteSstFilesSize; +13943: +13943: +13943: +13943: static const std::string kLiveSstFilesSizeAtTemperature; +13943: +13943: +13943: +13943: static const std::string kBaseLevel; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kEstimatePendingCompactionBytes; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kAggregatedTableProperties; +13943: +13943: +13943: +13943: +13943: static const std::string kAggregatedTablePropertiesAtLevel; +13943: +13943: +13943: +13943: static const std::string kActualDelayedWriteRate; +13943: +13943: +13943: static const std::string kIsWriteStopped; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kEstimateOldestKeyTime; +13943: +13943: +13943: static const std::string kBlockCacheCapacity; +13943: +13943: +13943: +13943: static const std::string kBlockCacheUsage; +13943: +13943: +13943: +13943: static const std::string kBlockCachePinnedUsage; +13943: +13943: +13943: +13943: static const std::string kOptionsStatistics; +13943: +13943: +13943: +13943: static const std::string kNumBlobFiles; +13943: +13943: +13943: +13943: +13943: static const std::string kBlobStats; +13943: +13943: +13943: +13943: static const std::string kTotalBlobFileSize; +13943: +13943: +13943: +13943: static const std::string kLiveBlobFileSize; +13943: +13943: +13943: +13943: static const std::string kLiveBlobFileGarbageSize; +13943: +13943: +13943: static const std::string kBlobCacheCapacity; +13943: +13943: +13943: +13943: static const std::string kBlobCacheUsage; +13943: +13943: +13943: +13943: static const std::string kBlobCachePinnedUsage; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool GetProperty(ColumnFamilyHandle* column_family, +13943: const Slice& property, std::string* value) = 0; +13943: virtual bool GetProperty(const Slice& property, std::string* value) { +13943: return GetProperty(DefaultColumnFamily(), property, value); +13943: } +13943: +13943: +13943: +13943: virtual bool GetMapProperty(ColumnFamilyHandle* column_family, +13943: const Slice& property, +13943: std::map* value) = 0; +13943: virtual bool GetMapProperty(const Slice& property, +13943: std::map* value) { +13943: return GetMapProperty(DefaultColumnFamily(), property, value); +13943: } +13943: # 1401 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual bool GetIntProperty(ColumnFamilyHandle* column_family, +13943: const Slice& property, uint64_t* value) = 0; +13943: virtual bool GetIntProperty(const Slice& property, uint64_t* value) { +13943: return GetIntProperty(DefaultColumnFamily(), property, value); +13943: } +13943: +13943: +13943: +13943: +13943: virtual Status ResetStats() { +13943: return Status::NotSupported("Not implemented"); +13943: } +13943: +13943: +13943: +13943: virtual bool GetAggregatedIntProperty(const Slice& property, +13943: uint64_t* value) = 0; +13943: +13943: +13943: +13943: enum class SizeApproximationFlags : uint8_t { +13943: NONE = 0, +13943: INCLUDE_MEMTABLES = 1 << 0, +13943: INCLUDE_FILES = 1 << 1 +13943: }; +13943: # 1434 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status GetApproximateSizes(const SizeApproximationOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const Range* ranges, int n, +13943: uint64_t* sizes) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status GetApproximateSizes(ColumnFamilyHandle* column_family, +13943: const Range* ranges, int n, +13943: uint64_t* sizes, +13943: SizeApproximationFlags include_flags = +13943: SizeApproximationFlags::INCLUDE_FILES); +13943: +13943: virtual Status GetApproximateSizes( +13943: const Range* ranges, int n, uint64_t* sizes, +13943: SizeApproximationFlags include_flags = +13943: SizeApproximationFlags::INCLUDE_FILES) { +13943: return GetApproximateSizes(DefaultColumnFamily(), ranges, n, sizes, +13943: include_flags); +13943: } +13943: +13943: +13943: +13943: virtual void GetApproximateMemTableStats(ColumnFamilyHandle* column_family, +13943: const Range& range, +13943: uint64_t* const count, +13943: uint64_t* const size) = 0; +13943: virtual void GetApproximateMemTableStats(const Range& range, +13943: uint64_t* const count, +13943: uint64_t* const size) { +13943: GetApproximateMemTableStats(DefaultColumnFamily(), range, count, size); +13943: } +13943: # 1493 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status CompactRange(const CompactRangeOptions& options, +13943: ColumnFamilyHandle* column_family, +13943: const Slice* begin, const Slice* end) = 0; +13943: virtual Status CompactRange(const CompactRangeOptions& options, +13943: const Slice* begin, const Slice* end) { +13943: return CompactRange(options, DefaultColumnFamily(), begin, end); +13943: } +13943: # 1519 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status SetOptions( +13943: ColumnFamilyHandle* , +13943: const std::unordered_map& ) { +13943: return Status::NotSupported("Not implemented"); +13943: } +13943: +13943: virtual Status SetOptions( +13943: const std::unordered_map& new_options) { +13943: return SetOptions(DefaultColumnFamily(), new_options); +13943: } +13943: # 1539 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status SetDBOptions( +13943: const std::unordered_map& new_options) = 0; +13943: # 1549 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status CompactFiles( +13943: const CompactionOptions& compact_options, +13943: ColumnFamilyHandle* column_family, +13943: const std::vector& input_file_names, const int output_level, +13943: const int output_path_id = -1, +13943: std::vector* const output_file_names = nullptr, +13943: CompactionJobInfo* compaction_job_info = nullptr) = 0; +13943: +13943: virtual Status CompactFiles( +13943: const CompactionOptions& compact_options, +13943: const std::vector& input_file_names, const int output_level, +13943: const int output_path_id = -1, +13943: std::vector* const output_file_names = nullptr, +13943: CompactionJobInfo* compaction_job_info = nullptr) { +13943: return CompactFiles(compact_options, DefaultColumnFamily(), +13943: input_file_names, output_level, output_path_id, +13943: output_file_names, compaction_job_info); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual Status PauseBackgroundWork() = 0; +13943: virtual Status ContinueBackgroundWork() = 0; +13943: # 1584 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status EnableAutoCompaction( +13943: const std::vector& column_family_handles) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void DisableManualCompaction() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void EnableManualCompaction() = 0; +13943: # 1608 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status WaitForCompact( +13943: const WaitForCompactOptions& ) = 0; +13943: +13943: +13943: virtual int NumberLevels(ColumnFamilyHandle* column_family) = 0; +13943: virtual int NumberLevels() { return NumberLevels(DefaultColumnFamily()); } +13943: +13943: +13943: +13943: virtual int MaxMemCompactionLevel(ColumnFamilyHandle* column_family) = 0; +13943: virtual int MaxMemCompactionLevel() { +13943: return MaxMemCompactionLevel(DefaultColumnFamily()); +13943: } +13943: +13943: +13943: virtual int Level0StopWriteTrigger(ColumnFamilyHandle* column_family) = 0; +13943: virtual int Level0StopWriteTrigger() { +13943: return Level0StopWriteTrigger(DefaultColumnFamily()); +13943: } +13943: +13943: +13943: +13943: virtual const std::string& GetName() const = 0; +13943: +13943: +13943: virtual Env* GetEnv() const = 0; +13943: +13943: +13943: +13943: virtual FileSystem* GetFileSystem() const; +13943: +13943: +13943: +13943: +13943: +13943: virtual Options GetOptions(ColumnFamilyHandle* column_family) const = 0; +13943: virtual Options GetOptions() const { +13943: return GetOptions(DefaultColumnFamily()); +13943: } +13943: +13943: virtual DBOptions GetDBOptions() const = 0; +13943: +13943: +13943: +13943: +13943: virtual Status Flush(const FlushOptions& options, +13943: ColumnFamilyHandle* column_family) = 0; +13943: virtual Status Flush(const FlushOptions& options) { +13943: return Flush(options, DefaultColumnFamily()); +13943: } +13943: # 1666 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status Flush( +13943: const FlushOptions& options, +13943: const std::vector& column_families) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status FlushWAL(bool ) { +13943: return Status::NotSupported("FlushWAL not implemented"); +13943: } +13943: # 1687 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status SyncWAL() = 0; +13943: # 1698 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status LockWAL() { +13943: return Status::NotSupported("LockWAL not implemented"); +13943: } +13943: +13943: +13943: +13943: +13943: virtual Status UnlockWAL() { +13943: return Status::NotSupported("UnlockWAL not implemented"); +13943: } +13943: +13943: +13943: virtual SequenceNumber GetLatestSequenceNumber() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status IncreaseFullHistoryTsLow(ColumnFamilyHandle* column_family, +13943: std::string ts_low) = 0; +13943: +13943: +13943: virtual Status GetFullHistoryTsLow(ColumnFamilyHandle* column_family, +13943: std::string* ts_low) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Status DisableFileDeletions() = 0; +13943: # 1740 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status EnableFileDeletions() = 0; +13943: # 1752 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status GetCreationTimeOfOldestFile(uint64_t* creation_time) = 0; +13943: # 1766 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status GetUpdatesSince( +13943: SequenceNumber seq_number, std::unique_ptr* iter, +13943: const TransactionLogIterator::ReadOptions& read_options = +13943: TransactionLogIterator::ReadOptions()) = 0; +13943: # 1784 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status DeleteFile(std::string name) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void GetLiveFilesMetaData( +13943: std::vector* ) {} +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetLiveFilesChecksumInfo(FileChecksumList* checksum_list) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetLiveFilesStorageInfo( +13943: const LiveFilesStorageInfoOptions& opts, +13943: std::vector* files) = 0; +13943: +13943: +13943: +13943: virtual void GetColumnFamilyMetaData(ColumnFamilyHandle* , +13943: ColumnFamilyMetaData* ) {} +13943: +13943: +13943: void GetColumnFamilyMetaData(ColumnFamilyMetaData* metadata) { +13943: GetColumnFamilyMetaData(DefaultColumnFamily(), metadata); +13943: } +13943: +13943: +13943: +13943: virtual void GetAllColumnFamilyMetaData( +13943: std::vector* ) {} +13943: # 1839 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status GetLiveFiles(std::vector&, +13943: uint64_t* manifest_file_size, +13943: bool flush_memtable = true) = 0; +13943: +13943: +13943: virtual Status GetSortedWalFiles(VectorWalPtr& files) = 0; +13943: # 1853 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status GetCurrentWalFile( +13943: std::unique_ptr* current_log_file) = 0; +13943: # 1897 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status IngestExternalFile( +13943: ColumnFamilyHandle* column_family, +13943: const std::vector& external_files, +13943: const IngestExternalFileOptions& options) = 0; +13943: +13943: virtual Status IngestExternalFile( +13943: const std::vector& external_files, +13943: const IngestExternalFileOptions& options) { +13943: return IngestExternalFile(DefaultColumnFamily(), external_files, options); +13943: } +13943: # 1923 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status IngestExternalFiles( +13943: const std::vector& args) = 0; +13943: # 1943 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status CreateColumnFamilyWithImport( +13943: const ColumnFamilyOptions& options, const std::string& column_family_name, +13943: const ImportColumnFamilyOptions& import_options, +13943: const ExportImportFilesMetaData& metadata, ColumnFamilyHandle** handle) { +13943: const std::vector& metadatas{&metadata}; +13943: return CreateColumnFamilyWithImport(options, column_family_name, +13943: import_options, metadatas, handle); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status CreateColumnFamilyWithImport( +13943: const ColumnFamilyOptions& options, const std::string& column_family_name, +13943: const ImportColumnFamilyOptions& import_options, +13943: const std::vector& metadatas, +13943: ColumnFamilyHandle** handle) = 0; +13943: # 1976 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status ClipColumnFamily(ColumnFamilyHandle* column_family, +13943: const Slice& begin_key, +13943: const Slice& end_key) = 0; +13943: +13943: +13943: +13943: virtual Status VerifyFileChecksums(const ReadOptions& ) { +13943: return Status::NotSupported("File verification not supported"); +13943: } +13943: +13943: +13943: +13943: virtual Status VerifyChecksum(const ReadOptions& read_options) = 0; +13943: +13943: virtual Status VerifyChecksum() { return VerifyChecksum(ReadOptions()); } +13943: +13943: +13943: +13943: +13943: virtual Status GetDbIdentity(std::string& identity) const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetDbSessionId(std::string& session_id) const = 0; +13943: +13943: +13943: virtual ColumnFamilyHandle* DefaultColumnFamily() const = 0; +13943: +13943: virtual Status GetPropertiesOfAllTables(ColumnFamilyHandle* column_family, +13943: TablePropertiesCollection* props) = 0; +13943: virtual Status GetPropertiesOfAllTables(TablePropertiesCollection* props) { +13943: return GetPropertiesOfAllTables(DefaultColumnFamily(), props); +13943: } +13943: virtual Status GetPropertiesOfTablesInRange( +13943: ColumnFamilyHandle* column_family, const Range* range, std::size_t n, +13943: TablePropertiesCollection* props) = 0; +13943: +13943: +13943: virtual Status GetPropertiesOfTablesForLevels( +13943: ColumnFamilyHandle* , +13943: std::vector< +13943: std::unique_ptr>* ) { +13943: return Status::NotSupported( +13943: "GetPropertiesOfTablesForLevels() is not implemented."); +13943: } +13943: +13943: virtual Status SuggestCompactRange(ColumnFamilyHandle* , +13943: const Slice* , +13943: const Slice* ) { +13943: return Status::NotSupported("SuggestCompactRange() is not implemented."); +13943: } +13943: +13943: +13943: +13943: virtual Status PromoteL0(ColumnFamilyHandle* , +13943: int ) { +13943: return Status::NotSupported("PromoteL0() is not implemented."); +13943: } +13943: +13943: +13943: virtual Status StartTrace(const TraceOptions& , +13943: std::unique_ptr&& ) { +13943: return Status::NotSupported("StartTrace() is not implemented."); +13943: } +13943: +13943: virtual Status EndTrace() { +13943: return Status::NotSupported("EndTrace() is not implemented."); +13943: } +13943: +13943: +13943: virtual Status StartIOTrace(const TraceOptions& , +13943: std::unique_ptr&& ) { +13943: return Status::NotSupported("StartIOTrace() is not implemented."); +13943: } +13943: +13943: virtual Status EndIOTrace() { +13943: return Status::NotSupported("EndIOTrace() is not implemented."); +13943: } +13943: +13943: +13943: virtual Status StartBlockCacheTrace( +13943: const TraceOptions& , +13943: std::unique_ptr&& ) { +13943: return Status::NotSupported("StartBlockCacheTrace() is not implemented."); +13943: } +13943: +13943: virtual Status StartBlockCacheTrace( +13943: const BlockCacheTraceOptions& , +13943: std::unique_ptr&& ) { +13943: return Status::NotSupported("StartBlockCacheTrace() is not implemented."); +13943: } +13943: +13943: virtual Status EndBlockCacheTrace() { +13943: return Status::NotSupported("EndBlockCacheTrace() is not implemented."); +13943: } +13943: +13943: +13943: virtual Status NewDefaultReplayer( +13943: const std::vector& , +13943: std::unique_ptr&& , +13943: std::unique_ptr* ) { +13943: return Status::NotSupported("NewDefaultReplayer() is not implemented."); +13943: } +13943: +13943: +13943: virtual DB* GetRootDB() { return this; } +13943: +13943: +13943: +13943: +13943: virtual Status GetStatsHistory( +13943: uint64_t , uint64_t , +13943: std::unique_ptr* ) { +13943: return Status::NotSupported("GetStatsHistory() is not implemented."); +13943: } +13943: # 2105 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: virtual Status TryCatchUpWithPrimary() { +13943: return Status::NotSupported("Supported only by secondary instance"); +13943: } +13943: }; +13943: +13943: struct WriteStallStatsMapKeys { +13943: static const std::string& TotalStops(); +13943: static const std::string& TotalDelays(); +13943: +13943: static const std::string& CFL0FileCountLimitDelaysWithOngoingCompaction(); +13943: static const std::string& CFL0FileCountLimitStopsWithOngoingCompaction(); +13943: # 2124 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: static std::string CauseConditionCount(WriteStallCause cause, +13943: WriteStallCondition condition); +13943: }; +13943: +13943: +13943: inline DB::SizeApproximationFlags operator&(DB::SizeApproximationFlags lhs, +13943: DB::SizeApproximationFlags rhs) { +13943: return static_cast(static_cast(lhs) & +13943: static_cast(rhs)); +13943: } +13943: inline DB::SizeApproximationFlags operator|(DB::SizeApproximationFlags lhs, +13943: DB::SizeApproximationFlags rhs) { +13943: return static_cast(static_cast(lhs) | +13943: static_cast(rhs)); +13943: } +13943: +13943: inline Status DB::GetApproximateSizes(ColumnFamilyHandle* column_family, +13943: const Range* ranges, int n, +13943: uint64_t* sizes, +13943: SizeApproximationFlags include_flags) { +13943: SizeApproximationOptions options; +13943: options.include_memtables = +13943: ((include_flags & SizeApproximationFlags::INCLUDE_MEMTABLES) != +13943: SizeApproximationFlags::NONE); +13943: options.include_files = +13943: ((include_flags & SizeApproximationFlags::INCLUDE_FILES) != +13943: SizeApproximationFlags::NONE); +13943: return GetApproximateSizes(options, column_family, ranges, n, sizes); +13943: } +13943: +13943: +13943: +13943: Status DestroyDB(const std::string& name, const Options& options, +13943: const std::vector& column_families = +13943: std::vector()); +13943: # 2169 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +13943: Status RepairDB(const std::string& dbname, const DBOptions& db_options, +13943: const std::vector& column_families); +13943: +13943: +13943: +13943: Status RepairDB(const std::string& dbname, const DBOptions& db_options, +13943: const std::vector& column_families, +13943: const ColumnFamilyOptions& unknown_cf_opts); +13943: +13943: +13943: +13943: Status RepairDB(const std::string& dbname, const Options& options); +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: const std::vector empty_operand_list; +13943: +13943: +13943: +13943: +13943: +13943: class MergeContext { +13943: public: +13943: GetMergeOperandsOptions* get_merge_operands_options = nullptr; +13943: +13943: +13943: void Clear() { +13943: if (operand_list_) { +13943: operand_list_->clear(); +13943: copied_operands_->clear(); +13943: } +13943: } +13943: +13943: +13943: void PushOperand(const Slice& operand_slice, bool operand_pinned = false) { +13943: Initialize(); +13943: SetDirectionBackward(); +13943: +13943: if (operand_pinned) { +13943: operand_list_->push_back(operand_slice); +13943: } else { +13943: +13943: copied_operands_->emplace_back( +13943: new std::string(operand_slice.data(), operand_slice.size())); +13943: operand_list_->push_back(*copied_operands_->back()); +13943: } +13943: } +13943: +13943: +13943: void PushOperandBack(const Slice& operand_slice, +13943: bool operand_pinned = false) { +13943: Initialize(); +13943: SetDirectionForward(); +13943: +13943: if (operand_pinned) { +13943: operand_list_->push_back(operand_slice); +13943: } else { +13943: +13943: copied_operands_->emplace_back( +13943: new std::string(operand_slice.data(), operand_slice.size())); +13943: operand_list_->push_back(*copied_operands_->back()); +13943: } +13943: } +13943: +13943: +13943: size_t GetNumOperands() const { +13943: if (!operand_list_) { +13943: return 0; +13943: } +13943: return operand_list_->size(); +13943: } +13943: +13943: +13943: Slice GetOperand(int index) const { +13943: +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 3 4 +13943: (static_cast ( +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" +13943: operand_list_ +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" +13943: "operand_list_" +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" +13943: ; +13943: +13943: SetDirectionForward(); +13943: return (*operand_list_)[index]; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: const std::vector& GetOperands() const { +13943: return GetOperandsDirectionForward(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: const std::vector& GetOperandsDirectionForward() const { +13943: if (!operand_list_) { +13943: return empty_operand_list; +13943: } +13943: +13943: SetDirectionForward(); +13943: return *operand_list_; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: const std::vector& GetOperandsDirectionBackward() const { +13943: if (!operand_list_) { +13943: return empty_operand_list; +13943: } +13943: +13943: SetDirectionBackward(); +13943: return *operand_list_; +13943: } +13943: +13943: private: +13943: void Initialize() { +13943: if (!operand_list_) { +13943: operand_list_.reset(new std::vector()); +13943: copied_operands_.reset(new std::vector>()); +13943: } +13943: } +13943: +13943: void SetDirectionForward() const { +13943: if (operands_reversed_ == true) { +13943: std::reverse(operand_list_->begin(), operand_list_->end()); +13943: operands_reversed_ = false; +13943: } +13943: } +13943: +13943: void SetDirectionBackward() const { +13943: if (operands_reversed_ == false) { +13943: std::reverse(operand_list_->begin(), operand_list_->end()); +13943: operands_reversed_ = true; +13943: } +13943: } +13943: +13943: +13943: mutable std::unique_ptr> operand_list_; +13943: +13943: std::unique_ptr>> copied_operands_; +13943: mutable bool operands_reversed_ = true; +13943: }; +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/iterator" 1 3 +13943: # 58 "/usr/include/c++/14/iterator" 3 +13943: +13943: # 59 "/usr/include/c++/14/iterator" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stream_iterator.h" 1 3 +13943: # 33 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: +13943: # 34 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 40 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 50 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +13943: +13943: +13943: template, typename _Dist = ptrdiff_t> +13943: class istream_iterator +13943: : public iterator +13943: { +13943: public: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef basic_istream<_CharT, _Traits> istream_type; +13943: +13943: private: +13943: istream_type* _M_stream; +13943: _Tp _M_value; +13943: +13943: +13943: +13943: bool _M_ok; +13943: +13943: public: +13943: +13943: constexpr istream_iterator() +13943: noexcept(is_nothrow_default_constructible<_Tp>::value) +13943: : _M_stream(0), _M_value(), _M_ok(false) {} +13943: +13943: +13943: istream_iterator(istream_type& __s) +13943: : _M_stream(std::__addressof(__s)), _M_ok(true) +13943: { _M_read(); } +13943: +13943: constexpr +13943: istream_iterator(const istream_iterator& __obj) +13943: noexcept(is_nothrow_copy_constructible<_Tp>::value) +13943: : _M_stream(__obj._M_stream), _M_value(__obj._M_value), +13943: _M_ok(__obj._M_ok) +13943: { } +13943: # 98 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: istream_iterator& operator=(const istream_iterator&) = default; +13943: ~istream_iterator() = default; +13943: +13943: +13943: [[__nodiscard__]] +13943: const _Tp& +13943: operator*() const noexcept +13943: { +13943: +13943: +13943: ; +13943: return _M_value; +13943: } +13943: +13943: [[__nodiscard__]] +13943: const _Tp* +13943: operator->() const noexcept +13943: { return std::__addressof((operator*())); } +13943: +13943: istream_iterator& +13943: operator++() +13943: { +13943: +13943: +13943: ; +13943: _M_read(); +13943: return *this; +13943: } +13943: +13943: istream_iterator +13943: operator++(int) +13943: { +13943: +13943: +13943: ; +13943: istream_iterator __tmp = *this; +13943: _M_read(); +13943: return __tmp; +13943: } +13943: +13943: private: +13943: bool +13943: _M_equal(const istream_iterator& __x) const noexcept +13943: { +13943: +13943: +13943: return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); +13943: } +13943: +13943: void +13943: _M_read() +13943: { +13943: if (_M_stream && !(*_M_stream >> _M_value)) +13943: { +13943: _M_stream = 0; +13943: _M_ok = false; +13943: } +13943: } +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator==(const istream_iterator& __x, const istream_iterator& __y) +13943: noexcept +13943: { return __x._M_equal(__y); } +13943: +13943: +13943: +13943: +13943: [[__nodiscard__]] +13943: friend bool +13943: operator!=(const istream_iterator& __x, const istream_iterator& __y) +13943: noexcept +13943: { return !__x._M_equal(__y); } +13943: # 181 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: }; +13943: # 194 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: template > +13943: class ostream_iterator +13943: : public iterator +13943: { +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef basic_ostream<_CharT, _Traits> ostream_type; +13943: +13943: +13943: private: +13943: ostream_type* _M_stream; +13943: const _CharT* _M_string; +13943: +13943: public: +13943: +13943: ostream_iterator(ostream_type& __s) noexcept +13943: : _M_stream(std::__addressof(__s)), _M_string(0) {} +13943: # 229 "/usr/include/c++/14/bits/stream_iterator.h" 3 +13943: ostream_iterator(ostream_type& __s, const _CharT* __c) noexcept +13943: : _M_stream(std::__addressof(__s)), _M_string(__c) { } +13943: +13943: +13943: ostream_iterator(const ostream_iterator& __obj) noexcept +13943: : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } +13943: +13943: +13943: ostream_iterator& operator=(const ostream_iterator&) = default; +13943: +13943: +13943: +13943: +13943: ostream_iterator& +13943: operator=(const _Tp& __value) +13943: { +13943: +13943: +13943: ; +13943: *_M_stream << __value; +13943: if (_M_string) +13943: *_M_stream << _M_string; +13943: return *this; +13943: } +13943: +13943: [[__nodiscard__]] +13943: ostream_iterator& +13943: operator*() noexcept +13943: { return *this; } +13943: +13943: ostream_iterator& +13943: operator++() noexcept +13943: { return *this; } +13943: +13943: ostream_iterator& +13943: operator++(int) noexcept +13943: { return *this; } +13943: }; +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: +13943: } +13943: # 66 "/usr/include/c++/14/iterator" 2 3 +13943: # 78 "/usr/include/c++/14/iterator" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 79 "/usr/include/c++/14/iterator" 2 3 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: +13943: +13943: # 1 "/usr/include/c++/14/set" 1 3 +13943: # 58 "/usr/include/c++/14/set" 3 +13943: +13943: # 59 "/usr/include/c++/14/set" 3 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/stl_set.h" 1 3 +13943: # 64 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: class multiset; +13943: # 94 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template, +13943: typename _Alloc = std::allocator<_Key> > +13943: class set +13943: { +13943: # 110 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: static_assert(is_same::type, _Key>::value, +13943: "std::set must have a non-const, non-volatile value_type"); +13943: +13943: +13943: +13943: +13943: +13943: +13943: public: +13943: +13943: +13943: +13943: typedef _Key key_type; +13943: typedef _Key value_type; +13943: typedef _Compare key_compare; +13943: typedef _Compare value_compare; +13943: typedef _Alloc allocator_type; +13943: +13943: +13943: private: +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_Key>::other _Key_alloc_type; +13943: +13943: typedef _Rb_tree, +13943: key_compare, _Key_alloc_type> _Rep_type; +13943: _Rep_type _M_t; +13943: +13943: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; +13943: +13943: public: +13943: +13943: +13943: typedef typename _Alloc_traits::pointer pointer; +13943: typedef typename _Alloc_traits::const_pointer const_pointer; +13943: typedef typename _Alloc_traits::reference reference; +13943: typedef typename _Alloc_traits::const_reference const_reference; +13943: +13943: +13943: +13943: typedef typename _Rep_type::const_iterator iterator; +13943: typedef typename _Rep_type::const_iterator const_iterator; +13943: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; +13943: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +13943: typedef typename _Rep_type::size_type size_type; +13943: typedef typename _Rep_type::difference_type difference_type; +13943: +13943: +13943: +13943: using node_type = typename _Rep_type::node_type; +13943: using insert_return_type = typename _Rep_type::insert_return_type; +13943: # 169 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: set() = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: set(const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Key_alloc_type(__a)) { } +13943: # 192 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template +13943: set(_InputIterator __first, _InputIterator __last) +13943: : _M_t() +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: # 209 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template +13943: set(_InputIterator __first, _InputIterator __last, +13943: const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: # 225 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: set(const set&) = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: set(set&&) = default; +13943: # 245 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: set(initializer_list __l, +13943: const _Compare& __comp = _Compare(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +13943: +13943: +13943: explicit +13943: set(const allocator_type& __a) +13943: : _M_t(_Key_alloc_type(__a)) { } +13943: +13943: +13943: set(const set& __x, const __type_identity_t& __a) +13943: : _M_t(__x._M_t, _Key_alloc_type(__a)) { } +13943: +13943: +13943: set(set&& __x, const __type_identity_t& __a) +13943: noexcept(is_nothrow_copy_constructible<_Compare>::value +13943: && _Alloc_traits::_S_always_equal()) +13943: : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { } +13943: +13943: +13943: set(initializer_list __l, const allocator_type& __a) +13943: : _M_t(_Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +13943: +13943: +13943: template +13943: set(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a) +13943: : _M_t(_Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~set() = default; +13943: # 299 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: set& +13943: operator=(const set&) = default; +13943: +13943: +13943: set& +13943: operator=(set&&) = default; +13943: # 317 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: set& +13943: operator=(initializer_list __l) +13943: { +13943: _M_t._M_assign_unique(__l.begin(), __l.end()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: key_compare +13943: key_comp() const +13943: { return _M_t.key_comp(); } +13943: +13943: value_compare +13943: value_comp() const +13943: { return _M_t.key_comp(); } +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_t.get_allocator()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: begin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: end() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: cbegin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: cend() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: crbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: crend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_t.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_t.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_t.max_size(); } +13943: # 442 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: void +13943: swap(set& __x) +13943: noexcept(__is_nothrow_swappable<_Compare>::value) +13943: { _M_t.swap(__x._M_t); } +13943: # 462 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template +13943: std::pair +13943: emplace(_Args&&... __args) +13943: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } +13943: # 488 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { +13943: return _M_t._M_emplace_hint_unique(__pos, +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 510 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: std::pair +13943: insert(const value_type& __x) +13943: { +13943: std::pair __p = +13943: _M_t._M_insert_unique(__x); +13943: return std::pair(__p.first, __p.second); +13943: } +13943: +13943: +13943: std::pair +13943: insert(value_type&& __x) +13943: { +13943: std::pair __p = +13943: _M_t._M_insert_unique(std::move(__x)); +13943: return std::pair(__p.first, __p.second); +13943: } +13943: # 547 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: iterator +13943: insert(const_iterator __position, const value_type& __x) +13943: { return _M_t._M_insert_unique_(__position, __x); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __position, value_type&& __x) +13943: { return _M_t._M_insert_unique_(__position, std::move(__x)); } +13943: # 566 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_t._M_insert_range_unique(__first, __last); } +13943: # 579 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: void +13943: insert(initializer_list __l) +13943: { this->insert(__l.begin(), __l.end()); } +13943: +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_t.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __x) +13943: { return _M_t.extract(__x); } +13943: +13943: +13943: insert_return_type +13943: insert(node_type&& __nh) +13943: { return _M_t._M_reinsert_node_unique(std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, node_type&& __nh) +13943: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } +13943: +13943: template +13943: friend struct std::_Rb_tree_merge_helper; +13943: +13943: template +13943: void +13943: merge(set<_Key, _Compare1, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(set<_Key, _Compare1, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(multiset<_Key, _Compare1, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(multiset<_Key, _Compare1, _Alloc>&& __source) +13943: { merge(__source); } +13943: # 654 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_t.erase(__position); } +13943: # 685 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_t.erase(__x); } +13943: # 706 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_t.erase(__first, __last); } +13943: # 734 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: void +13943: clear() noexcept +13943: { _M_t.clear(); } +13943: # 749 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } +13943: +13943: +13943: template +13943: auto +13943: count(const _Kt& __x) const +13943: -> decltype(_M_t._M_count_tr(__x)) +13943: { return _M_t._M_count_tr(__x); } +13943: # 795 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_t.find(__x); } +13943: +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_t.find(__x); } +13943: +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) +13943: -> decltype(iterator{_M_t._M_find_tr(__x)}) +13943: { return iterator{_M_t._M_find_tr(__x)}; } +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) const +13943: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) +13943: { return const_iterator{_M_t._M_find_tr(__x)}; } +13943: # 830 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: iterator +13943: lower_bound(const key_type& __x) +13943: { return _M_t.lower_bound(__x); } +13943: +13943: const_iterator +13943: lower_bound(const key_type& __x) const +13943: { return _M_t.lower_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return iterator(_M_t._M_lower_bound_tr(__x)); } +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) const +13943: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } +13943: # 860 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: iterator +13943: upper_bound(const key_type& __x) +13943: { return _M_t.upper_bound(__x); } +13943: +13943: const_iterator +13943: upper_bound(const key_type& __x) const +13943: { return _M_t.upper_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return iterator(_M_t._M_upper_bound_tr(__x)); } +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) const +13943: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } +13943: # 899 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_t.equal_range(__x); } +13943: +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_t.equal_range(__x); } +13943: +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) +13943: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +13943: { return pair(_M_t._M_equal_range_tr(__x)); } +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) const +13943: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +13943: { return pair(_M_t._M_equal_range_tr(__x)); } +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); +13943: +13943: }; +13943: +13943: +13943: +13943: template::value_type>, +13943: typename _Allocator = +13943: allocator::value_type>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: set(_InputIterator, _InputIterator, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> set::value_type, +13943: _Compare, _Allocator>; +13943: +13943: template, +13943: typename _Allocator = allocator<_Key>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: set(initializer_list<_Key>, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> set<_Key, _Compare, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: set(_InputIterator, _InputIterator, _Allocator) +13943: -> set::value_type, +13943: less::value_type>, +13943: _Allocator>; +13943: +13943: template> +13943: set(initializer_list<_Key>, _Allocator) +13943: -> set<_Key, less<_Key>, _Allocator>; +13943: # 985 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template +13943: inline bool +13943: operator==(const set<_Key, _Compare, _Alloc>& __x, +13943: const set<_Key, _Compare, _Alloc>& __y) +13943: { return __x._M_t == __y._M_t; } +13943: # 1023 "/usr/include/c++/14/bits/stl_set.h" 3 +13943: template +13943: inline bool +13943: operator<(const set<_Key, _Compare, _Alloc>& __x, +13943: const set<_Key, _Compare, _Alloc>& __y) +13943: { return __x._M_t < __y._M_t; } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const set<_Key, _Compare, _Alloc>& __x, +13943: const set<_Key, _Compare, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>(const set<_Key, _Compare, _Alloc>& __x, +13943: const set<_Key, _Compare, _Alloc>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: inline bool +13943: operator<=(const set<_Key, _Compare, _Alloc>& __x, +13943: const set<_Key, _Compare, _Alloc>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>=(const set<_Key, _Compare, _Alloc>& __x, +13943: const set<_Key, _Compare, _Alloc>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct +13943: _Rb_tree_merge_helper, _Cmp2> +13943: { +13943: private: +13943: friend class std::set<_Val, _Cmp1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set) +13943: { return __set._M_t; } +13943: +13943: static auto& +13943: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set) +13943: { return __set._M_t; } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 64 "/usr/include/c++/14/set" 2 3 +13943: # 1 "/usr/include/c++/14/bits/stl_multiset.h" 1 3 +13943: # 64 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: class set; +13943: # 95 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template , +13943: typename _Alloc = std::allocator<_Key> > +13943: class multiset +13943: { +13943: # 111 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: static_assert(is_same::type, _Key>::value, +13943: "std::multiset must have a non-const, non-volatile value_type"); +13943: +13943: +13943: +13943: +13943: +13943: +13943: public: +13943: +13943: typedef _Key key_type; +13943: typedef _Key value_type; +13943: typedef _Compare key_compare; +13943: typedef _Compare value_compare; +13943: typedef _Alloc allocator_type; +13943: +13943: private: +13943: +13943: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +13943: rebind<_Key>::other _Key_alloc_type; +13943: +13943: typedef _Rb_tree, +13943: key_compare, _Key_alloc_type> _Rep_type; +13943: +13943: _Rep_type _M_t; +13943: +13943: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; +13943: +13943: public: +13943: typedef typename _Alloc_traits::pointer pointer; +13943: typedef typename _Alloc_traits::const_pointer const_pointer; +13943: typedef typename _Alloc_traits::reference reference; +13943: typedef typename _Alloc_traits::const_reference const_reference; +13943: +13943: +13943: +13943: typedef typename _Rep_type::const_iterator iterator; +13943: typedef typename _Rep_type::const_iterator const_iterator; +13943: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; +13943: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +13943: typedef typename _Rep_type::size_type size_type; +13943: typedef typename _Rep_type::difference_type difference_type; +13943: +13943: +13943: using node_type = typename _Rep_type::node_type; +13943: # 165 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: multiset() = default; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: multiset(const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Key_alloc_type(__a)) { } +13943: # 187 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template +13943: multiset(_InputIterator __first, _InputIterator __last) +13943: : _M_t() +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: # 203 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template +13943: multiset(_InputIterator __first, _InputIterator __last, +13943: const _Compare& __comp, +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: # 219 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: multiset(const multiset&) = default; +13943: # 228 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: multiset(multiset&&) = default; +13943: # 240 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: multiset(initializer_list __l, +13943: const _Compare& __comp = _Compare(), +13943: const allocator_type& __a = allocator_type()) +13943: : _M_t(__comp, _Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +13943: +13943: +13943: explicit +13943: multiset(const allocator_type& __a) +13943: : _M_t(_Key_alloc_type(__a)) { } +13943: +13943: +13943: multiset(const multiset& __m, +13943: const __type_identity_t& __a) +13943: : _M_t(__m._M_t, _Key_alloc_type(__a)) { } +13943: +13943: +13943: multiset(multiset&& __m, const __type_identity_t& __a) +13943: noexcept(is_nothrow_copy_constructible<_Compare>::value +13943: && _Alloc_traits::_S_always_equal()) +13943: : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { } +13943: +13943: +13943: multiset(initializer_list __l, const allocator_type& __a) +13943: : _M_t(_Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +13943: +13943: +13943: template +13943: multiset(_InputIterator __first, _InputIterator __last, +13943: const allocator_type& __a) +13943: : _M_t(_Key_alloc_type(__a)) +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~multiset() = default; +13943: # 295 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: multiset& +13943: operator=(const multiset&) = default; +13943: +13943: +13943: multiset& +13943: operator=(multiset&&) = default; +13943: # 313 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: multiset& +13943: operator=(initializer_list __l) +13943: { +13943: _M_t._M_assign_equal(__l.begin(), __l.end()); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: key_compare +13943: key_comp() const +13943: { return _M_t.key_comp(); } +13943: +13943: value_compare +13943: value_comp() const +13943: { return _M_t.key_comp(); } +13943: +13943: allocator_type +13943: get_allocator() const noexcept +13943: { return allocator_type(_M_t.get_allocator()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: begin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: end() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: rend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: cbegin() const noexcept +13943: { return _M_t.begin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: iterator +13943: cend() const noexcept +13943: { return _M_t.end(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: crbegin() const noexcept +13943: { return _M_t.rbegin(); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: reverse_iterator +13943: crend() const noexcept +13943: { return _M_t.rend(); } +13943: +13943: +13943: +13943: [[__nodiscard__]] bool +13943: empty() const noexcept +13943: { return _M_t.empty(); } +13943: +13943: +13943: size_type +13943: size() const noexcept +13943: { return _M_t.size(); } +13943: +13943: +13943: size_type +13943: max_size() const noexcept +13943: { return _M_t.max_size(); } +13943: # 438 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: void +13943: swap(multiset& __x) +13943: noexcept(__is_nothrow_swappable<_Compare>::value) +13943: { _M_t.swap(__x._M_t); } +13943: # 457 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template +13943: iterator +13943: emplace(_Args&&... __args) +13943: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } +13943: # 483 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template +13943: iterator +13943: emplace_hint(const_iterator __pos, _Args&&... __args) +13943: { +13943: return _M_t._M_emplace_hint_equal(__pos, +13943: std::forward<_Args>(__args)...); +13943: } +13943: # 503 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: iterator +13943: insert(const value_type& __x) +13943: { return _M_t._M_insert_equal(__x); } +13943: +13943: +13943: iterator +13943: insert(value_type&& __x) +13943: { return _M_t._M_insert_equal(std::move(__x)); } +13943: # 533 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: iterator +13943: insert(const_iterator __position, const value_type& __x) +13943: { return _M_t._M_insert_equal_(__position, __x); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __position, value_type&& __x) +13943: { return _M_t._M_insert_equal_(__position, std::move(__x)); } +13943: # 551 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template +13943: void +13943: insert(_InputIterator __first, _InputIterator __last) +13943: { _M_t._M_insert_range_equal(__first, __last); } +13943: # 564 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: void +13943: insert(initializer_list __l) +13943: { this->insert(__l.begin(), __l.end()); } +13943: +13943: +13943: +13943: +13943: node_type +13943: extract(const_iterator __pos) +13943: { +13943: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +13943: return _M_t.extract(__pos); +13943: } +13943: +13943: +13943: node_type +13943: extract(const key_type& __x) +13943: { return _M_t.extract(__x); } +13943: +13943: +13943: iterator +13943: insert(node_type&& __nh) +13943: { return _M_t._M_reinsert_node_equal(std::move(__nh)); } +13943: +13943: +13943: iterator +13943: insert(const_iterator __hint, node_type&& __nh) +13943: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } +13943: +13943: template +13943: friend struct std::_Rb_tree_merge_helper; +13943: +13943: template +13943: void +13943: merge(multiset<_Key, _Compare1, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(multiset<_Key, _Compare1, _Alloc>&& __source) +13943: { merge(__source); } +13943: +13943: template +13943: void +13943: merge(set<_Key, _Compare1, _Alloc>& __source) +13943: { +13943: using _Merge_helper = _Rb_tree_merge_helper; +13943: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +13943: } +13943: +13943: template +13943: void +13943: merge(set<_Key, _Compare1, _Alloc>&& __source) +13943: { merge(__source); } +13943: # 639 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(const_iterator __position) +13943: { return _M_t.erase(__position); } +13943: # 670 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: size_type +13943: erase(const key_type& __x) +13943: { return _M_t.erase(__x); } +13943: # 691 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: __attribute ((__abi_tag__ ("cxx11"))) +13943: iterator +13943: erase(const_iterator __first, const_iterator __last) +13943: { return _M_t.erase(__first, __last); } +13943: # 719 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: void +13943: clear() noexcept +13943: { _M_t.clear(); } +13943: # 731 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: size_type +13943: count(const key_type& __x) const +13943: { return _M_t.count(__x); } +13943: +13943: +13943: template +13943: auto +13943: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) +13943: { return _M_t._M_count_tr(__x); } +13943: # 776 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: iterator +13943: find(const key_type& __x) +13943: { return _M_t.find(__x); } +13943: +13943: const_iterator +13943: find(const key_type& __x) const +13943: { return _M_t.find(__x); } +13943: +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) +13943: -> decltype(iterator{_M_t._M_find_tr(__x)}) +13943: { return iterator{_M_t._M_find_tr(__x)}; } +13943: +13943: template +13943: auto +13943: find(const _Kt& __x) const +13943: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) +13943: { return const_iterator{_M_t._M_find_tr(__x)}; } +13943: # 811 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: iterator +13943: lower_bound(const key_type& __x) +13943: { return _M_t.lower_bound(__x); } +13943: +13943: const_iterator +13943: lower_bound(const key_type& __x) const +13943: { return _M_t.lower_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return iterator(_M_t._M_lower_bound_tr(__x)); } +13943: +13943: template +13943: auto +13943: lower_bound(const _Kt& __x) const +13943: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +13943: { return iterator(_M_t._M_lower_bound_tr(__x)); } +13943: # 841 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: iterator +13943: upper_bound(const key_type& __x) +13943: { return _M_t.upper_bound(__x); } +13943: +13943: const_iterator +13943: upper_bound(const key_type& __x) const +13943: { return _M_t.upper_bound(__x); } +13943: +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) +13943: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return iterator(_M_t._M_upper_bound_tr(__x)); } +13943: +13943: template +13943: auto +13943: upper_bound(const _Kt& __x) const +13943: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +13943: { return iterator(_M_t._M_upper_bound_tr(__x)); } +13943: # 880 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: std::pair +13943: equal_range(const key_type& __x) +13943: { return _M_t.equal_range(__x); } +13943: +13943: std::pair +13943: equal_range(const key_type& __x) const +13943: { return _M_t.equal_range(__x); } +13943: +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) +13943: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +13943: { return pair(_M_t._M_equal_range_tr(__x)); } +13943: +13943: template +13943: auto +13943: equal_range(const _Kt& __x) const +13943: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +13943: { return pair(_M_t._M_equal_range_tr(__x)); } +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator==(const multiset<_K1, _C1, _A1>&, +13943: const multiset<_K1, _C1, _A1>&); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: friend bool +13943: operator< (const multiset<_K1, _C1, _A1>&, +13943: const multiset<_K1, _C1, _A1>&); +13943: +13943: }; +13943: +13943: +13943: +13943: template::value_type>, +13943: typename _Allocator = +13943: allocator::value_type>, +13943: typename = _RequireInputIter<_InputIterator>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: multiset(_InputIterator, _InputIterator, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> multiset::value_type, +13943: _Compare, _Allocator>; +13943: +13943: template, +13943: typename _Allocator = allocator<_Key>, +13943: typename = _RequireNotAllocator<_Compare>, +13943: typename = _RequireAllocator<_Allocator>> +13943: multiset(initializer_list<_Key>, +13943: _Compare = _Compare(), _Allocator = _Allocator()) +13943: -> multiset<_Key, _Compare, _Allocator>; +13943: +13943: template, +13943: typename = _RequireAllocator<_Allocator>> +13943: multiset(_InputIterator, _InputIterator, _Allocator) +13943: -> multiset::value_type, +13943: less::value_type>, +13943: _Allocator>; +13943: +13943: template> +13943: multiset(initializer_list<_Key>, _Allocator) +13943: -> multiset<_Key, less<_Key>, _Allocator>; +13943: # 971 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template +13943: inline bool +13943: operator==(const multiset<_Key, _Compare, _Alloc>& __x, +13943: const multiset<_Key, _Compare, _Alloc>& __y) +13943: { return __x._M_t == __y._M_t; } +13943: # 1009 "/usr/include/c++/14/bits/stl_multiset.h" 3 +13943: template +13943: inline bool +13943: operator<(const multiset<_Key, _Compare, _Alloc>& __x, +13943: const multiset<_Key, _Compare, _Alloc>& __y) +13943: { return __x._M_t < __y._M_t; } +13943: +13943: +13943: template +13943: inline bool +13943: operator!=(const multiset<_Key, _Compare, _Alloc>& __x, +13943: const multiset<_Key, _Compare, _Alloc>& __y) +13943: { return !(__x == __y); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>(const multiset<_Key,_Compare,_Alloc>& __x, +13943: const multiset<_Key,_Compare,_Alloc>& __y) +13943: { return __y < __x; } +13943: +13943: +13943: template +13943: inline bool +13943: operator<=(const multiset<_Key, _Compare, _Alloc>& __x, +13943: const multiset<_Key, _Compare, _Alloc>& __y) +13943: { return !(__y < __x); } +13943: +13943: +13943: template +13943: inline bool +13943: operator>=(const multiset<_Key, _Compare, _Alloc>& __x, +13943: const multiset<_Key, _Compare, _Alloc>& __y) +13943: { return !(__x < __y); } +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(multiset<_Key, _Compare, _Alloc>& __x, +13943: multiset<_Key, _Compare, _Alloc>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct +13943: _Rb_tree_merge_helper, +13943: _Cmp2> +13943: { +13943: private: +13943: friend class std::multiset<_Val, _Cmp1, _Alloc>; +13943: +13943: static auto& +13943: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set) +13943: { return __set._M_t; } +13943: +13943: static auto& +13943: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set) +13943: { return __set._M_t; } +13943: }; +13943: +13943: +13943: +13943: } +13943: # 65 "/usr/include/c++/14/set" 2 3 +13943: # 77 "/usr/include/c++/14/set" 3 +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 78 "/usr/include/c++/14/set" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace pmr +13943: { +13943: template> +13943: using set = std::set<_Key, _Cmp, polymorphic_allocator<_Key>>; +13943: template> +13943: using multiset = std::multiset<_Key, _Cmp, polymorphic_allocator<_Key>>; +13943: } +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iteration_stats.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iteration_stats.h" +13943: namespace rocksdb { +13943: +13943: struct CompactionIterationStats { +13943: +13943: +13943: +13943: +13943: int64_t num_record_drop_user = 0; +13943: +13943: int64_t num_record_drop_hidden = 0; +13943: int64_t num_record_drop_obsolete = 0; +13943: int64_t num_record_drop_range_del = 0; +13943: int64_t num_range_del_drop_obsolete = 0; +13943: +13943: int64_t num_optimized_del_drop_obsolete = 0; +13943: uint64_t total_filter_time = 0; +13943: +13943: +13943: +13943: +13943: uint64_t num_input_records = 0; +13943: uint64_t num_input_deletion_records = 0; +13943: uint64_t num_input_corrupt_records = 0; +13943: uint64_t total_input_raw_key_bytes = 0; +13943: uint64_t total_input_raw_value_bytes = 0; +13943: +13943: +13943: uint64_t num_single_del_fallthru = 0; +13943: uint64_t num_single_del_mismatch = 0; +13943: +13943: +13943: uint64_t num_blobs_read = 0; +13943: uint64_t total_blob_bytes_read = 0; +13943: uint64_t num_blobs_relocated = 0; +13943: uint64_t total_blob_bytes_relocated = 0; +13943: +13943: +13943: +13943: uint64_t num_input_timed_put_records = 0; +13943: +13943: +13943: uint64_t num_timed_put_swap_preferred_seqno = 0; +13943: }; +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/readahead_file_info.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct ReadaheadFileInfo { +13943: struct ReadaheadInfo { +13943: size_t readahead_size = 0; +13943: int64_t num_file_reads = 0; +13943: }; +13943: +13943: +13943: ReadaheadInfo data_block_readahead_info; +13943: +13943: +13943: ReadaheadInfo index_block_readahead_info; +13943: }; +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 2 +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/sstream" 1 3 +13943: # 36 "/usr/include/c++/14/sstream" 3 +13943: +13943: # 37 "/usr/include/c++/14/sstream" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/istream" 1 3 +13943: # 36 "/usr/include/c++/14/istream" 3 +13943: +13943: # 37 "/usr/include/c++/14/istream" 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 43 "/usr/include/c++/14/istream" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: # 59 "/usr/include/c++/14/istream" 3 +13943: template +13943: class basic_istream : virtual public basic_ios<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef typename _Traits::int_type int_type; +13943: typedef typename _Traits::pos_type pos_type; +13943: typedef typename _Traits::off_type off_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +13943: typedef basic_ios<_CharT, _Traits> __ios_type; +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > +13943: __num_get_type; +13943: typedef ctype<_CharT> __ctype_type; +13943: +13943: protected: +13943: +13943: +13943: +13943: +13943: +13943: streamsize _M_gcount; +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: basic_istream(__streambuf_type* __sb) +13943: : _M_gcount(streamsize(0)) +13943: { this->init(__sb); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual +13943: ~basic_istream() +13943: { _M_gcount = streamsize(0); } +13943: +13943: +13943: class sentry; +13943: friend class sentry; +13943: # 121 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: operator>>(__istream_type& (*__pf)(__istream_type&)) +13943: { return __pf(*this); } +13943: +13943: __istream_type& +13943: operator>>(__ios_type& (*__pf)(__ios_type&)) +13943: { +13943: __pf(*this); +13943: return *this; +13943: } +13943: +13943: __istream_type& +13943: operator>>(ios_base& (*__pf)(ios_base&)) +13943: { +13943: __pf(*this); +13943: return *this; +13943: } +13943: # 169 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: operator>>(bool& __n) +13943: { return _M_extract(__n); } +13943: +13943: __istream_type& +13943: operator>>(short& __n); +13943: +13943: __istream_type& +13943: operator>>(unsigned short& __n) +13943: { return _M_extract(__n); } +13943: +13943: __istream_type& +13943: operator>>(int& __n); +13943: +13943: __istream_type& +13943: operator>>(unsigned int& __n) +13943: { return _M_extract(__n); } +13943: +13943: __istream_type& +13943: operator>>(long& __n) +13943: { return _M_extract(__n); } +13943: +13943: __istream_type& +13943: operator>>(unsigned long& __n) +13943: { return _M_extract(__n); } +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: __istream_type& +13943: operator>>(long long& __n) +13943: { return _M_extract(__n); } +13943: +13943: __istream_type& +13943: operator>>(unsigned long long& __n) +13943: { return _M_extract(__n); } +13943: #pragma GCC diagnostic pop +13943: # 218 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: operator>>(float& __f) +13943: { return _M_extract(__f); } +13943: +13943: __istream_type& +13943: operator>>(double& __f) +13943: { return _M_extract(__f); } +13943: +13943: __istream_type& +13943: operator>>(long double& __f) +13943: { return _M_extract(__f); } +13943: # 327 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: operator>>(void*& __p) +13943: { return _M_extract(__p); } +13943: # 351 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: operator>>(__streambuf_type* __sb); +13943: # 361 "/usr/include/c++/14/istream" 3 +13943: streamsize +13943: gcount() const +13943: { return _M_gcount; } +13943: # 394 "/usr/include/c++/14/istream" 3 +13943: int_type +13943: get(); +13943: # 408 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: get(char_type& __c); +13943: # 435 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: get(char_type* __s, streamsize __n, char_type __delim); +13943: # 446 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: get(char_type* __s, streamsize __n) +13943: { return this->get(__s, __n, this->widen('\n')); } +13943: # 469 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: get(__streambuf_type& __sb, char_type __delim); +13943: # 479 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: get(__streambuf_type& __sb) +13943: { return this->get(__sb, this->widen('\n')); } +13943: # 508 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: getline(char_type* __s, streamsize __n, char_type __delim); +13943: # 519 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: getline(char_type* __s, streamsize __n) +13943: { return this->getline(__s, __n, this->widen('\n')); } +13943: # 543 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: ignore(streamsize __n, int_type __delim); +13943: +13943: __istream_type& +13943: ignore(streamsize __n); +13943: +13943: __istream_type& +13943: ignore(); +13943: # 560 "/usr/include/c++/14/istream" 3 +13943: int_type +13943: peek(); +13943: # 578 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: read(char_type* __s, streamsize __n); +13943: # 597 "/usr/include/c++/14/istream" 3 +13943: streamsize +13943: readsome(char_type* __s, streamsize __n); +13943: # 614 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: putback(char_type __c); +13943: # 630 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: unget(); +13943: # 648 "/usr/include/c++/14/istream" 3 +13943: int +13943: sync(); +13943: # 663 "/usr/include/c++/14/istream" 3 +13943: pos_type +13943: tellg(); +13943: # 678 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: seekg(pos_type); +13943: # 694 "/usr/include/c++/14/istream" 3 +13943: __istream_type& +13943: seekg(off_type, ios_base::seekdir); +13943: +13943: +13943: protected: +13943: basic_istream() +13943: : _M_gcount(streamsize(0)) +13943: { this->init(0); } +13943: +13943: +13943: basic_istream(const basic_istream&) = delete; +13943: +13943: basic_istream(basic_istream&& __rhs) +13943: : __ios_type(), _M_gcount(__rhs._M_gcount) +13943: { +13943: __ios_type::move(__rhs); +13943: __rhs._M_gcount = 0; +13943: } +13943: +13943: +13943: +13943: basic_istream& operator=(const basic_istream&) = delete; +13943: +13943: basic_istream& +13943: operator=(basic_istream&& __rhs) +13943: { +13943: swap(__rhs); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_istream& __rhs) +13943: { +13943: __ios_type::swap(__rhs); +13943: std::swap(_M_gcount, __rhs._M_gcount); +13943: } +13943: +13943: +13943: template +13943: __istream_type& +13943: _M_extract(_ValueT& __v); +13943: }; +13943: +13943: +13943: template<> +13943: basic_istream& +13943: basic_istream:: +13943: getline(char_type* __s, streamsize __n, char_type __delim); +13943: +13943: template<> +13943: basic_istream& +13943: basic_istream:: +13943: ignore(streamsize __n); +13943: +13943: template<> +13943: basic_istream& +13943: basic_istream:: +13943: ignore(streamsize __n, int_type __delim); +13943: +13943: +13943: template<> +13943: basic_istream& +13943: basic_istream:: +13943: getline(char_type* __s, streamsize __n, char_type __delim); +13943: +13943: template<> +13943: basic_istream& +13943: basic_istream:: +13943: ignore(streamsize __n); +13943: +13943: template<> +13943: basic_istream& +13943: basic_istream:: +13943: ignore(streamsize __n, int_type __delim); +13943: # 778 "/usr/include/c++/14/istream" 3 +13943: template +13943: class basic_istream<_CharT, _Traits>::sentry +13943: { +13943: +13943: bool _M_ok; +13943: +13943: public: +13943: +13943: typedef _Traits traits_type; +13943: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef typename __istream_type::__ctype_type __ctype_type; +13943: typedef typename _Traits::int_type __int_type; +13943: # 814 "/usr/include/c++/14/istream" 3 +13943: explicit +13943: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); +13943: # 825 "/usr/include/c++/14/istream" 3 +13943: explicit +13943: +13943: operator bool() const +13943: { return _M_ok; } +13943: }; +13943: # 843 "/usr/include/c++/14/istream" 3 +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); +13943: +13943: template +13943: inline basic_istream& +13943: operator>>(basic_istream& __in, unsigned char& __c) +13943: { return (__in >> reinterpret_cast(__c)); } +13943: +13943: template +13943: inline basic_istream& +13943: operator>>(basic_istream& __in, signed char& __c) +13943: { return (__in >> reinterpret_cast(__c)); } +13943: +13943: +13943: +13943: template +13943: void +13943: __istream_extract(basic_istream<_CharT, _Traits>&, _CharT*, streamsize); +13943: +13943: void __istream_extract(istream&, char*, streamsize); +13943: # 893 "/usr/include/c++/14/istream" 3 +13943: template +13943: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) +13943: inline basic_istream<_CharT, _Traits>& +13943: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) +13943: { +13943: +13943: +13943: +13943: size_t __n = __builtin_object_size(__s, 0); +13943: if (__n < sizeof(_CharT)) +13943: { +13943: +13943: do { if (std::__is_constant_evaluated() && !bool(__n >= sizeof(_CharT))) std::__glibcxx_assert_fail(); } while (false); +13943: +13943: __in.width(0); +13943: __in.setstate(ios_base::failbit); +13943: } +13943: else if (__n != (size_t)-1) +13943: { +13943: __n /= sizeof(_CharT); +13943: streamsize __w = __in.width(); +13943: std::__istream_extract(__in, __s, __n); +13943: if (__in.good() && (__w <= 0 || __n < (size_t)__w)) +13943: { +13943: +13943: +13943: const typename _Traits::int_type __c = __in.rdbuf()->sgetc(); +13943: const bool __eof = _Traits::eq_int_type(__c, _Traits::eof()); +13943: if (__builtin_expect(__eof, true)) +13943: __in.setstate(ios_base::eofbit); +13943: } +13943: } +13943: else +13943: +13943: { +13943: +13943: streamsize __n = __gnu_cxx::__numeric_traits::__max; +13943: __n /= sizeof(_CharT); +13943: std::__istream_extract(__in, __s, __n); +13943: } +13943: return __in; +13943: } +13943: +13943: template +13943: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) +13943: inline basic_istream& +13943: operator>>(basic_istream& __in, unsigned char* __s) +13943: { return __in >> reinterpret_cast(__s); } +13943: +13943: template +13943: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) +13943: inline basic_istream& +13943: operator>>(basic_istream& __in, signed char* __s) +13943: { return __in >> reinterpret_cast(__s); } +13943: # 982 "/usr/include/c++/14/istream" 3 +13943: template +13943: class basic_iostream +13943: : public basic_istream<_CharT, _Traits>, +13943: public basic_ostream<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: +13943: +13943: typedef _CharT char_type; +13943: typedef typename _Traits::int_type int_type; +13943: typedef typename _Traits::pos_type pos_type; +13943: typedef typename _Traits::off_type off_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef basic_ostream<_CharT, _Traits> __ostream_type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) +13943: : __istream_type(__sb), __ostream_type(__sb) { } +13943: +13943: +13943: +13943: +13943: virtual +13943: ~basic_iostream() { } +13943: +13943: protected: +13943: basic_iostream() +13943: : __istream_type(), __ostream_type() { } +13943: +13943: +13943: basic_iostream(const basic_iostream&) = delete; +13943: +13943: basic_iostream(basic_iostream&& __rhs) +13943: : __istream_type(std::move(__rhs)), __ostream_type(*this) +13943: { } +13943: +13943: +13943: +13943: basic_iostream& operator=(const basic_iostream&) = delete; +13943: +13943: basic_iostream& +13943: operator=(basic_iostream&& __rhs) +13943: { +13943: swap(__rhs); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_iostream& __rhs) +13943: { __istream_type::swap(__rhs); } +13943: +13943: }; +13943: # 1065 "/usr/include/c++/14/istream" 3 +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: ws(basic_istream<_CharT, _Traits>& __is); +13943: # 1081 "/usr/include/c++/14/istream" 3 +13943: template, +13943: typename = decltype(std::declval<_Is&>() >> std::declval<_Tp>())> +13943: using __rvalue_stream_extraction_t = _Is&&; +13943: # 1097 "/usr/include/c++/14/istream" 3 +13943: template +13943: inline __rvalue_stream_extraction_t<_Istream, _Tp> +13943: operator>>(_Istream&& __is, _Tp&& __x) +13943: { +13943: __is >> std::forward<_Tp>(__x); +13943: return std::move(__is); +13943: } +13943: +13943: +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/istream.tcc" 1 3 +13943: # 37 "/usr/include/c++/14/bits/istream.tcc" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/istream.tcc" 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: basic_istream<_CharT, _Traits>::sentry:: +13943: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: if (__in.good()) +13943: { +13943: try +13943: { +13943: if (__in.tie()) +13943: __in.tie()->flush(); +13943: if (!__noskip && bool(__in.flags() & ios_base::skipws)) +13943: { +13943: const __int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = __in.rdbuf(); +13943: __int_type __c = __sb->sgetc(); +13943: +13943: const __ctype_type& __ct = __check_facet(__in._M_ctype); +13943: while (!traits_type::eq_int_type(__c, __eof) +13943: && __ct.is(ctype_base::space, +13943: traits_type::to_char_type(__c))) +13943: __c = __sb->snextc(); +13943: +13943: +13943: +13943: +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: } +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: __in._M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { __in._M_setstate(ios_base::badbit); } +13943: } +13943: +13943: if (__in.good() && __err == ios_base::goodbit) +13943: _M_ok = true; +13943: else +13943: { +13943: __err |= ios_base::failbit; +13943: __in.setstate(__err); +13943: } +13943: } +13943: +13943: template +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: _M_extract(_ValueT& __v) +13943: { +13943: sentry __cerb(*this, false); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: +13943: const __num_get_type& __ng = __check_facet(this->_M_num_get); +13943: +13943: +13943: +13943: +13943: __ng.get(*this, 0, *this, __err, __v); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: operator>>(short& __n) +13943: { +13943: +13943: +13943: sentry __cerb(*this, false); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: long __l; +13943: +13943: const __num_get_type& __ng = __check_facet(this->_M_num_get); +13943: +13943: +13943: +13943: +13943: __ng.get(*this, 0, *this, __err, __l); +13943: +13943: +13943: +13943: if (__l < __gnu_cxx::__numeric_traits::__min) +13943: { +13943: __err |= ios_base::failbit; +13943: __n = __gnu_cxx::__numeric_traits::__min; +13943: } +13943: else if (__l > __gnu_cxx::__numeric_traits::__max) +13943: { +13943: __err |= ios_base::failbit; +13943: __n = __gnu_cxx::__numeric_traits::__max; +13943: } +13943: else +13943: __n = short(__l); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: operator>>(int& __n) +13943: { +13943: +13943: +13943: sentry __cerb(*this, false); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: long __l; +13943: +13943: const __num_get_type& __ng = __check_facet(this->_M_num_get); +13943: +13943: +13943: +13943: +13943: __ng.get(*this, 0, *this, __err, __l); +13943: +13943: +13943: +13943: if (__l < __gnu_cxx::__numeric_traits::__min) +13943: { +13943: __err |= ios_base::failbit; +13943: __n = __gnu_cxx::__numeric_traits::__min; +13943: } +13943: else if (__l > __gnu_cxx::__numeric_traits::__max) +13943: { +13943: __err |= ios_base::failbit; +13943: __n = __gnu_cxx::__numeric_traits::__max; +13943: } +13943: else +13943: __n = int(__l); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: operator>>(__streambuf_type* __sbout) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: sentry __cerb(*this, false); +13943: if (__cerb && __sbout) +13943: { +13943: try +13943: { +13943: bool __ineof; +13943: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) +13943: __err |= ios_base::failbit; +13943: if (__ineof) +13943: __err |= ios_base::eofbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::failbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::failbit); } +13943: } +13943: else if (!__sbout) +13943: __err |= ios_base::failbit; +13943: if (__err) +13943: this->setstate(__err); +13943: return *this; +13943: } +13943: +13943: template +13943: typename basic_istream<_CharT, _Traits>::int_type +13943: basic_istream<_CharT, _Traits>:: +13943: get(void) +13943: { +13943: const int_type __eof = traits_type::eof(); +13943: int_type __c = __eof; +13943: _M_gcount = 0; +13943: ios_base::iostate __err = ios_base::goodbit; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: __c = this->rdbuf()->sbumpc(); +13943: +13943: if (!traits_type::eq_int_type(__c, __eof)) +13943: _M_gcount = 1; +13943: else +13943: __err |= ios_base::eofbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: } +13943: if (!_M_gcount) +13943: __err |= ios_base::failbit; +13943: if (__err) +13943: this->setstate(__err); +13943: return __c; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: get(char_type& __c) +13943: { +13943: _M_gcount = 0; +13943: ios_base::iostate __err = ios_base::goodbit; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: const int_type __cb = this->rdbuf()->sbumpc(); +13943: +13943: if (!traits_type::eq_int_type(__cb, traits_type::eof())) +13943: { +13943: _M_gcount = 1; +13943: __c = traits_type::to_char_type(__cb); +13943: } +13943: else +13943: __err |= ios_base::eofbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: } +13943: if (!_M_gcount) +13943: __err |= ios_base::failbit; +13943: if (__err) +13943: this->setstate(__err); +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: get(char_type* __s, streamsize __n, char_type __delim) +13943: { +13943: _M_gcount = 0; +13943: ios_base::iostate __err = ios_base::goodbit; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: const int_type __idelim = traits_type::to_int_type(__delim); +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = this->rdbuf(); +13943: int_type __c = __sb->sgetc(); +13943: +13943: while (_M_gcount + 1 < __n +13943: && !traits_type::eq_int_type(__c, __eof) +13943: && !traits_type::eq_int_type(__c, __idelim)) +13943: { +13943: *__s++ = traits_type::to_char_type(__c); +13943: ++_M_gcount; +13943: __c = __sb->snextc(); +13943: } +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: } +13943: +13943: +13943: if (__n > 0) +13943: *__s = char_type(); +13943: if (!_M_gcount) +13943: __err |= ios_base::failbit; +13943: if (__err) +13943: this->setstate(__err); +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: get(__streambuf_type& __sb, char_type __delim) +13943: { +13943: _M_gcount = 0; +13943: ios_base::iostate __err = ios_base::goodbit; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: const int_type __idelim = traits_type::to_int_type(__delim); +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __this_sb = this->rdbuf(); +13943: int_type __c = __this_sb->sgetc(); +13943: char_type __c2 = traits_type::to_char_type(__c); +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: unsigned long long __gcount = 0; +13943: #pragma GCC diagnostic pop +13943: +13943: while (!traits_type::eq_int_type(__c, __eof) +13943: && !traits_type::eq_int_type(__c, __idelim) +13943: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) +13943: { +13943: ++__gcount; +13943: __c = __this_sb->snextc(); +13943: __c2 = traits_type::to_char_type(__c); +13943: } +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: +13943: +13943: if (__gcount <= __gnu_cxx::__numeric_traits::__max) +13943: _M_gcount = __gcount; +13943: else +13943: _M_gcount = __gnu_cxx::__numeric_traits::__max; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: } +13943: if (!_M_gcount) +13943: __err |= ios_base::failbit; +13943: if (__err) +13943: this->setstate(__err); +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: getline(char_type* __s, streamsize __n, char_type __delim) +13943: { +13943: _M_gcount = 0; +13943: ios_base::iostate __err = ios_base::goodbit; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: const int_type __idelim = traits_type::to_int_type(__delim); +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = this->rdbuf(); +13943: int_type __c = __sb->sgetc(); +13943: +13943: while (_M_gcount + 1 < __n +13943: && !traits_type::eq_int_type(__c, __eof) +13943: && !traits_type::eq_int_type(__c, __idelim)) +13943: { +13943: *__s++ = traits_type::to_char_type(__c); +13943: __c = __sb->snextc(); +13943: ++_M_gcount; +13943: } +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: else +13943: { +13943: if (traits_type::eq_int_type(__c, __idelim)) +13943: { +13943: __sb->sbumpc(); +13943: ++_M_gcount; +13943: } +13943: else +13943: __err |= ios_base::failbit; +13943: } +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: } +13943: +13943: +13943: if (__n > 0) +13943: *__s = char_type(); +13943: if (!_M_gcount) +13943: __err |= ios_base::failbit; +13943: if (__err) +13943: this->setstate(__err); +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: ignore(void) +13943: { +13943: _M_gcount = 0; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = this->rdbuf(); +13943: +13943: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) +13943: __err |= ios_base::eofbit; +13943: else +13943: _M_gcount = 1; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: ignore(streamsize __n) +13943: { +13943: _M_gcount = 0; +13943: sentry __cerb(*this, true); +13943: if (__cerb && __n > 0) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = this->rdbuf(); +13943: int_type __c = __sb->sgetc(); +13943: # 548 "/usr/include/c++/14/bits/istream.tcc" 3 +13943: bool __large_ignore = false; +13943: while (true) +13943: { +13943: while (_M_gcount < __n +13943: && !traits_type::eq_int_type(__c, __eof)) +13943: { +13943: ++_M_gcount; +13943: __c = __sb->snextc(); +13943: } +13943: if (__n == __gnu_cxx::__numeric_traits::__max +13943: && !traits_type::eq_int_type(__c, __eof)) +13943: { +13943: _M_gcount = +13943: __gnu_cxx::__numeric_traits::__min; +13943: __large_ignore = true; +13943: } +13943: else +13943: break; +13943: } +13943: +13943: if (__n == __gnu_cxx::__numeric_traits::__max) +13943: { +13943: if (__large_ignore) +13943: _M_gcount = __gnu_cxx::__numeric_traits::__max; +13943: +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: } +13943: else if (_M_gcount < __n) +13943: { +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: } +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: ignore(streamsize __n, int_type __delim) +13943: { +13943: _M_gcount = 0; +13943: sentry __cerb(*this, true); +13943: if (__cerb && __n > 0) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = this->rdbuf(); +13943: int_type __c = __sb->sgetc(); +13943: +13943: +13943: bool __large_ignore = false; +13943: while (true) +13943: { +13943: while (_M_gcount < __n +13943: && !traits_type::eq_int_type(__c, __eof) +13943: && !traits_type::eq_int_type(__c, __delim)) +13943: { +13943: ++_M_gcount; +13943: __c = __sb->snextc(); +13943: } +13943: if (__n == __gnu_cxx::__numeric_traits::__max +13943: && !traits_type::eq_int_type(__c, __eof) +13943: && !traits_type::eq_int_type(__c, __delim)) +13943: { +13943: _M_gcount = +13943: __gnu_cxx::__numeric_traits::__min; +13943: __large_ignore = true; +13943: } +13943: else +13943: break; +13943: } +13943: +13943: if (__n == __gnu_cxx::__numeric_traits::__max) +13943: { +13943: if (__large_ignore) +13943: _M_gcount = __gnu_cxx::__numeric_traits::__max; +13943: +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: else +13943: { +13943: if (_M_gcount != __n) +13943: ++_M_gcount; +13943: __sb->sbumpc(); +13943: } +13943: } +13943: else if (_M_gcount < __n) +13943: { +13943: if (traits_type::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: else +13943: { +13943: ++_M_gcount; +13943: __sb->sbumpc(); +13943: } +13943: } +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: typename basic_istream<_CharT, _Traits>::int_type +13943: basic_istream<_CharT, _Traits>:: +13943: peek(void) +13943: { +13943: int_type __c = traits_type::eof(); +13943: _M_gcount = 0; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: __c = this->rdbuf()->sgetc(); +13943: if (traits_type::eq_int_type(__c, traits_type::eof())) +13943: __err |= ios_base::eofbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return __c; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: read(char_type* __s, streamsize __n) +13943: { +13943: _M_gcount = 0; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: _M_gcount = this->rdbuf()->sgetn(__s, __n); +13943: if (_M_gcount != __n) +13943: __err |= (ios_base::eofbit | ios_base::failbit); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: streamsize +13943: basic_istream<_CharT, _Traits>:: +13943: readsome(char_type* __s, streamsize __n) +13943: { +13943: _M_gcount = 0; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: +13943: const streamsize __num = this->rdbuf()->in_avail(); +13943: if (__num > 0) +13943: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); +13943: else if (__num == -1) +13943: __err |= ios_base::eofbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return _M_gcount; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: putback(char_type __c) +13943: { +13943: +13943: +13943: _M_gcount = 0; +13943: +13943: this->clear(this->rdstate() & ~ios_base::eofbit); +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = this->rdbuf(); +13943: if (!__sb +13943: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) +13943: __err |= ios_base::badbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: unget(void) +13943: { +13943: +13943: +13943: _M_gcount = 0; +13943: +13943: this->clear(this->rdstate() & ~ios_base::eofbit); +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const int_type __eof = traits_type::eof(); +13943: __streambuf_type* __sb = this->rdbuf(); +13943: if (!__sb +13943: || traits_type::eq_int_type(__sb->sungetc(), __eof)) +13943: __err |= ios_base::badbit; +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: int +13943: basic_istream<_CharT, _Traits>:: +13943: sync(void) +13943: { +13943: +13943: +13943: int __ret = -1; +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: __streambuf_type* __sb = this->rdbuf(); +13943: if (__sb) +13943: { +13943: if (__sb->pubsync() == -1) +13943: __err |= ios_base::badbit; +13943: else +13943: __ret = 0; +13943: } +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_istream<_CharT, _Traits>::pos_type +13943: basic_istream<_CharT, _Traits>:: +13943: tellg(void) +13943: { +13943: +13943: +13943: pos_type __ret = pos_type(-1); +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: if (!this->fail()) +13943: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, +13943: ios_base::in); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: seekg(pos_type __pos) +13943: { +13943: +13943: +13943: +13943: this->clear(this->rdstate() & ~ios_base::eofbit); +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: if (!this->fail()) +13943: { +13943: +13943: const pos_type __p = this->rdbuf()->pubseekpos(__pos, +13943: ios_base::in); +13943: +13943: +13943: if (__p == pos_type(off_type(-1))) +13943: __err |= ios_base::failbit; +13943: } +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: basic_istream<_CharT, _Traits>:: +13943: seekg(off_type __off, ios_base::seekdir __dir) +13943: { +13943: +13943: +13943: +13943: this->clear(this->rdstate() & ~ios_base::eofbit); +13943: sentry __cerb(*this, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: if (!this->fail()) +13943: { +13943: +13943: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, +13943: ios_base::in); +13943: +13943: +13943: if (__p == pos_type(off_type(-1))) +13943: __err |= ios_base::failbit; +13943: } +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: this->_M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { this->_M_setstate(ios_base::badbit); } +13943: if (__err) +13943: this->setstate(__err); +13943: } +13943: return *this; +13943: } +13943: +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) +13943: { +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef typename __istream_type::int_type __int_type; +13943: +13943: typename __istream_type::sentry __cerb(__in, false); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const __int_type __cb = __in.rdbuf()->sbumpc(); +13943: if (!_Traits::eq_int_type(__cb, _Traits::eof())) +13943: __c = _Traits::to_char_type(__cb); +13943: else +13943: __err |= (ios_base::eofbit | ios_base::failbit); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: __in._M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { __in._M_setstate(ios_base::badbit); } +13943: if (__err) +13943: __in.setstate(__err); +13943: } +13943: return __in; +13943: } +13943: +13943: template +13943: void +13943: __istream_extract(basic_istream<_CharT, _Traits>& __in, _CharT* __s, +13943: streamsize __num) +13943: { +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +13943: typedef typename _Traits::int_type int_type; +13943: typedef _CharT char_type; +13943: typedef ctype<_CharT> __ctype_type; +13943: +13943: streamsize __extracted = 0; +13943: ios_base::iostate __err = ios_base::goodbit; +13943: typename __istream_type::sentry __cerb(__in, false); +13943: if (__cerb) +13943: { +13943: try +13943: { +13943: +13943: streamsize __width = __in.width(); +13943: if (0 < __width && __width < __num) +13943: __num = __width; +13943: +13943: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); +13943: +13943: const int_type __eof = _Traits::eof(); +13943: __streambuf_type* __sb = __in.rdbuf(); +13943: int_type __c = __sb->sgetc(); +13943: +13943: while (__extracted < __num - 1 +13943: && !_Traits::eq_int_type(__c, __eof) +13943: && !__ct.is(ctype_base::space, +13943: _Traits::to_char_type(__c))) +13943: { +13943: *__s++ = _Traits::to_char_type(__c); +13943: ++__extracted; +13943: __c = __sb->snextc(); +13943: } +13943: +13943: if (__extracted < __num - 1 +13943: && _Traits::eq_int_type(__c, __eof)) +13943: __err |= ios_base::eofbit; +13943: +13943: +13943: +13943: *__s = char_type(); +13943: __in.width(0); +13943: } +13943: catch(__cxxabiv1::__forced_unwind&) +13943: { +13943: __in._M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { __in._M_setstate(ios_base::badbit); } +13943: } +13943: if (!__extracted) +13943: __err |= ios_base::failbit; +13943: if (__err) +13943: __in.setstate(__err); +13943: } +13943: +13943: +13943: template +13943: basic_istream<_CharT, _Traits>& +13943: ws(basic_istream<_CharT, _Traits>& __in) +13943: { +13943: typedef basic_istream<_CharT, _Traits> __istream_type; +13943: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +13943: typedef typename __istream_type::int_type __int_type; +13943: typedef ctype<_CharT> __ctype_type; +13943: +13943: +13943: +13943: typename __istream_type::sentry __cerb(__in, true); +13943: if (__cerb) +13943: { +13943: ios_base::iostate __err = ios_base::goodbit; +13943: try +13943: { +13943: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); +13943: const __int_type __eof = _Traits::eof(); +13943: __streambuf_type* __sb = __in.rdbuf(); +13943: __int_type __c = __sb->sgetc(); +13943: +13943: while (true) +13943: { +13943: if (_Traits::eq_int_type(__c, __eof)) +13943: { +13943: __err = ios_base::eofbit; +13943: break; +13943: } +13943: if (!__ct.is(ctype_base::space, _Traits::to_char_type(__c))) +13943: break; +13943: __c = __sb->snextc(); +13943: } +13943: } +13943: catch(const __cxxabiv1::__forced_unwind&) +13943: { +13943: __in._M_setstate(ios_base::badbit); +13943: throw; +13943: } +13943: catch(...) +13943: { +13943: __in._M_setstate(ios_base::badbit); +13943: } +13943: if (__err) +13943: __in.setstate(__err); +13943: } +13943: return __in; +13943: } +13943: +13943: +13943: +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wc++11-extensions" +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: extern template class basic_istream; +13943: extern template istream& ws(istream&); +13943: extern template istream& operator>>(istream&, char&); +13943: extern template istream& operator>>(istream&, unsigned char&); +13943: extern template istream& operator>>(istream&, signed char&); +13943: +13943: extern template istream& istream::_M_extract(unsigned short&); +13943: extern template istream& istream::_M_extract(unsigned int&); +13943: extern template istream& istream::_M_extract(long&); +13943: extern template istream& istream::_M_extract(unsigned long&); +13943: extern template istream& istream::_M_extract(bool&); +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wlong-long" +13943: extern template istream& istream::_M_extract(long long&); +13943: extern template istream& istream::_M_extract(unsigned long long&); +13943: #pragma GCC diagnostic pop +13943: +13943: extern template istream& istream::_M_extract(float&); +13943: extern template istream& istream::_M_extract(double&); +13943: extern template istream& istream::_M_extract(long double&); +13943: extern template istream& istream::_M_extract(void*&); +13943: +13943: extern template class basic_iostream; +13943: +13943: +13943: extern template class basic_istream; +13943: extern template wistream& ws(wistream&); +13943: extern template wistream& operator>>(wistream&, wchar_t&); +13943: extern template void __istream_extract(wistream&, wchar_t*, streamsize); +13943: +13943: extern template wistream& wistream::_M_extract(unsigned short&); +13943: extern template wistream& wistream::_M_extract(unsigned int&); +13943: extern template wistream& wistream::_M_extract(long&); +13943: extern template wistream& wistream::_M_extract(unsigned long&); +13943: extern template wistream& wistream::_M_extract(bool&); +13943: +13943: extern template wistream& wistream::_M_extract(long long&); +13943: extern template wistream& wistream::_M_extract(unsigned long long&); +13943: +13943: extern template wistream& wistream::_M_extract(float&); +13943: extern template wistream& wistream::_M_extract(double&); +13943: extern template wistream& wistream::_M_extract(long double&); +13943: extern template wistream& wistream::_M_extract(void*&); +13943: +13943: extern template class basic_iostream; +13943: +13943: #pragma GCC diagnostic pop +13943: +13943: +13943: +13943: } +13943: # 1110 "/usr/include/c++/14/istream" 2 3 +13943: # 41 "/usr/include/c++/14/sstream" 2 3 +13943: # 55 "/usr/include/c++/14/sstream" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: namespace __cxx11 { +13943: # 78 "/usr/include/c++/14/sstream" 3 +13943: template +13943: class basic_stringbuf : public basic_streambuf<_CharT, _Traits> +13943: { +13943: struct __xfer_bufptrs; +13943: +13943: +13943: using allocator_traits = std::allocator_traits<_Alloc>; +13943: using _Noexcept_swap +13943: = __or_; +13943: +13943: +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: typedef _Alloc allocator_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: typedef basic_streambuf __streambuf_type; +13943: typedef basic_string __string_type; +13943: typedef typename __string_type::size_type __size_type; +13943: +13943: protected: +13943: +13943: ios_base::openmode _M_mode; +13943: +13943: +13943: __string_type _M_string; +13943: +13943: public: +13943: # 121 "/usr/include/c++/14/sstream" 3 +13943: basic_stringbuf() +13943: : __streambuf_type(), _M_mode(ios_base::in | ios_base::out), _M_string() +13943: { } +13943: # 132 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_stringbuf(ios_base::openmode __mode) +13943: : __streambuf_type(), _M_mode(__mode), _M_string() +13943: { } +13943: # 145 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_stringbuf(const __string_type& __str, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: : __streambuf_type(), _M_mode(), +13943: _M_string(__str.data(), __str.size(), __str.get_allocator()) +13943: { _M_stringbuf_init(__mode); } +13943: +13943: +13943: basic_stringbuf(const basic_stringbuf&) = delete; +13943: +13943: basic_stringbuf(basic_stringbuf&& __rhs) +13943: : basic_stringbuf(std::move(__rhs), __xfer_bufptrs(__rhs, this)) +13943: { __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); } +13943: # 209 "/usr/include/c++/14/sstream" 3 +13943: basic_stringbuf& +13943: operator=(const basic_stringbuf&) = delete; +13943: +13943: basic_stringbuf& +13943: operator=(basic_stringbuf&& __rhs) +13943: { +13943: __xfer_bufptrs __st{__rhs, this}; +13943: const __streambuf_type& __base = __rhs; +13943: __streambuf_type::operator=(__base); +13943: this->pubimbue(__rhs.getloc()); +13943: _M_mode = __rhs._M_mode; +13943: _M_string = std::move(__rhs._M_string); +13943: __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_stringbuf& __rhs) noexcept(_Noexcept_swap::value) +13943: { +13943: __xfer_bufptrs __l_st{*this, std::__addressof(__rhs)}; +13943: __xfer_bufptrs __r_st{__rhs, this}; +13943: __streambuf_type& __base = __rhs; +13943: __streambuf_type::swap(__base); +13943: __rhs.pubimbue(this->pubimbue(__rhs.getloc())); +13943: std::swap(_M_mode, __rhs._M_mode); +13943: std::swap(_M_string, __rhs._M_string); +13943: } +13943: # 248 "/usr/include/c++/14/sstream" 3 +13943: __string_type +13943: str() const +13943: { +13943: __string_type __ret(_M_string.get_allocator()); +13943: if (char_type* __hi = _M_high_mark()) +13943: __ret.assign(this->pbase(), __hi); +13943: else +13943: __ret = _M_string; +13943: return __ret; +13943: } +13943: # 304 "/usr/include/c++/14/sstream" 3 +13943: void +13943: str(const __string_type& __s) +13943: { +13943: +13943: +13943: _M_string.assign(__s.data(), __s.size()); +13943: _M_stringbuf_init(_M_mode); +13943: } +13943: # 333 "/usr/include/c++/14/sstream" 3 +13943: protected: +13943: +13943: void +13943: _M_stringbuf_init(ios_base::openmode __mode) +13943: { +13943: _M_mode = __mode; +13943: __size_type __len = 0; +13943: if (_M_mode & (ios_base::ate | ios_base::app)) +13943: __len = _M_string.size(); +13943: _M_sync(const_cast(_M_string.data()), 0, __len); +13943: } +13943: +13943: virtual streamsize +13943: showmanyc() +13943: { +13943: streamsize __ret = -1; +13943: if (_M_mode & ios_base::in) +13943: { +13943: _M_update_egptr(); +13943: __ret = this->egptr() - this->gptr(); +13943: } +13943: return __ret; +13943: } +13943: +13943: virtual int_type +13943: underflow(); +13943: +13943: virtual int_type +13943: pbackfail(int_type __c = traits_type::eof()); +13943: +13943: virtual int_type +13943: overflow(int_type __c = traits_type::eof()); +13943: # 377 "/usr/include/c++/14/sstream" 3 +13943: virtual __streambuf_type* +13943: setbuf(char_type* __s, streamsize __n) +13943: { +13943: if (__s && __n >= 0) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: _M_string.clear(); +13943: +13943: +13943: _M_sync(__s, __n, 0); +13943: } +13943: return this; +13943: } +13943: +13943: virtual pos_type +13943: seekoff(off_type __off, ios_base::seekdir __way, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out); +13943: +13943: virtual pos_type +13943: seekpos(pos_type __sp, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out); +13943: +13943: +13943: +13943: +13943: void +13943: _M_sync(char_type* __base, __size_type __i, __size_type __o); +13943: +13943: +13943: +13943: void +13943: _M_update_egptr() +13943: { +13943: if (char_type* __pptr = this->pptr()) +13943: { +13943: char_type* __egptr = this->egptr(); +13943: if (!__egptr || __pptr > __egptr) +13943: { +13943: if (_M_mode & ios_base::in) +13943: this->setg(this->eback(), this->gptr(), __pptr); +13943: else +13943: this->setg(__pptr, __pptr, __pptr); +13943: } +13943: } +13943: } +13943: +13943: +13943: +13943: void +13943: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off); +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: __attribute__((__always_inline__)) +13943: char_type* +13943: _M_high_mark() const noexcept +13943: { +13943: if (char_type* __pptr = this->pptr()) +13943: { +13943: char_type* __egptr = this->egptr(); +13943: if (!__egptr || __pptr > __egptr) +13943: return __pptr; +13943: else +13943: return __egptr; +13943: } +13943: return 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: struct __xfer_bufptrs +13943: { +13943: __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to) +13943: : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1} +13943: { +13943: const _CharT* const __str = __from._M_string.data(); +13943: const _CharT* __end = nullptr; +13943: if (__from.eback()) +13943: { +13943: _M_goff[0] = __from.eback() - __str; +13943: _M_goff[1] = __from.gptr() - __str; +13943: _M_goff[2] = __from.egptr() - __str; +13943: __end = __from.egptr(); +13943: } +13943: if (__from.pbase()) +13943: { +13943: _M_poff[0] = __from.pbase() - __str; +13943: _M_poff[1] = __from.pptr() - __from.pbase(); +13943: _M_poff[2] = __from.epptr() - __str; +13943: if (!__end || __from.pptr() > __end) +13943: __end = __from.pptr(); +13943: } +13943: +13943: +13943: if (__end) +13943: { +13943: +13943: +13943: auto& __mut_from = const_cast(__from); +13943: __mut_from._M_string._M_length(__end - __str); +13943: } +13943: } +13943: +13943: ~__xfer_bufptrs() +13943: { +13943: char_type* __str = const_cast(_M_to->_M_string.data()); +13943: if (_M_goff[0] != -1) +13943: _M_to->setg(__str+_M_goff[0], __str+_M_goff[1], __str+_M_goff[2]); +13943: if (_M_poff[0] != -1) +13943: _M_to->_M_pbump(__str+_M_poff[0], __str+_M_poff[2], _M_poff[1]); +13943: } +13943: +13943: basic_stringbuf* _M_to; +13943: off_type _M_goff[3]; +13943: off_type _M_poff[3]; +13943: }; +13943: # 513 "/usr/include/c++/14/sstream" 3 +13943: basic_stringbuf(basic_stringbuf&& __rhs, __xfer_bufptrs&&) +13943: : __streambuf_type(static_cast(__rhs)), +13943: _M_mode(__rhs._M_mode), _M_string(std::move(__rhs._M_string)) +13943: { } +13943: # 528 "/usr/include/c++/14/sstream" 3 +13943: }; +13943: # 546 "/usr/include/c++/14/sstream" 3 +13943: template +13943: class basic_istringstream : public basic_istream<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: typedef _Alloc allocator_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: +13943: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +13943: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; +13943: typedef basic_istream __istream_type; +13943: +13943: private: +13943: __stringbuf_type _M_stringbuf; +13943: +13943: public: +13943: # 580 "/usr/include/c++/14/sstream" 3 +13943: basic_istringstream() +13943: : __istream_type(), _M_stringbuf(ios_base::in) +13943: { this->init(&_M_stringbuf); } +13943: # 596 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_istringstream(ios_base::openmode __mode) +13943: : __istream_type(), _M_stringbuf(__mode | ios_base::in) +13943: { this->init(&_M_stringbuf); } +13943: # 614 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_istringstream(const __string_type& __str, +13943: ios_base::openmode __mode = ios_base::in) +13943: : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) +13943: { this->init(&_M_stringbuf); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~basic_istringstream() +13943: { } +13943: +13943: +13943: basic_istringstream(const basic_istringstream&) = delete; +13943: +13943: basic_istringstream(basic_istringstream&& __rhs) +13943: : __istream_type(std::move(__rhs)), +13943: _M_stringbuf(std::move(__rhs._M_stringbuf)) +13943: { __istream_type::set_rdbuf(&_M_stringbuf); } +13943: # 671 "/usr/include/c++/14/sstream" 3 +13943: basic_istringstream& +13943: operator=(const basic_istringstream&) = delete; +13943: +13943: basic_istringstream& +13943: operator=(basic_istringstream&& __rhs) +13943: { +13943: __istream_type::operator=(std::move(__rhs)); +13943: _M_stringbuf = std::move(__rhs._M_stringbuf); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_istringstream& __rhs) +13943: { +13943: __istream_type::swap(__rhs); +13943: _M_stringbuf.swap(__rhs._M_stringbuf); +13943: } +13943: # 697 "/usr/include/c++/14/sstream" 3 +13943: __stringbuf_type* +13943: rdbuf() const +13943: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } +13943: +13943: +13943: +13943: +13943: +13943: __string_type +13943: str() const +13943: { return _M_stringbuf.str(); } +13943: # 735 "/usr/include/c++/14/sstream" 3 +13943: void +13943: str(const __string_type& __s) +13943: { _M_stringbuf.str(__s); } +13943: # 752 "/usr/include/c++/14/sstream" 3 +13943: }; +13943: # 770 "/usr/include/c++/14/sstream" 3 +13943: template +13943: class basic_ostringstream : public basic_ostream<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: typedef _Alloc allocator_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: +13943: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +13943: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; +13943: typedef basic_ostream __ostream_type; +13943: +13943: private: +13943: __stringbuf_type _M_stringbuf; +13943: +13943: public: +13943: # 804 "/usr/include/c++/14/sstream" 3 +13943: basic_ostringstream() +13943: : __ostream_type(), _M_stringbuf(ios_base::out) +13943: { this->init(&_M_stringbuf); } +13943: # 820 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_ostringstream(ios_base::openmode __mode) +13943: : __ostream_type(), _M_stringbuf(__mode | ios_base::out) +13943: { this->init(&_M_stringbuf); } +13943: # 838 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_ostringstream(const __string_type& __str, +13943: ios_base::openmode __mode = ios_base::out) +13943: : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) +13943: { this->init(&_M_stringbuf); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~basic_ostringstream() +13943: { } +13943: +13943: +13943: basic_ostringstream(const basic_ostringstream&) = delete; +13943: +13943: basic_ostringstream(basic_ostringstream&& __rhs) +13943: : __ostream_type(std::move(__rhs)), +13943: _M_stringbuf(std::move(__rhs._M_stringbuf)) +13943: { __ostream_type::set_rdbuf(&_M_stringbuf); } +13943: # 895 "/usr/include/c++/14/sstream" 3 +13943: basic_ostringstream& +13943: operator=(const basic_ostringstream&) = delete; +13943: +13943: basic_ostringstream& +13943: operator=(basic_ostringstream&& __rhs) +13943: { +13943: __ostream_type::operator=(std::move(__rhs)); +13943: _M_stringbuf = std::move(__rhs._M_stringbuf); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_ostringstream& __rhs) +13943: { +13943: __ostream_type::swap(__rhs); +13943: _M_stringbuf.swap(__rhs._M_stringbuf); +13943: } +13943: # 921 "/usr/include/c++/14/sstream" 3 +13943: __stringbuf_type* +13943: rdbuf() const +13943: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } +13943: +13943: +13943: +13943: +13943: +13943: __string_type +13943: str() const +13943: { return _M_stringbuf.str(); } +13943: # 959 "/usr/include/c++/14/sstream" 3 +13943: void +13943: str(const __string_type& __s) +13943: { _M_stringbuf.str(__s); } +13943: # 976 "/usr/include/c++/14/sstream" 3 +13943: }; +13943: # 994 "/usr/include/c++/14/sstream" 3 +13943: template +13943: class basic_stringstream : public basic_iostream<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: +13943: +13943: typedef _Alloc allocator_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: +13943: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +13943: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; +13943: typedef basic_iostream __iostream_type; +13943: +13943: private: +13943: __stringbuf_type _M_stringbuf; +13943: +13943: public: +13943: # 1028 "/usr/include/c++/14/sstream" 3 +13943: basic_stringstream() +13943: : __iostream_type(), _M_stringbuf(ios_base::out | ios_base::in) +13943: { this->init(&_M_stringbuf); } +13943: # 1042 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_stringstream(ios_base::openmode __m) +13943: : __iostream_type(), _M_stringbuf(__m) +13943: { this->init(&_M_stringbuf); } +13943: # 1058 "/usr/include/c++/14/sstream" 3 +13943: explicit +13943: basic_stringstream(const __string_type& __str, +13943: ios_base::openmode __m = ios_base::out | ios_base::in) +13943: : __iostream_type(), _M_stringbuf(__str, __m) +13943: { this->init(&_M_stringbuf); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ~basic_stringstream() +13943: { } +13943: +13943: +13943: basic_stringstream(const basic_stringstream&) = delete; +13943: +13943: basic_stringstream(basic_stringstream&& __rhs) +13943: : __iostream_type(std::move(__rhs)), +13943: _M_stringbuf(std::move(__rhs._M_stringbuf)) +13943: { __iostream_type::set_rdbuf(&_M_stringbuf); } +13943: # 1117 "/usr/include/c++/14/sstream" 3 +13943: basic_stringstream& +13943: operator=(const basic_stringstream&) = delete; +13943: +13943: basic_stringstream& +13943: operator=(basic_stringstream&& __rhs) +13943: { +13943: __iostream_type::operator=(std::move(__rhs)); +13943: _M_stringbuf = std::move(__rhs._M_stringbuf); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_stringstream& __rhs) +13943: { +13943: __iostream_type::swap(__rhs); +13943: _M_stringbuf.swap(__rhs._M_stringbuf); +13943: } +13943: # 1143 "/usr/include/c++/14/sstream" 3 +13943: __stringbuf_type* +13943: rdbuf() const +13943: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } +13943: +13943: +13943: +13943: +13943: +13943: __string_type +13943: str() const +13943: { return _M_stringbuf.str(); } +13943: # 1181 "/usr/include/c++/14/sstream" 3 +13943: void +13943: str(const __string_type& __s) +13943: { _M_stringbuf.str(__s); } +13943: # 1198 "/usr/include/c++/14/sstream" 3 +13943: }; +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x, +13943: basic_stringbuf<_CharT, _Traits, _Allocator>& __y) +13943: noexcept(noexcept(__x.swap(__y))) +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x, +13943: basic_istringstream<_CharT, _Traits, _Allocator>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x, +13943: basic_ostringstream<_CharT, _Traits, _Allocator>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x, +13943: basic_stringstream<_CharT, _Traits, _Allocator>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: } +13943: +13943: } +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/sstream.tcc" 1 3 +13943: # 37 "/usr/include/c++/14/bits/sstream.tcc" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/sstream.tcc" 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type +13943: basic_stringbuf<_CharT, _Traits, _Alloc>:: +13943: pbackfail(int_type __c) +13943: { +13943: int_type __ret = traits_type::eof(); +13943: if (this->eback() < this->gptr()) +13943: { +13943: +13943: +13943: const bool __testeof = traits_type::eq_int_type(__c, __ret); +13943: if (!__testeof) +13943: { +13943: const bool __testeq = traits_type::eq(traits_type:: +13943: to_char_type(__c), +13943: this->gptr()[-1]); +13943: const bool __testout = this->_M_mode & ios_base::out; +13943: if (__testeq || __testout) +13943: { +13943: this->gbump(-1); +13943: if (!__testeq) +13943: *this->gptr() = traits_type::to_char_type(__c); +13943: __ret = __c; +13943: } +13943: } +13943: else +13943: { +13943: this->gbump(-1); +13943: __ret = traits_type::not_eof(__c); +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type +13943: basic_stringbuf<_CharT, _Traits, _Alloc>:: +13943: overflow(int_type __c) +13943: { +13943: const bool __testout = this->_M_mode & ios_base::out; +13943: if (__builtin_expect(!__testout, false)) +13943: return traits_type::eof(); +13943: +13943: const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); +13943: if (__builtin_expect(__testeof, false)) +13943: return traits_type::not_eof(__c); +13943: +13943: const __size_type __capacity = _M_string.capacity(); +13943: +13943: +13943: if (size_t(this->epptr() - this->pbase()) < __capacity) +13943: { +13943: +13943: char_type* __base = const_cast(_M_string.data()); +13943: _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase()); +13943: if (_M_mode & ios_base::in) +13943: { +13943: const __size_type __nget = this->gptr() - this->eback(); +13943: const __size_type __eget = this->egptr() - this->eback(); +13943: this->setg(__base, __base + __nget, __base + __eget + 1); +13943: } +13943: *this->pptr() = traits_type::to_char_type(__c); +13943: this->pbump(1); +13943: return __c; +13943: } +13943: +13943: +13943: const __size_type __max_size = _M_string.max_size(); +13943: const bool __testput = this->pptr() < this->epptr(); +13943: if (__builtin_expect(!__testput && __capacity == __max_size, false)) +13943: return traits_type::eof(); +13943: +13943: +13943: +13943: const char_type __conv = traits_type::to_char_type(__c); +13943: if (!__testput) +13943: { +13943: # 129 "/usr/include/c++/14/bits/sstream.tcc" 3 +13943: const __size_type __opt_len = std::max(__size_type(2 * __capacity), +13943: __size_type(512)); +13943: const __size_type __len = std::min(__opt_len, __max_size); +13943: __string_type __tmp(_M_string.get_allocator()); +13943: __tmp.reserve(__len); +13943: if (this->pbase()) +13943: __tmp.assign(this->pbase(), this->epptr() - this->pbase()); +13943: __tmp.push_back(__conv); +13943: _M_string.swap(__tmp); +13943: _M_sync(const_cast(_M_string.data()), +13943: this->gptr() - this->eback(), this->pptr() - this->pbase()); +13943: } +13943: else +13943: *this->pptr() = __conv; +13943: this->pbump(1); +13943: return __c; +13943: } +13943: +13943: template +13943: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type +13943: basic_stringbuf<_CharT, _Traits, _Alloc>:: +13943: underflow() +13943: { +13943: int_type __ret = traits_type::eof(); +13943: const bool __testin = this->_M_mode & ios_base::in; +13943: if (__testin) +13943: { +13943: +13943: _M_update_egptr(); +13943: +13943: if (this->gptr() < this->egptr()) +13943: __ret = traits_type::to_int_type(*this->gptr()); +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type +13943: basic_stringbuf<_CharT, _Traits, _Alloc>:: +13943: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) +13943: { +13943: pos_type __ret = pos_type(off_type(-1)); +13943: bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; +13943: bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; +13943: const bool __testboth = __testin && __testout && __way != ios_base::cur; +13943: __testin &= !(__mode & ios_base::out); +13943: __testout &= !(__mode & ios_base::in); +13943: +13943: +13943: +13943: const char_type* __beg = __testin ? this->eback() : this->pbase(); +13943: if ((__beg || !__off) && (__testin || __testout || __testboth)) +13943: { +13943: _M_update_egptr(); +13943: +13943: off_type __newoffi = __off; +13943: off_type __newoffo = __newoffi; +13943: if (__way == ios_base::cur) +13943: { +13943: __newoffi += this->gptr() - __beg; +13943: __newoffo += this->pptr() - __beg; +13943: } +13943: else if (__way == ios_base::end) +13943: __newoffo = __newoffi += this->egptr() - __beg; +13943: +13943: if ((__testin || __testboth) +13943: && __newoffi >= 0 +13943: && this->egptr() - __beg >= __newoffi) +13943: { +13943: this->setg(this->eback(), this->eback() + __newoffi, +13943: this->egptr()); +13943: __ret = pos_type(__newoffi); +13943: } +13943: if ((__testout || __testboth) +13943: && __newoffo >= 0 +13943: && this->egptr() - __beg >= __newoffo) +13943: { +13943: _M_pbump(this->pbase(), this->epptr(), __newoffo); +13943: __ret = pos_type(__newoffo); +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type +13943: basic_stringbuf<_CharT, _Traits, _Alloc>:: +13943: seekpos(pos_type __sp, ios_base::openmode __mode) +13943: { +13943: pos_type __ret = pos_type(off_type(-1)); +13943: const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; +13943: const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; +13943: +13943: const char_type* __beg = __testin ? this->eback() : this->pbase(); +13943: if ((__beg || !off_type(__sp)) && (__testin || __testout)) +13943: { +13943: _M_update_egptr(); +13943: +13943: const off_type __pos(__sp); +13943: const bool __testpos = (0 <= __pos +13943: && __pos <= this->egptr() - __beg); +13943: if (__testpos) +13943: { +13943: if (__testin) +13943: this->setg(this->eback(), this->eback() + __pos, +13943: this->egptr()); +13943: if (__testout) +13943: _M_pbump(this->pbase(), this->epptr(), __pos); +13943: __ret = __sp; +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: void +13943: basic_stringbuf<_CharT, _Traits, _Alloc>:: +13943: _M_sync(char_type* __base, __size_type __i, __size_type __o) +13943: { +13943: const bool __testin = _M_mode & ios_base::in; +13943: const bool __testout = _M_mode & ios_base::out; +13943: char_type* __endg = __base + _M_string.size(); +13943: char_type* __endp = __base + _M_string.capacity(); +13943: +13943: if (__base != _M_string.data()) +13943: { +13943: +13943: __endg += __i; +13943: __i = 0; +13943: __endp = __endg; +13943: } +13943: +13943: if (__testin) +13943: this->setg(__base, __base + __i, __endg); +13943: if (__testout) +13943: { +13943: _M_pbump(__base, __endp, __o); +13943: +13943: +13943: +13943: if (!__testin) +13943: this->setg(__endg, __endg, __endg); +13943: } +13943: } +13943: +13943: template +13943: void +13943: basic_stringbuf<_CharT, _Traits, _Alloc>:: +13943: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) +13943: { +13943: this->setp(__pbeg, __pend); +13943: while (__off > __gnu_cxx::__numeric_traits::__max) +13943: { +13943: this->pbump(__gnu_cxx::__numeric_traits::__max); +13943: __off -= __gnu_cxx::__numeric_traits::__max; +13943: } +13943: this->pbump(__off); +13943: } +13943: +13943: +13943: +13943: +13943: extern template class basic_stringbuf; +13943: extern template class basic_istringstream; +13943: extern template class basic_ostringstream; +13943: extern template class basic_stringstream; +13943: +13943: +13943: extern template class basic_stringbuf; +13943: extern template class basic_istringstream; +13943: extern template class basic_ostringstream; +13943: extern template class basic_stringstream; +13943: +13943: +13943: +13943: +13943: } +13943: # 1239 "/usr/include/c++/14/sstream" 2 3 +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 1 +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cstdarg" 1 3 +13943: # 39 "/usr/include/c++/14/cstdarg" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdarg" 3 +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 2 +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" 1 +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: namespace rocksdb { +13943: +13943: +13943: class Cache; +13943: class FilterPolicy; +13943: class FlushBlockPolicyFactory; +13943: class PersistentCache; +13943: class RandomAccessFile; +13943: struct TableReaderOptions; +13943: struct TableBuilderOptions; +13943: class TableBuilder; +13943: class TableFactory; +13943: class TableReader; +13943: class WritableFileWriter; +13943: struct ConfigOptions; +13943: struct EnvOptions; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum ChecksumType : char { +13943: kNoChecksum = 0x0, +13943: kCRC32c = 0x1, +13943: kxxHash = 0x2, +13943: kxxHash64 = 0x3, +13943: kXXH3 = 0x4, +13943: }; +13943: +13943: +13943: +13943: +13943: enum class PinningTier { +13943: +13943: +13943: +13943: +13943: kFallback, +13943: +13943: +13943: kNone, +13943: +13943: +13943: +13943: +13943: +13943: +13943: kFlushedAndSimilar, +13943: +13943: +13943: kAll, +13943: }; +13943: +13943: +13943: +13943: struct MetadataCacheOptions { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: PinningTier top_level_index_pinning = PinningTier::kFallback; +13943: +13943: +13943: +13943: PinningTier partition_pinning = PinningTier::kFallback; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: PinningTier unpartitioned_pinning = PinningTier::kFallback; +13943: }; +13943: +13943: struct CacheEntryRoleOptions { +13943: enum class Decision { +13943: kEnabled, +13943: kDisabled, +13943: kFallback, +13943: }; +13943: Decision charged = Decision::kFallback; +13943: bool operator==(const CacheEntryRoleOptions& other) const { +13943: return charged == other.charged; +13943: } +13943: }; +13943: +13943: struct CacheUsageOptions { +13943: CacheEntryRoleOptions options; +13943: std::map options_overrides; +13943: }; +13943: # 147 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: struct BlockBasedTableOptions { +13943: static const char* kName() { return "BlockTableOptions"; } +13943: +13943: +13943: +13943: +13943: +13943: std::shared_ptr flush_block_policy_factory; +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: bool cache_index_and_filter_blocks = false; +13943: +13943: +13943: +13943: +13943: +13943: bool cache_index_and_filter_blocks_with_high_priority = true; +13943: # 196 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: bool pin_l0_filter_and_index_blocks_in_cache = false; +13943: # 218 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: bool pin_top_level_index_and_filter = true; +13943: +13943: +13943: +13943: +13943: +13943: MetadataCacheOptions metadata_cache_options; +13943: +13943: +13943: enum IndexType : char { +13943: +13943: +13943: kBinarySearch = 0x00, +13943: +13943: +13943: +13943: kHashSearch = 0x01, +13943: +13943: +13943: +13943: +13943: kTwoLevelIndexSearch = 0x02, +13943: # 252 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: kBinarySearchWithFirstKey = 0x03, +13943: }; +13943: +13943: IndexType index_type = kBinarySearch; +13943: +13943: +13943: enum DataBlockIndexType : char { +13943: kDataBlockBinarySearch = 0, +13943: kDataBlockBinaryAndHash = 1, +13943: }; +13943: +13943: DataBlockIndexType data_block_index_type = kDataBlockBinarySearch; +13943: +13943: +13943: +13943: double data_block_hash_table_util_ratio = 0.75; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ChecksumType checksum = kXXH3; +13943: +13943: +13943: +13943: +13943: +13943: bool no_block_cache = false; +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: std::shared_ptr block_cache = nullptr; +13943: +13943: +13943: +13943: std::shared_ptr persistent_cache = nullptr; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t block_size = 4 * 1024; +13943: +13943: +13943: +13943: +13943: +13943: +13943: int block_size_deviation = 10; +13943: +13943: +13943: +13943: +13943: +13943: int block_restart_interval = 16; +13943: +13943: +13943: int index_block_restart_interval = 1; +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t metadata_block_size = 4096; +13943: # 412 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: CacheUsageOptions cache_usage_options; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool partition_filters = false; +13943: # 437 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: bool decouple_partitioned_filters = false; +13943: # 472 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: bool optimize_filters_for_memory = true; +13943: +13943: +13943: +13943: +13943: +13943: bool use_delta_encoding = true; +13943: +13943: +13943: +13943: +13943: std::shared_ptr filter_policy = nullptr; +13943: +13943: +13943: +13943: bool whole_key_filtering = true; +13943: # 497 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: bool detect_filter_construct_corruption = false; +13943: +13943: +13943: +13943: +13943: bool verify_compression = false; +13943: # 525 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: uint32_t read_amp_bytes_per_bit = 0; +13943: # 563 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: uint32_t format_version = 6; +13943: +13943: +13943: +13943: +13943: bool enable_index_compression = true; +13943: +13943: +13943: bool block_align = false; +13943: # 595 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: enum class IndexShorteningMode : char { +13943: +13943: kNoShortening, +13943: +13943: +13943: kShortenSeparators, +13943: +13943: kShortenSeparatorsAndSuccessor, +13943: }; +13943: +13943: IndexShorteningMode index_shortening = +13943: IndexShorteningMode::kShortenSeparators; +13943: # 627 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: size_t max_auto_readahead_size = 256 * 1024; +13943: # 637 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: enum class PrepopulateBlockCache : char { +13943: +13943: kDisable, +13943: +13943: kFlushOnly, +13943: }; +13943: +13943: PrepopulateBlockCache prepopulate_block_cache = +13943: PrepopulateBlockCache::kDisable; +13943: # 667 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: size_t initial_auto_readahead_size = 8 * 1024; +13943: # 687 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: uint64_t num_file_reads_for_auto_readahead = 2; +13943: }; +13943: +13943: +13943: struct BlockBasedTablePropertyNames { +13943: +13943: static const std::string kIndexType; +13943: +13943: static const std::string kWholeKeyFiltering; +13943: +13943: static const std::string kPrefixFiltering; +13943: +13943: +13943: +13943: +13943: static const std::string kDecoupledPartitionedFilters; +13943: }; +13943: +13943: +13943: TableFactory* NewBlockBasedTableFactory( +13943: const BlockBasedTableOptions& table_options = BlockBasedTableOptions()); +13943: +13943: enum EncodingType : char { +13943: +13943: kPlain, +13943: # 723 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: kPrefix, +13943: }; +13943: +13943: +13943: struct PlainTablePropertyNames { +13943: static const std::string kEncodingType; +13943: static const std::string kBloomVersion; +13943: static const std::string kNumBloomBlocks; +13943: }; +13943: +13943: const uint32_t kPlainTableVariableLength = 0; +13943: +13943: struct PlainTableOptions { +13943: static const char* kName() { return "PlainTableOptions"; } +13943: +13943: +13943: +13943: +13943: uint32_t user_key_len = kPlainTableVariableLength; +13943: +13943: +13943: +13943: int bloom_bits_per_key = 10; +13943: +13943: +13943: +13943: +13943: +13943: double hash_table_ratio = 0.75; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t index_sparseness = 16; +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t huge_page_tlb_size = 0; +13943: # 776 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: EncodingType encoding_type = kPlain; +13943: +13943: +13943: +13943: bool full_scan_mode = false; +13943: +13943: +13943: +13943: +13943: bool store_index_in_file = false; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: TableFactory* NewPlainTableFactory( +13943: const PlainTableOptions& options = PlainTableOptions()); +13943: +13943: struct CuckooTablePropertyNames { +13943: +13943: static const std::string kEmptyKey; +13943: +13943: static const std::string kValueLength; +13943: +13943: static const std::string kNumHashFunc; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kCuckooBlockSize; +13943: +13943: +13943: +13943: +13943: +13943: static const std::string kHashTableSize; +13943: +13943: +13943: static const std::string kIsLastLevel; +13943: +13943: static const std::string kIdentityAsFirstHash; +13943: +13943: static const std::string kUseModuleHash; +13943: +13943: static const std::string kUserKeyLength; +13943: }; +13943: +13943: struct CuckooTableOptions { +13943: static const char* kName() { return "CuckooTableOptions"; } +13943: +13943: +13943: +13943: double hash_table_ratio = 0.9; +13943: +13943: +13943: +13943: +13943: +13943: uint32_t max_search_depth = 100; +13943: +13943: +13943: +13943: +13943: +13943: uint32_t cuckoo_block_size = 5; +13943: +13943: +13943: +13943: +13943: bool identity_as_first_hash = false; +13943: +13943: +13943: +13943: +13943: +13943: bool use_module_hash = true; +13943: }; +13943: +13943: +13943: TableFactory* NewCuckooTableFactory( +13943: const CuckooTableOptions& table_options = CuckooTableOptions()); +13943: +13943: class RandomAccessFileReader; +13943: +13943: +13943: class TableFactory : public Customizable { +13943: public: +13943: ~TableFactory() override {} +13943: +13943: static const char* kBlockCacheOpts() { return "BlockCache"; } +13943: static const char* kBlockBasedTableName() { return "BlockBasedTable"; } +13943: static const char* kPlainTableName() { return "PlainTable"; } +13943: static const char* kCuckooTableName() { return "CuckooTable"; } +13943: +13943: +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& id, +13943: std::shared_ptr* factory); +13943: +13943: static const char* Type() { return "TableFactory"; } +13943: # 900 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: virtual Status NewTableReader( +13943: const TableReaderOptions& table_reader_options, +13943: std::unique_ptr&& file, uint64_t file_size, +13943: std::unique_ptr* table_reader, +13943: bool prefetch_index_and_filter_in_cache = true) const { +13943: ReadOptions ro; +13943: return NewTableReader(ro, table_reader_options, std::move(file), file_size, +13943: table_reader, prefetch_index_and_filter_in_cache); +13943: } +13943: +13943: +13943: +13943: virtual Status NewTableReader( +13943: const ReadOptions& ro, const TableReaderOptions& table_reader_options, +13943: std::unique_ptr&& file, uint64_t file_size, +13943: std::unique_ptr* table_reader, +13943: bool prefetch_index_and_filter_in_cache) const = 0; +13943: # 936 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: virtual TableBuilder* NewTableBuilder( +13943: const TableBuilderOptions& table_builder_options, +13943: WritableFileWriter* file) const = 0; +13943: +13943: +13943: +13943: +13943: virtual std::unique_ptr Clone() const = 0; +13943: +13943: +13943: virtual bool IsDeleteRangeSupported() const { return false; } +13943: }; +13943: # 958 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +13943: TableFactory* NewAdaptiveTableFactory( +13943: std::shared_ptr table_factory_to_write = nullptr, +13943: std::shared_ptr block_based_table_factory = nullptr, +13943: std::shared_ptr plain_table_factory = nullptr, +13943: std::shared_ptr cuckoo_table_factory = nullptr); +13943: +13943: } +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class FileLock; +13943: class FSDirectory; +13943: class FSRandomAccessFile; +13943: class FSRandomRWFile; +13943: class FSSequentialFile; +13943: class FSWritableFile; +13943: class Logger; +13943: class Slice; +13943: struct ImmutableDBOptions; +13943: struct MutableDBOptions; +13943: class RateLimiter; +13943: struct ConfigOptions; +13943: +13943: using AccessPattern = RandomAccessFile::AccessPattern; +13943: using FileAttributes = Env::FileAttributes; +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum class IOPriority : uint8_t { +13943: kIOLow, +13943: kIOHigh, +13943: kIOTotal, +13943: }; +13943: +13943: +13943: +13943: +13943: enum class IOType : uint8_t { +13943: kData, +13943: kFilter, +13943: kIndex, +13943: kMetadata, +13943: kWAL, +13943: kManifest, +13943: kLog, +13943: kUnknown, +13943: kInvalid, +13943: }; +13943: +13943: +13943: +13943: enum FSSupportedOps { +13943: kAsyncIO, +13943: kFSBuffer, +13943: +13943: kVerifyAndReconstructRead, +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: struct IOOptions { +13943: +13943: std::chrono::microseconds timeout; +13943: +13943: +13943: +13943: IOPriority prio; +13943: +13943: +13943: +13943: +13943: +13943: Env::IOPriority rate_limiter_priority; +13943: +13943: +13943: IOType type; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::unordered_map property_bag; +13943: +13943: +13943: +13943: bool force_dir_fsync; +13943: +13943: +13943: +13943: bool do_not_recurse; +13943: # 140 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: bool verify_and_reconstruct_read; +13943: +13943: +13943: Env::IOActivity io_activity = Env::IOActivity::kUnknown; +13943: +13943: IOOptions() : IOOptions(false) {} +13943: +13943: explicit IOOptions(bool force_dir_fsync_) +13943: : timeout(std::chrono::microseconds::zero()), +13943: prio(IOPriority::kIOLow), +13943: rate_limiter_priority(Env::IO_TOTAL), +13943: type(IOType::kUnknown), +13943: force_dir_fsync(force_dir_fsync_), +13943: do_not_recurse(false), +13943: verify_and_reconstruct_read(false) {} +13943: }; +13943: +13943: struct DirFsyncOptions { +13943: enum FsyncReason : uint8_t { +13943: kNewFileSynced, +13943: kFileRenamed, +13943: kDirRenamed, +13943: kFileDeleted, +13943: kDefault, +13943: } reason; +13943: +13943: std::string renamed_new_name; +13943: +13943: +13943: DirFsyncOptions(); +13943: +13943: explicit DirFsyncOptions(std::string file_renamed_new_name); +13943: +13943: explicit DirFsyncOptions(FsyncReason fsync_reason); +13943: }; +13943: +13943: +13943: +13943: +13943: struct FileOptions : EnvOptions { +13943: +13943: +13943: IOOptions io_options; +13943: +13943: +13943: +13943: +13943: +13943: +13943: Temperature temperature = Temperature::kUnknown; +13943: +13943: +13943: +13943: ChecksumType handoff_checksum_type; +13943: +13943: FileOptions() : EnvOptions(), handoff_checksum_type(ChecksumType::kCRC32c) {} +13943: +13943: FileOptions(const DBOptions& opts) +13943: : EnvOptions(opts), +13943: temperature(opts.metadata_write_temperature), +13943: handoff_checksum_type(ChecksumType::kCRC32c) {} +13943: +13943: FileOptions(const EnvOptions& opts) +13943: : EnvOptions(opts), handoff_checksum_type(ChecksumType::kCRC32c) {} +13943: +13943: FileOptions(const FileOptions& opts) +13943: : EnvOptions(opts), +13943: io_options(opts.io_options), +13943: temperature(opts.temperature), +13943: handoff_checksum_type(opts.handoff_checksum_type) {} +13943: +13943: FileOptions& operator=(const FileOptions&) = default; +13943: }; +13943: +13943: +13943: +13943: struct IODebugContext { +13943: +13943: std::string file_path; +13943: +13943: +13943: std::map counters; +13943: +13943: +13943: std::string msg; +13943: +13943: +13943: std::string request_id; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum TraceData : char { +13943: +13943: +13943: +13943: kRequestID = 0, +13943: }; +13943: uint64_t trace_data = 0; +13943: +13943: IODebugContext() {} +13943: +13943: void AddCounter(std::string& name, uint64_t value) { +13943: counters.emplace(name, value); +13943: } +13943: +13943: +13943: +13943: void SetRequestId(const std::string& _request_id) { +13943: request_id = _request_id; +13943: trace_data |= (1 << TraceData::kRequestID); +13943: } +13943: +13943: std::string ToString() { +13943: std::ostringstream ss; +13943: ss << file_path << ", "; +13943: for (auto counter : counters) { +13943: ss << counter.first << " = " << counter.second << ","; +13943: } +13943: ss << msg; +13943: return ss.str(); +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: using IOHandleDeleter = std::function; +13943: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: class FileSystem : public Customizable { +13943: public: +13943: FileSystem(); +13943: +13943: +13943: FileSystem(const FileSystem&) = delete; +13943: +13943: virtual ~FileSystem(); +13943: +13943: static const char* Type() { return "FileSystem"; } +13943: static const char* kDefaultName() { return "DefaultFileSystem"; } +13943: # 313 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: static Status CreateFromString(const ConfigOptions& options, +13943: const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: +13943: +13943: static std::shared_ptr Default(); +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual Status RegisterDbPaths(const std::vector& ) { +13943: return Status::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status UnregisterDbPaths(const std::vector& ) { +13943: return Status::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus NewSequentialFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) = 0; +13943: # 368 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus NewRandomAccessFile( +13943: const std::string& fname, const FileOptions& file_opts, +13943: std::unique_ptr* result, IODebugContext* dbg) = 0; +13943: +13943: +13943: enum WriteLifeTimeHint { +13943: kWLTHNotSet = 0, +13943: kWLTHNone, +13943: kWLTHShort, +13943: kWLTHMedium, +13943: kWLTHLong, +13943: kWLTHExtreme, +13943: }; +13943: # 389 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus NewWritableFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) = 0; +13943: # 402 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus ReopenWritableFile( +13943: const std::string& , const FileOptions& , +13943: std::unique_ptr* , IODebugContext* ) { +13943: return IOStatus::NotSupported("ReopenWritableFile"); +13943: } +13943: +13943: +13943: virtual IOStatus ReuseWritableFile(const std::string& fname, +13943: const std::string& old_fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus NewRandomRWFile(const std::string& , +13943: const FileOptions& , +13943: std::unique_ptr* , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported( +13943: "RandomRWFile is not implemented in this FileSystem"); +13943: } +13943: +13943: +13943: +13943: +13943: virtual IOStatus NewMemoryMappedFileBuffer( +13943: const std::string& , +13943: std::unique_ptr* ) { +13943: return IOStatus::NotSupported( +13943: "MemoryMappedFileBuffer is not implemented in this FileSystem"); +13943: } +13943: # 445 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus NewDirectory(const std::string& name, +13943: const IOOptions& io_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus FileExists(const std::string& fname, +13943: const IOOptions& options, +13943: IODebugContext* dbg) = 0; +13943: # 466 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus GetChildren(const std::string& dir, const IOOptions& options, +13943: std::vector* result, +13943: IODebugContext* dbg) = 0; +13943: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus GetChildrenFileAttributes( +13943: const std::string& dir, const IOOptions& options, +13943: std::vector* result, IODebugContext* dbg) { +13943: +13943: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +13943: (static_cast ( +13943: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: result != nullptr +13943: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: "result != nullptr" +13943: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: ; +13943: std::vector child_fnames; +13943: IOStatus s = GetChildren(dir, options, &child_fnames, dbg); +13943: if (!s.ok()) { +13943: return s; +13943: } +13943: result->resize(child_fnames.size()); +13943: size_t result_size = 0; +13943: for (size_t i = 0; i < child_fnames.size(); ++i) { +13943: const std::string path = dir + "/" + child_fnames[i]; +13943: if (!(s = GetFileSize(path, options, &(*result)[result_size].size_bytes, +13943: dbg)) +13943: .ok()) { +13943: if (FileExists(path, options, dbg).IsNotFound()) { +13943: +13943: continue; +13943: } +13943: return s; +13943: } +13943: (*result)[result_size].name = std::move(child_fnames[i]); +13943: result_size++; +13943: } +13943: result->resize(result_size); +13943: return IOStatus::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus DeleteFile(const std::string& fname, +13943: const IOOptions& options, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: virtual IOStatus Truncate(const std::string& , size_t , +13943: const IOOptions& , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported( +13943: "Truncate is not supported for this FileSystem"); +13943: } +13943: +13943: +13943: virtual IOStatus CreateDir(const std::string& dirname, +13943: const IOOptions& options, IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: virtual IOStatus CreateDirIfMissing(const std::string& dirname, +13943: const IOOptions& options, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: virtual IOStatus DeleteDir(const std::string& dirname, +13943: const IOOptions& options, IODebugContext* dbg) = 0; +13943: +13943: +13943: virtual IOStatus GetFileSize(const std::string& fname, +13943: const IOOptions& options, uint64_t* file_size, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: virtual IOStatus GetFileModificationTime(const std::string& fname, +13943: const IOOptions& options, +13943: uint64_t* file_mtime, +13943: IODebugContext* dbg) = 0; +13943: +13943: virtual IOStatus RenameFile(const std::string& src, const std::string& target, +13943: const IOOptions& options, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: virtual IOStatus LinkFile(const std::string& , +13943: const std::string& , +13943: const IOOptions& , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported( +13943: "LinkFile is not supported for this FileSystem"); +13943: } +13943: +13943: virtual IOStatus NumFileLinks(const std::string& , +13943: const IOOptions& , +13943: uint64_t* , IODebugContext* ) { +13943: return IOStatus::NotSupported( +13943: "Getting number of file links is not supported for this FileSystem"); +13943: } +13943: +13943: virtual IOStatus AreFilesSame(const std::string& , +13943: const std::string& , +13943: const IOOptions& , bool* , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported( +13943: "AreFilesSame is not supported for this FileSystem"); +13943: } +13943: # 593 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus LockFile(const std::string& fname, const IOOptions& options, +13943: FileLock** lock, IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: +13943: virtual IOStatus UnlockFile(FileLock* lock, const IOOptions& options, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus GetTestDirectory(const IOOptions& options, std::string* path, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: +13943: virtual IOStatus NewLogger(const std::string& fname, const IOOptions& io_opts, +13943: std::shared_ptr* result, +13943: IODebugContext* dbg); +13943: +13943: +13943: virtual IOStatus GetAbsolutePath(const std::string& db_path, +13943: const IOOptions& options, +13943: std::string* output_path, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: virtual void SanitizeFileOptions(FileOptions* ) const {} +13943: +13943: +13943: +13943: virtual FileOptions OptimizeForLogRead(const FileOptions& file_options) const; +13943: +13943: +13943: +13943: +13943: virtual FileOptions OptimizeForManifestRead( +13943: const FileOptions& file_options) const; +13943: +13943: +13943: +13943: +13943: virtual FileOptions OptimizeForLogWrite(const FileOptions& file_options, +13943: const DBOptions& db_options) const; +13943: +13943: +13943: +13943: +13943: +13943: virtual FileOptions OptimizeForManifestWrite( +13943: const FileOptions& file_options) const; +13943: +13943: +13943: +13943: +13943: virtual FileOptions OptimizeForCompactionTableWrite( +13943: const FileOptions& file_options, +13943: const ImmutableDBOptions& immutable_ops) const; +13943: +13943: +13943: +13943: +13943: virtual FileOptions OptimizeForCompactionTableRead( +13943: const FileOptions& file_options, +13943: const ImmutableDBOptions& db_options) const; +13943: +13943: +13943: +13943: +13943: virtual FileOptions OptimizeForBlobFileRead( +13943: const FileOptions& file_options, +13943: const ImmutableDBOptions& db_options) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus GetFreeSpace(const std::string& , +13943: const IOOptions& , +13943: uint64_t* , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported("GetFreeSpace"); +13943: } +13943: +13943: virtual IOStatus IsDirectory(const std::string& , +13943: const IOOptions& options, bool* is_dir, +13943: IODebugContext* ) = 0; +13943: # 694 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus Poll(std::vector& , +13943: size_t ) { +13943: return IOStatus::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus AbortIO(std::vector& ) { +13943: return IOStatus::OK(); +13943: } +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual void DiscardCacheForDirectory(const std::string& ) {} +13943: # 727 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual void SupportedOps(int64_t& supported_ops) { +13943: supported_ops = 0; +13943: supported_ops |= (1 << FSSupportedOps::kAsyncIO); +13943: } +13943: +13943: +13943: +13943: private: +13943: void operator=(const FileSystem&); +13943: }; +13943: +13943: +13943: class FSSequentialFile { +13943: public: +13943: FSSequentialFile() {} +13943: +13943: virtual ~FSSequentialFile() {} +13943: # 757 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus Read(size_t n, const IOOptions& options, Slice* result, +13943: char* scratch, IODebugContext* dbg) = 0; +13943: # 767 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus Skip(uint64_t n) = 0; +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: +13943: +13943: +13943: +13943: virtual IOStatus InvalidateCache(size_t , size_t ) { +13943: return IOStatus::NotSupported("InvalidateCache not supported."); +13943: } +13943: +13943: +13943: +13943: virtual IOStatus PositionedRead(uint64_t , size_t , +13943: const IOOptions& , +13943: Slice* , char* , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported("PositionedRead"); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Temperature GetTemperature() const { return Temperature::kUnknown; } +13943: +13943: +13943: +13943: }; +13943: +13943: using FSAllocationPtr = std::unique_ptr>; +13943: +13943: +13943: struct FSReadRequest { +13943: +13943: uint64_t offset; +13943: +13943: +13943: +13943: size_t len; +13943: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: char* scratch; +13943: # 836 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: Slice result; +13943: +13943: +13943: +13943: IOStatus status; +13943: # 865 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: FSAllocationPtr fs_scratch; +13943: }; +13943: +13943: +13943: class FSRandomAccessFile { +13943: public: +13943: FSRandomAccessFile() {} +13943: +13943: virtual ~FSRandomAccessFile() {} +13943: # 889 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const = 0; +13943: +13943: +13943: +13943: +13943: virtual IOStatus Prefetch(uint64_t , size_t , +13943: const IOOptions& , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported("Prefetch"); +13943: } +13943: # 910 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +13943: const IOOptions& options, IODebugContext* dbg) { +13943: +13943: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +13943: (static_cast ( +13943: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: reqs != nullptr +13943: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: "reqs != nullptr" +13943: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: ; +13943: for (size_t i = 0; i < num_reqs; ++i) { +13943: FSReadRequest& req = reqs[i]; +13943: req.status = +13943: Read(req.offset, req.len, options, &req.result, req.scratch, dbg); +13943: } +13943: return IOStatus::OK(); +13943: } +13943: # 936 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual size_t GetUniqueId(char* , size_t ) const { +13943: return 0; +13943: +13943: } +13943: +13943: enum AccessPattern { kNormal, kRandom, kSequential, kWillNeed, kWontNeed }; +13943: +13943: virtual void Hint(AccessPattern ) {} +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: +13943: +13943: +13943: +13943: virtual IOStatus InvalidateCache(size_t , size_t ) { +13943: return IOStatus::NotSupported("InvalidateCache not supported."); +13943: } +13943: # 992 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +13943: std::function cb, +13943: void* cb_arg, void** , +13943: IOHandleDeleter* , IODebugContext* dbg) { +13943: req.status = +13943: Read(req.offset, req.len, opts, &(req.result), req.scratch, dbg); +13943: cb(req, cb_arg); +13943: return IOStatus::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Temperature GetTemperature() const { return Temperature::kUnknown; } +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: struct DataVerificationInfo { +13943: +13943: Slice checksum; +13943: }; +13943: +13943: +13943: +13943: +13943: class FSWritableFile { +13943: public: +13943: FSWritableFile() +13943: : last_preallocated_block_(0), +13943: preallocation_block_size_(0), +13943: io_priority_(Env::IO_TOTAL), +13943: write_hint_(Env::WLTH_NOT_SET), +13943: strict_bytes_per_sync_(false) {} +13943: +13943: explicit FSWritableFile(const FileOptions& options) +13943: : last_preallocated_block_(0), +13943: preallocation_block_size_(0), +13943: io_priority_(Env::IO_TOTAL), +13943: write_hint_(Env::WLTH_NOT_SET), +13943: strict_bytes_per_sync_(options.strict_bytes_per_sync) {} +13943: +13943: +13943: +13943: +13943: virtual ~FSWritableFile() {} +13943: +13943: +13943: +13943: +13943: virtual IOStatus Append(const Slice& data, const IOOptions& options, +13943: IODebugContext* dbg) = 0; +13943: # 1058 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus Append(const Slice& data, const IOOptions& options, +13943: const DataVerificationInfo& , +13943: IODebugContext* dbg) { +13943: return Append(data, options, dbg); +13943: } +13943: # 1084 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus PositionedAppend(const Slice& , +13943: uint64_t , +13943: const IOOptions& , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported("PositionedAppend"); +13943: } +13943: # 1099 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus PositionedAppend( +13943: const Slice& , uint64_t , +13943: const IOOptions& , +13943: const DataVerificationInfo& , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported("PositionedAppend"); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus Truncate(uint64_t , const IOOptions& , +13943: IODebugContext* ) { +13943: return IOStatus::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus Close(const IOOptions& , +13943: IODebugContext* ) = 0; +13943: +13943: virtual IOStatus Flush(const IOOptions& options, IODebugContext* dbg) = 0; +13943: virtual IOStatus Sync(const IOOptions& options, +13943: IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) { +13943: return Sync(options, dbg); +13943: } +13943: +13943: +13943: +13943: virtual bool IsSyncThreadSafe() const { return false; } +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: +13943: virtual void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) { +13943: write_hint_ = hint; +13943: } +13943: # 1165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual void SetIOPriority(Env::IOPriority pri) { io_priority_ = pri; } +13943: +13943: virtual Env::IOPriority GetIOPriority() { return io_priority_; } +13943: +13943: virtual Env::WriteLifeTimeHint GetWriteLifeTimeHint() { return write_hint_; } +13943: +13943: +13943: +13943: virtual uint64_t GetFileSize(const IOOptions& , +13943: IODebugContext* ) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void SetPreallocationBlockSize(size_t size) { +13943: preallocation_block_size_ = size; +13943: } +13943: +13943: virtual void GetPreallocationStatus(size_t* block_size, +13943: size_t* last_allocated_block) { +13943: *last_allocated_block = last_preallocated_block_; +13943: *block_size = preallocation_block_size_; +13943: } +13943: +13943: +13943: virtual size_t GetUniqueId(char* , size_t ) const { +13943: return 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus InvalidateCache(size_t , size_t ) { +13943: return IOStatus::NotSupported("InvalidateCache not supported."); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus RangeSync(uint64_t , uint64_t , +13943: const IOOptions& options, IODebugContext* dbg) { +13943: if (strict_bytes_per_sync_) { +13943: return Sync(options, dbg); +13943: } +13943: return IOStatus::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void PrepareWrite(size_t offset, size_t len, const IOOptions& options, +13943: IODebugContext* dbg) { +13943: if (preallocation_block_size_ == 0) { +13943: return; +13943: } +13943: +13943: +13943: +13943: const auto block_size = preallocation_block_size_; +13943: size_t new_last_preallocated_block = +13943: (offset + len + block_size - 1) / block_size; +13943: if (new_last_preallocated_block > last_preallocated_block_) { +13943: size_t num_spanned_blocks = +13943: new_last_preallocated_block - last_preallocated_block_; +13943: Allocate(block_size * last_preallocated_block_, +13943: block_size * num_spanned_blocks, options, dbg) +13943: .PermitUncheckedError(); +13943: last_preallocated_block_ = new_last_preallocated_block; +13943: } +13943: } +13943: +13943: +13943: virtual IOStatus Allocate(uint64_t , uint64_t , +13943: const IOOptions& , +13943: IODebugContext* ) { +13943: return IOStatus::OK(); +13943: } +13943: +13943: +13943: +13943: +13943: protected: +13943: size_t preallocation_block_size() { return preallocation_block_size_; } +13943: +13943: private: +13943: size_t last_preallocated_block_; +13943: size_t preallocation_block_size_; +13943: +13943: FSWritableFile(const FSWritableFile&); +13943: void operator=(const FSWritableFile&); +13943: +13943: protected: +13943: Env::IOPriority io_priority_; +13943: Env::WriteLifeTimeHint write_hint_; +13943: const bool strict_bytes_per_sync_; +13943: }; +13943: +13943: +13943: class FSRandomRWFile { +13943: public: +13943: FSRandomRWFile() {} +13943: +13943: +13943: +13943: +13943: virtual ~FSRandomRWFile() {} +13943: +13943: +13943: +13943: virtual bool use_direct_io() const { return false; } +13943: +13943: +13943: +13943: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +13943: +13943: +13943: +13943: virtual IOStatus Write(uint64_t offset, const Slice& data, +13943: const IOOptions& options, IODebugContext* dbg) = 0; +13943: # 1302 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: virtual IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const = 0; +13943: +13943: virtual IOStatus Flush(const IOOptions& options, IODebugContext* dbg) = 0; +13943: +13943: virtual IOStatus Sync(const IOOptions& options, IODebugContext* dbg) = 0; +13943: +13943: virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) { +13943: return Sync(options, dbg); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IOStatus Close(const IOOptions& options, IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Temperature GetTemperature() const { return Temperature::kUnknown; } +13943: +13943: +13943: +13943: +13943: +13943: FSRandomRWFile(const RandomRWFile&) = delete; +13943: FSRandomRWFile& operator=(const RandomRWFile&) = delete; +13943: }; +13943: +13943: +13943: +13943: class FSMemoryMappedFileBuffer { +13943: public: +13943: FSMemoryMappedFileBuffer(void* _base, size_t _length) +13943: : base_(_base), length_(_length) {} +13943: +13943: virtual ~FSMemoryMappedFileBuffer() = 0; +13943: +13943: +13943: +13943: FSMemoryMappedFileBuffer(const FSMemoryMappedFileBuffer&) = delete; +13943: FSMemoryMappedFileBuffer& operator=(const FSMemoryMappedFileBuffer&) = delete; +13943: +13943: void* GetBase() const { return base_; } +13943: size_t GetLen() const { return length_; } +13943: +13943: protected: +13943: void* base_; +13943: const size_t length_; +13943: }; +13943: +13943: +13943: +13943: class FSDirectory { +13943: public: +13943: +13943: +13943: +13943: virtual ~FSDirectory() {} +13943: +13943: virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) = 0; +13943: +13943: +13943: +13943: +13943: virtual IOStatus FsyncWithDirOptions( +13943: const IOOptions& options, IODebugContext* dbg, +13943: const DirFsyncOptions& ) { +13943: return Fsync(options, dbg); +13943: } +13943: +13943: +13943: +13943: +13943: virtual IOStatus Close(const IOOptions& , +13943: IODebugContext* ) { +13943: return IOStatus::NotSupported("Close"); +13943: } +13943: +13943: virtual size_t GetUniqueId(char* , size_t ) const { +13943: return 0; +13943: } +13943: +13943: +13943: +13943: }; +13943: # 1424 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +13943: class FileSystemWrapper : public FileSystem { +13943: public: +13943: +13943: explicit FileSystemWrapper(const std::shared_ptr& t); +13943: ~FileSystemWrapper() override {} +13943: +13943: +13943: FileSystem* target() const { return target_.get(); } +13943: +13943: +13943: IOStatus NewSequentialFile(const std::string& f, const FileOptions& file_opts, +13943: std::unique_ptr* r, +13943: IODebugContext* dbg) override { +13943: return target_->NewSequentialFile(f, file_opts, r, dbg); +13943: } +13943: IOStatus NewRandomAccessFile(const std::string& f, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* r, +13943: IODebugContext* dbg) override { +13943: return target_->NewRandomAccessFile(f, file_opts, r, dbg); +13943: } +13943: IOStatus NewWritableFile(const std::string& f, const FileOptions& file_opts, +13943: std::unique_ptr* r, +13943: IODebugContext* dbg) override { +13943: return target_->NewWritableFile(f, file_opts, r, dbg); +13943: } +13943: IOStatus ReopenWritableFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override { +13943: return target_->ReopenWritableFile(fname, file_opts, result, dbg); +13943: } +13943: IOStatus ReuseWritableFile(const std::string& fname, +13943: const std::string& old_fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* r, +13943: IODebugContext* dbg) override { +13943: return target_->ReuseWritableFile(fname, old_fname, file_opts, r, dbg); +13943: } +13943: IOStatus NewRandomRWFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override { +13943: return target_->NewRandomRWFile(fname, file_opts, result, dbg); +13943: } +13943: IOStatus NewMemoryMappedFileBuffer( +13943: const std::string& fname, +13943: std::unique_ptr* result) override { +13943: return target_->NewMemoryMappedFileBuffer(fname, result); +13943: } +13943: IOStatus NewDirectory(const std::string& name, const IOOptions& io_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override { +13943: return target_->NewDirectory(name, io_opts, result, dbg); +13943: } +13943: IOStatus FileExists(const std::string& f, const IOOptions& io_opts, +13943: IODebugContext* dbg) override { +13943: return target_->FileExists(f, io_opts, dbg); +13943: } +13943: IOStatus GetChildren(const std::string& dir, const IOOptions& io_opts, +13943: std::vector* r, +13943: IODebugContext* dbg) override { +13943: return target_->GetChildren(dir, io_opts, r, dbg); +13943: } +13943: IOStatus GetChildrenFileAttributes(const std::string& dir, +13943: const IOOptions& options, +13943: std::vector* result, +13943: IODebugContext* dbg) override { +13943: return target_->GetChildrenFileAttributes(dir, options, result, dbg); +13943: } +13943: IOStatus DeleteFile(const std::string& f, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->DeleteFile(f, options, dbg); +13943: } +13943: IOStatus Truncate(const std::string& fname, size_t size, +13943: const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Truncate(fname, size, options, dbg); +13943: } +13943: IOStatus CreateDir(const std::string& d, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->CreateDir(d, options, dbg); +13943: } +13943: IOStatus CreateDirIfMissing(const std::string& d, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->CreateDirIfMissing(d, options, dbg); +13943: } +13943: IOStatus DeleteDir(const std::string& d, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->DeleteDir(d, options, dbg); +13943: } +13943: IOStatus GetFileSize(const std::string& f, const IOOptions& options, +13943: uint64_t* s, IODebugContext* dbg) override { +13943: return target_->GetFileSize(f, options, s, dbg); +13943: } +13943: +13943: IOStatus GetFileModificationTime(const std::string& fname, +13943: const IOOptions& options, +13943: uint64_t* file_mtime, +13943: IODebugContext* dbg) override { +13943: return target_->GetFileModificationTime(fname, options, file_mtime, dbg); +13943: } +13943: +13943: IOStatus GetAbsolutePath(const std::string& db_path, const IOOptions& options, +13943: std::string* output_path, +13943: IODebugContext* dbg) override { +13943: return target_->GetAbsolutePath(db_path, options, output_path, dbg); +13943: } +13943: +13943: IOStatus RenameFile(const std::string& s, const std::string& t, +13943: const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->RenameFile(s, t, options, dbg); +13943: } +13943: +13943: IOStatus LinkFile(const std::string& s, const std::string& t, +13943: const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->LinkFile(s, t, options, dbg); +13943: } +13943: +13943: IOStatus NumFileLinks(const std::string& fname, const IOOptions& options, +13943: uint64_t* count, IODebugContext* dbg) override { +13943: return target_->NumFileLinks(fname, options, count, dbg); +13943: } +13943: +13943: IOStatus AreFilesSame(const std::string& first, const std::string& second, +13943: const IOOptions& options, bool* res, +13943: IODebugContext* dbg) override { +13943: return target_->AreFilesSame(first, second, options, res, dbg); +13943: } +13943: +13943: IOStatus LockFile(const std::string& f, const IOOptions& options, +13943: FileLock** l, IODebugContext* dbg) override { +13943: return target_->LockFile(f, options, l, dbg); +13943: } +13943: +13943: IOStatus UnlockFile(FileLock* l, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->UnlockFile(l, options, dbg); +13943: } +13943: +13943: IOStatus GetTestDirectory(const IOOptions& options, std::string* path, +13943: IODebugContext* dbg) override { +13943: return target_->GetTestDirectory(options, path, dbg); +13943: } +13943: IOStatus NewLogger(const std::string& fname, const IOOptions& options, +13943: std::shared_ptr* result, +13943: IODebugContext* dbg) override { +13943: return target_->NewLogger(fname, options, result, dbg); +13943: } +13943: +13943: void SanitizeFileOptions(FileOptions* opts) const override { +13943: target_->SanitizeFileOptions(opts); +13943: } +13943: +13943: FileOptions OptimizeForLogRead( +13943: const FileOptions& file_options) const override { +13943: return target_->OptimizeForLogRead(file_options); +13943: } +13943: FileOptions OptimizeForManifestRead( +13943: const FileOptions& file_options) const override { +13943: return target_->OptimizeForManifestRead(file_options); +13943: } +13943: FileOptions OptimizeForLogWrite(const FileOptions& file_options, +13943: const DBOptions& db_options) const override { +13943: return target_->OptimizeForLogWrite(file_options, db_options); +13943: } +13943: FileOptions OptimizeForManifestWrite( +13943: const FileOptions& file_options) const override { +13943: return target_->OptimizeForManifestWrite(file_options); +13943: } +13943: FileOptions OptimizeForCompactionTableWrite( +13943: const FileOptions& file_options, +13943: const ImmutableDBOptions& immutable_ops) const override { +13943: return target_->OptimizeForCompactionTableWrite(file_options, +13943: immutable_ops); +13943: } +13943: FileOptions OptimizeForCompactionTableRead( +13943: const FileOptions& file_options, +13943: const ImmutableDBOptions& db_options) const override { +13943: return target_->OptimizeForCompactionTableRead(file_options, db_options); +13943: } +13943: FileOptions OptimizeForBlobFileRead( +13943: const FileOptions& file_options, +13943: const ImmutableDBOptions& db_options) const override { +13943: return target_->OptimizeForBlobFileRead(file_options, db_options); +13943: } +13943: IOStatus GetFreeSpace(const std::string& path, const IOOptions& options, +13943: uint64_t* diskfree, IODebugContext* dbg) override { +13943: return target_->GetFreeSpace(path, options, diskfree, dbg); +13943: } +13943: IOStatus IsDirectory(const std::string& path, const IOOptions& options, +13943: bool* is_dir, IODebugContext* dbg) override { +13943: return target_->IsDirectory(path, options, is_dir, dbg); +13943: } +13943: +13943: const Customizable* Inner() const override { return target_.get(); } +13943: Status PrepareOptions(const ConfigOptions& options) override; +13943: std::string SerializeOptions(const ConfigOptions& config_options, +13943: const std::string& header) const override; +13943: +13943: IOStatus Poll(std::vector& io_handles, +13943: size_t min_completions) override { +13943: return target_->Poll(io_handles, min_completions); +13943: } +13943: +13943: IOStatus AbortIO(std::vector& io_handles) override { +13943: return target_->AbortIO(io_handles); +13943: } +13943: +13943: void DiscardCacheForDirectory(const std::string& path) override { +13943: target_->DiscardCacheForDirectory(path); +13943: } +13943: +13943: void SupportedOps(int64_t& supported_ops) override { +13943: return target_->SupportedOps(supported_ops); +13943: } +13943: +13943: protected: +13943: std::shared_ptr target_; +13943: }; +13943: +13943: class FSSequentialFileWrapper : public FSSequentialFile { +13943: public: +13943: +13943: +13943: explicit FSSequentialFileWrapper(FSSequentialFile* t) : target_(t) {} +13943: +13943: FSSequentialFile* target() const { return target_; } +13943: +13943: IOStatus Read(size_t n, const IOOptions& options, Slice* result, +13943: char* scratch, IODebugContext* dbg) override { +13943: return target_->Read(n, options, result, scratch, dbg); +13943: } +13943: IOStatus Skip(uint64_t n) override { return target_->Skip(n); } +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: IOStatus InvalidateCache(size_t offset, size_t length) override { +13943: return target_->InvalidateCache(offset, length); +13943: } +13943: IOStatus PositionedRead(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) override { +13943: return target_->PositionedRead(offset, n, options, result, scratch, dbg); +13943: } +13943: Temperature GetTemperature() const override { +13943: return target_->GetTemperature(); +13943: } +13943: +13943: private: +13943: FSSequentialFile* target_; +13943: }; +13943: +13943: class FSSequentialFileOwnerWrapper : public FSSequentialFileWrapper { +13943: public: +13943: +13943: +13943: explicit FSSequentialFileOwnerWrapper(std::unique_ptr&& t) +13943: : FSSequentialFileWrapper(t.get()), guard_(std::move(t)) {} +13943: +13943: private: +13943: std::unique_ptr guard_; +13943: }; +13943: +13943: class FSRandomAccessFileWrapper : public FSRandomAccessFile { +13943: public: +13943: +13943: +13943: explicit FSRandomAccessFileWrapper(FSRandomAccessFile* t) : target_(t) {} +13943: +13943: FSRandomAccessFile* target() const { return target_; } +13943: +13943: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const override { +13943: return target_->Read(offset, n, options, result, scratch, dbg); +13943: } +13943: IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +13943: const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->MultiRead(reqs, num_reqs, options, dbg); +13943: } +13943: IOStatus Prefetch(uint64_t offset, size_t n, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->Prefetch(offset, n, options, dbg); +13943: } +13943: size_t GetUniqueId(char* id, size_t max_size) const override { +13943: return target_->GetUniqueId(id, max_size); +13943: } +13943: void Hint(AccessPattern pattern) override { target_->Hint(pattern); } +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: IOStatus InvalidateCache(size_t offset, size_t length) override { +13943: return target_->InvalidateCache(offset, length); +13943: } +13943: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +13943: std::function cb, +13943: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +13943: IODebugContext* dbg) override { +13943: return target()->ReadAsync(req, opts, cb, cb_arg, io_handle, del_fn, dbg); +13943: } +13943: Temperature GetTemperature() const override { +13943: return target_->GetTemperature(); +13943: } +13943: +13943: private: +13943: std::unique_ptr guard_; +13943: FSRandomAccessFile* target_; +13943: }; +13943: +13943: class FSRandomAccessFileOwnerWrapper : public FSRandomAccessFileWrapper { +13943: public: +13943: +13943: +13943: explicit FSRandomAccessFileOwnerWrapper( +13943: std::unique_ptr&& t) +13943: : FSRandomAccessFileWrapper(t.get()), guard_(std::move(t)) {} +13943: +13943: private: +13943: std::unique_ptr guard_; +13943: }; +13943: +13943: class FSWritableFileWrapper : public FSWritableFile { +13943: public: +13943: +13943: +13943: explicit FSWritableFileWrapper(FSWritableFile* t) : target_(t) {} +13943: +13943: FSWritableFile* target() const { return target_; } +13943: +13943: IOStatus Append(const Slice& data, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->Append(data, options, dbg); +13943: } +13943: IOStatus Append(const Slice& data, const IOOptions& options, +13943: const DataVerificationInfo& verification_info, +13943: IODebugContext* dbg) override { +13943: return target_->Append(data, options, verification_info, dbg); +13943: } +13943: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +13943: const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->PositionedAppend(data, offset, options, dbg); +13943: } +13943: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +13943: const IOOptions& options, +13943: const DataVerificationInfo& verification_info, +13943: IODebugContext* dbg) override { +13943: return target_->PositionedAppend(data, offset, options, verification_info, +13943: dbg); +13943: } +13943: IOStatus Truncate(uint64_t size, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->Truncate(size, options, dbg); +13943: } +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Close(options, dbg); +13943: } +13943: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Flush(options, dbg); +13943: } +13943: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Sync(options, dbg); +13943: } +13943: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Fsync(options, dbg); +13943: } +13943: bool IsSyncThreadSafe() const override { return target_->IsSyncThreadSafe(); } +13943: +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: +13943: void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) override { +13943: target_->SetWriteLifeTimeHint(hint); +13943: } +13943: +13943: Env::WriteLifeTimeHint GetWriteLifeTimeHint() override { +13943: return target_->GetWriteLifeTimeHint(); +13943: } +13943: +13943: uint64_t GetFileSize(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->GetFileSize(options, dbg); +13943: } +13943: +13943: void SetPreallocationBlockSize(size_t size) override { +13943: target_->SetPreallocationBlockSize(size); +13943: } +13943: +13943: void GetPreallocationStatus(size_t* block_size, +13943: size_t* last_allocated_block) override { +13943: target_->GetPreallocationStatus(block_size, last_allocated_block); +13943: } +13943: +13943: size_t GetUniqueId(char* id, size_t max_size) const override { +13943: return target_->GetUniqueId(id, max_size); +13943: } +13943: +13943: IOStatus InvalidateCache(size_t offset, size_t length) override { +13943: return target_->InvalidateCache(offset, length); +13943: } +13943: +13943: IOStatus RangeSync(uint64_t offset, uint64_t nbytes, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->RangeSync(offset, nbytes, options, dbg); +13943: } +13943: +13943: void PrepareWrite(size_t offset, size_t len, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: target_->PrepareWrite(offset, len, options, dbg); +13943: } +13943: +13943: IOStatus Allocate(uint64_t offset, uint64_t len, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->Allocate(offset, len, options, dbg); +13943: } +13943: +13943: private: +13943: FSWritableFile* target_; +13943: }; +13943: +13943: class FSWritableFileOwnerWrapper : public FSWritableFileWrapper { +13943: public: +13943: +13943: +13943: explicit FSWritableFileOwnerWrapper(std::unique_ptr&& t) +13943: : FSWritableFileWrapper(t.get()), guard_(std::move(t)) {} +13943: +13943: private: +13943: std::unique_ptr guard_; +13943: }; +13943: +13943: class FSRandomRWFileWrapper : public FSRandomRWFile { +13943: public: +13943: +13943: +13943: explicit FSRandomRWFileWrapper(FSRandomRWFile* t) : target_(t) {} +13943: +13943: FSRandomRWFile* target() const { return target_; } +13943: +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: IOStatus Write(uint64_t offset, const Slice& data, const IOOptions& options, +13943: IODebugContext* dbg) override { +13943: return target_->Write(offset, data, options, dbg); +13943: } +13943: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const override { +13943: return target_->Read(offset, n, options, result, scratch, dbg); +13943: } +13943: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Flush(options, dbg); +13943: } +13943: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Sync(options, dbg); +13943: } +13943: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Fsync(options, dbg); +13943: } +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Close(options, dbg); +13943: } +13943: Temperature GetTemperature() const override { +13943: return target_->GetTemperature(); +13943: } +13943: +13943: private: +13943: FSRandomRWFile* target_; +13943: }; +13943: +13943: class FSRandomRWFileOwnerWrapper : public FSRandomRWFileWrapper { +13943: public: +13943: +13943: +13943: explicit FSRandomRWFileOwnerWrapper(std::unique_ptr&& t) +13943: : FSRandomRWFileWrapper(t.get()), guard_(std::move(t)) {} +13943: +13943: private: +13943: std::unique_ptr guard_; +13943: }; +13943: +13943: class FSDirectoryWrapper : public FSDirectory { +13943: public: +13943: +13943: +13943: explicit FSDirectoryWrapper(std::unique_ptr&& t) +13943: : guard_(std::move(t)) { +13943: target_ = guard_.get(); +13943: } +13943: +13943: +13943: +13943: explicit FSDirectoryWrapper(FSDirectory* t) : target_(t) {} +13943: +13943: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Fsync(options, dbg); +13943: } +13943: +13943: IOStatus FsyncWithDirOptions( +13943: const IOOptions& options, IODebugContext* dbg, +13943: const DirFsyncOptions& dir_fsync_options) override { +13943: return target_->FsyncWithDirOptions(options, dbg, dir_fsync_options); +13943: } +13943: +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override { +13943: return target_->Close(options, dbg); +13943: } +13943: +13943: size_t GetUniqueId(char* id, size_t max_size) const override { +13943: return target_->GetUniqueId(id, max_size); +13943: } +13943: +13943: private: +13943: std::unique_ptr guard_; +13943: FSDirectory* target_; +13943: }; +13943: +13943: +13943: IOStatus WriteStringToFile(FileSystem* fs, const Slice& data, +13943: const std::string& fname, bool should_sync = false, +13943: const IOOptions& io_options = IOOptions(), +13943: const FileOptions& file_options = FileOptions()); +13943: +13943: +13943: IOStatus ReadFileToString(FileSystem* fs, const std::string& fname, +13943: std::string* data); +13943: +13943: +13943: IOStatus ReadFileToString(FileSystem* fs, const std::string& fname, +13943: const IOOptions& opts, std::string* data); +13943: +13943: } +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/fstream" 1 3 +13943: # 36 "/usr/include/c++/14/fstream" 3 +13943: +13943: # 37 "/usr/include/c++/14/fstream" 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/codecvt.h" 1 3 +13943: # 39 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: +13943: # 40 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: +13943: +13943: +13943: +13943: +13943: # 44 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: class codecvt_base +13943: { +13943: public: +13943: enum result +13943: { +13943: ok, +13943: partial, +13943: error, +13943: noconv +13943: }; +13943: }; +13943: # 70 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: template +13943: class __codecvt_abstract_base +13943: : public locale::facet, public codecvt_base +13943: { +13943: public: +13943: +13943: typedef codecvt_base::result result; +13943: typedef _InternT intern_type; +13943: typedef _ExternT extern_type; +13943: typedef _StateT state_type; +13943: # 118 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: result +13943: out(state_type& __state, const intern_type* __from, +13943: const intern_type* __from_end, const intern_type*& __from_next, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const +13943: { +13943: return this->do_out(__state, __from, __from_end, __from_next, +13943: __to, __to_end, __to_next); +13943: } +13943: # 157 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: result +13943: unshift(state_type& __state, extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const +13943: { return this->do_unshift(__state, __to,__to_end,__to_next); } +13943: # 198 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: result +13943: in(state_type& __state, const extern_type* __from, +13943: const extern_type* __from_end, const extern_type*& __from_next, +13943: intern_type* __to, intern_type* __to_end, +13943: intern_type*& __to_next) const +13943: { +13943: return this->do_in(__state, __from, __from_end, __from_next, +13943: __to, __to_end, __to_next); +13943: } +13943: +13943: int +13943: encoding() const throw() +13943: { return this->do_encoding(); } +13943: +13943: bool +13943: always_noconv() const throw() +13943: { return this->do_always_noconv(); } +13943: +13943: int +13943: length(state_type& __state, const extern_type* __from, +13943: const extern_type* __end, size_t __max) const +13943: { return this->do_length(__state, __from, __end, __max); } +13943: +13943: int +13943: max_length() const throw() +13943: { return this->do_max_length(); } +13943: +13943: protected: +13943: explicit +13943: __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } +13943: +13943: virtual +13943: ~__codecvt_abstract_base() { } +13943: # 239 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: virtual result +13943: do_out(state_type& __state, const intern_type* __from, +13943: const intern_type* __from_end, const intern_type*& __from_next, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const = 0; +13943: +13943: virtual result +13943: do_unshift(state_type& __state, extern_type* __to, +13943: extern_type* __to_end, extern_type*& __to_next) const = 0; +13943: +13943: virtual result +13943: do_in(state_type& __state, const extern_type* __from, +13943: const extern_type* __from_end, const extern_type*& __from_next, +13943: intern_type* __to, intern_type* __to_end, +13943: intern_type*& __to_next) const = 0; +13943: +13943: virtual int +13943: do_encoding() const throw() = 0; +13943: +13943: virtual bool +13943: do_always_noconv() const throw() = 0; +13943: +13943: virtual int +13943: do_length(state_type&, const extern_type* __from, +13943: const extern_type* __end, size_t __max) const = 0; +13943: +13943: virtual int +13943: do_max_length() const throw() = 0; +13943: }; +13943: # 276 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: template +13943: class codecvt +13943: : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> +13943: { +13943: public: +13943: +13943: typedef codecvt_base::result result; +13943: typedef _InternT intern_type; +13943: typedef _ExternT extern_type; +13943: typedef _StateT state_type; +13943: +13943: protected: +13943: __c_locale _M_c_locale_codecvt; +13943: +13943: public: +13943: static locale::id id; +13943: +13943: explicit +13943: codecvt(size_t __refs = 0) +13943: : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs), +13943: _M_c_locale_codecvt(0) +13943: { } +13943: +13943: explicit +13943: codecvt(__c_locale __cloc, size_t __refs = 0); +13943: +13943: protected: +13943: virtual +13943: ~codecvt() { } +13943: +13943: virtual result +13943: do_out(state_type& __state, const intern_type* __from, +13943: const intern_type* __from_end, const intern_type*& __from_next, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_unshift(state_type& __state, extern_type* __to, +13943: extern_type* __to_end, extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_in(state_type& __state, const extern_type* __from, +13943: const extern_type* __from_end, const extern_type*& __from_next, +13943: intern_type* __to, intern_type* __to_end, +13943: intern_type*& __to_next) const; +13943: +13943: virtual int +13943: do_encoding() const throw(); +13943: +13943: virtual bool +13943: do_always_noconv() const throw(); +13943: +13943: virtual int +13943: do_length(state_type&, const extern_type* __from, +13943: const extern_type* __end, size_t __max) const; +13943: +13943: virtual int +13943: do_max_length() const throw(); +13943: }; +13943: +13943: template +13943: locale::id codecvt<_InternT, _ExternT, _StateT>::id; +13943: +13943: +13943: template<> +13943: class codecvt +13943: : public __codecvt_abstract_base +13943: { +13943: friend class messages; +13943: +13943: public: +13943: +13943: typedef char intern_type; +13943: typedef char extern_type; +13943: typedef mbstate_t state_type; +13943: +13943: protected: +13943: __c_locale _M_c_locale_codecvt; +13943: +13943: public: +13943: static locale::id id; +13943: +13943: explicit +13943: codecvt(size_t __refs = 0); +13943: +13943: explicit +13943: codecvt(__c_locale __cloc, size_t __refs = 0); +13943: +13943: protected: +13943: virtual +13943: ~codecvt(); +13943: +13943: virtual result +13943: do_out(state_type& __state, const intern_type* __from, +13943: const intern_type* __from_end, const intern_type*& __from_next, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_unshift(state_type& __state, extern_type* __to, +13943: extern_type* __to_end, extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_in(state_type& __state, const extern_type* __from, +13943: const extern_type* __from_end, const extern_type*& __from_next, +13943: intern_type* __to, intern_type* __to_end, +13943: intern_type*& __to_next) const; +13943: +13943: virtual int +13943: do_encoding() const throw(); +13943: +13943: virtual bool +13943: do_always_noconv() const throw(); +13943: +13943: virtual int +13943: do_length(state_type&, const extern_type* __from, +13943: const extern_type* __end, size_t __max) const; +13943: +13943: virtual int +13943: do_max_length() const throw(); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: class codecvt +13943: : public __codecvt_abstract_base +13943: { +13943: friend class messages; +13943: +13943: public: +13943: +13943: typedef wchar_t intern_type; +13943: typedef char extern_type; +13943: typedef mbstate_t state_type; +13943: +13943: protected: +13943: __c_locale _M_c_locale_codecvt; +13943: +13943: public: +13943: static locale::id id; +13943: +13943: explicit +13943: codecvt(size_t __refs = 0); +13943: +13943: explicit +13943: codecvt(__c_locale __cloc, size_t __refs = 0); +13943: +13943: protected: +13943: virtual +13943: ~codecvt(); +13943: +13943: virtual result +13943: do_out(state_type& __state, const intern_type* __from, +13943: const intern_type* __from_end, const intern_type*& __from_next, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_unshift(state_type& __state, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_in(state_type& __state, +13943: const extern_type* __from, const extern_type* __from_end, +13943: const extern_type*& __from_next, +13943: intern_type* __to, intern_type* __to_end, +13943: intern_type*& __to_next) const; +13943: +13943: virtual +13943: int do_encoding() const throw(); +13943: +13943: virtual +13943: bool do_always_noconv() const throw(); +13943: +13943: virtual +13943: int do_length(state_type&, const extern_type* __from, +13943: const extern_type* __end, size_t __max) const; +13943: +13943: virtual int +13943: do_max_length() const throw(); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: class codecvt +13943: : public __codecvt_abstract_base +13943: { +13943: public: +13943: +13943: typedef char16_t intern_type; +13943: typedef char extern_type; +13943: typedef mbstate_t state_type; +13943: +13943: public: +13943: static locale::id id; +13943: +13943: explicit +13943: codecvt(size_t __refs = 0) +13943: : __codecvt_abstract_base(__refs) { } +13943: +13943: protected: +13943: virtual +13943: ~codecvt(); +13943: +13943: virtual result +13943: do_out(state_type& __state, const intern_type* __from, +13943: const intern_type* __from_end, const intern_type*& __from_next, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_unshift(state_type& __state, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_in(state_type& __state, +13943: const extern_type* __from, const extern_type* __from_end, +13943: const extern_type*& __from_next, +13943: intern_type* __to, intern_type* __to_end, +13943: intern_type*& __to_next) const; +13943: +13943: virtual +13943: int do_encoding() const throw(); +13943: +13943: virtual +13943: bool do_always_noconv() const throw(); +13943: +13943: virtual +13943: int do_length(state_type&, const extern_type* __from, +13943: const extern_type* __end, size_t __max) const; +13943: +13943: virtual int +13943: do_max_length() const throw(); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: template<> +13943: class codecvt +13943: : public __codecvt_abstract_base +13943: { +13943: public: +13943: +13943: typedef char32_t intern_type; +13943: typedef char extern_type; +13943: typedef mbstate_t state_type; +13943: +13943: public: +13943: static locale::id id; +13943: +13943: explicit +13943: codecvt(size_t __refs = 0) +13943: : __codecvt_abstract_base(__refs) { } +13943: +13943: protected: +13943: virtual +13943: ~codecvt(); +13943: +13943: virtual result +13943: do_out(state_type& __state, const intern_type* __from, +13943: const intern_type* __from_end, const intern_type*& __from_next, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_unshift(state_type& __state, +13943: extern_type* __to, extern_type* __to_end, +13943: extern_type*& __to_next) const; +13943: +13943: virtual result +13943: do_in(state_type& __state, +13943: const extern_type* __from, const extern_type* __from_end, +13943: const extern_type*& __from_next, +13943: intern_type* __to, intern_type* __to_end, +13943: intern_type*& __to_next) const; +13943: +13943: virtual +13943: int do_encoding() const throw(); +13943: +13943: virtual +13943: bool do_always_noconv() const throw(); +13943: +13943: virtual +13943: int do_length(state_type&, const extern_type* __from, +13943: const extern_type* __end, size_t __max) const; +13943: +13943: virtual int +13943: do_max_length() const throw(); +13943: }; +13943: # 698 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: template +13943: class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> +13943: { +13943: public: +13943: explicit +13943: codecvt_byname(const char* __s, size_t __refs = 0) +13943: : codecvt<_InternT, _ExternT, _StateT>(__refs) +13943: { +13943: if (__builtin_strcmp(__s, "C") != 0 +13943: && __builtin_strcmp(__s, "POSIX") != 0) +13943: { +13943: this->_S_destroy_c_locale(this->_M_c_locale_codecvt); +13943: this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); +13943: } +13943: } +13943: +13943: +13943: explicit +13943: codecvt_byname(const string& __s, size_t __refs = 0) +13943: : codecvt_byname(__s.c_str(), __refs) { } +13943: +13943: +13943: protected: +13943: virtual +13943: ~codecvt_byname() { } +13943: }; +13943: +13943: +13943: template<> +13943: class codecvt_byname +13943: : public codecvt +13943: { +13943: public: +13943: explicit +13943: codecvt_byname(const char*, size_t __refs = 0) +13943: : codecvt(__refs) { } +13943: +13943: explicit +13943: codecvt_byname(const string& __s, size_t __refs = 0) +13943: : codecvt_byname(__s.c_str(), __refs) { } +13943: +13943: protected: +13943: virtual +13943: ~codecvt_byname() { } +13943: }; +13943: +13943: template<> +13943: class codecvt_byname +13943: : public codecvt +13943: { +13943: public: +13943: explicit +13943: codecvt_byname(const char*, size_t __refs = 0) +13943: : codecvt(__refs) { } +13943: +13943: explicit +13943: codecvt_byname(const string& __s, size_t __refs = 0) +13943: : codecvt_byname(__s.c_str(), __refs) { } +13943: +13943: protected: +13943: virtual +13943: ~codecvt_byname() { } +13943: }; +13943: # 805 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: extern template class codecvt_byname; +13943: +13943: extern template +13943: const codecvt& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: +13943: extern template class codecvt_byname; +13943: +13943: extern template +13943: const codecvt& +13943: use_facet >(const locale&); +13943: +13943: extern template +13943: bool +13943: has_facet >(const locale&); +13943: +13943: +13943: +13943: extern template class codecvt_byname; +13943: extern template class codecvt_byname; +13943: # 840 "/usr/include/c++/14/bits/codecvt.h" 3 +13943: +13943: } +13943: # 43 "/usr/include/c++/14/fstream" 2 3 +13943: # 1 "/usr/include/c++/14/cstdio" 1 3 +13943: # 39 "/usr/include/c++/14/cstdio" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdio" 3 +13943: # 44 "/usr/include/c++/14/fstream" 2 3 +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 1 3 +13943: # 37 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 3 +13943: +13943: # 38 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 3 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++io.h" 1 3 +13943: # 35 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++io.h" 3 +13943: # 1 "/usr/include/c++/14/cstdio" 1 3 +13943: # 39 "/usr/include/c++/14/cstdio" 3 +13943: +13943: # 40 "/usr/include/c++/14/cstdio" 3 +13943: # 36 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++io.h" 2 3 +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef __gthread_mutex_t __c_lock; +13943: +13943: +13943: +13943: typedef FILE __c_file; +13943: +13943: +13943: } +13943: # 41 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 2 3 +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: template +13943: class __basic_file; +13943: +13943: +13943: template<> +13943: class __basic_file +13943: { +13943: +13943: __c_file* _M_cfile; +13943: +13943: +13943: bool _M_cfile_created; +13943: +13943: public: +13943: __basic_file(__c_lock* __lock = 0) throw (); +13943: +13943: +13943: __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept +13943: : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) +13943: { +13943: __rv._M_cfile = nullptr; +13943: __rv._M_cfile_created = false; +13943: } +13943: +13943: __basic_file& operator=(const __basic_file&) = delete; +13943: __basic_file& operator=(__basic_file&&) = delete; +13943: +13943: void +13943: swap(__basic_file& __f) noexcept +13943: { +13943: std::swap(_M_cfile, __f._M_cfile); +13943: std::swap(_M_cfile_created, __f._M_cfile_created); +13943: } +13943: +13943: +13943: __basic_file* +13943: open(const char* __name, ios_base::openmode __mode, int __prot = 0664); +13943: +13943: +13943: +13943: +13943: +13943: +13943: __basic_file* +13943: sys_open(__c_file* __file, ios_base::openmode); +13943: +13943: __basic_file* +13943: sys_open(int __fd, ios_base::openmode __mode) throw (); +13943: +13943: __basic_file* +13943: close(); +13943: +13943: __attribute__ ((__pure__)) bool +13943: is_open() const throw (); +13943: +13943: __attribute__ ((__pure__)) int +13943: fd() throw (); +13943: +13943: __attribute__ ((__pure__)) __c_file* +13943: file() throw (); +13943: +13943: ~__basic_file(); +13943: +13943: streamsize +13943: xsputn(const char* __s, streamsize __n); +13943: +13943: streamsize +13943: xsputn_2(const char* __s1, streamsize __n1, +13943: const char* __s2, streamsize __n2); +13943: +13943: streamsize +13943: xsgetn(char* __s, streamsize __n); +13943: +13943: streamoff +13943: seekoff(streamoff __off, ios_base::seekdir __way) throw (); +13943: +13943: int +13943: sync(); +13943: +13943: streamsize +13943: showmanyc(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using native_handle_type = int; +13943: +13943: +13943: native_handle_type +13943: native_handle() const noexcept; +13943: +13943: }; +13943: +13943: +13943: } +13943: # 45 "/usr/include/c++/14/fstream" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 51 "/usr/include/c++/14/fstream" 2 3 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: +13943: +13943: template().make_preferred().filename())> +13943: using _If_fs_path = enable_if_t, _Result>; +13943: # 89 "/usr/include/c++/14/fstream" 3 +13943: template +13943: class basic_filebuf : public basic_streambuf<_CharT, _Traits> +13943: { +13943: +13943: template +13943: using __chk_state = __and_, +13943: is_copy_constructible<_Tp>, +13943: is_default_constructible<_Tp>>; +13943: +13943: static_assert(__chk_state::value, +13943: "state_type must be CopyAssignable, CopyConstructible" +13943: " and DefaultConstructible"); +13943: +13943: static_assert(is_same>::value, +13943: "pos_type must be fpos"); +13943: +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: typedef basic_streambuf __streambuf_type; +13943: typedef basic_filebuf __filebuf_type; +13943: typedef __basic_file __file_type; +13943: typedef typename traits_type::state_type __state_type; +13943: typedef codecvt __codecvt_type; +13943: +13943: friend class ios_base; +13943: +13943: protected: +13943: +13943: +13943: __c_lock _M_lock; +13943: +13943: +13943: __file_type _M_file; +13943: +13943: +13943: ios_base::openmode _M_mode; +13943: +13943: +13943: __state_type _M_state_beg; +13943: +13943: +13943: +13943: +13943: __state_type _M_state_cur; +13943: +13943: +13943: +13943: __state_type _M_state_last; +13943: +13943: +13943: char_type* _M_buf; +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t _M_buf_size; +13943: +13943: +13943: bool _M_buf_allocated; +13943: # 165 "/usr/include/c++/14/fstream" 3 +13943: bool _M_reading; +13943: bool _M_writing; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: char_type _M_pback; +13943: char_type* _M_pback_cur_save; +13943: char_type* _M_pback_end_save; +13943: bool _M_pback_init; +13943: +13943: +13943: +13943: const __codecvt_type* _M_codecvt; +13943: +13943: +13943: +13943: +13943: +13943: +13943: char* _M_ext_buf; +13943: +13943: +13943: +13943: +13943: streamsize _M_ext_buf_size; +13943: +13943: +13943: +13943: +13943: +13943: +13943: const char* _M_ext_next; +13943: char* _M_ext_end; +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: _M_create_pback() +13943: { +13943: if (!_M_pback_init) +13943: { +13943: _M_pback_cur_save = this->gptr(); +13943: _M_pback_end_save = this->egptr(); +13943: this->setg(&_M_pback, &_M_pback, &_M_pback + 1); +13943: _M_pback_init = true; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void +13943: _M_destroy_pback() throw() +13943: { +13943: if (_M_pback_init) +13943: { +13943: +13943: _M_pback_cur_save += this->gptr() != this->eback(); +13943: this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save); +13943: _M_pback_init = false; +13943: } +13943: } +13943: +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: basic_filebuf(); +13943: +13943: +13943: basic_filebuf(const basic_filebuf&) = delete; +13943: basic_filebuf(basic_filebuf&&); +13943: +13943: +13943: +13943: +13943: +13943: virtual +13943: ~basic_filebuf() +13943: { +13943: try +13943: { this->close(); } +13943: catch(...) +13943: { } +13943: } +13943: +13943: +13943: basic_filebuf& operator=(const basic_filebuf&) = delete; +13943: basic_filebuf& operator=(basic_filebuf&&); +13943: void swap(basic_filebuf&); +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: is_open() const throw() +13943: { return _M_file.is_open(); } +13943: # 319 "/usr/include/c++/14/fstream" 3 +13943: __filebuf_type* +13943: open(const char* __s, ios_base::openmode __mode); +13943: # 340 "/usr/include/c++/14/fstream" 3 +13943: __filebuf_type* +13943: open(const std::string& __s, ios_base::openmode __mode) +13943: { return open(__s.c_str(), __mode); } +13943: # 351 "/usr/include/c++/14/fstream" 3 +13943: template +13943: _If_fs_path<_Path, __filebuf_type*> +13943: open(const _Path& __s, ios_base::openmode __mode) +13943: { return open(__s.c_str(), __mode); } +13943: # 370 "/usr/include/c++/14/fstream" 3 +13943: __filebuf_type* +13943: close(); +13943: # 403 "/usr/include/c++/14/fstream" 3 +13943: protected: +13943: void +13943: _M_allocate_internal_buffer(); +13943: +13943: void +13943: _M_destroy_internal_buffer() throw(); +13943: +13943: +13943: virtual streamsize +13943: showmanyc(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual int_type +13943: underflow(); +13943: +13943: virtual int_type +13943: pbackfail(int_type __c = _Traits::eof()); +13943: # 432 "/usr/include/c++/14/fstream" 3 +13943: virtual int_type +13943: overflow(int_type __c = _Traits::eof()); +13943: +13943: +13943: +13943: bool +13943: _M_convert_to_external(char_type*, streamsize); +13943: # 452 "/usr/include/c++/14/fstream" 3 +13943: virtual __streambuf_type* +13943: setbuf(char_type* __s, streamsize __n); +13943: +13943: virtual pos_type +13943: seekoff(off_type __off, ios_base::seekdir __way, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out); +13943: +13943: virtual pos_type +13943: seekpos(pos_type __pos, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out); +13943: +13943: +13943: pos_type +13943: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state); +13943: +13943: int +13943: _M_get_ext_pos(__state_type &__state); +13943: +13943: virtual int +13943: sync(); +13943: +13943: virtual void +13943: imbue(const locale& __loc); +13943: +13943: virtual streamsize +13943: xsgetn(char_type* __s, streamsize __n); +13943: +13943: virtual streamsize +13943: xsputn(const char_type* __s, streamsize __n); +13943: +13943: +13943: bool +13943: _M_terminate_output(); +13943: # 498 "/usr/include/c++/14/fstream" 3 +13943: void +13943: _M_set_buffer(streamsize __off) +13943: { +13943: const bool __testin = _M_mode & ios_base::in; +13943: const bool __testout = (_M_mode & ios_base::out +13943: || _M_mode & ios_base::app); +13943: +13943: if (__testin && __off > 0) +13943: this->setg(_M_buf, _M_buf, _M_buf + __off); +13943: else +13943: this->setg(_M_buf, _M_buf, _M_buf); +13943: +13943: if (__testout && __off == 0 && _M_buf_size > 1 ) +13943: this->setp(_M_buf, _M_buf + _M_buf_size - 1); +13943: else +13943: this->setp(0, 0); +13943: } +13943: }; +13943: # 531 "/usr/include/c++/14/fstream" 3 +13943: template +13943: class basic_ifstream : public basic_istream<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: +13943: typedef basic_filebuf __filebuf_type; +13943: typedef basic_istream __istream_type; +13943: +13943: private: +13943: __filebuf_type _M_filebuf; +13943: +13943: public: +13943: # 558 "/usr/include/c++/14/fstream" 3 +13943: basic_ifstream() : __istream_type(), _M_filebuf() +13943: { this->init(&_M_filebuf); } +13943: # 568 "/usr/include/c++/14/fstream" 3 +13943: explicit +13943: basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) +13943: : __istream_type(), _M_filebuf() +13943: { +13943: this->init(&_M_filebuf); +13943: this->open(__s, __mode); +13943: } +13943: # 601 "/usr/include/c++/14/fstream" 3 +13943: explicit +13943: basic_ifstream(const std::string& __s, +13943: ios_base::openmode __mode = ios_base::in) +13943: : __istream_type(), _M_filebuf() +13943: { +13943: this->init(&_M_filebuf); +13943: this->open(__s, __mode); +13943: } +13943: # 618 "/usr/include/c++/14/fstream" 3 +13943: template> +13943: basic_ifstream(const _Path& __s, +13943: ios_base::openmode __mode = ios_base::in) +13943: : basic_ifstream(__s.c_str(), __mode) +13943: { } +13943: +13943: +13943: basic_ifstream(const basic_ifstream&) = delete; +13943: +13943: basic_ifstream(basic_ifstream&& __rhs) +13943: : __istream_type(std::move(__rhs)), +13943: _M_filebuf(std::move(__rhs._M_filebuf)) +13943: { __istream_type::set_rdbuf(&_M_filebuf); } +13943: # 639 "/usr/include/c++/14/fstream" 3 +13943: ~basic_ifstream() +13943: { } +13943: +13943: +13943: +13943: +13943: basic_ifstream& +13943: operator=(const basic_ifstream&) = delete; +13943: +13943: basic_ifstream& +13943: operator=(basic_ifstream&& __rhs) +13943: { +13943: __istream_type::operator=(std::move(__rhs)); +13943: _M_filebuf = std::move(__rhs._M_filebuf); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_ifstream& __rhs) +13943: { +13943: __istream_type::swap(__rhs); +13943: _M_filebuf.swap(__rhs._M_filebuf); +13943: } +13943: # 671 "/usr/include/c++/14/fstream" 3 +13943: __filebuf_type* +13943: rdbuf() const +13943: { return const_cast<__filebuf_type*>(&_M_filebuf); } +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: is_open() +13943: { return _M_filebuf.is_open(); } +13943: +13943: +13943: +13943: bool +13943: is_open() const +13943: { return _M_filebuf.is_open(); } +13943: # 697 "/usr/include/c++/14/fstream" 3 +13943: void +13943: open(const char* __s, ios_base::openmode __mode = ios_base::in) +13943: { +13943: if (!_M_filebuf.open(__s, __mode | ios_base::in)) +13943: this->setstate(ios_base::failbit); +13943: else +13943: +13943: +13943: this->clear(); +13943: } +13943: # 736 "/usr/include/c++/14/fstream" 3 +13943: void +13943: open(const std::string& __s, ios_base::openmode __mode = ios_base::in) +13943: { +13943: if (!_M_filebuf.open(__s, __mode | ios_base::in)) +13943: this->setstate(ios_base::failbit); +13943: else +13943: +13943: +13943: this->clear(); +13943: } +13943: # 756 "/usr/include/c++/14/fstream" 3 +13943: template +13943: _If_fs_path<_Path, void> +13943: open(const _Path& __s, ios_base::openmode __mode = ios_base::in) +13943: { open(__s.c_str(), __mode); } +13943: # 769 "/usr/include/c++/14/fstream" 3 +13943: void +13943: close() +13943: { +13943: if (!_M_filebuf.close()) +13943: this->setstate(ios_base::failbit); +13943: } +13943: # 784 "/usr/include/c++/14/fstream" 3 +13943: }; +13943: # 801 "/usr/include/c++/14/fstream" 3 +13943: template +13943: class basic_ofstream : public basic_ostream<_CharT,_Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: +13943: typedef basic_filebuf __filebuf_type; +13943: typedef basic_ostream __ostream_type; +13943: +13943: private: +13943: __filebuf_type _M_filebuf; +13943: +13943: public: +13943: # 828 "/usr/include/c++/14/fstream" 3 +13943: basic_ofstream(): __ostream_type(), _M_filebuf() +13943: { this->init(&_M_filebuf); } +13943: # 838 "/usr/include/c++/14/fstream" 3 +13943: explicit +13943: basic_ofstream(const char* __s, +13943: ios_base::openmode __mode = ios_base::out) +13943: : __ostream_type(), _M_filebuf() +13943: { +13943: this->init(&_M_filebuf); +13943: this->open(__s, __mode); +13943: } +13943: # 873 "/usr/include/c++/14/fstream" 3 +13943: explicit +13943: basic_ofstream(const std::string& __s, +13943: ios_base::openmode __mode = ios_base::out) +13943: : __ostream_type(), _M_filebuf() +13943: { +13943: this->init(&_M_filebuf); +13943: this->open(__s, __mode); +13943: } +13943: # 890 "/usr/include/c++/14/fstream" 3 +13943: template> +13943: basic_ofstream(const _Path& __s, +13943: ios_base::openmode __mode = ios_base::out) +13943: : basic_ofstream(__s.c_str(), __mode) +13943: { } +13943: +13943: +13943: basic_ofstream(const basic_ofstream&) = delete; +13943: +13943: basic_ofstream(basic_ofstream&& __rhs) +13943: : __ostream_type(std::move(__rhs)), +13943: _M_filebuf(std::move(__rhs._M_filebuf)) +13943: { __ostream_type::set_rdbuf(&_M_filebuf); } +13943: # 911 "/usr/include/c++/14/fstream" 3 +13943: ~basic_ofstream() +13943: { } +13943: +13943: +13943: +13943: +13943: basic_ofstream& +13943: operator=(const basic_ofstream&) = delete; +13943: +13943: basic_ofstream& +13943: operator=(basic_ofstream&& __rhs) +13943: { +13943: __ostream_type::operator=(std::move(__rhs)); +13943: _M_filebuf = std::move(__rhs._M_filebuf); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_ofstream& __rhs) +13943: { +13943: __ostream_type::swap(__rhs); +13943: _M_filebuf.swap(__rhs._M_filebuf); +13943: } +13943: # 943 "/usr/include/c++/14/fstream" 3 +13943: __filebuf_type* +13943: rdbuf() const +13943: { return const_cast<__filebuf_type*>(&_M_filebuf); } +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: is_open() +13943: { return _M_filebuf.is_open(); } +13943: +13943: +13943: +13943: bool +13943: is_open() const +13943: { return _M_filebuf.is_open(); } +13943: # 969 "/usr/include/c++/14/fstream" 3 +13943: void +13943: open(const char* __s, ios_base::openmode __mode = ios_base::out) +13943: { +13943: if (!_M_filebuf.open(__s, __mode | ios_base::out)) +13943: this->setstate(ios_base::failbit); +13943: else +13943: +13943: +13943: this->clear(); +13943: } +13943: # 1008 "/usr/include/c++/14/fstream" 3 +13943: void +13943: open(const std::string& __s, ios_base::openmode __mode = ios_base::out) +13943: { +13943: if (!_M_filebuf.open(__s, __mode | ios_base::out)) +13943: this->setstate(ios_base::failbit); +13943: else +13943: +13943: +13943: this->clear(); +13943: } +13943: # 1028 "/usr/include/c++/14/fstream" 3 +13943: template +13943: _If_fs_path<_Path, void> +13943: open(const _Path& __s, ios_base::openmode __mode = ios_base::out) +13943: { open(__s.c_str(), __mode); } +13943: # 1041 "/usr/include/c++/14/fstream" 3 +13943: void +13943: close() +13943: { +13943: if (!_M_filebuf.close()) +13943: this->setstate(ios_base::failbit); +13943: } +13943: # 1056 "/usr/include/c++/14/fstream" 3 +13943: }; +13943: # 1073 "/usr/include/c++/14/fstream" 3 +13943: template +13943: class basic_fstream : public basic_iostream<_CharT, _Traits> +13943: { +13943: public: +13943: +13943: typedef _CharT char_type; +13943: typedef _Traits traits_type; +13943: typedef typename traits_type::int_type int_type; +13943: typedef typename traits_type::pos_type pos_type; +13943: typedef typename traits_type::off_type off_type; +13943: +13943: +13943: typedef basic_filebuf __filebuf_type; +13943: typedef basic_ios __ios_type; +13943: typedef basic_iostream __iostream_type; +13943: +13943: private: +13943: __filebuf_type _M_filebuf; +13943: +13943: public: +13943: # 1101 "/usr/include/c++/14/fstream" 3 +13943: basic_fstream() +13943: : __iostream_type(), _M_filebuf() +13943: { this->init(&_M_filebuf); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit +13943: basic_fstream(const char* __s, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: : __iostream_type(0), _M_filebuf() +13943: { +13943: this->init(&_M_filebuf); +13943: this->open(__s, __mode); +13943: } +13943: # 1140 "/usr/include/c++/14/fstream" 3 +13943: explicit +13943: basic_fstream(const std::string& __s, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: : __iostream_type(0), _M_filebuf() +13943: { +13943: this->init(&_M_filebuf); +13943: this->open(__s, __mode); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: basic_fstream(const _Path& __s, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: : basic_fstream(__s.c_str(), __mode) +13943: { } +13943: +13943: +13943: basic_fstream(const basic_fstream&) = delete; +13943: +13943: basic_fstream(basic_fstream&& __rhs) +13943: : __iostream_type(std::move(__rhs)), +13943: _M_filebuf(std::move(__rhs._M_filebuf)) +13943: { __iostream_type::set_rdbuf(&_M_filebuf); } +13943: # 1176 "/usr/include/c++/14/fstream" 3 +13943: ~basic_fstream() +13943: { } +13943: +13943: +13943: +13943: +13943: basic_fstream& +13943: operator=(const basic_fstream&) = delete; +13943: +13943: basic_fstream& +13943: operator=(basic_fstream&& __rhs) +13943: { +13943: __iostream_type::operator=(std::move(__rhs)); +13943: _M_filebuf = std::move(__rhs._M_filebuf); +13943: return *this; +13943: } +13943: +13943: void +13943: swap(basic_fstream& __rhs) +13943: { +13943: __iostream_type::swap(__rhs); +13943: _M_filebuf.swap(__rhs._M_filebuf); +13943: } +13943: # 1208 "/usr/include/c++/14/fstream" 3 +13943: __filebuf_type* +13943: rdbuf() const +13943: { return const_cast<__filebuf_type*>(&_M_filebuf); } +13943: +13943: +13943: +13943: +13943: +13943: bool +13943: is_open() +13943: { return _M_filebuf.is_open(); } +13943: +13943: +13943: +13943: bool +13943: is_open() const +13943: { return _M_filebuf.is_open(); } +13943: # 1234 "/usr/include/c++/14/fstream" 3 +13943: void +13943: open(const char* __s, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: { +13943: if (!_M_filebuf.open(__s, __mode)) +13943: this->setstate(ios_base::failbit); +13943: else +13943: +13943: +13943: this->clear(); +13943: } +13943: # 1275 "/usr/include/c++/14/fstream" 3 +13943: void +13943: open(const std::string& __s, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: { +13943: if (!_M_filebuf.open(__s, __mode)) +13943: this->setstate(ios_base::failbit); +13943: else +13943: +13943: +13943: this->clear(); +13943: } +13943: # 1296 "/usr/include/c++/14/fstream" 3 +13943: template +13943: _If_fs_path<_Path, void> +13943: open(const _Path& __s, +13943: ios_base::openmode __mode = ios_base::in | ios_base::out) +13943: { open(__s.c_str(), __mode); } +13943: # 1310 "/usr/include/c++/14/fstream" 3 +13943: void +13943: close() +13943: { +13943: if (!_M_filebuf.close()) +13943: this->setstate(ios_base::failbit); +13943: } +13943: # 1325 "/usr/include/c++/14/fstream" 3 +13943: }; +13943: +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_filebuf<_CharT, _Traits>& __x, +13943: basic_filebuf<_CharT, _Traits>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_ifstream<_CharT, _Traits>& __x, +13943: basic_ifstream<_CharT, _Traits>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_ofstream<_CharT, _Traits>& __x, +13943: basic_ofstream<_CharT, _Traits>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: template +13943: inline void +13943: swap(basic_fstream<_CharT, _Traits>& __x, +13943: basic_fstream<_CharT, _Traits>& __y) +13943: { __x.swap(__y); } +13943: +13943: +13943: +13943: } +13943: +13943: # 1 "/usr/include/c++/14/bits/fstream.tcc" 1 3 +13943: # 37 "/usr/include/c++/14/bits/fstream.tcc" 3 +13943: +13943: # 38 "/usr/include/c++/14/bits/fstream.tcc" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cerrno" 1 3 +13943: # 39 "/usr/include/c++/14/cerrno" 3 +13943: +13943: # 40 "/usr/include/c++/14/cerrno" 3 +13943: # 42 "/usr/include/c++/14/bits/fstream.tcc" 2 3 +13943: +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template +13943: void +13943: basic_filebuf<_CharT, _Traits>:: +13943: _M_allocate_internal_buffer() +13943: { +13943: +13943: +13943: if (!_M_buf_allocated && !_M_buf) +13943: { +13943: _M_buf = new char_type[_M_buf_size]; +13943: _M_buf_allocated = true; +13943: } +13943: } +13943: +13943: template +13943: void +13943: basic_filebuf<_CharT, _Traits>:: +13943: _M_destroy_internal_buffer() throw() +13943: { +13943: if (_M_buf_allocated) +13943: { +13943: delete [] _M_buf; +13943: _M_buf = 0; +13943: _M_buf_allocated = false; +13943: } +13943: delete [] _M_ext_buf; +13943: _M_ext_buf = 0; +13943: _M_ext_buf_size = 0; +13943: _M_ext_next = 0; +13943: _M_ext_end = 0; +13943: } +13943: +13943: template +13943: basic_filebuf<_CharT, _Traits>:: +13943: basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock), +13943: _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(), +13943: _M_state_last(), _M_buf(0), _M_buf_size(8192), +13943: _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), +13943: _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false), +13943: _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0), +13943: _M_ext_end(0) +13943: { +13943: _M_codecvt = std::__try_use_facet<__codecvt_type>(this->_M_buf_locale); +13943: } +13943: +13943: +13943: template +13943: basic_filebuf<_CharT, _Traits>:: +13943: basic_filebuf(basic_filebuf&& __rhs) +13943: : __streambuf_type(__rhs), +13943: _M_lock(), _M_file(std::move(__rhs._M_file), &_M_lock), +13943: _M_mode(std::__exchange(__rhs._M_mode, ios_base::openmode(0))), +13943: _M_state_beg(std::move(__rhs._M_state_beg)), +13943: _M_state_cur(std::move(__rhs._M_state_cur)), +13943: _M_state_last(std::move(__rhs._M_state_last)), +13943: _M_buf(std::__exchange(__rhs._M_buf, nullptr)), +13943: _M_buf_size(std::__exchange(__rhs._M_buf_size, 1)), +13943: _M_buf_allocated(std::__exchange(__rhs._M_buf_allocated, false)), +13943: _M_reading(std::__exchange(__rhs._M_reading, false)), +13943: _M_writing(std::__exchange(__rhs._M_writing, false)), +13943: _M_pback(__rhs._M_pback), +13943: _M_pback_cur_save(std::__exchange(__rhs._M_pback_cur_save, nullptr)), +13943: _M_pback_end_save(std::__exchange(__rhs._M_pback_end_save, nullptr)), +13943: _M_pback_init(std::__exchange(__rhs._M_pback_init, false)), +13943: _M_codecvt(__rhs._M_codecvt), +13943: _M_ext_buf(std::__exchange(__rhs._M_ext_buf, nullptr)), +13943: _M_ext_buf_size(std::__exchange(__rhs._M_ext_buf_size, 0)), +13943: _M_ext_next(std::__exchange(__rhs._M_ext_next, nullptr)), +13943: _M_ext_end(std::__exchange(__rhs._M_ext_end, nullptr)) +13943: { +13943: __rhs._M_set_buffer(-1); +13943: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; +13943: } +13943: +13943: template +13943: basic_filebuf<_CharT, _Traits>& +13943: basic_filebuf<_CharT, _Traits>:: +13943: operator=(basic_filebuf&& __rhs) +13943: { +13943: this->close(); +13943: __streambuf_type::operator=(__rhs); +13943: _M_file.swap(__rhs._M_file); +13943: _M_mode = std::__exchange(__rhs._M_mode, ios_base::openmode(0)); +13943: _M_state_beg = std::move(__rhs._M_state_beg); +13943: _M_state_cur = std::move(__rhs._M_state_cur); +13943: _M_state_last = std::move(__rhs._M_state_last); +13943: _M_buf = std::__exchange(__rhs._M_buf, nullptr); +13943: _M_buf_size = std::__exchange(__rhs._M_buf_size, 1); +13943: _M_buf_allocated = std::__exchange(__rhs._M_buf_allocated, false); +13943: _M_ext_buf = std::__exchange(__rhs._M_ext_buf, nullptr); +13943: _M_ext_buf_size = std::__exchange(__rhs._M_ext_buf_size, 0); +13943: _M_ext_next = std::__exchange(__rhs._M_ext_next, nullptr); +13943: _M_ext_end = std::__exchange(__rhs._M_ext_end, nullptr); +13943: _M_reading = std::__exchange(__rhs._M_reading, false); +13943: _M_writing = std::__exchange(__rhs._M_writing, false); +13943: _M_pback_cur_save = std::__exchange(__rhs._M_pback_cur_save, nullptr); +13943: _M_pback_end_save = std::__exchange(__rhs._M_pback_end_save, nullptr); +13943: _M_pback_init = std::__exchange(__rhs._M_pback_init, false); +13943: __rhs._M_set_buffer(-1); +13943: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; +13943: return *this; +13943: } +13943: +13943: template +13943: void +13943: basic_filebuf<_CharT, _Traits>:: +13943: swap(basic_filebuf& __rhs) +13943: { +13943: __streambuf_type::swap(__rhs); +13943: _M_file.swap(__rhs._M_file); +13943: std::swap(_M_mode, __rhs._M_mode); +13943: std::swap(_M_state_beg, __rhs._M_state_beg); +13943: std::swap(_M_state_cur, __rhs._M_state_cur); +13943: std::swap(_M_state_last, __rhs._M_state_last); +13943: std::swap(_M_buf, __rhs._M_buf); +13943: std::swap(_M_buf_size, __rhs._M_buf_size); +13943: std::swap(_M_buf_allocated, __rhs._M_buf_allocated); +13943: std::swap(_M_ext_buf, __rhs._M_ext_buf); +13943: std::swap(_M_ext_buf_size, __rhs._M_ext_buf_size); +13943: std::swap(_M_ext_next, __rhs._M_ext_next); +13943: std::swap(_M_ext_end, __rhs._M_ext_end); +13943: std::swap(_M_reading, __rhs._M_reading); +13943: std::swap(_M_writing, __rhs._M_writing); +13943: std::swap(_M_pback_cur_save, __rhs._M_pback_cur_save); +13943: std::swap(_M_pback_end_save, __rhs._M_pback_end_save); +13943: std::swap(_M_pback_init, __rhs._M_pback_init); +13943: } +13943: +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* +13943: basic_filebuf<_CharT, _Traits>:: +13943: open(const char* __s, ios_base::openmode __mode) +13943: { +13943: __filebuf_type *__ret = 0; +13943: if (!this->is_open()) +13943: { +13943: _M_file.open(__s, __mode); +13943: if (this->is_open()) +13943: { +13943: _M_allocate_internal_buffer(); +13943: _M_mode = __mode; +13943: +13943: +13943: _M_reading = false; +13943: _M_writing = false; +13943: _M_set_buffer(-1); +13943: +13943: +13943: _M_state_last = _M_state_cur = _M_state_beg; +13943: +13943: +13943: if ((__mode & ios_base::ate) +13943: && this->seekoff(0, ios_base::end, __mode) +13943: == pos_type(off_type(-1))) +13943: this->close(); +13943: else +13943: __ret = this; +13943: } +13943: } +13943: return __ret; +13943: } +13943: # 246 "/usr/include/c++/14/bits/fstream.tcc" 3 +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* +13943: basic_filebuf<_CharT, _Traits>:: +13943: close() +13943: { +13943: if (!this->is_open()) +13943: return 0; +13943: +13943: bool __testfail = false; +13943: { +13943: +13943: struct __close_sentry +13943: { +13943: basic_filebuf *__fb; +13943: __close_sentry (basic_filebuf *__fbi): __fb(__fbi) { } +13943: ~__close_sentry () +13943: { +13943: __fb->_M_mode = ios_base::openmode(0); +13943: __fb->_M_pback_init = false; +13943: __fb->_M_destroy_internal_buffer(); +13943: __fb->_M_reading = false; +13943: __fb->_M_writing = false; +13943: __fb->_M_set_buffer(-1); +13943: __fb->_M_state_last = __fb->_M_state_cur = __fb->_M_state_beg; +13943: } +13943: } __cs (this); +13943: +13943: try +13943: { +13943: if (!_M_terminate_output()) +13943: __testfail = true; +13943: } +13943: catch(...) +13943: { +13943: _M_file.close(); +13943: throw; +13943: } +13943: } +13943: +13943: if (!_M_file.close()) +13943: __testfail = true; +13943: +13943: if (__testfail) +13943: return 0; +13943: else +13943: return this; +13943: } +13943: +13943: template +13943: streamsize +13943: basic_filebuf<_CharT, _Traits>:: +13943: showmanyc() +13943: { +13943: streamsize __ret = -1; +13943: const bool __testin = _M_mode & ios_base::in; +13943: if (__testin && this->is_open()) +13943: { +13943: +13943: +13943: __ret = this->egptr() - this->gptr(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if (__check_facet(_M_codecvt).encoding() >= 0) +13943: +13943: __ret += _M_file.showmanyc() / _M_codecvt->max_length(); +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::int_type +13943: basic_filebuf<_CharT, _Traits>:: +13943: underflow() +13943: { +13943: int_type __ret = traits_type::eof(); +13943: const bool __testin = _M_mode & ios_base::in; +13943: if (__testin) +13943: { +13943: if (_M_writing) +13943: { +13943: if (overflow() == traits_type::eof()) +13943: return __ret; +13943: _M_set_buffer(-1); +13943: _M_writing = false; +13943: } +13943: +13943: +13943: +13943: _M_destroy_pback(); +13943: +13943: if (this->gptr() < this->egptr()) +13943: return traits_type::to_int_type(*this->gptr()); +13943: +13943: +13943: const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; +13943: +13943: +13943: bool __got_eof = false; +13943: +13943: streamsize __ilen = 0; +13943: codecvt_base::result __r = codecvt_base::ok; +13943: if (__check_facet(_M_codecvt).always_noconv()) +13943: { +13943: __ilen = _M_file.xsgetn(reinterpret_cast(this->eback()), +13943: __buflen); +13943: if (__ilen == 0) +13943: __got_eof = true; +13943: } +13943: else +13943: { +13943: +13943: +13943: const int __enc = _M_codecvt->encoding(); +13943: streamsize __blen; +13943: streamsize __rlen; +13943: if (__enc > 0) +13943: __blen = __rlen = __buflen * __enc; +13943: else +13943: { +13943: __blen = __buflen + _M_codecvt->max_length() - 1; +13943: __rlen = __buflen; +13943: } +13943: const streamsize __remainder = _M_ext_end - _M_ext_next; +13943: __rlen = __rlen > __remainder ? __rlen - __remainder : 0; +13943: +13943: +13943: +13943: if (_M_reading && this->egptr() == this->eback() && __remainder) +13943: __rlen = 0; +13943: +13943: +13943: +13943: if (_M_ext_buf_size < __blen) +13943: { +13943: char* __buf = new char[__blen]; +13943: if (__remainder) +13943: __builtin_memcpy(__buf, _M_ext_next, __remainder); +13943: +13943: delete [] _M_ext_buf; +13943: _M_ext_buf = __buf; +13943: _M_ext_buf_size = __blen; +13943: } +13943: else if (__remainder) +13943: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); +13943: +13943: _M_ext_next = _M_ext_buf; +13943: _M_ext_end = _M_ext_buf + __remainder; +13943: _M_state_last = _M_state_cur; +13943: +13943: do +13943: { +13943: if (__rlen > 0) +13943: { +13943: +13943: +13943: +13943: if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size) +13943: { +13943: __throw_ios_failure(("basic_filebuf::underflow " "codecvt::max_length() " "is not valid") +13943: +13943: ); +13943: } +13943: streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen); +13943: if (__elen == 0) +13943: __got_eof = true; +13943: else if (__elen == -1) +13943: break; +13943: _M_ext_end += __elen; +13943: } +13943: +13943: char_type* __iend = this->eback(); +13943: if (_M_ext_next < _M_ext_end) +13943: __r = _M_codecvt->in(_M_state_cur, _M_ext_next, +13943: _M_ext_end, _M_ext_next, +13943: this->eback(), +13943: this->eback() + __buflen, __iend); +13943: if (__r == codecvt_base::noconv) +13943: { +13943: size_t __avail = _M_ext_end - _M_ext_buf; +13943: __ilen = std::min(__avail, __buflen); +13943: traits_type::copy(this->eback(), +13943: reinterpret_cast +13943: (_M_ext_buf), __ilen); +13943: _M_ext_next = _M_ext_buf + __ilen; +13943: } +13943: else +13943: __ilen = __iend - this->eback(); +13943: +13943: +13943: +13943: +13943: if (__r == codecvt_base::error) +13943: break; +13943: +13943: __rlen = 1; +13943: } +13943: while (__ilen == 0 && !__got_eof); +13943: } +13943: +13943: if (__ilen > 0) +13943: { +13943: _M_set_buffer(__ilen); +13943: _M_reading = true; +13943: __ret = traits_type::to_int_type(*this->gptr()); +13943: } +13943: else if (__got_eof) +13943: { +13943: +13943: +13943: +13943: _M_set_buffer(-1); +13943: _M_reading = false; +13943: +13943: +13943: if (__r == codecvt_base::partial) +13943: __throw_ios_failure(("basic_filebuf::underflow " "incomplete character in file") +13943: ); +13943: } +13943: else if (__r == codecvt_base::error) +13943: __throw_ios_failure(("basic_filebuf::underflow " "invalid byte sequence in file") +13943: ); +13943: else +13943: __throw_ios_failure(("basic_filebuf::underflow " "error reading the file") +13943: , (*__errno_location ())); +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::int_type +13943: basic_filebuf<_CharT, _Traits>:: +13943: pbackfail(int_type __i) +13943: { +13943: int_type __ret = traits_type::eof(); +13943: const bool __testin = _M_mode & ios_base::in; +13943: if (__testin) +13943: { +13943: if (_M_writing) +13943: { +13943: if (overflow() == traits_type::eof()) +13943: return __ret; +13943: _M_set_buffer(-1); +13943: _M_writing = false; +13943: } +13943: +13943: +13943: const bool __testpb = _M_pback_init; +13943: const bool __testeof = traits_type::eq_int_type(__i, __ret); +13943: int_type __tmp; +13943: if (this->eback() < this->gptr()) +13943: { +13943: this->gbump(-1); +13943: __tmp = traits_type::to_int_type(*this->gptr()); +13943: } +13943: else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1))) +13943: { +13943: __tmp = this->underflow(); +13943: if (traits_type::eq_int_type(__tmp, __ret)) +13943: return __ret; +13943: } +13943: else +13943: { +13943: +13943: +13943: +13943: +13943: +13943: return __ret; +13943: } +13943: +13943: +13943: +13943: if (!__testeof && traits_type::eq_int_type(__i, __tmp)) +13943: __ret = __i; +13943: else if (__testeof) +13943: __ret = traits_type::not_eof(__i); +13943: else if (!__testpb) +13943: { +13943: _M_create_pback(); +13943: _M_reading = true; +13943: *this->gptr() = traits_type::to_char_type(__i); +13943: __ret = __i; +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::int_type +13943: basic_filebuf<_CharT, _Traits>:: +13943: overflow(int_type __c) +13943: { +13943: int_type __ret = traits_type::eof(); +13943: const bool __testeof = traits_type::eq_int_type(__c, __ret); +13943: const bool __testout = (_M_mode & ios_base::out +13943: || _M_mode & ios_base::app); +13943: if (__testout) +13943: { +13943: if (_M_reading) +13943: { +13943: _M_destroy_pback(); +13943: const int __gptr_off = _M_get_ext_pos(_M_state_last); +13943: if (_M_seek(__gptr_off, ios_base::cur, _M_state_last) +13943: == pos_type(off_type(-1))) +13943: return __ret; +13943: } +13943: if (this->pbase() < this->pptr()) +13943: { +13943: +13943: if (!__testeof) +13943: { +13943: *this->pptr() = traits_type::to_char_type(__c); +13943: this->pbump(1); +13943: } +13943: +13943: +13943: +13943: if (_M_convert_to_external(this->pbase(), +13943: this->pptr() - this->pbase())) +13943: { +13943: _M_set_buffer(0); +13943: __ret = traits_type::not_eof(__c); +13943: } +13943: } +13943: else if (_M_buf_size > 1) +13943: { +13943: +13943: +13943: +13943: _M_set_buffer(0); +13943: _M_writing = true; +13943: if (!__testeof) +13943: { +13943: *this->pptr() = traits_type::to_char_type(__c); +13943: this->pbump(1); +13943: } +13943: __ret = traits_type::not_eof(__c); +13943: } +13943: else +13943: { +13943: +13943: char_type __conv = traits_type::to_char_type(__c); +13943: if (__testeof || _M_convert_to_external(&__conv, 1)) +13943: { +13943: _M_writing = true; +13943: __ret = traits_type::not_eof(__c); +13943: } +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: bool +13943: basic_filebuf<_CharT, _Traits>:: +13943: _M_convert_to_external(_CharT* __ibuf, streamsize __ilen) +13943: { +13943: +13943: streamsize __elen; +13943: streamsize __plen; +13943: if (__check_facet(_M_codecvt).always_noconv()) +13943: { +13943: __elen = _M_file.xsputn(reinterpret_cast(__ibuf), __ilen); +13943: __plen = __ilen; +13943: } +13943: else +13943: { +13943: +13943: +13943: streamsize __blen = __ilen * _M_codecvt->max_length(); +13943: char* __buf = static_cast(__builtin_alloca(__blen)); +13943: +13943: char* __bend; +13943: const char_type* __iend; +13943: codecvt_base::result __r; +13943: __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen, +13943: __iend, __buf, __buf + __blen, __bend); +13943: +13943: if (__r == codecvt_base::ok || __r == codecvt_base::partial) +13943: __blen = __bend - __buf; +13943: else if (__r == codecvt_base::noconv) +13943: { +13943: +13943: __buf = reinterpret_cast(__ibuf); +13943: __blen = __ilen; +13943: } +13943: else +13943: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") +13943: ); +13943: +13943: __elen = _M_file.xsputn(__buf, __blen); +13943: __plen = __blen; +13943: +13943: +13943: if (__r == codecvt_base::partial && __elen == __plen) +13943: { +13943: const char_type* __iresume = __iend; +13943: streamsize __rlen = this->pptr() - __iend; +13943: __r = _M_codecvt->out(_M_state_cur, __iresume, +13943: __iresume + __rlen, __iend, __buf, +13943: __buf + __blen, __bend); +13943: if (__r != codecvt_base::error) +13943: { +13943: __rlen = __bend - __buf; +13943: __elen = _M_file.xsputn(__buf, __rlen); +13943: __plen = __rlen; +13943: } +13943: else +13943: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") +13943: ); +13943: } +13943: } +13943: return __elen == __plen; +13943: } +13943: +13943: template +13943: streamsize +13943: basic_filebuf<_CharT, _Traits>:: +13943: xsgetn(_CharT* __s, streamsize __n) +13943: { +13943: +13943: streamsize __ret = 0; +13943: if (_M_pback_init) +13943: { +13943: if (__n > 0 && this->gptr() == this->eback()) +13943: { +13943: *__s++ = *this->gptr(); +13943: this->gbump(1); +13943: __ret = 1; +13943: --__n; +13943: } +13943: _M_destroy_pback(); +13943: } +13943: else if (_M_writing) +13943: { +13943: if (overflow() == traits_type::eof()) +13943: return __ret; +13943: _M_set_buffer(-1); +13943: _M_writing = false; +13943: } +13943: +13943: +13943: +13943: +13943: const bool __testin = _M_mode & ios_base::in; +13943: const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; +13943: +13943: if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() +13943: && __testin) +13943: { +13943: +13943: const streamsize __avail = this->egptr() - this->gptr(); +13943: if (__avail != 0) +13943: { +13943: traits_type::copy(__s, this->gptr(), __avail); +13943: __s += __avail; +13943: this->setg(this->eback(), this->gptr() + __avail, this->egptr()); +13943: __ret += __avail; +13943: __n -= __avail; +13943: } +13943: +13943: +13943: +13943: streamsize __len; +13943: for (;;) +13943: { +13943: __len = _M_file.xsgetn(reinterpret_cast(__s), __n); +13943: if (__len == -1) +13943: __throw_ios_failure(("basic_filebuf::xsgetn " "error reading the file") +13943: , (*__errno_location ())); +13943: if (__len == 0) +13943: break; +13943: +13943: __n -= __len; +13943: __ret += __len; +13943: if (__n == 0) +13943: break; +13943: +13943: __s += __len; +13943: } +13943: +13943: if (__n == 0) +13943: { +13943: +13943: _M_reading = true; +13943: } +13943: else if (__len == 0) +13943: { +13943: +13943: +13943: +13943: _M_set_buffer(-1); +13943: _M_reading = false; +13943: } +13943: } +13943: else +13943: __ret += __streambuf_type::xsgetn(__s, __n); +13943: +13943: return __ret; +13943: } +13943: +13943: template +13943: streamsize +13943: basic_filebuf<_CharT, _Traits>:: +13943: xsputn(const _CharT* __s, streamsize __n) +13943: { +13943: streamsize __ret = 0; +13943: +13943: +13943: +13943: const bool __testout = (_M_mode & ios_base::out +13943: || _M_mode & ios_base::app); +13943: if (__check_facet(_M_codecvt).always_noconv() +13943: && __testout && !_M_reading) +13943: { +13943: streamsize __bufavail = this->epptr() - this->pptr(); +13943: +13943: +13943: if (!_M_writing && _M_buf_size > 1) +13943: __bufavail = _M_buf_size - 1; +13943: +13943: if (__n >= __bufavail) +13943: { +13943: const streamsize __buffill = this->pptr() - this->pbase(); +13943: const char* __buf = reinterpret_cast(this->pbase()); +13943: __ret = _M_file.xsputn_2(__buf, __buffill, +13943: reinterpret_cast(__s), +13943: __n); +13943: if (__ret == __buffill + __n) +13943: { +13943: _M_set_buffer(0); +13943: _M_writing = true; +13943: } +13943: if (__ret > __buffill) +13943: __ret -= __buffill; +13943: else +13943: __ret = 0; +13943: } +13943: else +13943: __ret = __streambuf_type::xsputn(__s, __n); +13943: } +13943: else +13943: __ret = __streambuf_type::xsputn(__s, __n); +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::__streambuf_type* +13943: basic_filebuf<_CharT, _Traits>:: +13943: setbuf(char_type* __s, streamsize __n) +13943: { +13943: if (!this->is_open()) +13943: { +13943: if (__s == 0 && __n == 0) +13943: _M_buf_size = 1; +13943: else if (__s && __n > 0) +13943: { +13943: # 816 "/usr/include/c++/14/bits/fstream.tcc" 3 +13943: _M_buf = __s; +13943: _M_buf_size = __n; +13943: } +13943: } +13943: return this; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::pos_type +13943: basic_filebuf<_CharT, _Traits>:: +13943: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode) +13943: { +13943: int __width = 0; +13943: if (_M_codecvt) +13943: __width = _M_codecvt->encoding(); +13943: if (__width < 0) +13943: __width = 0; +13943: +13943: pos_type __ret = pos_type(off_type(-1)); +13943: const bool __testfail = __off != 0 && __width <= 0; +13943: if (this->is_open() && !__testfail) +13943: { +13943: +13943: +13943: +13943: +13943: bool __no_movement = __way == ios_base::cur && __off == 0 +13943: && (!_M_writing || _M_codecvt->always_noconv()); +13943: +13943: +13943: if (!__no_movement) +13943: _M_destroy_pback(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: __state_type __state = _M_state_beg; +13943: off_type __computed_off = __off * __width; +13943: if (_M_reading && __way == ios_base::cur) +13943: { +13943: __state = _M_state_last; +13943: __computed_off += _M_get_ext_pos(__state); +13943: } +13943: if (!__no_movement) +13943: __ret = _M_seek(__computed_off, __way, __state); +13943: else +13943: { +13943: if (_M_writing) +13943: __computed_off = this->pptr() - this->pbase(); +13943: +13943: off_type __file_off = _M_file.seekoff(0, ios_base::cur); +13943: if (__file_off != off_type(-1)) +13943: { +13943: __ret = __file_off + __computed_off; +13943: __ret.state(__state); +13943: } +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::pos_type +13943: basic_filebuf<_CharT, _Traits>:: +13943: seekpos(pos_type __pos, ios_base::openmode) +13943: { +13943: pos_type __ret = pos_type(off_type(-1)); +13943: if (this->is_open()) +13943: { +13943: +13943: _M_destroy_pback(); +13943: __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state()); +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: typename basic_filebuf<_CharT, _Traits>::pos_type +13943: basic_filebuf<_CharT, _Traits>:: +13943: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state) +13943: { +13943: pos_type __ret = pos_type(off_type(-1)); +13943: if (_M_terminate_output()) +13943: { +13943: off_type __file_off = _M_file.seekoff(__off, __way); +13943: if (__file_off != off_type(-1)) +13943: { +13943: _M_reading = false; +13943: _M_writing = false; +13943: _M_ext_next = _M_ext_end = _M_ext_buf; +13943: _M_set_buffer(-1); +13943: _M_state_cur = __state; +13943: __ret = __file_off; +13943: __ret.state(_M_state_cur); +13943: } +13943: } +13943: return __ret; +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: int basic_filebuf<_CharT, _Traits>:: +13943: _M_get_ext_pos(__state_type& __state) +13943: { +13943: if (_M_codecvt->always_noconv()) +13943: return this->gptr() - this->egptr(); +13943: else +13943: { +13943: +13943: +13943: +13943: const int __gptr_off = +13943: _M_codecvt->length(__state, _M_ext_buf, _M_ext_next, +13943: this->gptr() - this->eback()); +13943: return _M_ext_buf + __gptr_off - _M_ext_end; +13943: } +13943: } +13943: +13943: template +13943: bool +13943: basic_filebuf<_CharT, _Traits>:: +13943: _M_terminate_output() +13943: { +13943: +13943: bool __testvalid = true; +13943: if (this->pbase() < this->pptr()) +13943: { +13943: const int_type __tmp = this->overflow(); +13943: if (traits_type::eq_int_type(__tmp, traits_type::eof())) +13943: __testvalid = false; +13943: } +13943: +13943: +13943: if (_M_writing && !__check_facet(_M_codecvt).always_noconv() +13943: && __testvalid) +13943: { +13943: +13943: +13943: +13943: const size_t __blen = 128; +13943: char __buf[__blen]; +13943: codecvt_base::result __r; +13943: streamsize __ilen = 0; +13943: +13943: do +13943: { +13943: char* __next; +13943: __r = _M_codecvt->unshift(_M_state_cur, __buf, +13943: __buf + __blen, __next); +13943: if (__r == codecvt_base::error) +13943: __testvalid = false; +13943: else if (__r == codecvt_base::ok || +13943: __r == codecvt_base::partial) +13943: { +13943: __ilen = __next - __buf; +13943: if (__ilen > 0) +13943: { +13943: const streamsize __elen = _M_file.xsputn(__buf, __ilen); +13943: if (__elen != __ilen) +13943: __testvalid = false; +13943: } +13943: } +13943: } +13943: while (__r == codecvt_base::partial && __ilen > 0 && __testvalid); +13943: +13943: if (__testvalid) +13943: { +13943: +13943: +13943: +13943: +13943: const int_type __tmp = this->overflow(); +13943: if (traits_type::eq_int_type(__tmp, traits_type::eof())) +13943: __testvalid = false; +13943: } +13943: } +13943: return __testvalid; +13943: } +13943: +13943: template +13943: int +13943: basic_filebuf<_CharT, _Traits>:: +13943: sync() +13943: { +13943: +13943: +13943: int __ret = 0; +13943: if (this->pbase() < this->pptr()) +13943: { +13943: const int_type __tmp = this->overflow(); +13943: if (traits_type::eq_int_type(__tmp, traits_type::eof())) +13943: __ret = -1; +13943: } +13943: return __ret; +13943: } +13943: +13943: template +13943: void +13943: basic_filebuf<_CharT, _Traits>:: +13943: imbue(const locale& __loc) +13943: { +13943: bool __testvalid = true; +13943: +13943: const __codecvt_type* const _M_codecvt_tmp +13943: = __try_use_facet<__codecvt_type>(__loc); +13943: +13943: if (this->is_open()) +13943: { +13943: +13943: if ((_M_reading || _M_writing) +13943: && __check_facet(_M_codecvt).encoding() == -1) +13943: __testvalid = false; +13943: else +13943: { +13943: if (_M_reading) +13943: { +13943: if (__check_facet(_M_codecvt).always_noconv()) +13943: { +13943: if (_M_codecvt_tmp +13943: && !__check_facet(_M_codecvt_tmp).always_noconv()) +13943: __testvalid = this->seekoff(0, ios_base::cur, _M_mode) +13943: != pos_type(off_type(-1)); +13943: } +13943: else +13943: { +13943: +13943: _M_ext_next = _M_ext_buf +13943: + _M_codecvt->length(_M_state_last, _M_ext_buf, +13943: _M_ext_next, +13943: this->gptr() - this->eback()); +13943: const streamsize __remainder = _M_ext_end - _M_ext_next; +13943: if (__remainder) +13943: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); +13943: +13943: _M_ext_next = _M_ext_buf; +13943: _M_ext_end = _M_ext_buf + __remainder; +13943: _M_set_buffer(-1); +13943: _M_state_last = _M_state_cur = _M_state_beg; +13943: } +13943: } +13943: else if (_M_writing && (__testvalid = _M_terminate_output())) +13943: _M_set_buffer(-1); +13943: } +13943: } +13943: +13943: if (__testvalid) +13943: _M_codecvt = _M_codecvt_tmp; +13943: else +13943: _M_codecvt = 0; +13943: } +13943: +13943: +13943: +13943: +13943: extern template class basic_filebuf; +13943: extern template class basic_ifstream; +13943: extern template class basic_ofstream; +13943: extern template class basic_fstream; +13943: +13943: +13943: extern template class basic_filebuf; +13943: extern template class basic_ifstream; +13943: extern template class basic_ofstream; +13943: extern template class basic_fstream; +13943: +13943: +13943: +13943: +13943: } +13943: # 1361 "/usr/include/c++/14/fstream" 2 3 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" +13943: +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" +13943: namespace rocksdb { +13943: class InstrumentedCondVar; +13943: +13943: +13943: +13943: class InstrumentedMutex { +13943: public: +13943: explicit InstrumentedMutex(bool adaptive = false) +13943: : mutex_(adaptive), stats_(nullptr), clock_(nullptr), stats_code_(0) {} +13943: +13943: explicit InstrumentedMutex(SystemClock* clock, bool adaptive = false) +13943: : mutex_(adaptive), stats_(nullptr), clock_(clock), stats_code_(0) {} +13943: +13943: InstrumentedMutex(Statistics* stats, SystemClock* clock, int stats_code, +13943: bool adaptive = false) +13943: : mutex_(adaptive), +13943: stats_(stats), +13943: clock_(clock), +13943: stats_code_(stats_code) {} +13943: # 45 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" +13943: void Lock(); +13943: +13943: void Unlock() { mutex_.Unlock(); } +13943: +13943: void AssertHeld() const { mutex_.AssertHeld(); } +13943: +13943: private: +13943: void LockInternal(); +13943: friend class InstrumentedCondVar; +13943: port::Mutex mutex_; +13943: Statistics* stats_; +13943: SystemClock* clock_; +13943: int stats_code_; +13943: +13943: +13943: +13943: }; +13943: +13943: class alignas(64U) CacheAlignedInstrumentedMutex +13943: : public InstrumentedMutex { +13943: using InstrumentedMutex::InstrumentedMutex; +13943: }; +13943: static_assert(alignof(CacheAlignedInstrumentedMutex) != 64U || +13943: sizeof(CacheAlignedInstrumentedMutex) % 64U == 0); +13943: +13943: +13943: class InstrumentedMutexLock { +13943: public: +13943: explicit InstrumentedMutexLock(InstrumentedMutex* mutex) : mutex_(mutex) { +13943: mutex_->Lock(); +13943: } +13943: +13943: ~InstrumentedMutexLock() { mutex_->Unlock(); } +13943: +13943: private: +13943: InstrumentedMutex* const mutex_; +13943: InstrumentedMutexLock(const InstrumentedMutexLock&) = delete; +13943: void operator=(const InstrumentedMutexLock&) = delete; +13943: }; +13943: +13943: +13943: +13943: class InstrumentedMutexUnlock { +13943: public: +13943: explicit InstrumentedMutexUnlock(InstrumentedMutex* mutex) : mutex_(mutex) { +13943: mutex_->Unlock(); +13943: } +13943: +13943: ~InstrumentedMutexUnlock() { mutex_->Lock(); } +13943: +13943: private: +13943: InstrumentedMutex* const mutex_; +13943: InstrumentedMutexUnlock(const InstrumentedMutexUnlock&) = delete; +13943: void operator=(const InstrumentedMutexUnlock&) = delete; +13943: }; +13943: +13943: class InstrumentedCondVar { +13943: public: +13943: explicit InstrumentedCondVar(InstrumentedMutex* instrumented_mutex) +13943: : cond_(&(instrumented_mutex->mutex_)), +13943: stats_(instrumented_mutex->stats_), +13943: clock_(instrumented_mutex->clock_), +13943: stats_code_(instrumented_mutex->stats_code_) {} +13943: +13943: void Wait(); +13943: +13943: bool TimedWait(uint64_t abs_time_us); +13943: +13943: void Signal() { cond_.Signal(); } +13943: +13943: void SignalAll() { cond_.SignalAll(); } +13943: +13943: private: +13943: void WaitInternal(); +13943: bool TimedWaitInternal(uint64_t abs_time_us); +13943: port::CondVar cond_; +13943: Statistics* stats_; +13943: SystemClock* clock_; +13943: int stats_code_; +13943: }; +13943: +13943: } +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 2 +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/replayer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class TraceRecord; +13943: class TraceRecordResult; +13943: +13943: struct ReplayOptions { +13943: +13943: +13943: uint32_t num_threads; +13943: +13943: +13943: +13943: +13943: +13943: +13943: double fast_forward; +13943: +13943: ReplayOptions() : num_threads(1), fast_forward(1.0) {} +13943: +13943: ReplayOptions(uint32_t num_of_threads, double fast_forward_ratio) +13943: : num_threads(num_of_threads), fast_forward(fast_forward_ratio) {} +13943: }; +13943: +13943: +13943: +13943: +13943: class Replayer { +13943: public: +13943: virtual ~Replayer() = default; +13943: +13943: +13943: +13943: virtual Status Prepare() = 0; +13943: +13943: +13943: virtual uint64_t GetHeaderTimestamp() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Next(std::unique_ptr* record) = 0; +13943: # 71 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/replayer.h" +13943: virtual Status Execute(const std::unique_ptr& record, +13943: std::unique_ptr* result) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status Replay( +13943: const ReplayOptions& options, +13943: const std::function&&)>& +13943: result_callback) = 0; +13943: }; +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: class ColumnFamilyHandle; +13943: class ColumnFamilyData; +13943: class DB; +13943: class DBImpl; +13943: class Env; +13943: class Slice; +13943: class SystemClock; +13943: class TraceReader; +13943: class TraceWriter; +13943: class WriteBatch; +13943: +13943: struct ReadOptions; +13943: struct TraceOptions; +13943: struct WriteOptions; +13943: +13943: extern const std::string kTraceMagic; +13943: const unsigned int kTraceTimestampSize = 8; +13943: const unsigned int kTraceTypeSize = 1; +13943: const unsigned int kTracePayloadLengthSize = 4; +13943: const unsigned int kTraceMetadataSize = +13943: kTraceTimestampSize + kTraceTypeSize + kTracePayloadLengthSize; +13943: +13943: static const int kTraceFileMajorVersion = 0; +13943: static const int kTraceFileMinorVersion = 2; +13943: +13943: +13943: struct Trace { +13943: uint64_t ts; +13943: TraceType type; +13943: +13943: +13943: +13943: +13943: uint64_t payload_map = 0; +13943: +13943: +13943: std::string payload; +13943: +13943: void reset() { +13943: ts = 0; +13943: type = kTraceMax; +13943: payload_map = 0; +13943: payload.clear(); +13943: } +13943: }; +13943: +13943: enum TracePayloadType : char { +13943: +13943: +13943: kEmptyPayload = 0, +13943: kWriteBatchData = 1, +13943: kGetCFID = 2, +13943: kGetKey = 3, +13943: kIterCFID = 4, +13943: kIterKey = 5, +13943: kIterLowerBound = 6, +13943: kIterUpperBound = 7, +13943: kMultiGetSize = 8, +13943: kMultiGetCFIDs = 9, +13943: kMultiGetKeys = 10, +13943: }; +13943: +13943: class TracerHelper { +13943: public: +13943: +13943: static Status ParseVersionStr(std::string& v_string, int* v_num); +13943: +13943: +13943: static Status ParseTraceHeader(const Trace& header, int* trace_version, +13943: int* db_version); +13943: +13943: +13943: static void EncodeTrace(const Trace& trace, std::string* encoded_trace); +13943: +13943: +13943: static Status DecodeTrace(const std::string& encoded_trace, Trace* trace); +13943: +13943: +13943: static Status DecodeHeader(const std::string& encoded_trace, Trace* header); +13943: +13943: +13943: static bool SetPayloadMap(uint64_t& payload_map, +13943: const TracePayloadType payload_type); +13943: +13943: +13943: +13943: +13943: +13943: static Status DecodeTraceRecord(Trace* trace, int trace_file_version, +13943: std::unique_ptr* record); +13943: }; +13943: +13943: +13943: +13943: +13943: class Tracer { +13943: public: +13943: Tracer(SystemClock* clock, const TraceOptions& trace_options, +13943: std::unique_ptr&& trace_writer); +13943: ~Tracer(); +13943: +13943: +13943: Status Write(WriteBatch* write_batch); +13943: +13943: +13943: Status Get(ColumnFamilyHandle* cfname, const Slice& key); +13943: +13943: +13943: Status IteratorSeek(const uint32_t& cf_id, const Slice& key, +13943: const Slice& lower_bound, const Slice upper_bound); +13943: Status IteratorSeekForPrev(const uint32_t& cf_id, const Slice& key, +13943: const Slice& lower_bound, const Slice upper_bound); +13943: +13943: +13943: +13943: Status MultiGet(const size_t num_keys, ColumnFamilyHandle** column_families, +13943: const Slice* keys); +13943: +13943: Status MultiGet(const size_t num_keys, ColumnFamilyHandle* column_family, +13943: const Slice* keys); +13943: +13943: Status MultiGet(const std::vector& column_family, +13943: const std::vector& keys); +13943: +13943: +13943: +13943: bool IsTraceFileOverMax(); +13943: +13943: +13943: +13943: bool IsWriteOrderPreserved() { return trace_options_.preserve_write_order; } +13943: +13943: +13943: Status Close(); +13943: +13943: private: +13943: +13943: +13943: +13943: Status WriteHeader(); +13943: +13943: +13943: Status WriteFooter(); +13943: +13943: +13943: +13943: Status WriteTrace(const Trace& trace); +13943: +13943: +13943: +13943: bool ShouldSkipTrace(const TraceType& type); +13943: +13943: SystemClock* clock_; +13943: TraceOptions trace_options_; +13943: std::unique_ptr trace_writer_; +13943: uint64_t trace_request_count_; +13943: Status trace_write_status_; +13943: }; +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 2 +13943: +13943: namespace rocksdb { +13943: class SystemClock; +13943: class TraceReader; +13943: class TraceWriter; +13943: # 32 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" +13943: enum IOTraceOp : char { +13943: +13943: +13943: kIOFileSize = 0, +13943: kIOLen = 1, +13943: kIOOffset = 2, +13943: }; +13943: +13943: struct IOTraceRecord { +13943: +13943: uint64_t access_timestamp = 0; +13943: TraceType trace_type = TraceType::kTraceMax; +13943: +13943: +13943: +13943: uint64_t io_op_data = 0; +13943: std::string file_operation; +13943: uint64_t latency = 0; +13943: std::string io_status; +13943: +13943: std::string file_name; +13943: +13943: +13943: uint64_t len = 0; +13943: uint64_t offset = 0; +13943: uint64_t file_size = 0; +13943: +13943: +13943: uint64_t trace_data = 0; +13943: std::string request_id; +13943: +13943: IOTraceRecord() {} +13943: +13943: IOTraceRecord(const uint64_t& _access_timestamp, const TraceType& _trace_type, +13943: const uint64_t& _io_op_data, const std::string& _file_operation, +13943: const uint64_t& _latency, const std::string& _io_status, +13943: const std::string& _file_name, const uint64_t& _file_size = 0) +13943: : access_timestamp(_access_timestamp), +13943: trace_type(_trace_type), +13943: io_op_data(_io_op_data), +13943: file_operation(_file_operation), +13943: latency(_latency), +13943: io_status(_io_status), +13943: file_name(_file_name), +13943: file_size(_file_size) {} +13943: +13943: IOTraceRecord(const uint64_t& _access_timestamp, const TraceType& _trace_type, +13943: const uint64_t& _io_op_data, const std::string& _file_operation, +13943: const uint64_t& _latency, const std::string& _io_status, +13943: const std::string& _file_name, const uint64_t& _len, +13943: const uint64_t& _offset) +13943: : access_timestamp(_access_timestamp), +13943: trace_type(_trace_type), +13943: io_op_data(_io_op_data), +13943: file_operation(_file_operation), +13943: latency(_latency), +13943: io_status(_io_status), +13943: file_name(_file_name), +13943: len(_len), +13943: offset(_offset) {} +13943: }; +13943: +13943: struct IOTraceHeader { +13943: uint64_t start_time; +13943: uint32_t rocksdb_major_version; +13943: uint32_t rocksdb_minor_version; +13943: }; +13943: +13943: +13943: +13943: class IOTraceWriter { +13943: public: +13943: IOTraceWriter(SystemClock* clock, const TraceOptions& trace_options, +13943: std::unique_ptr&& trace_writer); +13943: ~IOTraceWriter() = default; +13943: +13943: IOTraceWriter(const IOTraceWriter&) = delete; +13943: IOTraceWriter& operator=(const IOTraceWriter&) = delete; +13943: IOTraceWriter(IOTraceWriter&&) = delete; +13943: IOTraceWriter& operator=(IOTraceWriter&&) = delete; +13943: +13943: Status WriteIOOp(const IOTraceRecord& record, IODebugContext* dbg); +13943: +13943: +13943: +13943: Status WriteHeader(); +13943: +13943: private: +13943: SystemClock* clock_; +13943: TraceOptions trace_options_; +13943: std::unique_ptr trace_writer_; +13943: }; +13943: +13943: +13943: class IOTraceReader { +13943: public: +13943: explicit IOTraceReader(std::unique_ptr&& reader); +13943: ~IOTraceReader() = default; +13943: +13943: IOTraceReader(const IOTraceReader&) = delete; +13943: IOTraceReader& operator=(const IOTraceReader&) = delete; +13943: IOTraceReader(IOTraceReader&&) = delete; +13943: IOTraceReader& operator=(IOTraceReader&&) = delete; +13943: +13943: Status ReadHeader(IOTraceHeader* header); +13943: +13943: Status ReadIOOp(IOTraceRecord* record); +13943: +13943: private: +13943: std::unique_ptr trace_reader_; +13943: }; +13943: +13943: +13943: +13943: class IOTracer { +13943: public: +13943: IOTracer(); +13943: ~IOTracer(); +13943: +13943: IOTracer(const IOTracer&) = delete; +13943: IOTracer& operator=(const IOTracer&) = delete; +13943: IOTracer(IOTracer&&) = delete; +13943: IOTracer& operator=(IOTracer&&) = delete; +13943: # 163 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" +13943: Status +13943: StartIOTrace(SystemClock* clock, const TraceOptions& trace_options, +13943: std::unique_ptr&& trace_writer); +13943: +13943: +13943: void EndIOTrace(); +13943: +13943: bool is_tracing_enabled() const { return tracing_enabled; } +13943: +13943: void WriteIOOp(const IOTraceRecord& record, IODebugContext* dbg); +13943: +13943: private: +13943: TraceOptions trace_options_; +13943: +13943: InstrumentedMutex trace_writer_mutex_; +13943: std::atomic writer_; +13943: +13943: +13943: +13943: bool tracing_enabled; +13943: }; +13943: +13943: } +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FileSystemTracingWrapper : public FileSystemWrapper { +13943: public: +13943: FileSystemTracingWrapper(const std::shared_ptr& t, +13943: const std::shared_ptr& io_tracer) +13943: : FileSystemWrapper(t), +13943: io_tracer_(io_tracer), +13943: clock_(SystemClock::Default().get()) {} +13943: +13943: ~FileSystemTracingWrapper() override {} +13943: +13943: static const char* kClassName() { return "FileSystemTracing"; } +13943: const char* Name() const override { return kClassName(); } +13943: +13943: IOStatus NewSequentialFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus NewRandomAccessFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus NewWritableFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus ReopenWritableFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus ReuseWritableFile(const std::string& fname, +13943: const std::string& old_fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus NewRandomRWFile(const std::string& fname, const FileOptions& options, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus NewDirectory(const std::string& name, const IOOptions& io_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus GetChildren(const std::string& dir, const IOOptions& io_opts, +13943: std::vector* r, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus DeleteFile(const std::string& fname, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus CreateDir(const std::string& dirname, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus CreateDirIfMissing(const std::string& dirname, +13943: const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus DeleteDir(const std::string& dirname, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus GetFileSize(const std::string& fname, const IOOptions& options, +13943: uint64_t* file_size, IODebugContext* dbg) override; +13943: +13943: IOStatus Truncate(const std::string& fname, size_t size, +13943: const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: SystemClock* clock_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FileSystemPtr { +13943: public: +13943: FileSystemPtr(std::shared_ptr fs, +13943: const std::shared_ptr& io_tracer) +13943: : fs_(fs), io_tracer_(io_tracer) { +13943: fs_tracer_ = std::make_shared(fs_, io_tracer_); +13943: } +13943: +13943: std::shared_ptr operator->() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return fs_tracer_; +13943: } else { +13943: return fs_; +13943: } +13943: } +13943: +13943: +13943: FileSystem* get() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return fs_tracer_.get(); +13943: } else { +13943: return fs_.get(); +13943: } +13943: } +13943: +13943: private: +13943: std::shared_ptr fs_; +13943: std::shared_ptr io_tracer_; +13943: std::shared_ptr fs_tracer_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSSequentialFileTracingWrapper : public FSSequentialFileOwnerWrapper { +13943: public: +13943: FSSequentialFileTracingWrapper(std::unique_ptr&& t, +13943: std::shared_ptr io_tracer, +13943: const std::string& file_name) +13943: : FSSequentialFileOwnerWrapper(std::move(t)), +13943: io_tracer_(io_tracer), +13943: clock_(SystemClock::Default().get()), +13943: file_name_(file_name) {} +13943: +13943: ~FSSequentialFileTracingWrapper() override {} +13943: +13943: IOStatus Read(size_t n, const IOOptions& options, Slice* result, +13943: char* scratch, IODebugContext* dbg) override; +13943: +13943: IOStatus InvalidateCache(size_t offset, size_t length) override; +13943: +13943: IOStatus PositionedRead(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) override; +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: SystemClock* clock_; +13943: std::string file_name_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSSequentialFilePtr { +13943: public: +13943: FSSequentialFilePtr() = delete; +13943: FSSequentialFilePtr(std::unique_ptr&& fs, +13943: const std::shared_ptr& io_tracer, +13943: const std::string& file_name) +13943: : io_tracer_(io_tracer), +13943: fs_tracer_(std::move(fs), io_tracer_, +13943: file_name.substr(file_name.find_last_of("/\\") + +13943: 1) ) {} +13943: +13943: FSSequentialFile* operator->() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return const_cast(&fs_tracer_); +13943: } else { +13943: return fs_tracer_.target(); +13943: } +13943: } +13943: +13943: FSSequentialFile* get() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return const_cast(&fs_tracer_); +13943: } else { +13943: return fs_tracer_.target(); +13943: } +13943: } +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: FSSequentialFileTracingWrapper fs_tracer_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSRandomAccessFileTracingWrapper : public FSRandomAccessFileOwnerWrapper { +13943: public: +13943: FSRandomAccessFileTracingWrapper(std::unique_ptr&& t, +13943: std::shared_ptr io_tracer, +13943: const std::string& file_name) +13943: : FSRandomAccessFileOwnerWrapper(std::move(t)), +13943: io_tracer_(io_tracer), +13943: clock_(SystemClock::Default().get()), +13943: file_name_(file_name) {} +13943: +13943: ~FSRandomAccessFileTracingWrapper() override {} +13943: +13943: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const override; +13943: +13943: IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +13943: const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus Prefetch(uint64_t offset, size_t n, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus InvalidateCache(size_t offset, size_t length) override; +13943: +13943: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +13943: std::function cb, +13943: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +13943: IODebugContext* dbg) override; +13943: +13943: void ReadAsyncCallback(FSReadRequest& req, void* cb_arg); +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: SystemClock* clock_; +13943: +13943: std::string file_name_; +13943: +13943: struct ReadAsyncCallbackInfo { +13943: uint64_t start_time_; +13943: std::function cb_; +13943: void* cb_arg_; +13943: std::string file_op_; +13943: }; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSRandomAccessFilePtr { +13943: public: +13943: FSRandomAccessFilePtr(std::unique_ptr&& fs, +13943: const std::shared_ptr& io_tracer, +13943: const std::string& file_name) +13943: : io_tracer_(io_tracer), +13943: fs_tracer_(std::move(fs), io_tracer_, +13943: file_name.substr(file_name.find_last_of("/\\") + +13943: 1) ) {} +13943: +13943: FSRandomAccessFile* operator->() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return const_cast(&fs_tracer_); +13943: } else { +13943: return fs_tracer_.target(); +13943: } +13943: } +13943: +13943: FSRandomAccessFile* get() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return const_cast(&fs_tracer_); +13943: } else { +13943: return fs_tracer_.target(); +13943: } +13943: } +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: FSRandomAccessFileTracingWrapper fs_tracer_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSWritableFileTracingWrapper : public FSWritableFileOwnerWrapper { +13943: public: +13943: FSWritableFileTracingWrapper(std::unique_ptr&& t, +13943: std::shared_ptr io_tracer, +13943: const std::string& file_name) +13943: : FSWritableFileOwnerWrapper(std::move(t)), +13943: io_tracer_(io_tracer), +13943: clock_(SystemClock::Default().get()), +13943: file_name_(file_name) {} +13943: +13943: ~FSWritableFileTracingWrapper() override {} +13943: +13943: IOStatus Append(const Slice& data, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: IOStatus Append(const Slice& data, const IOOptions& options, +13943: const DataVerificationInfo& , +13943: IODebugContext* dbg) override { +13943: return Append(data, options, dbg); +13943: } +13943: +13943: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +13943: const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +13943: const IOOptions& options, +13943: const DataVerificationInfo& , +13943: IODebugContext* dbg) override { +13943: return PositionedAppend(data, offset, options, dbg); +13943: } +13943: +13943: IOStatus Truncate(uint64_t size, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: uint64_t GetFileSize(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus InvalidateCache(size_t offset, size_t length) override; +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: SystemClock* clock_; +13943: +13943: std::string file_name_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSWritableFilePtr { +13943: public: +13943: FSWritableFilePtr(std::unique_ptr&& fs, +13943: const std::shared_ptr& io_tracer, +13943: const std::string& file_name) +13943: : io_tracer_(io_tracer) { +13943: fs_tracer_.reset(new FSWritableFileTracingWrapper( +13943: std::move(fs), io_tracer_, +13943: file_name.substr(file_name.find_last_of("/\\") + +13943: 1) )); +13943: } +13943: +13943: FSWritableFile* operator->() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return fs_tracer_.get(); +13943: } else { +13943: return fs_tracer_->target(); +13943: } +13943: } +13943: +13943: FSWritableFile* get() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return fs_tracer_.get(); +13943: } else if (fs_tracer_) { +13943: return fs_tracer_->target(); +13943: } else { +13943: return nullptr; +13943: } +13943: } +13943: +13943: void reset() { +13943: fs_tracer_.reset(); +13943: io_tracer_ = nullptr; +13943: } +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: std::unique_ptr fs_tracer_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSRandomRWFileTracingWrapper : public FSRandomRWFileOwnerWrapper { +13943: public: +13943: FSRandomRWFileTracingWrapper(std::unique_ptr&& t, +13943: std::shared_ptr io_tracer, +13943: const std::string& file_name) +13943: : FSRandomRWFileOwnerWrapper(std::move(t)), +13943: io_tracer_(io_tracer), +13943: clock_(SystemClock::Default().get()), +13943: file_name_(file_name) {} +13943: +13943: ~FSRandomRWFileTracingWrapper() override {} +13943: +13943: IOStatus Write(uint64_t offset, const Slice& data, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const override; +13943: +13943: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: SystemClock* clock_; +13943: +13943: std::string file_name_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class FSRandomRWFilePtr { +13943: public: +13943: FSRandomRWFilePtr(std::unique_ptr&& fs, +13943: std::shared_ptr io_tracer, +13943: const std::string& file_name) +13943: : io_tracer_(io_tracer), +13943: fs_tracer_(std::move(fs), io_tracer_, +13943: file_name.substr(file_name.find_last_of("/\\") + +13943: 1) ) {} +13943: +13943: FSRandomRWFile* operator->() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return const_cast(&fs_tracer_); +13943: } else { +13943: return fs_tracer_.target(); +13943: } +13943: } +13943: +13943: FSRandomRWFile* get() const { +13943: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +13943: return const_cast(&fs_tracer_); +13943: } else { +13943: return fs_tracer_.target(); +13943: } +13943: } +13943: +13943: private: +13943: std::shared_ptr io_tracer_; +13943: FSRandomRWFileTracingWrapper fs_tracer_; +13943: }; +13943: +13943: } +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 2 +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: class RateLimiter { +13943: public: +13943: enum class OpType { +13943: kRead, +13943: kWrite, +13943: }; +13943: +13943: enum class Mode { +13943: kReadsOnly = 0, +13943: kWritesOnly = 1, +13943: kAllIo = 2, +13943: }; +13943: +13943: +13943: explicit RateLimiter(Mode mode = Mode::kWritesOnly) : mode_(mode) {} +13943: +13943: virtual ~RateLimiter() {} +13943: +13943: +13943: +13943: virtual void SetBytesPerSecond(int64_t bytes_per_second) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status SetSingleBurstBytes(int64_t ) { +13943: return Status::NotSupported(); +13943: } +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: virtual void Request(const int64_t , const Env::IOPriority ) { +13943: +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +13943: (static_cast ( +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: false +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: "false" +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: ; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual void Request(const int64_t bytes, const Env::IOPriority pri, +13943: Statistics* ) { +13943: +13943: +13943: Request(bytes, pri); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void Request(const int64_t bytes, const Env::IOPriority pri, +13943: Statistics* stats, OpType op_type) { +13943: if (IsRateLimited(op_type)) { +13943: Request(bytes, pri, stats); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual size_t RequestToken(size_t bytes, size_t alignment, +13943: Env::IOPriority io_priority, Statistics* stats, +13943: RateLimiter::OpType op_type); +13943: +13943: +13943: virtual int64_t GetSingleBurstBytes() const = 0; +13943: +13943: +13943: virtual int64_t GetTotalBytesThrough( +13943: const Env::IOPriority pri = Env::IO_TOTAL) const = 0; +13943: +13943: +13943: virtual int64_t GetTotalRequests( +13943: const Env::IOPriority pri = Env::IO_TOTAL) const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual Status GetTotalPendingRequests( +13943: int64_t* total_pending_requests, +13943: const Env::IOPriority pri = Env::IO_TOTAL) const { +13943: +13943: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +13943: (static_cast ( +13943: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: total_pending_requests != nullptr +13943: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: "total_pending_requests != nullptr" +13943: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: ; +13943: (void)total_pending_requests; +13943: (void)pri; +13943: return Status::NotSupported(); +13943: } +13943: +13943: virtual int64_t GetBytesPerSecond() const = 0; +13943: +13943: virtual bool IsRateLimited(OpType op_type) { +13943: if ((mode_ == RateLimiter::Mode::kWritesOnly && +13943: op_type == RateLimiter::OpType::kRead) || +13943: (mode_ == RateLimiter::Mode::kReadsOnly && +13943: op_type == RateLimiter::OpType::kWrite)) { +13943: return false; +13943: } +13943: return true; +13943: } +13943: +13943: protected: +13943: Mode GetMode() { return mode_; } +13943: +13943: private: +13943: const Mode mode_; +13943: }; +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +13943: RateLimiter* NewGenericRateLimiter( +13943: int64_t rate_bytes_per_sec, int64_t refill_period_us = 100 * 1000, +13943: int32_t fairness = 10, +13943: RateLimiter::Mode mode = RateLimiter::Mode::kWritesOnly, +13943: bool auto_tuned = false, int64_t single_burst_bytes = 0); +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 2 +13943: +13943: +13943: +13943: namespace rocksdb { +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: inline size_t TruncateToPageBoundary(size_t page_size, size_t s) { +13943: s -= (s & (page_size - 1)); +13943: +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: (s % page_size) == 0 +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "(s % page_size) == 0" +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: return s; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: inline size_t Roundup(size_t x, size_t y) { return ((x + y - 1) / y) * y; } +13943: +13943: +13943: +13943: +13943: +13943: inline size_t Rounddown(size_t x, size_t y) { return (x / y) * y; } +13943: # 57 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: class AlignedBuffer { +13943: size_t alignment_; +13943: FSAllocationPtr buf_; +13943: size_t capacity_; +13943: size_t cursize_; +13943: char* bufstart_; +13943: +13943: public: +13943: AlignedBuffer() +13943: : alignment_(), capacity_(0), cursize_(0), bufstart_(nullptr) {} +13943: +13943: AlignedBuffer(AlignedBuffer&& o) noexcept { *this = std::move(o); } +13943: +13943: AlignedBuffer& operator=(AlignedBuffer&& o) noexcept { +13943: alignment_ = std::move(o.alignment_); +13943: buf_ = std::move(o.buf_); +13943: capacity_ = std::move(o.capacity_); +13943: cursize_ = std::move(o.cursize_); +13943: bufstart_ = std::move(o.bufstart_); +13943: return *this; +13943: } +13943: +13943: AlignedBuffer(const AlignedBuffer&) = delete; +13943: +13943: AlignedBuffer& operator=(const AlignedBuffer&) = delete; +13943: +13943: static bool isAligned(const void* ptr, size_t alignment) { +13943: return reinterpret_cast(ptr) % alignment == 0; +13943: } +13943: +13943: static bool isAligned(size_t n, size_t alignment) { +13943: return n % alignment == 0; +13943: } +13943: +13943: size_t Alignment() const { return alignment_; } +13943: +13943: size_t Capacity() const { return capacity_; } +13943: +13943: size_t CurrentSize() const { return cursize_; } +13943: +13943: const char* BufferStart() const { return bufstart_; } +13943: +13943: char* BufferStart() { return bufstart_; } +13943: +13943: void Clear() { cursize_ = 0; } +13943: +13943: FSAllocationPtr Release() { +13943: cursize_ = 0; +13943: capacity_ = 0; +13943: bufstart_ = nullptr; +13943: return std::move(buf_); +13943: } +13943: +13943: void Alignment(size_t alignment) { +13943: +13943: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: alignment > 0 +13943: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "alignment > 0" +13943: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: (alignment & (alignment - 1)) == 0 +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "(alignment & (alignment - 1)) == 0" +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: alignment_ = alignment; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: void SetBuffer(Slice& result, FSAllocationPtr new_buf) { +13943: alignment_ = 1; +13943: capacity_ = result.size(); +13943: cursize_ = result.size(); +13943: buf_ = std::move(new_buf); +13943: +13943: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: buf_.get() != nullptr +13943: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "buf_.get() != nullptr" +13943: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: +13943: +13943: bufstart_ = const_cast(result.data()); +13943: } +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: void AllocateNewBuffer(size_t requested_capacity, bool copy_data = false, +13943: uint64_t copy_offset = 0, size_t copy_len = 0) { +13943: +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: alignment_ > 0 +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "alignment_ > 0" +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: +13943: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: (alignment_ & (alignment_ - 1)) == 0 +13943: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "(alignment_ & (alignment_ - 1)) == 0" +13943: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: +13943: copy_len = copy_len > 0 ? copy_len : cursize_; +13943: if (copy_data && requested_capacity < copy_len) { +13943: +13943: +13943: return; +13943: } +13943: +13943: size_t new_capacity = Roundup(requested_capacity, alignment_); +13943: char* new_buf = new char[new_capacity + alignment_]; +13943: char* new_bufstart = reinterpret_cast( +13943: (reinterpret_cast(new_buf) + (alignment_ - 1)) & +13943: ~static_cast(alignment_ - 1)); +13943: +13943: if (copy_data) { +13943: +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: bufstart_ + copy_offset + copy_len <= bufstart_ + cursize_ +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "bufstart_ + copy_offset + copy_len <= bufstart_ + cursize_" +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: memcpy(new_bufstart, bufstart_ + copy_offset, copy_len); +13943: cursize_ = copy_len; +13943: } else { +13943: cursize_ = 0; +13943: } +13943: +13943: bufstart_ = new_bufstart; +13943: capacity_ = new_capacity; +13943: +13943: +13943: buf_ = std::unique_ptr>( +13943: static_cast(new_buf), +13943: [](void* p) { delete[] static_cast(p); }); +13943: } +13943: # 189 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: size_t Append(const char* src, size_t append_size) { +13943: size_t buffer_remaining = capacity_ - cursize_; +13943: size_t to_copy = std::min(append_size, buffer_remaining); +13943: +13943: if (to_copy > 0) { +13943: memcpy(bufstart_ + cursize_, src, to_copy); +13943: cursize_ += to_copy; +13943: } +13943: return to_copy; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t Read(char* dest, size_t offset, size_t read_size) const { +13943: +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: offset < cursize_ +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "offset < cursize_" +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: +13943: size_t to_read = 0; +13943: if (offset < cursize_) { +13943: to_read = std::min(cursize_ - offset, read_size); +13943: } +13943: if (to_read > 0) { +13943: memcpy(dest, bufstart_ + offset, to_read); +13943: } +13943: return to_read; +13943: } +13943: +13943: +13943: void PadToAlignmentWith(int padding) { +13943: size_t total_size = Roundup(cursize_, alignment_); +13943: size_t pad_size = total_size - cursize_; +13943: +13943: if (pad_size > 0) { +13943: +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: (pad_size + cursize_) <= capacity_ +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "(pad_size + cursize_) <= capacity_" +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: memset(bufstart_ + cursize_, padding, pad_size); +13943: cursize_ += pad_size; +13943: } +13943: } +13943: +13943: void PadWith(size_t pad_size, int padding) { +13943: +13943: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: (static_cast ( +13943: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: (pad_size + cursize_) <= capacity_ +13943: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: "(pad_size + cursize_) <= capacity_" +13943: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +13943: ; +13943: memset(bufstart_ + cursize_, padding, pad_size); +13943: cursize_ += pad_size; +13943: } +13943: +13943: +13943: void RefitTail(size_t tail_offset, size_t tail_size) { +13943: if (tail_size > 0) { +13943: memmove(bufstart_, bufstart_ + tail_offset, tail_size); +13943: } +13943: cursize_ = tail_size; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: char* Destination() { return bufstart_ + cursize_; } +13943: +13943: void Size(size_t cursize) { cursize_ = cursize; } +13943: }; +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 2 +13943: +13943: namespace rocksdb { +13943: class Statistics; +13943: class HistogramImpl; +13943: class SystemClock; +13943: +13943: using AlignedBuf = FSAllocationPtr; +13943: +13943: +13943: FSReadRequest Align(const FSReadRequest& r, size_t alignment); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool TryMerge(FSReadRequest* dest, const FSReadRequest& src); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class RandomAccessFileReader { +13943: private: +13943: void NotifyOnFileReadFinish( +13943: uint64_t offset, size_t length, +13943: const FileOperationInfo::StartTimePoint& start_ts, +13943: const FileOperationInfo::FinishTimePoint& finish_ts, +13943: const Status& status) const { +13943: FileOperationInfo info(FileOperationType::kRead, file_name_, start_ts, +13943: finish_ts, status, file_temperature_); +13943: info.offset = offset; +13943: info.length = length; +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnFileReadFinish(info); +13943: } +13943: info.status.PermitUncheckedError(); +13943: } +13943: +13943: void NotifyOnIOError(const IOStatus& io_status, FileOperationType operation, +13943: const std::string& file_path, size_t length, +13943: uint64_t offset) const { +13943: if (listeners_.empty()) { +13943: return; +13943: } +13943: IOErrorInfo io_error_info(io_status, operation, file_path, length, offset); +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnIOError(io_error_info); +13943: } +13943: io_status.PermitUncheckedError(); +13943: } +13943: +13943: +13943: bool ShouldNotifyListeners() const { return !listeners_.empty(); } +13943: +13943: FSRandomAccessFilePtr file_; +13943: std::string file_name_; +13943: SystemClock* clock_; +13943: Statistics* stats_; +13943: uint32_t hist_type_; +13943: HistogramImpl* file_read_hist_; +13943: RateLimiter* rate_limiter_; +13943: std::vector> listeners_; +13943: const Temperature file_temperature_; +13943: const bool is_last_level_; +13943: +13943: struct ReadAsyncInfo { +13943: ReadAsyncInfo(std::function cb, void* cb_arg, +13943: uint64_t start_time) +13943: : cb_(cb), +13943: cb_arg_(cb_arg), +13943: start_time_(start_time), +13943: user_scratch_(nullptr), +13943: user_aligned_buf_(nullptr), +13943: user_offset_(0), +13943: user_len_(0), +13943: is_aligned_(false) {} +13943: +13943: std::function cb_; +13943: void* cb_arg_; +13943: uint64_t start_time_; +13943: FileOperationInfo::StartTimePoint fs_start_ts_; +13943: +13943: char* user_scratch_; +13943: AlignedBuf* user_aligned_buf_; +13943: uint64_t user_offset_; +13943: size_t user_len_; +13943: Slice user_result_; +13943: +13943: AlignedBuffer buf_; +13943: bool is_aligned_; +13943: }; +13943: +13943: public: +13943: explicit RandomAccessFileReader( +13943: std::unique_ptr&& raf, const std::string& _file_name, +13943: SystemClock* clock = nullptr, +13943: const std::shared_ptr& io_tracer = nullptr, +13943: Statistics* stats = nullptr, +13943: uint32_t hist_type = Histograms::HISTOGRAM_ENUM_MAX, +13943: HistogramImpl* file_read_hist = nullptr, +13943: RateLimiter* rate_limiter = nullptr, +13943: const std::vector>& listeners = {}, +13943: Temperature file_temperature = Temperature::kUnknown, +13943: bool is_last_level = false) +13943: : file_(std::move(raf), io_tracer, _file_name), +13943: file_name_(std::move(_file_name)), +13943: clock_(clock), +13943: stats_(stats), +13943: hist_type_(hist_type), +13943: file_read_hist_(file_read_hist), +13943: rate_limiter_(rate_limiter), +13943: listeners_(), +13943: file_temperature_(file_temperature), +13943: is_last_level_(is_last_level) { +13943: std::for_each(listeners.begin(), listeners.end(), +13943: [this](const std::shared_ptr& e) { +13943: if (e->ShouldBeNotifiedOnFileIO()) { +13943: listeners_.emplace_back(e); +13943: } +13943: }); +13943: } +13943: +13943: static IOStatus Create(const std::shared_ptr& fs, +13943: const std::string& fname, const FileOptions& file_opts, +13943: std::unique_ptr* reader, +13943: IODebugContext* dbg); +13943: RandomAccessFileReader(const RandomAccessFileReader&) = delete; +13943: RandomAccessFileReader& operator=(const RandomAccessFileReader&) = delete; +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" +13943: IOStatus Read(const IOOptions& opts, uint64_t offset, size_t n, Slice* result, +13943: char* scratch, AlignedBuf* aligned_buf) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: IOStatus MultiRead(const IOOptions& opts, FSReadRequest* reqs, +13943: size_t num_reqs, AlignedBuf* aligned_buf) const; +13943: +13943: IOStatus Prefetch(const IOOptions& opts, uint64_t offset, size_t n) const { +13943: return file_->Prefetch(offset, n, opts, nullptr); +13943: } +13943: +13943: FSRandomAccessFile* file() { return file_.get(); } +13943: +13943: const std::string& file_name() const { return file_name_; } +13943: +13943: bool use_direct_io() const { return file_->use_direct_io(); } +13943: +13943: IOStatus PrepareIOOptions(const ReadOptions& ro, IOOptions& opts) const; +13943: +13943: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +13943: std::function cb, +13943: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +13943: AlignedBuf* aligned_buf); +13943: +13943: void ReadAsyncCallback(FSReadRequest& req, void* cb_arg); +13943: }; +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/file_util.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/filename.h" 1 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/file/filename.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/options/db_options.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: class SystemClock; +13943: +13943: struct ImmutableDBOptions { +13943: static const char* kName() { return "ImmutableDBOptions"; } +13943: ImmutableDBOptions(); +13943: explicit ImmutableDBOptions(const DBOptions& options); +13943: +13943: void Dump(Logger* log) const; +13943: +13943: bool create_if_missing; +13943: bool create_missing_column_families; +13943: bool error_if_exists; +13943: bool paranoid_checks; +13943: bool flush_verify_memtable_count; +13943: bool compaction_verify_record_count; +13943: bool track_and_verify_wals_in_manifest; +13943: bool verify_sst_unique_id_in_manifest; +13943: Env* env; +13943: std::shared_ptr rate_limiter; +13943: std::shared_ptr sst_file_manager; +13943: std::shared_ptr info_log; +13943: InfoLogLevel info_log_level; +13943: int max_file_opening_threads; +13943: std::shared_ptr statistics; +13943: bool use_fsync; +13943: std::vector db_paths; +13943: std::string db_log_dir; +13943: +13943: +13943: +13943: std::string wal_dir; +13943: size_t max_log_file_size; +13943: size_t log_file_time_to_roll; +13943: size_t keep_log_file_num; +13943: size_t recycle_log_file_num; +13943: uint64_t max_manifest_file_size; +13943: int table_cache_numshardbits; +13943: uint64_t WAL_ttl_seconds; +13943: uint64_t WAL_size_limit_MB; +13943: uint64_t max_write_batch_group_size_bytes; +13943: size_t manifest_preallocation_size; +13943: bool allow_mmap_reads; +13943: bool allow_mmap_writes; +13943: bool use_direct_reads; +13943: bool use_direct_io_for_flush_and_compaction; +13943: bool allow_fallocate; +13943: bool is_fd_close_on_exec; +13943: bool advise_random_on_open; +13943: size_t db_write_buffer_size; +13943: std::shared_ptr write_buffer_manager; +13943: size_t random_access_max_buffer_size; +13943: bool use_adaptive_mutex; +13943: std::vector> listeners; +13943: bool enable_thread_tracking; +13943: bool enable_pipelined_write; +13943: bool unordered_write; +13943: bool allow_concurrent_memtable_write; +13943: bool enable_write_thread_adaptive_yield; +13943: uint64_t write_thread_max_yield_usec; +13943: uint64_t write_thread_slow_yield_usec; +13943: bool skip_stats_update_on_db_open; +13943: bool skip_checking_sst_file_sizes_on_db_open; +13943: WALRecoveryMode wal_recovery_mode; +13943: bool allow_2pc; +13943: std::shared_ptr row_cache; +13943: WalFilter* wal_filter; +13943: bool fail_if_options_file_error; +13943: bool dump_malloc_stats; +13943: bool avoid_flush_during_recovery; +13943: bool allow_ingest_behind; +13943: bool two_write_queues; +13943: bool manual_wal_flush; +13943: CompressionType wal_compression; +13943: bool background_close_inactive_wals; +13943: bool atomic_flush; +13943: bool avoid_unnecessary_blocking_io; +13943: bool prefix_seek_opt_in_only; +13943: bool persist_stats_to_disk; +13943: bool write_dbid_to_manifest; +13943: bool write_identity_file; +13943: size_t log_readahead_size; +13943: std::shared_ptr file_checksum_gen_factory; +13943: bool best_efforts_recovery; +13943: int max_bgerror_resume_count; +13943: uint64_t bgerror_resume_retry_interval; +13943: bool allow_data_in_errors; +13943: std::string db_host_id; +13943: FileTypeSet checksum_handoff_file_types; +13943: CacheTier lowest_used_cache_tier; +13943: std::shared_ptr compaction_service; +13943: bool enforce_single_del_contracts; +13943: uint64_t follower_refresh_catchup_period_ms; +13943: uint64_t follower_catchup_retry_count; +13943: uint64_t follower_catchup_retry_wait_ms; +13943: Temperature metadata_write_temperature; +13943: Temperature wal_write_temperature; +13943: +13943: +13943: +13943: std::shared_ptr fs; +13943: SystemClock* clock; +13943: Statistics* stats; +13943: Logger* logger; +13943: +13943: +13943: bool IsWalDirSameAsDBPath() const; +13943: bool IsWalDirSameAsDBPath(const std::string& path) const; +13943: const std::string& GetWalDir() const; +13943: const std::string& GetWalDir(const std::string& path) const; +13943: }; +13943: +13943: struct MutableDBOptions { +13943: static const char* kName() { return "MutableDBOptions"; } +13943: MutableDBOptions(); +13943: explicit MutableDBOptions(const DBOptions& options); +13943: +13943: void Dump(Logger* log) const; +13943: +13943: int max_background_jobs; +13943: int max_background_compactions; +13943: uint32_t max_subcompactions; +13943: bool avoid_flush_during_shutdown; +13943: size_t writable_file_max_buffer_size; +13943: uint64_t delayed_write_rate; +13943: uint64_t max_total_wal_size; +13943: uint64_t delete_obsolete_files_period_micros; +13943: unsigned int stats_dump_period_sec; +13943: unsigned int stats_persist_period_sec; +13943: size_t stats_history_buffer_size; +13943: int max_open_files; +13943: uint64_t bytes_per_sync; +13943: uint64_t wal_bytes_per_sync; +13943: bool strict_bytes_per_sync; +13943: size_t compaction_readahead_size; +13943: int max_background_flushes; +13943: std::string daily_offpeak_time_utc; +13943: }; +13943: +13943: Status GetStringFromMutableDBOptions(const ConfigOptions& config_options, +13943: const MutableDBOptions& mutable_opts, +13943: std::string* opt_string); +13943: +13943: Status GetMutableDBOptionsFromStrings( +13943: const MutableDBOptions& base_options, +13943: const std::unordered_map& options_map, +13943: MutableDBOptions* new_options); +13943: +13943: bool MutableDBOptionsAreEqual(const MutableDBOptions& this_options, +13943: const MutableDBOptions& that_options); +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/file/filename.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Env; +13943: class Directory; +13943: class SystemClock; +13943: class WritableFileWriter; +13943: +13943: +13943: +13943: +13943: constexpr char kFilePathSeparator = '/'; +13943: +13943: +13943: +13943: +13943: +13943: std::string LogFileName(const std::string& dbname, uint64_t number); +13943: +13943: std::string LogFileName(uint64_t number); +13943: +13943: std::string BlobFileName(uint64_t number); +13943: +13943: std::string BlobFileName(const std::string& bdirname, uint64_t number); +13943: +13943: std::string BlobFileName(const std::string& dbname, const std::string& blob_dir, +13943: uint64_t number); +13943: +13943: std::string ArchivalDirectory(const std::string& dbname); +13943: +13943: +13943: +13943: std::string ArchivedLogFileName(const std::string& dbname, uint64_t num); +13943: +13943: std::string MakeTableFileName(const std::string& name, uint64_t number); +13943: +13943: std::string MakeTableFileName(uint64_t number); +13943: +13943: +13943: +13943: std::string Rocks2LevelTableFileName(const std::string& fullname); +13943: +13943: +13943: +13943: uint64_t TableFileNameToNumber(const std::string& name); +13943: +13943: +13943: +13943: +13943: std::string TableFileName(const std::vector& db_paths, uint64_t number, +13943: uint32_t path_id); +13943: +13943: +13943: const size_t kFormatFileNumberBufSize = 38; +13943: +13943: void FormatFileNumber(uint64_t number, uint32_t path_id, char* out_buf, +13943: size_t out_buf_size); +13943: +13943: +13943: +13943: +13943: std::string DescriptorFileName(const std::string& dbname, uint64_t number); +13943: +13943: std::string DescriptorFileName(uint64_t number); +13943: +13943: extern const std::string kCurrentFileName; +13943: +13943: +13943: +13943: +13943: std::string CurrentFileName(const std::string& dbname); +13943: +13943: +13943: +13943: std::string LockFileName(const std::string& dbname); +13943: +13943: +13943: +13943: std::string TempFileName(const std::string& dbname, uint64_t number); +13943: +13943: +13943: struct InfoLogPrefix { +13943: char buf[260]; +13943: Slice prefix; +13943: +13943: explicit InfoLogPrefix(bool has_log_dir, const std::string& db_absolute_path); +13943: +13943: explicit InfoLogPrefix(); +13943: }; +13943: +13943: +13943: std::string InfoLogFileName(const std::string& dbname, +13943: const std::string& db_path = "", +13943: const std::string& log_dir = ""); +13943: +13943: +13943: std::string OldInfoLogFileName(const std::string& dbname, uint64_t ts, +13943: const std::string& db_path = "", +13943: const std::string& log_dir = ""); +13943: +13943: extern const std::string kOptionsFileNamePrefix; +13943: extern const std::string kTempFileNameSuffix; +13943: +13943: +13943: +13943: std::string OptionsFileName(const std::string& dbname, uint64_t file_num); +13943: std::string OptionsFileName(uint64_t file_num); +13943: +13943: +13943: +13943: std::string TempOptionsFileName(const std::string& dbname, uint64_t file_num); +13943: +13943: +13943: +13943: std::string MetaDatabaseName(const std::string& dbname, uint64_t number); +13943: +13943: +13943: +13943: +13943: std::string IdentityFileName(const std::string& dbname); +13943: +13943: +13943: +13943: +13943: +13943: bool ParseFileName(const std::string& filename, uint64_t* number, +13943: const Slice& info_log_name_prefix, FileType* type, +13943: WalFileType* log_type = nullptr); +13943: +13943: bool ParseFileName(const std::string& filename, uint64_t* number, +13943: FileType* type, WalFileType* log_type = nullptr); +13943: +13943: +13943: +13943: +13943: +13943: IOStatus SetCurrentFile(const WriteOptions& write_options, FileSystem* fs, +13943: const std::string& dbname, uint64_t descriptor_number, +13943: Temperature temp, +13943: FSDirectory* dir_contains_current_file); +13943: +13943: +13943: Status SetIdentityFile(const WriteOptions& write_options, Env* env, +13943: const std::string& dbname, Temperature temp, +13943: const std::string& db_id = {}); +13943: +13943: +13943: IOStatus SyncManifest(const ImmutableDBOptions* db_options, +13943: const WriteOptions& write_options, +13943: WritableFileWriter* file); +13943: +13943: +13943: +13943: +13943: +13943: Status GetInfoLogFiles(const std::shared_ptr& fs, +13943: const std::string& db_log_dir, const std::string& dbname, +13943: std::string* parent_dir, +13943: std::vector* file_names); +13943: +13943: std::string NormalizePath(const std::string& path); +13943: } +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/file_util.h" 2 +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/file/file_util.h" +13943: namespace rocksdb { +13943: +13943: +13943: IOStatus CopyFile(FileSystem* fs, const std::string& source, +13943: Temperature src_temp_hint, +13943: std::unique_ptr& dest_writer, +13943: uint64_t size, bool use_fsync, +13943: const std::shared_ptr& io_tracer); +13943: IOStatus CopyFile(FileSystem* fs, const std::string& source, +13943: Temperature src_temp_hint, const std::string& destination, +13943: Temperature dst_temp, uint64_t size, bool use_fsync, +13943: const std::shared_ptr& io_tracer); +13943: inline IOStatus CopyFile(const std::shared_ptr& fs, +13943: const std::string& source, Temperature src_temp_hint, +13943: const std::string& destination, Temperature dst_temp, +13943: uint64_t size, bool use_fsync, +13943: const std::shared_ptr& io_tracer) { +13943: return CopyFile(fs.get(), source, src_temp_hint, destination, dst_temp, size, +13943: use_fsync, io_tracer); +13943: } +13943: IOStatus CreateFile(FileSystem* fs, const std::string& destination, +13943: const std::string& contents, bool use_fsync); +13943: +13943: inline IOStatus CreateFile(const std::shared_ptr& fs, +13943: const std::string& destination, +13943: const std::string& contents, bool use_fsync) { +13943: return CreateFile(fs.get(), destination, contents, use_fsync); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status DeleteDBFile(const ImmutableDBOptions* db_options, +13943: const std::string& fname, const std::string& path_to_sync, +13943: const bool force_bg, const bool force_fg); +13943: +13943: +13943: +13943: +13943: +13943: Status DeleteUnaccountedDBFile(const ImmutableDBOptions* db_options, +13943: const std::string& fname, +13943: const std::string& dir_to_sync, +13943: const bool force_bg, const bool force_fg, +13943: std::optional bucket); +13943: +13943: +13943: IOStatus GenerateOneFileChecksum( +13943: FileSystem* fs, const std::string& file_path, +13943: FileChecksumGenFactory* checksum_factory, +13943: const std::string& requested_checksum_func_name, std::string* file_checksum, +13943: std::string* file_checksum_func_name, +13943: size_t verify_checksums_readahead_size, bool allow_mmap_reads, +13943: std::shared_ptr& io_tracer, RateLimiter* rate_limiter, +13943: const ReadOptions& read_options, Statistics* stats, SystemClock* clock); +13943: +13943: inline IOStatus PrepareIOFromReadOptions(const ReadOptions& ro, +13943: SystemClock* clock, IOOptions& opts) { +13943: if (ro.deadline.count()) { +13943: std::chrono::microseconds now = +13943: std::chrono::microseconds(clock->NowMicros()); +13943: +13943: +13943: if (now >= ro.deadline) { +13943: return IOStatus::TimedOut("Deadline exceeded"); +13943: } +13943: opts.timeout = ro.deadline - now; +13943: } +13943: +13943: if (ro.io_timeout.count() && +13943: (!opts.timeout.count() || ro.io_timeout < opts.timeout)) { +13943: opts.timeout = ro.io_timeout; +13943: } +13943: +13943: opts.rate_limiter_priority = ro.rate_limiter_priority; +13943: opts.io_activity = ro.io_activity; +13943: +13943: return IOStatus::OK(); +13943: } +13943: +13943: inline IOStatus PrepareIOFromWriteOptions(const WriteOptions& wo, +13943: IOOptions& opts) { +13943: opts.rate_limiter_priority = wo.rate_limiter_priority; +13943: opts.io_activity = wo.io_activity; +13943: +13943: return IOStatus::OK(); +13943: } +13943: +13943: +13943: +13943: Status DestroyDir(Env* env, const std::string& dir); +13943: +13943: inline bool CheckFSFeatureSupport(FileSystem* fs, FSSupportedOps feat) { +13943: int64_t supported_ops = 0; +13943: fs->SupportedOps(supported_ops); +13943: if (supported_ops & (1ULL << feat)) { +13943: return true; +13943: } +13943: return false; +13943: } +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 2 +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: namespace rocksdb { +13943: # 39 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: template +13943: class autovector { +13943: public: +13943: +13943: using value_type = T; +13943: using difference_type = typename std::vector::difference_type; +13943: using size_type = typename std::vector::size_type; +13943: using reference = value_type&; +13943: using const_reference = const value_type&; +13943: using pointer = value_type*; +13943: using const_pointer = const value_type*; +13943: +13943: +13943: template +13943: class iterator_impl { +13943: public: +13943: +13943: using self_type = iterator_impl; +13943: using value_type = TValueType; +13943: using reference = TValueType&; +13943: using pointer = TValueType*; +13943: using difference_type = typename TAutoVector::difference_type; +13943: using iterator_category = std::random_access_iterator_tag; +13943: +13943: iterator_impl(TAutoVector* vect, size_t index) +13943: : vect_(vect), index_(index){} +13943: iterator_impl(const iterator_impl&) = default; +13943: ~iterator_impl() {} +13943: iterator_impl& operator=(const iterator_impl&) = default; +13943: +13943: +13943: +13943: self_type& operator++() { +13943: ++index_; +13943: return *this; +13943: } +13943: +13943: +13943: self_type operator++(int) { +13943: auto old = *this; +13943: ++index_; +13943: return old; +13943: } +13943: +13943: +13943: self_type& operator--() { +13943: --index_; +13943: return *this; +13943: } +13943: +13943: +13943: self_type operator--(int) { +13943: auto old = *this; +13943: --index_; +13943: return old; +13943: } +13943: +13943: self_type operator-(difference_type len) const { +13943: return self_type(vect_, index_ - len); +13943: } +13943: +13943: difference_type operator-(const self_type& other) const { +13943: +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_ == other.vect_ +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_ == other.vect_" +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return index_ - other.index_; +13943: } +13943: +13943: self_type operator+(difference_type len) const { +13943: return self_type(vect_, index_ + len); +13943: } +13943: +13943: self_type& operator+=(difference_type len) { +13943: index_ += len; +13943: return *this; +13943: } +13943: +13943: self_type& operator-=(difference_type len) { +13943: index_ -= len; +13943: return *this; +13943: } +13943: +13943: +13943: reference operator*() const { +13943: +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_->size() >= index_ +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_->size() >= index_" +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return (*vect_)[index_]; +13943: } +13943: +13943: pointer operator->() const { +13943: +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_->size() >= index_ +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_->size() >= index_" +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return &(*vect_)[index_]; +13943: } +13943: +13943: reference operator[](difference_type len) const { return *(*this + len); } +13943: +13943: +13943: bool operator==(const self_type& other) const { +13943: +13943: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_ == other.vect_ +13943: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_ == other.vect_" +13943: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return index_ == other.index_; +13943: } +13943: +13943: bool operator!=(const self_type& other) const { return !(*this == other); } +13943: +13943: bool operator>(const self_type& other) const { +13943: +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_ == other.vect_ +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_ == other.vect_" +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return index_ > other.index_; +13943: } +13943: +13943: bool operator<(const self_type& other) const { +13943: +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_ == other.vect_ +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_ == other.vect_" +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return index_ < other.index_; +13943: } +13943: +13943: bool operator>=(const self_type& other) const { +13943: +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_ == other.vect_ +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_ == other.vect_" +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return index_ >= other.index_; +13943: } +13943: +13943: bool operator<=(const self_type& other) const { +13943: +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: vect_ == other.vect_ +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "vect_ == other.vect_" +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return index_ <= other.index_; +13943: } +13943: +13943: private: +13943: TAutoVector* vect_ = nullptr; +13943: size_t index_ = 0; +13943: }; +13943: +13943: using iterator = iterator_impl; +13943: using const_iterator = iterator_impl; +13943: using reverse_iterator = std::reverse_iterator; +13943: using const_reverse_iterator = std::reverse_iterator; +13943: +13943: autovector() : values_(reinterpret_cast(buf_)) {} +13943: +13943: autovector(std::initializer_list init_list) +13943: : values_(reinterpret_cast(buf_)) { +13943: for (const T& item : init_list) { +13943: push_back(item); +13943: } +13943: } +13943: +13943: ~autovector() { clear(); } +13943: +13943: +13943: +13943: bool only_in_stack() const { +13943: +13943: return vect_.capacity() == 0; +13943: } +13943: +13943: size_type size() const { return num_stack_items_ + vect_.size(); } +13943: +13943: +13943: +13943: void resize(size_type n) { +13943: if (n > kSize) { +13943: vect_.resize(n - kSize); +13943: while (num_stack_items_ < kSize) { +13943: new ((void*)(&values_[num_stack_items_++])) value_type(); +13943: } +13943: num_stack_items_ = kSize; +13943: } else { +13943: vect_.clear(); +13943: while (num_stack_items_ < n) { +13943: new ((void*)(&values_[num_stack_items_++])) value_type(); +13943: } +13943: while (num_stack_items_ > n) { +13943: values_[--num_stack_items_].~value_type(); +13943: } +13943: } +13943: } +13943: +13943: bool empty() const { return size() == 0; } +13943: +13943: size_type capacity() const { return kSize + vect_.capacity(); } +13943: +13943: void reserve(size_t cap) { +13943: if (cap > kSize) { +13943: vect_.reserve(cap - kSize); +13943: } +13943: +13943: +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: cap <= capacity() +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "cap <= capacity()" +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: } +13943: +13943: const_reference operator[](size_type n) const { +13943: +13943: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: n < size() +13943: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "n < size()" +13943: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: if (n < kSize) { +13943: return values_[n]; +13943: } +13943: return vect_[n - kSize]; +13943: } +13943: +13943: reference operator[](size_type n) { +13943: +13943: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: n < size() +13943: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "n < size()" +13943: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: if (n < kSize) { +13943: return values_[n]; +13943: } +13943: return vect_[n - kSize]; +13943: } +13943: +13943: const_reference at(size_type n) const { +13943: +13943: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: n < size() +13943: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "n < size()" +13943: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return (*this)[n]; +13943: } +13943: +13943: reference at(size_type n) { +13943: +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: n < size() +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "n < size()" +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return (*this)[n]; +13943: } +13943: +13943: reference front() { +13943: +13943: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: !empty() +13943: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "!empty()" +13943: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return *begin(); +13943: } +13943: +13943: const_reference front() const { +13943: +13943: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: !empty() +13943: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "!empty()" +13943: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return *begin(); +13943: } +13943: +13943: reference back() { +13943: +13943: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: !empty() +13943: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "!empty()" +13943: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return *(end() - 1); +13943: } +13943: +13943: const_reference back() const { +13943: +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: !empty() +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "!empty()" +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: return *(end() - 1); +13943: } +13943: +13943: +13943: void push_back(T&& item) { +13943: if (num_stack_items_ < kSize) { +13943: new ((void*)(&values_[num_stack_items_])) value_type(); +13943: values_[num_stack_items_++] = std::move(item); +13943: } else { +13943: vect_.push_back(item); +13943: } +13943: } +13943: +13943: void push_back(const T& item) { +13943: if (num_stack_items_ < kSize) { +13943: new ((void*)(&values_[num_stack_items_])) value_type(); +13943: values_[num_stack_items_++] = item; +13943: } else { +13943: vect_.push_back(item); +13943: } +13943: } +13943: +13943: template +13943: # 298 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: void emplace_back(Args&&... args) { +13943: if (num_stack_items_ < kSize) { +13943: new ((void*)(&values_[num_stack_items_++])) +13943: value_type(std::forward(args)...); +13943: } else { +13943: vect_.emplace_back(std::forward(args)...); +13943: } +13943: } +13943: +13943: +13943: void pop_back() { +13943: +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: (static_cast ( +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: !empty() +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: "!empty()" +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +13943: ; +13943: if (!vect_.empty()) { +13943: vect_.pop_back(); +13943: } else { +13943: values_[--num_stack_items_].~value_type(); +13943: } +13943: } +13943: +13943: void clear() { +13943: while (num_stack_items_ > 0) { +13943: values_[--num_stack_items_].~value_type(); +13943: } +13943: vect_.clear(); +13943: } +13943: +13943: +13943: autovector& assign(const autovector& other); +13943: +13943: autovector(const autovector& other) { assign(other); } +13943: +13943: autovector& operator=(const autovector& other) { return assign(other); } +13943: +13943: autovector(autovector&& other) noexcept { *this = std::move(other); } +13943: autovector& operator=(autovector&& other); +13943: +13943: +13943: iterator begin() { return iterator(this, 0); } +13943: +13943: const_iterator begin() const { return const_iterator(this, 0); } +13943: +13943: iterator end() { return iterator(this, this->size()); } +13943: +13943: const_iterator end() const { return const_iterator(this, this->size()); } +13943: +13943: reverse_iterator rbegin() { return reverse_iterator(end()); } +13943: +13943: const_reverse_iterator rbegin() const { +13943: return const_reverse_iterator(end()); +13943: } +13943: +13943: reverse_iterator rend() { return reverse_iterator(begin()); } +13943: +13943: const_reverse_iterator rend() const { +13943: return const_reverse_iterator(begin()); +13943: } +13943: +13943: private: +13943: size_type num_stack_items_ = 0; +13943: alignas(alignof( +13943: value_type)) char buf_[kSize * +13943: sizeof(value_type)]; +13943: pointer values_; +13943: +13943: std::vector vect_; +13943: }; +13943: +13943: template +13943: autovector& autovector::assign( +13943: const autovector& other) { +13943: values_ = reinterpret_cast(buf_); +13943: +13943: vect_.assign(other.vect_.begin(), other.vect_.end()); +13943: +13943: +13943: num_stack_items_ = other.num_stack_items_; +13943: for (size_t i = 0; i < num_stack_items_; ++i) { +13943: new ((void*)(&values_[i])) value_type(); +13943: } +13943: std::copy(other.values_, other.values_ + num_stack_items_, values_); +13943: +13943: return *this; +13943: } +13943: +13943: template +13943: autovector& autovector::operator=( +13943: autovector&& other) { +13943: values_ = reinterpret_cast(buf_); +13943: vect_ = std::move(other.vect_); +13943: size_t n = other.num_stack_items_; +13943: num_stack_items_ = n; +13943: other.num_stack_items_ = 0; +13943: for (size_t i = 0; i < n; ++i) { +13943: new ((void*)(&values_[i])) value_type(); +13943: values_[i] = std::move(other.values_[i]); +13943: } +13943: return *this; +13943: } +13943: +13943: } +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: struct IOOptions; +13943: class RandomAccessFileReader; +13943: +13943: struct ReadaheadParams { +13943: ReadaheadParams() {} +13943: +13943: +13943: size_t initial_readahead_size = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t max_readahead_size = 0; +13943: +13943: +13943: +13943: bool implicit_auto_readahead = false; +13943: +13943: +13943: uint64_t num_file_reads = 0; +13943: uint64_t num_file_reads_for_auto_readahead = 0; +13943: +13943: +13943: +13943: size_t num_buffers = 1; +13943: }; +13943: +13943: struct BufferInfo { +13943: void ClearBuffer() { +13943: buffer_.Clear(); +13943: initial_end_offset_ = 0; +13943: async_req_len_ = 0; +13943: } +13943: +13943: AlignedBuffer buffer_; +13943: +13943: uint64_t offset_ = 0; +13943: +13943: +13943: +13943: size_t async_req_len_ = 0; +13943: +13943: +13943: +13943: bool async_read_in_progress_ = false; +13943: +13943: +13943: +13943: void* io_handle_ = nullptr; +13943: +13943: IOHandleDeleter del_fn_ = nullptr; +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: uint64_t initial_end_offset_ = 0; +13943: +13943: bool IsDataBlockInBuffer(uint64_t offset, size_t length) { +13943: +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: (static_cast ( +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: async_read_in_progress_ == false +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: "async_read_in_progress_ == false" +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: ; +13943: return (offset >= offset_ && +13943: offset + length <= offset_ + buffer_.CurrentSize()); +13943: } +13943: +13943: bool IsOffsetInBuffer(uint64_t offset) { +13943: +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: (static_cast ( +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: async_read_in_progress_ == false +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: "async_read_in_progress_ == false" +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: ; +13943: return (offset >= offset_ && offset < offset_ + buffer_.CurrentSize()); +13943: } +13943: +13943: bool DoesBufferContainData() { +13943: +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: (static_cast ( +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: async_read_in_progress_ == false +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: "async_read_in_progress_ == false" +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: ; +13943: return buffer_.CurrentSize() > 0; +13943: } +13943: +13943: bool IsBufferOutdated(uint64_t offset) { +13943: return (!async_read_in_progress_ && DoesBufferContainData() && +13943: offset >= offset_ + buffer_.CurrentSize()); +13943: } +13943: +13943: bool IsBufferOutdatedWithAsyncProgress(uint64_t offset) { +13943: return (async_read_in_progress_ && io_handle_ != nullptr && +13943: offset >= offset_ + async_req_len_); +13943: } +13943: +13943: bool IsOffsetInBufferWithAsyncProgress(uint64_t offset) { +13943: return (async_read_in_progress_ && offset >= offset_ && +13943: offset < offset_ + async_req_len_); +13943: } +13943: +13943: size_t CurrentSize() { return buffer_.CurrentSize(); } +13943: }; +13943: +13943: enum class FilePrefetchBufferUsage { +13943: kTableOpenPrefetchTail, +13943: kUserScanPrefetch, +13943: kUnknown, +13943: }; +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: class FilePrefetchBuffer { +13943: public: +13943: # 186 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: FilePrefetchBuffer( +13943: const ReadaheadParams& readahead_params = {}, bool enable = true, +13943: bool track_min_offset = false, FileSystem* fs = nullptr, +13943: SystemClock* clock = nullptr, Statistics* stats = nullptr, +13943: const std::function& cb = nullptr, +13943: FilePrefetchBufferUsage usage = FilePrefetchBufferUsage::kUnknown) +13943: : readahead_size_(readahead_params.initial_readahead_size), +13943: initial_auto_readahead_size_(readahead_params.initial_readahead_size), +13943: max_readahead_size_(readahead_params.max_readahead_size), +13943: min_offset_read_(std::numeric_limits::max()), +13943: enable_(enable), +13943: track_min_offset_(track_min_offset), +13943: implicit_auto_readahead_(readahead_params.implicit_auto_readahead), +13943: prev_offset_(0), +13943: prev_len_(0), +13943: num_file_reads_for_auto_readahead_( +13943: readahead_params.num_file_reads_for_auto_readahead), +13943: num_file_reads_(readahead_params.num_file_reads), +13943: explicit_prefetch_submitted_(false), +13943: fs_(fs), +13943: clock_(clock), +13943: stats_(stats), +13943: usage_(usage), +13943: readaheadsize_cb_(cb), +13943: num_buffers_(readahead_params.num_buffers) { +13943: +13943: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: (static_cast ( +13943: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: (num_file_reads_ >= num_file_reads_for_auto_readahead_ + 1) || (num_file_reads_ == 0) +13943: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: "(num_file_reads_ >= num_file_reads_for_auto_readahead_ + 1) || (num_file_reads_ == 0)" +13943: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: +13943: # 212 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: if (num_buffers_ > 1 || +13943: (fs_ != nullptr && +13943: CheckFSFeatureSupport(fs_, FSSupportedOps::kFSBuffer))) { +13943: overlap_buf_ = new BufferInfo(); +13943: } +13943: +13943: free_bufs_.resize(num_buffers_); +13943: for (uint32_t i = 0; i < num_buffers_; i++) { +13943: free_bufs_[i] = new BufferInfo(); +13943: } +13943: } +13943: +13943: ~FilePrefetchBuffer() { +13943: +13943: if (fs_ != nullptr) { +13943: std::vector handles; +13943: for (auto& buf : bufs_) { +13943: if (buf->async_read_in_progress_ && buf->io_handle_ != nullptr) { +13943: handles.emplace_back(buf->io_handle_); +13943: } +13943: } +13943: if (!handles.empty()) { +13943: StopWatch sw(clock_, stats_, ASYNC_PREFETCH_ABORT_MICROS); +13943: Status s = fs_->AbortIO(handles); +13943: +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: (static_cast ( +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: s.ok() +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: "s.ok()" +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: ; +13943: } +13943: +13943: for (auto& buf : bufs_) { +13943: if (buf->io_handle_ != nullptr) { +13943: DestroyAndClearIOHandle(buf); +13943: buf->ClearBuffer(); +13943: } +13943: buf->async_read_in_progress_ = false; +13943: } +13943: } +13943: +13943: +13943: uint64_t bytes_discarded = 0; +13943: +13943: for (auto& buf : bufs_) { +13943: if (buf->DoesBufferContainData()) { +13943: +13943: if (prev_offset_ >= buf->offset_ && +13943: prev_offset_ + prev_len_ < buf->offset_ + buf->CurrentSize()) { +13943: bytes_discarded += +13943: buf->CurrentSize() - (prev_offset_ + prev_len_ - buf->offset_); +13943: } +13943: +13943: else if (prev_offset_ < buf->offset_ && +13943: prev_offset_ + prev_len_ <= buf->offset_) { +13943: bytes_discarded += buf->CurrentSize(); +13943: } +13943: } +13943: } +13943: +13943: RecordInHistogram(stats_, PREFETCHED_BYTES_DISCARDED, bytes_discarded); +13943: +13943: for (auto& buf : bufs_) { +13943: delete buf; +13943: buf = nullptr; +13943: } +13943: +13943: for (auto& buf : free_bufs_) { +13943: delete buf; +13943: buf = nullptr; +13943: } +13943: +13943: if (overlap_buf_ != nullptr) { +13943: delete overlap_buf_; +13943: overlap_buf_ = nullptr; +13943: } +13943: } +13943: +13943: bool Enabled() const { return enable_; } +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: Status Prefetch(const IOOptions& opts, RandomAccessFileReader* reader, +13943: uint64_t offset, size_t n); +13943: # 316 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: Status PrefetchAsync(const IOOptions& opts, RandomAccessFileReader* reader, +13943: uint64_t offset, size_t n, Slice* result); +13943: # 332 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: bool TryReadFromCache(const IOOptions& opts, RandomAccessFileReader* reader, +13943: uint64_t offset, size_t n, Slice* result, Status* s, +13943: bool for_compaction = false); +13943: +13943: +13943: +13943: size_t min_offset_read() const { return min_offset_read_; } +13943: +13943: size_t GetPrefetchOffset() const { return bufs_.front()->offset_; } +13943: +13943: +13943: void UpdateReadPattern(const uint64_t& offset, const size_t& len, +13943: bool decrease_readaheadsize) { +13943: if (decrease_readaheadsize) { +13943: DecreaseReadAheadIfEligible(offset, len); +13943: } +13943: prev_offset_ = offset; +13943: prev_len_ = len; +13943: explicit_prefetch_submitted_ = false; +13943: } +13943: +13943: void GetReadaheadState(ReadaheadFileInfo::ReadaheadInfo* readahead_info) { +13943: readahead_info->readahead_size = readahead_size_; +13943: readahead_info->num_file_reads = num_file_reads_; +13943: } +13943: +13943: void DecreaseReadAheadIfEligible(uint64_t offset, size_t size, +13943: size_t value = 8 * 1024) { +13943: if (bufs_.empty()) { +13943: return; +13943: } +13943: # 374 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: size_t curr_size = bufs_.front()->async_read_in_progress_ +13943: ? bufs_.front()->async_req_len_ +13943: : bufs_.front()->CurrentSize(); +13943: if (implicit_auto_readahead_ && readahead_size_ > 0) { +13943: if ((offset + size > bufs_.front()->offset_ + curr_size) && +13943: IsBlockSequential(offset) && +13943: (num_file_reads_ + 1 > num_file_reads_for_auto_readahead_)) { +13943: readahead_size_ = +13943: std::max(initial_auto_readahead_size_, +13943: (readahead_size_ >= value ? readahead_size_ - value : 0)); +13943: } +13943: } +13943: } +13943: +13943: +13943: void PrefetchAsyncCallback(FSReadRequest& req, void* cb_arg); +13943: +13943: void TEST_GetBufferOffsetandSize( +13943: std::vector>& buffer_info) { +13943: for (size_t i = 0; i < bufs_.size(); i++) { +13943: std::get<0>(buffer_info[i]) = bufs_[i]->offset_; +13943: std::get<1>(buffer_info[i]) = bufs_[i]->async_read_in_progress_ +13943: ? bufs_[i]->async_req_len_ +13943: : bufs_[i]->CurrentSize(); +13943: std::get<2>(buffer_info[i]) = bufs_[i]->async_read_in_progress_; +13943: } +13943: } +13943: +13943: void TEST_GetOverlapBufferOffsetandSize( +13943: std::pair& buffer_info) { +13943: if (overlap_buf_ != nullptr) { +13943: buffer_info.first = overlap_buf_->offset_; +13943: buffer_info.second = overlap_buf_->CurrentSize(); +13943: } +13943: } +13943: +13943: private: +13943: +13943: +13943: +13943: void PrepareBufferForRead(BufferInfo* buf, size_t alignment, uint64_t offset, +13943: size_t roundup_len, bool refit_tail, +13943: bool use_fs_buffer, uint64_t& aligned_useful_len); +13943: +13943: void AbortOutdatedIO(uint64_t offset); +13943: +13943: void AbortAllIOs(); +13943: +13943: void ClearOutdatedData(uint64_t offset, size_t len); +13943: +13943: +13943: void PollIfNeeded(uint64_t offset, size_t len); +13943: +13943: Status PrefetchInternal(const IOOptions& opts, RandomAccessFileReader* reader, +13943: uint64_t offset, size_t length, size_t readahead_size, +13943: bool& copy_to_third_buffer); +13943: +13943: Status Read(BufferInfo* buf, const IOOptions& opts, +13943: RandomAccessFileReader* reader, uint64_t read_len, +13943: uint64_t aligned_useful_len, uint64_t start_offset, +13943: bool use_fs_buffer); +13943: +13943: Status ReadAsync(BufferInfo* buf, const IOOptions& opts, +13943: RandomAccessFileReader* reader, uint64_t read_len, +13943: uint64_t start_offset); +13943: +13943: +13943: void CopyDataToOverlapBuffer(BufferInfo* src, uint64_t& offset, +13943: size_t& length); +13943: +13943: bool IsBlockSequential(const size_t& offset) { +13943: return (prev_len_ == 0 || (prev_offset_ + prev_len_ == offset)); +13943: } +13943: +13943: +13943: void ResetValues() { +13943: num_file_reads_ = 1; +13943: readahead_size_ = initial_auto_readahead_size_; +13943: } +13943: +13943: +13943: bool IsEligibleForPrefetch(uint64_t offset, size_t n) { +13943: +13943: +13943: if (!IsBlockSequential(offset)) { +13943: UpdateReadPattern(offset, n, false ); +13943: ResetValues(); +13943: return false; +13943: } +13943: num_file_reads_++; +13943: +13943: +13943: +13943: +13943: if (explicit_prefetch_submitted_) { +13943: return true; +13943: } +13943: if (num_file_reads_ <= num_file_reads_for_auto_readahead_) { +13943: UpdateReadPattern(offset, n, false ); +13943: return false; +13943: } +13943: return true; +13943: } +13943: +13943: bool IsEligibleForFurtherPrefetching() { +13943: if (free_bufs_.empty()) { +13943: return false; +13943: } +13943: +13943: if (readahead_size_ == 0) { +13943: return false; +13943: } +13943: return true; +13943: } +13943: +13943: +13943: +13943: +13943: bool UseFSBuffer(RandomAccessFileReader* reader) { +13943: return reader->file() != nullptr && !reader->use_direct_io() && +13943: fs_ != nullptr && +13943: CheckFSFeatureSupport(fs_, FSSupportedOps::kFSBuffer) && +13943: num_buffers_ == 1; +13943: } +13943: +13943: +13943: +13943: +13943: size_t GetRequiredBufferAlignment(RandomAccessFileReader* reader) { +13943: if (UseFSBuffer(reader)) { +13943: return 1; +13943: } +13943: return reader->file()->GetRequiredBufferAlignment(); +13943: } +13943: +13943: +13943: IOStatus FSBufferDirectRead(RandomAccessFileReader* reader, BufferInfo* buf, +13943: const IOOptions& opts, uint64_t offset, size_t n, +13943: Slice& result) { +13943: FSReadRequest read_req; +13943: read_req.offset = offset; +13943: read_req.len = n; +13943: read_req.scratch = nullptr; +13943: IOStatus s = reader->MultiRead(opts, &read_req, 1, nullptr); +13943: if (!s.ok()) { +13943: return s; +13943: } +13943: s = read_req.status; +13943: if (!s.ok()) { +13943: return s; +13943: } +13943: buf->buffer_.SetBuffer(read_req.result, std::move(read_req.fs_scratch)); +13943: buf->offset_ = offset; +13943: buf->initial_end_offset_ = offset + read_req.result.size(); +13943: result = read_req.result; +13943: return s; +13943: } +13943: +13943: void DestroyAndClearIOHandle(BufferInfo* buf) { +13943: if (buf->io_handle_ != nullptr && buf->del_fn_ != nullptr) { +13943: buf->del_fn_(buf->io_handle_); +13943: buf->io_handle_ = nullptr; +13943: buf->del_fn_ = nullptr; +13943: } +13943: buf->async_read_in_progress_ = false; +13943: } +13943: +13943: void HandleOverlappingSyncData(uint64_t offset, size_t length, +13943: uint64_t& tmp_offset, size_t& tmp_length, +13943: bool& use_overlap_buffer); +13943: +13943: Status HandleOverlappingAsyncData(const IOOptions& opts, +13943: RandomAccessFileReader* reader, +13943: uint64_t offset, size_t length, +13943: size_t readahead_size, +13943: bool& copy_to_third_buffer, +13943: uint64_t& tmp_offset, size_t& tmp_length); +13943: +13943: bool TryReadFromCacheUntracked(const IOOptions& opts, +13943: RandomAccessFileReader* reader, +13943: uint64_t offset, size_t n, Slice* result, +13943: Status* s, bool for_compaction = false); +13943: +13943: void ReadAheadSizeTuning(BufferInfo* buf, bool read_curr_block, +13943: bool refit_tail, bool use_fs_buffer, +13943: uint64_t prev_buf_end_offset, size_t alignment, +13943: size_t length, size_t readahead_size, +13943: uint64_t& offset, uint64_t& end_offset, +13943: size_t& read_len, uint64_t& aligned_useful_len); +13943: +13943: void UpdateStats(bool found_in_buffer, size_t length_found) { +13943: if (found_in_buffer) { +13943: RecordTick(stats_, PREFETCH_HITS); +13943: } +13943: if (length_found > 0) { +13943: RecordTick(stats_, PREFETCH_BYTES_USEFUL, length_found); +13943: } +13943: } +13943: +13943: void UpdateReadAheadTrimmedStat(size_t initial_length, +13943: size_t updated_length) { +13943: if (initial_length != updated_length) { +13943: RecordTick(stats_, READAHEAD_TRIMMED); +13943: } +13943: } +13943: +13943: Status PrefetchRemBuffers(const IOOptions& opts, +13943: RandomAccessFileReader* reader, +13943: uint64_t end_offset1, size_t alignment, +13943: size_t readahead_size); +13943: +13943: +13943: bool IsBufferQueueEmpty() { return bufs_.empty(); } +13943: +13943: BufferInfo* GetFirstBuffer() { return bufs_.front(); } +13943: +13943: BufferInfo* GetLastBuffer() { return bufs_.back(); } +13943: +13943: size_t NumBuffersAllocated() { return bufs_.size(); } +13943: +13943: void AllocateBuffer() { +13943: +13943: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: (static_cast ( +13943: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: !free_bufs_.empty() +13943: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: "!free_bufs_.empty()" +13943: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +13943: ; +13943: BufferInfo* buf = free_bufs_.front(); +13943: free_bufs_.pop_front(); +13943: bufs_.emplace_back(buf); +13943: } +13943: +13943: void AllocateBufferIfEmpty() { +13943: if (bufs_.empty()) { +13943: AllocateBuffer(); +13943: } +13943: } +13943: +13943: void FreeFrontBuffer() { +13943: BufferInfo* buf = bufs_.front(); +13943: buf->ClearBuffer(); +13943: bufs_.pop_front(); +13943: free_bufs_.emplace_back(buf); +13943: } +13943: +13943: void FreeLastBuffer() { +13943: BufferInfo* buf = bufs_.back(); +13943: buf->ClearBuffer(); +13943: bufs_.pop_back(); +13943: free_bufs_.emplace_back(buf); +13943: } +13943: +13943: void FreeAllBuffers() { +13943: while (!bufs_.empty()) { +13943: BufferInfo* buf = bufs_.front(); +13943: buf->ClearBuffer(); +13943: bufs_.pop_front(); +13943: free_bufs_.emplace_back(buf); +13943: } +13943: } +13943: +13943: void FreeEmptyBuffers() { +13943: if (bufs_.empty()) { +13943: return; +13943: } +13943: +13943: std::deque tmp_buf; +13943: while (!bufs_.empty()) { +13943: BufferInfo* buf = bufs_.front(); +13943: bufs_.pop_front(); +13943: if (buf->async_read_in_progress_ || buf->DoesBufferContainData()) { +13943: tmp_buf.emplace_back(buf); +13943: } else { +13943: free_bufs_.emplace_back(buf); +13943: } +13943: } +13943: bufs_ = tmp_buf; +13943: } +13943: +13943: +13943: +13943: std::deque bufs_; +13943: std::deque free_bufs_; +13943: BufferInfo* overlap_buf_ = nullptr; +13943: +13943: size_t readahead_size_; +13943: size_t initial_auto_readahead_size_; +13943: +13943: +13943: size_t max_readahead_size_; +13943: +13943: +13943: size_t min_offset_read_; +13943: +13943: +13943: bool enable_; +13943: +13943: +13943: bool track_min_offset_; +13943: +13943: +13943: +13943: bool implicit_auto_readahead_; +13943: uint64_t prev_offset_; +13943: size_t prev_len_; +13943: +13943: +13943: uint64_t num_file_reads_for_auto_readahead_; +13943: uint64_t num_file_reads_; +13943: +13943: +13943: +13943: +13943: +13943: bool explicit_prefetch_submitted_; +13943: +13943: FileSystem* fs_; +13943: SystemClock* clock_; +13943: Statistics* stats_; +13943: +13943: FilePrefetchBufferUsage usage_; +13943: +13943: std::function readaheadsize_cb_; +13943: +13943: +13943: +13943: size_t num_buffers_; +13943: }; +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_allocator_impl.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: struct CustomDeleter { +13943: CustomDeleter(MemoryAllocator* a = nullptr) : allocator(a) {} +13943: +13943: void operator()(char* ptr) const { +13943: if (allocator) { +13943: allocator->Deallocate(ptr); +13943: } else { +13943: delete[] ptr; +13943: } +13943: } +13943: +13943: MemoryAllocator* allocator; +13943: }; +13943: +13943: using CacheAllocationPtr = std::unique_ptr; +13943: +13943: inline CacheAllocationPtr AllocateBlock(size_t size, +13943: MemoryAllocator* allocator) { +13943: if (allocator) { +13943: auto block = reinterpret_cast(allocator->Allocate(size)); +13943: return CacheAllocationPtr(block, allocator); +13943: } +13943: return CacheAllocationPtr(new char[size]); +13943: } +13943: +13943: inline CacheAllocationPtr AllocateAndCopyBlock(const Slice& data, +13943: MemoryAllocator* allocator) { +13943: CacheAllocationPtr cap = AllocateBlock(data.size(), allocator); +13943: std::copy_n(data.data(), data.size(), cap.get()); +13943: return cap; +13943: } +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/options/cf_options.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/malloc.h" 1 3 4 +13943: # 24 "/usr/include/malloc.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 25 "/usr/include/malloc.h" 2 3 4 +13943: # 36 "/usr/include/malloc.h" 3 4 +13943: +13943: # 36 "/usr/include/malloc.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +13943: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: extern void *calloc (size_t __nmemb, size_t __size) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern void *realloc (void *__ptr, size_t __size) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2, 3))) +13943: __attribute__ ((__malloc__ (__builtin_free, 1))); +13943: +13943: +13943: extern void free (void *__ptr) noexcept (true); +13943: +13943: +13943: extern void *memalign (size_t __alignment, size_t __size) +13943: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) +13943: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +13943: +13943: +13943: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +13943: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +13943: +13943: +13943: +13943: extern void *pvalloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +13943: +13943: +13943: +13943: struct mallinfo +13943: { +13943: int arena; +13943: int ordblks; +13943: int smblks; +13943: int hblks; +13943: int hblkhd; +13943: int usmblks; +13943: int fsmblks; +13943: int uordblks; +13943: int fordblks; +13943: int keepcost; +13943: }; +13943: +13943: +13943: +13943: +13943: struct mallinfo2 +13943: { +13943: size_t arena; +13943: size_t ordblks; +13943: size_t smblks; +13943: size_t hblks; +13943: size_t hblkhd; +13943: size_t usmblks; +13943: size_t fsmblks; +13943: size_t uordblks; +13943: size_t fordblks; +13943: size_t keepcost; +13943: }; +13943: +13943: +13943: extern struct mallinfo mallinfo (void) noexcept (true) __attribute__ ((__deprecated__)); +13943: +13943: +13943: extern struct mallinfo2 mallinfo2 (void) noexcept (true); +13943: # 144 "/usr/include/malloc.h" 3 4 +13943: extern int mallopt (int __param, int __val) noexcept (true); +13943: +13943: +13943: +13943: extern int malloc_trim (size_t __pad) noexcept (true); +13943: +13943: +13943: +13943: extern size_t malloc_usable_size (void *__ptr) noexcept (true); +13943: +13943: +13943: extern void malloc_stats (void) noexcept (true); +13943: +13943: +13943: extern int malloc_info (int __options, FILE *__fp) noexcept (true); +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/block_based/block_type.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/table/block_based/block_type.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: enum class BlockType : uint8_t { +13943: kData, +13943: kFilter, +13943: kFilterPartitionIndex, +13943: kProperties, +13943: kCompressionDictionary, +13943: kRangeDeletion, +13943: kHashIndexPrefixes, +13943: kHashIndexMetadata, +13943: kMetaIndex, +13943: kIndex, +13943: +13943: kInvalid +13943: }; +13943: +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 8 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 2 +13943: # 24 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct KillPoint { +13943: public: +13943: +13943: +13943: int rocksdb_kill_odds = 0; +13943: +13943: std::vector rocksdb_kill_exclude_prefixes; +13943: +13943: void TestKillRandom(std::string kill_point, int odds, +13943: const std::string& srcfile, int srcline); +13943: +13943: static KillPoint* GetInstance(); +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +13943: namespace rocksdb { +13943: # 74 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +13943: class SyncPoint { +13943: public: +13943: static SyncPoint* GetInstance(); +13943: +13943: SyncPoint(const SyncPoint&) = delete; +13943: SyncPoint& operator=(const SyncPoint&) = delete; +13943: ~SyncPoint(); +13943: +13943: struct SyncPointPair { +13943: std::string predecessor; +13943: std::string successor; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: void LoadDependency(const std::vector& dependencies); +13943: +13943: +13943: +13943: +13943: +13943: void LoadDependencyAndMarkers(const std::vector& dependencies, +13943: const std::vector& markers); +13943: +13943: +13943: +13943: +13943: void SetCallBack(const std::string& point, +13943: const std::function& callback); +13943: +13943: +13943: void ClearCallBack(const std::string& point); +13943: +13943: +13943: void ClearAllCallBacks(); +13943: +13943: +13943: void EnableProcessing(); +13943: +13943: +13943: void DisableProcessing(); +13943: +13943: +13943: void ClearTrace(); +13943: +13943: +13943: +13943: +13943: void Process(const Slice& point, void* cb_arg = nullptr); +13943: +13943: +13943: +13943: template +13943: void Process(const char (&point)[kLen], void* cb_arg = nullptr) { +13943: static_assert(kLen > 0, "Must not be empty"); +13943: +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 3 4 +13943: (static_cast ( +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +13943: point[kLen - 1] == '\0' +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +13943: "point[kLen - 1] == '\\0'" +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +13943: ; +13943: Process(Slice(point, kLen - 1), cb_arg); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct Data; +13943: +13943: private: +13943: +13943: SyncPoint(); +13943: Data* impl_; +13943: }; +13943: +13943: +13943: +13943: void SetupSyncPointsToMockDirectIO(); +13943: } +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/compression_context_cache.h" 1 +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/compression_context_cache.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: class ZSTDUncompressCachedData; +13943: +13943: class CompressionContextCache { +13943: public: +13943: +13943: static CompressionContextCache* Instance(); +13943: static void InitSingleton(); +13943: CompressionContextCache(const CompressionContextCache&) = delete; +13943: CompressionContextCache& operator=(const CompressionContextCache&) = delete; +13943: +13943: ZSTDUncompressCachedData GetCachedZSTDUncompressData(); +13943: void ReturnCachedZSTDUncompressData(int64_t idx); +13943: +13943: private: +13943: +13943: CompressionContextCache(); +13943: ~CompressionContextCache(); +13943: +13943: class Rep; +13943: Rep* rep_; +13943: }; +13943: +13943: } +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: +13943: std::vector StringSplit(const std::string& arg, char delim); +13943: +13943: +13943: void AppendNumberTo(std::string* str, uint64_t num); +13943: +13943: +13943: +13943: void AppendEscapedStringTo(std::string* str, const Slice& value); +13943: +13943: +13943: +13943: template +13943: inline void PutBaseChars(char** buf, size_t n, uint64_t v, bool uppercase) { +13943: const char* digitChars = uppercase ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" +13943: : "0123456789abcdefghijklmnopqrstuvwxyz"; +13943: for (size_t i = n; i > 0; --i) { +13943: (*buf)[i - 1] = digitChars[static_cast(v % kBase)]; +13943: v /= kBase; +13943: } +13943: *buf += n; +13943: } +13943: # 52 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" +13943: template +13943: inline bool ParseBaseChars(const char** buf, size_t n, uint64_t* v) { +13943: while (n) { +13943: char c = **buf; +13943: *v *= static_cast(kBase); +13943: if (c >= '0' && (kBase >= 10 ? c <= '9' : c < '0' + kBase)) { +13943: *v += static_cast(c - '0'); +13943: } else if (kBase > 10 && c >= 'A' && c < 'A' + kBase - 10) { +13943: *v += static_cast(c - 'A' + 10); +13943: } else if (kBase > 10 && c >= 'a' && c < 'a' + kBase - 10) { +13943: *v += static_cast(c - 'a' + 10); +13943: } else { +13943: return false; +13943: } +13943: --n; +13943: ++*buf; +13943: } +13943: return true; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: std::string NumberToHumanString(int64_t num); +13943: +13943: +13943: +13943: std::string BytesToHumanString(uint64_t bytes); +13943: +13943: +13943: +13943: std::string TimeToHumanString(int unixtime); +13943: +13943: +13943: int AppendHumanMicros(uint64_t micros, char* output, int len, +13943: bool fixed_format); +13943: +13943: +13943: int AppendHumanBytes(uint64_t bytes, char* output, int len); +13943: +13943: +13943: +13943: std::string EscapeString(const Slice& value); +13943: +13943: +13943: +13943: +13943: +13943: bool ConsumeDecimalNumber(Slice* in, uint64_t* val); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool isSpecialChar(const char c); +13943: +13943: +13943: +13943: +13943: char UnescapeChar(const char c); +13943: +13943: +13943: +13943: +13943: char EscapeChar(const char c); +13943: # 130 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" +13943: std::string EscapeOptionString(const std::string& raw_string); +13943: +13943: +13943: +13943: +13943: +13943: +13943: std::string UnescapeOptionString(const std::string& escaped_string); +13943: +13943: std::string trim(const std::string& str); +13943: +13943: +13943: bool EndsWith(const std::string& string, const std::string& pattern); +13943: +13943: +13943: bool StartsWith(const std::string& string, const std::string& pattern); +13943: +13943: bool ParseBoolean(const std::string& type, const std::string& value); +13943: +13943: uint8_t ParseUint8(const std::string& value); +13943: +13943: uint32_t ParseUint32(const std::string& value); +13943: +13943: int32_t ParseInt32(const std::string& value); +13943: +13943: uint64_t ParseUint64(const std::string& value); +13943: +13943: int ParseInt(const std::string& value); +13943: +13943: int64_t ParseInt64(const std::string& value); +13943: +13943: double ParseDouble(const std::string& value); +13943: +13943: size_t ParseSizeT(const std::string& value); +13943: +13943: std::vector ParseVectorInt(const std::string& value); +13943: +13943: bool SerializeIntVector(const std::vector& vec, std::string* value); +13943: +13943: +13943: +13943: int ParseTimeStringToSeconds(const std::string& value); +13943: +13943: +13943: +13943: +13943: bool TryParseTimeRangeString(const std::string& value, int& start_time, +13943: int& end_time); +13943: +13943: extern const std::string kNullptrString; +13943: +13943: +13943: +13943: std::string errnoStr(int err); +13943: +13943: } +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: +13943: # 1 "/usr/include/snappy.h" 1 3 4 +13943: # 42 "/usr/include/snappy.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 43 "/usr/include/snappy.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/snappy-stubs-public.h" 1 3 4 +13943: # 41 "/usr/include/snappy-stubs-public.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 2 3 4 +13943: +13943: +13943: +13943: # 26 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 3 4 +13943: struct iovec +13943: { +13943: void *iov_base; +13943: size_t iov_len; +13943: }; +13943: # 24 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern "C" { +13943: # 41 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: extern ssize_t readv (int __fd, const struct iovec *__iovec, int __count) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 52 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: extern ssize_t writev (int __fd, const struct iovec *__iovec, int __count) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 86 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: extern ssize_t preadv (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "preadv64") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: extern ssize_t pwritev (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "pwritev64") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 110 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: extern ssize_t preadv64 (int __fd, const struct iovec *__iovec, int __count, +13943: __off64_t __offset) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 123 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: extern ssize_t pwritev64 (int __fd, const struct iovec *__iovec, int __count, +13943: __off64_t __offset) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 143 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: extern ssize_t pwritev2 (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset, int __flags) __asm__ ("" "pwritev64v2") +13943: +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: extern ssize_t preadv2 (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset, int __flags) __asm__ ("" "preadv64v2") +13943: +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 161 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +13943: extern ssize_t preadv64v2 (int __fp, const struct iovec *__iovec, +13943: int __count, __off64_t __offset, +13943: int ___flags) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: +13943: +13943: extern ssize_t pwritev64v2 (int __fd, const struct iovec *__iodev, +13943: int __count, __off64_t __offset, +13943: int __flags) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio-ext.h" 1 3 4 +13943: # 26 "/usr/include/arm-linux-gnueabihf/bits/uio-ext.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec, +13943: unsigned long int __liovcnt, +13943: const struct iovec *__rvec, +13943: unsigned long int __riovcnt, +13943: unsigned long int __flags) +13943: noexcept (true); +13943: +13943: +13943: extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec, +13943: unsigned long int __liovcnt, +13943: const struct iovec *__rvec, +13943: unsigned long int __riovcnt, +13943: unsigned long int __flags) +13943: noexcept (true); +13943: # 52 "/usr/include/arm-linux-gnueabihf/bits/uio-ext.h" 3 4 +13943: } +13943: # 180 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 2 3 4 +13943: # 42 "/usr/include/snappy-stubs-public.h" 2 3 4 +13943: # 50 "/usr/include/snappy-stubs-public.h" 3 4 +13943: namespace snappy { +13943: # 61 "/usr/include/snappy-stubs-public.h" 3 4 +13943: } +13943: # 48 "/usr/include/snappy.h" 2 3 4 +13943: +13943: namespace snappy { +13943: class Source; +13943: class Sink; +13943: +13943: struct CompressionOptions { +13943: # 65 "/usr/include/snappy.h" 3 4 +13943: int level = DefaultCompressionLevel(); +13943: +13943: constexpr CompressionOptions() = default; +13943: constexpr CompressionOptions(int compression_level) +13943: : level(compression_level) {} +13943: static constexpr int MinCompressionLevel() { return 1; } +13943: static constexpr int MaxCompressionLevel() { return 2; } +13943: static constexpr int DefaultCompressionLevel() { return 1; } +13943: }; +13943: # 82 "/usr/include/snappy.h" 3 4 +13943: size_t Compress(Source* reader, Sink* writer); +13943: size_t Compress(Source* reader, Sink* writer, +13943: CompressionOptions options); +13943: # 93 "/usr/include/snappy.h" 3 4 +13943: bool GetUncompressedLength(Source* source, uint32_t* result); +13943: # 104 "/usr/include/snappy.h" 3 4 +13943: size_t Compress(const char* input, size_t input_length, +13943: std::string* compressed); +13943: size_t Compress(const char* input, size_t input_length, +13943: std::string* compressed, CompressionOptions options); +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t CompressFromIOVec(const struct iovec* iov, size_t iov_cnt, +13943: std::string* compressed); +13943: size_t CompressFromIOVec(const struct iovec* iov, size_t iov_cnt, +13943: std::string* compressed, +13943: CompressionOptions options); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool Uncompress(const char* compressed, size_t compressed_length, +13943: std::string* uncompressed); +13943: +13943: +13943: +13943: +13943: bool Uncompress(Source* compressed, Sink* uncompressed); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t UncompressAsMuchAsPossible(Source* compressed, Sink* uncompressed); +13943: # 161 "/usr/include/snappy.h" 3 4 +13943: void RawCompress(const char* input, size_t input_length, char* compressed, +13943: size_t* compressed_length); +13943: void RawCompress(const char* input, size_t input_length, char* compressed, +13943: size_t* compressed_length, CompressionOptions options); +13943: +13943: +13943: +13943: +13943: void RawCompressFromIOVec(const struct iovec* iov, size_t uncompressed_length, +13943: char* compressed, size_t* compressed_length); +13943: void RawCompressFromIOVec(const struct iovec* iov, size_t uncompressed_length, +13943: char* compressed, size_t* compressed_length, +13943: CompressionOptions options); +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool RawUncompress(const char* compressed, size_t compressed_length, +13943: char* uncompressed); +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool RawUncompress(Source* compressed, char* uncompressed); +13943: # 198 "/usr/include/snappy.h" 3 4 +13943: bool RawUncompressToIOVec(const char* compressed, size_t compressed_length, +13943: const struct iovec* iov, size_t iov_cnt); +13943: # 209 "/usr/include/snappy.h" 3 4 +13943: bool RawUncompressToIOVec(Source* compressed, const struct iovec* iov, +13943: size_t iov_cnt); +13943: +13943: +13943: +13943: size_t MaxCompressedLength(size_t source_bytes); +13943: +13943: +13943: +13943: +13943: +13943: bool GetUncompressedLength(const char* compressed, size_t compressed_length, +13943: size_t* result); +13943: +13943: +13943: +13943: +13943: +13943: bool IsValidCompressedBuffer(const char* compressed, +13943: size_t compressed_length); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool IsValidCompressed(Source* compressed); +13943: # 247 "/usr/include/snappy.h" 3 4 +13943: static constexpr int kBlockLog = 16; +13943: static constexpr size_t kBlockSize = 1 << kBlockLog; +13943: +13943: static constexpr int kMinHashTableBits = 8; +13943: static constexpr size_t kMinHashTableSize = 1 << kMinHashTableBits; +13943: +13943: static constexpr int kMaxHashTableBits = 15; +13943: static constexpr size_t kMaxHashTableSize = 1 << kMaxHashTableBits; +13943: } +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: +13943: +13943: # 1 "/usr/include/zlib.h" 1 3 4 +13943: # 34 "/usr/include/zlib.h" 3 4 +13943: # 1 "/usr/include/zconf.h" 1 3 4 +13943: # 254 "/usr/include/zconf.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 255 "/usr/include/zconf.h" 2 3 4 +13943: typedef size_t z_size_t; +13943: # 393 "/usr/include/zconf.h" 3 4 +13943: typedef unsigned char Byte; +13943: +13943: typedef unsigned int uInt; +13943: typedef unsigned long uLong; +13943: +13943: +13943: +13943: +13943: +13943: typedef Byte Bytef; +13943: +13943: typedef char charf; +13943: typedef int intf; +13943: typedef uInt uIntf; +13943: typedef uLong uLongf; +13943: +13943: +13943: typedef void const *voidpc; +13943: typedef void *voidpf; +13943: typedef void *voidp; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +13943: # 421 "/usr/include/zconf.h" 2 3 4 +13943: # 431 "/usr/include/zconf.h" 3 4 +13943: typedef unsigned z_crc_t; +13943: # 484 "/usr/include/zconf.h" 3 4 +13943: # 1 "/usr/include/unistd.h" 1 3 4 +13943: # 27 "/usr/include/unistd.h" 3 4 +13943: extern "C" { +13943: # 202 "/usr/include/unistd.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 1 3 4 +13943: # 203 "/usr/include/unistd.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 1 3 4 +13943: # 22 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 2 3 4 +13943: # 207 "/usr/include/unistd.h" 2 3 4 +13943: # 226 "/usr/include/unistd.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 227 "/usr/include/unistd.h" 2 3 4 +13943: # 274 "/usr/include/unistd.h" 3 4 +13943: typedef __socklen_t socklen_t; +13943: # 287 "/usr/include/unistd.h" 3 4 +13943: extern int access (const char *__name, int __type) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: extern int euidaccess (const char *__name, int __type) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int eaccess (const char *__name, int __type) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern int execveat (int __fd, const char *__path, char *const __argv[], +13943: char *const __envp[], int __flags) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int faccessat (int __fd, const char *__file, int __type, int __flag) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); +13943: # 342 "/usr/include/unistd.h" 3 4 +13943: extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) noexcept (true) __asm__ ("" "lseek64") +13943: +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int close (int __fd); +13943: +13943: +13943: +13943: +13943: extern void closefrom (int __lowfd) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: +13943: +13943: +13943: +13943: +13943: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 404 "/usr/include/unistd.h" 3 4 +13943: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") +13943: +13943: __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64") +13943: +13943: __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: # 422 "/usr/include/unistd.h" 3 4 +13943: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, +13943: __off64_t __offset) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: +13943: +13943: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, +13943: __off64_t __offset) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__read_only__, 2, 3))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int pipe (int __pipedes[2]) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int pipe2 (int __pipedes[2], int __flags) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: # 452 "/usr/include/unistd.h" 3 4 +13943: extern unsigned int alarm (unsigned int __seconds) noexcept (true); +13943: # 464 "/usr/include/unistd.h" 3 4 +13943: extern unsigned int sleep (unsigned int __seconds); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int usleep (__useconds_t __useconds); +13943: # 489 "/usr/include/unistd.h" 3 4 +13943: extern int pause (void); +13943: +13943: +13943: +13943: extern int chown (const char *__file, __uid_t __owner, __gid_t __group) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fchownat (int __fd, const char *__file, __uid_t __owner, +13943: __gid_t __group, int __flag) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern int chdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern int fchdir (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: # 531 "/usr/include/unistd.h" 3 4 +13943: extern char *getcwd (char *__buf, size_t __size) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern char *get_current_dir_name (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *getwd (char *__buf) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 1))); +13943: +13943: +13943: +13943: +13943: extern int dup (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: extern int dup2 (int __fd, int __fd2) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int dup3 (int __fd, int __fd2, int __flags) noexcept (true); +13943: +13943: +13943: +13943: extern char **__environ; +13943: +13943: extern char **environ; +13943: +13943: +13943: +13943: +13943: +13943: extern int execve (const char *__path, char *const __argv[], +13943: char *const __envp[]) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: +13943: extern int execv (const char *__path, char *const __argv[]) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern int execle (const char *__path, const char *__arg, ...) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern int execl (const char *__path, const char *__arg, ...) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: extern int execvp (const char *__file, char *const __argv[]) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern int execlp (const char *__file, const char *__arg, ...) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: extern int execvpe (const char *__file, char *const __argv[], +13943: char *const __envp[]) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: extern int nice (int __inc) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern void _exit (int __status) __attribute__ ((__noreturn__)); +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 3 4 +13943: enum +13943: { +13943: _PC_LINK_MAX, +13943: +13943: _PC_MAX_CANON, +13943: +13943: _PC_MAX_INPUT, +13943: +13943: _PC_NAME_MAX, +13943: +13943: _PC_PATH_MAX, +13943: +13943: _PC_PIPE_BUF, +13943: +13943: _PC_CHOWN_RESTRICTED, +13943: +13943: _PC_NO_TRUNC, +13943: +13943: _PC_VDISABLE, +13943: +13943: _PC_SYNC_IO, +13943: +13943: _PC_ASYNC_IO, +13943: +13943: _PC_PRIO_IO, +13943: +13943: _PC_SOCK_MAXBUF, +13943: +13943: _PC_FILESIZEBITS, +13943: +13943: _PC_REC_INCR_XFER_SIZE, +13943: +13943: _PC_REC_MAX_XFER_SIZE, +13943: +13943: _PC_REC_MIN_XFER_SIZE, +13943: +13943: _PC_REC_XFER_ALIGN, +13943: +13943: _PC_ALLOC_SIZE_MIN, +13943: +13943: _PC_SYMLINK_MAX, +13943: +13943: _PC_2_SYMLINKS +13943: +13943: }; +13943: +13943: +13943: enum +13943: { +13943: _SC_ARG_MAX, +13943: +13943: _SC_CHILD_MAX, +13943: +13943: _SC_CLK_TCK, +13943: +13943: _SC_NGROUPS_MAX, +13943: +13943: _SC_OPEN_MAX, +13943: +13943: _SC_STREAM_MAX, +13943: +13943: _SC_TZNAME_MAX, +13943: +13943: _SC_JOB_CONTROL, +13943: +13943: _SC_SAVED_IDS, +13943: +13943: _SC_REALTIME_SIGNALS, +13943: +13943: _SC_PRIORITY_SCHEDULING, +13943: +13943: _SC_TIMERS, +13943: +13943: _SC_ASYNCHRONOUS_IO, +13943: +13943: _SC_PRIORITIZED_IO, +13943: +13943: _SC_SYNCHRONIZED_IO, +13943: +13943: _SC_FSYNC, +13943: +13943: _SC_MAPPED_FILES, +13943: +13943: _SC_MEMLOCK, +13943: +13943: _SC_MEMLOCK_RANGE, +13943: +13943: _SC_MEMORY_PROTECTION, +13943: +13943: _SC_MESSAGE_PASSING, +13943: +13943: _SC_SEMAPHORES, +13943: +13943: _SC_SHARED_MEMORY_OBJECTS, +13943: +13943: _SC_AIO_LISTIO_MAX, +13943: +13943: _SC_AIO_MAX, +13943: +13943: _SC_AIO_PRIO_DELTA_MAX, +13943: +13943: _SC_DELAYTIMER_MAX, +13943: +13943: _SC_MQ_OPEN_MAX, +13943: +13943: _SC_MQ_PRIO_MAX, +13943: +13943: _SC_VERSION, +13943: +13943: _SC_PAGESIZE, +13943: +13943: +13943: _SC_RTSIG_MAX, +13943: +13943: _SC_SEM_NSEMS_MAX, +13943: +13943: _SC_SEM_VALUE_MAX, +13943: +13943: _SC_SIGQUEUE_MAX, +13943: +13943: _SC_TIMER_MAX, +13943: +13943: +13943: +13943: +13943: _SC_BC_BASE_MAX, +13943: +13943: _SC_BC_DIM_MAX, +13943: +13943: _SC_BC_SCALE_MAX, +13943: +13943: _SC_BC_STRING_MAX, +13943: +13943: _SC_COLL_WEIGHTS_MAX, +13943: +13943: _SC_EQUIV_CLASS_MAX, +13943: +13943: _SC_EXPR_NEST_MAX, +13943: +13943: _SC_LINE_MAX, +13943: +13943: _SC_RE_DUP_MAX, +13943: +13943: _SC_CHARCLASS_NAME_MAX, +13943: +13943: +13943: _SC_2_VERSION, +13943: +13943: _SC_2_C_BIND, +13943: +13943: _SC_2_C_DEV, +13943: +13943: _SC_2_FORT_DEV, +13943: +13943: _SC_2_FORT_RUN, +13943: +13943: _SC_2_SW_DEV, +13943: +13943: _SC_2_LOCALEDEF, +13943: +13943: +13943: _SC_PII, +13943: +13943: _SC_PII_XTI, +13943: +13943: _SC_PII_SOCKET, +13943: +13943: _SC_PII_INTERNET, +13943: +13943: _SC_PII_OSI, +13943: +13943: _SC_POLL, +13943: +13943: _SC_SELECT, +13943: +13943: _SC_UIO_MAXIOV, +13943: +13943: _SC_IOV_MAX = _SC_UIO_MAXIOV, +13943: +13943: _SC_PII_INTERNET_STREAM, +13943: +13943: _SC_PII_INTERNET_DGRAM, +13943: +13943: _SC_PII_OSI_COTS, +13943: +13943: _SC_PII_OSI_CLTS, +13943: +13943: _SC_PII_OSI_M, +13943: +13943: _SC_T_IOV_MAX, +13943: +13943: +13943: +13943: _SC_THREADS, +13943: +13943: _SC_THREAD_SAFE_FUNCTIONS, +13943: +13943: _SC_GETGR_R_SIZE_MAX, +13943: +13943: _SC_GETPW_R_SIZE_MAX, +13943: +13943: _SC_LOGIN_NAME_MAX, +13943: +13943: _SC_TTY_NAME_MAX, +13943: +13943: _SC_THREAD_DESTRUCTOR_ITERATIONS, +13943: +13943: _SC_THREAD_KEYS_MAX, +13943: +13943: _SC_THREAD_STACK_MIN, +13943: +13943: _SC_THREAD_THREADS_MAX, +13943: +13943: _SC_THREAD_ATTR_STACKADDR, +13943: +13943: _SC_THREAD_ATTR_STACKSIZE, +13943: +13943: _SC_THREAD_PRIORITY_SCHEDULING, +13943: +13943: _SC_THREAD_PRIO_INHERIT, +13943: +13943: _SC_THREAD_PRIO_PROTECT, +13943: +13943: _SC_THREAD_PROCESS_SHARED, +13943: +13943: +13943: _SC_NPROCESSORS_CONF, +13943: +13943: _SC_NPROCESSORS_ONLN, +13943: +13943: _SC_PHYS_PAGES, +13943: +13943: _SC_AVPHYS_PAGES, +13943: +13943: _SC_ATEXIT_MAX, +13943: +13943: _SC_PASS_MAX, +13943: +13943: +13943: _SC_XOPEN_VERSION, +13943: +13943: _SC_XOPEN_XCU_VERSION, +13943: +13943: _SC_XOPEN_UNIX, +13943: +13943: _SC_XOPEN_CRYPT, +13943: +13943: _SC_XOPEN_ENH_I18N, +13943: +13943: _SC_XOPEN_SHM, +13943: +13943: +13943: _SC_2_CHAR_TERM, +13943: +13943: _SC_2_C_VERSION, +13943: +13943: _SC_2_UPE, +13943: +13943: +13943: _SC_XOPEN_XPG2, +13943: +13943: _SC_XOPEN_XPG3, +13943: +13943: _SC_XOPEN_XPG4, +13943: +13943: +13943: _SC_CHAR_BIT, +13943: +13943: _SC_CHAR_MAX, +13943: +13943: _SC_CHAR_MIN, +13943: +13943: _SC_INT_MAX, +13943: +13943: _SC_INT_MIN, +13943: +13943: _SC_LONG_BIT, +13943: +13943: _SC_WORD_BIT, +13943: +13943: _SC_MB_LEN_MAX, +13943: +13943: _SC_NZERO, +13943: +13943: _SC_SSIZE_MAX, +13943: +13943: _SC_SCHAR_MAX, +13943: +13943: _SC_SCHAR_MIN, +13943: +13943: _SC_SHRT_MAX, +13943: +13943: _SC_SHRT_MIN, +13943: +13943: _SC_UCHAR_MAX, +13943: +13943: _SC_UINT_MAX, +13943: +13943: _SC_ULONG_MAX, +13943: +13943: _SC_USHRT_MAX, +13943: +13943: +13943: _SC_NL_ARGMAX, +13943: +13943: _SC_NL_LANGMAX, +13943: +13943: _SC_NL_MSGMAX, +13943: +13943: _SC_NL_NMAX, +13943: +13943: _SC_NL_SETMAX, +13943: +13943: _SC_NL_TEXTMAX, +13943: +13943: +13943: _SC_XBS5_ILP32_OFF32, +13943: +13943: _SC_XBS5_ILP32_OFFBIG, +13943: +13943: _SC_XBS5_LP64_OFF64, +13943: +13943: _SC_XBS5_LPBIG_OFFBIG, +13943: +13943: +13943: _SC_XOPEN_LEGACY, +13943: +13943: _SC_XOPEN_REALTIME, +13943: +13943: _SC_XOPEN_REALTIME_THREADS, +13943: +13943: +13943: _SC_ADVISORY_INFO, +13943: +13943: _SC_BARRIERS, +13943: +13943: _SC_BASE, +13943: +13943: _SC_C_LANG_SUPPORT, +13943: +13943: _SC_C_LANG_SUPPORT_R, +13943: +13943: _SC_CLOCK_SELECTION, +13943: +13943: _SC_CPUTIME, +13943: +13943: _SC_THREAD_CPUTIME, +13943: +13943: _SC_DEVICE_IO, +13943: +13943: _SC_DEVICE_SPECIFIC, +13943: +13943: _SC_DEVICE_SPECIFIC_R, +13943: +13943: _SC_FD_MGMT, +13943: +13943: _SC_FIFO, +13943: +13943: _SC_PIPE, +13943: +13943: _SC_FILE_ATTRIBUTES, +13943: +13943: _SC_FILE_LOCKING, +13943: +13943: _SC_FILE_SYSTEM, +13943: +13943: _SC_MONOTONIC_CLOCK, +13943: +13943: _SC_MULTI_PROCESS, +13943: +13943: _SC_SINGLE_PROCESS, +13943: +13943: _SC_NETWORKING, +13943: +13943: _SC_READER_WRITER_LOCKS, +13943: +13943: _SC_SPIN_LOCKS, +13943: +13943: _SC_REGEXP, +13943: +13943: _SC_REGEX_VERSION, +13943: +13943: _SC_SHELL, +13943: +13943: _SC_SIGNALS, +13943: +13943: _SC_SPAWN, +13943: +13943: _SC_SPORADIC_SERVER, +13943: +13943: _SC_THREAD_SPORADIC_SERVER, +13943: +13943: _SC_SYSTEM_DATABASE, +13943: +13943: _SC_SYSTEM_DATABASE_R, +13943: +13943: _SC_TIMEOUTS, +13943: +13943: _SC_TYPED_MEMORY_OBJECTS, +13943: +13943: _SC_USER_GROUPS, +13943: +13943: _SC_USER_GROUPS_R, +13943: +13943: _SC_2_PBS, +13943: +13943: _SC_2_PBS_ACCOUNTING, +13943: +13943: _SC_2_PBS_LOCATE, +13943: +13943: _SC_2_PBS_MESSAGE, +13943: +13943: _SC_2_PBS_TRACK, +13943: +13943: _SC_SYMLOOP_MAX, +13943: +13943: _SC_STREAMS, +13943: +13943: _SC_2_PBS_CHECKPOINT, +13943: +13943: +13943: _SC_V6_ILP32_OFF32, +13943: +13943: _SC_V6_ILP32_OFFBIG, +13943: +13943: _SC_V6_LP64_OFF64, +13943: +13943: _SC_V6_LPBIG_OFFBIG, +13943: +13943: +13943: _SC_HOST_NAME_MAX, +13943: +13943: _SC_TRACE, +13943: +13943: _SC_TRACE_EVENT_FILTER, +13943: +13943: _SC_TRACE_INHERIT, +13943: +13943: _SC_TRACE_LOG, +13943: +13943: +13943: _SC_LEVEL1_ICACHE_SIZE, +13943: +13943: _SC_LEVEL1_ICACHE_ASSOC, +13943: +13943: _SC_LEVEL1_ICACHE_LINESIZE, +13943: +13943: _SC_LEVEL1_DCACHE_SIZE, +13943: +13943: _SC_LEVEL1_DCACHE_ASSOC, +13943: +13943: _SC_LEVEL1_DCACHE_LINESIZE, +13943: +13943: _SC_LEVEL2_CACHE_SIZE, +13943: +13943: _SC_LEVEL2_CACHE_ASSOC, +13943: +13943: _SC_LEVEL2_CACHE_LINESIZE, +13943: +13943: _SC_LEVEL3_CACHE_SIZE, +13943: +13943: _SC_LEVEL3_CACHE_ASSOC, +13943: +13943: _SC_LEVEL3_CACHE_LINESIZE, +13943: +13943: _SC_LEVEL4_CACHE_SIZE, +13943: +13943: _SC_LEVEL4_CACHE_ASSOC, +13943: +13943: _SC_LEVEL4_CACHE_LINESIZE, +13943: +13943: +13943: +13943: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, +13943: +13943: _SC_RAW_SOCKETS, +13943: +13943: +13943: _SC_V7_ILP32_OFF32, +13943: +13943: _SC_V7_ILP32_OFFBIG, +13943: +13943: _SC_V7_LP64_OFF64, +13943: +13943: _SC_V7_LPBIG_OFFBIG, +13943: +13943: +13943: _SC_SS_REPL_MAX, +13943: +13943: +13943: _SC_TRACE_EVENT_NAME_MAX, +13943: +13943: _SC_TRACE_NAME_MAX, +13943: +13943: _SC_TRACE_SYS_MAX, +13943: +13943: _SC_TRACE_USER_EVENT_MAX, +13943: +13943: +13943: _SC_XOPEN_STREAMS, +13943: +13943: +13943: _SC_THREAD_ROBUST_PRIO_INHERIT, +13943: +13943: _SC_THREAD_ROBUST_PRIO_PROTECT, +13943: +13943: +13943: _SC_MINSIGSTKSZ, +13943: +13943: +13943: _SC_SIGSTKSZ +13943: +13943: }; +13943: +13943: +13943: enum +13943: { +13943: _CS_PATH, +13943: +13943: +13943: _CS_V6_WIDTH_RESTRICTED_ENVS, +13943: +13943: +13943: +13943: _CS_GNU_LIBC_VERSION, +13943: +13943: _CS_GNU_LIBPTHREAD_VERSION, +13943: +13943: +13943: _CS_V5_WIDTH_RESTRICTED_ENVS, +13943: +13943: +13943: +13943: _CS_V7_WIDTH_RESTRICTED_ENVS, +13943: +13943: +13943: +13943: _CS_LFS_CFLAGS = 1000, +13943: +13943: _CS_LFS_LDFLAGS, +13943: +13943: _CS_LFS_LIBS, +13943: +13943: _CS_LFS_LINTFLAGS, +13943: +13943: _CS_LFS64_CFLAGS, +13943: +13943: _CS_LFS64_LDFLAGS, +13943: +13943: _CS_LFS64_LIBS, +13943: +13943: _CS_LFS64_LINTFLAGS, +13943: +13943: +13943: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, +13943: +13943: _CS_XBS5_ILP32_OFF32_LDFLAGS, +13943: +13943: _CS_XBS5_ILP32_OFF32_LIBS, +13943: +13943: _CS_XBS5_ILP32_OFF32_LINTFLAGS, +13943: +13943: _CS_XBS5_ILP32_OFFBIG_CFLAGS, +13943: +13943: _CS_XBS5_ILP32_OFFBIG_LDFLAGS, +13943: +13943: _CS_XBS5_ILP32_OFFBIG_LIBS, +13943: +13943: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, +13943: +13943: _CS_XBS5_LP64_OFF64_CFLAGS, +13943: +13943: _CS_XBS5_LP64_OFF64_LDFLAGS, +13943: +13943: _CS_XBS5_LP64_OFF64_LIBS, +13943: +13943: _CS_XBS5_LP64_OFF64_LINTFLAGS, +13943: +13943: _CS_XBS5_LPBIG_OFFBIG_CFLAGS, +13943: +13943: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, +13943: +13943: _CS_XBS5_LPBIG_OFFBIG_LIBS, +13943: +13943: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, +13943: +13943: +13943: _CS_POSIX_V6_ILP32_OFF32_CFLAGS, +13943: +13943: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, +13943: +13943: _CS_POSIX_V6_ILP32_OFF32_LIBS, +13943: +13943: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, +13943: +13943: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, +13943: +13943: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, +13943: +13943: _CS_POSIX_V6_ILP32_OFFBIG_LIBS, +13943: +13943: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, +13943: +13943: _CS_POSIX_V6_LP64_OFF64_CFLAGS, +13943: +13943: _CS_POSIX_V6_LP64_OFF64_LDFLAGS, +13943: +13943: _CS_POSIX_V6_LP64_OFF64_LIBS, +13943: +13943: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, +13943: +13943: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, +13943: +13943: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, +13943: +13943: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, +13943: +13943: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, +13943: +13943: +13943: _CS_POSIX_V7_ILP32_OFF32_CFLAGS, +13943: +13943: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, +13943: +13943: _CS_POSIX_V7_ILP32_OFF32_LIBS, +13943: +13943: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, +13943: +13943: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, +13943: +13943: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, +13943: +13943: _CS_POSIX_V7_ILP32_OFFBIG_LIBS, +13943: +13943: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, +13943: +13943: _CS_POSIX_V7_LP64_OFF64_CFLAGS, +13943: +13943: _CS_POSIX_V7_LP64_OFF64_LDFLAGS, +13943: +13943: _CS_POSIX_V7_LP64_OFF64_LIBS, +13943: +13943: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, +13943: +13943: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, +13943: +13943: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, +13943: +13943: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, +13943: +13943: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, +13943: +13943: +13943: _CS_V6_ENV, +13943: +13943: _CS_V7_ENV +13943: +13943: }; +13943: # 631 "/usr/include/unistd.h" 2 3 4 +13943: +13943: +13943: extern long int pathconf (const char *__path, int __name) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: extern long int fpathconf (int __fd, int __name) noexcept (true); +13943: +13943: +13943: extern long int sysconf (int __name) noexcept (true); +13943: +13943: +13943: +13943: extern size_t confstr (int __name, char *__buf, size_t __len) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: +13943: +13943: +13943: +13943: extern __pid_t getpid (void) noexcept (true); +13943: +13943: +13943: extern __pid_t getppid (void) noexcept (true); +13943: +13943: +13943: extern __pid_t getpgrp (void) noexcept (true); +13943: +13943: +13943: extern __pid_t __getpgid (__pid_t __pid) noexcept (true); +13943: +13943: extern __pid_t getpgid (__pid_t __pid) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int setpgid (__pid_t __pid, __pid_t __pgid) noexcept (true); +13943: # 682 "/usr/include/unistd.h" 3 4 +13943: extern int setpgrp (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern __pid_t setsid (void) noexcept (true); +13943: +13943: +13943: +13943: extern __pid_t getsid (__pid_t __pid) noexcept (true); +13943: +13943: +13943: +13943: extern __uid_t getuid (void) noexcept (true); +13943: +13943: +13943: extern __uid_t geteuid (void) noexcept (true); +13943: +13943: +13943: extern __gid_t getgid (void) noexcept (true); +13943: +13943: +13943: extern __gid_t getegid (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int getgroups (int __size, __gid_t __list[]) noexcept (true) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 2, 1))); +13943: +13943: +13943: extern int group_member (__gid_t __gid) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int setuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int setreuid (__uid_t __ruid, __uid_t __euid) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int seteuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int setgid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int setregid (__gid_t __rgid, __gid_t __egid) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int setegid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) +13943: noexcept (true); +13943: +13943: +13943: +13943: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) +13943: noexcept (true); +13943: +13943: +13943: +13943: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern __pid_t fork (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern __pid_t vfork (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern __pid_t _Fork (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern char *ttyname (int __fd) noexcept (true); +13943: +13943: +13943: +13943: extern int ttyname_r (int __fd, char *__buf, size_t __buflen) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: +13943: +13943: +13943: extern int isatty (int __fd) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int ttyslot (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int link (const char *__from, const char *__to) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int linkat (int __fromfd, const char *__from, int __tofd, +13943: const char *__to, int __flags) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern int symlink (const char *__from, const char *__to) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: extern ssize_t readlink (const char *__restrict __path, +13943: char *__restrict __buf, size_t __len) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: +13943: +13943: +13943: +13943: +13943: extern int symlinkat (const char *__from, int __tofd, +13943: const char *__to) noexcept (true) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: extern ssize_t readlinkat (int __fd, const char *__restrict __path, +13943: char *__restrict __buf, size_t __len) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 3, 4))); +13943: +13943: +13943: +13943: extern int unlink (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern int unlinkat (int __fd, const char *__name, int __flag) +13943: noexcept (true) __attribute__ ((__nonnull__ (2))); +13943: +13943: +13943: +13943: extern int rmdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: extern __pid_t tcgetpgrp (int __fd) noexcept (true); +13943: +13943: +13943: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *getlogin (void); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: +13943: +13943: +13943: +13943: extern int setlogin (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 1 3 4 +13943: # 27 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 1 3 4 +13943: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char *optarg; +13943: # 50 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 +13943: extern int optind; +13943: +13943: +13943: +13943: +13943: extern int opterr; +13943: +13943: +13943: +13943: extern int optopt; +13943: # 91 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 +13943: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +13943: +13943: } +13943: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 2 3 4 +13943: +13943: extern "C" { +13943: # 49 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 +13943: } +13943: # 904 "/usr/include/unistd.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int gethostname (char *__name, size_t __len) noexcept (true) __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int sethostname (const char *__name, size_t __len) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); +13943: +13943: +13943: +13943: extern int sethostid (long int __id) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int getdomainname (char *__name, size_t __len) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern int setdomainname (const char *__name, size_t __len) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); +13943: +13943: +13943: +13943: +13943: extern int vhangup (void) noexcept (true); +13943: +13943: +13943: extern int revoke (const char *__file) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int profil (unsigned short int *__sample_buffer, size_t __size, +13943: size_t __offset, unsigned int __scale) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: extern int acct (const char *__name) noexcept (true); +13943: +13943: +13943: +13943: extern char *getusershell (void) noexcept (true); +13943: extern void endusershell (void) noexcept (true); +13943: extern void setusershell (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern int daemon (int __nochdir, int __noclose) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int chroot (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int fsync (int __fd); +13943: +13943: +13943: +13943: +13943: +13943: extern int syncfs (int __fd) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern long int gethostid (void); +13943: +13943: +13943: extern void sync (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern int getpagesize (void) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: +13943: +13943: extern int getdtablesize (void) noexcept (true); +13943: # 1030 "/usr/include/unistd.h" 3 4 +13943: extern int truncate (const char *__file, __off64_t __length) noexcept (true) __asm__ ("" "truncate64") +13943: +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int truncate64 (const char *__file, __off64_t __length) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +13943: # 1052 "/usr/include/unistd.h" 3 4 +13943: extern int ftruncate (int __fd, __off64_t __length) noexcept (true) __asm__ ("" "ftruncate64") +13943: __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int ftruncate64 (int __fd, __off64_t __length) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: # 1070 "/usr/include/unistd.h" 3 4 +13943: extern int brk (void *__addr) noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern void *sbrk (intptr_t __delta) noexcept (true); +13943: # 1091 "/usr/include/unistd.h" 3 4 +13943: extern long int syscall (long int __sysno, ...) noexcept (true); +13943: # 1117 "/usr/include/unistd.h" 3 4 +13943: extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64") +13943: __attribute__ ((__warn_unused_result__)); +13943: +13943: +13943: +13943: +13943: +13943: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); +13943: # 1142 "/usr/include/unistd.h" 3 4 +13943: ssize_t copy_file_range (int __infd, __off64_t *__pinoff, +13943: int __outfd, __off64_t *__poutoff, +13943: size_t __length, unsigned int __flags); +13943: +13943: +13943: +13943: +13943: +13943: extern int fdatasync (int __fildes); +13943: # 1162 "/usr/include/unistd.h" 3 4 +13943: extern char *crypt (const char *__key, const char *__salt) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern void swab (const void *__restrict __from, void *__restrict __to, +13943: ssize_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))) +13943: __attribute__ ((__access__ (__read_only__, 1, 3))) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: # 1201 "/usr/include/unistd.h" 3 4 +13943: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)) +13943: __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: # 1211 "/usr/include/unistd.h" 3 4 +13943: extern int close_range (unsigned int __fd, unsigned int __max_fd, +13943: int __flags) noexcept (true); +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 1 3 4 +13943: # 23 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 1 3 4 +13943: # 26 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 3 4 +13943: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, +13943: size_t __buflen) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) +13943: ; +13943: +13943: +13943: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, +13943: __off_t __offset, size_t __bufsize) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, +13943: __off64_t __offset, size_t __bufsize) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) +13943: ; +13943: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") +13943: +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) +13943: ; +13943: +13943: +13943: +13943: extern ssize_t __readlink_chk (const char *__restrict __path, +13943: char *__restrict __buf, size_t __len, +13943: size_t __buflen) +13943: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlink") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__readlink_chk") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) +13943: ; +13943: +13943: +13943: +13943: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, +13943: char *__restrict __buf, size_t __len, +13943: size_t __buflen) +13943: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); +13943: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlinkat") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); +13943: 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") +13943: +13943: +13943: +13943: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) +13943: +13943: ; +13943: +13943: +13943: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)); +13943: extern char *__getcwd_alias (char *__buf, size_t __size) noexcept (true) __asm__ ("" "getcwd") +13943: __attribute__ ((__warn_unused_result__)); +13943: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) noexcept (true) __asm__ ("" "__getcwd_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) +13943: ; +13943: +13943: +13943: extern char *__getwd_chk (char *__buf, size_t buflen) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern char *__getwd_warn (char *__buf) noexcept (true) __asm__ ("" "getwd") +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) +13943: ; +13943: +13943: +13943: extern size_t __confstr_chk (int __name, char *__buf, size_t __len, +13943: size_t __buflen) noexcept (true) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) noexcept (true) __asm__ ("" "confstr") +13943: +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__confstr_chk") +13943: +13943: +13943: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) +13943: ; +13943: +13943: +13943: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) +13943: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); +13943: extern int __getgroups_alias (int __size, __gid_t __list[]) noexcept (true) __asm__ ("" "getgroups") +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); +13943: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) noexcept (true) __asm__ ("" "__getgroups_chk") +13943: +13943: +13943: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) +13943: ; +13943: +13943: +13943: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, +13943: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) +13943: __attribute__ ((__access__ (__write_only__, 2, 3))); +13943: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ttyname_r") +13943: +13943: __attribute__ ((__nonnull__ (2))); +13943: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ttyname_r_chk") +13943: +13943: +13943: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) +13943: ; +13943: +13943: +13943: +13943: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") +13943: __attribute__ ((__nonnull__ (1))); +13943: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) +13943: ; +13943: +13943: +13943: +13943: +13943: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern int __gethostname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "gethostname") +13943: +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__gethostname_chk") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) +13943: ; +13943: +13943: +13943: +13943: +13943: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) +13943: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern int __getdomainname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "getdomainname") +13943: +13943: __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +13943: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__getdomainname_chk") +13943: +13943: +13943: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) +13943: +13943: ; +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 2 3 4 +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +13943: read (int __fd, void * __buf, size_t __nbytes) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_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_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_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_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)) : __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)))) +13943: +13943: ; +13943: } +13943: # 51 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +13943: pread (int __fd, void * __buf, +13943: size_t __nbytes, __off64_t __offset) +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_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_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_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_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +13943: pread64 (int __fd, void * __buf, +13943: size_t __nbytes, __off64_t __offset) +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_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_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_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_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t +13943: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t +13943: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __readlinkat_chk_warn (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +13943: __attribute__ ((__leaf__)) getcwd (char * __buf, size_t __size) noexcept (true) +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__size)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)) : __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) +13943: __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * +13943: __attribute__ ((__leaf__)) getwd (char * __buf) noexcept (true) +13943: { +13943: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) +13943: return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); +13943: return __getwd_warn (__buf); +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +13943: __attribute__ ((__leaf__)) confstr (int __name, char * __buf, size_t __len) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t * __list) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__list, 2 > 1)) && (__builtin_object_size (__list, 2 > 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_object_size (__list, 2 > 1))) / ((sizeof (__gid_t))))) && (((unsigned int) (__size)) <= ((__builtin_object_size (__list, 2 > 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_object_size (__list, 2 > 1)) / (sizeof (__gid_t)))) && !(((unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (sizeof (__gid_t)))) ? __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)) : __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) ttyname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: getlogin_r (char * __buf, size_t __buflen) +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) gethostname (char * __buf, size_t __buflen) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: +13943: +13943: +13943: +13943: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +13943: __attribute__ ((__leaf__)) getdomainname (char * __buf, size_t __buflen) noexcept (true) +13943: +13943: +13943: +13943: +13943: { +13943: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +13943: +13943: ; +13943: } +13943: # 1218 "/usr/include/unistd.h" 2 3 4 +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 1 3 4 +13943: # 34 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 3 4 +13943: extern __pid_t gettid (void) noexcept (true); +13943: +13943: +13943: +13943: # 1 "/usr/include/linux/close_range.h" 1 3 4 +13943: # 39 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 2 3 4 +13943: # 1222 "/usr/include/unistd.h" 2 3 4 +13943: +13943: } +13943: # 485 "/usr/include/zconf.h" 2 3 4 +13943: # 35 "/usr/include/zlib.h" 2 3 4 +13943: +13943: +13943: extern "C" { +13943: # 81 "/usr/include/zlib.h" 3 4 +13943: typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); +13943: typedef void (*free_func)(voidpf opaque, voidpf address); +13943: +13943: struct internal_state; +13943: +13943: typedef struct z_stream_s { +13943: Bytef *next_in; +13943: uInt avail_in; +13943: uLong total_in; +13943: +13943: Bytef *next_out; +13943: uInt avail_out; +13943: uLong total_out; +13943: +13943: char *msg; +13943: struct internal_state *state; +13943: +13943: alloc_func zalloc; +13943: free_func zfree; +13943: voidpf opaque; +13943: +13943: int data_type; +13943: +13943: uLong adler; +13943: uLong reserved; +13943: } z_stream; +13943: +13943: typedef z_stream *z_streamp; +13943: +13943: +13943: +13943: +13943: +13943: typedef struct gz_header_s { +13943: int text; +13943: uLong time; +13943: int xflags; +13943: int os; +13943: Bytef *extra; +13943: uInt extra_len; +13943: uInt extra_max; +13943: Bytef *name; +13943: uInt name_max; +13943: Bytef *comment; +13943: uInt comm_max; +13943: int hcrc; +13943: int done; +13943: +13943: } gz_header; +13943: +13943: typedef gz_header *gz_headerp; +13943: # 220 "/usr/include/zlib.h" 3 4 +13943: extern const char * zlibVersion(void); +13943: # 250 "/usr/include/zlib.h" 3 4 +13943: extern int deflate(z_streamp strm, int flush); +13943: # 363 "/usr/include/zlib.h" 3 4 +13943: extern int deflateEnd(z_streamp strm); +13943: # 401 "/usr/include/zlib.h" 3 4 +13943: extern int inflate(z_streamp strm, int flush); +13943: # 521 "/usr/include/zlib.h" 3 4 +13943: extern int inflateEnd(z_streamp strm); +13943: # 611 "/usr/include/zlib.h" 3 4 +13943: extern int deflateSetDictionary(z_streamp strm, +13943: const Bytef *dictionary, +13943: uInt dictLength); +13943: # 655 "/usr/include/zlib.h" 3 4 +13943: extern int deflateGetDictionary(z_streamp strm, +13943: Bytef *dictionary, +13943: uInt *dictLength); +13943: # 677 "/usr/include/zlib.h" 3 4 +13943: extern int deflateCopy(z_streamp dest, +13943: z_streamp source); +13943: # 695 "/usr/include/zlib.h" 3 4 +13943: extern int deflateReset(z_streamp strm); +13943: # 706 "/usr/include/zlib.h" 3 4 +13943: extern int deflateParams(z_streamp strm, +13943: int level, +13943: int strategy); +13943: # 744 "/usr/include/zlib.h" 3 4 +13943: extern int deflateTune(z_streamp strm, +13943: int good_length, +13943: int max_lazy, +13943: int nice_length, +13943: int max_chain); +13943: # 761 "/usr/include/zlib.h" 3 4 +13943: extern uLong deflateBound(z_streamp strm, +13943: uLong sourceLen); +13943: # 776 "/usr/include/zlib.h" 3 4 +13943: extern int deflatePending(z_streamp strm, +13943: unsigned *pending, +13943: int *bits); +13943: # 791 "/usr/include/zlib.h" 3 4 +13943: extern int deflatePrime(z_streamp strm, +13943: int bits, +13943: int value); +13943: # 808 "/usr/include/zlib.h" 3 4 +13943: extern int deflateSetHeader(z_streamp strm, +13943: gz_headerp head); +13943: # 888 "/usr/include/zlib.h" 3 4 +13943: extern int inflateSetDictionary(z_streamp strm, +13943: const Bytef *dictionary, +13943: uInt dictLength); +13943: # 911 "/usr/include/zlib.h" 3 4 +13943: extern int inflateGetDictionary(z_streamp strm, +13943: Bytef *dictionary, +13943: uInt *dictLength); +13943: # 926 "/usr/include/zlib.h" 3 4 +13943: extern int inflateSync(z_streamp strm); +13943: # 945 "/usr/include/zlib.h" 3 4 +13943: extern int inflateCopy(z_streamp dest, +13943: z_streamp source); +13943: # 961 "/usr/include/zlib.h" 3 4 +13943: extern int inflateReset(z_streamp strm); +13943: # 972 "/usr/include/zlib.h" 3 4 +13943: extern int inflateReset2(z_streamp strm, +13943: int windowBits); +13943: # 986 "/usr/include/zlib.h" 3 4 +13943: extern int inflatePrime(z_streamp strm, +13943: int bits, +13943: int value); +13943: # 1007 "/usr/include/zlib.h" 3 4 +13943: extern long inflateMark(z_streamp strm); +13943: # 1035 "/usr/include/zlib.h" 3 4 +13943: extern int inflateGetHeader(z_streamp strm, +13943: gz_headerp head); +13943: # 1097 "/usr/include/zlib.h" 3 4 +13943: typedef unsigned (*in_func)(void *, +13943: unsigned char * *); +13943: typedef int (*out_func)(void *, unsigned char *, unsigned); +13943: +13943: extern int inflateBack(z_streamp strm, +13943: in_func in, void *in_desc, +13943: out_func out, void *out_desc); +13943: # 1171 "/usr/include/zlib.h" 3 4 +13943: extern int inflateBackEnd(z_streamp strm); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern uLong zlibCompileFlags(void); +13943: # 1232 "/usr/include/zlib.h" 3 4 +13943: extern int compress(Bytef *dest, uLongf *destLen, +13943: const Bytef *source, uLong sourceLen); +13943: # 1247 "/usr/include/zlib.h" 3 4 +13943: extern int compress2(Bytef *dest, uLongf *destLen, +13943: const Bytef *source, uLong sourceLen, +13943: int level); +13943: # 1263 "/usr/include/zlib.h" 3 4 +13943: extern uLong compressBound(uLong sourceLen); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int uncompress(Bytef *dest, uLongf *destLen, +13943: const Bytef *source, uLong sourceLen); +13943: # 1288 "/usr/include/zlib.h" 3 4 +13943: extern int uncompress2(Bytef *dest, uLongf *destLen, +13943: const Bytef *source, uLong *sourceLen); +13943: # 1305 "/usr/include/zlib.h" 3 4 +13943: typedef struct gzFile_s *gzFile; +13943: # 1345 "/usr/include/zlib.h" 3 4 +13943: extern gzFile gzdopen(int fd, const char *mode); +13943: # 1368 "/usr/include/zlib.h" 3 4 +13943: extern int gzbuffer(gzFile file, unsigned size); +13943: # 1384 "/usr/include/zlib.h" 3 4 +13943: extern int gzsetparams(gzFile file, int level, int strategy); +13943: # 1395 "/usr/include/zlib.h" 3 4 +13943: extern int gzread(gzFile file, voidp buf, unsigned len); +13943: # 1425 "/usr/include/zlib.h" 3 4 +13943: extern z_size_t gzfread(voidp buf, z_size_t size, z_size_t nitems, +13943: gzFile file); +13943: # 1451 "/usr/include/zlib.h" 3 4 +13943: extern int gzwrite(gzFile file, voidpc buf, unsigned len); +13943: +13943: +13943: +13943: +13943: +13943: extern z_size_t gzfwrite(voidpc buf, z_size_t size, +13943: z_size_t nitems, gzFile file); +13943: # 1471 "/usr/include/zlib.h" 3 4 +13943: extern int gzprintf(gzFile file, const char *format, ...); +13943: # 1486 "/usr/include/zlib.h" 3 4 +13943: extern int gzputs(gzFile file, const char *s); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern char * gzgets(gzFile file, char *buf, int len); +13943: # 1508 "/usr/include/zlib.h" 3 4 +13943: extern int gzputc(gzFile file, int c); +13943: +13943: +13943: +13943: +13943: +13943: extern int gzgetc(gzFile file); +13943: # 1523 "/usr/include/zlib.h" 3 4 +13943: extern int gzungetc(int c, gzFile file); +13943: # 1535 "/usr/include/zlib.h" 3 4 +13943: extern int gzflush(gzFile file, int flush); +13943: # 1570 "/usr/include/zlib.h" 3 4 +13943: extern int gzrewind(gzFile file); +13943: # 1598 "/usr/include/zlib.h" 3 4 +13943: extern int gzeof(gzFile file); +13943: # 1613 "/usr/include/zlib.h" 3 4 +13943: extern int gzdirect(gzFile file); +13943: # 1634 "/usr/include/zlib.h" 3 4 +13943: extern int gzclose(gzFile file); +13943: # 1647 "/usr/include/zlib.h" 3 4 +13943: extern int gzclose_r(gzFile file); +13943: extern int gzclose_w(gzFile file); +13943: # 1659 "/usr/include/zlib.h" 3 4 +13943: extern const char * gzerror(gzFile file, int *errnum); +13943: # 1675 "/usr/include/zlib.h" 3 4 +13943: extern void gzclearerr(gzFile file); +13943: # 1692 "/usr/include/zlib.h" 3 4 +13943: extern uLong adler32(uLong adler, const Bytef *buf, uInt len); +13943: # 1712 "/usr/include/zlib.h" 3 4 +13943: extern uLong adler32_z(uLong adler, const Bytef *buf, +13943: z_size_t len); +13943: # 1730 "/usr/include/zlib.h" 3 4 +13943: extern uLong crc32(uLong crc, const Bytef *buf, uInt len); +13943: # 1748 "/usr/include/zlib.h" 3 4 +13943: extern uLong crc32_z(uLong crc, const Bytef *buf, +13943: z_size_t len); +13943: # 1771 "/usr/include/zlib.h" 3 4 +13943: extern uLong crc32_combine_op(uLong crc1, uLong crc2, uLong op); +13943: # 1784 "/usr/include/zlib.h" 3 4 +13943: extern int deflateInit_(z_streamp strm, int level, +13943: const char *version, int stream_size); +13943: extern int inflateInit_(z_streamp strm, +13943: const char *version, int stream_size); +13943: extern int deflateInit2_(z_streamp strm, int level, int method, +13943: int windowBits, int memLevel, +13943: int strategy, const char *version, +13943: int stream_size); +13943: extern int inflateInit2_(z_streamp strm, int windowBits, +13943: const char *version, int stream_size); +13943: extern int inflateBackInit_(z_streamp strm, int windowBits, +13943: unsigned char *window, +13943: const char *version, +13943: int stream_size); +13943: # 1837 "/usr/include/zlib.h" 3 4 +13943: struct gzFile_s { +13943: unsigned have; +13943: unsigned char *next; +13943: off64_t pos; +13943: }; +13943: extern int gzgetc_(gzFile file); +13943: # 1859 "/usr/include/zlib.h" 3 4 +13943: extern gzFile gzopen64(const char *, const char *); +13943: extern off64_t gzseek64(gzFile, off64_t, int); +13943: extern off64_t gztell64(gzFile); +13943: extern off64_t gzoffset64(gzFile); +13943: extern uLong adler32_combine64(uLong, uLong, off64_t); +13943: extern uLong crc32_combine64(uLong, uLong, off64_t); +13943: extern uLong crc32_combine_gen64(off64_t); +13943: # 1914 "/usr/include/zlib.h" 3 4 +13943: extern const char * zError(int); +13943: extern int inflateSyncPoint(z_streamp); +13943: extern const z_crc_t * get_crc_table(void); +13943: extern int inflateUndermine(z_streamp, int); +13943: extern int inflateValidate(z_streamp, int); +13943: extern unsigned long inflateCodesUsed(z_streamp); +13943: extern int inflateResetKeep(z_streamp); +13943: extern int deflateResetKeep(z_streamp); +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int gzvprintf(gzFile file, +13943: const char *format, +13943: va_list va); +13943: +13943: +13943: +13943: +13943: } +13943: # 38 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: +13943: +13943: # 1 "/usr/include/bzlib.h" 1 3 4 +13943: # 26 "/usr/include/bzlib.h" 3 4 +13943: extern "C" { +13943: # 48 "/usr/include/bzlib.h" 3 4 +13943: typedef +13943: struct { +13943: char *next_in; +13943: unsigned int avail_in; +13943: unsigned int total_in_lo32; +13943: unsigned int total_in_hi32; +13943: +13943: char *next_out; +13943: unsigned int avail_out; +13943: unsigned int total_out_lo32; +13943: unsigned int total_out_hi32; +13943: +13943: void *state; +13943: +13943: void *(*bzalloc)(void *,int,int); +13943: void (*bzfree)(void *,void *); +13943: void *opaque; +13943: } +13943: bz_stream; +13943: # 100 "/usr/include/bzlib.h" 3 4 +13943: extern int BZ2_bzCompressInit ( +13943: bz_stream* strm, +13943: int blockSize100k, +13943: int verbosity, +13943: int workFactor +13943: ); +13943: +13943: extern int BZ2_bzCompress ( +13943: bz_stream* strm, +13943: int action +13943: ); +13943: +13943: extern int BZ2_bzCompressEnd ( +13943: bz_stream* strm +13943: ); +13943: +13943: extern int BZ2_bzDecompressInit ( +13943: bz_stream *strm, +13943: int verbosity, +13943: int small +13943: ); +13943: +13943: extern int BZ2_bzDecompress ( +13943: bz_stream* strm +13943: ); +13943: +13943: extern int BZ2_bzDecompressEnd ( +13943: bz_stream *strm +13943: ); +13943: # 137 "/usr/include/bzlib.h" 3 4 +13943: typedef void BZFILE; +13943: +13943: extern BZFILE* BZ2_bzReadOpen ( +13943: int* bzerror, +13943: FILE* f, +13943: int verbosity, +13943: int small, +13943: void* unused, +13943: int nUnused +13943: ); +13943: +13943: extern void BZ2_bzReadClose ( +13943: int* bzerror, +13943: BZFILE* b +13943: ); +13943: +13943: extern void BZ2_bzReadGetUnused ( +13943: int* bzerror, +13943: BZFILE* b, +13943: void** unused, +13943: int* nUnused +13943: ); +13943: +13943: extern int BZ2_bzRead ( +13943: int* bzerror, +13943: BZFILE* b, +13943: void* buf, +13943: int len +13943: ); +13943: +13943: extern BZFILE* BZ2_bzWriteOpen ( +13943: int* bzerror, +13943: FILE* f, +13943: int blockSize100k, +13943: int verbosity, +13943: int workFactor +13943: ); +13943: +13943: extern void BZ2_bzWrite ( +13943: int* bzerror, +13943: BZFILE* b, +13943: void* buf, +13943: int len +13943: ); +13943: +13943: extern void BZ2_bzWriteClose ( +13943: int* bzerror, +13943: BZFILE* b, +13943: int abandon, +13943: unsigned int* nbytes_in, +13943: unsigned int* nbytes_out +13943: ); +13943: +13943: extern void BZ2_bzWriteClose64 ( +13943: int* bzerror, +13943: BZFILE* b, +13943: int abandon, +13943: unsigned int* nbytes_in_lo32, +13943: unsigned int* nbytes_in_hi32, +13943: unsigned int* nbytes_out_lo32, +13943: unsigned int* nbytes_out_hi32 +13943: ); +13943: +13943: +13943: +13943: +13943: +13943: extern int BZ2_bzBuffToBuffCompress ( +13943: char* dest, +13943: unsigned int* destLen, +13943: char* source, +13943: unsigned int sourceLen, +13943: int blockSize100k, +13943: int verbosity, +13943: int workFactor +13943: ); +13943: +13943: extern int BZ2_bzBuffToBuffDecompress ( +13943: char* dest, +13943: unsigned int* destLen, +13943: char* source, +13943: unsigned int sourceLen, +13943: int small, +13943: int verbosity +13943: ); +13943: # 233 "/usr/include/bzlib.h" 3 4 +13943: extern const char * BZ2_bzlibVersion ( +13943: void +13943: ); +13943: +13943: +13943: extern BZFILE * BZ2_bzopen ( +13943: const char *path, +13943: const char *mode +13943: ); +13943: +13943: extern BZFILE * BZ2_bzdopen ( +13943: int fd, +13943: const char *mode +13943: ); +13943: +13943: extern int BZ2_bzread ( +13943: BZFILE* b, +13943: void* buf, +13943: int len +13943: ); +13943: +13943: extern int BZ2_bzwrite ( +13943: BZFILE* b, +13943: void* buf, +13943: int len +13943: ); +13943: +13943: extern int BZ2_bzflush ( +13943: BZFILE* b +13943: ); +13943: +13943: extern void BZ2_bzclose ( +13943: BZFILE* b +13943: ); +13943: +13943: extern const char * BZ2_bzerror ( +13943: BZFILE *b, +13943: int *errnum +13943: ); +13943: +13943: +13943: +13943: } +13943: # 42 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: +13943: +13943: # 1 "/usr/include/lz4.h" 1 3 4 +13943: # 36 "/usr/include/lz4.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 44 "/usr/include/lz4.h" 2 3 4 +13943: # 142 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_versionNumber (void); +13943: __attribute__ ((visibility ("default"))) const char* LZ4_versionString (void); +13943: # 191 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); +13943: # 208 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_decompress_safe (const char* src, char* dst, int compressedSize, int dstCapacity); +13943: # 226 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compressBound(int inputSize); +13943: # 236 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +13943: # 245 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_sizeofState(void); +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_fast_extState (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +13943: # 272 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize); +13943: # 308 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_decompress_safe_partial (const char* src, char* dst, int srcSize, int targetOutputSize, int dstCapacity); +13943: +13943: +13943: +13943: +13943: +13943: typedef union LZ4_stream_u LZ4_stream_t; +13943: # 331 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) LZ4_stream_t* LZ4_createStream(void); +13943: __attribute__ ((visibility ("default"))) int LZ4_freeStream (LZ4_stream_t* streamPtr); +13943: # 358 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); +13943: # 371 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); +13943: # 380 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_loadDictSlow(LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); +13943: # 414 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) void +13943: LZ4_attach_dictionary(LZ4_stream_t* workingStream, +13943: const LZ4_stream_t* dictionaryStream); +13943: # 441 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +13943: # 450 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int maxDictSize); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef union LZ4_streamDecode_u LZ4_streamDecode_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) LZ4_streamDecode_t* LZ4_createStreamDecode(void); +13943: __attribute__ ((visibility ("default"))) int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); +13943: # 477 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); +13943: # 490 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_decoderRingBufferSize(int maxBlockSize); +13943: # 531 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int +13943: LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, +13943: const char* src, char* dst, +13943: int srcSize, int dstCapacity); +13943: # 545 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int +13943: LZ4_decompress_safe_usingDict(const char* src, char* dst, +13943: int srcSize, int dstCapacity, +13943: const char* dictStart, int dictSize); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) int +13943: LZ4_decompress_safe_partial_usingDict(const char* src, char* dst, +13943: int compressedSize, +13943: int targetOutputSize, int maxOutputSize, +13943: const char* dictStart, int dictSize); +13943: # 701 "/usr/include/lz4.h" 3 4 +13943: typedef int8_t LZ4_i8; +13943: typedef uint8_t LZ4_byte; +13943: typedef uint16_t LZ4_u16; +13943: typedef uint32_t LZ4_u32; +13943: # 718 "/usr/include/lz4.h" 3 4 +13943: typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; +13943: struct LZ4_stream_t_internal { +13943: LZ4_u32 hashTable[(1 << (14 -2))]; +13943: const LZ4_byte* dictionary; +13943: const LZ4_stream_t_internal* dictCtx; +13943: LZ4_u32 currentOffset; +13943: LZ4_u32 tableType; +13943: LZ4_u32 dictSize; +13943: +13943: }; +13943: +13943: +13943: union LZ4_stream_u { +13943: char minStateSize[((1UL << (14)) + 32)]; +13943: LZ4_stream_t_internal internal_donotuse; +13943: }; +13943: # 750 "/usr/include/lz4.h" 3 4 +13943: __attribute__ ((visibility ("default"))) LZ4_stream_t* LZ4_initStream (void* stateBuffer, size_t size); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef struct { +13943: const LZ4_byte* externalDict; +13943: const LZ4_byte* prefixEnd; +13943: size_t extDictSize; +13943: size_t prefixSize; +13943: } LZ4_streamDecode_t_internal; +13943: +13943: +13943: union LZ4_streamDecode_u { +13943: char minStateSize[32]; +13943: LZ4_streamDecode_t_internal internal_donotuse; +13943: } ; +13943: # 806 "/usr/include/lz4.h" 3 4 +13943: [[deprecated("use LZ4_compress_default() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress (const char* src, char* dest, int srcSize); +13943: [[deprecated("use LZ4_compress_default() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_limitedOutput (const char* src, char* dest, int srcSize, int maxOutputSize); +13943: [[deprecated("use LZ4_compress_fast_extState() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); +13943: [[deprecated("use LZ4_compress_fast_extState() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +13943: [[deprecated("use LZ4_compress_fast_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); +13943: [[deprecated("use LZ4_compress_fast_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); +13943: +13943: +13943: [[deprecated("use LZ4_decompress_fast() instead")]] __attribute__ ((visibility ("default"))) int LZ4_uncompress (const char* source, char* dest, int outputSize); +13943: [[deprecated("use LZ4_decompress_safe() instead")]] __attribute__ ((visibility ("default"))) int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); +13943: # 827 "/usr/include/lz4.h" 3 4 +13943: [[deprecated("Use LZ4_createStream() instead")]] __attribute__ ((visibility ("default"))) void* LZ4_create (char* inputBuffer); +13943: [[deprecated("Use LZ4_createStream() instead")]] __attribute__ ((visibility ("default"))) int LZ4_sizeofStreamState(void); +13943: [[deprecated("Use LZ4_resetStream() instead")]] __attribute__ ((visibility ("default"))) int LZ4_resetStreamState(void* state, char* inputBuffer); +13943: [[deprecated("Use LZ4_saveDict() instead")]] __attribute__ ((visibility ("default"))) char* LZ4_slideInputBuffer (void* state); +13943: +13943: +13943: [[deprecated("use LZ4_decompress_safe_usingDict() instead")]] __attribute__ ((visibility ("default"))) int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); +13943: [[deprecated("use LZ4_decompress_fast_usingDict() instead")]] __attribute__ ((visibility ("default"))) int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); +13943: # 862 "/usr/include/lz4.h" 3 4 +13943: [[deprecated("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_partial() instead")]] +13943: __attribute__ ((visibility ("default"))) int LZ4_decompress_fast (const char* src, char* dst, int originalSize); +13943: [[deprecated("This function is deprecated and unsafe. Consider migrating towards LZ4_decompress_safe_continue() instead. " "Note that the contract will change (requires block's compressed size, instead of decompressed size)")]] +13943: +13943: __attribute__ ((visibility ("default"))) int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int originalSize); +13943: [[deprecated("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_partial_usingDict() instead")]] +13943: __attribute__ ((visibility ("default"))) int LZ4_decompress_fast_usingDict (const char* src, char* dst, int originalSize, const char* dictStart, int dictSize); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) void LZ4_resetStream (LZ4_stream_t* streamPtr); +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: # 46 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: # 1 "/usr/include/lz4hc.h" 1 3 4 +13943: # 38 "/usr/include/lz4hc.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/lz4.h" 1 3 4 +13943: # 36 "/usr/include/lz4.h" 3 4 +13943: extern "C" { +13943: # 883 "/usr/include/lz4.h" 3 4 +13943: } +13943: # 44 "/usr/include/lz4hc.h" 2 3 4 +13943: # 66 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_HC (const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel); +13943: # 79 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_sizeofStateHC(void); +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_extStateHC(void* stateHC, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel); +13943: # 91 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_destSize(void* stateHC, +13943: const char* src, char* dst, +13943: int* srcSizePtr, int targetDstSize, +13943: int compressionLevel); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef union LZ4_streamHC_u LZ4_streamHC_t; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) LZ4_streamHC_t* LZ4_createStreamHC(void); +13943: __attribute__ ((visibility ("default"))) int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr); +13943: # 157 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) void LZ4_resetStreamHC_fast(LZ4_streamHC_t* streamHCPtr, int compressionLevel); +13943: __attribute__ ((visibility ("default"))) int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize); +13943: +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, +13943: const char* src, char* dst, +13943: int srcSize, int maxDstSize); +13943: # 174 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t* LZ4_streamHCPtr, +13943: const char* src, char* dst, +13943: int* srcSizePtr, int targetDstSize); +13943: +13943: __attribute__ ((visibility ("default"))) int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize); +13943: # 205 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) void +13943: LZ4_attach_HC_dictionary(LZ4_streamHC_t* working_stream, +13943: const LZ4_streamHC_t* dictionary_stream); +13943: # 234 "/usr/include/lz4hc.h" 3 4 +13943: typedef struct LZ4HC_CCtx_internal LZ4HC_CCtx_internal; +13943: struct LZ4HC_CCtx_internal +13943: { +13943: LZ4_u32 hashTable[(1 << 15)]; +13943: LZ4_u16 chainTable[(1<<16)]; +13943: const LZ4_byte* end; +13943: const LZ4_byte* prefixStart; +13943: const LZ4_byte* dictStart; +13943: LZ4_u32 dictLimit; +13943: LZ4_u32 lowLimit; +13943: LZ4_u32 nextToUpdate; +13943: short compressionLevel; +13943: LZ4_i8 favorDecSpeed; +13943: +13943: LZ4_i8 dirty; +13943: const LZ4HC_CCtx_internal* dictCtx; +13943: }; +13943: +13943: +13943: union LZ4_streamHC_u { +13943: char minStateSize[262200]; +13943: LZ4HC_CCtx_internal internal_donotuse; +13943: }; +13943: # 275 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) LZ4_streamHC_t* LZ4_initStreamHC(void* buffer, size_t size); +13943: # 284 "/usr/include/lz4hc.h" 3 4 +13943: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC (const char* source, char* dest, int inputSize); +13943: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize); +13943: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2 (const char* source, char* dest, int inputSize, int compressionLevel); +13943: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +13943: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_withStateHC (void* state, const char* source, char* dest, int inputSize); +13943: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +13943: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_withStateHC (void* state, const char* source, char* dest, int inputSize, int compressionLevel); +13943: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_limitedOutput_withStateHC(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +13943: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize); +13943: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize); +13943: # 304 "/usr/include/lz4hc.h" 3 4 +13943: [[deprecated("use LZ4_createStreamHC() instead")]] __attribute__ ((visibility ("default"))) void* LZ4_createHC (const char* inputBuffer); +13943: [[deprecated("use LZ4_freeStreamHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_freeHC (void* LZ4HC_Data); +13943: +13943: [[deprecated("use LZ4_saveDictHC() instead")]] __attribute__ ((visibility ("default"))) char* LZ4_slideInputBufferHC (void* LZ4HC_Data); +13943: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel); +13943: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +13943: [[deprecated("use LZ4_createStreamHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_sizeofStreamStateHC(void); +13943: [[deprecated("use LZ4_initStreamHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_resetStreamStateHC(void* state, char* inputBuffer); +13943: # 322 "/usr/include/lz4hc.h" 3 4 +13943: __attribute__ ((visibility ("default"))) void LZ4_resetStreamHC (LZ4_streamHC_t* streamHCPtr, int compressionLevel); +13943: +13943: +13943: +13943: } +13943: # 47 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: +13943: +13943: # 1 "/usr/include/zstd.h" 1 3 4 +13943: # 11 "/usr/include/zstd.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +13943: # 19 "/usr/include/zstd.h" 2 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 20 "/usr/include/zstd.h" 2 3 4 +13943: # 114 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) unsigned ZSTD_versionNumber(void); +13943: # 123 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) const char* ZSTD_versionString(void); +13943: # 155 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compress( void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize, +13943: int compressionLevel); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_decompress( void* dst, size_t dstCapacity, +13943: const void* src, size_t compressedSize); +13943: # 193 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: [[deprecated("Replaced by ZSTD_getFrameContentSize")]] +13943: __attribute__ ((visibility ("default"))) +13943: unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize); +13943: # 233 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compressBound(size_t srcSize); +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) unsigned ZSTD_isError(size_t code); +13943: __attribute__ ((visibility ("default"))) const char* ZSTD_getErrorName(size_t code); +13943: __attribute__ ((visibility ("default"))) int ZSTD_minCLevel(void); +13943: __attribute__ ((visibility ("default"))) int ZSTD_maxCLevel(void); +13943: __attribute__ ((visibility ("default"))) int ZSTD_defaultCLevel(void); +13943: # 259 "/usr/include/zstd.h" 3 4 +13943: typedef struct ZSTD_CCtx_s ZSTD_CCtx; +13943: __attribute__ ((visibility ("default"))) ZSTD_CCtx* ZSTD_createCCtx(void); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); +13943: # 271 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compressCCtx(ZSTD_CCtx* cctx, +13943: void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize, +13943: int compressionLevel); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef struct ZSTD_DCtx_s ZSTD_DCtx; +13943: __attribute__ ((visibility ("default"))) ZSTD_DCtx* ZSTD_createDCtx(void); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_decompressDCtx(ZSTD_DCtx* dctx, +13943: void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize); +13943: # 315 "/usr/include/zstd.h" 3 4 +13943: typedef enum { ZSTD_fast=1, +13943: ZSTD_dfast=2, +13943: ZSTD_greedy=3, +13943: ZSTD_lazy=4, +13943: ZSTD_lazy2=5, +13943: ZSTD_btlazy2=6, +13943: ZSTD_btopt=7, +13943: ZSTD_btultra=8, +13943: ZSTD_btultra2=9 +13943: +13943: +13943: } ZSTD_strategy; +13943: +13943: typedef enum { +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_compressionLevel=100, +13943: # 347 "/usr/include/zstd.h" 3 4 +13943: ZSTD_c_windowLog=101, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_hashLog=102, +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_chainLog=103, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_searchLog=104, +13943: +13943: +13943: +13943: ZSTD_c_minMatch=105, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_targetLength=106, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_strategy=107, +13943: +13943: +13943: +13943: +13943: ZSTD_c_targetCBlockSize=130, +13943: # 407 "/usr/include/zstd.h" 3 4 +13943: ZSTD_c_enableLongDistanceMatching=160, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_ldmHashLog=161, +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_ldmMinMatch=162, +13943: +13943: +13943: +13943: ZSTD_c_ldmBucketSizeLog=163, +13943: +13943: +13943: +13943: ZSTD_c_ldmHashRateLog=164, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_contentSizeFlag=200, +13943: +13943: +13943: +13943: ZSTD_c_checksumFlag=201, +13943: ZSTD_c_dictIDFlag=202, +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: ZSTD_c_nbWorkers=400, +13943: # 459 "/usr/include/zstd.h" 3 4 +13943: ZSTD_c_jobSize=401, +13943: +13943: +13943: +13943: +13943: ZSTD_c_overlapLog=402, +13943: # 500 "/usr/include/zstd.h" 3 4 +13943: ZSTD_c_experimentalParam1=500, +13943: ZSTD_c_experimentalParam2=10, +13943: ZSTD_c_experimentalParam3=1000, +13943: ZSTD_c_experimentalParam4=1001, +13943: ZSTD_c_experimentalParam5=1002, +13943: +13943: ZSTD_c_experimentalParam7=1004, +13943: ZSTD_c_experimentalParam8=1005, +13943: ZSTD_c_experimentalParam9=1006, +13943: ZSTD_c_experimentalParam10=1007, +13943: ZSTD_c_experimentalParam11=1008, +13943: ZSTD_c_experimentalParam12=1009, +13943: ZSTD_c_experimentalParam13=1010, +13943: ZSTD_c_experimentalParam14=1011, +13943: ZSTD_c_experimentalParam15=1012, +13943: ZSTD_c_experimentalParam16=1013, +13943: ZSTD_c_experimentalParam17=1014, +13943: ZSTD_c_experimentalParam18=1015, +13943: ZSTD_c_experimentalParam19=1016 +13943: } ZSTD_cParameter; +13943: +13943: typedef struct { +13943: size_t error; +13943: int lowerBound; +13943: int upperBound; +13943: } ZSTD_bounds; +13943: # 534 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) ZSTD_bounds ZSTD_cParam_getBounds(ZSTD_cParameter cParam); +13943: # 547 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value); +13943: # 564 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize); +13943: +13943: typedef enum { +13943: ZSTD_reset_session_only = 1, +13943: ZSTD_reset_parameters = 2, +13943: ZSTD_reset_session_and_parameters = 3 +13943: } ZSTD_ResetDirective; +13943: # 586 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_reset(ZSTD_CCtx* cctx, ZSTD_ResetDirective reset); +13943: # 600 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compress2( ZSTD_CCtx* cctx, +13943: void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize); +13943: # 617 "/usr/include/zstd.h" 3 4 +13943: typedef enum { +13943: +13943: ZSTD_d_windowLogMax=100, +13943: # 638 "/usr/include/zstd.h" 3 4 +13943: ZSTD_d_experimentalParam1=1000, +13943: ZSTD_d_experimentalParam2=1001, +13943: ZSTD_d_experimentalParam3=1002, +13943: ZSTD_d_experimentalParam4=1003, +13943: ZSTD_d_experimentalParam5=1004, +13943: ZSTD_d_experimentalParam6=1005 +13943: +13943: } ZSTD_dParameter; +13943: # 654 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) ZSTD_bounds ZSTD_dParam_getBounds(ZSTD_dParameter dParam); +13943: # 663 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_setParameter(ZSTD_DCtx* dctx, ZSTD_dParameter param, int value); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_reset(ZSTD_DCtx* dctx, ZSTD_ResetDirective reset); +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef struct ZSTD_inBuffer_s { +13943: const void* src; +13943: size_t size; +13943: size_t pos; +13943: } ZSTD_inBuffer; +13943: +13943: typedef struct ZSTD_outBuffer_s { +13943: void* dst; +13943: size_t size; +13943: size_t pos; +13943: } ZSTD_outBuffer; +13943: # 753 "/usr/include/zstd.h" 3 4 +13943: typedef ZSTD_CCtx ZSTD_CStream; +13943: +13943: +13943: __attribute__ ((visibility ("default"))) ZSTD_CStream* ZSTD_createCStream(void); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_freeCStream(ZSTD_CStream* zcs); +13943: +13943: +13943: typedef enum { +13943: ZSTD_e_continue=0, +13943: ZSTD_e_flush=1, +13943: +13943: +13943: +13943: ZSTD_e_end=2 +13943: +13943: +13943: +13943: +13943: } ZSTD_EndDirective; +13943: # 800 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compressStream2( ZSTD_CCtx* cctx, +13943: ZSTD_outBuffer* output, +13943: ZSTD_inBuffer* input, +13943: ZSTD_EndDirective endOp); +13943: # 819 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CStreamInSize(void); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CStreamOutSize(void); +13943: # 839 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_initCStream(ZSTD_CStream* zcs, int compressionLevel); +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compressStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output, ZSTD_inBuffer* input); +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_flushStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); +13943: # 880 "/usr/include/zstd.h" 3 4 +13943: typedef ZSTD_DCtx ZSTD_DStream; +13943: +13943: +13943: __attribute__ ((visibility ("default"))) ZSTD_DStream* ZSTD_createDStream(void); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_freeDStream(ZSTD_DStream* zds); +13943: # 896 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_initDStream(ZSTD_DStream* zds); +13943: # 919 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inBuffer* input); +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_DStreamInSize(void); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_DStreamOutSize(void); +13943: # 935 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, +13943: void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize, +13943: const void* dict,size_t dictSize, +13943: int compressionLevel); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_decompress_usingDict(ZSTD_DCtx* dctx, +13943: void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize, +13943: const void* dict,size_t dictSize); +13943: +13943: +13943: +13943: +13943: +13943: typedef struct ZSTD_CDict_s ZSTD_CDict; +13943: # 970 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) ZSTD_CDict* ZSTD_createCDict(const void* dictBuffer, size_t dictSize, +13943: int compressionLevel); +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_freeCDict(ZSTD_CDict* CDict); +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx, +13943: void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize, +13943: const ZSTD_CDict* cdict); +13943: +13943: +13943: typedef struct ZSTD_DDict_s ZSTD_DDict; +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize); +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_freeDDict(ZSTD_DDict* ddict); +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_decompress_usingDDict(ZSTD_DCtx* dctx, +13943: void* dst, size_t dstCapacity, +13943: const void* src, size_t srcSize, +13943: const ZSTD_DDict* ddict); +13943: # 1018 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize); +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromCDict(const ZSTD_CDict* cdict); +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict); +13943: # 1042 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize); +13943: # 1079 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize); +13943: # 1093 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); +13943: # 1114 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, +13943: const void* prefix, size_t prefixSize); +13943: # 1132 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); +13943: # 1151 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); +13943: # 1169 "/usr/include/zstd.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx, +13943: const void* prefix, size_t prefixSize); +13943: +13943: +13943: +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_DCtx(const ZSTD_DCtx* dctx); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_CStream(const ZSTD_CStream* zcs); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_DStream(const ZSTD_DStream* zds); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict); +13943: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); +13943: # 3088 "/usr/include/zstd.h" 3 4 +13943: } +13943: # 51 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: +13943: +13943: # 1 "/usr/include/zdict.h" 1 3 4 +13943: # 12 "/usr/include/zdict.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 20 "/usr/include/zdict.h" 2 3 4 +13943: # 210 "/usr/include/zdict.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZDICT_trainFromBuffer(void* dictBuffer, size_t dictBufferCapacity, +13943: const void* samplesBuffer, +13943: const size_t* samplesSizes, unsigned nbSamples); +13943: +13943: typedef struct { +13943: int compressionLevel; +13943: unsigned notificationLevel; +13943: unsigned dictID; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } ZDICT_params_t; +13943: # 262 "/usr/include/zdict.h" 3 4 +13943: __attribute__ ((visibility ("default"))) size_t ZDICT_finalizeDictionary(void* dstDictBuffer, size_t maxDictSize, +13943: const void* dictContent, size_t dictContentSize, +13943: const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples, +13943: ZDICT_params_t parameters); +13943: +13943: +13943: +13943: __attribute__ ((visibility ("default"))) unsigned ZDICT_getDictID(const void* dictBuffer, size_t dictSize); +13943: __attribute__ ((visibility ("default"))) size_t ZDICT_getDictHeaderSize(const void* dictBuffer, size_t dictSize); +13943: __attribute__ ((visibility ("default"))) unsigned ZDICT_isError(size_t errorCode); +13943: __attribute__ ((visibility ("default"))) const char* ZDICT_getErrorName(size_t errorCode); +13943: # 473 "/usr/include/zdict.h" 3 4 +13943: } +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: namespace rocksdb { +13943: # 88 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: class ZSTDUncompressCachedData { +13943: public: +13943: using ZSTDNativeContext = ZSTD_DCtx*; +13943: ZSTDUncompressCachedData() {} +13943: +13943: ZSTDUncompressCachedData(const ZSTDUncompressCachedData& o) = delete; +13943: ZSTDUncompressCachedData& operator=(const ZSTDUncompressCachedData&) = delete; +13943: ZSTDUncompressCachedData(ZSTDUncompressCachedData&& o) noexcept +13943: : ZSTDUncompressCachedData() { +13943: *this = std::move(o); +13943: } +13943: ZSTDUncompressCachedData& operator=(ZSTDUncompressCachedData&& o) noexcept { +13943: +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: zstd_ctx_ == nullptr +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "zstd_ctx_ == nullptr" +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: std::swap(zstd_ctx_, o.zstd_ctx_); +13943: std::swap(cache_idx_, o.cache_idx_); +13943: return *this; +13943: } +13943: ZSTDNativeContext Get() const { return zstd_ctx_; } +13943: int64_t GetCacheIndex() const { return cache_idx_; } +13943: void CreateIfNeeded() { +13943: if (zstd_ctx_ == nullptr) { +13943: +13943: +13943: +13943: +13943: zstd_ctx_ = ZSTD_createDCtx(); +13943: +13943: cache_idx_ = -1; +13943: } +13943: } +13943: void InitFromCache(const ZSTDUncompressCachedData& o, int64_t idx) { +13943: zstd_ctx_ = o.zstd_ctx_; +13943: cache_idx_ = idx; +13943: } +13943: ~ZSTDUncompressCachedData() { +13943: if (zstd_ctx_ != nullptr && cache_idx_ == -1) { +13943: ZSTD_freeDCtx(zstd_ctx_); +13943: } +13943: } +13943: +13943: private: +13943: ZSTDNativeContext zstd_ctx_ = nullptr; +13943: int64_t cache_idx_ = -1; +13943: }; +13943: +13943: } +13943: # 163 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: struct CompressionDict { +13943: +13943: ZSTD_CDict* zstd_cdict_ = nullptr; +13943: +13943: std::string dict_; +13943: +13943: public: +13943: +13943: CompressionDict(std::string dict, CompressionType type, int level) { +13943: +13943: +13943: +13943: dict_ = std::move(dict); +13943: +13943: zstd_cdict_ = nullptr; +13943: if (!dict_.empty() && (type == kZSTD || type == kZSTDNotFinalCompression)) { +13943: if (level == CompressionOptions::kDefaultCompressionLevel) { +13943: +13943: +13943: +13943: +13943: +13943: level = 3; +13943: } +13943: +13943: +13943: zstd_cdict_ = ZSTD_createCDict(dict_.data(), dict_.size(), level); +13943: +13943: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: zstd_cdict_ != nullptr +13943: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "zstd_cdict_ != nullptr" +13943: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: } +13943: +13943: } +13943: +13943: ~CompressionDict() { +13943: +13943: size_t res = 0; +13943: if (zstd_cdict_ != nullptr) { +13943: res = ZSTD_freeCDict(zstd_cdict_); +13943: } +13943: +13943: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: res == 0 +13943: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "res == 0" +13943: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: (void)res; +13943: +13943: } +13943: +13943: +13943: const ZSTD_CDict* GetDigestedZstdCDict() const { return zstd_cdict_; } +13943: +13943: +13943: Slice GetRawDict() const { return dict_; } +13943: +13943: static const CompressionDict& GetEmptyDict() { +13943: static CompressionDict empty_dict{}; +13943: return empty_dict; +13943: } +13943: +13943: CompressionDict() = default; +13943: +13943: CompressionDict(const CompressionDict&) = delete; +13943: CompressionDict& operator=(const CompressionDict&) = delete; +13943: CompressionDict(CompressionDict&&) = delete; +13943: CompressionDict& operator=(CompressionDict&&) = delete; +13943: }; +13943: +13943: +13943: +13943: struct UncompressionDict { +13943: +13943: +13943: std::string dict_; +13943: +13943: +13943: +13943: +13943: CacheAllocationPtr allocation_; +13943: +13943: +13943: +13943: +13943: Slice slice_; +13943: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: UncompressionDict(std::string dict, bool ) +13943: +13943: : dict_(std::move(dict)), slice_(dict_) { +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: UncompressionDict(Slice slice, CacheAllocationPtr&& allocation, +13943: bool ) +13943: +13943: : allocation_(std::move(allocation)), slice_(std::move(slice)) { +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: UncompressionDict(UncompressionDict&& rhs) +13943: : dict_(std::move(rhs.dict_)), +13943: allocation_(std::move(rhs.allocation_)), +13943: slice_(std::move(rhs.slice_)) +13943: +13943: +13943: +13943: +13943: { +13943: +13943: +13943: +13943: } +13943: +13943: ~UncompressionDict() { +13943: # 304 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: UncompressionDict& operator=(UncompressionDict&& rhs) { +13943: if (this == &rhs) { +13943: return *this; +13943: } +13943: +13943: dict_ = std::move(rhs.dict_); +13943: allocation_ = std::move(rhs.allocation_); +13943: slice_ = std::move(rhs.slice_); +13943: +13943: +13943: +13943: +13943: +13943: +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: bool own_bytes() const { return !dict_.empty() || allocation_; } +13943: +13943: const Slice& GetRawDict() const { return slice_; } +13943: +13943: +13943: const Slice& ContentSlice() const { return slice_; } +13943: static constexpr CacheEntryRole kCacheEntryRole = CacheEntryRole::kOtherBlock; +13943: static constexpr BlockType kBlockType = BlockType::kCompressionDictionary; +13943: +13943: +13943: +13943: +13943: +13943: static const UncompressionDict& GetEmptyDict() { +13943: static UncompressionDict empty_dict{}; +13943: return empty_dict; +13943: } +13943: +13943: size_t ApproximateMemoryUsage() const { +13943: size_t usage = sizeof(struct UncompressionDict); +13943: usage += dict_.size(); +13943: if (allocation_) { +13943: auto allocator = allocation_.get_deleter().allocator; +13943: if (allocator) { +13943: usage += allocator->UsableSize(allocation_.get(), slice_.size()); +13943: } else { +13943: usage += slice_.size(); +13943: } +13943: } +13943: +13943: +13943: +13943: return usage; +13943: } +13943: +13943: UncompressionDict() = default; +13943: +13943: UncompressionDict(const CompressionDict&) = delete; +13943: UncompressionDict& operator=(const CompressionDict&) = delete; +13943: }; +13943: +13943: class CompressionContext { +13943: private: +13943: +13943: ZSTD_CCtx* zstd_ctx_ = nullptr; +13943: +13943: ZSTD_CCtx* CreateZSTDContext() { +13943: +13943: +13943: +13943: return ZSTD_createCCtx(); +13943: +13943: } +13943: +13943: void CreateNativeContext(CompressionType type, int level, bool checksum) { +13943: if (type == kZSTD || type == kZSTDNotFinalCompression) { +13943: zstd_ctx_ = CreateZSTDContext(); +13943: +13943: if (level == CompressionOptions::kDefaultCompressionLevel) { +13943: +13943: +13943: level = 3; +13943: } +13943: size_t err = +13943: ZSTD_CCtx_setParameter(zstd_ctx_, ZSTD_c_compressionLevel, level); +13943: if (ZSTD_isError(err)) { +13943: +13943: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: false +13943: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "false" +13943: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: ZSTD_freeCCtx(zstd_ctx_); +13943: zstd_ctx_ = CreateZSTDContext(); +13943: } +13943: if (checksum) { +13943: err = ZSTD_CCtx_setParameter(zstd_ctx_, ZSTD_c_checksumFlag, 1); +13943: if (ZSTD_isError(err)) { +13943: +13943: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: false +13943: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "false" +13943: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: ZSTD_freeCCtx(zstd_ctx_); +13943: zstd_ctx_ = CreateZSTDContext(); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: } +13943: } +13943: void DestroyNativeContext() { +13943: if (zstd_ctx_ != nullptr) { +13943: ZSTD_freeCCtx(zstd_ctx_); +13943: } +13943: } +13943: +13943: public: +13943: +13943: ZSTD_CCtx* ZSTDPreallocCtx() const { +13943: +13943: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: zstd_ctx_ != nullptr +13943: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "zstd_ctx_ != nullptr" +13943: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: return zstd_ctx_; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: public: +13943: explicit CompressionContext(CompressionType type, +13943: const CompressionOptions& options) { +13943: CreateNativeContext(type, options.level, options.checksum); +13943: } +13943: ~CompressionContext() { DestroyNativeContext(); } +13943: CompressionContext(const CompressionContext&) = delete; +13943: CompressionContext& operator=(const CompressionContext&) = delete; +13943: }; +13943: +13943: class CompressionInfo { +13943: const CompressionOptions& opts_; +13943: const CompressionContext& context_; +13943: const CompressionDict& dict_; +13943: const CompressionType type_; +13943: const uint64_t sample_for_compression_; +13943: +13943: public: +13943: CompressionInfo(const CompressionOptions& _opts, +13943: const CompressionContext& _context, +13943: const CompressionDict& _dict, CompressionType _type, +13943: uint64_t _sample_for_compression) +13943: : opts_(_opts), +13943: context_(_context), +13943: dict_(_dict), +13943: type_(_type), +13943: sample_for_compression_(_sample_for_compression) {} +13943: +13943: const CompressionOptions& options() const { return opts_; } +13943: const CompressionContext& context() const { return context_; } +13943: const CompressionDict& dict() const { return dict_; } +13943: CompressionType type() const { return type_; } +13943: uint64_t SampleForCompression() const { return sample_for_compression_; } +13943: }; +13943: +13943: class UncompressionContext { +13943: private: +13943: CompressionContextCache* ctx_cache_ = nullptr; +13943: ZSTDUncompressCachedData uncomp_cached_data_; +13943: +13943: public: +13943: explicit UncompressionContext(CompressionType type) { +13943: if (type == kZSTD || type == kZSTDNotFinalCompression) { +13943: ctx_cache_ = CompressionContextCache::Instance(); +13943: uncomp_cached_data_ = ctx_cache_->GetCachedZSTDUncompressData(); +13943: } +13943: } +13943: ~UncompressionContext() { +13943: if (uncomp_cached_data_.GetCacheIndex() != -1) { +13943: +13943: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ctx_cache_ != nullptr +13943: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "ctx_cache_ != nullptr" +13943: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: ctx_cache_->ReturnCachedZSTDUncompressData( +13943: uncomp_cached_data_.GetCacheIndex()); +13943: } +13943: } +13943: UncompressionContext(const UncompressionContext&) = delete; +13943: UncompressionContext& operator=(const UncompressionContext&) = delete; +13943: +13943: ZSTDUncompressCachedData::ZSTDNativeContext GetZSTDContext() const { +13943: return uncomp_cached_data_.Get(); +13943: } +13943: }; +13943: +13943: class UncompressionInfo { +13943: const UncompressionContext& context_; +13943: const UncompressionDict& dict_; +13943: const CompressionType type_; +13943: +13943: public: +13943: UncompressionInfo(const UncompressionContext& _context, +13943: const UncompressionDict& _dict, CompressionType _type) +13943: : context_(_context), dict_(_dict), type_(_type) {} +13943: +13943: const UncompressionContext& context() const { return context_; } +13943: const UncompressionDict& dict() const { return dict_; } +13943: CompressionType type() const { return type_; } +13943: }; +13943: +13943: inline bool Snappy_Supported() { +13943: +13943: return true; +13943: +13943: +13943: +13943: } +13943: +13943: inline bool Zlib_Supported() { +13943: +13943: return true; +13943: +13943: +13943: +13943: } +13943: +13943: inline bool BZip2_Supported() { +13943: +13943: return true; +13943: +13943: +13943: +13943: } +13943: +13943: inline bool LZ4_Supported() { +13943: +13943: return true; +13943: +13943: +13943: +13943: } +13943: +13943: inline bool XPRESS_Supported() { +13943: +13943: +13943: +13943: return false; +13943: +13943: } +13943: +13943: inline bool ZSTD_Supported() { +13943: +13943: +13943: return (ZSTD_versionNumber() >= 800); +13943: +13943: +13943: +13943: } +13943: +13943: inline bool ZSTDNotFinal_Supported() { +13943: +13943: return true; +13943: +13943: +13943: +13943: } +13943: +13943: inline bool ZSTD_Streaming_Supported() { +13943: +13943: return true; +13943: +13943: +13943: +13943: } +13943: +13943: inline bool StreamingCompressionTypeSupported( +13943: CompressionType compression_type) { +13943: switch (compression_type) { +13943: case kNoCompression: +13943: return true; +13943: case kZSTD: +13943: return ZSTD_Streaming_Supported(); +13943: default: +13943: return false; +13943: } +13943: } +13943: +13943: inline bool CompressionTypeSupported(CompressionType compression_type) { +13943: switch (compression_type) { +13943: case kNoCompression: +13943: return true; +13943: case kSnappyCompression: +13943: return Snappy_Supported(); +13943: case kZlibCompression: +13943: return Zlib_Supported(); +13943: case kBZip2Compression: +13943: return BZip2_Supported(); +13943: case kLZ4Compression: +13943: return LZ4_Supported(); +13943: case kLZ4HCCompression: +13943: return LZ4_Supported(); +13943: case kXpressCompression: +13943: return XPRESS_Supported(); +13943: case kZSTDNotFinalCompression: +13943: return ZSTDNotFinal_Supported(); +13943: case kZSTD: +13943: return ZSTD_Supported(); +13943: default: +13943: +13943: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: false +13943: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "false" +13943: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: return false; +13943: } +13943: } +13943: +13943: inline bool DictCompressionTypeSupported(CompressionType compression_type) { +13943: switch (compression_type) { +13943: case kNoCompression: +13943: return false; +13943: case kSnappyCompression: +13943: return false; +13943: case kZlibCompression: +13943: return Zlib_Supported(); +13943: case kBZip2Compression: +13943: return false; +13943: case kLZ4Compression: +13943: case kLZ4HCCompression: +13943: +13943: return LZ4_Supported(); +13943: +13943: +13943: +13943: case kXpressCompression: +13943: return false; +13943: case kZSTDNotFinalCompression: +13943: +13943: return ZSTDNotFinal_Supported(); +13943: +13943: +13943: +13943: case kZSTD: +13943: +13943: return ZSTD_Supported(); +13943: +13943: +13943: +13943: default: +13943: +13943: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: false +13943: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "false" +13943: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: return false; +13943: } +13943: } +13943: +13943: inline std::string CompressionTypeToString(CompressionType compression_type) { +13943: switch (compression_type) { +13943: case kNoCompression: +13943: return "NoCompression"; +13943: case kSnappyCompression: +13943: return "Snappy"; +13943: case kZlibCompression: +13943: return "Zlib"; +13943: case kBZip2Compression: +13943: return "BZip2"; +13943: case kLZ4Compression: +13943: return "LZ4"; +13943: case kLZ4HCCompression: +13943: return "LZ4HC"; +13943: case kXpressCompression: +13943: return "Xpress"; +13943: case kZSTD: +13943: return "ZSTD"; +13943: case kZSTDNotFinalCompression: +13943: return "ZSTDNotFinal"; +13943: case kDisableCompressionOption: +13943: return "DisableOption"; +13943: default: +13943: +13943: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: false +13943: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "false" +13943: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: return ""; +13943: } +13943: } +13943: +13943: inline std::string CompressionOptionsToString( +13943: CompressionOptions& compression_options) { +13943: std::string result; +13943: result.reserve(512); +13943: result.append("window_bits=") +13943: .append(std::to_string(compression_options.window_bits)) +13943: .append("; "); +13943: result.append("level=") +13943: .append(std::to_string(compression_options.level)) +13943: .append("; "); +13943: result.append("strategy=") +13943: .append(std::to_string(compression_options.strategy)) +13943: .append("; "); +13943: result.append("max_dict_bytes=") +13943: .append(std::to_string(compression_options.max_dict_bytes)) +13943: .append("; "); +13943: result.append("zstd_max_train_bytes=") +13943: .append(std::to_string(compression_options.zstd_max_train_bytes)) +13943: .append("; "); +13943: result.append("enabled=") +13943: .append(std::to_string(compression_options.enabled)) +13943: .append("; "); +13943: result.append("max_dict_buffer_bytes=") +13943: .append(std::to_string(compression_options.max_dict_buffer_bytes)) +13943: .append("; "); +13943: result.append("use_zstd_dict_trainer=") +13943: .append(std::to_string(compression_options.use_zstd_dict_trainer)) +13943: .append("; "); +13943: return result; +13943: } +13943: # 713 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: inline bool Snappy_Compress(const CompressionInfo& , const char* input, +13943: size_t length, ::std::string* output) { +13943: +13943: output->resize(snappy::MaxCompressedLength(length)); +13943: size_t outlen; +13943: snappy::RawCompress(input, length, &(*output)[0], &outlen); +13943: output->resize(outlen); +13943: return true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: inline CacheAllocationPtr Snappy_Uncompress( +13943: const char* input, size_t length, size_t* uncompressed_size, +13943: MemoryAllocator* allocator = nullptr) { +13943: +13943: size_t uncompressed_length = 0; +13943: if (!snappy::GetUncompressedLength(input, length, &uncompressed_length)) { +13943: return nullptr; +13943: } +13943: +13943: CacheAllocationPtr output = AllocateBlock(uncompressed_length, allocator); +13943: +13943: if (!snappy::RawUncompress(input, length, output.get())) { +13943: return nullptr; +13943: } +13943: +13943: *uncompressed_size = uncompressed_length; +13943: +13943: return output; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: namespace compression { +13943: +13943: inline size_t PutDecompressedSizeInfo(std::string* output, uint32_t length) { +13943: PutVarint32(output, length); +13943: return output->size(); +13943: } +13943: +13943: inline bool GetDecompressedSizeInfo(const char** input_data, +13943: size_t* input_length, +13943: uint32_t* output_len) { +13943: auto new_input_data = +13943: GetVarint32Ptr(*input_data, *input_data + *input_length, output_len); +13943: if (new_input_data == nullptr) { +13943: return false; +13943: } +13943: *input_length -= (new_input_data - *input_data); +13943: *input_data = new_input_data; +13943: return true; +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline bool Zlib_Compress(const CompressionInfo& info, +13943: uint32_t compress_format_version, const char* input, +13943: size_t length, ::std::string* output) { +13943: +13943: if (length > std::numeric_limits::max()) { +13943: +13943: return false; +13943: } +13943: +13943: size_t output_header_len = 0; +13943: if (compress_format_version == 2) { +13943: output_header_len = compression::PutDecompressedSizeInfo( +13943: output, static_cast(length)); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: static const int memLevel = 8; +13943: int level; +13943: if (info.options().level == CompressionOptions::kDefaultCompressionLevel) { +13943: level = +13943: # 806 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (-1) +13943: # 806 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: } else { +13943: level = info.options().level; +13943: } +13943: z_stream _stream; +13943: memset(&_stream, 0, sizeof(z_stream)); +13943: int st = +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: deflateInit2_(( +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: &_stream +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ),( +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: level +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ),(8),( +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: info.options().window_bits +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ),( +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: memLevel +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ), ( +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: info.options().strategy +13943: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ), "1.3.1", (int)sizeof(z_stream)) +13943: +13943: # 813 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: if (st != +13943: # 814 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 814 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: return false; +13943: } +13943: +13943: Slice compression_dict = info.dict().GetRawDict(); +13943: if (compression_dict.size()) { +13943: +13943: st = deflateSetDictionary( +13943: &_stream, reinterpret_cast(compression_dict.data()), +13943: static_cast(compression_dict.size())); +13943: if (st != +13943: # 824 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 824 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: deflateEnd(&_stream); +13943: return false; +13943: } +13943: } +13943: +13943: +13943: size_t upper_bound = +13943: deflateBound(&_stream, static_cast(length)); +13943: output->resize(output_header_len + upper_bound); +13943: +13943: +13943: _stream.next_in = (Bytef*)input; +13943: _stream.avail_in = static_cast(length); +13943: +13943: +13943: _stream.avail_out = static_cast(upper_bound); +13943: _stream.next_out = reinterpret_cast(&(*output)[output_header_len]); +13943: +13943: bool compressed = false; +13943: st = deflate(&_stream, +13943: # 844 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 4 +13943: # 844 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ); +13943: if (st == +13943: # 845 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 1 +13943: # 845 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: compressed = true; +13943: output->resize(output->size() - _stream.avail_out); +13943: } +13943: +13943: +13943: +13943: +13943: deflateEnd(&_stream); +13943: return compressed; +13943: # 863 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline CacheAllocationPtr Zlib_Uncompress( +13943: const UncompressionInfo& info, const char* input_data, size_t input_length, +13943: size_t* uncompressed_size, uint32_t compress_format_version, +13943: MemoryAllocator* allocator = nullptr, int windowBits = -14) { +13943: +13943: uint32_t output_len = 0; +13943: if (compress_format_version == 2) { +13943: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +13943: &output_len)) { +13943: return nullptr; +13943: } +13943: } else { +13943: +13943: +13943: size_t proposed_output_len = ((input_length * 5) & (~(4096 - 1))) + 4096; +13943: output_len = static_cast( +13943: std::min(proposed_output_len, +13943: static_cast(std::numeric_limits::max()))); +13943: } +13943: +13943: z_stream _stream; +13943: memset(&_stream, 0, sizeof(z_stream)); +13943: +13943: +13943: +13943: +13943: int st = +13943: +13943: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: inflateInit2_(( +13943: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: &_stream +13943: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ), ( +13943: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: windowBits > 0 ? windowBits + 32 : windowBits +13943: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ), "1.3.1", (int)sizeof(z_stream)) +13943: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: if (st != +13943: # 899 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 899 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: return nullptr; +13943: } +13943: +13943: const Slice& compression_dict = info.dict().GetRawDict(); +13943: if (compression_dict.size()) { +13943: +13943: st = inflateSetDictionary( +13943: &_stream, reinterpret_cast(compression_dict.data()), +13943: static_cast(compression_dict.size())); +13943: if (st != +13943: # 909 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 909 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: return nullptr; +13943: } +13943: } +13943: +13943: _stream.next_in = (Bytef*)input_data; +13943: _stream.avail_in = static_cast(input_length); +13943: +13943: auto output = AllocateBlock(output_len, allocator); +13943: +13943: _stream.next_out = (Bytef*)output.get(); +13943: _stream.avail_out = static_cast(output_len); +13943: +13943: bool done = false; +13943: while (!done) { +13943: st = inflate(&_stream, +13943: # 924 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 2 +13943: # 924 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ); +13943: switch (st) { +13943: case +13943: # 926 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 1 +13943: # 926 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: : +13943: done = true; +13943: break; +13943: case +13943: # 929 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 929 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: : { +13943: +13943: +13943: +13943: +13943: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: compress_format_version != 2 +13943: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "compress_format_version != 2" +13943: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: size_t old_sz = output_len; +13943: uint32_t output_len_delta = output_len / 5; +13943: output_len += output_len_delta < 10 ? 10 : output_len_delta; +13943: auto tmp = AllocateBlock(output_len, allocator); +13943: memcpy(tmp.get(), output.get(), old_sz); +13943: output = std::move(tmp); +13943: +13943: +13943: _stream.next_out = (Bytef*)(output.get() + old_sz); +13943: _stream.avail_out = static_cast(output_len - old_sz); +13943: break; +13943: } +13943: case +13943: # 946 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (-5) +13943: # 946 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: : +13943: default: +13943: inflateEnd(&_stream); +13943: return nullptr; +13943: } +13943: } +13943: +13943: +13943: +13943: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: compress_format_version != 2 || _stream.avail_out == 0 +13943: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "compress_format_version != 2 || _stream.avail_out == 0" +13943: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: +13943: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: output_len >= _stream.avail_out +13943: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "output_len >= _stream.avail_out" +13943: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: *uncompressed_size = output_len - _stream.avail_out; +13943: inflateEnd(&_stream); +13943: return output; +13943: # 969 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: +13943: +13943: +13943: +13943: inline bool BZip2_Compress(const CompressionInfo& , +13943: uint32_t compress_format_version, const char* input, +13943: size_t length, ::std::string* output) { +13943: +13943: if (length > std::numeric_limits::max()) { +13943: +13943: return false; +13943: } +13943: size_t output_header_len = 0; +13943: if (compress_format_version == 2) { +13943: output_header_len = compression::PutDecompressedSizeInfo( +13943: output, static_cast(length)); +13943: } +13943: +13943: +13943: output->resize(output_header_len + length); +13943: +13943: bz_stream _stream; +13943: memset(&_stream, 0, sizeof(bz_stream)); +13943: +13943: +13943: +13943: +13943: int st = BZ2_bzCompressInit(&_stream, 1, 0, 30); +13943: if (st != +13943: # 999 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 999 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: return false; +13943: } +13943: +13943: +13943: _stream.next_in = (char*)input; +13943: _stream.avail_in = static_cast(length); +13943: +13943: +13943: _stream.avail_out = static_cast(length); +13943: _stream.next_out = reinterpret_cast(&(*output)[output_header_len]); +13943: +13943: bool compressed = false; +13943: st = BZ2_bzCompress(&_stream, +13943: # 1012 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 2 +13943: # 1012 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ); +13943: if (st == +13943: # 1013 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 4 +13943: # 1013 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: compressed = true; +13943: output->resize(output->size() - _stream.avail_out); +13943: } +13943: +13943: +13943: +13943: +13943: BZ2_bzCompressEnd(&_stream); +13943: return compressed; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: inline CacheAllocationPtr BZip2_Uncompress( +13943: const char* input_data, size_t input_length, size_t* uncompressed_size, +13943: uint32_t compress_format_version, MemoryAllocator* allocator = nullptr) { +13943: +13943: uint32_t output_len = 0; +13943: if (compress_format_version == 2) { +13943: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +13943: &output_len)) { +13943: return nullptr; +13943: } +13943: } else { +13943: +13943: +13943: size_t proposed_output_len = ((input_length * 5) & (~(4096 - 1))) + 4096; +13943: output_len = static_cast( +13943: std::min(proposed_output_len, +13943: static_cast(std::numeric_limits::max()))); +13943: } +13943: +13943: bz_stream _stream; +13943: memset(&_stream, 0, sizeof(bz_stream)); +13943: +13943: int st = BZ2_bzDecompressInit(&_stream, 0, 0); +13943: if (st != +13943: # 1059 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 1059 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ) { +13943: return nullptr; +13943: } +13943: +13943: _stream.next_in = (char*)input_data; +13943: _stream.avail_in = static_cast(input_length); +13943: +13943: auto output = AllocateBlock(output_len, allocator); +13943: +13943: _stream.next_out = (char*)output.get(); +13943: _stream.avail_out = static_cast(output_len); +13943: +13943: bool done = false; +13943: while (!done) { +13943: st = BZ2_bzDecompress(&_stream); +13943: switch (st) { +13943: case +13943: # 1075 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 4 +13943: # 1075 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: : +13943: done = true; +13943: break; +13943: case +13943: # 1078 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: 0 +13943: # 1078 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: : { +13943: +13943: +13943: +13943: +13943: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: compress_format_version != 2 +13943: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "compress_format_version != 2" +13943: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: uint32_t old_sz = output_len; +13943: output_len = output_len * 1.2; +13943: auto tmp = AllocateBlock(output_len, allocator); +13943: memcpy(tmp.get(), output.get(), old_sz); +13943: output = std::move(tmp); +13943: +13943: +13943: _stream.next_out = (char*)(output.get() + old_sz); +13943: _stream.avail_out = static_cast(output_len - old_sz); +13943: break; +13943: } +13943: default: +13943: BZ2_bzDecompressEnd(&_stream); +13943: return nullptr; +13943: } +13943: } +13943: +13943: +13943: +13943: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: compress_format_version != 2 || _stream.avail_out == 0 +13943: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "compress_format_version != 2 || _stream.avail_out == 0" +13943: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: +13943: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: output_len >= _stream.avail_out +13943: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "output_len >= _stream.avail_out" +13943: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: *uncompressed_size = output_len - _stream.avail_out; +13943: BZ2_bzDecompressEnd(&_stream); +13943: return output; +13943: # 1114 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline bool LZ4_Compress(const CompressionInfo& info, +13943: uint32_t compress_format_version, const char* input, +13943: size_t length, ::std::string* output) { +13943: +13943: if (length > std::numeric_limits::max()) { +13943: +13943: return false; +13943: } +13943: +13943: size_t output_header_len = 0; +13943: if (compress_format_version == 2) { +13943: +13943: output_header_len = compression::PutDecompressedSizeInfo( +13943: output, static_cast(length)); +13943: } else { +13943: +13943: +13943: output_header_len = 8; +13943: output->resize(output_header_len); +13943: char* p = const_cast(output->c_str()); +13943: memcpy(p, &length, sizeof(length)); +13943: } +13943: int compress_bound = LZ4_compressBound(static_cast(length)); +13943: output->resize(static_cast(output_header_len + compress_bound)); +13943: +13943: int outlen; +13943: +13943: LZ4_stream_t* stream = LZ4_createStream(); +13943: Slice compression_dict = info.dict().GetRawDict(); +13943: if (compression_dict.size()) { +13943: LZ4_loadDict(stream, compression_dict.data(), +13943: static_cast(compression_dict.size())); +13943: } +13943: +13943: int acceleration; +13943: if (info.options().level < 0) { +13943: acceleration = -info.options().level; +13943: } else { +13943: acceleration = 1; +13943: } +13943: outlen = LZ4_compress_fast_continue( +13943: stream, input, &(*output)[output_header_len], static_cast(length), +13943: compress_bound, acceleration); +13943: +13943: +13943: +13943: +13943: +13943: LZ4_freeStream(stream); +13943: +13943: +13943: +13943: +13943: +13943: if (outlen == 0) { +13943: return false; +13943: } +13943: output->resize(static_cast(output_header_len + outlen)); +13943: return true; +13943: # 1189 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline CacheAllocationPtr LZ4_Uncompress(const UncompressionInfo& info, +13943: const char* input_data, +13943: size_t input_length, +13943: size_t* uncompressed_size, +13943: uint32_t compress_format_version, +13943: MemoryAllocator* allocator = nullptr) { +13943: +13943: uint32_t output_len = 0; +13943: if (compress_format_version == 2) { +13943: +13943: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +13943: &output_len)) { +13943: return nullptr; +13943: } +13943: } else { +13943: +13943: +13943: if (input_length < 8) { +13943: return nullptr; +13943: } +13943: if (port::kLittleEndian) { +13943: memcpy(&output_len, input_data, sizeof(output_len)); +13943: } else { +13943: memcpy(&output_len, input_data + 4, sizeof(output_len)); +13943: } +13943: input_length -= 8; +13943: input_data += 8; +13943: } +13943: +13943: auto output = AllocateBlock(output_len, allocator); +13943: +13943: int decompress_bytes = 0; +13943: +13943: +13943: LZ4_streamDecode_t* stream = LZ4_createStreamDecode(); +13943: const Slice& compression_dict = info.dict().GetRawDict(); +13943: if (compression_dict.size()) { +13943: LZ4_setStreamDecode(stream, compression_dict.data(), +13943: static_cast(compression_dict.size())); +13943: } +13943: decompress_bytes = LZ4_decompress_safe_continue( +13943: stream, input_data, output.get(), static_cast(input_length), +13943: static_cast(output_len)); +13943: LZ4_freeStreamDecode(stream); +13943: +13943: +13943: +13943: +13943: +13943: +13943: if (decompress_bytes < 0) { +13943: return nullptr; +13943: } +13943: +13943: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: decompress_bytes == static_cast(output_len) +13943: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "decompress_bytes == static_cast(output_len)" +13943: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: *uncompressed_size = decompress_bytes; +13943: return output; +13943: # 1262 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline bool LZ4HC_Compress(const CompressionInfo& info, +13943: uint32_t compress_format_version, const char* input, +13943: size_t length, ::std::string* output) { +13943: +13943: if (length > std::numeric_limits::max()) { +13943: +13943: return false; +13943: } +13943: +13943: size_t output_header_len = 0; +13943: if (compress_format_version == 2) { +13943: +13943: output_header_len = compression::PutDecompressedSizeInfo( +13943: output, static_cast(length)); +13943: } else { +13943: +13943: +13943: output_header_len = 8; +13943: output->resize(output_header_len); +13943: char* p = const_cast(output->c_str()); +13943: memcpy(p, &length, sizeof(length)); +13943: } +13943: int compress_bound = LZ4_compressBound(static_cast(length)); +13943: output->resize(static_cast(output_header_len + compress_bound)); +13943: +13943: int outlen; +13943: int level; +13943: if (info.options().level == CompressionOptions::kDefaultCompressionLevel) { +13943: level = 0; +13943: } else { +13943: level = info.options().level; +13943: } +13943: +13943: LZ4_streamHC_t* stream = LZ4_createStreamHC(); +13943: LZ4_resetStreamHC(stream, level); +13943: Slice compression_dict = info.dict().GetRawDict(); +13943: const char* compression_dict_data = +13943: compression_dict.size() > 0 ? compression_dict.data() : nullptr; +13943: size_t compression_dict_size = compression_dict.size(); +13943: if (compression_dict_data != nullptr) { +13943: LZ4_loadDictHC(stream, compression_dict_data, +13943: static_cast(compression_dict_size)); +13943: } +13943: +13943: +13943: outlen = +13943: LZ4_compress_HC_continue(stream, input, &(*output)[output_header_len], +13943: static_cast(length), compress_bound); +13943: +13943: +13943: +13943: +13943: +13943: LZ4_freeStreamHC(stream); +13943: # 1335 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: if (outlen == 0) { +13943: return false; +13943: } +13943: output->resize(static_cast(output_header_len + outlen)); +13943: return true; +13943: # 1348 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline bool XPRESS_Compress(const char* , size_t , +13943: std::string* ) { +13943: return false; +13943: } +13943: # 1368 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: inline char* XPRESS_Uncompress(const char* , +13943: size_t , +13943: size_t* ) { +13943: return nullptr; +13943: } +13943: +13943: +13943: inline bool ZSTD_Compress(const CompressionInfo& info, const char* input, +13943: size_t length, ::std::string* output) { +13943: +13943: if (length > std::numeric_limits::max()) { +13943: +13943: return false; +13943: } +13943: +13943: size_t output_header_len = compression::PutDecompressedSizeInfo( +13943: output, static_cast(length)); +13943: +13943: size_t compressBound = ZSTD_compressBound(length); +13943: output->resize(static_cast(output_header_len + compressBound)); +13943: size_t outlen = 0; +13943: +13943: ZSTD_CCtx* context = info.context().ZSTDPreallocCtx(); +13943: +13943: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: context != nullptr +13943: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "context != nullptr" +13943: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: +13943: if (info.dict().GetDigestedZstdCDict() != nullptr) { +13943: ZSTD_CCtx_refCDict(context, info.dict().GetDigestedZstdCDict()); +13943: } else { +13943: ZSTD_CCtx_loadDictionary(context, info.dict().GetRawDict().data(), +13943: info.dict().GetRawDict().size()); +13943: } +13943: +13943: +13943: outlen = ZSTD_compress2(context, &(*output)[output_header_len], compressBound, +13943: input, length); +13943: # 1431 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: if (outlen == 0) { +13943: return false; +13943: } +13943: output->resize(output_header_len + outlen); +13943: return true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline CacheAllocationPtr ZSTD_Uncompress( +13943: const UncompressionInfo& info, const char* input_data, size_t input_length, +13943: size_t* uncompressed_size, MemoryAllocator* allocator = nullptr, +13943: const char** error_message = nullptr) { +13943: +13943: static const char* const kErrorDecodeOutputSize = +13943: "Cannot decode output size."; +13943: static const char* const kErrorOutputLenMismatch = +13943: "Decompressed size does not match header."; +13943: uint32_t output_len = 0; +13943: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +13943: &output_len)) { +13943: if (error_message) { +13943: *error_message = kErrorDecodeOutputSize; +13943: } +13943: return nullptr; +13943: } +13943: +13943: CacheAllocationPtr output = AllocateBlock(output_len, allocator); +13943: size_t actual_output_length = 0; +13943: +13943: ZSTD_DCtx* context = info.context().GetZSTDContext(); +13943: +13943: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: context != nullptr +13943: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "context != nullptr" +13943: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: actual_output_length = ZSTD_decompress_usingDict( +13943: context, output.get(), output_len, input_data, input_length, +13943: info.dict().GetRawDict().data(), info.dict().GetRawDict().size()); +13943: # 1491 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: if (ZSTD_isError(actual_output_length)) { +13943: if (error_message) { +13943: *error_message = ZSTD_getErrorName(actual_output_length); +13943: } +13943: return nullptr; +13943: } else if (actual_output_length != output_len) { +13943: if (error_message) { +13943: *error_message = kErrorOutputLenMismatch; +13943: } +13943: return nullptr; +13943: } +13943: +13943: *uncompressed_size = actual_output_length; +13943: return output; +13943: # 1514 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: inline bool ZSTD_TrainDictionarySupported() { +13943: +13943: +13943: +13943: +13943: return (ZSTD_versionNumber() >= 10103); +13943: +13943: +13943: +13943: } +13943: +13943: inline std::string ZSTD_TrainDictionary(const std::string& samples, +13943: const std::vector& sample_lens, +13943: size_t max_dict_bytes) { +13943: +13943: +13943: +13943: +13943: +13943: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: samples.empty() == sample_lens.empty() +13943: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "samples.empty() == sample_lens.empty()" +13943: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: if (samples.empty()) { +13943: return ""; +13943: } +13943: std::string dict_data(max_dict_bytes, '\0'); +13943: size_t dict_len = ZDICT_trainFromBuffer( +13943: &dict_data[0], max_dict_bytes, &samples[0], &sample_lens[0], +13943: static_cast(sample_lens.size())); +13943: if (ZDICT_isError(dict_len)) { +13943: return ""; +13943: } +13943: +13943: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: dict_len <= max_dict_bytes +13943: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "dict_len <= max_dict_bytes" +13943: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: dict_data.resize(dict_len); +13943: return dict_data; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: inline std::string ZSTD_TrainDictionary(const std::string& samples, +13943: size_t sample_len_shift, +13943: size_t max_dict_bytes) { +13943: +13943: +13943: +13943: +13943: size_t num_samples = samples.size() >> sample_len_shift; +13943: std::vector sample_lens(num_samples, size_t(1) << sample_len_shift); +13943: return ZSTD_TrainDictionary(samples, sample_lens, max_dict_bytes); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: } +13943: +13943: inline bool ZSTD_FinalizeDictionarySupported() { +13943: +13943: +13943: return (ZSTD_versionNumber() >= 10405); +13943: +13943: +13943: +13943: } +13943: +13943: inline std::string ZSTD_FinalizeDictionary( +13943: const std::string& samples, const std::vector& sample_lens, +13943: size_t max_dict_bytes, int level) { +13943: +13943: +13943: +13943: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: samples.empty() == sample_lens.empty() +13943: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "samples.empty() == sample_lens.empty()" +13943: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: if (samples.empty()) { +13943: return ""; +13943: } +13943: if (level == CompressionOptions::kDefaultCompressionLevel) { +13943: +13943: +13943: level = 3; +13943: } +13943: std::string dict_data(max_dict_bytes, '\0'); +13943: size_t dict_len = ZDICT_finalizeDictionary( +13943: dict_data.data(), max_dict_bytes, samples.data(), +13943: std::min(static_cast(samples.size()), max_dict_bytes), +13943: samples.data(), sample_lens.data(), +13943: static_cast(sample_lens.size()), +13943: {level, 0 , 0 }); +13943: if (ZDICT_isError(dict_len)) { +13943: return ""; +13943: } else { +13943: +13943: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: dict_len <= max_dict_bytes +13943: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "dict_len <= max_dict_bytes" +13943: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: dict_data.resize(dict_len); +13943: return dict_data; +13943: } +13943: # 1621 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: } +13943: +13943: inline bool CompressData(const Slice& raw, +13943: const CompressionInfo& compression_info, +13943: uint32_t compress_format_version, +13943: std::string* compressed_output) { +13943: bool ret = false; +13943: +13943: +13943: +13943: switch (compression_info.type()) { +13943: case kSnappyCompression: +13943: ret = Snappy_Compress(compression_info, raw.data(), raw.size(), +13943: compressed_output); +13943: break; +13943: case kZlibCompression: +13943: ret = Zlib_Compress(compression_info, compress_format_version, raw.data(), +13943: raw.size(), compressed_output); +13943: break; +13943: case kBZip2Compression: +13943: ret = BZip2_Compress(compression_info, compress_format_version, +13943: raw.data(), raw.size(), compressed_output); +13943: break; +13943: case kLZ4Compression: +13943: ret = LZ4_Compress(compression_info, compress_format_version, raw.data(), +13943: raw.size(), compressed_output); +13943: break; +13943: case kLZ4HCCompression: +13943: ret = LZ4HC_Compress(compression_info, compress_format_version, +13943: raw.data(), raw.size(), compressed_output); +13943: break; +13943: case kXpressCompression: +13943: ret = XPRESS_Compress(raw.data(), raw.size(), compressed_output); +13943: break; +13943: case kZSTD: +13943: case kZSTDNotFinalCompression: +13943: ret = ZSTD_Compress(compression_info, raw.data(), raw.size(), +13943: compressed_output); +13943: break; +13943: default: +13943: +13943: break; +13943: } +13943: +13943: rocksdb::SyncPoint::GetInstance()->Process("CompressData:TamperWithReturnValue", static_cast(&ret)) +13943: ; +13943: +13943: return ret; +13943: } +13943: +13943: inline CacheAllocationPtr UncompressData( +13943: const UncompressionInfo& uncompression_info, const char* data, size_t n, +13943: size_t* uncompressed_size, uint32_t compress_format_version, +13943: MemoryAllocator* allocator = nullptr, +13943: const char** error_message = nullptr) { +13943: switch (uncompression_info.type()) { +13943: case kSnappyCompression: +13943: return Snappy_Uncompress(data, n, uncompressed_size, allocator); +13943: case kZlibCompression: +13943: return Zlib_Uncompress(uncompression_info, data, n, uncompressed_size, +13943: compress_format_version, allocator); +13943: case kBZip2Compression: +13943: return BZip2_Uncompress(data, n, uncompressed_size, +13943: compress_format_version, allocator); +13943: case kLZ4Compression: +13943: case kLZ4HCCompression: +13943: return LZ4_Uncompress(uncompression_info, data, n, uncompressed_size, +13943: compress_format_version, allocator); +13943: case kXpressCompression: +13943: +13943: +13943: return CacheAllocationPtr(XPRESS_Uncompress(data, n, uncompressed_size)); +13943: case kZSTD: +13943: case kZSTDNotFinalCompression: +13943: +13943: return ZSTD_Uncompress(uncompression_info, data, n, uncompressed_size, +13943: allocator, error_message); +13943: default: +13943: return CacheAllocationPtr(); +13943: } +13943: } +13943: +13943: +13943: class CompressionTypeRecord { +13943: public: +13943: explicit CompressionTypeRecord(CompressionType compression_type) +13943: : compression_type_(compression_type) {} +13943: +13943: CompressionType GetCompressionType() const { return compression_type_; } +13943: +13943: inline void EncodeTo(std::string* dst) const { +13943: +13943: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: dst != nullptr +13943: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "dst != nullptr" +13943: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: PutFixed32(dst, compression_type_); +13943: } +13943: +13943: inline Status DecodeFrom(Slice* src) { +13943: constexpr char class_name[] = "CompressionTypeRecord"; +13943: +13943: uint32_t val; +13943: if (!GetFixed32(src, &val)) { +13943: return Status::Corruption(class_name, +13943: "Error decoding WAL compression type"); +13943: } +13943: CompressionType compression_type = static_cast(val); +13943: if (!StreamingCompressionTypeSupported(compression_type)) { +13943: return Status::Corruption(class_name, +13943: "WAL compression type not supported"); +13943: } +13943: compression_type_ = compression_type; +13943: return Status::OK(); +13943: } +13943: +13943: inline std::string DebugString() const { +13943: return "compression_type: " + CompressionTypeToString(compression_type_); +13943: } +13943: +13943: private: +13943: CompressionType compression_type_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class StreamingCompress { +13943: public: +13943: StreamingCompress(CompressionType compression_type, +13943: const CompressionOptions& opts, +13943: uint32_t compress_format_version, size_t max_output_len) +13943: : compression_type_(compression_type), +13943: opts_(opts), +13943: compress_format_version_(compress_format_version), +13943: max_output_len_(max_output_len) {} +13943: virtual ~StreamingCompress() = default; +13943: # 1767 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: virtual int Compress(const char* input, size_t input_size, char* output, +13943: size_t* output_pos) = 0; +13943: +13943: +13943: static StreamingCompress* Create(CompressionType compression_type, +13943: const CompressionOptions& opts, +13943: uint32_t compress_format_version, +13943: size_t max_output_len); +13943: virtual void Reset() = 0; +13943: +13943: protected: +13943: const CompressionType compression_type_; +13943: const CompressionOptions opts_; +13943: const uint32_t compress_format_version_; +13943: const size_t max_output_len_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class StreamingUncompress { +13943: public: +13943: StreamingUncompress(CompressionType compression_type, +13943: uint32_t compress_format_version, size_t max_output_len) +13943: : compression_type_(compression_type), +13943: compress_format_version_(compress_format_version), +13943: max_output_len_(max_output_len) {} +13943: virtual ~StreamingUncompress() = default; +13943: # 1810 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: virtual int Uncompress(const char* input, size_t input_size, char* output, +13943: size_t* output_pos) = 0; +13943: static StreamingUncompress* Create(CompressionType compression_type, +13943: uint32_t compress_format_version, +13943: size_t max_output_len); +13943: virtual void Reset() = 0; +13943: +13943: protected: +13943: CompressionType compression_type_; +13943: uint32_t compress_format_version_; +13943: size_t max_output_len_; +13943: }; +13943: +13943: class ZSTDStreamingCompress final : public StreamingCompress { +13943: public: +13943: explicit ZSTDStreamingCompress(const CompressionOptions& opts, +13943: uint32_t compress_format_version, +13943: size_t max_output_len) +13943: : StreamingCompress(kZSTD, opts, compress_format_version, +13943: max_output_len) { +13943: +13943: cctx_ = ZSTD_createCCtx(); +13943: +13943: ZSTD_CCtx_setParameter(cctx_, ZSTD_c_checksumFlag, 1); +13943: +13943: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: cctx_ != nullptr +13943: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "cctx_ != nullptr" +13943: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: input_buffer_ = { nullptr, 0, 0}; +13943: +13943: } +13943: ~ZSTDStreamingCompress() override { +13943: +13943: ZSTD_freeCCtx(cctx_); +13943: +13943: } +13943: int Compress(const char* input, size_t input_size, char* output, +13943: size_t* output_pos) override; +13943: void Reset() override; +13943: +13943: ZSTD_CCtx* cctx_; +13943: ZSTD_inBuffer input_buffer_; +13943: +13943: }; +13943: +13943: class ZSTDStreamingUncompress final : public StreamingUncompress { +13943: public: +13943: explicit ZSTDStreamingUncompress(uint32_t compress_format_version, +13943: size_t max_output_len) +13943: : StreamingUncompress(kZSTD, compress_format_version, max_output_len) { +13943: +13943: dctx_ = ZSTD_createDCtx(); +13943: +13943: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: (static_cast ( +13943: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: dctx_ != nullptr +13943: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: "dctx_ != nullptr" +13943: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +13943: ; +13943: input_buffer_ = { nullptr, 0, 0}; +13943: +13943: } +13943: ~ZSTDStreamingUncompress() override { +13943: +13943: ZSTD_freeDCtx(dctx_); +13943: +13943: } +13943: int Uncompress(const char* input, size_t input_size, char* output, +13943: size_t* output_size) override; +13943: void Reset() override; +13943: +13943: private: +13943: +13943: ZSTD_DCtx* dctx_; +13943: ZSTD_inBuffer input_buffer_; +13943: +13943: }; +13943: +13943: } +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/options/cf_options.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: struct ImmutableCFOptions { +13943: public: +13943: static const char* kName() { return "ImmutableCFOptions"; } +13943: explicit ImmutableCFOptions(); +13943: explicit ImmutableCFOptions(const ColumnFamilyOptions& cf_options); +13943: +13943: CompactionStyle compaction_style; +13943: +13943: CompactionPri compaction_pri; +13943: +13943: const Comparator* user_comparator; +13943: InternalKeyComparator internal_comparator; +13943: +13943: std::shared_ptr merge_operator; +13943: +13943: const CompactionFilter* compaction_filter; +13943: +13943: std::shared_ptr compaction_filter_factory; +13943: +13943: int min_write_buffer_number_to_merge; +13943: +13943: int max_write_buffer_number_to_maintain; +13943: +13943: int64_t max_write_buffer_size_to_maintain; +13943: +13943: bool inplace_update_support; +13943: +13943: UpdateStatus (*inplace_callback)(char* existing_value, +13943: uint32_t* existing_value_size, +13943: Slice delta_value, +13943: std::string* merged_value); +13943: +13943: std::shared_ptr memtable_factory; +13943: +13943: Options::TablePropertiesCollectorFactories +13943: table_properties_collector_factories; +13943: +13943: +13943: +13943: uint32_t bloom_locality; +13943: +13943: bool level_compaction_dynamic_level_bytes; +13943: +13943: int num_levels; +13943: +13943: bool optimize_filters_for_hits; +13943: +13943: bool force_consistency_checks; +13943: +13943: Temperature default_temperature; +13943: +13943: std::shared_ptr +13943: memtable_insert_with_hint_prefix_extractor; +13943: +13943: std::vector cf_paths; +13943: +13943: std::shared_ptr compaction_thread_limiter; +13943: +13943: std::shared_ptr sst_partitioner_factory; +13943: +13943: std::shared_ptr blob_cache; +13943: +13943: bool persist_user_defined_timestamps; +13943: }; +13943: +13943: struct ImmutableOptions : public ImmutableDBOptions, public ImmutableCFOptions { +13943: explicit ImmutableOptions(); +13943: explicit ImmutableOptions(const Options& options); +13943: +13943: ImmutableOptions(const DBOptions& db_options, +13943: const ColumnFamilyOptions& cf_options); +13943: +13943: ImmutableOptions(const ImmutableDBOptions& db_options, +13943: const ImmutableCFOptions& cf_options); +13943: +13943: ImmutableOptions(const DBOptions& db_options, +13943: const ImmutableCFOptions& cf_options); +13943: +13943: ImmutableOptions(const ImmutableDBOptions& db_options, +13943: const ColumnFamilyOptions& cf_options); +13943: }; +13943: +13943: struct MutableCFOptions { +13943: static const char* kName() { return "MutableCFOptions"; } +13943: explicit MutableCFOptions(const ColumnFamilyOptions& options) +13943: : write_buffer_size(options.write_buffer_size), +13943: max_write_buffer_number(options.max_write_buffer_number), +13943: arena_block_size(options.arena_block_size), +13943: memtable_prefix_bloom_size_ratio( +13943: options.memtable_prefix_bloom_size_ratio), +13943: memtable_whole_key_filtering(options.memtable_whole_key_filtering), +13943: memtable_huge_page_size(options.memtable_huge_page_size), +13943: max_successive_merges(options.max_successive_merges), +13943: strict_max_successive_merges(options.strict_max_successive_merges), +13943: inplace_update_num_locks(options.inplace_update_num_locks), +13943: prefix_extractor(options.prefix_extractor), +13943: experimental_mempurge_threshold( +13943: options.experimental_mempurge_threshold), +13943: disable_auto_compactions(options.disable_auto_compactions), +13943: table_factory(options.table_factory), +13943: soft_pending_compaction_bytes_limit( +13943: options.soft_pending_compaction_bytes_limit), +13943: hard_pending_compaction_bytes_limit( +13943: options.hard_pending_compaction_bytes_limit), +13943: level0_file_num_compaction_trigger( +13943: options.level0_file_num_compaction_trigger), +13943: level0_slowdown_writes_trigger(options.level0_slowdown_writes_trigger), +13943: level0_stop_writes_trigger(options.level0_stop_writes_trigger), +13943: max_compaction_bytes(options.max_compaction_bytes), +13943: target_file_size_base(options.target_file_size_base), +13943: target_file_size_multiplier(options.target_file_size_multiplier), +13943: max_bytes_for_level_base(options.max_bytes_for_level_base), +13943: max_bytes_for_level_multiplier(options.max_bytes_for_level_multiplier), +13943: ttl(options.ttl), +13943: periodic_compaction_seconds(options.periodic_compaction_seconds), +13943: max_bytes_for_level_multiplier_additional( +13943: options.max_bytes_for_level_multiplier_additional), +13943: compaction_options_fifo(options.compaction_options_fifo), +13943: compaction_options_universal(options.compaction_options_universal), +13943: preclude_last_level_data_seconds( +13943: options.preclude_last_level_data_seconds), +13943: preserve_internal_time_seconds(options.preserve_internal_time_seconds), +13943: enable_blob_files(options.enable_blob_files), +13943: min_blob_size(options.min_blob_size), +13943: blob_file_size(options.blob_file_size), +13943: blob_compression_type(options.blob_compression_type), +13943: enable_blob_garbage_collection(options.enable_blob_garbage_collection), +13943: blob_garbage_collection_age_cutoff( +13943: options.blob_garbage_collection_age_cutoff), +13943: blob_garbage_collection_force_threshold( +13943: options.blob_garbage_collection_force_threshold), +13943: blob_compaction_readahead_size(options.blob_compaction_readahead_size), +13943: blob_file_starting_level(options.blob_file_starting_level), +13943: prepopulate_blob_cache(options.prepopulate_blob_cache), +13943: max_sequential_skip_in_iterations( +13943: options.max_sequential_skip_in_iterations), +13943: paranoid_file_checks(options.paranoid_file_checks), +13943: report_bg_io_stats(options.report_bg_io_stats), +13943: compression(options.compression), +13943: bottommost_compression(options.bottommost_compression), +13943: compression_opts(options.compression_opts), +13943: bottommost_compression_opts(options.bottommost_compression_opts), +13943: last_level_temperature(options.last_level_temperature), +13943: default_write_temperature(options.default_write_temperature), +13943: memtable_protection_bytes_per_key( +13943: options.memtable_protection_bytes_per_key), +13943: block_protection_bytes_per_key(options.block_protection_bytes_per_key), +13943: paranoid_memory_checks(options.paranoid_memory_checks), +13943: sample_for_compression( +13943: options.sample_for_compression), +13943: compression_per_level(options.compression_per_level), +13943: memtable_max_range_deletions(options.memtable_max_range_deletions), +13943: bottommost_file_compaction_delay( +13943: options.bottommost_file_compaction_delay), +13943: uncache_aggressiveness(options.uncache_aggressiveness) { +13943: RefreshDerivedOptions(options.num_levels, options.compaction_style); +13943: } +13943: +13943: MutableCFOptions() +13943: : write_buffer_size(0), +13943: max_write_buffer_number(0), +13943: arena_block_size(0), +13943: memtable_prefix_bloom_size_ratio(0), +13943: memtable_whole_key_filtering(false), +13943: memtable_huge_page_size(0), +13943: max_successive_merges(0), +13943: strict_max_successive_merges(false), +13943: inplace_update_num_locks(0), +13943: prefix_extractor(nullptr), +13943: experimental_mempurge_threshold(0.0), +13943: disable_auto_compactions(false), +13943: soft_pending_compaction_bytes_limit(0), +13943: hard_pending_compaction_bytes_limit(0), +13943: level0_file_num_compaction_trigger(0), +13943: level0_slowdown_writes_trigger(0), +13943: level0_stop_writes_trigger(0), +13943: max_compaction_bytes(0), +13943: target_file_size_base(0), +13943: target_file_size_multiplier(0), +13943: max_bytes_for_level_base(0), +13943: max_bytes_for_level_multiplier(0), +13943: ttl(0), +13943: periodic_compaction_seconds(0), +13943: compaction_options_fifo(), +13943: preclude_last_level_data_seconds(0), +13943: preserve_internal_time_seconds(0), +13943: enable_blob_files(false), +13943: min_blob_size(0), +13943: blob_file_size(0), +13943: blob_compression_type(kNoCompression), +13943: enable_blob_garbage_collection(false), +13943: blob_garbage_collection_age_cutoff(0.0), +13943: blob_garbage_collection_force_threshold(0.0), +13943: blob_compaction_readahead_size(0), +13943: blob_file_starting_level(0), +13943: prepopulate_blob_cache(PrepopulateBlobCache::kDisable), +13943: max_sequential_skip_in_iterations(0), +13943: paranoid_file_checks(false), +13943: report_bg_io_stats(false), +13943: compression(Snappy_Supported() ? kSnappyCompression : kNoCompression), +13943: bottommost_compression(kDisableCompressionOption), +13943: last_level_temperature(Temperature::kUnknown), +13943: default_write_temperature(Temperature::kUnknown), +13943: memtable_protection_bytes_per_key(0), +13943: block_protection_bytes_per_key(0), +13943: paranoid_memory_checks(false), +13943: sample_for_compression(0), +13943: memtable_max_range_deletions(0), +13943: bottommost_file_compaction_delay(0), +13943: uncache_aggressiveness(0) {} +13943: +13943: explicit MutableCFOptions(const Options& options); +13943: +13943: +13943: void RefreshDerivedOptions(int num_levels, CompactionStyle compaction_style); +13943: +13943: void RefreshDerivedOptions(const ImmutableCFOptions& ioptions) { +13943: RefreshDerivedOptions(ioptions.num_levels, ioptions.compaction_style); +13943: } +13943: +13943: int MaxBytesMultiplerAdditional(int level) const { +13943: if (level >= +13943: static_cast(max_bytes_for_level_multiplier_additional.size())) { +13943: return 1; +13943: } +13943: return max_bytes_for_level_multiplier_additional[level]; +13943: } +13943: +13943: void Dump(Logger* log) const; +13943: +13943: +13943: size_t write_buffer_size; +13943: int max_write_buffer_number; +13943: size_t arena_block_size; +13943: double memtable_prefix_bloom_size_ratio; +13943: bool memtable_whole_key_filtering; +13943: size_t memtable_huge_page_size; +13943: size_t max_successive_merges; +13943: bool strict_max_successive_merges; +13943: size_t inplace_update_num_locks; +13943: +13943: +13943: +13943: std::shared_ptr prefix_extractor; +13943: # 281 "/build/reproducible-path/rocksdb-9.10.0/options/cf_options.h" +13943: double experimental_mempurge_threshold; +13943: +13943: +13943: bool disable_auto_compactions; +13943: std::shared_ptr table_factory; +13943: uint64_t soft_pending_compaction_bytes_limit; +13943: uint64_t hard_pending_compaction_bytes_limit; +13943: int level0_file_num_compaction_trigger; +13943: int level0_slowdown_writes_trigger; +13943: int level0_stop_writes_trigger; +13943: uint64_t max_compaction_bytes; +13943: uint64_t target_file_size_base; +13943: int target_file_size_multiplier; +13943: uint64_t max_bytes_for_level_base; +13943: double max_bytes_for_level_multiplier; +13943: uint64_t ttl; +13943: uint64_t periodic_compaction_seconds; +13943: std::vector max_bytes_for_level_multiplier_additional; +13943: CompactionOptionsFIFO compaction_options_fifo; +13943: CompactionOptionsUniversal compaction_options_universal; +13943: uint64_t preclude_last_level_data_seconds; +13943: uint64_t preserve_internal_time_seconds; +13943: +13943: +13943: bool enable_blob_files; +13943: uint64_t min_blob_size; +13943: uint64_t blob_file_size; +13943: CompressionType blob_compression_type; +13943: bool enable_blob_garbage_collection; +13943: double blob_garbage_collection_age_cutoff; +13943: double blob_garbage_collection_force_threshold; +13943: uint64_t blob_compaction_readahead_size; +13943: int blob_file_starting_level; +13943: PrepopulateBlobCache prepopulate_blob_cache; +13943: +13943: +13943: uint64_t max_sequential_skip_in_iterations; +13943: bool paranoid_file_checks; +13943: bool report_bg_io_stats; +13943: CompressionType compression; +13943: CompressionType bottommost_compression; +13943: CompressionOptions compression_opts; +13943: CompressionOptions bottommost_compression_opts; +13943: Temperature last_level_temperature; +13943: Temperature default_write_temperature; +13943: uint32_t memtable_protection_bytes_per_key; +13943: uint8_t block_protection_bytes_per_key; +13943: bool paranoid_memory_checks; +13943: +13943: uint64_t sample_for_compression; +13943: std::vector compression_per_level; +13943: uint32_t memtable_max_range_deletions; +13943: uint32_t bottommost_file_compaction_delay; +13943: uint32_t uncache_aggressiveness; +13943: +13943: +13943: +13943: std::vector max_file_size; +13943: }; +13943: +13943: uint64_t MultiplyCheckOverflow(uint64_t op1, double op2); +13943: +13943: +13943: uint64_t MaxFileSizeForLevel(const MutableCFOptions& cf_options, +13943: int level, CompactionStyle compaction_style, int base_level = 1, +13943: bool level_compaction_dynamic_level_bytes = false); +13943: +13943: +13943: +13943: size_t MaxFileSizeForL0MetaPin(const MutableCFOptions& cf_options); +13943: +13943: Status GetStringFromMutableCFOptions(const ConfigOptions& config_options, +13943: const MutableCFOptions& mutable_opts, +13943: std::string* opt_string); +13943: +13943: Status GetMutableOptionsFromStrings( +13943: const MutableCFOptions& base_options, +13943: const std::unordered_map& options_map, +13943: Logger* info_log, MutableCFOptions* new_options); +13943: +13943: +13943: std::vector TEST_GetImmutableInMutableCFOptions(); +13943: extern bool TEST_allowSetOptionsImmutableInMutable; +13943: +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/malloc.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/port/malloc.h" +13943: +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class RandomAccessFile; +13943: struct ReadOptions; +13943: +13943: bool ShouldReportDetailedTime(Env* env, Statistics* stats); +13943: +13943: +13943: constexpr uint32_t kMagicNumberLengthByte = 8; +13943: +13943: extern const uint64_t kLegacyBlockBasedTableMagicNumber; +13943: extern const uint64_t kBlockBasedTableMagicNumber; +13943: +13943: extern const uint64_t kLegacyPlainTableMagicNumber; +13943: extern const uint64_t kPlainTableMagicNumber; +13943: +13943: extern const uint64_t kCuckooTableMagicNumber; +13943: +13943: +13943: +13943: class BlockHandle { +13943: public: +13943: +13943: +13943: BlockHandle(); +13943: BlockHandle(uint64_t offset, uint64_t size); +13943: +13943: +13943: uint64_t offset() const { return offset_; } +13943: void set_offset(uint64_t _offset) { offset_ = _offset; } +13943: +13943: +13943: uint64_t size() const { return size_; } +13943: void set_size(uint64_t _size) { size_ = _size; } +13943: +13943: void EncodeTo(std::string* dst) const; +13943: char* EncodeTo(char* dst) const; +13943: Status DecodeFrom(Slice* input); +13943: Status DecodeSizeFrom(uint64_t offset, Slice* input); +13943: +13943: +13943: std::string ToString(bool hex = true) const; +13943: +13943: +13943: +13943: bool IsNull() const { return offset_ == 0 && size_ == 0; } +13943: +13943: static const BlockHandle& NullBlockHandle() { return kNullBlockHandle; } +13943: +13943: +13943: static constexpr uint32_t kMaxEncodedLength = 2 * kMaxVarint64Length; +13943: +13943: inline bool operator==(const BlockHandle& rhs) const { +13943: return offset_ == rhs.offset_ && size_ == rhs.size_; +13943: } +13943: inline bool operator!=(const BlockHandle& rhs) const { +13943: return !(*this == rhs); +13943: } +13943: +13943: private: +13943: uint64_t offset_; +13943: uint64_t size_; +13943: +13943: static const BlockHandle kNullBlockHandle; +13943: }; +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: struct IndexValue { +13943: BlockHandle handle; +13943: +13943: Slice first_internal_key; +13943: +13943: IndexValue() = default; +13943: IndexValue(BlockHandle _handle, Slice _first_internal_key) +13943: : handle(_handle), first_internal_key(_first_internal_key) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: void EncodeTo(std::string* dst, bool have_first_key, +13943: const BlockHandle* previous_handle) const; +13943: Status DecodeFrom(Slice* input, bool have_first_key, +13943: const BlockHandle* previous_handle); +13943: +13943: std::string ToString(bool hex, bool have_first_key) const; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline uint32_t ChecksumModifierForContext(uint32_t base_context_checksum, +13943: uint64_t offset) { +13943: +13943: +13943: +13943: +13943: +13943: uint32_t all_or_nothing = uint32_t{0} - (base_context_checksum != 0); +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: uint32_t modifier = +13943: base_context_checksum ^ (Lower32of64(offset) + Upper32of64(offset)); +13943: +13943: return modifier & all_or_nothing; +13943: } +13943: +13943: inline uint32_t GetCompressFormatForVersion(uint32_t format_version) { +13943: +13943: +13943: +13943: return format_version >= 2 ? 2 : 1; +13943: } +13943: +13943: constexpr uint32_t kLatestFormatVersion = 6; +13943: +13943: inline bool IsSupportedFormatVersion(uint32_t version) { +13943: return version <= kLatestFormatVersion; +13943: } +13943: +13943: +13943: inline bool FormatVersionUsesContextChecksum(uint32_t version) { +13943: return version >= 6; +13943: } +13943: +13943: inline bool FormatVersionUsesIndexHandleInFooter(uint32_t version) { +13943: return version < 6; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: class Footer { +13943: public: +13943: +13943: Footer() {} +13943: +13943: void Reset() { +13943: table_magic_number_ = kNullTableMagicNumber; +13943: format_version_ = kInvalidFormatVersion; +13943: base_context_checksum_ = 0; +13943: metaindex_handle_ = BlockHandle::NullBlockHandle(); +13943: index_handle_ = BlockHandle::NullBlockHandle(); +13943: checksum_type_ = kInvalidChecksumType; +13943: block_trailer_size_ = 0; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status DecodeFrom(Slice input, uint64_t input_offset, +13943: uint64_t enforce_table_magic_number = 0); +13943: +13943: +13943: +13943: uint64_t table_magic_number() const { return table_magic_number_; } +13943: +13943: +13943: +13943: +13943: uint32_t format_version() const { return format_version_; } +13943: +13943: +13943: uint32_t base_context_checksum() const { return base_context_checksum_; } +13943: +13943: +13943: const BlockHandle& metaindex_handle() const { return metaindex_handle_; } +13943: +13943: +13943: +13943: const BlockHandle& index_handle() const { return index_handle_; } +13943: +13943: +13943: ChecksumType checksum_type() const { +13943: return static_cast(checksum_type_); +13943: } +13943: +13943: +13943: +13943: +13943: inline size_t GetBlockTrailerSize() const { return block_trailer_size_; } +13943: +13943: +13943: std::string ToString() const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: static constexpr uint32_t kVersion0EncodedLength = +13943: 2 * BlockHandle::kMaxEncodedLength + kMagicNumberLengthByte; +13943: static constexpr uint32_t kMinEncodedLength = kVersion0EncodedLength; +13943: +13943: +13943: +13943: +13943: +13943: static constexpr uint32_t kNewVersionsEncodedLength = +13943: 1 + 2 * BlockHandle::kMaxEncodedLength + 4 + kMagicNumberLengthByte; +13943: static constexpr uint32_t kMaxEncodedLength = kNewVersionsEncodedLength; +13943: +13943: static constexpr uint64_t kNullTableMagicNumber = 0; +13943: +13943: static constexpr uint32_t kInvalidFormatVersion = 0xffffffffU; +13943: +13943: private: +13943: static constexpr int kInvalidChecksumType = +13943: (1 << (sizeof(ChecksumType) * 8)) | kNoChecksum; +13943: +13943: uint64_t table_magic_number_ = kNullTableMagicNumber; +13943: uint32_t format_version_ = kInvalidFormatVersion; +13943: uint32_t base_context_checksum_ = 0; +13943: BlockHandle metaindex_handle_; +13943: BlockHandle index_handle_; +13943: int checksum_type_ = kInvalidChecksumType; +13943: uint8_t block_trailer_size_ = 0; +13943: }; +13943: +13943: +13943: class FooterBuilder { +13943: public: +13943: # 293 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: Status Build(uint64_t table_magic_number, uint32_t format_version, +13943: uint64_t footer_offset, ChecksumType checksum_type, +13943: const BlockHandle& metaindex_handle, +13943: const BlockHandle& index_handle = BlockHandle::NullBlockHandle(), +13943: uint32_t base_context_checksum = 0); +13943: +13943: +13943: +13943: const Slice& GetSlice() const { +13943: +13943: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 3 4 +13943: (static_cast ( +13943: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: slice_.size() +13943: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: "slice_.size()" +13943: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: ; +13943: return slice_; +13943: } +13943: +13943: private: +13943: Slice slice_; +13943: std::array data_; +13943: }; +13943: +13943: +13943: +13943: +13943: Status ReadFooterFromFile(const IOOptions& opts, RandomAccessFileReader* file, +13943: FileSystem& fs, FilePrefetchBuffer* prefetch_buffer, +13943: uint64_t file_size, Footer* footer, +13943: uint64_t enforce_table_magic_number = 0, +13943: Statistics* stats = nullptr); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint32_t ComputeBuiltinChecksum(ChecksumType type, const char* data, +13943: size_t size); +13943: uint32_t ComputeBuiltinChecksumWithLastByte(ChecksumType type, const char* data, +13943: size_t size, char last_byte); +13943: # 354 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +13943: struct BlockContents { +13943: +13943: Slice data; +13943: CacheAllocationPtr allocation; +13943: +13943: +13943: +13943: +13943: bool has_trailer = false; +13943: +13943: +13943: BlockContents() {} +13943: +13943: +13943: BlockContents(const Slice& _data) : data(_data) {} +13943: +13943: +13943: BlockContents(CacheAllocationPtr&& _data, size_t _size) +13943: : data(_data.get(), _size), allocation(std::move(_data)) {} +13943: +13943: +13943: BlockContents(std::unique_ptr&& _data, size_t _size) +13943: : data(_data.get(), _size) { +13943: allocation.reset(_data.release()); +13943: } +13943: +13943: +13943: bool own_bytes() const { return allocation.get() != nullptr; } +13943: +13943: +13943: size_t usable_size() const { +13943: if (allocation.get() != nullptr) { +13943: auto allocator = allocation.get_deleter().allocator; +13943: if (allocator) { +13943: return allocator->UsableSize(allocation.get(), data.size()); +13943: } +13943: +13943: return malloc_usable_size(allocation.get()); +13943: +13943: +13943: +13943: } else { +13943: return 0; +13943: } +13943: } +13943: +13943: size_t ApproximateMemoryUsage() const { +13943: return usable_size() + sizeof(*this); +13943: } +13943: +13943: BlockContents(BlockContents&& other) noexcept { *this = std::move(other); } +13943: +13943: BlockContents& operator=(BlockContents&& other) { +13943: data = std::move(other.data); +13943: allocation = std::move(other.allocation); +13943: +13943: has_trailer = other.has_trailer; +13943: +13943: return *this; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status UncompressSerializedBlock(const UncompressionInfo& info, +13943: const char* data, size_t size, +13943: BlockContents* out_contents, +13943: uint32_t format_version, +13943: const ImmutableOptions& ioptions, +13943: MemoryAllocator* allocator = nullptr); +13943: +13943: +13943: +13943: Status UncompressBlockData(const UncompressionInfo& info, const char* data, +13943: size_t size, BlockContents* out_contents, +13943: uint32_t format_version, +13943: const ImmutableOptions& ioptions, +13943: MemoryAllocator* allocator = nullptr); +13943: +13943: +13943: Status ReifyDbHostIdProperty(Env* env, std::string* db_host_id); +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline BlockHandle::BlockHandle() : BlockHandle(~uint64_t{0}, ~uint64_t{0}) {} +13943: +13943: inline BlockHandle::BlockHandle(uint64_t _offset, uint64_t _size) +13943: : offset_(_offset), size_(_size) {} +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class PinnedIteratorsManager; +13943: +13943: enum class IterBoundCheck : char { +13943: kUnknown = 0, +13943: kOutOfBound, +13943: kInbound, +13943: }; +13943: +13943: struct IterateResult { +13943: Slice key; +13943: IterBoundCheck bound_check_result = IterBoundCheck::kUnknown; +13943: +13943: bool value_prepared = true; +13943: }; +13943: +13943: template +13943: class InternalIteratorBase : public Cleanable { +13943: public: +13943: InternalIteratorBase() {} +13943: +13943: +13943: InternalIteratorBase(const InternalIteratorBase&) = delete; +13943: InternalIteratorBase& operator=(const InternalIteratorBase&) = delete; +13943: +13943: virtual ~InternalIteratorBase() {} +13943: # 55 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: virtual void SetRangeDelReadSeqno(SequenceNumber ) {} +13943: +13943: +13943: +13943: +13943: virtual bool Valid() const = 0; +13943: +13943: +13943: +13943: virtual void SeekToFirst() = 0; +13943: +13943: +13943: +13943: virtual void SeekToLast() = 0; +13943: # 77 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: virtual void Seek(const Slice& target) = 0; +13943: +13943: +13943: +13943: +13943: virtual void SeekForPrev(const Slice& target) = 0; +13943: +13943: +13943: +13943: +13943: virtual void Next() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual bool NextAndGetResult(IterateResult* result) { +13943: Next(); +13943: bool is_valid = Valid(); +13943: if (is_valid) { +13943: result->key = key(); +13943: +13943: +13943: +13943: result->bound_check_result = IterBoundCheck::kUnknown; +13943: result->value_prepared = false; +13943: +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 3 4 +13943: (static_cast ( +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: UpperBoundCheckResult() != IterBoundCheck::kOutOfBound +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: "UpperBoundCheckResult() != IterBoundCheck::kOutOfBound" +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: ; +13943: } +13943: return is_valid; +13943: } +13943: +13943: +13943: +13943: +13943: virtual void Prev() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual Slice key() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual uint64_t write_unix_time() const { +13943: return std::numeric_limits::max(); +13943: } +13943: +13943: +13943: +13943: virtual Slice user_key() const { return ExtractUserKey(key()); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual TValue value() const = 0; +13943: +13943: +13943: +13943: +13943: virtual Status status() const = 0; +13943: # 154 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: virtual bool PrepareValue() { return true; } +13943: +13943: +13943: virtual bool MayBeOutOfLowerBound() { return true; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual IterBoundCheck UpperBoundCheckResult() { +13943: return IterBoundCheck::kUnknown; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void SetPinnedItersMgr(PinnedIteratorsManager* ) { +13943: } +13943: # 184 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: virtual bool IsKeyPinned() const { return false; } +13943: +13943: +13943: +13943: +13943: +13943: virtual bool IsValuePinned() const { return false; } +13943: +13943: virtual Status GetProperty(std::string , std::string* ) { +13943: return Status::NotSupported(""); +13943: } +13943: # 203 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +13943: virtual void GetReadaheadState(ReadaheadFileInfo* ) {} +13943: +13943: +13943: virtual void SetReadaheadState(ReadaheadFileInfo* ) {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool IsDeleteRangeSentinelKey() const { return false; } +13943: +13943: protected: +13943: void SeekForPrevImpl(const Slice& target, const CompareInterface* cmp) { +13943: Seek(target); +13943: if (!Valid()) { +13943: SeekToLast(); +13943: } +13943: while (Valid() && cmp->Compare(target, key()) < 0) { +13943: Prev(); +13943: } +13943: } +13943: }; +13943: +13943: using InternalIterator = InternalIteratorBase; +13943: +13943: +13943: template +13943: InternalIteratorBase* NewEmptyInternalIterator(); +13943: +13943: +13943: template +13943: InternalIteratorBase* NewErrorInternalIterator(const Status& status); +13943: +13943: +13943: template +13943: InternalIteratorBase* NewErrorInternalIterator(const Status& status, +13943: Arena* arena); +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: class PinnedIteratorsManager : public Cleanable { +13943: public: +13943: PinnedIteratorsManager() : pinning_enabled(false) {} +13943: ~PinnedIteratorsManager() { +13943: if (pinning_enabled) { +13943: ReleasePinnedData(); +13943: } +13943: } +13943: +13943: +13943: PinnedIteratorsManager(PinnedIteratorsManager&& other) noexcept = default; +13943: PinnedIteratorsManager& operator=(PinnedIteratorsManager&& other) noexcept = +13943: default; +13943: +13943: +13943: void StartPinning() { +13943: +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: (static_cast ( +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: pinning_enabled == false +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: "pinning_enabled == false" +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: ; +13943: pinning_enabled = true; +13943: } +13943: +13943: +13943: bool PinningEnabled() { return pinning_enabled; } +13943: +13943: +13943: void PinIterator(InternalIterator* iter, bool arena = false) { +13943: if (arena) { +13943: PinPtr(iter, &PinnedIteratorsManager::ReleaseArenaInternalIterator); +13943: } else { +13943: PinPtr(iter, &PinnedIteratorsManager::ReleaseInternalIterator); +13943: } +13943: } +13943: +13943: using ReleaseFunction = void (*)(void* arg1); +13943: void PinPtr(void* ptr, ReleaseFunction release_func) { +13943: +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: (static_cast ( +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: pinning_enabled +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: "pinning_enabled" +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: ; +13943: if (ptr == nullptr) { +13943: return; +13943: } +13943: pinned_ptrs_.emplace_back(ptr, release_func); +13943: } +13943: +13943: +13943: inline void ReleasePinnedData() { +13943: +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: (static_cast ( +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: pinning_enabled == true +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: "pinning_enabled == true" +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +13943: ; +13943: pinning_enabled = false; +13943: +13943: +13943: std::sort(pinned_ptrs_.begin(), pinned_ptrs_.end()); +13943: auto unique_end = std::unique(pinned_ptrs_.begin(), pinned_ptrs_.end()); +13943: +13943: for (auto i = pinned_ptrs_.begin(); i != unique_end; ++i) { +13943: void* ptr = i->first; +13943: ReleaseFunction release_func = i->second; +13943: release_func(ptr); +13943: } +13943: pinned_ptrs_.clear(); +13943: +13943: Cleanable::Reset(); +13943: } +13943: +13943: private: +13943: static void ReleaseInternalIterator(void* ptr) { +13943: delete static_cast(ptr); +13943: } +13943: +13943: static void ReleaseArenaInternalIterator(void* ptr) { +13943: static_cast(ptr)->~InternalIterator(); +13943: } +13943: +13943: bool pinning_enabled; +13943: std::vector> pinned_ptrs_; +13943: }; +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: namespace rocksdb { +13943: struct FragmentedRangeTombstoneList { +13943: public: +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: struct RangeTombstoneStack { +13943: RangeTombstoneStack(const Slice& start, const Slice& end, size_t start_idx, +13943: size_t end_idx) +13943: : start_key(start), +13943: end_key(end), +13943: seq_start_idx(start_idx), +13943: seq_end_idx(end_idx) {} +13943: Slice start_key; +13943: Slice end_key; +13943: size_t seq_start_idx; +13943: size_t seq_end_idx; +13943: }; +13943: +13943: +13943: FragmentedRangeTombstoneList( +13943: std::unique_ptr unfragmented_tombstones, +13943: const InternalKeyComparator& icmp, bool for_compaction = false, +13943: const std::vector& snapshots = {}, +13943: const bool tombstone_end_include_ts = true); +13943: +13943: std::vector::const_iterator begin() const { +13943: return tombstones_.begin(); +13943: } +13943: +13943: std::vector::const_iterator end() const { +13943: return tombstones_.end(); +13943: } +13943: +13943: std::vector::const_iterator seq_iter(size_t idx) const { +13943: return std::next(tombstone_seqs_.begin(), idx); +13943: } +13943: +13943: std::vector::const_iterator ts_iter(size_t idx) const { +13943: return std::next(tombstone_timestamps_.begin(), idx); +13943: } +13943: +13943: std::vector::const_iterator seq_begin() const { +13943: return tombstone_seqs_.begin(); +13943: } +13943: +13943: std::vector::const_iterator seq_end() const { +13943: return tombstone_seqs_.end(); +13943: } +13943: +13943: bool empty() const { return tombstones_.empty(); } +13943: +13943: +13943: +13943: +13943: +13943: bool ContainsRange(SequenceNumber lower, SequenceNumber upper); +13943: +13943: uint64_t num_unfragmented_tombstones() const { +13943: return num_unfragmented_tombstones_; +13943: } +13943: +13943: uint64_t total_tombstone_payload_bytes() const { +13943: return total_tombstone_payload_bytes_; +13943: } +13943: +13943: private: +13943: # 101 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: void FragmentTombstones( +13943: std::unique_ptr unfragmented_tombstones, +13943: const InternalKeyComparator& icmp, bool for_compaction, +13943: const std::vector& snapshots); +13943: +13943: std::vector tombstones_; +13943: std::vector tombstone_seqs_; +13943: std::vector tombstone_timestamps_; +13943: std::once_flag seq_set_init_once_flag_; +13943: std::set seq_set_; +13943: std::list pinned_slices_; +13943: PinnedIteratorsManager pinned_iters_mgr_; +13943: uint64_t num_unfragmented_tombstones_; +13943: uint64_t total_tombstone_payload_bytes_; +13943: }; +13943: +13943: struct FragmentedRangeTombstoneListCache { +13943: +13943: std::mutex reader_mutex; +13943: std::unique_ptr tombstones = nullptr; +13943: +13943: std::atomic initialized = false; +13943: }; +13943: # 134 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: class FragmentedRangeTombstoneIterator : public InternalIterator { +13943: public: +13943: FragmentedRangeTombstoneIterator(FragmentedRangeTombstoneList* tombstones, +13943: const InternalKeyComparator& icmp, +13943: SequenceNumber upper_bound, +13943: const Slice* ts_upper_bound = nullptr, +13943: SequenceNumber lower_bound = 0); +13943: FragmentedRangeTombstoneIterator( +13943: const std::shared_ptr& tombstones, +13943: const InternalKeyComparator& icmp, SequenceNumber upper_bound, +13943: const Slice* ts_upper_bound = nullptr, SequenceNumber lower_bound = 0); +13943: FragmentedRangeTombstoneIterator( +13943: const std::shared_ptr& tombstones, +13943: const InternalKeyComparator& icmp, SequenceNumber upper_bound, +13943: const Slice* ts_upper_bound = nullptr, SequenceNumber lower_bound = 0); +13943: +13943: void SetRangeDelReadSeqno(SequenceNumber read_seqno) override { +13943: upper_bound_ = read_seqno; +13943: } +13943: +13943: void SeekToFirst() override; +13943: void SeekToLast() override; +13943: +13943: void SeekToTopFirst(); +13943: void SeekToTopLast(); +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: void Seek(const Slice& target) override; +13943: +13943: +13943: +13943: void SeekForPrev(const Slice& target) override; +13943: +13943: void Next() override; +13943: void Prev() override; +13943: +13943: void TopNext(); +13943: void TopPrev(); +13943: +13943: bool Valid() const override; +13943: +13943: +13943: Slice key() const override { +13943: MaybePinKey(); +13943: return current_start_key_.Encode(); +13943: } +13943: Slice value() const override { return pos_->end_key; } +13943: bool IsKeyPinned() const override { return false; } +13943: bool IsValuePinned() const override { return true; } +13943: Status status() const override { return Status::OK(); } +13943: +13943: bool empty() const { return tombstones_->empty(); } +13943: void Invalidate() { +13943: pos_ = tombstones_->end(); +13943: seq_pos_ = tombstones_->seq_end(); +13943: pinned_pos_ = tombstones_->end(); +13943: pinned_seq_pos_ = tombstones_->seq_end(); +13943: } +13943: +13943: RangeTombstone Tombstone() const { +13943: +13943: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 3 4 +13943: (static_cast ( +13943: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: Valid() +13943: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: "Valid()" +13943: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: ; +13943: if (icmp_->user_comparator()->timestamp_size()) { +13943: return RangeTombstone(start_key(), end_key(), seq(), timestamp()); +13943: } +13943: return RangeTombstone(start_key(), end_key(), seq()); +13943: } +13943: +13943: +13943: +13943: +13943: Slice start_key() const { return pos_->start_key; } +13943: Slice end_key() const { return pos_->end_key; } +13943: SequenceNumber seq() const { return *seq_pos_; } +13943: Slice timestamp() const { +13943: +13943: return *tombstones_->ts_iter(seq_pos_ - tombstones_->seq_begin()); +13943: } +13943: +13943: +13943: void SetTimestampUpperBound(const Slice* ts_upper_bound) { +13943: ts_upper_bound_ = ts_upper_bound; +13943: } +13943: +13943: ParsedInternalKey parsed_start_key() const { +13943: return ParsedInternalKey(pos_->start_key, seq(), kTypeRangeDeletion); +13943: } +13943: ParsedInternalKey parsed_end_key() const { +13943: return ParsedInternalKey(pos_->end_key, kMaxSequenceNumber, +13943: kTypeRangeDeletion); +13943: } +13943: +13943: +13943: +13943: +13943: SequenceNumber MaxCoveringTombstoneSeqnum(const Slice& user_key); +13943: # 246 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +13943: std::map> +13943: SplitBySnapshot(const std::vector& snapshots); +13943: +13943: SequenceNumber upper_bound() const { return upper_bound_; } +13943: SequenceNumber lower_bound() const { return lower_bound_; } +13943: +13943: uint64_t num_unfragmented_tombstones() const { +13943: return tombstones_->num_unfragmented_tombstones(); +13943: } +13943: uint64_t total_tombstone_payload_bytes() const { +13943: return tombstones_->total_tombstone_payload_bytes(); +13943: } +13943: +13943: private: +13943: using RangeTombstoneStack = FragmentedRangeTombstoneList::RangeTombstoneStack; +13943: +13943: struct RangeTombstoneStackStartComparator { +13943: explicit RangeTombstoneStackStartComparator(const Comparator* c) : cmp(c) {} +13943: +13943: bool operator()(const RangeTombstoneStack& a, +13943: const RangeTombstoneStack& b) const { +13943: return cmp->CompareWithoutTimestamp(a.start_key, b.start_key) < 0; +13943: } +13943: +13943: bool operator()(const RangeTombstoneStack& a, const Slice& b) const { +13943: return cmp->CompareWithoutTimestamp(a.start_key, b) < 0; +13943: } +13943: +13943: bool operator()(const Slice& a, const RangeTombstoneStack& b) const { +13943: return cmp->CompareWithoutTimestamp(a, b.start_key) < 0; +13943: } +13943: +13943: const Comparator* cmp; +13943: }; +13943: +13943: struct RangeTombstoneStackEndComparator { +13943: explicit RangeTombstoneStackEndComparator(const Comparator* c) : cmp(c) {} +13943: +13943: bool operator()(const RangeTombstoneStack& a, +13943: const RangeTombstoneStack& b) const { +13943: return cmp->CompareWithoutTimestamp(a.end_key, b.end_key) < 0; +13943: } +13943: +13943: bool operator()(const RangeTombstoneStack& a, const Slice& b) const { +13943: return cmp->CompareWithoutTimestamp(a.end_key, b) < 0; +13943: } +13943: +13943: bool operator()(const Slice& a, const RangeTombstoneStack& b) const { +13943: return cmp->CompareWithoutTimestamp(a, b.end_key) < 0; +13943: } +13943: +13943: const Comparator* cmp; +13943: }; +13943: +13943: void MaybePinKey() const { +13943: if (pos_ != tombstones_->end() && seq_pos_ != tombstones_->seq_end() && +13943: (pinned_pos_ != pos_ || pinned_seq_pos_ != seq_pos_)) { +13943: current_start_key_.Set(pos_->start_key, *seq_pos_, kTypeRangeDeletion); +13943: pinned_pos_ = pos_; +13943: pinned_seq_pos_ = seq_pos_; +13943: } +13943: } +13943: +13943: void SeekToCoveringTombstone(const Slice& key); +13943: void SeekForPrevToCoveringTombstone(const Slice& key); +13943: void ScanForwardToVisibleTombstone(); +13943: void ScanBackwardToVisibleTombstone(); +13943: bool ValidPos() const { +13943: return Valid() && seq_pos_ != tombstones_->seq_iter(pos_->seq_end_idx); +13943: } +13943: +13943: const RangeTombstoneStackStartComparator tombstone_start_cmp_; +13943: const RangeTombstoneStackEndComparator tombstone_end_cmp_; +13943: const InternalKeyComparator* icmp_; +13943: const Comparator* ucmp_; +13943: std::shared_ptr tombstones_ref_; +13943: std::shared_ptr tombstones_cache_ref_; +13943: FragmentedRangeTombstoneList* tombstones_; +13943: SequenceNumber upper_bound_; +13943: SequenceNumber lower_bound_; +13943: +13943: const Slice* ts_upper_bound_; +13943: std::vector::const_iterator pos_; +13943: std::vector::const_iterator seq_pos_; +13943: mutable std::vector::const_iterator pinned_pos_; +13943: mutable std::vector::const_iterator pinned_seq_pos_; +13943: mutable InternalKey current_start_key_; +13943: +13943: +13943: +13943: +13943: +13943: void SetMaxVisibleSeqAndTimestamp() { +13943: seq_pos_ = std::lower_bound(tombstones_->seq_iter(pos_->seq_start_idx), +13943: tombstones_->seq_iter(pos_->seq_end_idx), +13943: upper_bound_, std::greater()); +13943: if (ts_upper_bound_ && !ts_upper_bound_->empty()) { +13943: auto ts_pos = std::lower_bound( +13943: tombstones_->ts_iter(pos_->seq_start_idx), +13943: tombstones_->ts_iter(pos_->seq_end_idx), *ts_upper_bound_, +13943: [this](const Slice& s1, const Slice& s2) { +13943: return ucmp_->CompareTimestamp(s1, s2) > 0; +13943: }); +13943: auto ts_idx = ts_pos - tombstones_->ts_iter(pos_->seq_start_idx); +13943: auto seq_idx = seq_pos_ - tombstones_->seq_iter(pos_->seq_start_idx); +13943: if (seq_idx < ts_idx) { +13943: +13943: +13943: seq_pos_ = tombstones_->seq_iter(pos_->seq_start_idx + ts_idx); +13943: } +13943: } +13943: } +13943: }; +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 2 +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_constants.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: constexpr uint64_t kInvalidBlobFileNumber = 0; +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class JSONWriter; +13943: class Slice; +13943: class Status; +13943: +13943: class BlobFileAddition { +13943: public: +13943: BlobFileAddition() = default; +13943: +13943: BlobFileAddition(uint64_t blob_file_number, uint64_t total_blob_count, +13943: uint64_t total_blob_bytes, std::string checksum_method, +13943: std::string checksum_value) +13943: : blob_file_number_(blob_file_number), +13943: total_blob_count_(total_blob_count), +13943: total_blob_bytes_(total_blob_bytes), +13943: checksum_method_(std::move(checksum_method)), +13943: checksum_value_(std::move(checksum_value)) { +13943: +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 3 4 +13943: (static_cast ( +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" +13943: checksum_method_.empty() == checksum_value_.empty() +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" +13943: "checksum_method_.empty() == checksum_value_.empty()" +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" +13943: ; +13943: } +13943: +13943: uint64_t GetBlobFileNumber() const { return blob_file_number_; } +13943: uint64_t GetTotalBlobCount() const { return total_blob_count_; } +13943: uint64_t GetTotalBlobBytes() const { return total_blob_bytes_; } +13943: const std::string& GetChecksumMethod() const { return checksum_method_; } +13943: const std::string& GetChecksumValue() const { return checksum_value_; } +13943: +13943: void EncodeTo(std::string* output) const; +13943: Status DecodeFrom(Slice* input); +13943: +13943: std::string DebugString() const; +13943: std::string DebugJSON() const; +13943: +13943: private: +13943: enum CustomFieldTags : uint32_t; +13943: +13943: uint64_t blob_file_number_ = kInvalidBlobFileNumber; +13943: uint64_t total_blob_count_ = 0; +13943: uint64_t total_blob_bytes_ = 0; +13943: std::string checksum_method_; +13943: std::string checksum_value_; +13943: }; +13943: +13943: bool operator==(const BlobFileAddition& lhs, const BlobFileAddition& rhs); +13943: bool operator!=(const BlobFileAddition& lhs, const BlobFileAddition& rhs); +13943: +13943: std::ostream& operator<<(std::ostream& os, +13943: const BlobFileAddition& blob_file_addition); +13943: JSONWriter& operator<<(JSONWriter& jw, +13943: const BlobFileAddition& blob_file_addition); +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.h" +13943: namespace rocksdb { +13943: +13943: class JSONWriter; +13943: class Slice; +13943: class Status; +13943: +13943: class BlobFileGarbage { +13943: public: +13943: BlobFileGarbage() = default; +13943: +13943: BlobFileGarbage(uint64_t blob_file_number, uint64_t garbage_blob_count, +13943: uint64_t garbage_blob_bytes) +13943: : blob_file_number_(blob_file_number), +13943: garbage_blob_count_(garbage_blob_count), +13943: garbage_blob_bytes_(garbage_blob_bytes) {} +13943: +13943: uint64_t GetBlobFileNumber() const { return blob_file_number_; } +13943: uint64_t GetGarbageBlobCount() const { return garbage_blob_count_; } +13943: uint64_t GetGarbageBlobBytes() const { return garbage_blob_bytes_; } +13943: +13943: void EncodeTo(std::string* output) const; +13943: Status DecodeFrom(Slice* input); +13943: +13943: std::string DebugString() const; +13943: std::string DebugJSON() const; +13943: +13943: private: +13943: enum CustomFieldTags : uint32_t; +13943: +13943: uint64_t blob_file_number_ = kInvalidBlobFileNumber; +13943: uint64_t garbage_blob_count_ = 0; +13943: uint64_t garbage_blob_bytes_ = 0; +13943: }; +13943: +13943: bool operator==(const BlobFileGarbage& lhs, const BlobFileGarbage& rhs); +13943: bool operator!=(const BlobFileGarbage& lhs, const BlobFileGarbage& rhs); +13943: +13943: std::ostream& operator<<(std::ostream& os, +13943: const BlobFileGarbage& blob_file_garbage); +13943: JSONWriter& operator<<(JSONWriter& jw, +13943: const BlobFileGarbage& blob_file_garbage); +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/ctime" 1 3 +13943: # 39 "/usr/include/c++/14/ctime" 3 +13943: +13943: # 40 "/usr/include/c++/14/ctime" 3 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 1 +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/allocator.h" 1 +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/memory/allocator.h" +13943: +13943: # 1 "/usr/include/c++/14/cerrno" 1 3 +13943: # 39 "/usr/include/c++/14/cerrno" 3 +13943: +13943: # 40 "/usr/include/c++/14/cerrno" 3 +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/memory/allocator.h" 2 +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Logger; +13943: +13943: class Allocator { +13943: public: +13943: virtual ~Allocator() {} +13943: +13943: virtual char* Allocate(size_t bytes) = 0; +13943: virtual char* AllocateAligned(size_t bytes, size_t huge_page_size = 0, +13943: Logger* logger = nullptr) = 0; +13943: +13943: virtual size_t BlockSize() const = 0; +13943: }; +13943: +13943: class AllocTracker { +13943: public: +13943: explicit AllocTracker(WriteBufferManager* write_buffer_manager); +13943: +13943: AllocTracker(const AllocTracker&) = delete; +13943: void operator=(const AllocTracker&) = delete; +13943: +13943: ~AllocTracker(); +13943: void Allocate(size_t bytes); +13943: +13943: +13943: void DoneAllocating(); +13943: +13943: void FreeMem(); +13943: +13943: bool is_freed() const { return write_buffer_manager_ == nullptr || freed_; } +13943: +13943: private: +13943: WriteBufferManager* write_buffer_manager_; +13943: std::atomic bytes_allocated_; +13943: bool done_allocating_; +13943: bool freed_; +13943: }; +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/mmap.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 1 3 4 +13943: # 25 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +13943: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +13943: # 26 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 2 3 4 +13943: # 41 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 1 3 4 +13943: # 29 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman-map-flags-generic.h" 1 3 4 +13943: # 30 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 2 3 4 +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman-linux.h" 1 3 4 +13943: # 135 "/usr/include/arm-linux-gnueabihf/bits/mman-linux.h" 3 4 +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman-shared.h" 1 3 4 +13943: # 51 "/usr/include/arm-linux-gnueabihf/bits/mman-shared.h" 3 4 +13943: +13943: # 51 "/usr/include/arm-linux-gnueabihf/bits/mman-shared.h" 3 4 +13943: extern "C" { +13943: +13943: +13943: +13943: int memfd_create (const char *__name, unsigned int __flags) noexcept (true); +13943: +13943: +13943: +13943: int mlock2 (const void *__addr, size_t __length, unsigned int __flags) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: int pkey_alloc (unsigned int __flags, unsigned int __access_rights) noexcept (true); +13943: +13943: +13943: +13943: int pkey_set (int __key, unsigned int __access_rights) noexcept (true); +13943: +13943: +13943: +13943: int pkey_get (int __key) noexcept (true); +13943: +13943: +13943: +13943: int pkey_free (int __key) noexcept (true); +13943: +13943: +13943: +13943: int pkey_mprotect (void *__addr, size_t __len, int __prot, int __pkey) noexcept (true); +13943: +13943: } +13943: # 136 "/usr/include/arm-linux-gnueabihf/bits/mman-linux.h" 2 3 4 +13943: # 33 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 2 3 4 +13943: # 42 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 2 3 4 +13943: +13943: +13943: +13943: +13943: extern "C" { +13943: # 61 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +13943: extern void * mmap (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset) noexcept (true) __asm__ ("" "mmap64") +13943: +13943: +13943: ; +13943: +13943: +13943: +13943: +13943: +13943: extern void *mmap64 (void *__addr, size_t __len, int __prot, +13943: int __flags, int __fd, __off64_t __offset) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int munmap (void *__addr, size_t __len) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int mprotect (void *__addr, size_t __len, int __prot) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int msync (void *__addr, size_t __len, int __flags); +13943: +13943: +13943: +13943: +13943: extern int madvise (void *__addr, size_t __len, int __advice) noexcept (true); +13943: +13943: +13943: +13943: extern int posix_madvise (void *__addr, size_t __len, int __advice) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int mlock (const void *__addr, size_t __len) noexcept (true); +13943: +13943: +13943: extern int munlock (const void *__addr, size_t __len) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int mlockall (int __flags) noexcept (true); +13943: +13943: +13943: +13943: extern int munlockall (void) noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: extern int mincore (void *__start, size_t __len, unsigned char *__vec) +13943: noexcept (true); +13943: # 133 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +13943: extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, +13943: int __flags, ...) noexcept (true); +13943: +13943: +13943: +13943: extern int remap_file_pages (void *__start, size_t __size, int __prot, +13943: size_t __pgoff, int __flags) noexcept (true); +13943: +13943: +13943: +13943: +13943: extern int shm_open (const char *__name, int __oflag, mode_t __mode); +13943: +13943: +13943: extern int shm_unlink (const char *__name); +13943: +13943: +13943: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman_ext.h" 1 3 4 +13943: # 24 "/usr/include/arm-linux-gnueabihf/bits/mman_ext.h" 3 4 +13943: struct iovec; +13943: extern __ssize_t process_madvise (int __pid_fd, const struct iovec *__iov, +13943: size_t __count, int __advice, +13943: unsigned __flags) +13943: noexcept (true); +13943: +13943: extern int process_mrelease (int pidfd, unsigned int flags) noexcept (true); +13943: # 151 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 2 3 4 +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/port/mmap.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/port/mmap.h" +13943: namespace rocksdb { +13943: +13943: +13943: class MemMapping { +13943: public: +13943: static constexpr bool kHugePageSupported = +13943: +13943: true; +13943: +13943: +13943: +13943: +13943: +13943: static MemMapping AllocateHuge(size_t length); +13943: +13943: +13943: +13943: +13943: +13943: +13943: static MemMapping AllocateLazyZeroed(size_t length); +13943: +13943: +13943: MemMapping(const MemMapping&) = delete; +13943: MemMapping& operator=(const MemMapping&) = delete; +13943: +13943: MemMapping(MemMapping&&) noexcept; +13943: MemMapping& operator=(MemMapping&&) noexcept; +13943: +13943: +13943: ~MemMapping(); +13943: +13943: inline void* Get() const { return addr_; } +13943: inline size_t Length() const { return length_; } +13943: +13943: private: +13943: MemMapping() {} +13943: +13943: +13943: void* addr_ = nullptr; +13943: +13943: size_t length_ = 0; +13943: +13943: +13943: +13943: +13943: +13943: static MemMapping AllocateAnonymous(size_t length, bool huge); +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: class TypedMemMapping : public MemMapping { +13943: public: +13943: TypedMemMapping(MemMapping&& v) noexcept +13943: : MemMapping(std::move(v)) {} +13943: TypedMemMapping& operator=(MemMapping&& v) noexcept { +13943: MemMapping& base = *this; +13943: base = std::move(v); +13943: } +13943: +13943: inline T* Get() const { return static_cast(MemMapping::Get()); } +13943: inline size_t Count() const { return MemMapping::Length() / sizeof(T); } +13943: +13943: inline T& operator[](size_t index) const { return Get()[index]; } +13943: }; +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Arena : public Allocator { +13943: public: +13943: +13943: Arena(const Arena&) = delete; +13943: void operator=(const Arena&) = delete; +13943: +13943: static constexpr size_t kInlineSize = 2048; +13943: static constexpr size_t kMinBlockSize = 4096; +13943: static constexpr size_t kMaxBlockSize = 2u << 30; +13943: +13943: static constexpr unsigned kAlignUnit = alignof(std::max_align_t); +13943: static_assert((kAlignUnit & (kAlignUnit - 1)) == 0, +13943: "Pointer size should be power of 2"); +13943: +13943: +13943: +13943: +13943: explicit Arena(size_t block_size = kMinBlockSize, +13943: AllocTracker* tracker = nullptr, size_t huge_page_size = 0); +13943: ~Arena(); +13943: +13943: char* Allocate(size_t bytes) override; +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +13943: char* AllocateAligned(size_t bytes, size_t huge_page_size = 0, +13943: Logger* logger = nullptr) override; +13943: +13943: +13943: +13943: +13943: size_t ApproximateMemoryUsage() const { +13943: return blocks_memory_ + blocks_.size() * sizeof(char*) - +13943: alloc_bytes_remaining_; +13943: } +13943: +13943: size_t MemoryAllocatedBytes() const { return blocks_memory_; } +13943: +13943: size_t AllocatedAndUnused() const { return alloc_bytes_remaining_; } +13943: +13943: +13943: +13943: size_t IrregularBlockNum() const { return irregular_block_num; } +13943: +13943: size_t BlockSize() const override { return kBlockSize; } +13943: +13943: bool IsInInlineBlock() const { +13943: return blocks_.empty() && huge_blocks_.empty(); +13943: } +13943: +13943: +13943: +13943: +13943: static size_t OptimizeBlockSize(size_t block_size); +13943: +13943: private: +13943: alignas(std::max_align_t) char inline_block_[kInlineSize]; +13943: +13943: const size_t kBlockSize; +13943: +13943: std::deque> blocks_; +13943: +13943: std::deque huge_blocks_; +13943: size_t irregular_block_num = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: char* unaligned_alloc_ptr_ = nullptr; +13943: char* aligned_alloc_ptr_ = nullptr; +13943: +13943: size_t alloc_bytes_remaining_ = 0; +13943: +13943: size_t hugetlb_size_ = 0; +13943: +13943: char* AllocateFromHugePage(size_t bytes); +13943: char* AllocateFallback(size_t bytes, bool aligned); +13943: char* AllocateNewBlock(size_t block_bytes); +13943: +13943: +13943: size_t blocks_memory_ = 0; +13943: +13943: AllocTracker* tracker_; +13943: }; +13943: +13943: inline char* Arena::Allocate(size_t bytes) { +13943: +13943: +13943: +13943: +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 3 4 +13943: (static_cast ( +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +13943: bytes > 0 +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +13943: "bytes > 0" +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +13943: ; +13943: if (bytes <= alloc_bytes_remaining_) { +13943: unaligned_alloc_ptr_ -= bytes; +13943: alloc_bytes_remaining_ -= bytes; +13943: return unaligned_alloc_ptr_; +13943: } +13943: return AllocateFallback(bytes, false ); +13943: } +13943: +13943: +13943: template +13943: struct Destroyer { +13943: void operator()(T* ptr) { ptr->~T(); } +13943: }; +13943: +13943: +13943: +13943: template +13943: using ScopedArenaPtr = std::unique_ptr>; +13943: +13943: } +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" 1 +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" +13943: +13943: # 42 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" +13943: # 1 "/usr/include/arm-linux-gnueabihf/sys/time.h" 1 3 4 +13943: # 34 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: +13943: # 34 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: extern "C" { +13943: # 52 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: struct timezone +13943: { +13943: int tz_minuteswest; +13943: int tz_dsttime; +13943: }; +13943: # 71 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: extern int gettimeofday (struct timeval *__restrict __tv, void *__restrict __tz) noexcept (true) __asm__ ("" "__gettimeofday64") +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: # 98 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: extern int settimeofday (const struct timeval *__tv, const struct timezone *__tz) noexcept (true) __asm__ ("" "__settimeofday64") +13943: +13943: ; +13943: +13943: extern int adjtime (const struct timeval *__delta, struct timeval *__olddelta) noexcept (true) __asm__ ("" "__adjtime64") +13943: +13943: ; +13943: # 114 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: enum __itimer_which +13943: { +13943: +13943: ITIMER_REAL = 0, +13943: +13943: +13943: ITIMER_VIRTUAL = 1, +13943: +13943: +13943: +13943: ITIMER_PROF = 2 +13943: +13943: }; +13943: +13943: +13943: +13943: struct itimerval +13943: { +13943: +13943: struct timeval it_interval; +13943: +13943: struct timeval it_value; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: typedef int __itimer_which_t; +13943: # 167 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: extern int getitimer (__itimer_which_t __which, struct itimerval *__value) noexcept (true) __asm__ ("" "__getitimer64") +13943: +13943: ; +13943: +13943: extern int setitimer (__itimer_which_t __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) noexcept (true) __asm__ ("" "__setitimer64") +13943: +13943: +13943: ; +13943: +13943: extern int utimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__utimes64") +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: # 196 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: extern int lutimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__lutimes64") +13943: +13943: __attribute__ ((__nonnull__ (1))); +13943: +13943: extern int futimes (int __fd, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimes64") +13943: ; +13943: # 218 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: extern int futimesat (int __fd, const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimesat64") +13943: +13943: ; +13943: # 258 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +13943: } +13943: # 43 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" 2 +13943: +13943: +13943: +13943: # 45 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" +13943: namespace rocksdb { +13943: +13943: namespace port { +13943: +13943: using TimeVal = struct timeval; +13943: +13943: inline void GetTimeOfDay(TimeVal* tv, struct timezone* tz) { +13943: gettimeofday(tv, tz); +13943: } +13943: +13943: inline struct tm* LocalTimeR(const time_t* timep, struct tm* result) { +13943: return localtime_r(timep, result); +13943: } +13943: +13943: } +13943: +13943: } +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 2 +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Logger; +13943: +13943: +13943: class LogBuffer { +13943: public: +13943: +13943: +13943: LogBuffer(const InfoLogLevel log_level, Logger* info_log); +13943: +13943: +13943: +13943: void AddLogToBuffer(size_t max_log_size, const char* format, va_list ap); +13943: +13943: size_t IsEmpty() const { return logs_.empty(); } +13943: +13943: +13943: void FlushBufferToLog(); +13943: static const size_t kDefaultMaxLogSize = 512; +13943: +13943: private: +13943: +13943: struct BufferedLog { +13943: port::TimeVal now_tv; +13943: char message[1]; +13943: }; +13943: +13943: const InfoLogLevel log_level_; +13943: Logger* info_log_; +13943: Arena arena_; +13943: autovector logs_; +13943: }; +13943: +13943: +13943: +13943: +13943: void LogToBuffer(LogBuffer* log_buffer, size_t max_log_size, const char* format, +13943: ...); +13943: +13943: void LogToBuffer(LogBuffer* log_buffer, const char* format, ...); +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class JSONWriter { +13943: public: +13943: JSONWriter() : state_(kExpectKey), first_element_(true), in_array_(false) { +13943: stream_ << "{"; +13943: } +13943: +13943: void AddKey(const std::string& key) { +13943: +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kExpectKey +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kExpectKey" +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: if (!first_element_) { +13943: stream_ << ", "; +13943: } +13943: stream_ << "\"" << key << "\": "; +13943: state_ = kExpectValue; +13943: first_element_ = false; +13943: } +13943: +13943: void AddValue(const char* value) { +13943: +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kExpectValue || state_ == kInArray +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kExpectValue || state_ == kInArray" +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: if (state_ == kInArray && !first_element_) { +13943: stream_ << ", "; +13943: } +13943: stream_ << "\"" << value << "\""; +13943: if (state_ != kInArray) { +13943: state_ = kExpectKey; +13943: } +13943: first_element_ = false; +13943: } +13943: +13943: template +13943: void AddValue(const T& value) { +13943: +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kExpectValue || state_ == kInArray +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kExpectValue || state_ == kInArray" +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: if (state_ == kInArray && !first_element_) { +13943: stream_ << ", "; +13943: } +13943: stream_ << value; +13943: if (state_ != kInArray) { +13943: state_ = kExpectKey; +13943: } +13943: first_element_ = false; +13943: } +13943: +13943: void StartArray() { +13943: +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kExpectValue +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kExpectValue" +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: state_ = kInArray; +13943: in_array_ = true; +13943: stream_ << "["; +13943: first_element_ = true; +13943: } +13943: +13943: void EndArray() { +13943: +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kInArray +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kInArray" +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: state_ = kExpectKey; +13943: in_array_ = false; +13943: stream_ << "]"; +13943: first_element_ = false; +13943: } +13943: +13943: void StartObject() { +13943: +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kExpectValue +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kExpectValue" +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: state_ = kExpectKey; +13943: stream_ << "{"; +13943: first_element_ = true; +13943: } +13943: +13943: void EndObject() { +13943: +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kExpectKey +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kExpectKey" +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: stream_ << "}"; +13943: first_element_ = false; +13943: } +13943: +13943: void StartArrayedObject() { +13943: +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ == kInArray && in_array_ +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ == kInArray && in_array_" +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: state_ = kExpectValue; +13943: if (!first_element_) { +13943: stream_ << ", "; +13943: } +13943: StartObject(); +13943: } +13943: +13943: void EndArrayedObject() { +13943: +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: in_array_ +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "in_array_" +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: EndObject(); +13943: state_ = kInArray; +13943: } +13943: +13943: std::string Get() const { return stream_.str(); } +13943: +13943: JSONWriter& operator<<(const char* val) { +13943: if (state_ == kExpectKey) { +13943: AddKey(val); +13943: } else { +13943: AddValue(val); +13943: } +13943: return *this; +13943: } +13943: +13943: JSONWriter& operator<<(const std::string& val) { +13943: return *this << val.c_str(); +13943: } +13943: +13943: template +13943: JSONWriter& operator<<(const T& val) { +13943: +13943: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: (static_cast ( +13943: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: state_ != kExpectKey +13943: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: "state_ != kExpectKey" +13943: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +13943: ; +13943: AddValue(val); +13943: return *this; +13943: } +13943: +13943: private: +13943: enum JSONWriterState { +13943: kExpectKey, +13943: kExpectValue, +13943: kInArray, +13943: kInArrayedObject, +13943: }; +13943: JSONWriterState state_; +13943: bool first_element_; +13943: bool in_array_; +13943: std::ostringstream stream_; +13943: }; +13943: +13943: class EventLoggerStream { +13943: public: +13943: template +13943: EventLoggerStream& operator<<(const T& val) { +13943: MakeStream(); +13943: *json_writer_ << val; +13943: return *this; +13943: } +13943: +13943: void StartArray() { json_writer_->StartArray(); } +13943: void EndArray() { json_writer_->EndArray(); } +13943: void StartObject() { json_writer_->StartObject(); } +13943: void EndObject() { json_writer_->EndObject(); } +13943: +13943: ~EventLoggerStream(); +13943: +13943: private: +13943: void MakeStream() { +13943: if (!json_writer_) { +13943: json_writer_ = new JSONWriter(); +13943: *this << "time_micros" +13943: << std::chrono::duration_cast( +13943: std::chrono::system_clock::now().time_since_epoch()) +13943: .count(); +13943: } +13943: } +13943: friend class EventLogger; +13943: explicit EventLoggerStream(Logger* logger); +13943: explicit EventLoggerStream(LogBuffer* log_buffer, const size_t max_log_size); +13943: +13943: Logger* const logger_; +13943: LogBuffer* const log_buffer_; +13943: const size_t max_log_size_; +13943: +13943: JSONWriter* json_writer_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: class EventLogger { +13943: public: +13943: static const char* Prefix() { return "EVENT_LOG_v1"; } +13943: +13943: explicit EventLogger(Logger* logger) : logger_(logger) {} +13943: EventLoggerStream Log() { return EventLoggerStream(logger_); } +13943: EventLoggerStream LogToBuffer(LogBuffer* log_buffer) { +13943: return EventLoggerStream(log_buffer, LogBuffer::kDefaultMaxLogSize); +13943: } +13943: EventLoggerStream LogToBuffer(LogBuffer* log_buffer, +13943: const size_t max_log_size) { +13943: return EventLoggerStream(log_buffer, max_log_size); +13943: } +13943: void Log(const JSONWriter& jwriter); +13943: static void Log(Logger* logger, const JSONWriter& jwriter); +13943: static void LogToBuffer( +13943: LogBuffer* log_buffer, const JSONWriter& jwriter, +13943: const size_t max_log_size = LogBuffer::kDefaultMaxLogSize); +13943: +13943: private: +13943: Logger* logger_; +13943: }; +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" 2 +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class JSONWriter; +13943: class Slice; +13943: class Status; +13943: +13943: using WalNumber = uint64_t; +13943: +13943: +13943: class WalMetadata { +13943: public: +13943: WalMetadata() = default; +13943: +13943: explicit WalMetadata(uint64_t synced_size_bytes) +13943: : synced_size_bytes_(synced_size_bytes) {} +13943: +13943: bool HasSyncedSize() const { return synced_size_bytes_ != kUnknownWalSize; } +13943: +13943: void SetSyncedSizeInBytes(uint64_t bytes) { synced_size_bytes_ = bytes; } +13943: +13943: uint64_t GetSyncedSizeInBytes() const { return synced_size_bytes_; } +13943: +13943: private: +13943: friend bool operator==(const WalMetadata& lhs, const WalMetadata& rhs); +13943: friend bool operator!=(const WalMetadata& lhs, const WalMetadata& rhs); +13943: +13943: +13943: constexpr static uint64_t kUnknownWalSize = +13943: std::numeric_limits::max(); +13943: +13943: +13943: uint64_t synced_size_bytes_ = kUnknownWalSize; +13943: }; +13943: +13943: inline bool operator==(const WalMetadata& lhs, const WalMetadata& rhs) { +13943: return lhs.synced_size_bytes_ == rhs.synced_size_bytes_; +13943: } +13943: +13943: inline bool operator!=(const WalMetadata& lhs, const WalMetadata& rhs) { +13943: return !(lhs == rhs); +13943: } +13943: +13943: +13943: enum class WalAdditionTag : uint32_t { +13943: +13943: kTerminate = 1, +13943: +13943: kSyncedSize = 2, +13943: +13943: }; +13943: +13943: +13943: class WalAddition { +13943: public: +13943: WalAddition() : number_(0), metadata_() {} +13943: +13943: explicit WalAddition(WalNumber number) : number_(number), metadata_() {} +13943: +13943: WalAddition(WalNumber number, WalMetadata meta) +13943: : number_(number), metadata_(std::move(meta)) {} +13943: +13943: WalNumber GetLogNumber() const { return number_; } +13943: +13943: const WalMetadata& GetMetadata() const { return metadata_; } +13943: +13943: void EncodeTo(std::string* dst) const; +13943: +13943: Status DecodeFrom(Slice* src); +13943: +13943: std::string DebugString() const; +13943: +13943: private: +13943: WalNumber number_; +13943: WalMetadata metadata_; +13943: }; +13943: +13943: std::ostream& operator<<(std::ostream& os, const WalAddition& wal); +13943: JSONWriter& operator<<(JSONWriter& jw, const WalAddition& wal); +13943: +13943: using WalAdditions = std::vector; +13943: +13943: +13943: class WalDeletion { +13943: public: +13943: WalDeletion() : number_(kEmpty) {} +13943: +13943: explicit WalDeletion(WalNumber number) : number_(number) {} +13943: +13943: WalNumber GetLogNumber() const { return number_; } +13943: +13943: void EncodeTo(std::string* dst) const; +13943: +13943: Status DecodeFrom(Slice* src); +13943: +13943: std::string DebugString() const; +13943: +13943: bool IsEmpty() const { return number_ == kEmpty; } +13943: +13943: void Reset() { number_ = kEmpty; } +13943: +13943: private: +13943: static constexpr WalNumber kEmpty = 0; +13943: +13943: WalNumber number_; +13943: }; +13943: +13943: std::ostream& operator<<(std::ostream& os, const WalDeletion& wal); +13943: JSONWriter& operator<<(JSONWriter& jw, const WalDeletion& wal); +13943: # 138 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" +13943: class WalSet { +13943: public: +13943: +13943: +13943: +13943: +13943: +13943: Status AddWal(const WalAddition& wal); +13943: Status AddWals(const WalAdditions& wals); +13943: +13943: +13943: +13943: Status DeleteWalsBefore(WalNumber wal); +13943: +13943: +13943: void Reset(); +13943: +13943: +13943: WalNumber GetMinWalNumberToKeep() const { return min_wal_number_to_keep_; } +13943: +13943: const std::map& GetWals() const { return wals_; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status CheckWals( +13943: Env* env, +13943: const std::unordered_map& logs_on_disk) const; +13943: +13943: private: +13943: std::map wals_; +13943: +13943: +13943: WalNumber min_wal_number_to_keep_ = 0; +13943: }; +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: namespace rocksdb { +13943: +13943: class Logger; +13943: class SecondaryCacheResultHandle; +13943: class Statistics; +13943: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: class Cache : public Customizable { +13943: public: +13943: +13943: struct Handle {}; +13943: +13943: public: +13943: +13943: +13943: using ObjectPtr = void*; +13943: +13943: +13943: +13943: struct CreateContext {}; +13943: +13943: public: +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: enum class Priority { HIGH, LOW, BOTTOM }; +13943: # 97 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: using SizeCallback = size_t (*)(ObjectPtr obj); +13943: +13943: +13943: +13943: +13943: +13943: using SaveToCallback = Status (*)(ObjectPtr from_obj, size_t from_offset, +13943: size_t length, char* out_buf); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: using DeleterFn = void (*)(ObjectPtr obj, MemoryAllocator* allocator); +13943: # 124 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: using CreateCallback = Status (*)(const Slice& data, CompressionType type, +13943: CacheTier source, CreateContext* context, +13943: MemoryAllocator* allocator, +13943: ObjectPtr* out_obj, size_t* out_charge); +13943: +13943: +13943: +13943: +13943: struct CacheItemHelper { +13943: +13943: +13943: +13943: DeleterFn del_cb; +13943: +13943: +13943: +13943: SizeCallback size_cb; +13943: SaveToCallback saveto_cb; +13943: CreateCallback create_cb; +13943: +13943: CacheEntryRole role; +13943: +13943: +13943: +13943: +13943: const CacheItemHelper* without_secondary_compat; +13943: +13943: CacheItemHelper() : CacheItemHelper(CacheEntryRole::kMisc) {} +13943: +13943: +13943: explicit CacheItemHelper(CacheEntryRole _role, DeleterFn _del_cb = nullptr) +13943: : CacheItemHelper(_role, _del_cb, nullptr, nullptr, nullptr, this) {} +13943: +13943: +13943: explicit CacheItemHelper(CacheEntryRole _role, DeleterFn _del_cb, +13943: SizeCallback _size_cb, SaveToCallback _saveto_cb, +13943: CreateCallback _create_cb, +13943: const CacheItemHelper* _without_secondary_compat) +13943: : del_cb(_del_cb), +13943: size_cb(_size_cb), +13943: saveto_cb(_saveto_cb), +13943: create_cb(_create_cb), +13943: role(_role), +13943: without_secondary_compat(_without_secondary_compat) { +13943: +13943: +13943: +13943: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: (static_cast ( +13943: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: (size_cb != nullptr) == (saveto_cb != nullptr) +13943: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: "(size_cb != nullptr) == (saveto_cb != nullptr)" +13943: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: ; +13943: +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: (static_cast ( +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: (size_cb != nullptr) == (create_cb != nullptr) +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: "(size_cb != nullptr) == (create_cb != nullptr)" +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: ; +13943: +13943: +13943: +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: (static_cast ( +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: role == without_secondary_compat->role +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: "role == without_secondary_compat->role" +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: ; +13943: +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: (static_cast ( +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: del_cb == without_secondary_compat->del_cb +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: "del_cb == without_secondary_compat->del_cb" +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: ; +13943: +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: (static_cast ( +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: !without_secondary_compat->IsSecondaryCacheCompatible() +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: "!without_secondary_compat->IsSecondaryCacheCompatible()" +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: ; +13943: } +13943: inline bool IsSecondaryCacheCompatible() const { +13943: return size_cb != nullptr; +13943: } +13943: }; +13943: +13943: public: +13943: Cache(std::shared_ptr allocator = nullptr) +13943: : memory_allocator_(std::move(allocator)) {} +13943: +13943: Cache(const Cache&) = delete; +13943: Cache& operator=(const Cache&) = delete; +13943: +13943: +13943: virtual ~Cache() {} +13943: +13943: static const char* Type() { return "Cache"; } +13943: # 206 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& value, +13943: std::shared_ptr* result); +13943: +13943: public: +13943: +13943: virtual const char* Name() const = 0; +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: virtual Status Insert( +13943: const Slice& key, ObjectPtr obj, const CacheItemHelper* helper, +13943: size_t charge, Handle** handle = nullptr, +13943: Priority priority = Priority::LOW, const Slice& compressed = Slice(), +13943: CompressionType type = CompressionType::kNoCompression) = 0; +13943: # 277 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: virtual Handle* CreateStandalone(const Slice& key, ObjectPtr obj, +13943: const CacheItemHelper* helper, size_t charge, +13943: bool allow_uncharged) = 0; +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: virtual Handle* Lookup(const Slice& key, +13943: const CacheItemHelper* helper = nullptr, +13943: CreateContext* create_context = nullptr, +13943: Priority priority = Priority::LOW, +13943: Statistics* stats = nullptr) = 0; +13943: +13943: +13943: inline Handle* BasicLookup(const Slice& key, Statistics* stats) { +13943: return Lookup(key, nullptr, nullptr, Priority::LOW, stats); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: virtual bool Ref(Handle* handle) = 0; +13943: # 319 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: virtual bool Release(Handle* handle, bool erase_if_last_ref = false) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual ObjectPtr Value(Handle* handle) = 0; +13943: +13943: +13943: +13943: +13943: virtual void Erase(const Slice& key) = 0; +13943: +13943: +13943: +13943: +13943: virtual uint64_t NewId() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void SetCapacity(size_t capacity) = 0; +13943: +13943: +13943: +13943: virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0; +13943: +13943: +13943: +13943: virtual bool HasStrictCapacityLimit() const = 0; +13943: +13943: +13943: virtual size_t GetCapacity() const = 0; +13943: +13943: +13943: virtual size_t GetUsage() const = 0; +13943: +13943: +13943: +13943: +13943: virtual size_t GetOccupancyCount() const { return +13943: # 361 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: (4294967295U) +13943: # 361 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: ; } +13943: +13943: +13943: +13943: +13943: virtual size_t GetTableAddressCount() const { return 0; } +13943: +13943: +13943: virtual size_t GetUsage(Handle* handle) const = 0; +13943: +13943: +13943: virtual size_t GetPinnedUsage() const = 0; +13943: +13943: +13943: virtual size_t GetCharge(Handle* handle) const = 0; +13943: +13943: +13943: virtual const CacheItemHelper* GetCacheItemHelper(Handle* handle) const = 0; +13943: +13943: virtual Status GetSecondaryCacheCapacity(size_t& ) const { +13943: return Status::NotSupported(); +13943: } +13943: +13943: virtual Status GetSecondaryCachePinnedUsage(size_t& ) const { +13943: return Status::NotSupported(); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void DisownData() { +13943: +13943: } +13943: +13943: struct ApplyToAllEntriesOptions { +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t average_entries_per_lock = 256; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: virtual void ApplyToAllEntries( +13943: const std::function& callback, +13943: const ApplyToAllEntriesOptions& opts) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void ApplyToHandle( +13943: Cache* cache, Handle* handle, +13943: const std::function& callback) = 0; +13943: +13943: +13943: virtual void EraseUnRefEntries() = 0; +13943: +13943: virtual std::string GetPrintableOptions() const { return ""; } +13943: +13943: +13943: +13943: +13943: +13943: virtual void ReportProblems( +13943: const std::shared_ptr& ) const {} +13943: +13943: MemoryAllocator* memory_allocator() const { return memory_allocator_.get(); } +13943: +13943: +13943: virtual uint32_t GetHashSeed() const { return 0; } +13943: # 450 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: virtual bool Release(Handle* handle, bool , +13943: bool erase_if_last_ref) { +13943: return Release(handle, erase_if_last_ref); +13943: } +13943: +13943: +13943: +13943: +13943: struct AsyncLookupHandle { +13943: +13943: +13943: +13943: Slice key; +13943: const CacheItemHelper* helper = nullptr; +13943: CreateContext* create_context = nullptr; +13943: Priority priority = Priority::LOW; +13943: Statistics* stats = nullptr; +13943: +13943: AsyncLookupHandle() {} +13943: AsyncLookupHandle(const Slice& _key, const CacheItemHelper* _helper, +13943: CreateContext* _create_context, +13943: Priority _priority = Priority::LOW, +13943: Statistics* _stats = nullptr) +13943: : key(_key), +13943: helper(_helper), +13943: create_context(_create_context), +13943: priority(_priority), +13943: stats(_stats) {} +13943: +13943: +13943: ~AsyncLookupHandle() { +13943: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: (static_cast ( +13943: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: !IsPending() +13943: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: "!IsPending()" +13943: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: ; } +13943: +13943: +13943: AsyncLookupHandle(const AsyncLookupHandle&) = delete; +13943: AsyncLookupHandle operator=(const AsyncLookupHandle&) = delete; +13943: AsyncLookupHandle(AsyncLookupHandle&&) = delete; +13943: AsyncLookupHandle operator=(AsyncLookupHandle&&) = delete; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool IsReady(); +13943: +13943: +13943: bool IsPending(); +13943: +13943: +13943: +13943: +13943: +13943: Handle* Result(); +13943: +13943: +13943: Handle* result_handle = nullptr; +13943: SecondaryCacheResultHandle* pending_handle = nullptr; +13943: SecondaryCache* pending_cache = nullptr; +13943: bool found_dummy_entry = false; +13943: bool kept_in_sec_cache = false; +13943: }; +13943: # 531 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +13943: virtual void StartAsyncLookup(AsyncLookupHandle& async_handle); +13943: +13943: +13943: +13943: Handle* Wait(AsyncLookupHandle& async_handle); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void WaitAll(AsyncLookupHandle* , size_t ); +13943: +13943: +13943: +13943: +13943: +13943: using EvictionCallback = +13943: std::function; +13943: +13943: +13943: +13943: void SetEvictionCallback(EvictionCallback&& fn); +13943: +13943: protected: +13943: std::shared_ptr memory_allocator_; +13943: EvictionCallback eviction_callback_; +13943: }; +13943: +13943: +13943: +13943: class CacheWrapper : public Cache { +13943: public: +13943: explicit CacheWrapper(std::shared_ptr target) +13943: : target_(std::move(target)) {} +13943: +13943: +13943: +13943: +13943: Status Insert( +13943: const Slice& key, ObjectPtr value, const CacheItemHelper* helper, +13943: size_t charge, Handle** handle = nullptr, +13943: Priority priority = Priority::LOW, +13943: const Slice& compressed_value = Slice(), +13943: CompressionType type = CompressionType::kNoCompression) override { +13943: return target_->Insert(key, value, helper, charge, handle, priority, +13943: compressed_value, type); +13943: } +13943: +13943: Handle* CreateStandalone(const Slice& key, ObjectPtr obj, +13943: const CacheItemHelper* helper, size_t charge, +13943: bool allow_uncharged) override { +13943: return target_->CreateStandalone(key, obj, helper, charge, allow_uncharged); +13943: } +13943: +13943: Handle* Lookup(const Slice& key, const CacheItemHelper* helper, +13943: CreateContext* create_context, +13943: Priority priority = Priority::LOW, +13943: Statistics* stats = nullptr) override { +13943: return target_->Lookup(key, helper, create_context, priority, stats); +13943: } +13943: +13943: bool Ref(Handle* handle) override { return target_->Ref(handle); } +13943: +13943: using Cache::Release; +13943: bool Release(Handle* handle, bool erase_if_last_ref = false) override { +13943: return target_->Release(handle, erase_if_last_ref); +13943: } +13943: +13943: ObjectPtr Value(Handle* handle) override { return target_->Value(handle); } +13943: +13943: void Erase(const Slice& key) override { target_->Erase(key); } +13943: uint64_t NewId() override { return target_->NewId(); } +13943: +13943: void SetCapacity(size_t capacity) override { target_->SetCapacity(capacity); } +13943: +13943: void SetStrictCapacityLimit(bool strict_capacity_limit) override { +13943: target_->SetStrictCapacityLimit(strict_capacity_limit); +13943: } +13943: +13943: bool HasStrictCapacityLimit() const override { +13943: return target_->HasStrictCapacityLimit(); +13943: } +13943: +13943: size_t GetOccupancyCount() const override { +13943: return target_->GetOccupancyCount(); +13943: } +13943: +13943: size_t GetTableAddressCount() const override { +13943: return target_->GetTableAddressCount(); +13943: } +13943: +13943: size_t GetCapacity() const override { return target_->GetCapacity(); } +13943: +13943: size_t GetUsage() const override { return target_->GetUsage(); } +13943: +13943: size_t GetUsage(Handle* handle) const override { +13943: return target_->GetUsage(handle); +13943: } +13943: +13943: size_t GetPinnedUsage() const override { return target_->GetPinnedUsage(); } +13943: +13943: size_t GetCharge(Handle* handle) const override { +13943: return target_->GetCharge(handle); +13943: } +13943: +13943: const CacheItemHelper* GetCacheItemHelper(Handle* handle) const override { +13943: return target_->GetCacheItemHelper(handle); +13943: } +13943: +13943: void ApplyToAllEntries( +13943: const std::function& callback, +13943: const ApplyToAllEntriesOptions& opts) override { +13943: target_->ApplyToAllEntries(callback, opts); +13943: } +13943: +13943: virtual void ApplyToHandle( +13943: Cache* cache, Handle* handle, +13943: const std::function& callback) +13943: override { +13943: auto cache_ptr = static_cast(cache); +13943: target_->ApplyToHandle(cache_ptr->target_.get(), handle, callback); +13943: } +13943: +13943: void EraseUnRefEntries() override { target_->EraseUnRefEntries(); } +13943: +13943: void StartAsyncLookup(AsyncLookupHandle& async_handle) override { +13943: target_->StartAsyncLookup(async_handle); +13943: } +13943: +13943: void WaitAll(AsyncLookupHandle* async_handles, size_t count) override { +13943: target_->WaitAll(async_handles, count); +13943: } +13943: +13943: uint32_t GetHashSeed() const override { return target_->GetHashSeed(); } +13943: +13943: void ReportProblems(const std::shared_ptr& info_log) const override { +13943: target_->ReportProblems(info_log); +13943: } +13943: +13943: const std::shared_ptr& GetTarget() { return target_; } +13943: +13943: protected: +13943: std::shared_ptr target_; +13943: }; +13943: +13943: +13943: +13943: extern const Cache::CacheItemHelper kNoopCacheItemHelper; +13943: +13943: } +13943: # 25 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +13943: +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class ReadCallback { +13943: public: +13943: explicit ReadCallback(SequenceNumber last_visible_seq) +13943: : max_visible_seq_(last_visible_seq) {} +13943: ReadCallback(SequenceNumber last_visible_seq, SequenceNumber min_uncommitted) +13943: : max_visible_seq_(last_visible_seq), min_uncommitted_(min_uncommitted) {} +13943: +13943: virtual ~ReadCallback() {} +13943: +13943: +13943: +13943: virtual bool IsVisibleFullCheck(SequenceNumber seq) = 0; +13943: +13943: inline bool IsVisible(SequenceNumber seq) { +13943: +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: (static_cast ( +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: min_uncommitted_ > 0 +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: "min_uncommitted_ > 0" +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: ; +13943: +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: (static_cast ( +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: min_uncommitted_ >= kMinUnCommittedSeq +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: "min_uncommitted_ >= kMinUnCommittedSeq" +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: ; +13943: if (seq < min_uncommitted_) { +13943: +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: (static_cast ( +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: seq <= max_visible_seq_ +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: "seq <= max_visible_seq_" +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: ; +13943: return true; +13943: } else if (max_visible_seq_ < seq) { +13943: +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: (static_cast ( +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: seq != 0 +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: "seq != 0" +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: ; +13943: return false; +13943: } else { +13943: +13943: [ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o +# 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: (static_cast ( +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: seq != 0 +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: "seq != 0" +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +13943: ; +13943: return IsVisibleFullCheck(seq); +13943: } +13943: } +13943: +13943: inline SequenceNumber max_visible_seq() { return max_visible_seq_; } +13943: +13943: +13943: virtual void Refresh(SequenceNumber seq) { max_visible_seq_ = seq; } +13943: +13943: protected: +13943: +13943: +13943: SequenceNumber max_visible_seq_ = kMaxSequenceNumber; +13943: +13943: const SequenceNumber min_uncommitted_ = kMinUnCommittedSeq; +13943: }; +13943: +13943: } +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: class BlobFetcher; +13943: class Comparator; +13943: class Logger; +13943: class MergeContext; +13943: class MergeOperator; +13943: class PinnableWideColumns; +13943: class PinnedIteratorsManager; +13943: class Statistics; +13943: class SystemClock; +13943: struct ParsedInternalKey; +13943: +13943: +13943: +13943: +13943: struct GetContextStats { +13943: uint64_t num_cache_hit = 0; +13943: uint64_t num_cache_index_hit = 0; +13943: uint64_t num_cache_data_hit = 0; +13943: uint64_t num_cache_filter_hit = 0; +13943: uint64_t num_cache_compression_dict_hit = 0; +13943: uint64_t num_cache_index_miss = 0; +13943: uint64_t num_cache_filter_miss = 0; +13943: uint64_t num_cache_data_miss = 0; +13943: uint64_t num_cache_compression_dict_miss = 0; +13943: uint64_t num_cache_bytes_read = 0; +13943: uint64_t num_cache_miss = 0; +13943: uint64_t num_cache_add = 0; +13943: uint64_t num_cache_add_redundant = 0; +13943: uint64_t num_cache_bytes_write = 0; +13943: uint64_t num_cache_index_add = 0; +13943: uint64_t num_cache_index_add_redundant = 0; +13943: uint64_t num_cache_index_bytes_insert = 0; +13943: uint64_t num_cache_data_add = 0; +13943: uint64_t num_cache_data_add_redundant = 0; +13943: uint64_t num_cache_data_bytes_insert = 0; +13943: uint64_t num_cache_filter_add = 0; +13943: uint64_t num_cache_filter_add_redundant = 0; +13943: uint64_t num_cache_filter_bytes_insert = 0; +13943: uint64_t num_cache_compression_dict_add = 0; +13943: uint64_t num_cache_compression_dict_add_redundant = 0; +13943: uint64_t num_cache_compression_dict_bytes_insert = 0; +13943: +13943: uint64_t num_filter_read = 0; +13943: uint64_t num_index_read = 0; +13943: uint64_t num_sst_read = 0; +13943: }; +13943: # 67 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +13943: class GetContext { +13943: public: +13943: +13943: +13943: enum GetState { +13943: kNotFound, +13943: kFound, +13943: kDeleted, +13943: kCorrupt, +13943: kMerge, +13943: kUnexpectedBlobIndex, +13943: kMergeOperatorFailed, +13943: }; +13943: GetContextStats get_context_stats_; +13943: # 102 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +13943: GetContext(const Comparator* ucmp, const MergeOperator* merge_operator, +13943: Logger* logger, Statistics* statistics, GetState init_state, +13943: const Slice& user_key, PinnableSlice* value, +13943: PinnableWideColumns* columns, bool* value_found, +13943: MergeContext* merge_context, bool do_merge, +13943: SequenceNumber* max_covering_tombstone_seq, SystemClock* clock, +13943: SequenceNumber* seq = nullptr, +13943: PinnedIteratorsManager* _pinned_iters_mgr = nullptr, +13943: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +13943: uint64_t tracing_get_id = 0, BlobFetcher* blob_fetcher = nullptr); +13943: GetContext(const Comparator* ucmp, const MergeOperator* merge_operator, +13943: Logger* logger, Statistics* statistics, GetState init_state, +13943: const Slice& user_key, PinnableSlice* value, +13943: PinnableWideColumns* columns, std::string* timestamp, +13943: bool* value_found, MergeContext* merge_context, bool do_merge, +13943: SequenceNumber* max_covering_tombstone_seq, SystemClock* clock, +13943: SequenceNumber* seq = nullptr, +13943: PinnedIteratorsManager* _pinned_iters_mgr = nullptr, +13943: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +13943: uint64_t tracing_get_id = 0, BlobFetcher* blob_fetcher = nullptr); +13943: +13943: GetContext() = delete; +13943: +13943: +13943: +13943: void MarkKeyMayExist(); +13943: # 137 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +13943: bool SaveValue(const ParsedInternalKey& parsed_key, const Slice& value, +13943: bool* matched, Status* read_status, +13943: Cleanable* value_pinner = nullptr); +13943: +13943: +13943: +13943: void SaveValue(const Slice& value, SequenceNumber seq); +13943: +13943: GetState State() const { return state_; } +13943: +13943: SequenceNumber* max_covering_tombstone_seq() { +13943: return max_covering_tombstone_seq_; +13943: } +13943: +13943: bool NeedTimestamp() { return timestamp_ != nullptr; } +13943: +13943: inline size_t TimestampSize() { return ucmp_->timestamp_size(); } +13943: +13943: void SetTimestampFromRangeTombstone(const Slice& timestamp) { +13943: +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 3 4 +13943: (static_cast ( +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +13943: timestamp_ +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +13943: "timestamp_" +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +13943: ; +13943: timestamp_->assign(timestamp.data(), timestamp.size()); +13943: ts_from_rangetombstone_ = true; +13943: } +13943: +13943: PinnedIteratorsManager* pinned_iters_mgr() { return pinned_iters_mgr_; } +13943: +13943: +13943: +13943: +13943: void SetReplayLog(std::string* replay_log) { replay_log_ = replay_log; } +13943: +13943: +13943: bool NeedToReadSequence() const { return (seq_ != nullptr); } +13943: +13943: bool sample() const { return sample_; } +13943: +13943: bool CheckCallback(SequenceNumber seq) { +13943: if (callback_) { +13943: return callback_->IsVisible(seq); +13943: } +13943: return true; +13943: } +13943: +13943: void ReportCounters(); +13943: +13943: bool has_callback() const { return callback_ != nullptr; } +13943: +13943: const Slice& ukey_to_get_blob_value() const { +13943: if (!ukey_with_ts_found_.empty()) { +13943: return ukey_with_ts_found_; +13943: } else { +13943: return user_key_; +13943: } +13943: } +13943: +13943: uint64_t get_tracing_get_id() const { return tracing_get_id_; } +13943: +13943: void push_operand(const Slice& value, Cleanable* value_pinner); +13943: +13943: private: +13943: +13943: +13943: void PostprocessMerge(const Status& merge_status); +13943: +13943: +13943: +13943: void MergeWithNoBaseValue(); +13943: void MergeWithPlainBaseValue(const Slice& value); +13943: void MergeWithWideColumnBaseValue(const Slice& entity); +13943: +13943: bool GetBlobValue(const Slice& user_key, const Slice& blob_index, +13943: PinnableSlice* blob_value, Status* read_status); +13943: +13943: void appendToReplayLog(ValueType type, Slice value, Slice ts); +13943: +13943: const Comparator* ucmp_; +13943: const MergeOperator* merge_operator_; +13943: +13943: Logger* logger_; +13943: Statistics* statistics_; +13943: +13943: GetState state_; +13943: Slice user_key_; +13943: +13943: +13943: +13943: PinnableSlice ukey_with_ts_found_; +13943: PinnableSlice* pinnable_val_; +13943: PinnableWideColumns* columns_; +13943: std::string* timestamp_; +13943: bool ts_from_rangetombstone_{false}; +13943: bool* value_found_; +13943: MergeContext* merge_context_; +13943: SequenceNumber* max_covering_tombstone_seq_; +13943: SystemClock* clock_; +13943: +13943: +13943: SequenceNumber* seq_; +13943: std::string* replay_log_; +13943: +13943: PinnedIteratorsManager* pinned_iters_mgr_; +13943: ReadCallback* callback_; +13943: bool sample_; +13943: +13943: +13943: +13943: bool do_merge_; +13943: bool* is_blob_index_; +13943: +13943: +13943: const uint64_t tracing_get_id_; +13943: BlobFetcher* blob_fetcher_; +13943: }; +13943: +13943: +13943: +13943: +13943: Status replayGetContextLog(const Slice& replay_log, const Slice& user_key, +13943: GetContext* get_context, +13943: Cleanable* value_pinner = nullptr, +13943: SequenceNumber seq_no = kMaxSequenceNumber); +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/lookup_key.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/lookup_key.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: class LookupKey { +13943: public: +13943: +13943: +13943: LookupKey(const Slice& _user_key, SequenceNumber sequence, +13943: const Slice* ts = nullptr); +13943: +13943: ~LookupKey(); +13943: +13943: +13943: Slice memtable_key() const { +13943: return Slice(start_, static_cast(end_ - start_)); +13943: } +13943: +13943: +13943: Slice internal_key() const { +13943: return Slice(kstart_, static_cast(end_ - kstart_)); +13943: } +13943: +13943: +13943: +13943: +13943: Slice user_key() const { +13943: return Slice(kstart_, static_cast(end_ - kstart_ - 8)); +13943: } +13943: +13943: private: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: const char* start_; +13943: const char* kstart_; +13943: const char* end_; +13943: char space_[200]; +13943: +13943: +13943: LookupKey(const LookupKey&); +13943: void operator=(const LookupKey&); +13943: }; +13943: +13943: inline LookupKey::~LookupKey() { +13943: if (start_ != space_) delete[] start_; +13943: } +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/async_file_reader.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 2 +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/single_thread_executor.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 2 +13943: +13943: namespace rocksdb { +13943: class GetContext; +13943: class PinnableWideColumns; +13943: +13943: struct KeyContext { +13943: const Slice* key; +13943: LookupKey* lkey; +13943: Slice ukey_with_ts; +13943: Slice ukey_without_ts; +13943: Slice ikey; +13943: ColumnFamilyHandle* column_family; +13943: Status* s; +13943: MergeContext merge_context; +13943: SequenceNumber max_covering_tombstone_seq; +13943: bool key_exists; +13943: bool is_blob_index; +13943: void* cb_arg; +13943: PinnableSlice* value; +13943: PinnableWideColumns* columns; +13943: std::string* timestamp; +13943: GetContext* get_context; +13943: +13943: KeyContext(ColumnFamilyHandle* col_family, const Slice& user_key, +13943: PinnableSlice* val, PinnableWideColumns* cols, std::string* ts, +13943: Status* stat) +13943: : key(&user_key), +13943: lkey(nullptr), +13943: column_family(col_family), +13943: s(stat), +13943: max_covering_tombstone_seq(0), +13943: key_exists(false), +13943: is_blob_index(false), +13943: cb_arg(nullptr), +13943: value(val), +13943: columns(cols), +13943: timestamp(ts), +13943: get_context(nullptr) {} +13943: }; +13943: # 97 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: class MultiGetContext { +13943: public: +13943: +13943: +13943: +13943: +13943: static const int MAX_BATCH_SIZE = 32; +13943: +13943: +13943: +13943: using Mask = uint64_t; +13943: static_assert(MAX_BATCH_SIZE < sizeof(Mask) * 8); +13943: +13943: MultiGetContext(autovector* sorted_keys, +13943: size_t begin, size_t num_keys, SequenceNumber snapshot, +13943: const ReadOptions& read_opts, FileSystem* fs, +13943: Statistics* stats) +13943: : num_keys_(num_keys), +13943: value_mask_(0), +13943: value_size_(0), +13943: lookup_key_ptr_(reinterpret_cast(lookup_key_stack_buf)) +13943: +13943: +13943: +13943: +13943: +13943: { +13943: (void)fs; +13943: (void)stats; +13943: +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: num_keys <= MAX_BATCH_SIZE +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "num_keys <= MAX_BATCH_SIZE" +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: if (num_keys > MAX_LOOKUP_KEYS_ON_STACK) { +13943: lookup_key_heap_buf.reset(new char[sizeof(LookupKey) * num_keys]); +13943: lookup_key_ptr_ = reinterpret_cast(lookup_key_heap_buf.get()); +13943: } +13943: +13943: for (size_t iter = 0; iter != num_keys_; ++iter) { +13943: +13943: sorted_keys_[iter] = (*sorted_keys)[begin + iter]; +13943: sorted_keys_[iter]->lkey = new (&lookup_key_ptr_[iter]) +13943: LookupKey(*sorted_keys_[iter]->key, snapshot, read_opts.timestamp); +13943: sorted_keys_[iter]->ukey_with_ts = sorted_keys_[iter]->lkey->user_key(); +13943: sorted_keys_[iter]->ukey_without_ts = StripTimestampFromUserKey( +13943: sorted_keys_[iter]->lkey->user_key(), +13943: read_opts.timestamp == nullptr ? 0 : read_opts.timestamp->size()); +13943: sorted_keys_[iter]->ikey = sorted_keys_[iter]->lkey->internal_key(); +13943: sorted_keys_[iter]->timestamp = (*sorted_keys)[begin + iter]->timestamp; +13943: sorted_keys_[iter]->get_context = +13943: (*sorted_keys)[begin + iter]->get_context; +13943: } +13943: } +13943: +13943: ~MultiGetContext() { +13943: for (size_t i = 0; i < num_keys_; ++i) { +13943: lookup_key_ptr_[i].~LookupKey(); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: private: +13943: static const int MAX_LOOKUP_KEYS_ON_STACK = 16; +13943: alignas( +13943: alignof(LookupKey)) char lookup_key_stack_buf[sizeof(LookupKey) * +13943: MAX_LOOKUP_KEYS_ON_STACK]; +13943: std::array sorted_keys_; +13943: size_t num_keys_; +13943: Mask value_mask_; +13943: uint64_t value_size_; +13943: std::unique_ptr lookup_key_heap_buf; +13943: /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_debug.cc + LookupKey* lookup_key_ptr_; +13943: +13943: +13943: +13943: +13943: +13943: public: +13943: # 186 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: class Range { +13943: public: +13943: +13943: +13943: +13943: class Iterator { +13943: public: +13943: +13943: using self_type = Iterator; +13943: using value_type = KeyContext; +13943: using reference = KeyContext&; +13943: using pointer = KeyContext*; +13943: using difference_type = int; +13943: using iterator_category = std::forward_iterator_tag; +13943: +13943: Iterator(const Range* range, size_t idx) +13943: : range_(range), ctx_(range->ctx_), index_(idx) { +13943: while (index_ < range_->end_ && +13943: (Mask{1} << index_) & +13943: (range_->ctx_->value_mask_ | range_->skip_mask_ | +13943: range_->invalid_mask_)) +13943: index_++; +13943: } +13943: +13943: Iterator(const Iterator&) = default; +13943: +13943: Iterator(const Iterator& other, const Range* range) +13943: : range_(range), ctx_(other.ctx_), index_(other.index_) { +13943: +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: range->ctx_ == other.ctx_ +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "range->ctx_ == other.ctx_" +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: } +13943: Iterator& operator=(const Iterator&) = default; +13943: +13943: Iterator& operator++() { +13943: while (++index_ < range_->end_ && +13943: (Mask{1} << index_) & +13943: (range_->ctx_->value_mask_ | range_->skip_mask_ | +13943: range_->invalid_mask_)) +13943: ; +13943: return *this; +13943: } +13943: +13943: bool operator==(Iterator other) const { +13943: +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: range_->ctx_ == other.range_->ctx_ +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "range_->ctx_ == other.range_->ctx_" +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: return index_ == other.index_; +13943: } +13943: +13943: bool operator!=(Iterator other) const { +13943: +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: range_->ctx_ == other.range_->ctx_ +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "range_->ctx_ == other.range_->ctx_" +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: return index_ != other.index_; +13943: } +13943: +13943: KeyContext& operator*() { +13943: +13943: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: index_ < range_->end_ && index_ >= range_->start_ +13943: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "index_ < range_->end_ && index_ >= range_->start_" +13943: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: return *(ctx_->sorted_keys_[index_]); +13943: } +13943: +13943: KeyContext* operator->() { +13943: +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: index_ < range_->end_ && index_ >= range_->start_ +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "index_ < range_->end_ && index_ >= range_->start_" +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: return ctx_->sorted_keys_[index_]; +13943: } +13943: +13943: size_t index() { return index_; } +13943: +13943: private: +13943: friend Range; +13943: const Range* range_; +13943: const MultiGetContext* ctx_; +13943: size_t index_; +13943: }; +13943: +13943: Range(const Range& mget_range, const Iterator& first, +13943: const Iterator& last) { +13943: ctx_ = mget_range.ctx_; +13943: if (first == last) { +13943: +13943: +13943: start_ = mget_range.start_; +13943: end_ = start_; +13943: } else { +13943: start_ = first.index_; +13943: end_ = last.index_; +13943: } +13943: skip_mask_ = mget_range.skip_mask_; +13943: invalid_mask_ = mget_range.invalid_mask_; +13943: +13943: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: start_ < 64 +13943: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "start_ < 64" +13943: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: +13943: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: end_ < 64 +13943: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "end_ < 64" +13943: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: } +13943: +13943: Range() = default; +13943: +13943: Iterator begin() const { return Iterator(this, start_); } +13943: +13943: Iterator end() const { return Iterator(this, end_); } +13943: +13943: bool empty() const { return RemainingMask() == 0; } +13943: +13943: void SkipIndex(size_t index) { skip_mask_ |= Mask{1} << index; } +13943: +13943: void SkipKey(const Iterator& iter) { SkipIndex(iter.index_); } +13943: +13943: bool IsKeySkipped(const Iterator& iter) const { +13943: return skip_mask_ & (Mask{1} << iter.index_); +13943: } +13943: +13943: +13943: +13943: void MarkKeyDone(Iterator& iter) { +13943: ctx_->value_mask_ |= (Mask{1} << iter.index_); +13943: } +13943: +13943: bool CheckKeyDone(Iterator& iter) const { +13943: return ctx_->value_mask_ & (Mask{1} << iter.index_); +13943: } +13943: +13943: uint64_t KeysLeft() const { return BitsSetToOne(RemainingMask()); } +13943: +13943: void AddSkipsFrom(const Range& other) { +13943: +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ctx_ == other.ctx_ +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "ctx_ == other.ctx_" +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: skip_mask_ |= other.skip_mask_; +13943: } +13943: +13943: uint64_t GetValueSize() { return ctx_->value_size_; } +13943: +13943: void AddValueSize(uint64_t value_size) { ctx_->value_size_ += value_size; } +13943: +13943: MultiGetContext* context() const { return ctx_; } +13943: +13943: Range Suffix(const Range& other) const { +13943: size_t other_last = other.FindLastRemaining(); +13943: size_t my_last = FindLastRemaining(); +13943: +13943: if (my_last > other_last) { +13943: return Range(*this, Iterator(this, other_last), +13943: Iterator(this, my_last)); +13943: } else { +13943: return Range(*this, begin(), begin()); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: Range& operator+=(const Range& rhs) { +13943: +13943: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: rhs.start_ >= end_ +13943: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "rhs.start_ >= end_" +13943: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: +13943: if (end_ < rhs.start_) { +13943: invalid_mask_ |= RangeMask(end_, rhs.start_); +13943: skip_mask_ |= RangeMask(end_, rhs.start_); +13943: } +13943: start_ = std::min(start_, rhs.start_); +13943: end_ = std::max(end_, rhs.end_); +13943: skip_mask_ |= rhs.skip_mask_ & RangeMask(rhs.start_, rhs.end_); +13943: invalid_mask_ |= (rhs.invalid_mask_ | rhs.skip_mask_) & +13943: RangeMask(rhs.start_, rhs.end_); +13943: +13943: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: start_ < 64 +13943: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "start_ < 64" +13943: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: end_ < 64 +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "end_ < 64" +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: return *this; +13943: } +13943: +13943: +13943: +13943: +13943: Range& operator-=(const Range& rhs) { +13943: +13943: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: start_ <= rhs.start_ && end_ >= rhs.end_ +13943: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "start_ <= rhs.start_ && end_ >= rhs.end_" +13943: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: skip_mask_ |= (~rhs.skip_mask_ | rhs.invalid_mask_) & +13943: RangeMask(rhs.start_, rhs.end_); +13943: invalid_mask_ |= (~rhs.skip_mask_ | rhs.invalid_mask_) & +13943: RangeMask(rhs.start_, rhs.end_); +13943: return *this; +13943: } +13943: +13943: +13943: Range operator~() { +13943: Range res = *this; +13943: res.skip_mask_ = ~skip_mask_ & RangeMask(start_, end_); +13943: return res; +13943: } +13943: +13943: private: +13943: friend MultiGetContext; +13943: MultiGetContext* ctx_; +13943: size_t start_; +13943: size_t end_; +13943: Mask skip_mask_; +13943: Mask invalid_mask_; +13943: +13943: Range(MultiGetContext* ctx, size_t num_keys) +13943: : ctx_(ctx), +13943: start_(0), +13943: end_(num_keys), +13943: skip_mask_(0), +13943: invalid_mask_(0) { +13943: +13943: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: (static_cast ( +13943: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: num_keys < 64 +13943: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: "num_keys < 64" +13943: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +13943: ; +13943: } +13943: +13943: static Mask RangeMask(size_t start, size_t end) { +13943: return (((Mask{1} << (end - start)) - 1) << start); +13943: } +13943: +13943: Mask RemainingMask() const { +13943: return (((Mask{1} << end_) - 1) & ~((Mask{1} << start_) - 1) & +13943: ~(ctx_->value_mask_ | skip_mask_)); +13943: } +13943: +13943: size_t FindLastRemaining() const { +13943: Mask mask = RemainingMask(); +13943: size_t index = (mask >>= start_) ? start_ : 0; +13943: while (mask >>= 1) { +13943: index++; +13943: } +13943: return index; +13943: } +13943: }; +13943: +13943: +13943: Range GetMultiGetRange() { return Range(this, num_keys_); } +13943: }; +13943: +13943: } +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class Iterator; +13943: struct ParsedInternalKey; +13943: class Slice; +13943: class Arena; +13943: struct ReadOptions; +13943: struct TableProperties; +13943: class GetContext; +13943: class MultiGetContext; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class TableReader { +13943: public: +13943: virtual ~TableReader() {} +13943: # 57 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +13943: virtual InternalIterator* NewIterator( +13943: const ReadOptions& read_options, const SliceTransform* prefix_extractor, +13943: Arena* arena, bool skip_filters, TableReaderCaller caller, +13943: size_t compaction_readahead_size = 0, +13943: bool allow_unprepared_value = false) = 0; +13943: +13943: +13943: virtual FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +13943: const ReadOptions& ) { +13943: return nullptr; +13943: } +13943: +13943: virtual FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +13943: SequenceNumber , const Slice* ) { +13943: return nullptr; +13943: } +13943: # 85 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +13943: virtual uint64_t ApproximateOffsetOf(const ReadOptions& read_options, +13943: const Slice& key, +13943: TableReaderCaller caller) = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual uint64_t ApproximateSize(const ReadOptions& read_options, +13943: const Slice& start, const Slice& end, +13943: TableReaderCaller caller) = 0; +13943: +13943: struct Anchor { +13943: Anchor(const Slice& _user_key, size_t _range_size) +13943: : user_key(_user_key.ToStringView()), range_size(_range_size) {} +13943: std::string user_key; +13943: size_t range_size; +13943: }; +13943: +13943: +13943: +13943: virtual Status ApproximateKeyAnchors(const ReadOptions& , +13943: std::vector& ) { +13943: return Status::NotSupported("ApproximateKeyAnchors() not supported."); +13943: } +13943: +13943: +13943: +13943: virtual void SetupForCompaction() = 0; +13943: +13943: virtual std::shared_ptr GetTableProperties() const = 0; +13943: +13943: +13943: virtual void Prepare(const Slice& ) {} +13943: +13943: +13943: virtual size_t ApproximateMemoryUsage() const = 0; +13943: # 135 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +13943: virtual Status Get(const ReadOptions& readOptions, const Slice& key, +13943: GetContext* get_context, +13943: const SliceTransform* prefix_extractor, +13943: bool skip_filters = false) = 0; +13943: +13943: +13943: +13943: +13943: virtual Status MultiGetFilter(const ReadOptions& , +13943: const SliceTransform* , +13943: MultiGetContext::Range* ) { +13943: return Status::NotSupported(); +13943: } +13943: +13943: virtual void MultiGet(const ReadOptions& readOptions, +13943: const MultiGetContext::Range* mget_range, +13943: const SliceTransform* prefix_extractor, +13943: bool skip_filters = false) { +13943: for (auto iter = mget_range->begin(); iter != mget_range->end(); ++iter) { +13943: *iter->s = Get(readOptions, iter->ikey, iter->get_context, +13943: prefix_extractor, skip_filters); +13943: } +13943: } +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +13943: virtual Status Prefetch(const ReadOptions& , +13943: const Slice* begin = nullptr, +13943: const Slice* end = nullptr) { +13943: (void)begin; +13943: (void)end; +13943: +13943: +13943: return Status::OK(); +13943: } +13943: +13943: +13943: virtual Status DumpTable(WritableFile* ) { +13943: return Status::NotSupported("DumpTable() not supported"); +13943: } +13943: +13943: +13943: virtual Status VerifyChecksum(const ReadOptions& , +13943: TableReaderCaller ) { +13943: return Status::NotSupported("VerifyChecksum() not supported"); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void MarkObsolete(uint32_t ) { +13943: +13943: } +13943: }; +13943: +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/unique_id_impl.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/unique_id.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/unique_id.h" +13943: Status GetUniqueIdFromTableProperties(const TableProperties &props, +13943: std::string *out_id); +13943: # 47 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/unique_id.h" +13943: Status GetExtendedUniqueIdFromTableProperties(const TableProperties &props, +13943: std::string *out_id); +13943: +13943: +13943: +13943: +13943: std::string UniqueIdToHumanString(const std::string &id); +13943: +13943: } +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/table/unique_id_impl.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: +13943: using UniqueId64x2 = std::array; +13943: +13943: +13943: constexpr UniqueId64x2 kNullUniqueId64x2 = {}; +13943: +13943: +13943: +13943: using UniqueId64x3 = std::array; +13943: +13943: +13943: constexpr UniqueId64x3 kNullUniqueId64x3 = {}; +13943: +13943: +13943: struct UniqueIdPtr { +13943: uint64_t *ptr = nullptr; +13943: bool extended = false; +13943: +13943: UniqueIdPtr(UniqueId64x2 *id) { +13943: ptr = (*id).data(); +13943: extended = false; +13943: } +13943: UniqueIdPtr(UniqueId64x3 *id) { +13943: ptr = (*id).data(); +13943: extended = true; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: Status GetSstInternalUniqueId(const std::string &db_id, +13943: const std::string &db_session_id, +13943: uint64_t file_number, UniqueIdPtr out, +13943: bool force = false); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void InternalUniqueIdToExternal(UniqueIdPtr in_out); +13943: +13943: +13943: +13943: void ExternalUniqueIdToInternal(UniqueIdPtr in_out); +13943: +13943: +13943: std::string EncodeUniqueIdBytes(UniqueIdPtr in); +13943: +13943: +13943: Status DecodeUniqueIdBytes(const std::string &unique_id, UniqueIdPtr out); +13943: +13943: +13943: +13943: std::string InternalUniqueIdToHumanString(UniqueIdPtr in); +13943: # 85 "/build/reproducible-path/rocksdb-9.10.0/table/unique_id_impl.h" +13943: std::string EncodeSessionId(uint64_t upper, uint64_t lower); +13943: +13943: +13943: +13943: +13943: Status DecodeSessionId(const std::string &db_session_id, uint64_t *upper, +13943: uint64_t *lower); +13943: +13943: } +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: enum Tag : uint32_t { +13943: kComparator = 1, +13943: kLogNumber = 2, +13943: kNextFileNumber = 3, +13943: kLastSequence = 4, +13943: kCompactCursor = 5, +13943: kDeletedFile = 6, +13943: kNewFile = 7, +13943: +13943: kPrevLogNumber = 9, +13943: kMinLogNumberToKeep = 10, +13943: +13943: +13943: kNewFile2 = 100, +13943: kNewFile3 = 102, +13943: kNewFile4 = 103, +13943: kColumnFamily = 200, +13943: kColumnFamilyAdd = 201, +13943: kColumnFamilyDrop = 202, +13943: kMaxColumnFamily = 203, +13943: +13943: kInAtomicGroup = 300, +13943: +13943: kBlobFileAddition = 400, +13943: kBlobFileGarbage, +13943: +13943: +13943: kTagSafeIgnoreMask = 1 << 13, +13943: +13943: +13943: kDbId, +13943: kBlobFileAddition_DEPRECATED, +13943: kBlobFileGarbage_DEPRECATED, +13943: kWalAddition, +13943: kWalDeletion, +13943: kFullHistoryTsLow, +13943: kWalAddition2, +13943: kWalDeletion2, +13943: kPersistUserDefinedTimestamps, +13943: }; +13943: +13943: enum NewFileCustomTag : uint32_t { +13943: kTerminate = 1, +13943: kNeedCompaction = 2, +13943: +13943: +13943: +13943: kMinLogNumberToKeepHack = 3, +13943: kOldestBlobFileNumber = 4, +13943: kOldestAncesterTime = 5, +13943: kFileCreationTime = 6, +13943: kFileChecksum = 7, +13943: kFileChecksumFuncName = 8, +13943: kTemperature = 9, +13943: kMinTimestamp = 10, +13943: kMaxTimestamp = 11, +13943: kUniqueId = 12, +13943: kEpochNumber = 13, +13943: kCompensatedRangeDeletionSize = 14, +13943: kTailSize = 15, +13943: kUserDefinedTimestampsPersisted = 16, +13943: +13943: +13943: +13943: kCustomTagNonSafeIgnoreMask = 1 << 6, +13943: +13943: +13943: kPathId, +13943: }; +13943: +13943: class VersionSet; +13943: +13943: constexpr uint64_t kFileNumberMask = 0x3FFFFFFFFFFFFFFF; +13943: constexpr uint64_t kUnknownOldestAncesterTime = 0; +13943: constexpr uint64_t kUnknownNewestKeyTime = 0; +13943: constexpr uint64_t kUnknownFileCreationTime = 0; +13943: constexpr uint64_t kUnknownEpochNumber = 0; +13943: +13943: +13943: constexpr uint64_t kReservedEpochNumberForFileIngestedBehind = 1; +13943: +13943: uint64_t PackFileNumberAndPathId(uint64_t number, uint64_t path_id); +13943: +13943: +13943: +13943: +13943: +13943: +13943: struct FileDescriptor { +13943: +13943: TableReader* table_reader; +13943: uint64_t packed_number_and_path_id; +13943: uint64_t file_size; +13943: SequenceNumber smallest_seqno; +13943: SequenceNumber largest_seqno; +13943: +13943: FileDescriptor() : FileDescriptor(0, 0, 0) {} +13943: +13943: FileDescriptor(uint64_t number, uint32_t path_id, uint64_t _file_size) +13943: : FileDescriptor(number, path_id, _file_size, kMaxSequenceNumber, 0) {} +13943: +13943: FileDescriptor(uint64_t number, uint32_t path_id, uint64_t _file_size, +13943: SequenceNumber _smallest_seqno, SequenceNumber _largest_seqno) +13943: : table_reader(nullptr), +13943: packed_number_and_path_id(PackFileNumberAndPathId(number, path_id)), +13943: file_size(_file_size), +13943: smallest_seqno(_smallest_seqno), +13943: largest_seqno(_largest_seqno) {} +13943: +13943: FileDescriptor(const FileDescriptor& fd) { *this = fd; } +13943: +13943: FileDescriptor& operator=(const FileDescriptor& fd) { +13943: table_reader = fd.table_reader; +13943: packed_number_and_path_id = fd.packed_number_and_path_id; +13943: file_size = fd.file_size; +13943: smallest_seqno = fd.smallest_seqno; +13943: largest_seqno = fd.largest_seqno; +13943: return *this; +13943: } +13943: +13943: uint64_t GetNumber() const { +13943: return packed_number_and_path_id & kFileNumberMask; +13943: } +13943: uint32_t GetPathId() const { +13943: return static_cast(packed_number_and_path_id / +13943: (kFileNumberMask + 1)); +13943: } +13943: uint64_t GetFileSize() const { return file_size; } +13943: }; +13943: +13943: struct FileSampledStats { +13943: FileSampledStats() : num_reads_sampled(0) {} +13943: FileSampledStats(const FileSampledStats& other) { *this = other; } +13943: FileSampledStats& operator=(const FileSampledStats& other) { +13943: num_reads_sampled = other.num_reads_sampled.load(); +13943: return *this; +13943: } +13943: +13943: +13943: mutable std::atomic num_reads_sampled; +13943: }; +13943: +13943: struct FileMetaData { +13943: FileDescriptor fd; +13943: InternalKey smallest; +13943: InternalKey largest; +13943: +13943: +13943: Cache::Handle* table_reader_handle = nullptr; +13943: +13943: FileSampledStats stats; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint64_t compensated_file_size = 0; +13943: +13943: +13943: uint64_t num_entries = +13943: 0; +13943: +13943: uint64_t num_deletions = 0; +13943: uint64_t raw_key_size = 0; +13943: uint64_t raw_value_size = 0; +13943: uint64_t num_range_deletions = 0; +13943: +13943: +13943: +13943: uint64_t compensated_range_deletion_size = 0; +13943: +13943: int refs = 0; +13943: +13943: bool being_compacted = false; +13943: bool init_stats_from_file = false; +13943: +13943: +13943: bool marked_for_compaction = false; +13943: +13943: Temperature temperature = Temperature::kUnknown; +13943: +13943: +13943: +13943: uint64_t oldest_blob_file_number = kInvalidBlobFileNumber; +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: uint64_t oldest_ancester_time = kUnknownOldestAncesterTime; +13943: +13943: +13943: uint64_t file_creation_time = kUnknownFileCreationTime; +13943: +13943: +13943: +13943: +13943: +13943: uint64_t epoch_number = kUnknownEpochNumber; +13943: +13943: +13943: std::string file_checksum = kUnknownFileChecksum; +13943: +13943: +13943: std::string file_checksum_func_name = kUnknownFileChecksumFuncName; +13943: +13943: +13943: UniqueId64x2 unique_id{}; +13943: +13943: +13943: +13943: uint64_t tail_size = 0; +13943: +13943: +13943: +13943: +13943: bool user_defined_timestamps_persisted = true; +13943: +13943: FileMetaData() = default; +13943: +13943: FileMetaData(uint64_t file, uint32_t file_path_id, uint64_t file_size, +13943: const InternalKey& smallest_key, const InternalKey& largest_key, +13943: const SequenceNumber& smallest_seq, +13943: const SequenceNumber& largest_seq, bool marked_for_compact, +13943: Temperature _temperature, uint64_t oldest_blob_file, +13943: uint64_t _oldest_ancester_time, uint64_t _file_creation_time, +13943: uint64_t _epoch_number, const std::string& _file_checksum, +13943: const std::string& _file_checksum_func_name, +13943: UniqueId64x2 _unique_id, +13943: const uint64_t _compensated_range_deletion_size, +13943: uint64_t _tail_size, bool _user_defined_timestamps_persisted) +13943: : fd(file, file_path_id, file_size, smallest_seq, largest_seq), +13943: smallest(smallest_key), +13943: largest(largest_key), +13943: compensated_range_deletion_size(_compensated_range_deletion_size), +13943: marked_for_compaction(marked_for_compact), +13943: temperature(_temperature), +13943: oldest_blob_file_number(oldest_blob_file), +13943: oldest_ancester_time(_oldest_ancester_time), +13943: file_creation_time(_file_creation_time), +13943: epoch_number(_epoch_number), +13943: file_checksum(_file_checksum), +13943: file_checksum_func_name(_file_checksum_func_name), +13943: unique_id(std::move(_unique_id)), +13943: tail_size(_tail_size), +13943: user_defined_timestamps_persisted(_user_defined_timestamps_persisted) { +13943: rocksdb::SyncPoint::GetInstance()->Process("FileMetaData::FileMetaData", this); +13943: } +13943: +13943: +13943: +13943: Status UpdateBoundaries(const Slice& key, const Slice& value, +13943: SequenceNumber seqno, ValueType value_type); +13943: +13943: +13943: +13943: void UpdateBoundariesForRange(const InternalKey& start, +13943: const InternalKey& end, SequenceNumber seqno, +13943: const InternalKeyComparator& icmp) { +13943: if (smallest.size() == 0 || icmp.Compare(start, smallest) < 0) { +13943: smallest = start; +13943: } +13943: if (largest.size() == 0 || icmp.Compare(largest, end) < 0) { +13943: largest = end; +13943: } +13943: +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: icmp.Compare(smallest, largest) <= 0 +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "icmp.Compare(smallest, largest) <= 0" +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: fd.smallest_seqno = std::min(fd.smallest_seqno, seqno); +13943: fd.largest_seqno = std::max(fd.largest_seqno, seqno); +13943: } +13943: +13943: +13943: +13943: +13943: uint64_t TryGetOldestAncesterTime() { +13943: if (oldest_ancester_time != kUnknownOldestAncesterTime) { +13943: return oldest_ancester_time; +13943: } else if (fd.table_reader != nullptr && +13943: fd.table_reader->GetTableProperties() != nullptr) { +13943: return fd.table_reader->GetTableProperties()->creation_time; +13943: } +13943: return kUnknownOldestAncesterTime; +13943: } +13943: +13943: uint64_t TryGetFileCreationTime() { +13943: if (file_creation_time != kUnknownFileCreationTime) { +13943: return file_creation_time; +13943: } else if (fd.table_reader != nullptr && +13943: fd.table_reader->GetTableProperties() != nullptr) { +13943: return fd.table_reader->GetTableProperties()->file_creation_time; +13943: } +13943: return kUnknownFileCreationTime; +13943: } +13943: +13943: +13943: +13943: uint64_t TryGetNewestKeyTime(FileMetaData* prev_file = nullptr) { +13943: if (fd.table_reader != nullptr && +13943: fd.table_reader->GetTableProperties() != nullptr) { +13943: uint64_t newest_key_time = +13943: fd.table_reader->GetTableProperties()->newest_key_time; +13943: if (newest_key_time != kUnknownNewestKeyTime) { +13943: return newest_key_time; +13943: } +13943: } +13943: if (prev_file != nullptr) { +13943: uint64_t prev_oldest_ancestor_time = +13943: prev_file->TryGetOldestAncesterTime(); +13943: if (prev_oldest_ancestor_time != kUnknownOldestAncesterTime) { +13943: return prev_oldest_ancestor_time; +13943: } +13943: } +13943: return kUnknownNewestKeyTime; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: size_t ApproximateMemoryUsage() const { +13943: size_t usage = 0; +13943: +13943: usage += malloc_usable_size(const_cast(this)); +13943: +13943: +13943: +13943: usage += smallest.size() + largest.size() + file_checksum.size() + +13943: file_checksum_func_name.size(); +13943: return usage; +13943: } +13943: +13943: +13943: +13943: bool FileIsStandAloneRangeTombstone() const { +13943: bool res = num_range_deletions == 1 && num_entries == num_range_deletions; +13943: +13943: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: !res || fd.smallest_seqno == fd.largest_seqno +13943: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "!res || fd.smallest_seqno == fd.largest_seqno" +13943: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: return res; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: struct FdWithKeyRange { +13943: FileDescriptor fd; +13943: FileMetaData* file_metadata; +13943: Slice smallest_key; +13943: Slice largest_key; +13943: +13943: FdWithKeyRange() +13943: : fd(), file_metadata(nullptr), smallest_key(), largest_key() {} +13943: +13943: FdWithKeyRange(FileDescriptor _fd, Slice _smallest_key, Slice _largest_key, +13943: FileMetaData* _file_metadata) +13943: : fd(_fd), +13943: file_metadata(_file_metadata), +13943: smallest_key(_smallest_key), +13943: largest_key(_largest_key) {} +13943: }; +13943: +13943: +13943: +13943: struct LevelFilesBrief { +13943: size_t num_files; +13943: FdWithKeyRange* files; +13943: LevelFilesBrief() { +13943: num_files = 0; +13943: files = nullptr; +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: class VersionEdit { +13943: public: +13943: void Clear(); +13943: +13943: void SetDBId(const std::string& db_id) { +13943: has_db_id_ = true; +13943: db_id_ = db_id; +13943: } +13943: bool HasDbId() const { return has_db_id_; } +13943: const std::string& GetDbId() const { return db_id_; } +13943: +13943: void SetComparatorName(const Slice& name) { +13943: has_comparator_ = true; +13943: comparator_ = name.ToString(); +13943: } +13943: bool HasComparatorName() const { return has_comparator_; } +13943: const std::string& GetComparatorName() const { return comparator_; } +13943: +13943: void SetPersistUserDefinedTimestamps(bool persist_user_defined_timestamps) { +13943: has_persist_user_defined_timestamps_ = true; +13943: persist_user_defined_timestamps_ = persist_user_defined_timestamps; +13943: } +13943: bool HasPersistUserDefinedTimestamps() const { +13943: return has_persist_user_defined_timestamps_; +13943: } +13943: bool GetPersistUserDefinedTimestamps() const { +13943: return persist_user_defined_timestamps_; +13943: } +13943: +13943: void SetLogNumber(uint64_t num) { +13943: has_log_number_ = true; +13943: log_number_ = num; +13943: } +13943: bool HasLogNumber() const { return has_log_number_; } +13943: uint64_t GetLogNumber() const { return log_number_; } +13943: +13943: void SetPrevLogNumber(uint64_t num) { +13943: has_prev_log_number_ = true; +13943: prev_log_number_ = num; +13943: } +13943: bool HasPrevLogNumber() const { return has_prev_log_number_; } +13943: uint64_t GetPrevLogNumber() const { return prev_log_number_; } +13943: +13943: void SetNextFile(uint64_t num) { +13943: has_next_file_number_ = true; +13943: next_file_number_ = num; +13943: } +13943: bool HasNextFile() const { return has_next_file_number_; } +13943: uint64_t GetNextFile() const { return next_file_number_; } +13943: +13943: void SetMaxColumnFamily(uint32_t max_column_family) { +13943: has_max_column_family_ = true; +13943: max_column_family_ = max_column_family; +13943: } +13943: bool HasMaxColumnFamily() const { return has_max_column_family_; } +13943: uint32_t GetMaxColumnFamily() const { return max_column_family_; } +13943: +13943: void SetMinLogNumberToKeep(uint64_t num) { +13943: has_min_log_number_to_keep_ = true; +13943: min_log_number_to_keep_ = num; +13943: } +13943: bool HasMinLogNumberToKeep() const { return has_min_log_number_to_keep_; } +13943: uint64_t GetMinLogNumberToKeep() const { return min_log_number_to_keep_; } +13943: +13943: void SetLastSequence(SequenceNumber seq) { +13943: has_last_sequence_ = true; +13943: last_sequence_ = seq; +13943: } +13943: bool HasLastSequence() const { return has_last_sequence_; } +13943: SequenceNumber GetLastSequence() const { return last_sequence_; } +13943: +13943: +13943: void DeleteFile(int level, uint64_t file) { +13943: deleted_files_.emplace(level, file); +13943: } +13943: +13943: +13943: using DeletedFiles = std::set>; +13943: const DeletedFiles& GetDeletedFiles() const { return deleted_files_; } +13943: +13943: +13943: +13943: +13943: +13943: void AddFile(int level, uint64_t file, uint32_t file_path_id, +13943: uint64_t file_size, const InternalKey& smallest, +13943: const InternalKey& largest, const SequenceNumber& smallest_seqno, +13943: const SequenceNumber& largest_seqno, bool marked_for_compaction, +13943: Temperature temperature, uint64_t oldest_blob_file_number, +13943: uint64_t oldest_ancester_time, uint64_t file_creation_time, +13943: uint64_t epoch_number, const std::string& file_checksum, +13943: const std::string& file_checksum_func_name, +13943: const UniqueId64x2& unique_id, +13943: const uint64_t compensated_range_deletion_size, +13943: uint64_t tail_size, bool user_defined_timestamps_persisted) { +13943: +13943: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: smallest_seqno <= largest_seqno +13943: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "smallest_seqno <= largest_seqno" +13943: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: new_files_.emplace_back( +13943: level, +13943: FileMetaData(file, file_path_id, file_size, smallest, largest, +13943: smallest_seqno, largest_seqno, marked_for_compaction, +13943: temperature, oldest_blob_file_number, oldest_ancester_time, +13943: file_creation_time, epoch_number, file_checksum, +13943: file_checksum_func_name, unique_id, +13943: compensated_range_deletion_size, tail_size, +13943: user_defined_timestamps_persisted)); +13943: files_to_quarantine_.push_back(file); +13943: if (!HasLastSequence() || largest_seqno > GetLastSequence()) { +13943: SetLastSequence(largest_seqno); +13943: } +13943: } +13943: +13943: void AddFile(int level, const FileMetaData& f) { +13943: +13943: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: f.fd.smallest_seqno <= f.fd.largest_seqno +13943: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "f.fd.smallest_seqno <= f.fd.largest_seqno" +13943: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: new_files_.emplace_back(level, f); +13943: files_to_quarantine_.push_back(f.fd.GetNumber()); +13943: if (!HasLastSequence() || f.fd.largest_seqno > GetLastSequence()) { +13943: SetLastSequence(f.fd.largest_seqno); +13943: } +13943: } +13943: +13943: +13943: using NewFiles = std::vector>; +13943: const NewFiles& GetNewFiles() const { return new_files_; } +13943: +13943: NewFiles& GetMutableNewFiles() { return new_files_; } +13943: +13943: +13943: using CompactCursors = std::vector>; +13943: const CompactCursors& GetCompactCursors() const { return compact_cursors_; } +13943: void AddCompactCursor(int level, const InternalKey& cursor) { +13943: compact_cursors_.push_back(std::make_pair(level, cursor)); +13943: } +13943: void SetCompactCursors( +13943: const std::vector& compact_cursors_by_level) { +13943: compact_cursors_.clear(); +13943: compact_cursors_.reserve(compact_cursors_by_level.size()); +13943: for (int i = 0; i < (int)compact_cursors_by_level.size(); i++) { +13943: if (compact_cursors_by_level[i].Valid()) { +13943: compact_cursors_.push_back( +13943: std::make_pair(i, compact_cursors_by_level[i])); +13943: } +13943: } +13943: } +13943: +13943: +13943: void AddBlobFile(uint64_t blob_file_number, uint64_t total_blob_count, +13943: uint64_t total_blob_bytes, std::string checksum_method, +13943: std::string checksum_value) { +13943: blob_file_additions_.emplace_back( +13943: blob_file_number, total_blob_count, total_blob_bytes, +13943: std::move(checksum_method), std::move(checksum_value)); +13943: files_to_quarantine_.push_back(blob_file_number); +13943: } +13943: +13943: void AddBlobFile(BlobFileAddition blob_file_addition) { +13943: blob_file_additions_.emplace_back(std::move(blob_file_addition)); +13943: files_to_quarantine_.push_back( +13943: blob_file_additions_.back().GetBlobFileNumber()); +13943: } +13943: +13943: +13943: using BlobFileAdditions = std::vector; +13943: const BlobFileAdditions& GetBlobFileAdditions() const { +13943: return blob_file_additions_; +13943: } +13943: +13943: void SetBlobFileAdditions(BlobFileAdditions blob_file_additions) { +13943: +13943: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: blob_file_additions_.empty() +13943: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "blob_file_additions_.empty()" +13943: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: blob_file_additions_ = std::move(blob_file_additions); +13943: std::for_each( +13943: blob_file_additions_.begin(), blob_file_additions_.end(), +13943: [&](const BlobFileAddition& blob_file) { +13943: files_to_quarantine_.push_back(blob_file.GetBlobFileNumber()); +13943: }); +13943: } +13943: +13943: +13943: +13943: void AddBlobFileGarbage(uint64_t blob_file_number, +13943: uint64_t garbage_blob_count, +13943: uint64_t garbage_blob_bytes) { +13943: blob_file_garbages_.emplace_back(blob_file_number, garbage_blob_count, +13943: garbage_blob_bytes); +13943: } +13943: +13943: void AddBlobFileGarbage(BlobFileGarbage blob_file_garbage) { +13943: blob_file_garbages_.emplace_back(std::move(blob_file_garbage)); +13943: } +13943: +13943: +13943: using BlobFileGarbages = std::vector; +13943: const BlobFileGarbages& GetBlobFileGarbages() const { +13943: return blob_file_garbages_; +13943: } +13943: +13943: void SetBlobFileGarbages(BlobFileGarbages blob_file_garbages) { +13943: +13943: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: blob_file_garbages_.empty() +13943: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "blob_file_garbages_.empty()" +13943: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: blob_file_garbages_ = std::move(blob_file_garbages); +13943: } +13943: +13943: +13943: +13943: void AddWal(WalNumber number, WalMetadata metadata = WalMetadata()) { +13943: +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: NumEntries() == wal_additions_.size() +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "NumEntries() == wal_additions_.size()" +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: wal_additions_.emplace_back(number, std::move(metadata)); +13943: } +13943: +13943: +13943: const WalAdditions& GetWalAdditions() const { return wal_additions_; } +13943: +13943: bool IsWalAddition() const { return !wal_additions_.empty(); } +13943: +13943: +13943: +13943: void DeleteWalsBefore(WalNumber number) { +13943: +13943: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: (NumEntries() == 1) == !wal_deletion_.IsEmpty() +13943: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "(NumEntries() == 1) == !wal_deletion_.IsEmpty()" +13943: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: wal_deletion_ = WalDeletion(number); +13943: } +13943: +13943: const WalDeletion& GetWalDeletion() const { return wal_deletion_; } +13943: +13943: bool IsWalDeletion() const { return !wal_deletion_.IsEmpty(); } +13943: +13943: bool IsWalManipulation() const { +13943: size_t entries = NumEntries(); +13943: return (entries > 0) && ((entries == wal_additions_.size()) || +13943: (entries == !wal_deletion_.IsEmpty())); +13943: } +13943: +13943: +13943: size_t NumEntries() const { +13943: return new_files_.size() + deleted_files_.size() + +13943: blob_file_additions_.size() + blob_file_garbages_.size() + +13943: wal_additions_.size() + !wal_deletion_.IsEmpty(); +13943: } +13943: +13943: void SetColumnFamily(uint32_t column_family_id) { +13943: column_family_ = column_family_id; +13943: } +13943: uint32_t GetColumnFamily() const { return column_family_; } +13943: +13943: const std::string& GetColumnFamilyName() const { return column_family_name_; } +13943: +13943: +13943: void AddColumnFamily(const std::string& name) { +13943: +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: !is_column_family_drop_ +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "!is_column_family_drop_" +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: +13943: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: !is_column_family_add_ +13943: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "!is_column_family_add_" +13943: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: +13943: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: NumEntries() == 0 +13943: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "NumEntries() == 0" +13943: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: is_column_family_add_ = true; +13943: column_family_name_ = name; +13943: } +13943: +13943: +13943: void DropColumnFamily() { +13943: +13943: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: !is_column_family_drop_ +13943: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "!is_column_family_drop_" +13943: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: +13943: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: !is_column_family_add_ +13943: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "!is_column_family_add_" +13943: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: +13943: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: NumEntries() == 0 +13943: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "NumEntries() == 0" +13943: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: is_column_family_drop_ = true; +13943: } +13943: +13943: bool IsColumnFamilyManipulation() const { +13943: return is_column_family_add_ || is_column_family_drop_; +13943: } +13943: +13943: bool IsColumnFamilyAdd() const { return is_column_family_add_; } +13943: +13943: bool IsColumnFamilyDrop() const { return is_column_family_drop_; } +13943: +13943: void MarkAtomicGroup(uint32_t remaining_entries) { +13943: is_in_atomic_group_ = true; +13943: remaining_entries_ = remaining_entries; +13943: } +13943: bool IsInAtomicGroup() const { return is_in_atomic_group_; } +13943: void SetRemainingEntries(uint32_t remaining_entries) { +13943: remaining_entries_ = remaining_entries; +13943: } +13943: uint32_t GetRemainingEntries() const { return remaining_entries_; } +13943: +13943: bool HasFullHistoryTsLow() const { return !full_history_ts_low_.empty(); } +13943: const std::string& GetFullHistoryTsLow() const { +13943: +13943: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: HasFullHistoryTsLow() +13943: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "HasFullHistoryTsLow()" +13943: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: return full_history_ts_low_; +13943: } +13943: void SetFullHistoryTsLow(std::string full_history_ts_low) { +13943: +13943: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: (static_cast ( +13943: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: !full_history_ts_low.empty() +13943: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: "!full_history_ts_low.empty()" +13943: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: ; +13943: full_history_ts_low_ = std::move(full_history_ts_low); +13943: } +13943: # 718 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: bool EncodeTo(std::string* dst, +13943: std::optional ts_sz = std::nullopt) const; +13943: Status DecodeFrom(const Slice& src); +13943: +13943: const autovector* GetFilesToQuarantineIfCommitFail() const { +13943: return &files_to_quarantine_; +13943: } +13943: +13943: std::string DebugString(bool hex_key = false) const; +13943: std::string DebugJSON(int edit_num, bool hex_key = false) const; +13943: +13943: private: +13943: bool GetLevel(Slice* input, int* level, const char** msg); +13943: +13943: const char* DecodeNewFile4From(Slice* input); +13943: +13943: +13943: +13943: +13943: void EncodeFileBoundaries(std::string* dst, const FileMetaData& meta, +13943: size_t ts_sz) const; +13943: +13943: int max_level_ = 0; +13943: std::string db_id_; +13943: std::string comparator_; +13943: uint64_t log_number_ = 0; +13943: uint64_t prev_log_number_ = 0; +13943: uint64_t next_file_number_ = 0; +13943: uint32_t max_column_family_ = 0; +13943: +13943: uint64_t min_log_number_to_keep_ = 0; +13943: SequenceNumber last_sequence_ = 0; +13943: bool has_db_id_ = false; +13943: bool has_comparator_ = false; +13943: bool has_log_number_ = false; +13943: bool has_prev_log_number_ = false; +13943: bool has_next_file_number_ = false; +13943: bool has_max_column_family_ = false; +13943: bool has_min_log_number_to_keep_ = false; +13943: bool has_last_sequence_ = false; +13943: bool has_persist_user_defined_timestamps_ = false; +13943: +13943: +13943: CompactCursors compact_cursors_; +13943: +13943: DeletedFiles deleted_files_; +13943: NewFiles new_files_; +13943: +13943: BlobFileAdditions blob_file_additions_; +13943: BlobFileGarbages blob_file_garbages_; +13943: +13943: WalAdditions wal_additions_; +13943: WalDeletion wal_deletion_; +13943: +13943: +13943: +13943: uint32_t column_family_ = 0; +13943: +13943: +13943: +13943: bool is_column_family_drop_ = false; +13943: bool is_column_family_add_ = false; +13943: std::string column_family_name_; +13943: +13943: bool is_in_atomic_group_ = false; +13943: uint32_t remaining_entries_ = 0; +13943: +13943: std::string full_history_ts_low_; +13943: bool persist_user_defined_timestamps_ = true; +13943: # 796 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +13943: autovector files_to_quarantine_; +13943: }; +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" +13943: +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/cinttypes" 1 3 +13943: # 32 "/usr/include/c++/14/cinttypes" 3 +13943: +13943: # 33 "/usr/include/c++/14/cinttypes" 3 +13943: # 46 "/usr/include/c++/14/cinttypes" 3 +13943: # 1 "/usr/include/inttypes.h" 1 3 4 +13943: # 327 "/usr/include/inttypes.h" 3 4 +13943: +13943: # 327 "/usr/include/inttypes.h" 3 4 +13943: extern "C" { +13943: # 341 "/usr/include/inttypes.h" 3 4 +13943: typedef struct +13943: { +13943: __extension__ long long int quot; +13943: __extension__ long long int rem; +13943: } imaxdiv_t; +13943: +13943: +13943: +13943: +13943: +13943: extern intmax_t imaxabs (intmax_t __n) noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) +13943: noexcept (true) __attribute__ ((__const__)); +13943: +13943: +13943: extern intmax_t strtoimax (const char *__restrict __nptr, +13943: char **__restrict __endptr, int __base) noexcept (true); +13943: +13943: +13943: extern uintmax_t strtoumax (const char *__restrict __nptr, +13943: char ** __restrict __endptr, int __base) noexcept (true); +13943: +13943: +13943: extern intmax_t wcstoimax (const wchar_t *__restrict __nptr, +13943: wchar_t **__restrict __endptr, int __base) +13943: noexcept (true); +13943: +13943: +13943: extern uintmax_t wcstoumax (const wchar_t *__restrict __nptr, +13943: wchar_t ** __restrict __endptr, int __base) +13943: noexcept (true); +13943: +13943: +13943: +13943: +13943: +13943: extern intmax_t strtoimax (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoimax") +13943: +13943: ; +13943: extern uintmax_t strtoumax (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoumax") +13943: +13943: ; +13943: extern intmax_t wcstoimax (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoimax") +13943: +13943: +13943: ; +13943: extern uintmax_t wcstoumax (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoumax") +13943: +13943: +13943: ; +13943: # 415 "/usr/include/inttypes.h" 3 4 +13943: } +13943: # 47 "/usr/include/c++/14/cinttypes" 2 3 +13943: # 55 "/usr/include/c++/14/cinttypes" 3 +13943: namespace std +13943: { +13943: +13943: using ::imaxdiv_t; +13943: +13943: +13943: using ::imaxabs; +13943: using ::imaxdiv; +13943: +13943: +13943: +13943: +13943: +13943: using ::strtoimax; +13943: using ::strtoumax; +13943: +13943: +13943: using ::wcstoimax; +13943: using ::wcstoumax; +13943: +13943: } +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 2 +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: namespace rocksdb { +13943: +13943: constexpr uint64_t kUnknownTimeBeforeAll = 0; +13943: constexpr SequenceNumber kUnknownSeqnoBeforeAll = 0; +13943: +13943: +13943: +13943: constexpr uint64_t kMaxSeqnoTimePairsPerSST = 100; +13943: # 38 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: constexpr uint64_t kMaxSeqnoTimePairsPerCF = 100; +13943: +13943: constexpr uint64_t kMaxSeqnoToTimeEntries = kMaxSeqnoTimePairsPerCF * 10; +13943: # 68 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: class SeqnoToTimeMapping { +13943: public: +13943: +13943: struct SeqnoTimePair { +13943: SequenceNumber seqno = 0; +13943: uint64_t time = 0; +13943: +13943: SeqnoTimePair() = default; +13943: SeqnoTimePair(SequenceNumber _seqno, uint64_t _time) +13943: : seqno(_seqno), time(_time) {} +13943: +13943: +13943: void Encode(std::string& dest) const; +13943: +13943: +13943: Status Decode(Slice& input); +13943: +13943: +13943: SeqnoTimePair ComputeDelta(const SeqnoTimePair& base) const { +13943: return {seqno - base.seqno, time - base.time}; +13943: } +13943: +13943: +13943: void ApplyDelta(const SeqnoTimePair& delta_or_base) { +13943: seqno += delta_or_base.seqno; +13943: time += delta_or_base.time; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: bool Merge(const SeqnoTimePair& other); +13943: +13943: +13943: bool operator<(const SeqnoTimePair& other) const { +13943: return std::tie(seqno, time) < std::tie(other.seqno, other.time); +13943: } +13943: +13943: bool operator==(const SeqnoTimePair& other) const { +13943: return std::tie(seqno, time) == std::tie(other.seqno, other.time); +13943: } +13943: +13943: static bool SeqnoLess(const SeqnoTimePair& a, const SeqnoTimePair& b) { +13943: return a.seqno < b.seqno; +13943: } +13943: +13943: static bool TimeLess(const SeqnoTimePair& a, const SeqnoTimePair& b) { +13943: return a.time < b.time; +13943: } +13943: }; +13943: +13943: +13943: SeqnoToTimeMapping() {} +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: SeqnoToTimeMapping& SetMaxTimeSpan(uint64_t max_time_span); +13943: +13943: +13943: +13943: +13943: +13943: SeqnoToTimeMapping& SetCapacity(uint64_t capacity); +13943: +13943: +13943: +13943: +13943: +13943: bool PrePopulate(SequenceNumber from_seqno, SequenceNumber to_seqno, +13943: uint64_t from_time, uint64_t to_time); +13943: +13943: +13943: +13943: +13943: +13943: +13943: bool Append(SequenceNumber seqno, uint64_t time); +13943: +13943: +13943: +13943: void Clear() { +13943: pairs_.clear(); +13943: enforced_ = true; +13943: } +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: SeqnoToTimeMapping& Enforce(uint64_t now = 0); +13943: +13943: +13943: +13943: +13943: void AddUnenforced(SequenceNumber seqno, uint64_t time); +13943: +13943: +13943: +13943: +13943: Status DecodeFrom(const std::string& pairs_str); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void CopyFromSeqnoRange(const SeqnoToTimeMapping& src, +13943: SequenceNumber from_seqno, +13943: SequenceNumber to_seqno = kMaxSequenceNumber); +13943: void CopyFrom(const SeqnoToTimeMapping& src) { +13943: CopyFromSeqnoRange(src, kUnknownSeqnoBeforeAll, kMaxSequenceNumber); +13943: } +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: uint64_t GetProximalTimeBeforeSeqno(SequenceNumber seqno) const; +13943: # 214 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: SequenceNumber GetProximalSeqnoBeforeTime(uint64_t time) const; +13943: +13943: +13943: +13943: +13943: void GetCurrentTieringCutoffSeqnos( +13943: uint64_t current_time, uint64_t preserve_internal_time_seconds, +13943: uint64_t preclude_last_level_data_seconds, +13943: SequenceNumber* preserve_time_min_seqno, +13943: SequenceNumber* preclude_last_level_min_seqno) const; +13943: +13943: +13943: +13943: +13943: void EncodeTo(std::string& dest) const; +13943: +13943: +13943: size_t Size() const { return pairs_.size(); } +13943: +13943: uint64_t GetCapacity() const { return capacity_; } +13943: +13943: +13943: bool Empty() const { return pairs_.empty(); } +13943: +13943: +13943: +13943: std::string ToHumanString() const; +13943: +13943: +13943: const SeqnoTimePair& TEST_GetLastEntry() const { return pairs_.back(); } +13943: const std::deque& TEST_GetInternalMapping() const { +13943: return pairs_; +13943: } +13943: bool TEST_IsEnforced() const { return enforced_; } +13943: +13943: +13943: private: +13943: uint64_t max_time_span_ = +13943: # 251 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 3 4 +13943: (18446744073709551615ULL) +13943: # 251 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: ; +13943: uint64_t capacity_ = +13943: # 252 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 3 4 +13943: (18446744073709551615ULL) +13943: # 252 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: ; +13943: +13943: std::deque pairs_; +13943: # 264 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +13943: bool enforced_ = true; +13943: +13943: void EnforceMaxTimeSpan(uint64_t now = 0); +13943: void EnforceCapacity(bool strict); +13943: void SortAndMerge(); +13943: +13943: using pair_const_iterator = +13943: std::deque::const_iterator; +13943: pair_const_iterator FindGreaterTime(uint64_t time) const; +13943: pair_const_iterator FindGreaterSeqno(SequenceNumber seqno) const; +13943: pair_const_iterator FindGreaterEqSeqno(SequenceNumber seqno) const; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: Slice PackValueAndWriteTime(const Slice& value, uint64_t unix_write_time, +13943: std::string* buf); +13943: +13943: +13943: +13943: Slice PackValueAndSeqno(const Slice& value, SequenceNumber seqno, +13943: std::string* buf); +13943: +13943: +13943: uint64_t ParsePackedValueForWriteTime(const Slice& value); +13943: +13943: +13943: +13943: std::tuple ParsePackedValueWithWriteTime(const Slice& value); +13943: +13943: +13943: SequenceNumber ParsePackedValueForSeqno(const Slice& value); +13943: +13943: +13943: +13943: std::tuple ParsePackedValueWithSeqno(const Slice& value); +13943: +13943: +13943: +13943: Slice ParsePackedValueForValue(const Slice& value); +13943: +13943: } +13943: # 20 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +13943: namespace rocksdb { +13943: +13943: +13943: class InternalTblPropColl { +13943: public: +13943: virtual ~InternalTblPropColl() {} +13943: virtual Status Finish(UserCollectedProperties* properties) = 0; +13943: +13943: virtual const char* Name() const = 0; +13943: +13943: +13943: +13943: virtual Status InternalAdd(const Slice& key, const Slice& value, +13943: uint64_t file_size) = 0; +13943: +13943: virtual void BlockAdd(uint64_t block_uncomp_bytes, +13943: uint64_t block_compressed_bytes_fast, +13943: uint64_t block_compressed_bytes_slow) = 0; +13943: +13943: virtual UserCollectedProperties GetReadableProperties() const = 0; +13943: +13943: virtual bool NeedCompact() const { return false; } +13943: }; +13943: +13943: +13943: class InternalTblPropCollFactory { +13943: public: +13943: virtual ~InternalTblPropCollFactory() {} +13943: +13943: virtual InternalTblPropColl* CreateInternalTblPropColl( +13943: uint32_t column_family_id, int level_at_creation, int num_levels, +13943: SequenceNumber last_level_inclusive_max_seqno_threshold = +13943: kMaxSequenceNumber) = 0; +13943: +13943: +13943: virtual const char* Name() const = 0; +13943: }; +13943: +13943: using InternalTblPropCollFactories = +13943: std::vector>; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class UserKeyTablePropertiesCollector : public InternalTblPropColl { +13943: public: +13943: +13943: explicit UserKeyTablePropertiesCollector(TablePropertiesCollector* collector) +13943: : collector_(collector) {} +13943: +13943: virtual ~UserKeyTablePropertiesCollector() {} +13943: +13943: Status InternalAdd(const Slice& key, const Slice& value, +13943: uint64_t file_size) override; +13943: +13943: void BlockAdd(uint64_t block_uncomp_bytes, +13943: uint64_t block_compressed_bytes_fast, +13943: uint64_t block_compressed_bytes_slow) override; +13943: +13943: Status Finish(UserCollectedProperties* properties) override; +13943: +13943: const char* Name() const override { return collector_->Name(); } +13943: +13943: UserCollectedProperties GetReadableProperties() const override; +13943: +13943: bool NeedCompact() const override { return collector_->NeedCompact(); } +13943: +13943: protected: +13943: std::unique_ptr collector_; +13943: }; +13943: +13943: class UserKeyTablePropertiesCollectorFactory +13943: : public InternalTblPropCollFactory { +13943: public: +13943: explicit UserKeyTablePropertiesCollectorFactory( +13943: std::shared_ptr user_collector_factory) +13943: : user_collector_factory_(user_collector_factory) {} +13943: InternalTblPropColl* CreateInternalTblPropColl( +13943: uint32_t column_family_id, int level_at_creation, int num_levels, +13943: SequenceNumber last_level_inclusive_max_seqno_threshold = +13943: kMaxSequenceNumber) override { +13943: TablePropertiesCollectorFactory::Context context; +13943: context.column_family_id = column_family_id; +13943: context.level_at_creation = level_at_creation; +13943: context.num_levels = num_levels; +13943: context.last_level_inclusive_max_seqno_threshold = +13943: last_level_inclusive_max_seqno_threshold; +13943: TablePropertiesCollector* collector = +13943: user_collector_factory_->CreateTablePropertiesCollector(context); +13943: if (collector) { +13943: return new UserKeyTablePropertiesCollector(collector); +13943: } else { +13943: return nullptr; +13943: } +13943: } +13943: +13943: const char* Name() const override { return user_collector_factory_->Name(); } +13943: +13943: private: +13943: std::shared_ptr user_collector_factory_; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: class TimestampTablePropertiesCollector : public InternalTblPropColl { +13943: public: +13943: explicit TimestampTablePropertiesCollector(const Comparator* cmp) +13943: : cmp_(cmp), +13943: timestamp_min_(kDisableUserTimestamp), +13943: timestamp_max_(kDisableUserTimestamp) {} +13943: +13943: Status InternalAdd(const Slice& key, const Slice& , +13943: uint64_t ) override { +13943: auto user_key = ExtractUserKey(key); +13943: +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +13943: (static_cast ( +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +13943: cmp_ && cmp_->timestamp_size() > 0 +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +13943: "cmp_ && cmp_->timestamp_size() > 0" +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +13943: ; +13943: if (user_key.size() < cmp_->timestamp_size()) { +13943: return Status::Corruption( +13943: "User key size mismatch when comparing to timestamp size."); +13943: } +13943: auto timestamp_in_key = +13943: ExtractTimestampFromUserKey(user_key, cmp_->timestamp_size()); +13943: if (timestamp_max_ == kDisableUserTimestamp || +13943: cmp_->CompareTimestamp(timestamp_in_key, timestamp_max_) > 0) { +13943: timestamp_max_.assign(timestamp_in_key.data(), timestamp_in_key.size()); +13943: } +13943: if (timestamp_min_ == kDisableUserTimestamp || +13943: cmp_->CompareTimestamp(timestamp_min_, timestamp_in_key) > 0) { +13943: timestamp_min_.assign(timestamp_in_key.data(), timestamp_in_key.size()); +13943: } +13943: return Status::OK(); +13943: } +13943: +13943: void BlockAdd(uint64_t , +13943: uint64_t , +13943: uint64_t ) override { +13943: return; +13943: } +13943: +13943: Status Finish(UserCollectedProperties* properties) override { +13943: +13943: +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +13943: (static_cast ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +13943: timestamp_min_.size() == timestamp_max_.size() && (timestamp_min_.empty() || timestamp_max_.size() == cmp_->timestamp_size()) +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +13943: "timestamp_min_.size() == timestamp_max_.size() && (timestamp_min_.empty() || timestamp_max_.size() == cmp_->timestamp_size())" +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: +13943: +13943: # 164 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +13943: ; +13943: properties->insert({"rocksdb.timestamp_min", timestamp_min_}); +13943: properties->insert({"rocksdb.timestamp_max", timestamp_max_}); +13943: return Status::OK(); +13943: } +13943: +13943: const char* Name() const override { +13943: return "TimestampTablePropertiesCollector"; +13943: } +13943: +13943: UserCollectedProperties GetReadableProperties() const override { +13943: return {{"rocksdb.timestamp_min", Slice(timestamp_min_).ToString(true)}, +13943: {"rocksdb.timestamp_max", Slice(timestamp_max_).ToString(true)}}; +13943: } +13943: +13943: protected: +13943: const Comparator* const cmp_; +13943: std::string timestamp_min_; +13943: std::string timestamp_max_; +13943: }; +13943: +13943: } +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" 1 +13943: # 29 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +13943: +13943: # 42 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" 1 +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: struct OperationInfo { +13943: const ThreadStatus::OperationType type; +13943: const std::string name; +13943: }; +13943: # 38 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" +13943: static OperationInfo global_operation_table[] = { +13943: {ThreadStatus::OP_UNKNOWN, ""}, +13943: {ThreadStatus::OP_COMPACTION, "Compaction"}, +13943: {ThreadStatus::OP_FLUSH, "Flush"}, +13943: {ThreadStatus::OP_DBOPEN, "DBOpen"}, +13943: {ThreadStatus::OP_GET, "Get"}, +13943: {ThreadStatus::OP_MULTIGET, "MultiGet"}, +13943: {ThreadStatus::OP_DBITERATOR, "DBIterator"}, +13943: {ThreadStatus::OP_VERIFY_DB_CHECKSUM, "VerifyDBChecksum"}, +13943: {ThreadStatus::OP_VERIFY_FILE_CHECKSUMS, "VerifyFileChecksums"}, +13943: {ThreadStatus::OP_GETENTITY, "GetEntity"}, +13943: {ThreadStatus::OP_MULTIGETENTITY, "MultiGetEntity"}, +13943: {ThreadStatus::OP_READ_MANIFEST, "ReadManifest"}, +13943: +13943: }; +13943: +13943: struct OperationStageInfo { +13943: const ThreadStatus::OperationStage stage; +13943: const std::string name; +13943: }; +13943: +13943: +13943: +13943: +13943: static OperationStageInfo global_op_stage_table[] = { +13943: {ThreadStatus::STAGE_UNKNOWN, ""}, +13943: {ThreadStatus::STAGE_FLUSH_RUN, "FlushJob::Run"}, +13943: {ThreadStatus::STAGE_FLUSH_WRITE_L0, "FlushJob::WriteLevel0Table"}, +13943: {ThreadStatus::STAGE_COMPACTION_PREPARE, "CompactionJob::Prepare"}, +13943: {ThreadStatus::STAGE_COMPACTION_RUN, "CompactionJob::Run"}, +13943: {ThreadStatus::STAGE_COMPACTION_PROCESS_KV, +13943: "CompactionJob::ProcessKeyValueCompaction"}, +13943: {ThreadStatus::STAGE_COMPACTION_INSTALL, "CompactionJob::Install"}, +13943: {ThreadStatus::STAGE_COMPACTION_SYNC_FILE, +13943: "CompactionJob::FinishCompactionOutputFile"}, +13943: {ThreadStatus::STAGE_PICK_MEMTABLES_TO_FLUSH, +13943: "MemTableList::PickMemtablesToFlush"}, +13943: {ThreadStatus::STAGE_MEMTABLE_ROLLBACK, +13943: "MemTableList::RollbackMemtableFlush"}, +13943: {ThreadStatus::STAGE_MEMTABLE_INSTALL_FLUSH_RESULTS, +13943: "MemTableList::TryInstallMemtableFlushResults"}, +13943: }; +13943: +13943: +13943: struct StateInfo { +13943: const ThreadStatus::StateType type; +13943: const std::string name; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: static StateInfo global_state_table[] = { +13943: {ThreadStatus::STATE_UNKNOWN, ""}, +13943: {ThreadStatus::STATE_MUTEX_WAIT, "Mutex Wait"}, +13943: }; +13943: +13943: struct OperationProperty { +13943: int code; +13943: std::string name; +13943: }; +13943: +13943: static OperationProperty compaction_operation_properties[] = { +13943: {ThreadStatus::COMPACTION_JOB_ID, "JobID"}, +13943: {ThreadStatus::COMPACTION_INPUT_OUTPUT_LEVEL, "InputOutputLevel"}, +13943: {ThreadStatus::COMPACTION_PROP_FLAGS, "Manual/Deletion/Trivial"}, +13943: {ThreadStatus::COMPACTION_TOTAL_INPUT_BYTES, "TotalInputBytes"}, +13943: {ThreadStatus::COMPACTION_BYTES_READ, "BytesRead"}, +13943: {ThreadStatus::COMPACTION_BYTES_WRITTEN, "BytesWritten"}, +13943: }; +13943: +13943: static OperationProperty flush_operation_properties[] = { +13943: {ThreadStatus::FLUSH_JOB_ID, "JobID"}, +13943: {ThreadStatus::FLUSH_BYTES_MEMTABLES, "BytesMemtables"}, +13943: {ThreadStatus::FLUSH_BYTES_WRITTEN, "BytesWritten"}}; +13943: # 123 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" +13943: } +13943: # 43 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class ColumnFamilyHandle; +13943: +13943: +13943: struct ConstantColumnFamilyInfo { +13943: +13943: public: +13943: ConstantColumnFamilyInfo(const void* _db_key, const std::string& _db_name, +13943: const std::string& _cf_name) +13943: : db_key(_db_key), db_name(_db_name), cf_name(_cf_name) {} +13943: const void* db_key; +13943: const std::string db_name; +13943: const std::string cf_name; +13943: +13943: }; +13943: +13943: +13943: +13943: struct ThreadStatusData { +13943: +13943: explicit ThreadStatusData() { +13943: enable_tracking.store(false); +13943: thread_id.store(0); +13943: thread_type.store(ThreadStatus::USER); +13943: cf_key.store(nullptr); +13943: operation_type.store(ThreadStatus::OP_UNKNOWN); +13943: op_start_time.store(0); +13943: state_type.store(ThreadStatus::STATE_UNKNOWN); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: std::atomic enable_tracking; +13943: +13943: std::atomic thread_id; +13943: std::atomic thread_type; +13943: std::atomic cf_key; +13943: std::atomic operation_type; +13943: std::atomic op_start_time; +13943: std::atomic operation_stage; +13943: std::atomic op_properties[ThreadStatus::kNumOperationProperties]; +13943: std::atomic state_type; +13943: +13943: }; +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +13943: class ThreadStatusUpdater { +13943: public: +13943: ThreadStatusUpdater() {} +13943: +13943: +13943: virtual ~ThreadStatusUpdater() {} +13943: +13943: +13943: void UnregisterThread(); +13943: +13943: +13943: +13943: void ResetThreadStatus(); +13943: +13943: +13943: void SetThreadID(uint64_t thread_id); +13943: +13943: +13943: void RegisterThread(ThreadStatus::ThreadType ttype, uint64_t thread_id); +13943: +13943: void SetEnableTracking(bool enable_tracking); +13943: +13943: +13943: +13943: void SetColumnFamilyInfoKey(const void* cf_key); +13943: +13943: +13943: const void* GetColumnFamilyInfoKey(); +13943: +13943: +13943: void SetThreadOperation(const ThreadStatus::OperationType type); +13943: +13943: +13943: ThreadStatus::OperationType GetThreadOperation(); +13943: +13943: +13943: +13943: void SetOperationStartTime(const uint64_t start_time); +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +13943: void SetThreadOperationProperty(int i, uint64_t value); +13943: +13943: +13943: +13943: void IncreaseThreadOperationProperty(int i, uint64_t delta); +13943: +13943: +13943: ThreadStatus::OperationStage SetThreadOperationStage( +13943: const ThreadStatus::OperationStage stage); +13943: +13943: +13943: void ClearThreadOperation(); +13943: +13943: +13943: void ClearThreadOperationProperties(); +13943: +13943: +13943: void SetThreadState(const ThreadStatus::StateType type); +13943: +13943: +13943: void ClearThreadState(); +13943: +13943: +13943: Status GetThreadList(std::vector* thread_list); +13943: +13943: +13943: +13943: +13943: void NewColumnFamilyInfo(const void* db_key, const std::string& db_name, +13943: const void* cf_key, const std::string& cf_name); +13943: +13943: +13943: +13943: +13943: void EraseDatabaseInfo(const void* db_key); +13943: +13943: +13943: +13943: +13943: void EraseColumnFamilyInfo(const void* cf_key); +13943: +13943: +13943: +13943: void TEST_VerifyColumnFamilyInfoMap( +13943: const std::vector& handles, bool check_exist); +13943: +13943: protected: +13943: +13943: +13943: static thread_local ThreadStatusData* thread_status_data_; +13943: +13943: +13943: +13943: ThreadStatusData* GetLocalThreadStatus(); +13943: +13943: +13943: +13943: ThreadStatusData* Get() { return thread_status_data_; } +13943: +13943: +13943: std::mutex thread_list_mutex_; +13943: +13943: +13943: std::unordered_set thread_data_set_; +13943: +13943: +13943: +13943: +13943: +13943: std::unordered_map cf_info_map_; +13943: +13943: +13943: +13943: std::unordered_map> db_key_map_; +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: } +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" 2 +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class ColumnFamilyData; +13943: # 30 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" +13943: class ThreadStatusUtil { +13943: public: +13943: +13943: static void RegisterThread(const Env* env, +13943: ThreadStatus::ThreadType thread_type); +13943: +13943: +13943: static void UnregisterThread(); +13943: +13943: +13943: +13943: +13943: static void NewColumnFamilyInfo(const DB* db, const ColumnFamilyData* cfd, +13943: const std::string& cf_name, const Env* env); +13943: +13943: +13943: +13943: +13943: static void EraseColumnFamilyInfo(const ColumnFamilyData* cfd); +13943: +13943: +13943: +13943: +13943: static void EraseDatabaseInfo(const DB* db); +13943: +13943: static void SetEnableTracking(bool enable_tracking); +13943: +13943: +13943: +13943: +13943: +13943: static void SetColumnFamily(const ColumnFamilyData* cfd); +13943: +13943: static void SetThreadOperation(ThreadStatus::OperationType type); +13943: +13943: static ThreadStatus::OperationType GetThreadOperation(); +13943: +13943: static ThreadStatus::OperationStage SetThreadOperationStage( +13943: ThreadStatus::OperationStage stage); +13943: +13943: static void SetThreadOperationProperty(int code, uint64_t value); +13943: +13943: static void IncreaseThreadOperationProperty(int code, uint64_t delta); +13943: +13943: static void SetThreadState(ThreadStatus::StateType type); +13943: +13943: static void ResetThreadStatus(); +13943: +13943: +13943: static void TEST_SetStateDelay(const ThreadStatus::StateType state, +13943: int micro); +13943: static void TEST_StateDelay(const ThreadStatus::StateType state); +13943: +13943: static Env::IOActivity TEST_GetExpectedIOActivity( +13943: ThreadStatus::OperationType thread_op); +13943: +13943: +13943: protected: +13943: +13943: +13943: +13943: static bool MaybeInitThreadLocalUpdater(const Env* env); +13943: # 103 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" +13943: static thread_local bool thread_updater_initialized_; +13943: # 118 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" +13943: static thread_local ThreadStatusUpdater* thread_updater_local_cache_; +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: +13943: +13943: +13943: class AutoThreadOperationStageUpdater { +13943: public: +13943: explicit AutoThreadOperationStageUpdater(ThreadStatus::OperationStage stage); +13943: ~AutoThreadOperationStageUpdater(); +13943: +13943: +13943: private: +13943: ThreadStatus::OperationStage prev_stage_; +13943: +13943: }; +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 2 +13943: # 26 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 1 +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +13943: +13943: # 21 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +13943: namespace rocksdb { +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +13943: using UnrefHandler = void (*)(void* ptr); +13943: # 44 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +13943: class ThreadLocalPtr { +13943: public: +13943: explicit ThreadLocalPtr(UnrefHandler handler = nullptr); +13943: +13943: ThreadLocalPtr(const ThreadLocalPtr&) = delete; +13943: ThreadLocalPtr& operator=(const ThreadLocalPtr&) = delete; +13943: +13943: ~ThreadLocalPtr(); +13943: +13943: +13943: void* Get() const; +13943: +13943: +13943: void Reset(void* ptr); +13943: +13943: +13943: void* Swap(void* ptr); +13943: +13943: +13943: +13943: +13943: +13943: bool CompareAndSwap(void* ptr, void*& expected); +13943: +13943: +13943: +13943: void Scrape(autovector* ptrs, void* const replacement); +13943: +13943: using FoldFunc = std::function; +13943: +13943: +13943: +13943: +13943: void Fold(FoldFunc func, void* res); +13943: +13943: +13943: +13943: static uint32_t TEST_PeekId(); +13943: # 90 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +13943: static void InitSingletons(); +13943: +13943: class StaticMeta; +13943: +13943: private: +13943: static StaticMeta* Instance(); +13943: +13943: const uint32_t id_; +13943: }; +13943: +13943: } +13943: # 29 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class TestFSWritableFile; +13943: class FaultInjectionTestFS; +13943: +13943: enum class FaultInjectionIOType { +13943: kRead = 0, +13943: kWrite, +13943: kMetadataRead, +13943: kMetadataWrite, +13943: }; +13943: +13943: struct FSFileState { +13943: std::string filename_; +13943: uint64_t pos_at_last_append_ = 0; +13943: uint64_t pos_at_last_sync_ = 0; +13943: std::string buffer_; +13943: +13943: explicit FSFileState(const std::string& filename = {}) +13943: : filename_(filename) {} +13943: +13943: bool IsFullySynced() const { +13943: return pos_at_last_append_ == pos_at_last_sync_; +13943: } +13943: +13943: IOStatus DropUnsyncedData(); +13943: +13943: IOStatus DropRandomUnsyncedData(Random* rand); +13943: }; +13943: +13943: +13943: +13943: class TestFSWritableFile : public FSWritableFile { +13943: public: +13943: explicit TestFSWritableFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr&& f, +13943: FaultInjectionTestFS* fs); +13943: virtual ~TestFSWritableFile(); +13943: IOStatus Append(const Slice& data, const IOOptions&, +13943: IODebugContext*) override; +13943: IOStatus Append(const Slice& data, const IOOptions& options, +13943: const DataVerificationInfo& verification_info, +13943: IODebugContext* dbg) override; +13943: IOStatus Truncate(uint64_t size, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +13943: IOStatus Flush(const IOOptions&, IODebugContext*) override; +13943: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override; +13943: IOStatus RangeSync(uint64_t , uint64_t , +13943: const IOOptions& options, IODebugContext* dbg) override; +13943: bool IsSyncThreadSafe() const override { return true; } +13943: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +13943: const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +13943: const IOOptions& options, +13943: const DataVerificationInfo& verification_info, +13943: IODebugContext* dbg) override; +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: +13943: uint64_t GetFileSize(const IOOptions& options, IODebugContext* dbg) override { +13943: MutexLock l(&mutex_); +13943: return target_->GetFileSize(options, dbg); +13943: } +13943: +13943: private: +13943: FSFileState state_; +13943: FileOptions file_opts_; +13943: std::unique_ptr target_; +13943: bool writable_file_opened_; +13943: FaultInjectionTestFS* fs_; +13943: port::Mutex mutex_; +13943: const bool unsync_data_loss_; +13943: }; +13943: +13943: +13943: +13943: class TestFSRandomRWFile : public FSRandomRWFile { +13943: public: +13943: explicit TestFSRandomRWFile(const std::string& fname, +13943: std::unique_ptr&& f, +13943: FaultInjectionTestFS* fs); +13943: virtual ~TestFSRandomRWFile(); +13943: IOStatus Write(uint64_t offset, const Slice& data, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const override; +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +13943: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override; +13943: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override; +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: +13943: private: +13943: std::unique_ptr target_; +13943: bool file_opened_; +13943: FaultInjectionTestFS* fs_; +13943: }; +13943: +13943: class TestFSRandomAccessFile : public FSRandomAccessFile { +13943: public: +13943: explicit TestFSRandomAccessFile(const std::string& fname, +13943: std::unique_ptr&& f, +13943: FaultInjectionTestFS* fs); +13943: ~TestFSRandomAccessFile() override {} +13943: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) const override; +13943: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +13943: std::function cb, +13943: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +13943: IODebugContext* dbg) override; +13943: IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +13943: const IOOptions& options, IODebugContext* dbg) override; +13943: size_t GetRequiredBufferAlignment() const override { +13943: return target_->GetRequiredBufferAlignment(); +13943: } +13943: bool use_direct_io() const override { return target_->use_direct_io(); } +13943: +13943: size_t GetUniqueId(char* id, size_t max_size) const override; +13943: +13943: private: +13943: std::unique_ptr target_; +13943: FaultInjectionTestFS* fs_; +13943: }; +13943: +13943: class TestFSSequentialFile : public FSSequentialFileOwnerWrapper { +13943: public: +13943: explicit TestFSSequentialFile(std::unique_ptr&& f, +13943: FaultInjectionTestFS* fs, std::string fname) +13943: : FSSequentialFileOwnerWrapper(std::move(f)), +13943: fs_(fs), +13943: fname_(std::move(fname)) {} +13943: IOStatus Read(size_t n, const IOOptions& options, Slice* result, +13943: char* scratch, IODebugContext* dbg) override; +13943: IOStatus PositionedRead(uint64_t offset, size_t n, const IOOptions& options, +13943: Slice* result, char* scratch, +13943: IODebugContext* dbg) override; +13943: +13943: private: +13943: FaultInjectionTestFS* fs_; +13943: std::string fname_; +13943: uint64_t read_pos_ = 0; +13943: uint64_t target_read_pos_ = 0; +13943: }; +13943: +13943: class TestFSDirectory : public FSDirectory { +13943: public: +13943: explicit TestFSDirectory(FaultInjectionTestFS* fs, std::string dirname, +13943: FSDirectory* dir) +13943: : fs_(fs), dirname_(std::move(dirname)), dir_(dir) {} +13943: ~TestFSDirectory() {} +13943: +13943: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus FsyncWithDirOptions( +13943: const IOOptions& options, IODebugContext* dbg, +13943: const DirFsyncOptions& dir_fsync_options) override; +13943: +13943: private: +13943: FaultInjectionTestFS* fs_; +13943: std::string dirname_; +13943: std::unique_ptr dir_; +13943: }; +13943: +13943: class FaultInjectionTestFS : public FileSystemWrapper { +13943: public: +13943: explicit FaultInjectionTestFS(const std::shared_ptr& base) +13943: : FileSystemWrapper(base), +13943: filesystem_active_(true), +13943: filesystem_writable_(false), +13943: inject_unsynced_data_loss_(false), +13943: read_unsynced_data_(true), +13943: allow_link_open_file_(false), +13943: injected_thread_local_read_error_(DeleteThreadLocalErrorContext), +13943: injected_thread_local_write_error_(DeleteThreadLocalErrorContext), +13943: injected_thread_local_metadata_read_error_( +13943: DeleteThreadLocalErrorContext), +13943: injected_thread_local_metadata_write_error_( +13943: DeleteThreadLocalErrorContext), +13943: ingest_data_corruption_before_write_(false), +13943: checksum_handoff_func_type_(kCRC32c), +13943: fail_get_file_unique_id_(false) {} +13943: virtual ~FaultInjectionTestFS() override { fs_error_.PermitUncheckedError(); } +13943: +13943: static const char* kClassName() { return "FaultInjectionTestFS"; } +13943: const char* Name() const override { return kClassName(); } +13943: +13943: static bool IsInjectedError(const Status& s) { +13943: +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: (static_cast ( +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: !s.ok() +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: "!s.ok()" +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: ; +13943: return std::strstr(s.getState(), kInjected.c_str()); +13943: } +13943: +13943: static bool IsFailedToWriteToWALError(const Status& s) { +13943: +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: (static_cast ( +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: !s.ok() +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: "!s.ok()" +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: ; +13943: return std::strstr(s.getState(), kFailedToWriteToWAL.c_str()); +13943: } +13943: +13943: IOStatus NewDirectory(const std::string& name, const IOOptions& options, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus FileExists(const std::string& fname, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus GetChildren(const std::string& dir, const IOOptions& options, +13943: std::vector* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus GetChildrenFileAttributes(const std::string& dir, +13943: const IOOptions& options, +13943: std::vector* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus NewWritableFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus ReopenWritableFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus ReuseWritableFile(const std::string& fname, +13943: const std::string& old_fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus NewRandomRWFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus NewRandomAccessFile(const std::string& fname, +13943: const FileOptions& file_opts, +13943: std::unique_ptr* result, +13943: IODebugContext* dbg) override; +13943: IOStatus NewSequentialFile(const std::string& f, const FileOptions& file_opts, +13943: std::unique_ptr* r, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus DeleteFile(const std::string& f, const IOOptions& options, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus GetFileSize(const std::string& f, const IOOptions& options, +13943: uint64_t* file_size, IODebugContext* dbg) override; +13943: +13943: IOStatus GetFileModificationTime(const std::string& fname, +13943: const IOOptions& options, +13943: uint64_t* file_mtime, +13943: IODebugContext* dbg) override; +13943: +13943: IOStatus RenameFile(const std::string& s, const std::string& t, +13943: const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus LinkFile(const std::string& src, const std::string& target, +13943: const IOOptions& options, IODebugContext* dbg) override; +13943: +13943: IOStatus NumFileLinks(const std::string& fname, const IOOptions& options, +13943: uint64_t* count, IODebugContext* dbg) override; +13943: +13943: IOStatus AreFilesSame(const std::string& first, const std::string& second, +13943: const IOOptions& options, bool* res, +13943: IODebugContext* dbg) override; +13943: IOStatus GetAbsolutePath(const std::string& db_path, const IOOptions& options, +13943: std::string* output_path, +13943: IODebugContext* dbg) override; +13943: +13943: +13943: +13943: IOStatus GetFreeSpace(const std::string& path, const IOOptions& options, +13943: uint64_t* disk_free, IODebugContext* dbg) override { +13943: IOStatus io_s; +13943: if (!IsFilesystemActive() && +13943: fs_error_.subcode() == IOStatus::SubCode::kNoSpace) { +13943: *disk_free = 0; +13943: } else { +13943: io_s = MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, +13943: options); +13943: if (io_s.ok()) { +13943: io_s = target()->GetFreeSpace(path, options, disk_free, dbg); +13943: } +13943: } +13943: return io_s; +13943: } +13943: +13943: IOStatus IsDirectory(const std::string& path, const IOOptions& options, +13943: bool* is_dir, IODebugContext* dgb) override; +13943: +13943: IOStatus Poll(std::vector& io_handles, +13943: size_t min_completions) override; +13943: +13943: IOStatus AbortIO(std::vector& io_handles) override; +13943: +13943: void WritableFileClosed(const FSFileState& state); +13943: +13943: void WritableFileSynced(const FSFileState& state); +13943: +13943: void WritableFileAppended(const FSFileState& state); +13943: +13943: IOStatus DropUnsyncedFileData(); +13943: +13943: IOStatus DropRandomUnsyncedFileData(Random* rnd); +13943: +13943: IOStatus DeleteFilesCreatedAfterLastDirSync(const IOOptions& options, +13943: IODebugContext* dbg); +13943: +13943: void ResetState(); +13943: +13943: void UntrackFile(const std::string& f); +13943: +13943: void SyncDir(const std::string& dirname) { +13943: MutexLock l(&mutex_); +13943: dir_to_new_files_since_last_sync_.erase(dirname); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: bool IsFilesystemActive() { +13943: MutexLock l(&mutex_); +13943: return filesystem_active_; +13943: } +13943: +13943: +13943: +13943: +13943: bool IsFilesystemDirectWritable() { +13943: MutexLock l(&mutex_); +13943: return filesystem_writable_; +13943: } +13943: void SetFilesystemActiveNoLock( +13943: bool active, IOStatus error = IOStatus::Corruption("Not active")) { +13943: error.PermitUncheckedError(); +13943: filesystem_active_ = active; +13943: if (!active) { +13943: fs_error_ = error; +13943: } +13943: } +13943: void SetFilesystemActive( +13943: bool active, IOStatus error = IOStatus::Corruption("Not active")) { +13943: MutexLock l(&mutex_); +13943: error.PermitUncheckedError(); +13943: SetFilesystemActiveNoLock(active, error); +13943: } +13943: void SetFilesystemDirectWritable(bool writable) { +13943: MutexLock l(&mutex_); +13943: filesystem_writable_ = writable; +13943: } +13943: +13943: +13943: +13943: void SetInjectUnsyncedDataLoss(bool inject) { +13943: MutexLock l(&mutex_); +13943: inject_unsynced_data_loss_ = inject; +13943: } +13943: +13943: bool InjectUnsyncedDataLoss() { +13943: MutexLock l(&mutex_); +13943: return inject_unsynced_data_loss_; +13943: } +13943: # 415 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: void SetReadUnsyncedData(bool read_unsynced_data) { +13943: read_unsynced_data_ = read_unsynced_data; +13943: } +13943: bool ReadUnsyncedData() const { return read_unsynced_data_; } +13943: +13943: +13943: +13943: +13943: void SetAllowLinkOpenFile(bool allow_link_open_file = true) { +13943: allow_link_open_file_ = allow_link_open_file; +13943: } +13943: +13943: bool ShouldIOActivtiesExcludedFromFaultInjection(Env::IOActivity io_activty) { +13943: MutexLock l(&mutex_); +13943: return io_activties_excluded_from_fault_injection.find(io_activty) != +13943: io_activties_excluded_from_fault_injection.end(); +13943: } +13943: +13943: void AssertNoOpenFile() { +13943: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: (static_cast ( +13943: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: open_managed_files_.empty() +13943: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: "open_managed_files_.empty()" +13943: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: ; } +13943: +13943: IOStatus GetError() { return fs_error_; } +13943: +13943: void SetFileSystemIOError(IOStatus io_error) { +13943: MutexLock l(&mutex_); +13943: io_error.PermitUncheckedError(); +13943: fs_error_ = io_error; +13943: } +13943: +13943: +13943: void IngestDataCorruptionBeforeWrite() { +13943: MutexLock l(&mutex_); +13943: ingest_data_corruption_before_write_ = true; +13943: } +13943: +13943: void NoDataCorruptionBeforeWrite() { +13943: MutexLock l(&mutex_); +13943: ingest_data_corruption_before_write_ = false; +13943: } +13943: +13943: bool ShouldDataCorruptionBeforeWrite() { +13943: MutexLock l(&mutex_); +13943: return ingest_data_corruption_before_write_; +13943: } +13943: +13943: void SetChecksumHandoffFuncType(const ChecksumType& func_type) { +13943: MutexLock l(&mutex_); +13943: checksum_handoff_func_type_ = func_type; +13943: } +13943: +13943: const ChecksumType& GetChecksumHandoffFuncType() { +13943: MutexLock l(&mutex_); +13943: return checksum_handoff_func_type_; +13943: } +13943: +13943: void SetFailGetUniqueId(bool flag) { +13943: MutexLock l(&mutex_); +13943: fail_get_file_unique_id_ = flag; +13943: } +13943: +13943: bool ShouldFailGetUniqueId() { +13943: MutexLock l(&mutex_); +13943: return fail_get_file_unique_id_; +13943: } +13943: +13943: +13943: enum ErrorOperation : char { +13943: kRead = 0, +13943: kMultiReadSingleReq = 1, +13943: kMultiRead = 2, +13943: kOpen, +13943: kAppend, +13943: kPositionedAppend, +13943: kUnknown, +13943: }; +13943: +13943: void SetThreadLocalErrorContext(FaultInjectionIOType type, uint32_t seed, +13943: int one_in, bool retryable, +13943: bool has_data_loss) { +13943: struct ErrorContext* new_ctx = new ErrorContext(seed); +13943: new_ctx->one_in = one_in; +13943: new_ctx->count = 0; +13943: new_ctx->retryable = retryable; +13943: new_ctx->has_data_loss = has_data_loss; +13943: +13943: SetErrorContextOfFaultInjectionIOType(type, new_ctx); +13943: } +13943: +13943: static void DeleteThreadLocalErrorContext(void* p) { +13943: ErrorContext* ctx = static_cast(p); +13943: delete ctx; +13943: } +13943: +13943: IOStatus MaybeInjectThreadLocalError( +13943: FaultInjectionIOType type, const IOOptions& io_options, +13943: const std::string& file_name = "", ErrorOperation op = kUnknown, +13943: Slice* slice = nullptr, bool direct_io = false, char* scratch = nullptr, +13943: bool need_count_increase = false, bool* fault_injected = nullptr); +13943: +13943: int GetAndResetInjectedThreadLocalErrorCount(FaultInjectionIOType type) { +13943: ErrorContext* ctx = GetErrorContextFromFaultInjectionIOType(type); +13943: int count = 0; +13943: if (ctx) { +13943: count = ctx->count; +13943: ctx->count = 0; +13943: } +13943: return count; +13943: } +13943: +13943: void SetIOActivtiesExcludedFromFaultInjection( +13943: const std::set& io_activties) { +13943: MutexLock l(&mutex_); +13943: io_activties_excluded_from_fault_injection = io_activties; +13943: } +13943: +13943: void SetFileTypesExcludedFromWriteFaultInjection( +13943: const std::set& types) { +13943: MutexLock l(&mutex_); +13943: file_types_excluded_from_write_fault_injection_ = types; +13943: } +13943: +13943: void EnableThreadLocalErrorInjection(FaultInjectionIOType type) { +13943: ErrorContext* ctx = GetErrorContextFromFaultInjectionIOType(type); +13943: if (ctx) { +13943: ctx->enable_error_injection = true; +13943: } +13943: } +13943: +13943: void EnableAllThreadLocalErrorInjection() { +13943: EnableThreadLocalErrorInjection(FaultInjectionIOType::kRead); +13943: EnableThreadLocalErrorInjection(FaultInjectionIOType::kWrite); +13943: EnableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataRead); +13943: EnableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataWrite); +13943: } +13943: +13943: void DisableThreadLocalErrorInjection(FaultInjectionIOType type) { +13943: ErrorContext* ctx = GetErrorContextFromFaultInjectionIOType(type); +13943: if (ctx) { +13943: ctx->enable_error_injection = false; +13943: } +13943: } +13943: +13943: void DisableAllThreadLocalErrorInjection() { +13943: DisableThreadLocalErrorInjection(FaultInjectionIOType::kRead); +13943: DisableThreadLocalErrorInjection(FaultInjectionIOType::kWrite); +13943: DisableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataRead); +13943: DisableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataWrite); +13943: } +13943: +13943: void PrintInjectedThreadLocalErrorBacktrace(FaultInjectionIOType type); +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: void ReadUnsynced(const std::string& fname, uint64_t offset, size_t n, +13943: Slice* result, char* scratch, int64_t* pos_at_last_sync); +13943: +13943: inline static const std::string kInjected = "injected"; +13943: +13943: private: +13943: inline static const std::string kFailedToWriteToWAL = +13943: "failed to write to WAL"; +13943: port::Mutex mutex_; +13943: std::map db_file_state_; +13943: std::set open_managed_files_; +13943: +13943: +13943: +13943: +13943: std::unordered_map> +13943: dir_to_new_files_since_last_sync_; +13943: bool filesystem_active_; +13943: bool filesystem_writable_; +13943: +13943: bool inject_unsynced_data_loss_; +13943: bool read_unsynced_data_; +13943: bool allow_link_open_file_; +13943: IOStatus fs_error_; +13943: +13943: enum ErrorType : int { +13943: kErrorTypeStatus = 0, +13943: kErrorTypeCorruption, +13943: kErrorTypeTruncated, +13943: kErrorTypeMax +13943: }; +13943: +13943: struct ErrorContext { +13943: Random rand; +13943: int one_in; +13943: int count; +13943: bool enable_error_injection; +13943: void* callstack; +13943: std::string message; +13943: int frames; +13943: ErrorType type; +13943: bool retryable; +13943: bool has_data_loss; +13943: +13943: explicit ErrorContext(uint32_t seed) +13943: : rand(seed), +13943: enable_error_injection(false), +13943: callstack(nullptr), +13943: frames(0), +13943: retryable(false), +13943: has_data_loss(false) {} +13943: ~ErrorContext() { +13943: if (callstack) { +13943: free(callstack); +13943: } +13943: } +13943: }; +13943: +13943: std::set file_types_excluded_from_write_fault_injection_; +13943: std::set io_activties_excluded_from_fault_injection; +13943: ThreadLocalPtr injected_thread_local_read_error_; +13943: ThreadLocalPtr injected_thread_local_write_error_; +13943: ThreadLocalPtr injected_thread_local_metadata_read_error_; +13943: ThreadLocalPtr injected_thread_local_metadata_write_error_; +13943: bool ingest_data_corruption_before_write_; +13943: ChecksumType checksum_handoff_func_type_; +13943: bool fail_get_file_unique_id_; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: IOStatus MaybeInjectThreadLocalReadError(const IOOptions& io_options, +13943: ErrorOperation op, Slice* slice, +13943: bool direct_io, char* scratch, +13943: bool need_count_increase, +13943: bool* fault_injected); +13943: +13943: bool ShouldExcludeFromWriteFaultInjection(const std::string& file_name) { +13943: MutexLock l(&mutex_); +13943: FileType file_type = kTempFile; +13943: uint64_t file_number = 0; +13943: if (!TryParseFileName(file_name, &file_number, &file_type)) { +13943: return false; +13943: } +13943: return file_types_excluded_from_write_fault_injection_.find(file_type) != +13943: file_types_excluded_from_write_fault_injection_.end(); +13943: } +13943: +13943: +13943: +13943: bool TryParseFileName(const std::string& file_name, uint64_t* number, +13943: FileType* type); +13943: +13943: ErrorContext* GetErrorContextFromFaultInjectionIOType( +13943: FaultInjectionIOType type) { +13943: ErrorContext* ctx = nullptr; +13943: switch (type) { +13943: case FaultInjectionIOType::kRead: +13943: ctx = static_cast( +13943: injected_thread_local_read_error_.Get()); +13943: break; +13943: case FaultInjectionIOType::kWrite: +13943: ctx = static_cast( +13943: injected_thread_local_write_error_.Get()); +13943: break; +13943: case FaultInjectionIOType::kMetadataRead: +13943: ctx = static_cast( +13943: injected_thread_local_metadata_read_error_.Get()); +13943: break; +13943: case FaultInjectionIOType::kMetadataWrite: +13943: ctx = static_cast( +13943: injected_thread_local_metadata_write_error_.Get()); +13943: break; +13943: default: +13943: +13943: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: (static_cast ( +13943: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: false +13943: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: "false" +13943: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: ; +13943: break; +13943: } +13943: return ctx; +13943: } +13943: +13943: void SetErrorContextOfFaultInjectionIOType(FaultInjectionIOType type, +13943: ErrorContext* new_ctx) { +13943: ErrorContext* old_ctx = nullptr; +13943: switch (type) { +13943: case FaultInjectionIOType::kRead: +13943: old_ctx = static_cast( +13943: injected_thread_local_read_error_.Swap(new_ctx)); +13943: break; +13943: case FaultInjectionIOType::kWrite: +13943: old_ctx = static_cast( +13943: injected_thread_local_write_error_.Swap(new_ctx)); +13943: break; +13943: case FaultInjectionIOType::kMetadataRead: +13943: old_ctx = static_cast( +13943: injected_thread_local_metadata_read_error_.Swap(new_ctx)); +13943: break; +13943: case FaultInjectionIOType::kMetadataWrite: +13943: old_ctx = static_cast( +13943: injected_thread_local_metadata_write_error_.Swap(new_ctx)); +13943: break; +13943: default: +13943: +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: (static_cast ( +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: false +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: "false" +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: ; +13943: break; +13943: } +13943: +13943: if (old_ctx) { +13943: DeleteThreadLocalErrorContext(old_ctx); +13943: } +13943: } +13943: +13943: std::string GetErrorMessage(FaultInjectionIOType type, +13943: const std::string& file_name, ErrorOperation op) { +13943: std::ostringstream msg; +13943: msg << kInjected << " "; +13943: switch (type) { +13943: case FaultInjectionIOType::kRead: +13943: msg << "read error"; +13943: break; +13943: case FaultInjectionIOType::kWrite: +13943: msg << "write error"; +13943: break; +13943: case FaultInjectionIOType::kMetadataRead: +13943: msg << "metadata read error"; +13943: break; +13943: case FaultInjectionIOType::kMetadataWrite: +13943: msg << "metadata write error"; +13943: break; +13943: default: +13943: +13943: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: (static_cast ( +13943: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: false +13943: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: "false" +13943: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +13943: ; +13943: break; +13943: } +13943: +13943: if (type == FaultInjectionIOType::kWrite && +13943: (op == ErrorOperation::kOpen || op == ErrorOperation::kAppend || +13943: op == ErrorOperation::kPositionedAppend)) { +13943: FileType file_type = kTempFile; +13943: uint64_t ignore = 0; +13943: if (TryParseFileName(file_name, &ignore, &file_type) && +13943: file_type == FileType::kWalFile) { +13943: msg << " " << kFailedToWriteToWAL; +13943: } +13943: } +13943: return msg.str(); +13943: } +13943: }; +13943: +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 2 +13943: +13943: +13943: namespace rocksdb { +13943: class Statistics; +13943: class SystemClock; +13943: # 40 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +13943: class WritableFileWriter { +13943: private: +13943: void NotifyOnFileWriteFinish( +13943: uint64_t offset, size_t length, +13943: const FileOperationInfo::StartTimePoint& start_ts, +13943: const FileOperationInfo::FinishTimePoint& finish_ts, +13943: const IOStatus& io_status) { +13943: FileOperationInfo info(FileOperationType::kWrite, file_name_, start_ts, +13943: finish_ts, io_status, temperature_); +13943: info.offset = offset; +13943: info.length = length; +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnFileWriteFinish(info); +13943: } +13943: info.status.PermitUncheckedError(); +13943: } +13943: void NotifyOnFileFlushFinish( +13943: const FileOperationInfo::StartTimePoint& start_ts, +13943: const FileOperationInfo::FinishTimePoint& finish_ts, +13943: const IOStatus& io_status) { +13943: FileOperationInfo info(FileOperationType::kFlush, file_name_, start_ts, +13943: finish_ts, io_status, temperature_); +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnFileFlushFinish(info); +13943: } +13943: info.status.PermitUncheckedError(); +13943: } +13943: void NotifyOnFileSyncFinish( +13943: const FileOperationInfo::StartTimePoint& start_ts, +13943: const FileOperationInfo::FinishTimePoint& finish_ts, +13943: const IOStatus& io_status, +13943: FileOperationType type = FileOperationType::kSync) { +13943: FileOperationInfo info(type, file_name_, start_ts, finish_ts, io_status, +13943: temperature_); +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnFileSyncFinish(info); +13943: } +13943: info.status.PermitUncheckedError(); +13943: } +13943: void NotifyOnFileRangeSyncFinish( +13943: uint64_t offset, size_t length, +13943: const FileOperationInfo::StartTimePoint& start_ts, +13943: const FileOperationInfo::FinishTimePoint& finish_ts, +13943: const IOStatus& io_status) { +13943: FileOperationInfo info(FileOperationType::kRangeSync, file_name_, start_ts, +13943: finish_ts, io_status, temperature_); +13943: info.offset = offset; +13943: info.length = length; +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnFileRangeSyncFinish(info); +13943: } +13943: info.status.PermitUncheckedError(); +13943: } +13943: void NotifyOnFileTruncateFinish( +13943: const FileOperationInfo::StartTimePoint& start_ts, +13943: const FileOperationInfo::FinishTimePoint& finish_ts, +13943: const IOStatus& io_status) { +13943: FileOperationInfo info(FileOperationType::kTruncate, file_name_, start_ts, +13943: finish_ts, io_status, temperature_); +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnFileTruncateFinish(info); +13943: } +13943: info.status.PermitUncheckedError(); +13943: } +13943: void NotifyOnFileCloseFinish( +13943: const FileOperationInfo::StartTimePoint& start_ts, +13943: const FileOperationInfo::FinishTimePoint& finish_ts, +13943: const IOStatus& io_status) { +13943: FileOperationInfo info(FileOperationType::kClose, file_name_, start_ts, +13943: finish_ts, io_status, temperature_); +13943: +13943: for (auto& listener : listeners_) { +13943: listener->OnFileCloseFinish(info); +13943: } +13943: info.status.PermitUncheckedError(); +13943: } +13943: +13943: void NotifyOnIOError(const IOStatus& io_status, FileOperationType operation, +13943: const std::string& file_path, size_t length = 0, +13943: uint64_t offset = 0) { +13943: if (listeners_.empty()) { +13943: return; +13943: } +13943: IOErrorInfo io_error_info(io_status, operation, file_path, length, offset); +13943: for (auto& listener : listeners_) { +13943: listener->OnIOError(io_error_info); +13943: } +13943: io_error_info.io_status.PermitUncheckedError(); +13943: } +13943: +13943: bool ShouldNotifyListeners() const { return !listeners_.empty(); } +13943: void UpdateFileChecksum(const Slice& data); +13943: void Crc32cHandoffChecksumCalculation(const char* data, size_t size, +13943: char* buf); +13943: +13943: std::string file_name_; +13943: FSWritableFilePtr writable_file_; +13943: SystemClock* clock_; +13943: AlignedBuffer buf_; +13943: size_t max_buffer_size_; +13943: +13943: +13943: std::atomic filesize_; +13943: std::atomic flushed_size_; +13943: +13943: +13943: +13943: uint64_t next_write_offset_; +13943: bool pending_sync_; +13943: std::atomic seen_error_; +13943: +13943: std::atomic seen_injected_error_; +13943: +13943: uint64_t last_sync_size_; +13943: uint64_t bytes_per_sync_; +13943: RateLimiter* rate_limiter_; +13943: Statistics* stats_; +13943: Histograms hist_type_; +13943: std::vector> listeners_; +13943: std::unique_ptr checksum_generator_; +13943: bool checksum_finalized_; +13943: bool perform_data_verification_; +13943: uint32_t buffered_data_crc32c_checksum_; +13943: bool buffered_data_with_checksum_; +13943: Temperature temperature_; +13943: +13943: public: +13943: WritableFileWriter( +13943: std::unique_ptr&& file, const std::string& _file_name, +13943: const FileOptions& options, SystemClock* clock = nullptr, +13943: const std::shared_ptr& io_tracer = nullptr, +13943: Statistics* stats = nullptr, +13943: Histograms hist_type = Histograms::HISTOGRAM_ENUM_MAX, +13943: const std::vector>& listeners = {}, +13943: FileChecksumGenFactory* file_checksum_gen_factory = nullptr, +13943: bool perform_data_verification = false, +13943: bool buffered_data_with_checksum = false) +13943: : file_name_(_file_name), +13943: writable_file_(std::move(file), io_tracer, _file_name), +13943: clock_(clock), +13943: buf_(), +13943: max_buffer_size_(options.writable_file_max_buffer_size), +13943: filesize_(0), +13943: flushed_size_(0), +13943: next_write_offset_(0), +13943: pending_sync_(false), +13943: seen_error_(false), +13943: +13943: seen_injected_error_(false), +13943: +13943: last_sync_size_(0), +13943: bytes_per_sync_(options.bytes_per_sync), +13943: rate_limiter_(options.rate_limiter), +13943: stats_(stats), +13943: hist_type_(hist_type), +13943: listeners_(), +13943: checksum_generator_(nullptr), +13943: checksum_finalized_(false), +13943: perform_data_verification_(perform_data_verification), +13943: buffered_data_crc32c_checksum_(0), +13943: buffered_data_with_checksum_(buffered_data_with_checksum) { +13943: temperature_ = options.temperature; +13943: +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 3 4 +13943: (static_cast ( +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +13943: !use_direct_io() || max_buffer_size_ > 0 +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +13943: "!use_direct_io() || max_buffer_size_ > 0" +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +13943: ; +13943: rocksdb::SyncPoint::GetInstance()->Process("WritableFileWriter::WritableFileWriter:0", reinterpret_cast(max_buffer_size_)) +13943: ; +13943: buf_.Alignment(writable_file_->GetRequiredBufferAlignment()); +13943: buf_.AllocateNewBuffer(std::min((size_t)65536, max_buffer_size_)); +13943: std::for_each(listeners.begin(), listeners.end(), +13943: [this](const std::shared_ptr& e) { +13943: if (e->ShouldBeNotifiedOnFileIO()) { +13943: listeners_.emplace_back(e); +13943: } +13943: }); +13943: if (file_checksum_gen_factory != nullptr) { +13943: FileChecksumGenContext checksum_gen_context; +13943: checksum_gen_context.file_name = _file_name; +13943: checksum_generator_ = +13943: file_checksum_gen_factory->CreateFileChecksumGenerator( +13943: checksum_gen_context); +13943: } +13943: } +13943: +13943: static IOStatus Create(const std::shared_ptr& fs, +13943: const std::string& fname, const FileOptions& file_opts, +13943: std::unique_ptr* writer, +13943: IODebugContext* dbg); +13943: +13943: static IOStatus PrepareIOOptions(const WriteOptions& wo, IOOptions& opts); +13943: +13943: WritableFileWriter(const WritableFileWriter&) = delete; +13943: +13943: WritableFileWriter& operator=(const WritableFileWriter&) = delete; +13943: +13943: ~WritableFileWriter() { +13943: IOOptions io_options; +13943: +13943: +13943: +13943: ThreadStatus::OperationType op_type = +13943: ThreadStatusUtil::GetThreadOperation(); +13943: io_options.io_activity = +13943: ThreadStatusUtil::TEST_GetExpectedIOActivity(op_type); +13943: +13943: auto s = Close(io_options); +13943: s.PermitUncheckedError(); +13943: } +13943: +13943: std::string file_name() const { return file_name_; } +13943: +13943: +13943: +13943: IOStatus Append(const IOOptions& opts, const Slice& data, +13943: uint32_t crc32c_checksum = 0); +13943: +13943: IOStatus Pad(const IOOptions& opts, const size_t pad_bytes); +13943: +13943: IOStatus Flush(const IOOptions& opts); +13943: +13943: IOStatus Close(const IOOptions& opts); +13943: +13943: IOStatus Sync(const IOOptions& opts, bool use_fsync); +13943: +13943: +13943: +13943: +13943: IOStatus SyncWithoutFlush(const IOOptions& opts, bool use_fsync); +13943: +13943: +13943: +13943: uint64_t GetFileSize() const { +13943: return filesize_.load(std::memory_order_acquire); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: uint64_t GetFlushedSize() const { +13943: return flushed_size_.load(std::memory_order_acquire); +13943: } +13943: +13943: IOStatus InvalidateCache(size_t offset, size_t length) { +13943: return writable_file_->InvalidateCache(offset, length); +13943: } +13943: +13943: FSWritableFile* writable_file() const { return writable_file_.get(); } +13943: +13943: bool use_direct_io() { return writable_file_->use_direct_io(); } +13943: +13943: bool BufferIsEmpty() const { return buf_.CurrentSize() == 0; } +13943: +13943: bool IsClosed() const { return writable_file_.get() == nullptr; } +13943: +13943: void TEST_SetFileChecksumGenerator( +13943: FileChecksumGenerator* checksum_generator) { +13943: checksum_generator_.reset(checksum_generator); +13943: } +13943: +13943: std::string GetFileChecksum(); +13943: +13943: const char* GetFileChecksumFuncName() const; +13943: +13943: bool seen_error() const { +13943: return seen_error_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: void reset_seen_error() { +13943: seen_error_.store(false, std::memory_order_relaxed); +13943: +13943: seen_injected_error_.store(false, std::memory_order_relaxed); +13943: +13943: } +13943: void set_seen_error(const Status& s) { +13943: seen_error_.store(true, std::memory_order_relaxed); +13943: (void)s; +13943: +13943: if (s.getState() && std::strstr(s.getState(), "inject")) { +13943: seen_injected_error_.store(true, std::memory_order_relaxed); +13943: } +13943: +13943: } +13943: +13943: bool seen_injected_error() const { +13943: return seen_injected_error_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: +13943: IOStatus GetWriterHasPreviousErrorStatus() { +13943: +13943: if (seen_injected_error_.load(std::memory_order_relaxed)) { +13943: std::stringstream msg; +13943: msg << "Writer has previous " << FaultInjectionTestFS::kInjected +13943: << " error."; +13943: return IOStatus::IOError(msg.str()); +13943: } +13943: +13943: return IOStatus::IOError("Writer has previous error."); +13943: } +13943: +13943: private: +13943: +13943: static Env::IOPriority DecideRateLimiterPriority( +13943: Env::IOPriority writable_file_io_priority, +13943: Env::IOPriority op_rate_limiter_priority); +13943: +13943: +13943: +13943: +13943: IOStatus WriteDirect(const IOOptions& opts); +13943: +13943: IOStatus WriteDirectWithChecksum(const IOOptions& opts); +13943: +13943: +13943: IOStatus WriteBuffered(const IOOptions& opts, const char* data, size_t size); +13943: +13943: IOStatus WriteBufferedWithChecksum(const IOOptions& opts, const char* data, +13943: size_t size); +13943: +13943: IOStatus RangeSync(const IOOptions& opts, uint64_t offset, uint64_t nbytes); +13943: +13943: IOStatus SyncInternal(const IOOptions& opts, bool use_fsync); +13943: IOOptions FinalizeIOOptions(const IOOptions& opts) const; +13943: }; +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.h" +13943: namespace rocksdb { +13943: class Env; +13943: class SystemClock; +13943: +13943: extern const uint64_t kMicrosInSecond; +13943: extern const uint64_t kSecondInMinute; +13943: extern const uint64_t kSecondInHour; +13943: +13943: struct BlockCacheTraceRecord; +13943: +13943: class BlockCacheTraceHelper { +13943: public: +13943: static bool IsGetOrMultiGetOnDataBlock(TraceType block_type, +13943: TableReaderCaller caller); +13943: static bool IsGetOrMultiGet(TableReaderCaller caller); +13943: static bool IsUserAccess(TableReaderCaller caller); +13943: +13943: +13943: static std::string ComputeRowKey(const BlockCacheTraceRecord& access); +13943: +13943: +13943: static uint64_t GetTableId(const BlockCacheTraceRecord& access); +13943: +13943: +13943: static uint64_t GetSequenceNumber(const BlockCacheTraceRecord& access); +13943: +13943: static uint64_t GetBlockOffsetInFile(const BlockCacheTraceRecord& access); +13943: +13943: static const std::string kUnknownColumnFamilyName; +13943: static const uint64_t kReservedGetId; +13943: }; +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.h" +13943: struct BlockCacheLookupContext { +13943: BlockCacheLookupContext(const TableReaderCaller& _caller) : caller(_caller) {} +13943: BlockCacheLookupContext(const TableReaderCaller& _caller, uint64_t _get_id, +13943: bool _get_from_user_specified_snapshot) +13943: : caller(_caller), +13943: get_id(_get_id), +13943: get_from_user_specified_snapshot(_get_from_user_specified_snapshot) {} +13943: const TableReaderCaller caller; +13943: +13943: +13943: +13943: bool is_cache_hit = false; +13943: bool no_insert = false; +13943: TraceType block_type = TraceType::kTraceMax; +13943: uint64_t block_size = 0; +13943: std::string block_key; +13943: uint64_t num_keys_in_block = 0; +13943: +13943: +13943: +13943: uint64_t get_id = 0; +13943: std::string referenced_key; +13943: bool get_from_user_specified_snapshot = false; +13943: +13943: void FillLookupContext(bool _is_cache_hit, bool _no_insert, +13943: TraceType _block_type, uint64_t _block_size, +13943: const std::string& _block_key, +13943: uint64_t _num_keys_in_block) { +13943: is_cache_hit = _is_cache_hit; +13943: no_insert = _no_insert; +13943: block_type = _block_type; +13943: block_size = _block_size; +13943: block_key = _block_key; +13943: num_keys_in_block = _num_keys_in_block; +13943: } +13943: }; +13943: +13943: struct BlockCacheTraceHeader { +13943: uint64_t start_time; +13943: uint32_t rocksdb_major_version; +13943: uint32_t rocksdb_minor_version; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: class BlockCacheTraceWriterImpl : public BlockCacheTraceWriter { +13943: public: +13943: BlockCacheTraceWriterImpl(SystemClock* clock, +13943: const BlockCacheTraceWriterOptions& trace_options, +13943: std::unique_ptr&& trace_writer); +13943: ~BlockCacheTraceWriterImpl() = default; +13943: +13943: BlockCacheTraceWriterImpl(const BlockCacheTraceWriterImpl&) = delete; +13943: BlockCacheTraceWriterImpl& operator=(const BlockCacheTraceWriterImpl&) = +13943: delete; +13943: BlockCacheTraceWriterImpl(BlockCacheTraceWriterImpl&&) = delete; +13943: BlockCacheTraceWriterImpl& operator=(BlockCacheTraceWriterImpl&&) = delete; +13943: +13943: +13943: Status WriteBlockAccess(const BlockCacheTraceRecord& record, +13943: const Slice& block_key, const Slice& cf_name, +13943: const Slice& referenced_key) override; +13943: +13943: +13943: +13943: Status WriteHeader() override; +13943: +13943: private: +13943: SystemClock* clock_; +13943: BlockCacheTraceWriterOptions trace_options_; +13943: std::unique_ptr trace_writer_; +13943: }; +13943: +13943: +13943: +13943: +13943: class BlockCacheHumanReadableTraceWriter { +13943: public: +13943: ~BlockCacheHumanReadableTraceWriter(); +13943: +13943: Status NewWritableFile(const std::string& human_readable_trace_file_path, +13943: rocksdb::Env* env); +13943: +13943: Status WriteHumanReadableTraceRecord(const BlockCacheTraceRecord& access, +13943: uint64_t block_id, uint64_t get_key_id); +13943: +13943: private: +13943: char trace_record_buffer_[1024 * 1024]; +13943: std::unique_ptr +13943: human_readable_trace_file_writer_; +13943: }; +13943: +13943: +13943: +13943: class BlockCacheTraceReader { +13943: public: +13943: BlockCacheTraceReader(std::unique_ptr&& reader); +13943: virtual ~BlockCacheTraceReader() = default; +13943: +13943: BlockCacheTraceReader(const BlockCacheTraceReader&) = delete; +13943: BlockCacheTraceReader& operator=(const BlockCacheTraceReader&) = delete; +13943: BlockCacheTraceReader(BlockCacheTraceReader&&) = delete; +13943: BlockCacheTraceReader& operator=(BlockCacheTraceReader&&) = delete; +13943: +13943: Status ReadHeader(BlockCacheTraceHeader* header); +13943: +13943: Status ReadAccess(BlockCacheTraceRecord* record); +13943: +13943: private: +13943: std::unique_ptr trace_reader_; +13943: }; +13943: +13943: +13943: +13943: +13943: class BlockCacheHumanReadableTraceReader : public BlockCacheTraceReader { +13943: public: +13943: BlockCacheHumanReadableTraceReader(const std::string& trace_file_path); +13943: +13943: ~BlockCacheHumanReadableTraceReader(); +13943: +13943: Status ReadHeader(BlockCacheTraceHeader* header); +13943: +13943: Status ReadAccess(BlockCacheTraceRecord* record); +13943: +13943: private: +13943: std::ifstream human_readable_trace_reader_; +13943: }; +13943: +13943: +13943: +13943: +13943: class BlockCacheTracer { +13943: public: +13943: BlockCacheTracer(); +13943: ~BlockCacheTracer(); +13943: +13943: BlockCacheTracer(const BlockCacheTracer&) = delete; +13943: BlockCacheTracer& operator=(const BlockCacheTracer&) = delete; +13943: BlockCacheTracer(BlockCacheTracer&&) = delete; +13943: BlockCacheTracer& operator=(BlockCacheTracer&&) = delete; +13943: +13943: +13943: Status StartTrace(const BlockCacheTraceOptions& trace_options, +13943: std::unique_ptr&& trace_writer); +13943: +13943: +13943: void EndTrace(); +13943: +13943: bool is_tracing_enabled() const { +13943: return writer_.load(std::memory_order_relaxed); +13943: } +13943: +13943: Status WriteBlockAccess(const BlockCacheTraceRecord& record, +13943: const Slice& block_key, const Slice& cf_name, +13943: const Slice& referenced_key); +13943: +13943: +13943: uint64_t NextGetId(); +13943: +13943: private: +13943: BlockCacheTraceOptions trace_options_; +13943: +13943: InstrumentedMutex trace_writer_mutex_; +13943: std::atomic writer_; +13943: std::atomic get_id_counter_; +13943: }; +13943: +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: class Status; +13943: +13943: struct TableReaderOptions { +13943: +13943: TableReaderOptions( +13943: const ImmutableOptions& _ioptions, +13943: const std::shared_ptr& _prefix_extractor, +13943: const EnvOptions& _env_options, +13943: const InternalKeyComparator& _internal_comparator, +13943: uint8_t _block_protection_bytes_per_key, bool _skip_filters = false, +13943: bool _immortal = false, bool _force_direct_prefetch = false, +13943: int _level = -1, BlockCacheTracer* const _block_cache_tracer = nullptr, +13943: size_t _max_file_size_for_l0_meta_pin = 0, +13943: const std::string& _cur_db_session_id = "", uint64_t _cur_file_num = 0, +13943: UniqueId64x2 _unique_id = {}, SequenceNumber _largest_seqno = 0, +13943: uint64_t _tail_size = 0, bool _user_defined_timestamps_persisted = true) +13943: : ioptions(_ioptions), +13943: prefix_extractor(_prefix_extractor), +13943: env_options(_env_options), +13943: internal_comparator(_internal_comparator), +13943: skip_filters(_skip_filters), +13943: immortal(_immortal), +13943: force_direct_prefetch(_force_direct_prefetch), +13943: level(_level), +13943: largest_seqno(_largest_seqno), +13943: block_cache_tracer(_block_cache_tracer), +13943: max_file_size_for_l0_meta_pin(_max_file_size_for_l0_meta_pin), +13943: cur_db_session_id(_cur_db_session_id), +13943: cur_file_num(_cur_file_num), +13943: unique_id(_unique_id), +13943: block_protection_bytes_per_key(_block_protection_bytes_per_key), +13943: tail_size(_tail_size), +13943: user_defined_timestamps_persisted(_user_defined_timestamps_persisted) {} +13943: +13943: const ImmutableOptions& ioptions; +13943: const std::shared_ptr& prefix_extractor; +13943: const EnvOptions& env_options; +13943: const InternalKeyComparator& internal_comparator; +13943: +13943: bool skip_filters; +13943: +13943: bool immortal; +13943: +13943: +13943: +13943: bool force_direct_prefetch; +13943: +13943: +13943: int level; +13943: +13943: SequenceNumber largest_seqno; +13943: BlockCacheTracer* const block_cache_tracer; +13943: +13943: +13943: const size_t max_file_size_for_l0_meta_pin; +13943: +13943: std::string cur_db_session_id; +13943: +13943: uint64_t cur_file_num; +13943: +13943: +13943: UniqueId64x2 unique_id; +13943: +13943: uint8_t block_protection_bytes_per_key; +13943: +13943: uint64_t tail_size; +13943: +13943: +13943: bool user_defined_timestamps_persisted; +13943: }; +13943: +13943: struct TableBuilderOptions : public TablePropertiesCollectorFactory::Context { +13943: TableBuilderOptions( +13943: const ImmutableOptions& _ioptions, const MutableCFOptions& _moptions, +13943: const ReadOptions& _read_options, const WriteOptions& _write_options, +13943: const InternalKeyComparator& _internal_comparator, +13943: const InternalTblPropCollFactories* _internal_tbl_prop_coll_factories, +13943: CompressionType _compression_type, +13943: const CompressionOptions& _compression_opts, uint32_t _column_family_id, +13943: const std::string& _column_family_name, int _level, +13943: const int64_t _newest_key_time, bool _is_bottommost = false, +13943: TableFileCreationReason _reason = TableFileCreationReason::kMisc, +13943: const int64_t _oldest_key_time = 0, +13943: const uint64_t _file_creation_time = 0, const std::string& _db_id = "", +13943: const std::string& _db_session_id = "", +13943: const uint64_t _target_file_size = 0, const uint64_t _cur_file_num = 0, +13943: const SequenceNumber _last_level_inclusive_max_seqno_threshold = +13943: kMaxSequenceNumber) +13943: : TablePropertiesCollectorFactory::Context( +13943: _column_family_id, _level, _ioptions.num_levels, +13943: _last_level_inclusive_max_seqno_threshold), +13943: ioptions(_ioptions), +13943: moptions(_moptions), +13943: read_options(_read_options), +13943: write_options(_write_options), +13943: internal_comparator(_internal_comparator), +13943: internal_tbl_prop_coll_factories(_internal_tbl_prop_coll_factories), +13943: compression_type(_compression_type), +13943: compression_opts(_compression_opts), +13943: column_family_name(_column_family_name), +13943: oldest_key_time(_oldest_key_time), +13943: newest_key_time(_newest_key_time), +13943: target_file_size(_target_file_size), +13943: file_creation_time(_file_creation_time), +13943: db_id(_db_id), +13943: db_session_id(_db_session_id), +13943: is_bottommost(_is_bottommost), +13943: reason(_reason), +13943: cur_file_num(_cur_file_num) {} +13943: +13943: const ImmutableOptions& ioptions; +13943: const MutableCFOptions& moptions; +13943: const ReadOptions& read_options; +13943: const WriteOptions& write_options; +13943: const InternalKeyComparator& internal_comparator; +13943: const InternalTblPropCollFactories* internal_tbl_prop_coll_factories; +13943: const CompressionType compression_type; +13943: const CompressionOptions& compression_opts; +13943: const std::string& column_family_name; +13943: const int64_t oldest_key_time; +13943: const int64_t newest_key_time; +13943: const uint64_t target_file_size; +13943: const uint64_t file_creation_time; +13943: const std::string db_id; +13943: const std::string db_session_id; +13943: +13943: const bool is_bottommost; +13943: const TableFileCreationReason reason; +13943: +13943: +13943: +13943: +13943: +13943: bool skip_filters = false; +13943: const uint64_t cur_file_num; +13943: }; +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" +13943: class TableBuilder { +13943: public: +13943: +13943: virtual ~TableBuilder() {} +13943: +13943: +13943: +13943: +13943: virtual void Add(const Slice& key, const Slice& value) = 0; +13943: +13943: +13943: virtual Status status() const = 0; +13943: +13943: +13943: virtual IOStatus io_status() const = 0; +13943: +13943: +13943: +13943: virtual Status Finish() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void Abandon() = 0; +13943: +13943: +13943: virtual uint64_t NumEntries() const = 0; +13943: +13943: +13943: +13943: virtual bool IsEmpty() const { +13943: return NumEntries() == 0 && GetTableProperties().num_range_deletions == 0; +13943: } +13943: +13943: +13943: +13943: virtual uint64_t FileSize() const = 0; +13943: +13943: +13943: +13943: +13943: virtual uint64_t EstimatedFileSize() const { return FileSize(); } +13943: +13943: virtual uint64_t GetTailSize() const { return 0; } +13943: +13943: +13943: +13943: virtual bool NeedCompact() const { return false; } +13943: +13943: +13943: virtual TableProperties GetTableProperties() const = 0; +13943: +13943: +13943: virtual std::string GetFileChecksum() const = 0; +13943: +13943: +13943: virtual const char* GetFileChecksumFuncName() const = 0; +13943: +13943: +13943: +13943: virtual void SetSeqnoTimeTableProperties( +13943: const SeqnoToTimeMapping& , +13943: uint64_t ){} +13943: }; +13943: +13943: } +13943: # 26 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: namespace rocksdb { +13943: # 41 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: template > +13943: class BinaryHeap { +13943: public: +13943: BinaryHeap() {} +13943: explicit BinaryHeap(Compare cmp) : cmp_(std::move(cmp)) {} +13943: +13943: void push(const T& value) { +13943: data_.push_back(value); +13943: upheap(data_.size() - 1); +13943: } +13943: +13943: void push(T&& value) { +13943: data_.push_back(std::move(value)); +13943: upheap(data_.size() - 1); +13943: } +13943: +13943: const T& top() const { +13943: +13943: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: (static_cast ( +13943: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: !empty() +13943: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: "!empty()" +13943: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: ; +13943: return data_.front(); +13943: } +13943: +13943: void replace_top(const T& value) { +13943: +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: (static_cast ( +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: !empty() +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: "!empty()" +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: ; +13943: data_.front() = value; +13943: downheap(get_root()); +13943: } +13943: +13943: void replace_top(T&& value) { +13943: +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: (static_cast ( +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: !empty() +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: "!empty()" +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: ; +13943: data_.front() = std::move(value); +13943: downheap(get_root()); +13943: } +13943: +13943: void pop() { +13943: +13943: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: (static_cast ( +13943: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: !empty() +13943: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: "!empty()" +13943: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: ; +13943: if (data_.size() > 1) { +13943: +13943: +13943: +13943: data_.front() = std::move(data_.back()); +13943: } +13943: data_.pop_back(); +13943: if (!empty()) { +13943: downheap(get_root()); +13943: } else { +13943: reset_root_cmp_cache(); +13943: } +13943: } +13943: +13943: void swap(BinaryHeap& other) { +13943: std::swap(cmp_, other.cmp_); +13943: data_.swap(other.data_); +13943: std::swap(root_cmp_cache_, other.root_cmp_cache_); +13943: } +13943: +13943: void clear() { +13943: data_.clear(); +13943: reset_root_cmp_cache(); +13943: } +13943: +13943: bool empty() const { return data_.empty(); } +13943: +13943: size_t size() const { return data_.size(); } +13943: +13943: void reset_root_cmp_cache() { +13943: root_cmp_cache_ = std::numeric_limits::max(); +13943: } +13943: +13943: private: +13943: static inline size_t get_root() { return 0; } +13943: static inline size_t get_parent(size_t index) { return (index - 1) / 2; } +13943: static inline size_t get_left(size_t index) { return 2 * index + 1; } +13943: static inline size_t get_right(size_t index) { return 2 * index + 2; } +13943: +13943: void upheap(size_t index) { +13943: T v = std::move(data_[index]); +13943: while (index > get_root()) { +13943: const size_t parent = get_parent(index); +13943: if (!cmp_(data_[parent], v)) { +13943: break; +13943: } +13943: data_[index] = std::move(data_[parent]); +13943: index = parent; +13943: } +13943: data_[index] = std::move(v); +13943: reset_root_cmp_cache(); +13943: } +13943: +13943: void downheap(size_t index) { +13943: T v = std::move(data_[index]); +13943: +13943: size_t picked_child = std::numeric_limits::max(); +13943: while (1) { +13943: const size_t left_child = get_left(index); +13943: if (get_left(index) >= data_.size()) { +13943: break; +13943: } +13943: const size_t right_child = left_child + 1; +13943: +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: (static_cast ( +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: right_child == get_right(index) +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: "right_child == get_right(index)" +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +13943: ; +13943: picked_child = left_child; +13943: if (index == 0 && root_cmp_cache_ < data_.size()) { +13943: picked_child = root_cmp_cache_; +13943: } else if (right_child < data_.size() && +13943: cmp_(data_[left_child], data_[right_child])) { +13943: picked_child = right_child; +13943: } +13943: if (!cmp_(v, data_[picked_child])) { +13943: break; +13943: } +13943: data_[index] = std::move(data_[picked_child]); +13943: index = picked_child; +13943: } +13943: +13943: if (index == 0) { +13943: +13943: +13943: +13943: +13943: root_cmp_cache_ = picked_child; +13943: } else { +13943: +13943: reset_root_cmp_cache(); +13943: } +13943: +13943: data_[index] = std::move(v); +13943: } +13943: +13943: Compare cmp_; +13943: autovector data_; +13943: +13943: size_t root_cmp_cache_ = std::numeric_limits::max(); +13943: }; +13943: +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/kv_map.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/util/kv_map.h" +13943: namespace rocksdb { +13943: namespace stl_wrappers { +13943: +13943: struct LessOfComparator { +13943: explicit LessOfComparator(const Comparator* c = BytewiseComparator()) +13943: : cmp(c) {} +13943: +13943: bool operator()(const std::string& a, const std::string& b) const { +13943: return cmp->Compare(Slice(a), Slice(b)) < 0; +13943: } +13943: bool operator()(const Slice& a, const Slice& b) const { +13943: return cmp->Compare(a, b) < 0; +13943: } +13943: +13943: const Comparator* cmp; +13943: }; +13943: +13943: using KVMap = std::map; +13943: } +13943: } +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: class TruncatedRangeDelIterator { +13943: public: +13943: TruncatedRangeDelIterator( +13943: std::unique_ptr iter, +13943: const InternalKeyComparator* icmp, const InternalKey* smallest, +13943: const InternalKey* largest); +13943: +13943: void SetRangeDelReadSeqno(SequenceNumber read_seqno) { +13943: iter_->SetRangeDelReadSeqno(read_seqno); +13943: } +13943: +13943: bool Valid() const; +13943: +13943: void Next() { iter_->TopNext(); } +13943: void Prev() { iter_->TopPrev(); } +13943: +13943: void InternalNext() { iter_->Next(); } +13943: +13943: +13943: +13943: +13943: +13943: void Seek(const Slice& target); +13943: +13943: +13943: void SeekInternalKey(const Slice& target); +13943: +13943: +13943: +13943: +13943: void SeekForPrev(const Slice& target); +13943: +13943: void SeekToFirst(); +13943: void SeekToLast(); +13943: +13943: ParsedInternalKey start_key() const { +13943: return (smallest_ == nullptr || +13943: icmp_->Compare(*smallest_, iter_->parsed_start_key()) <= 0) +13943: ? iter_->parsed_start_key() +13943: : *smallest_; +13943: } +13943: +13943: ParsedInternalKey end_key() const { +13943: return (largest_ == nullptr || +13943: icmp_->Compare(iter_->parsed_end_key(), *largest_) <= 0) +13943: ? iter_->parsed_end_key() +13943: : *largest_; +13943: } +13943: +13943: SequenceNumber seq() const { return iter_->seq(); } +13943: Slice timestamp() const { +13943: +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: (static_cast ( +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: icmp_->user_comparator()->timestamp_size() +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: "icmp_->user_comparator()->timestamp_size()" +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: ; +13943: return iter_->timestamp(); +13943: } +13943: void SetTimestampUpperBound(const Slice* ts_upper_bound) { +13943: iter_->SetTimestampUpperBound(ts_upper_bound); +13943: } +13943: +13943: std::map> +13943: SplitBySnapshot(const std::vector& snapshots); +13943: +13943: SequenceNumber upper_bound() const { return iter_->upper_bound(); } +13943: +13943: SequenceNumber lower_bound() const { return iter_->lower_bound(); } +13943: +13943: private: +13943: std::unique_ptr iter_; +13943: const InternalKeyComparator* icmp_; +13943: const ParsedInternalKey* smallest_ = nullptr; +13943: const ParsedInternalKey* largest_ = nullptr; +13943: std::list pinned_bounds_; +13943: +13943: const InternalKey* smallest_ikey_; +13943: const InternalKey* largest_ikey_; +13943: }; +13943: +13943: struct SeqMaxComparator { +13943: bool operator()(const TruncatedRangeDelIterator* a, +13943: const TruncatedRangeDelIterator* b) const { +13943: return a->seq() > b->seq(); +13943: } +13943: }; +13943: +13943: struct StartKeyMinComparator { +13943: explicit StartKeyMinComparator(const InternalKeyComparator* c) : icmp(c) {} +13943: +13943: bool operator()(const TruncatedRangeDelIterator* a, +13943: const TruncatedRangeDelIterator* b) const { +13943: return icmp->Compare(a->start_key(), b->start_key()) > 0; +13943: } +13943: +13943: const InternalKeyComparator* icmp; +13943: }; +13943: +13943: class ForwardRangeDelIterator { +13943: public: +13943: explicit ForwardRangeDelIterator(const InternalKeyComparator* icmp); +13943: +13943: bool ShouldDelete(const ParsedInternalKey& parsed); +13943: void Invalidate(); +13943: +13943: void AddNewIter(TruncatedRangeDelIterator* iter, +13943: const ParsedInternalKey& parsed) { +13943: iter->Seek(parsed.user_key); +13943: PushIter(iter, parsed); +13943: +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: (static_cast ( +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: active_iters_.size() == active_seqnums_.size() +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: "active_iters_.size() == active_seqnums_.size()" +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: ; +13943: } +13943: +13943: size_t UnusedIdx() const { return unused_idx_; } +13943: void IncUnusedIdx() { unused_idx_++; } +13943: +13943: private: +13943: using ActiveSeqSet = +13943: std::multiset; +13943: +13943: struct EndKeyMinComparator { +13943: explicit EndKeyMinComparator(const InternalKeyComparator* c) : icmp(c) {} +13943: +13943: bool operator()(const ActiveSeqSet::const_iterator& a, +13943: const ActiveSeqSet::const_iterator& b) const { +13943: return icmp->Compare((*a)->end_key(), (*b)->end_key()) > 0; +13943: } +13943: +13943: const InternalKeyComparator* icmp; +13943: }; +13943: +13943: void PushIter(TruncatedRangeDelIterator* iter, +13943: const ParsedInternalKey& parsed) { +13943: if (!iter->Valid()) { +13943: +13943: +13943: return; +13943: } +13943: int cmp = icmp_->Compare(parsed, iter->start_key()); +13943: if (cmp < 0) { +13943: PushInactiveIter(iter); +13943: } else { +13943: PushActiveIter(iter); +13943: } +13943: } +13943: +13943: void PushActiveIter(TruncatedRangeDelIterator* iter) { +13943: auto seq_pos = active_seqnums_.insert(iter); +13943: active_iters_.push(seq_pos); +13943: } +13943: +13943: TruncatedRangeDelIterator* PopActiveIter() { +13943: auto active_top = active_iters_.top(); +13943: auto iter = *active_top; +13943: active_iters_.pop(); +13943: active_seqnums_.erase(active_top); +13943: return iter; +13943: } +13943: +13943: void PushInactiveIter(TruncatedRangeDelIterator* iter) { +13943: inactive_iters_.push(iter); +13943: } +13943: +13943: TruncatedRangeDelIterator* PopInactiveIter() { +13943: auto* iter = inactive_iters_.top(); +13943: inactive_iters_.pop(); +13943: return iter; +13943: } +13943: +13943: const InternalKeyComparator* icmp_; +13943: size_t unused_idx_; +13943: ActiveSeqSet active_seqnums_; +13943: BinaryHeap active_iters_; +13943: BinaryHeap inactive_iters_; +13943: }; +13943: +13943: class ReverseRangeDelIterator { +13943: public: +13943: explicit ReverseRangeDelIterator(const InternalKeyComparator* icmp); +13943: +13943: bool ShouldDelete(const ParsedInternalKey& parsed); +13943: void Invalidate(); +13943: +13943: void AddNewIter(TruncatedRangeDelIterator* iter, +13943: const ParsedInternalKey& parsed) { +13943: iter->SeekForPrev(parsed.user_key); +13943: PushIter(iter, parsed); +13943: +13943: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: (static_cast ( +13943: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: active_iters_.size() == active_seqnums_.size() +13943: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: "active_iters_.size() == active_seqnums_.size()" +13943: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: ; +13943: } +13943: +13943: size_t UnusedIdx() const { return unused_idx_; } +13943: void IncUnusedIdx() { unused_idx_++; } +13943: +13943: private: +13943: using ActiveSeqSet = +13943: std::multiset; +13943: +13943: struct EndKeyMaxComparator { +13943: explicit EndKeyMaxComparator(const InternalKeyComparator* c) : icmp(c) {} +13943: +13943: bool operator()(const TruncatedRangeDelIterator* a, +13943: const TruncatedRangeDelIterator* b) const { +13943: return icmp->Compare(a->end_key(), b->end_key()) < 0; +13943: } +13943: +13943: const InternalKeyComparator* icmp; +13943: }; +13943: struct StartKeyMaxComparator { +13943: explicit StartKeyMaxComparator(const InternalKeyComparator* c) : icmp(c) {} +13943: +13943: bool operator()(const ActiveSeqSet::const_iterator& a, +13943: const ActiveSeqSet::const_iterator& b) const { +13943: return icmp->Compare((*a)->start_key(), (*b)->start_key()) < 0; +13943: } +13943: +13943: const InternalKeyComparator* icmp; +13943: }; +13943: +13943: void PushIter(TruncatedRangeDelIterator* iter, +13943: const ParsedInternalKey& parsed) { +13943: if (!iter->Valid()) { +13943: +13943: +13943: } else if (icmp_->Compare(iter->end_key(), parsed) <= 0) { +13943: PushInactiveIter(iter); +13943: } else { +13943: PushActiveIter(iter); +13943: } +13943: } +13943: +13943: void PushActiveIter(TruncatedRangeDelIterator* iter) { +13943: auto seq_pos = active_seqnums_.insert(iter); +13943: active_iters_.push(seq_pos); +13943: } +13943: +13943: TruncatedRangeDelIterator* PopActiveIter() { +13943: auto active_top = active_iters_.top(); +13943: auto iter = *active_top; +13943: active_iters_.pop(); +13943: active_seqnums_.erase(active_top); +13943: return iter; +13943: } +13943: +13943: void PushInactiveIter(TruncatedRangeDelIterator* iter) { +13943: inactive_iters_.push(iter); +13943: } +13943: +13943: TruncatedRangeDelIterator* PopInactiveIter() { +13943: auto* iter = inactive_iters_.top(); +13943: inactive_iters_.pop(); +13943: return iter; +13943: } +13943: +13943: const InternalKeyComparator* icmp_; +13943: size_t unused_idx_; +13943: ActiveSeqSet active_seqnums_; +13943: BinaryHeap active_iters_; +13943: BinaryHeap inactive_iters_; +13943: }; +13943: +13943: enum class RangeDelPositioningMode { kForwardTraversal, kBackwardTraversal }; +13943: class RangeDelAggregator { +13943: public: +13943: explicit RangeDelAggregator(const InternalKeyComparator* icmp) +13943: : icmp_(icmp) {} +13943: virtual ~RangeDelAggregator() {} +13943: +13943: virtual void AddTombstones( +13943: std::unique_ptr input_iter, +13943: const InternalKey* smallest = nullptr, +13943: const InternalKey* largest = nullptr) = 0; +13943: +13943: bool ShouldDelete(const Slice& ikey, RangeDelPositioningMode mode) { +13943: ParsedInternalKey parsed; +13943: +13943: Status pik_status = +13943: ParseInternalKey(ikey, &parsed, false ); +13943: +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: (static_cast ( +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: pik_status.ok() +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: "pik_status.ok()" +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: ; +13943: if (!pik_status.ok()) { +13943: return false; +13943: } +13943: +13943: return ShouldDelete(parsed, mode); +13943: } +13943: virtual bool ShouldDelete(const ParsedInternalKey& parsed, +13943: RangeDelPositioningMode mode) = 0; +13943: +13943: virtual void InvalidateRangeDelMapPositions() = 0; +13943: +13943: virtual bool IsEmpty() const = 0; +13943: +13943: bool AddFile(uint64_t file_number) { +13943: return files_seen_.insert(file_number).second; +13943: } +13943: +13943: protected: +13943: class StripeRep { +13943: public: +13943: StripeRep(const InternalKeyComparator* icmp, SequenceNumber upper_bound, +13943: SequenceNumber lower_bound) +13943: : icmp_(icmp), +13943: forward_iter_(icmp), +13943: reverse_iter_(icmp), +13943: upper_bound_(upper_bound), +13943: lower_bound_(lower_bound) {} +13943: +13943: void AddTombstones(std::unique_ptr input_iter) { +13943: iters_.push_back(std::move(input_iter)); +13943: } +13943: +13943: bool IsEmpty() const { return iters_.empty(); } +13943: +13943: bool ShouldDelete(const ParsedInternalKey& parsed, +13943: RangeDelPositioningMode mode); +13943: +13943: void Invalidate() { +13943: if (!IsEmpty()) { +13943: InvalidateForwardIter(); +13943: InvalidateReverseIter(); +13943: } +13943: } +13943: +13943: +13943: +13943: bool IsRangeOverlapped(const Slice& start, const Slice& end); +13943: +13943: private: +13943: bool InStripe(SequenceNumber seq) const { +13943: return lower_bound_ <= seq && seq <= upper_bound_; +13943: } +13943: +13943: void InvalidateForwardIter() { forward_iter_.Invalidate(); } +13943: +13943: void InvalidateReverseIter() { reverse_iter_.Invalidate(); } +13943: +13943: const InternalKeyComparator* icmp_; +13943: std::vector> iters_; +13943: ForwardRangeDelIterator forward_iter_; +13943: ReverseRangeDelIterator reverse_iter_; +13943: SequenceNumber upper_bound_; +13943: SequenceNumber lower_bound_; +13943: }; +13943: +13943: const InternalKeyComparator* icmp_; +13943: +13943: private: +13943: std::set files_seen_; +13943: }; +13943: +13943: class ReadRangeDelAggregator final : public RangeDelAggregator { +13943: public: +13943: ReadRangeDelAggregator(const InternalKeyComparator* icmp, +13943: SequenceNumber upper_bound) +13943: : RangeDelAggregator(icmp), +13943: rep_(icmp, upper_bound, 0 ) {} +13943: ~ReadRangeDelAggregator() override {} +13943: +13943: using RangeDelAggregator::ShouldDelete; +13943: void AddTombstones( +13943: std::unique_ptr input_iter, +13943: const InternalKey* smallest = nullptr, +13943: const InternalKey* largest = nullptr) override; +13943: +13943: bool ShouldDelete(const ParsedInternalKey& parsed, +13943: RangeDelPositioningMode mode) final override { +13943: if (rep_.IsEmpty()) { +13943: return false; +13943: } +13943: return ShouldDeleteImpl(parsed, mode); +13943: } +13943: +13943: bool IsRangeOverlapped(const Slice& start, const Slice& end); +13943: +13943: void InvalidateRangeDelMapPositions() override { rep_.Invalidate(); } +13943: +13943: bool IsEmpty() const override { return rep_.IsEmpty(); } +13943: +13943: private: +13943: StripeRep rep_; +13943: +13943: bool ShouldDeleteImpl(const ParsedInternalKey& parsed, +13943: RangeDelPositioningMode mode); +13943: }; +13943: +13943: class CompactionRangeDelAggregator : public RangeDelAggregator { +13943: public: +13943: CompactionRangeDelAggregator(const InternalKeyComparator* icmp, +13943: const std::vector& snapshots, +13943: const std::string* full_history_ts_low = nullptr, +13943: const std::string* trim_ts = nullptr) +13943: : RangeDelAggregator(icmp), snapshots_(&snapshots) { +13943: if (full_history_ts_low) { +13943: ts_upper_bound_ = *full_history_ts_low; +13943: } +13943: if (trim_ts) { +13943: trim_ts_ = *trim_ts; +13943: +13943: +13943: if (ts_upper_bound_.empty()) { +13943: ts_upper_bound_ = trim_ts_; +13943: } else if (!trim_ts_.empty() && icmp->user_comparator()->CompareTimestamp( +13943: trim_ts_, ts_upper_bound_) < 0) { +13943: ts_upper_bound_ = trim_ts_; +13943: } +13943: } +13943: } +13943: ~CompactionRangeDelAggregator() override {} +13943: +13943: void AddTombstones( +13943: std::unique_ptr input_iter, +13943: const InternalKey* smallest = nullptr, +13943: const InternalKey* largest = nullptr) override; +13943: +13943: using RangeDelAggregator::ShouldDelete; +13943: bool ShouldDelete(const ParsedInternalKey& parsed, +13943: RangeDelPositioningMode mode) override; +13943: +13943: bool IsRangeOverlapped(const Slice& start, const Slice& end); +13943: +13943: void InvalidateRangeDelMapPositions() override { +13943: for (auto& rep : reps_) { +13943: rep.second.Invalidate(); +13943: } +13943: } +13943: +13943: bool IsEmpty() const override { +13943: for (const auto& rep : reps_) { +13943: if (!rep.second.IsEmpty()) { +13943: return false; +13943: } +13943: } +13943: return true; +13943: } +13943: # 468 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +13943: std::unique_ptr NewIterator( +13943: const Slice* lower_bound = nullptr, const Slice* upper_bound = nullptr); +13943: +13943: private: +13943: std::vector> parent_iters_; +13943: std::map reps_; +13943: +13943: const std::vector* snapshots_; +13943: +13943: Slice ts_upper_bound_{}; +13943: Slice trim_ts_{}; +13943: }; +13943: +13943: } +13943: # 14 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/snapshot_checker.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: enum class SnapshotCheckerResult : int { +13943: kInSnapshot = 0, +13943: kNotInSnapshot = 1, +13943: +13943: +13943: kSnapshotReleased = 2, +13943: }; +13943: +13943: +13943: class SnapshotChecker { +13943: public: +13943: virtual ~SnapshotChecker() {} +13943: virtual SnapshotCheckerResult CheckInSnapshot( +13943: SequenceNumber sequence, SequenceNumber snapshot_sequence) const = 0; +13943: }; +13943: +13943: class DisableGCSnapshotChecker : public SnapshotChecker { +13943: public: +13943: virtual ~DisableGCSnapshotChecker() {} +13943: SnapshotCheckerResult CheckInSnapshot( +13943: SequenceNumber , +13943: SequenceNumber ) const override { +13943: +13943: return SnapshotCheckerResult::kNotInSnapshot; +13943: } +13943: static DisableGCSnapshotChecker* Instance(); +13943: +13943: protected: +13943: explicit DisableGCSnapshotChecker() {} +13943: }; +13943: +13943: class WritePreparedTxnDB; +13943: +13943: +13943: +13943: class WritePreparedSnapshotChecker : public SnapshotChecker { +13943: public: +13943: explicit WritePreparedSnapshotChecker(WritePreparedTxnDB* txn_db); +13943: virtual ~WritePreparedSnapshotChecker() {} +13943: +13943: SnapshotCheckerResult CheckInSnapshot( +13943: SequenceNumber sequence, SequenceNumber snapshot_sequence) const override; +13943: +13943: private: +13943: const WritePreparedTxnDB* const txn_db_; +13943: }; +13943: +13943: bool DataIsDefinitelyInSnapshot(SequenceNumber seqno, SequenceNumber snapshot, +13943: const SnapshotChecker* snapshot_checker); +13943: +13943: bool DataIsDefinitelyNotInSnapshot(SequenceNumber seqno, +13943: SequenceNumber snapshot, +13943: const SnapshotChecker* snapshot_checker); +13943: +13943: } +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.h" +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: # 44 "/build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.h" +13943: class WideColumnSerialization { +13943: public: +13943: static Status Serialize(const WideColumns& columns, std::string& output); +13943: +13943: static Status Deserialize(Slice& input, WideColumns& columns); +13943: +13943: static Status GetValueOfDefaultColumn(Slice& input, Slice& value); +13943: +13943: static constexpr uint32_t kCurrentVersion = 1; +13943: }; +13943: +13943: } +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 1 +13943: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: +13943: +13943: # 1 "/usr/include/c++/14/cassert" 1 3 +13943: # 41 "/usr/include/c++/14/cassert" 3 +13943: +13943: # 42 "/usr/include/c++/14/cassert" 3 +13943: +13943: +13943: # 1 "/usr/include/assert.h" 1 3 4 +13943: # 45 "/usr/include/c++/14/cassert" 2 3 +13943: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 2 +13943: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: class SliceTransform; +13943: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: class CompactionFilter : public Customizable { +13943: public: +13943: +13943: +13943: enum ValueType { +13943: +13943: kValue, +13943: +13943: kMergeOperand, +13943: +13943: +13943: +13943: +13943: kBlobIndex, +13943: +13943: kWideColumnEntity, +13943: }; +13943: +13943: +13943: +13943: +13943: enum class Decision { +13943: +13943: kKeep, +13943: # 89 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: kRemove, +13943: +13943: +13943: +13943: +13943: +13943: kChangeValue, +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: kRemoveAndSkipUntil, +13943: +13943: +13943: +13943: kChangeBlobIndex, +13943: +13943: +13943: +13943: kIOError, +13943: +13943: +13943: +13943: +13943: +13943: kPurge, +13943: +13943: +13943: +13943: +13943: +13943: +13943: kChangeWideColumnEntity, +13943: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: kUndetermined, +13943: }; +13943: +13943: +13943: enum class BlobDecision { kKeep, kChangeValue, kCorruption, kIOError }; +13943: +13943: +13943: struct Context { +13943: +13943: +13943: bool is_full_compaction; +13943: +13943: +13943: bool is_manual_compaction; +13943: +13943: +13943: int input_start_level = kUnknownStartLevel; +13943: +13943: uint32_t column_family_id; +13943: +13943: TableFileCreationReason reason; +13943: +13943: +13943: +13943: +13943: TablePropertiesCollection input_table_properties; +13943: +13943: static const int kUnknownStartLevel = -1; +13943: }; +13943: +13943: virtual ~CompactionFilter() {} +13943: static const char* Type() { return "CompactionFilter"; } +13943: static Status CreateFromString(const ConfigOptions& config_options, +13943: const std::string& name, +13943: const CompactionFilter** result); +13943: # 201 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: virtual bool Filter(int , const Slice& , +13943: const Slice& , +13943: std::string* , +13943: bool* ) const { +13943: return false; +13943: } +13943: # 217 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: virtual bool FilterMergeOperand(int , const Slice& , +13943: const Slice& ) const { +13943: return false; +13943: } +13943: # 234 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: virtual Decision FilterV2(int level, const Slice& key, ValueType value_type, +13943: const Slice& existing_value, std::string* new_value, +13943: std::string* ) const { +13943: switch (value_type) { +13943: case ValueType::kValue: { +13943: bool value_changed = false; +13943: bool rv = Filter(level, key, existing_value, new_value, &value_changed); +13943: if (rv) { +13943: return Decision::kRemove; +13943: } +13943: return value_changed ? Decision::kChangeValue : Decision::kKeep; +13943: } +13943: +13943: case ValueType::kMergeOperand: { +13943: bool rv = FilterMergeOperand(level, key, existing_value); +13943: return rv ? Decision::kRemove : Decision::kKeep; +13943: } +13943: +13943: case ValueType::kBlobIndex: +13943: return Decision::kKeep; +13943: +13943: default: +13943: +13943: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: (static_cast ( +13943: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: false +13943: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: "false" +13943: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: ; +13943: return Decision::kKeep; +13943: } +13943: } +13943: # 281 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: virtual Decision FilterV3( +13943: int level, const Slice& key, ValueType value_type, +13943: const Slice* existing_value, const WideColumns* existing_columns, +13943: std::string* new_value, +13943: std::vector>* , +13943: std::string* skip_until) const { +13943: +13943: +13943: +13943: +13943: +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: (static_cast ( +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: !existing_value || !existing_columns +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: "!existing_value || !existing_columns" +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: ; +13943: +13943: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: (static_cast ( +13943: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: value_type == ValueType::kWideColumnEntity || existing_value +13943: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: "value_type == ValueType::kWideColumnEntity || existing_value" +13943: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: ; +13943: +13943: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: (static_cast ( +13943: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: value_type != ValueType::kWideColumnEntity || existing_columns +13943: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: "value_type != ValueType::kWideColumnEntity || existing_columns" +13943: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: ; +13943: +13943: if (value_type == ValueType::kWideColumnEntity) { +13943: return Decision::kKeep; +13943: } +13943: +13943: return FilterV2(level, key, value_type, *existing_value, new_value, +13943: skip_until); +13943: } +13943: +13943: +13943: virtual BlobDecision PrepareBlobOutput(const Slice& , +13943: const Slice& , +13943: std::string* ) const { +13943: return BlobDecision::kKeep; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool IgnoreSnapshots() const { return true; } +13943: +13943: +13943: +13943: const char* Name() const override = 0; +13943: +13943: +13943: virtual bool IsStackedBlobDbInternalCompactionFilter() const { return false; } +13943: # 334 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: virtual Decision FilterBlobByKey(int , const Slice& , +13943: std::string* , +13943: std::string* ) const { +13943: return Decision::kUndetermined; +13943: } +13943: }; +13943: # 349 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +13943: class CompactionFilterFactory : public Customizable { +13943: public: +13943: virtual ~CompactionFilterFactory() {} +13943: static const char* Type() { return "CompactionFilterFactory"; } +13943: static Status CreateFromString( +13943: const ConfigOptions& config_options, const std::string& name, +13943: std::shared_ptr* result); +13943: +13943: +13943: +13943: +13943: virtual bool ShouldFilterTableFileCreation( +13943: TableFileCreationReason reason) const { +13943: +13943: +13943: return reason == TableFileCreationReason::kCompaction; +13943: } +13943: +13943: virtual std::unique_ptr CreateCompactionFilter( +13943: const CompactionFilter::Context& context) = 0; +13943: +13943: +13943: const char* Name() const override = 0; +13943: }; +13943: +13943: } +13943: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/variant" 1 3 +13943: # 32 "/usr/include/c++/14/variant" 3 +13943: +13943: # 33 "/usr/include/c++/14/variant" 3 +13943: +13943: +13943: +13943: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +13943: # 47 "/usr/include/c++/14/bits/version.h" 3 +13943: +13943: # 48 "/usr/include/c++/14/bits/version.h" 3 +13943: # 37 "/usr/include/c++/14/variant" 2 3 +13943: # 59 "/usr/include/c++/14/variant" 3 +13943: +13943: # 59 "/usr/include/c++/14/variant" 3 +13943: namespace std __attribute__ ((__visibility__ ("default"))) +13943: { +13943: +13943: +13943: template class tuple; +13943: template class variant; +13943: template struct hash; +13943: +13943: template +13943: struct variant_size; +13943: +13943: template +13943: struct variant_size : variant_size<_Variant> {}; +13943: +13943: template +13943: struct variant_size : variant_size<_Variant> {}; +13943: +13943: template +13943: struct variant_size : variant_size<_Variant> {}; +13943: +13943: template +13943: struct variant_size> +13943: : std::integral_constant {}; +13943: +13943: template +13943: inline constexpr size_t variant_size_v = variant_size<_Variant>::value; +13943: +13943: template +13943: inline constexpr size_t +13943: variant_size_v> = sizeof...(_Types); +13943: +13943: template +13943: inline constexpr size_t +13943: variant_size_v> = sizeof...(_Types); +13943: +13943: template +13943: struct variant_alternative; +13943: +13943: template +13943: struct variant_alternative<_Np, variant<_Types...>> +13943: { +13943: static_assert(_Np < sizeof...(_Types)); +13943: +13943: using type = typename _Nth_type<_Np, _Types...>::type; +13943: }; +13943: +13943: template +13943: using variant_alternative_t = +13943: typename variant_alternative<_Np, _Variant>::type; +13943: +13943: template +13943: struct variant_alternative<_Np, const _Variant> +13943: { using type = const variant_alternative_t<_Np, _Variant>; }; +13943: +13943: template +13943: struct variant_alternative<_Np, volatile _Variant> +13943: { using type = volatile variant_alternative_t<_Np, _Variant>; }; +13943: +13943: template +13943: struct variant_alternative<_Np, const volatile _Variant> +13943: { using type = const volatile variant_alternative_t<_Np, _Variant>; }; +13943: +13943: inline constexpr size_t variant_npos = -1; +13943: +13943: template +13943: constexpr variant_alternative_t<_Np, variant<_Types...>>& +13943: get(variant<_Types...>&); +13943: +13943: template +13943: constexpr variant_alternative_t<_Np, variant<_Types...>>&& +13943: get(variant<_Types...>&&); +13943: +13943: template +13943: constexpr variant_alternative_t<_Np, variant<_Types...>> const& +13943: get(const variant<_Types...>&); +13943: +13943: template +13943: constexpr variant_alternative_t<_Np, variant<_Types...>> const&& +13943: get(const variant<_Types...>&&); +13943: +13943: template +13943: constexpr decltype(auto) +13943: __do_visit(_Visitor&& __visitor, _Variants&&... __variants); +13943: +13943: template +13943: +13943: decltype(auto) +13943: __variant_cast(_Tp&& __rhs) +13943: { +13943: if constexpr (is_lvalue_reference_v<_Tp>) +13943: { +13943: if constexpr (is_const_v>) +13943: return static_cast&>(__rhs); +13943: else +13943: return static_cast&>(__rhs); +13943: } +13943: else +13943: return static_cast&&>(__rhs); +13943: } +13943: +13943: namespace __detail +13943: { +13943: namespace __variant +13943: { +13943: +13943: struct __variant_cookie {}; +13943: +13943: struct __variant_idx_cookie { using type = __variant_idx_cookie; }; +13943: +13943: template struct __deduce_visit_result { using type = _Tp; }; +13943: +13943: +13943: template +13943: constexpr void +13943: __raw_visit(_Visitor&& __visitor, _Variants&&... __variants) +13943: { +13943: std::__do_visit<__variant_cookie>(std::forward<_Visitor>(__visitor), +13943: std::forward<_Variants>(__variants)...); +13943: } +13943: +13943: +13943: template +13943: constexpr void +13943: __raw_idx_visit(_Visitor&& __visitor, _Variants&&... __variants) +13943: { +13943: std::__do_visit<__variant_idx_cookie>(std::forward<_Visitor>(__visitor), +13943: std::forward<_Variants>(__variants)...); +13943: } +13943: +13943: +13943: +13943: template +13943: constexpr std::variant<_Types...>& +13943: __as(std::variant<_Types...>& __v) noexcept +13943: { return __v; } +13943: +13943: template +13943: constexpr const std::variant<_Types...>& +13943: __as(const std::variant<_Types...>& __v) noexcept +13943: { return __v; } +13943: +13943: template +13943: constexpr std::variant<_Types...>&& +13943: __as(std::variant<_Types...>&& __v) noexcept +13943: { return std::move(__v); } +13943: +13943: template +13943: constexpr const std::variant<_Types...>&& +13943: __as(const std::variant<_Types...>&& __v) noexcept +13943: { return std::move(__v); } +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template> +13943: struct _Uninitialized; +13943: +13943: template +13943: struct _Uninitialized<_Type, true> +13943: { +13943: template +13943: constexpr +13943: _Uninitialized(in_place_index_t<0>, _Args&&... __args) +13943: : _M_storage(std::forward<_Args>(__args)...) +13943: { } +13943: +13943: constexpr const _Type& _M_get() const & noexcept +13943: { return _M_storage; } +13943: +13943: constexpr _Type& _M_get() & noexcept +13943: { return _M_storage; } +13943: +13943: constexpr const _Type&& _M_get() const && noexcept +13943: { return std::move(_M_storage); } +13943: +13943: constexpr _Type&& _M_get() && noexcept +13943: { return std::move(_M_storage); } +13943: +13943: _Type _M_storage; +13943: }; +13943: +13943: template +13943: struct _Uninitialized<_Type, false> +13943: { +13943: # 279 "/usr/include/c++/14/variant" 3 +13943: template +13943: constexpr +13943: _Uninitialized(in_place_index_t<0>, _Args&&... __args) +13943: { +13943: ::new ((void*)std::addressof(_M_storage)) +13943: _Type(std::forward<_Args>(__args)...); +13943: } +13943: +13943: const _Type& _M_get() const & noexcept +13943: { return *_M_storage._M_ptr(); } +13943: +13943: _Type& _M_get() & noexcept +13943: { return *_M_storage._M_ptr(); } +13943: +13943: const _Type&& _M_get() const && noexcept +13943: { return std::move(*_M_storage._M_ptr()); } +13943: +13943: _Type&& _M_get() && noexcept +13943: { return std::move(*_M_storage._M_ptr()); } +13943: +13943: __gnu_cxx::__aligned_membuf<_Type> _M_storage; +13943: +13943: }; +13943: +13943: template +13943: constexpr decltype(auto) +13943: __get_n(_Union&& __u) noexcept +13943: { +13943: if constexpr (_Np == 0) +13943: return std::forward<_Union>(__u)._M_first._M_get(); +13943: else if constexpr (_Np == 1) +13943: return std::forward<_Union>(__u)._M_rest._M_first._M_get(); +13943: else if constexpr (_Np == 2) +13943: return std::forward<_Union>(__u)._M_rest._M_rest._M_first._M_get(); +13943: else +13943: return __variant::__get_n<_Np - 3>( +13943: std::forward<_Union>(__u)._M_rest._M_rest._M_rest); +13943: } +13943: +13943: +13943: template +13943: constexpr decltype(auto) +13943: __get(_Variant&& __v) noexcept +13943: { return __variant::__get_n<_Np>(std::forward<_Variant>(__v)._M_u); } +13943: +13943: +13943: template +13943: constexpr decltype(auto) +13943: __construct_n(_Union& __u) noexcept +13943: { +13943: if constexpr (_Np == 0) +13943: return &__u._M_first; +13943: else if constexpr (_Np == 1) +13943: { +13943: std::_Construct(&__u._M_rest); +13943: return &__u._M_rest._M_first; +13943: } +13943: else if constexpr (_Np == 2) +13943: { +13943: std::_Construct(&__u._M_rest); +13943: std::_Construct(&__u._M_rest._M_rest); +13943: return &__u._M_rest._M_rest._M_first; +13943: } +13943: else +13943: { +13943: std::_Construct(&__u._M_rest); +13943: std::_Construct(&__u._M_rest._M_rest); +13943: std::_Construct(&__u._M_rest._M_rest._M_rest); +13943: return __variant::__construct_n<_Np - 3>(__u._M_rest._M_rest._M_rest); +13943: } +13943: } +13943: +13943: template +13943: struct _Traits +13943: { +13943: static constexpr bool _S_default_ctor = +13943: is_default_constructible_v::type>; +13943: static constexpr bool _S_copy_ctor = +13943: (is_copy_constructible_v<_Types> && ...); +13943: static constexpr bool _S_move_ctor = +13943: (is_move_constructible_v<_Types> && ...); +13943: static constexpr bool _S_copy_assign = +13943: _S_copy_ctor +13943: && (is_copy_assignable_v<_Types> && ...); +13943: static constexpr bool _S_move_assign = +13943: _S_move_ctor +13943: && (is_move_assignable_v<_Types> && ...); +13943: +13943: static constexpr bool _S_trivial_dtor = +13943: (is_trivially_destructible_v<_Types> && ...); +13943: static constexpr bool _S_trivial_copy_ctor = +13943: (is_trivially_copy_constructible_v<_Types> && ...); +13943: static constexpr bool _S_trivial_move_ctor = +13943: (is_trivially_move_constructible_v<_Types> && ...); +13943: static constexpr bool _S_trivial_copy_assign = +13943: _S_trivial_dtor && _S_trivial_copy_ctor +13943: && (is_trivially_copy_assignable_v<_Types> && ...); +13943: static constexpr bool _S_trivial_move_assign = +13943: _S_trivial_dtor && _S_trivial_move_ctor +13943: && (is_trivially_move_assignable_v<_Types> && ...); +13943: +13943: +13943: +13943: static constexpr bool _S_nothrow_default_ctor = +13943: is_nothrow_default_constructible_v< +13943: typename _Nth_type<0, _Types...>::type>; +13943: static constexpr bool _S_nothrow_copy_ctor = false; +13943: static constexpr bool _S_nothrow_move_ctor = +13943: (is_nothrow_move_constructible_v<_Types> && ...); +13943: static constexpr bool _S_nothrow_copy_assign = false; +13943: static constexpr bool _S_nothrow_move_assign = +13943: _S_nothrow_move_ctor +13943: && (is_nothrow_move_assignable_v<_Types> && ...); +13943: }; +13943: +13943: +13943: template +13943: union _Variadic_union +13943: { +13943: _Variadic_union() = default; +13943: +13943: template +13943: _Variadic_union(in_place_index_t<_Np>, _Args&&...) = delete; +13943: }; +13943: +13943: template +13943: union _Variadic_union<__trivially_destructible, _First, _Rest...> +13943: { +13943: constexpr _Variadic_union() : _M_rest() { } +13943: +13943: template +13943: constexpr +13943: _Variadic_union(in_place_index_t<0>, _Args&&... __args) +13943: : _M_first(in_place_index<0>, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Variadic_union(in_place_index_t<_Np>, _Args&&... __args) +13943: : _M_rest(in_place_index<_Np-1>, std::forward<_Args>(__args)...) +13943: { } +13943: # 434 "/usr/include/c++/14/variant" 3 +13943: _Uninitialized<_First> _M_first; +13943: _Variadic_union<__trivially_destructible, _Rest...> _M_rest; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: template +13943: struct _Never_valueless_alt +13943: : __and_, is_trivially_copyable<_Tp>> +13943: { }; +13943: # 458 "/usr/include/c++/14/variant" 3 +13943: template +13943: constexpr bool __never_valueless() +13943: { +13943: return _Traits<_Types...>::_S_move_assign +13943: && (_Never_valueless_alt<_Types>::value && ...); +13943: } +13943: +13943: +13943: template +13943: struct _Variant_storage; +13943: +13943: template +13943: using __select_index = +13943: typename __select_int::_Select_int_base::type::value_type; +13943: +13943: template +13943: struct _Variant_storage +13943: { +13943: constexpr +13943: _Variant_storage() +13943: : _M_index(static_cast<__index_type>(variant_npos)) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Variant_storage(in_place_index_t<_Np>, _Args&&... __args) +13943: : _M_u(in_place_index<_Np>, std::forward<_Args>(__args)...), +13943: _M_index{_Np} +13943: { } +13943: +13943: constexpr void +13943: _M_reset() +13943: { +13943: if (!_M_valid()) [[__unlikely__]] +13943: return; +13943: +13943: std::__do_visit([](auto&& __this_mem) mutable +13943: { +13943: std::_Destroy(std::__addressof(__this_mem)); +13943: }, __variant_cast<_Types...>(*this)); +13943: +13943: _M_index = static_cast<__index_type>(variant_npos); +13943: } +13943: +13943: +13943: ~_Variant_storage() +13943: { _M_reset(); } +13943: +13943: constexpr bool +13943: _M_valid() const noexcept +13943: { +13943: if constexpr (__variant::__never_valueless<_Types...>()) +13943: return true; +13943: return this->_M_index != __index_type(variant_npos); +13943: } +13943: +13943: _Variadic_union _M_u; +13943: using __index_type = __select_index<_Types...>; +13943: __index_type _M_index; +13943: }; +13943: +13943: template +13943: struct _Variant_storage +13943: { +13943: constexpr +13943: _Variant_storage() +13943: : _M_index(static_cast<__index_type>(variant_npos)) +13943: { } +13943: +13943: template +13943: constexpr +13943: _Variant_storage(in_place_index_t<_Np>, _Args&&... __args) +13943: : _M_u(in_place_index<_Np>, std::forward<_Args>(__args)...), +13943: _M_index{_Np} +13943: { } +13943: +13943: constexpr void +13943: _M_reset() noexcept +13943: { _M_index = static_cast<__index_type>(variant_npos); } +13943: +13943: constexpr bool +13943: _M_valid() const noexcept +13943: { +13943: if constexpr (__variant::__never_valueless<_Types...>()) +13943: return true; +13943: +13943: +13943: +13943: +13943: +13943: +13943: return this->_M_index != static_cast<__index_type>(variant_npos); +13943: } +13943: +13943: _Variadic_union _M_u; +13943: using __index_type = __select_index<_Types...>; +13943: __index_type _M_index; +13943: }; +13943: +13943: +13943: template +13943: +13943: inline void +13943: __emplace(_Variant_storage<_Triv, _Types...>& __v, _Args&&... __args) +13943: { +13943: __v._M_reset(); +13943: auto* __addr = __variant::__construct_n<_Np>(__v._M_u); +13943: std::_Construct(__addr, in_place_index<0>, +13943: std::forward<_Args>(__args)...); +13943: +13943: __v._M_index = _Np; +13943: } +13943: +13943: template +13943: using _Variant_storage_alias = +13943: _Variant_storage<_Traits<_Types...>::_S_trivial_dtor, _Types...>; +13943: +13943: +13943: +13943: +13943: template +13943: struct _Copy_ctor_base : _Variant_storage_alias<_Types...> +13943: { +13943: using _Base = _Variant_storage_alias<_Types...>; +13943: using _Base::_Base; +13943: +13943: +13943: _Copy_ctor_base(const _Copy_ctor_base& __rhs) +13943: noexcept(_Traits<_Types...>::_S_nothrow_copy_ctor) +13943: { +13943: __variant::__raw_idx_visit( +13943: [this](auto&& __rhs_mem, auto __rhs_index) mutable +13943: { +13943: constexpr size_t __j = __rhs_index; +13943: if constexpr (__j != variant_npos) +13943: std::_Construct(std::__addressof(this->_M_u), +13943: in_place_index<__j>, __rhs_mem); +13943: }, __variant_cast<_Types...>(__rhs)); +13943: this->_M_index = __rhs._M_index; +13943: } +13943: +13943: _Copy_ctor_base(_Copy_ctor_base&&) = default; +13943: _Copy_ctor_base& operator=(const _Copy_ctor_base&) = default; +13943: _Copy_ctor_base& operator=(_Copy_ctor_base&&) = default; +13943: }; +13943: +13943: template +13943: struct _Copy_ctor_base : _Variant_storage_alias<_Types...> +13943: { +13943: using _Base = _Variant_storage_alias<_Types...>; +13943: using _Base::_Base; +13943: }; +13943: +13943: template +13943: using _Copy_ctor_alias = +13943: _Copy_ctor_base<_Traits<_Types...>::_S_trivial_copy_ctor, _Types...>; +13943: +13943: template +13943: struct _Move_ctor_base : _Copy_ctor_alias<_Types...> +13943: { +13943: using _Base = _Copy_ctor_alias<_Types...>; +13943: using _Base::_Base; +13943: +13943: +13943: _Move_ctor_base(_Move_ctor_base&& __rhs) +13943: noexcept(_Traits<_Types...>::_S_nothrow_move_ctor) +13943: { +13943: __variant::__raw_idx_visit( +13943: [this](auto&& __rhs_mem, auto __rhs_index) mutable +13943: { +13943: constexpr size_t __j = __rhs_index; +13943: if constexpr (__j != variant_npos) +13943: std::_Construct(std::__addressof(this->_M_u), +13943: in_place_index<__j>, +13943: std::forward(__rhs_mem)); +13943: }, __variant_cast<_Types...>(std::move(__rhs))); +13943: this->_M_index = __rhs._M_index; +13943: } +13943: +13943: _Move_ctor_base(const _Move_ctor_base&) = default; +13943: _Move_ctor_base& operator=(const _Move_ctor_base&) = default; +13943: _Move_ctor_base& operator=(_Move_ctor_base&&) = default; +13943: }; +13943: +13943: template +13943: struct _Move_ctor_base : _Copy_ctor_alias<_Types...> +13943: { +13943: using _Base = _Copy_ctor_alias<_Types...>; +13943: using _Base::_Base; +13943: }; +13943: +13943: template +13943: using _Move_ctor_alias = +13943: _Move_ctor_base<_Traits<_Types...>::_S_trivial_move_ctor, _Types...>; +13943: +13943: template +13943: struct _Copy_assign_base : _Move_ctor_alias<_Types...> +13943: { +13943: using _Base = _Move_ctor_alias<_Types...>; +13943: using _Base::_Base; +13943: +13943: +13943: _Copy_assign_base& +13943: operator=(const _Copy_assign_base& __rhs) +13943: noexcept(_Traits<_Types...>::_S_nothrow_copy_assign) +13943: { +13943: __variant::__raw_idx_visit( +13943: [this](auto&& __rhs_mem, auto __rhs_index) mutable +13943: { +13943: constexpr size_t __j = __rhs_index; +13943: if constexpr (__j == variant_npos) +13943: this->_M_reset(); +13943: else if (this->_M_index == __j) +13943: __variant::__get<__j>(*this) = __rhs_mem; +13943: else +13943: { +13943: using _Tj = typename _Nth_type<__j, _Types...>::type; +13943: if constexpr (is_nothrow_copy_constructible_v<_Tj> +13943: || !is_nothrow_move_constructible_v<_Tj>) +13943: __variant::__emplace<__j>(*this, __rhs_mem); +13943: else +13943: { +13943: using _Variant = variant<_Types...>; +13943: _Variant& __self = __variant_cast<_Types...>(*this); +13943: __self = _Variant(in_place_index<__j>, __rhs_mem); +13943: } +13943: } +13943: }, __variant_cast<_Types...>(__rhs)); +13943: return *this; +13943: } +13943: +13943: _Copy_assign_base(const _Copy_assign_base&) = default; +13943: _Copy_assign_base(_Copy_assign_base&&) = default; +13943: _Copy_assign_base& operator=(_Copy_assign_base&&) = default; +13943: }; +13943: +13943: template +13943: struct _Copy_assign_base : _Move_ctor_alias<_Types...> +13943: { +13943: using _Base = _Move_ctor_alias<_Types...>; +13943: using _Base::_Base; +13943: }; +13943: +13943: template +13943: using _Copy_assign_alias = +13943: _Copy_assign_base<_Traits<_Types...>::_S_trivial_copy_assign, _Types...>; +13943: +13943: template +13943: struct _Move_assign_base : _Copy_assign_alias<_Types...> +13943: { +13943: using _Base = _Copy_assign_alias<_Types...>; +13943: using _Base::_Base; +13943: +13943: +13943: _Move_assign_base& +13943: operator=(_Move_assign_base&& __rhs) +13943: noexcept(_Traits<_Types...>::_S_nothrow_move_assign) +13943: { +13943: __variant::__raw_idx_visit( +13943: [this](auto&& __rhs_mem, auto __rhs_index) mutable +13943: { +13943: constexpr size_t __j = __rhs_index; +13943: if constexpr (__j != variant_npos) +13943: { +13943: if (this->_M_index == __j) +13943: __variant::__get<__j>(*this) = std::move(__rhs_mem); +13943: else +13943: { +13943: using _Tj = typename _Nth_type<__j, _Types...>::type; +13943: if constexpr (is_nothrow_move_constructible_v<_Tj>) +13943: __variant::__emplace<__j>(*this, std::move(__rhs_mem)); +13943: else +13943: { +13943: using _Variant = variant<_Types...>; +13943: _Variant& __self = __variant_cast<_Types...>(*this); +13943: __self.template emplace<__j>(std::move(__rhs_mem)); +13943: } +13943: } +13943: } +13943: else +13943: this->_M_reset(); +13943: }, __variant_cast<_Types...>(__rhs)); +13943: return *this; +13943: } +13943: +13943: _Move_assign_base(const _Move_assign_base&) = default; +13943: _Move_assign_base(_Move_assign_base&&) = default; +13943: _Move_assign_base& operator=(const _Move_assign_base&) = default; +13943: }; +13943: +13943: template +13943: struct _Move_assign_base : _Copy_assign_alias<_Types...> +13943: { +13943: using _Base = _Copy_assign_alias<_Types...>; +13943: using _Base::_Base; +13943: }; +13943: +13943: template +13943: using _Move_assign_alias = +13943: _Move_assign_base<_Traits<_Types...>::_S_trivial_move_assign, _Types...>; +13943: +13943: template +13943: struct _Variant_base : _Move_assign_alias<_Types...> +13943: { +13943: using _Base = _Move_assign_alias<_Types...>; +13943: +13943: constexpr +13943: _Variant_base() noexcept(_Traits<_Types...>::_S_nothrow_default_ctor) +13943: : _Variant_base(in_place_index<0>) { } +13943: +13943: template +13943: constexpr explicit +13943: _Variant_base(in_place_index_t<_Np> __i, _Args&&... __args) +13943: : _Base(__i, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: _Variant_base(const _Variant_base&) = default; +13943: _Variant_base(_Variant_base&&) = default; +13943: _Variant_base& operator=(const _Variant_base&) = default; +13943: _Variant_base& operator=(_Variant_base&&) = default; +13943: }; +13943: +13943: template +13943: inline constexpr bool __exactly_once +13943: = std::__find_uniq_type_in_pack<_Tp, _Types...>() < sizeof...(_Types); +13943: +13943: +13943: template struct _Arr { _Ti _M_x[1]; }; +13943: +13943: +13943: template +13943: struct _Build_FUN +13943: { +13943: +13943: +13943: void _S_fun() = delete; +13943: }; +13943: +13943: +13943: template +13943: struct _Build_FUN<_Ind, _Tp, _Ti, +13943: void_t{{std::declval<_Tp>()}})>> +13943: { +13943: +13943: static integral_constant _S_fun(_Ti); +13943: }; +13943: +13943: template>> +13943: struct _Build_FUNs; +13943: +13943: template +13943: struct _Build_FUNs<_Tp, variant<_Ti...>, index_sequence<_Ind...>> +13943: : _Build_FUN<_Ind, _Tp, _Ti>... +13943: { +13943: using _Build_FUN<_Ind, _Tp, _Ti>::_S_fun...; +13943: }; +13943: +13943: +13943: +13943: template +13943: using _FUN_type +13943: = decltype(_Build_FUNs<_Tp, _Variant>::_S_fun(std::declval<_Tp>())); +13943: +13943: +13943: template +13943: inline constexpr size_t +13943: __accepted_index = variant_npos; +13943: +13943: template +13943: inline constexpr size_t +13943: __accepted_index<_Tp, _Variant, void_t<_FUN_type<_Tp, _Variant>>> +13943: = _FUN_type<_Tp, _Variant>::value; +13943: +13943: template> +13943: inline constexpr bool +13943: __extra_visit_slot_needed = false; +13943: +13943: template +13943: inline constexpr bool +13943: __extra_visit_slot_needed<__variant_cookie, _Var, variant<_Types...>> +13943: = !__variant::__never_valueless<_Types...>(); +13943: +13943: template +13943: inline constexpr bool +13943: __extra_visit_slot_needed<__variant_idx_cookie, _Var, variant<_Types...>> +13943: = !__variant::__never_valueless<_Types...>(); +13943: +13943: +13943: template +13943: struct _Multi_array; +13943: +13943: +13943: template +13943: struct _Multi_array<_Tp> +13943: { +13943: template +13943: struct __untag_result +13943: : false_type +13943: { using element_type = _Tp; }; +13943: +13943: #pragma GCC diagnostic push +13943: #pragma GCC diagnostic ignored "-Wignored-qualifiers" +13943: template +13943: struct __untag_result +13943: : false_type +13943: { using element_type = void(*)(_Args...); }; +13943: #pragma GCC diagnostic pop +13943: +13943: template +13943: struct __untag_result<__variant_cookie(*)(_Args...)> +13943: : false_type +13943: { using element_type = void(*)(_Args...); }; +13943: +13943: template +13943: struct __untag_result<__variant_idx_cookie(*)(_Args...)> +13943: : false_type +13943: { using element_type = void(*)(_Args...); }; +13943: +13943: template +13943: struct __untag_result<__deduce_visit_result<_Res>(*)(_Args...)> +13943: : true_type +13943: { using element_type = _Res(*)(_Args...); }; +13943: +13943: using __result_is_deduced = __untag_result<_Tp>; +13943: +13943: constexpr const typename __untag_result<_Tp>::element_type& +13943: _M_access() const +13943: { return _M_data; } +13943: +13943: typename __untag_result<_Tp>::element_type _M_data; +13943: }; +13943: +13943: +13943: template +13943: struct _Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...> +13943: { +13943: static constexpr size_t __index = +13943: sizeof...(_Variants) - sizeof...(__rest) - 1; +13943: +13943: using _Variant = typename _Nth_type<__index, _Variants...>::type; +13943: +13943: static constexpr int __do_cookie = +13943: __extra_visit_slot_needed<_Ret, _Variant> ? 1 : 0; +13943: +13943: using _Tp = _Ret(*)(_Visitor, _Variants...); +13943: +13943: template +13943: constexpr decltype(auto) +13943: _M_access(size_t __first_index, _Args... __rest_indices) const +13943: { +13943: return _M_arr[__first_index + __do_cookie] +13943: ._M_access(__rest_indices...); +13943: } +13943: +13943: _Multi_array<_Tp, __rest...> _M_arr[__first + __do_cookie]; +13943: }; +13943: # 949 "/usr/include/c++/14/variant" 3 +13943: template +13943: struct __gen_vtable_impl; +13943: # 959 "/usr/include/c++/14/variant" 3 +13943: template +13943: struct __gen_vtable_impl< +13943: _Multi_array<_Result_type (*)(_Visitor, _Variants...), __dimensions...>, +13943: std::index_sequence<__indices...>> +13943: { +13943: using _Next = +13943: remove_reference_t::type>; +13943: using _Array_type = +13943: _Multi_array<_Result_type (*)(_Visitor, _Variants...), +13943: __dimensions...>; +13943: +13943: static constexpr _Array_type +13943: _S_apply() +13943: { +13943: _Array_type __vtable{}; +13943: _S_apply_all_alts( +13943: __vtable, make_index_sequence>()); +13943: return __vtable; +13943: } +13943: +13943: template +13943: static constexpr void +13943: _S_apply_all_alts(_Array_type& __vtable, +13943: std::index_sequence<__var_indices...>) +13943: { +13943: if constexpr (__extra_visit_slot_needed<_Result_type, _Next>) +13943: (_S_apply_single_alt( +13943: __vtable._M_arr[__var_indices + 1], +13943: &(__vtable._M_arr[0])), ...); +13943: else +13943: (_S_apply_single_alt( +13943: __vtable._M_arr[__var_indices]), ...); +13943: } +13943: +13943: template +13943: static constexpr void +13943: _S_apply_single_alt(_Tp& __element, _Tp* __cookie_element = nullptr) +13943: { +13943: if constexpr (__do_cookie) +13943: { +13943: __element = __gen_vtable_impl< +13943: _Tp, +13943: std::index_sequence<__indices..., __index>>::_S_apply(); +13943: *__cookie_element = __gen_vtable_impl< +13943: _Tp, +13943: std::index_sequence<__indices..., variant_npos>>::_S_apply(); +13943: } +13943: else +13943: { +13943: auto __tmp_element = __gen_vtable_impl< +13943: remove_reference_t, +13943: std::index_sequence<__indices..., __index>>::_S_apply(); +13943: static_assert(is_same_v<_Tp, decltype(__tmp_element)>, +13943: "std::visit requires the visitor to have the same " +13943: "return type for all alternatives of a variant"); +13943: __element = __tmp_element; +13943: } +13943: } +13943: }; +13943: +13943: +13943: +13943: +13943: template +13943: struct __gen_vtable_impl< +13943: _Multi_array<_Result_type (*)(_Visitor, _Variants...)>, +13943: std::index_sequence<__indices...>> +13943: { +13943: using _Array_type = +13943: _Multi_array<_Result_type (*)(_Visitor, _Variants...)>; +13943: +13943: template +13943: static constexpr decltype(auto) +13943: __element_by_index_or_cookie(_Variant&& __var) noexcept +13943: { +13943: if constexpr (__index != variant_npos) +13943: return __variant::__get<__index>(std::forward<_Variant>(__var)); +13943: else +13943: return __variant_cookie{}; +13943: } +13943: +13943: static constexpr decltype(auto) +13943: __visit_invoke(_Visitor&& __visitor, _Variants... __vars) +13943: { +13943: if constexpr (is_same_v<_Result_type, __variant_idx_cookie>) +13943: +13943: +13943: std::__invoke(std::forward<_Visitor>(__visitor), +13943: __element_by_index_or_cookie<__indices>( +13943: std::forward<_Variants>(__vars))..., +13943: integral_constant()...); +13943: else if constexpr (is_same_v<_Result_type, __variant_cookie>) +13943: +13943: std::__invoke(std::forward<_Visitor>(__visitor), +13943: __element_by_index_or_cookie<__indices>( +13943: std::forward<_Variants>(__vars))...); +13943: else if constexpr (_Array_type::__result_is_deduced::value) +13943: +13943: return std::__invoke(std::forward<_Visitor>(__visitor), +13943: __element_by_index_or_cookie<__indices>( +13943: std::forward<_Variants>(__vars))...); +13943: else +13943: return std::__invoke_r<_Result_type>( +13943: std::forward<_Visitor>(__visitor), +13943: __variant::__get<__indices>(std::forward<_Variants>(__vars))...); +13943: } +13943: +13943: static constexpr auto +13943: _S_apply() +13943: { +13943: if constexpr (_Array_type::__result_is_deduced::value) +13943: { +13943: constexpr bool __visit_ret_type_mismatch = +13943: !is_same_v(), +13943: std::declval<_Variants>()...))>; +13943: if constexpr (__visit_ret_type_mismatch) +13943: { +13943: struct __cannot_match {}; +13943: return __cannot_match{}; +13943: } +13943: else +13943: return _Array_type{&__visit_invoke}; +13943: } +13943: else +13943: return _Array_type{&__visit_invoke}; +13943: } +13943: }; +13943: +13943: template +13943: struct __gen_vtable +13943: { +13943: using _Array_type = +13943: _Multi_array<_Result_type (*)(_Visitor, _Variants...), +13943: variant_size_v>...>; +13943: +13943: static constexpr _Array_type _S_vtable +13943: = __gen_vtable_impl<_Array_type, std::index_sequence<>>::_S_apply(); +13943: }; +13943: +13943: template +13943: struct _Base_dedup : public _Tp { }; +13943: +13943: template +13943: struct _Variant_hash_base; +13943: +13943: template +13943: struct _Variant_hash_base, +13943: std::index_sequence<__indices...>> +13943: : _Base_dedup<__indices, __poison_hash>>... { }; +13943: +13943: +13943: template())), +13943: typename _Tp = variant_alternative_t<_Np, remove_reference_t<_AsV>>> +13943: using __get_t +13943: = __conditional_t, _Tp&, _Tp&&>; +13943: +13943: +13943: template +13943: using __visit_result_t +13943: = invoke_result_t<_Visitor, __get_t<0, _Variants>...>; +13943: +13943: template +13943: constexpr inline bool __same_types = (is_same_v<_Tp, _Types> && ...); +13943: +13943: template +13943: constexpr bool __check_visitor_results(std::index_sequence<_Idxs...>) +13943: { +13943: return __same_types< +13943: invoke_result_t<_Visitor, __get_t<_Idxs, _Variant>>... +13943: >; +13943: } +13943: +13943: } +13943: } +13943: +13943: template +13943: constexpr bool +13943: holds_alternative(const variant<_Types...>& __v) noexcept +13943: { +13943: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +13943: "T must occur exactly once in alternatives"); +13943: return __v.index() == std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: } +13943: +13943: template +13943: constexpr _Tp& +13943: get(variant<_Types...>& __v) +13943: { +13943: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +13943: "T must occur exactly once in alternatives"); +13943: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: return std::get<__n>(__v); +13943: } +13943: +13943: template +13943: constexpr _Tp&& +13943: get(variant<_Types...>&& __v) +13943: { +13943: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +13943: "T must occur exactly once in alternatives"); +13943: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: return std::get<__n>(std::move(__v)); +13943: } +13943: +13943: template +13943: constexpr const _Tp& +13943: get(const variant<_Types...>& __v) +13943: { +13943: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +13943: "T must occur exactly once in alternatives"); +13943: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: return std::get<__n>(__v); +13943: } +13943: +13943: template +13943: constexpr const _Tp&& +13943: get(const variant<_Types...>&& __v) +13943: { +13943: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +13943: "T must occur exactly once in alternatives"); +13943: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: return std::get<__n>(std::move(__v)); +13943: } +13943: +13943: template +13943: constexpr add_pointer_t>> +13943: get_if(variant<_Types...>* __ptr) noexcept +13943: { +13943: using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>; +13943: static_assert(_Np < sizeof...(_Types), +13943: "The index must be in [0, number of alternatives)"); +13943: static_assert(!is_void_v<_Alternative_type>, "_Tp must not be void"); +13943: if (__ptr && __ptr->index() == _Np) +13943: return std::addressof(__detail::__variant::__get<_Np>(*__ptr)); +13943: return nullptr; +13943: } +13943: +13943: template +13943: constexpr +13943: add_pointer_t>> +13943: get_if(const variant<_Types...>* __ptr) noexcept +13943: { +13943: using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>; +13943: static_assert(_Np < sizeof...(_Types), +13943: "The index must be in [0, number of alternatives)"); +13943: static_assert(!is_void_v<_Alternative_type>, "_Tp must not be void"); +13943: if (__ptr && __ptr->index() == _Np) +13943: return std::addressof(__detail::__variant::__get<_Np>(*__ptr)); +13943: return nullptr; +13943: } +13943: +13943: template +13943: constexpr add_pointer_t<_Tp> +13943: get_if(variant<_Types...>* __ptr) noexcept +13943: { +13943: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +13943: "T must occur exactly once in alternatives"); +13943: static_assert(!is_void_v<_Tp>, "_Tp must not be void"); +13943: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: return std::get_if<__n>(__ptr); +13943: } +13943: +13943: template +13943: constexpr add_pointer_t +13943: get_if(const variant<_Types...>* __ptr) noexcept +13943: { +13943: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +13943: "T must occur exactly once in alternatives"); +13943: static_assert(!is_void_v<_Tp>, "_Tp must not be void"); +13943: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: return std::get_if<__n>(__ptr); +13943: } +13943: +13943: struct monostate { }; +13943: # 1264 "/usr/include/c++/14/variant" 3 +13943: template constexpr bool operator <(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem < __rhs_mem; } else __ret = (__lhs.index() + 1) < (__rhs_index + 1); } else __ret = (__lhs.index() + 1) < (__rhs_index + 1); }, __rhs); return __ret; } +13943: template constexpr bool operator <=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem <= __rhs_mem; } else __ret = (__lhs.index() + 1) <= (__rhs_index + 1); } else __ret = (__lhs.index() + 1) <= (__rhs_index + 1); }, __rhs); return __ret; } +13943: template constexpr bool operator ==(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem == __rhs_mem; } else __ret = (__lhs.index() + 1) == (__rhs_index + 1); } else __ret = (__lhs.index() + 1) == (__rhs_index + 1); }, __rhs); return __ret; } +13943: template constexpr bool operator !=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem != __rhs_mem; } else __ret = (__lhs.index() + 1) != (__rhs_index + 1); } else __ret = (__lhs.index() + 1) != (__rhs_index + 1); }, __rhs); return __ret; } +13943: template constexpr bool operator >=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem >= __rhs_mem; } else __ret = (__lhs.index() + 1) >= (__rhs_index + 1); } else __ret = (__lhs.index() + 1) >= (__rhs_index + 1); }, __rhs); return __ret; } +13943: template constexpr bool operator >(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem > __rhs_mem; } else __ret = (__lhs.index() + 1) > (__rhs_index + 1); } else __ret = (__lhs.index() + 1) > (__rhs_index + 1); }, __rhs); return __ret; } +13943: +13943: +13943: +13943: constexpr bool operator==(monostate, monostate) noexcept { return true; } +13943: # 1305 "/usr/include/c++/14/variant" 3 +13943: constexpr bool operator!=(monostate, monostate) noexcept { return false; } +13943: constexpr bool operator<(monostate, monostate) noexcept { return false; } +13943: constexpr bool operator>(monostate, monostate) noexcept { return false; } +13943: constexpr bool operator<=(monostate, monostate) noexcept { return true; } +13943: constexpr bool operator>=(monostate, monostate) noexcept { return true; } +13943: +13943: +13943: template +13943: constexpr __detail::__variant::__visit_result_t<_Visitor, _Variants...> +13943: visit(_Visitor&&, _Variants&&...); +13943: +13943: template +13943: +13943: inline enable_if_t<(is_move_constructible_v<_Types> && ...) +13943: && (is_swappable_v<_Types> && ...)> +13943: swap(variant<_Types...>& __lhs, variant<_Types...>& __rhs) +13943: noexcept(noexcept(__lhs.swap(__rhs))) +13943: { __lhs.swap(__rhs); } +13943: +13943: template +13943: enable_if_t && ...) +13943: && (is_swappable_v<_Types> && ...))> +13943: swap(variant<_Types...>&, variant<_Types...>&) = delete; +13943: +13943: class bad_variant_access : public exception +13943: { +13943: public: +13943: bad_variant_access() noexcept { } +13943: +13943: const char* what() const noexcept override +13943: { return _M_reason; } +13943: +13943: private: +13943: bad_variant_access(const char* __reason) noexcept : _M_reason(__reason) { } +13943: +13943: +13943: const char* _M_reason = "bad variant access"; +13943: +13943: friend void __throw_bad_variant_access(const char* __what); +13943: }; +13943: +13943: +13943: inline void +13943: __throw_bad_variant_access(const char* __what) +13943: { (throw (bad_variant_access(__what))); } +13943: +13943: inline void +13943: __throw_bad_variant_access(bool __valueless) +13943: { +13943: if (__valueless) [[__unlikely__]] +13943: __throw_bad_variant_access("std::get: variant is valueless"); +13943: else +13943: __throw_bad_variant_access("std::get: wrong index for variant"); +13943: } +13943: +13943: template +13943: class variant +13943: : private __detail::__variant::_Variant_base<_Types...>, +13943: private _Enable_copy_move< +13943: __detail::__variant::_Traits<_Types...>::_S_copy_ctor, +13943: __detail::__variant::_Traits<_Types...>::_S_copy_assign, +13943: __detail::__variant::_Traits<_Types...>::_S_move_ctor, +13943: __detail::__variant::_Traits<_Types...>::_S_move_assign, +13943: variant<_Types...>> +13943: { +13943: private: +13943: template +13943: friend decltype(auto) +13943: __variant_cast(_Tp&&); +13943: +13943: static_assert(sizeof...(_Types) > 0, +13943: "variant must have at least one alternative"); +13943: +13943: +13943: +13943: +13943: static_assert((std::is_object_v<_Types> && ...), +13943: "variant alternatives must be object types"); +13943: +13943: +13943: using _Base = __detail::__variant::_Variant_base<_Types...>; +13943: +13943: template +13943: static constexpr bool __not_self +13943: = !is_same_v<__remove_cvref_t<_Tp>, variant>; +13943: +13943: template +13943: static constexpr bool +13943: __exactly_once = __detail::__variant::__exactly_once<_Tp, _Types...>; +13943: +13943: template +13943: static constexpr size_t __accepted_index +13943: = __detail::__variant::__accepted_index<_Tp, variant>; +13943: +13943: template> +13943: using __to_type = typename _Nth_type<_Np, _Types...>::type; +13943: +13943: template>> +13943: using __accepted_type = __to_type<__accepted_index<_Tp>>; +13943: +13943: template +13943: static constexpr size_t __index_of +13943: = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +13943: +13943: using _Traits = __detail::__variant::_Traits<_Types...>; +13943: +13943: template +13943: struct __is_in_place_tag : false_type { }; +13943: template +13943: struct __is_in_place_tag> : true_type { }; +13943: template +13943: struct __is_in_place_tag> : true_type { }; +13943: +13943: template +13943: static constexpr bool __not_in_place_tag +13943: = !__is_in_place_type_v<__remove_cvref_t<_Tp>> +13943: && !__is_in_place_index_v<__remove_cvref_t<_Tp>>; +13943: +13943: public: +13943: +13943: +13943: +13943: template, +13943: typename = enable_if_t>> +13943: constexpr +13943: variant() noexcept(is_nothrow_default_constructible_v<__to_type<0>>) +13943: { } +13943: +13943: +13943: variant(const variant& __rhs) = default; +13943: variant(variant&&) = default; +13943: variant& operator=(const variant&) = default; +13943: variant& operator=(variant&&) = default; +13943: ~variant() = default; +13943: +13943: template, +13943: typename = enable_if_t<__not_in_place_tag<_Tp>>, +13943: typename _Tj = __accepted_type<_Tp&&>, +13943: typename = enable_if_t<__exactly_once<_Tj> +13943: && is_constructible_v<_Tj, _Tp>>> +13943: constexpr +13943: variant(_Tp&& __t) +13943: noexcept(is_nothrow_constructible_v<_Tj, _Tp>) +13943: : variant(in_place_index<__accepted_index<_Tp>>, +13943: std::forward<_Tp>(__t)) +13943: { } +13943: +13943: template +13943: && is_constructible_v<_Tp, _Args...>>> +13943: constexpr explicit +13943: variant(in_place_type_t<_Tp>, _Args&&... __args) +13943: : variant(in_place_index<__index_of<_Tp>>, +13943: std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: && is_constructible_v<_Tp, +13943: initializer_list<_Up>&, _Args...>>> +13943: constexpr explicit +13943: variant(in_place_type_t<_Tp>, initializer_list<_Up> __il, +13943: _Args&&... __args) +13943: : variant(in_place_index<__index_of<_Tp>>, __il, +13943: std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template, +13943: typename = enable_if_t>> +13943: constexpr explicit +13943: variant(in_place_index_t<_Np>, _Args&&... __args) +13943: : _Base(in_place_index<_Np>, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template, +13943: typename = enable_if_t&, +13943: _Args...>>> +13943: constexpr explicit +13943: variant(in_place_index_t<_Np>, initializer_list<_Up> __il, +13943: _Args&&... __args) +13943: : _Base(in_place_index<_Np>, __il, std::forward<_Args>(__args)...) +13943: { } +13943: +13943: template +13943: +13943: enable_if_t<__exactly_once<__accepted_type<_Tp&&>> +13943: && is_constructible_v<__accepted_type<_Tp&&>, _Tp> +13943: && is_assignable_v<__accepted_type<_Tp&&>&, _Tp>, +13943: variant&> +13943: operator=(_Tp&& __rhs) +13943: noexcept(is_nothrow_assignable_v<__accepted_type<_Tp&&>&, _Tp> +13943: && is_nothrow_constructible_v<__accepted_type<_Tp&&>, _Tp>) +13943: { +13943: constexpr auto __index = __accepted_index<_Tp>; +13943: if (index() == __index) +13943: std::get<__index>(*this) = std::forward<_Tp>(__rhs); +13943: else +13943: { +13943: using _Tj = __accepted_type<_Tp&&>; +13943: if constexpr (is_nothrow_constructible_v<_Tj, _Tp> +13943: || !is_nothrow_move_constructible_v<_Tj>) +13943: this->emplace<__index>(std::forward<_Tp>(__rhs)); +13943: else +13943: +13943: +13943: this->emplace<__index>(_Tj(std::forward<_Tp>(__rhs))); +13943: } +13943: return *this; +13943: } +13943: +13943: template +13943: +13943: enable_if_t && __exactly_once<_Tp>, +13943: _Tp&> +13943: emplace(_Args&&... __args) +13943: { +13943: constexpr size_t __index = __index_of<_Tp>; +13943: return this->emplace<__index>(std::forward<_Args>(__args)...); +13943: } +13943: +13943: template +13943: +13943: enable_if_t&, _Args...> +13943: && __exactly_once<_Tp>, +13943: _Tp&> +13943: emplace(initializer_list<_Up> __il, _Args&&... __args) +13943: { +13943: constexpr size_t __index = __index_of<_Tp>; +13943: return this->emplace<__index>(__il, std::forward<_Args>(__args)...); +13943: } +13943: +13943: template +13943: +13943: enable_if_t, _Args...>, +13943: __to_type<_Np>&> +13943: emplace(_Args&&... __args) +13943: { +13943: namespace __variant = std::__detail::__variant; +13943: using type = typename _Nth_type<_Np, _Types...>::type; +13943: +13943: +13943: if constexpr (is_nothrow_constructible_v) +13943: { +13943: __variant::__emplace<_Np>(*this, std::forward<_Args>(__args)...); +13943: } +13943: else if constexpr (is_scalar_v) +13943: { +13943: +13943: const type __tmp(std::forward<_Args>(__args)...); +13943: +13943: __variant::__emplace<_Np>(*this, __tmp); +13943: } +13943: else if constexpr (__variant::_Never_valueless_alt() +13943: && _Traits::_S_move_assign) +13943: { +13943: +13943: variant __tmp(in_place_index<_Np>, +13943: std::forward<_Args>(__args)...); +13943: +13943: *this = std::move(__tmp); +13943: } +13943: else +13943: { +13943: +13943: +13943: __variant::__emplace<_Np>(*this, std::forward<_Args>(__args)...); +13943: } +13943: return std::get<_Np>(*this); +13943: } +13943: +13943: template +13943: +13943: enable_if_t, +13943: initializer_list<_Up>&, _Args...>, +13943: __to_type<_Np>&> +13943: emplace(initializer_list<_Up> __il, _Args&&... __args) +13943: { +13943: namespace __variant = std::__detail::__variant; +13943: using type = typename _Nth_type<_Np, _Types...>::type; +13943: +13943: +13943: if constexpr (is_nothrow_constructible_v&, +13943: _Args...>) +13943: { +13943: __variant::__emplace<_Np>(*this, __il, +13943: std::forward<_Args>(__args)...); +13943: } +13943: else if constexpr (__variant::_Never_valueless_alt() +13943: && _Traits::_S_move_assign) +13943: { +13943: +13943: variant __tmp(in_place_index<_Np>, __il, +13943: std::forward<_Args>(__args)...); +13943: +13943: *this = std::move(__tmp); +13943: } +13943: else +13943: { +13943: +13943: +13943: __variant::__emplace<_Np>(*this, __il, +13943: std::forward<_Args>(__args)...); +13943: } +13943: return std::get<_Np>(*this); +13943: } +13943: +13943: template +13943: enable_if_t emplace(_Args&&...) = delete; +13943: +13943: template +13943: enable_if_t> emplace(_Args&&...) = delete; +13943: +13943: constexpr bool valueless_by_exception() const noexcept +13943: { return !this->_M_valid(); } +13943: +13943: constexpr size_t index() const noexcept +13943: { +13943: using __index_type = typename _Base::__index_type; +13943: if constexpr (__detail::__variant::__never_valueless<_Types...>()) +13943: return this->_M_index; +13943: else if constexpr (sizeof...(_Types) <= __index_type(-1) / 2) +13943: return make_signed_t<__index_type>(this->_M_index); +13943: else +13943: return size_t(__index_type(this->_M_index + 1)) - 1; +13943: } +13943: +13943: +13943: void +13943: swap(variant& __rhs) +13943: noexcept((__is_nothrow_swappable<_Types>::value && ...) +13943: && is_nothrow_move_constructible_v) +13943: { +13943: static_assert((is_move_constructible_v<_Types> && ...)); +13943: +13943: +13943: if (__rhs.valueless_by_exception()) [[__unlikely__]] +13943: { +13943: if (!this->valueless_by_exception()) [[__likely__]] +13943: __rhs.swap(*this); +13943: return; +13943: } +13943: +13943: namespace __variant = __detail::__variant; +13943: +13943: __variant::__raw_idx_visit( +13943: [this, &__rhs](auto&& __rhs_mem, auto __rhs_index) mutable +13943: { +13943: constexpr size_t __j = __rhs_index; +13943: if constexpr (__j != variant_npos) +13943: { +13943: if (this->index() == __j) +13943: { +13943: using std::swap; +13943: swap(std::get<__j>(*this), __rhs_mem); +13943: } +13943: else +13943: { +13943: auto __tmp(std::move(__rhs_mem)); +13943: +13943: if constexpr (_Traits::_S_trivial_move_assign) +13943: __rhs = std::move(*this); +13943: else +13943: __variant::__raw_idx_visit( +13943: [&__rhs](auto&& __this_mem, auto __this_index) mutable +13943: { +13943: constexpr size_t __k = __this_index; +13943: if constexpr (__k != variant_npos) +13943: __variant::__emplace<__k>(__rhs, +13943: std::move(__this_mem)); +13943: }, *this); +13943: +13943: __variant::__emplace<__j>(*this, std::move(__tmp)); +13943: } +13943: } +13943: }, __rhs); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: private: +13943: template +13943: friend constexpr decltype(auto) +13943: __detail::__variant::__get(_Vp&& __v) noexcept; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: template friend constexpr bool operator <(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +13943: template friend constexpr bool operator <=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +13943: template friend constexpr bool operator ==(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +13943: template friend constexpr bool operator !=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +13943: template friend constexpr bool operator >=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +13943: template friend constexpr bool operator >(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +13943: +13943: +13943: }; +13943: +13943: template +13943: constexpr variant_alternative_t<_Np, variant<_Types...>>& +13943: get(variant<_Types...>& __v) +13943: { +13943: static_assert(_Np < sizeof...(_Types), +13943: "The index must be in [0, number of alternatives)"); +13943: if (__v.index() != _Np) +13943: __throw_bad_variant_access(__v.valueless_by_exception()); +13943: return __detail::__variant::__get<_Np>(__v); +13943: } +13943: +13943: template +13943: constexpr variant_alternative_t<_Np, variant<_Types...>>&& +13943: get(variant<_Types...>&& __v) +13943: { +13943: static_assert(_Np < sizeof...(_Types), +13943: "The index must be in [0, number of alternatives)"); +13943: if (__v.index() != _Np) +13943: __throw_bad_variant_access(__v.valueless_by_exception()); +13943: return __detail::__variant::__get<_Np>(std::move(__v)); +13943: } +13943: +13943: template +13943: constexpr const variant_alternative_t<_Np, variant<_Types...>>& +13943: get(const variant<_Types...>& __v) +13943: { +13943: static_assert(_Np < sizeof...(_Types), +13943: "The index must be in [0, number of alternatives)"); +13943: if (__v.index() != _Np) +13943: __throw_bad_variant_access(__v.valueless_by_exception()); +13943: return __detail::__variant::__get<_Np>(__v); +13943: } +13943: +13943: template +13943: constexpr const variant_alternative_t<_Np, variant<_Types...>>&& +13943: get(const variant<_Types...>&& __v) +13943: { +13943: static_assert(_Np < sizeof...(_Types), +13943: "The index must be in [0, number of alternatives)"); +13943: if (__v.index() != _Np) +13943: __throw_bad_variant_access(__v.valueless_by_exception()); +13943: return __detail::__variant::__get<_Np>(std::move(__v)); +13943: } +13943: +13943: +13943: template +13943: constexpr decltype(auto) +13943: __do_visit(_Visitor&& __visitor, _Variants&&... __variants) +13943: { +13943: +13943: if constexpr (sizeof...(_Variants) == 0) +13943: { +13943: if constexpr (is_void_v<_Result_type>) +13943: return (void) std::forward<_Visitor>(__visitor)(); +13943: else +13943: return std::forward<_Visitor>(__visitor)(); +13943: } +13943: else +13943: { +13943: constexpr size_t __max = 11; +13943: +13943: +13943: using _V0 = typename _Nth_type<0, _Variants...>::type; +13943: +13943: constexpr auto __n = variant_size_v>; +13943: +13943: if constexpr (sizeof...(_Variants) > 1 || __n > __max) +13943: { +13943: +13943: constexpr auto& __vtable = __detail::__variant::__gen_vtable< +13943: _Result_type, _Visitor&&, _Variants&&...>::_S_vtable; +13943: +13943: auto __func_ptr = __vtable._M_access(__variants.index()...); +13943: return (*__func_ptr)(std::forward<_Visitor>(__visitor), +13943: std::forward<_Variants>(__variants)...); +13943: } +13943: else +13943: { +13943: +13943: _V0& __v0 +13943: = [](_V0& __v, ...) -> _V0& { return __v; }(__variants...); +13943: +13943: using __detail::__variant::_Multi_array; +13943: using __detail::__variant::__gen_vtable_impl; +13943: using _Ma = _Multi_array<_Result_type (*)(_Visitor&&, _V0&&)>; +13943: # 1817 "/usr/include/c++/14/variant" 3 +13943: switch (__v0.index()) +13943: { +13943: case 0: { if constexpr (0 < __n) { return __gen_vtable_impl<_Ma, index_sequence<0>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 1: { if constexpr (1 < __n) { return __gen_vtable_impl<_Ma, index_sequence<1>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 2: { if constexpr (2 < __n) { return __gen_vtable_impl<_Ma, index_sequence<2>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 3: { if constexpr (3 < __n) { return __gen_vtable_impl<_Ma, index_sequence<3>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 4: { if constexpr (4 < __n) { return __gen_vtable_impl<_Ma, index_sequence<4>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 5: { if constexpr (5 < __n) { return __gen_vtable_impl<_Ma, index_sequence<5>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 6: { if constexpr (6 < __n) { return __gen_vtable_impl<_Ma, index_sequence<6>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 7: { if constexpr (7 < __n) { return __gen_vtable_impl<_Ma, index_sequence<7>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 8: { if constexpr (8 < __n) { return __gen_vtable_impl<_Ma, index_sequence<8>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 9: { if constexpr (9 < __n) { return __gen_vtable_impl<_Ma, index_sequence<9>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case 10: { if constexpr (10 < __n) { return __gen_vtable_impl<_Ma, index_sequence<10>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +13943: case variant_npos: +13943: using __detail::__variant::__variant_idx_cookie; +13943: using __detail::__variant::__variant_cookie; +13943: if constexpr (is_same_v<_Result_type, __variant_idx_cookie> +13943: || is_same_v<_Result_type, __variant_cookie>) +13943: { +13943: using _Npos = index_sequence; +13943: return __gen_vtable_impl<_Ma, _Npos>:: +13943: __visit_invoke(std::forward<_Visitor>(__visitor), +13943: std::forward<_V0>(__v0)); +13943: } +13943: else +13943: __builtin_unreachable(); +13943: default: +13943: __builtin_unreachable(); +13943: } +13943: +13943: +13943: } +13943: } +13943: } +13943: +13943: +13943: template +13943: constexpr __detail::__variant::__visit_result_t<_Visitor, _Variants...> +13943: visit(_Visitor&& __visitor, _Variants&&... __variants) +13943: { +13943: namespace __variant = std::__detail::__variant; +13943: +13943: if ((__variant::__as(__variants).valueless_by_exception() || ...)) +13943: __throw_bad_variant_access("std::visit: variant is valueless"); +13943: +13943: using _Result_type +13943: = __detail::__variant::__visit_result_t<_Visitor, _Variants...>; +13943: +13943: using _Tag = __detail::__variant::__deduce_visit_result<_Result_type>; +13943: +13943: if constexpr (sizeof...(_Variants) == 1) +13943: { +13943: using _Vp = decltype(__variant::__as(std::declval<_Variants>()...)); +13943: +13943: constexpr bool __visit_rettypes_match = __detail::__variant:: +13943: __check_visitor_results<_Visitor, _Vp>( +13943: make_index_sequence>>()); +13943: if constexpr (!__visit_rettypes_match) +13943: { +13943: static_assert(__visit_rettypes_match, +13943: "std::visit requires the visitor to have the same " +13943: "return type for all alternatives of a variant"); +13943: return; +13943: } +13943: else +13943: return std::__do_visit<_Tag>( +13943: std::forward<_Visitor>(__visitor), +13943: static_cast<_Vp>(__variants)...); +13943: } +13943: else +13943: return std::__do_visit<_Tag>( +13943: std::forward<_Visitor>(__visitor), +13943: __variant::__as(std::forward<_Variants>(__variants))...); +13943: } +13943: # 1908 "/usr/include/c++/14/variant" 3 +13943: template +13943: struct __variant_hash_call_base_impl +13943: { +13943: size_t +13943: operator()(const variant<_Types...>& __t) const +13943: noexcept((is_nothrow_invocable_v>, _Types> && ...)) +13943: { +13943: size_t __ret; +13943: __detail::__variant::__raw_visit( +13943: [&__t, &__ret](auto&& __t_mem) mutable +13943: { +13943: using _Type = __remove_cvref_t; +13943: if constexpr (!is_same_v<_Type, +13943: __detail::__variant::__variant_cookie>) +13943: __ret = std::hash{}(__t.index()) +13943: + std::hash<_Type>{}(__t_mem); +13943: else +13943: __ret = std::hash{}(__t.index()); +13943: }, __t); +13943: return __ret; +13943: } +13943: }; +13943: +13943: template +13943: struct __variant_hash_call_base_impl {}; +13943: +13943: template +13943: using __variant_hash_call_base = +13943: __variant_hash_call_base_impl<(__poison_hash>:: +13943: __enable_hash_call &&...), _Types...>; +13943: +13943: +13943: template +13943: struct hash> +13943: : private __detail::__variant::_Variant_hash_base< +13943: variant<_Types...>, std::index_sequence_for<_Types...>>, +13943: public __variant_hash_call_base<_Types...> +13943: { +13943: using result_type [[__deprecated__]] = size_t; +13943: using argument_type [[__deprecated__]] = variant<_Types...>; +13943: }; +13943: +13943: template<> +13943: struct hash +13943: { +13943: using result_type [[__deprecated__]] = size_t; +13943: using argument_type [[__deprecated__]] = monostate; +13943: +13943: size_t +13943: operator()(const monostate&) const noexcept +13943: { +13943: constexpr size_t __magic_monostate_hash = -7777; +13943: return __magic_monostate_hash; +13943: } +13943: }; +13943: +13943: template +13943: struct __is_fast_hash>> +13943: : bool_constant<(__is_fast_hash<_Types>::value && ...)> +13943: { }; +13943: +13943: +13943: } +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: class Logger; +13943: # 53 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: class MergeOperator : public Customizable { +13943: public: +13943: virtual ~MergeOperator() {} +13943: static const char* Type() { return "MergeOperator"; } +13943: static Status CreateFromString(const ConfigOptions& opts, +13943: const std::string& id, +13943: std::shared_ptr* result); +13943: # 79 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: virtual bool FullMerge(const Slice& , const Slice* , +13943: const std::deque& , +13943: std::string* , Logger* ) const { +13943: +13943: +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 3 4 +13943: (static_cast ( +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: false +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: "false" +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: ; +13943: return false; +13943: } +13943: +13943: struct MergeOperationInput { +13943: +13943: explicit MergeOperationInput(const Slice& _key, +13943: const Slice* _existing_value, +13943: const std::vector& _operand_list, +13943: Logger* _logger) +13943: : key(_key), +13943: existing_value(_existing_value), +13943: operand_list(_operand_list), +13943: logger(_logger) {} +13943: +13943: +13943: const Slice& key; +13943: +13943: +13943: const Slice* existing_value; +13943: +13943: const std::vector& operand_list; +13943: +13943: +13943: Logger* logger; +13943: }; +13943: +13943: enum class OpFailureScope { +13943: kDefault, +13943: kTryMerge, +13943: kMustMerge, +13943: kOpFailureScopeMax, +13943: }; +13943: +13943: struct MergeOperationOutput { +13943: explicit MergeOperationOutput(std::string& _new_value, +13943: Slice& _existing_operand) +13943: : new_value(_new_value), existing_operand(_existing_operand) {} +13943: +13943: +13943: std::string& new_value; +13943: +13943: +13943: +13943: Slice& existing_operand; +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: OpFailureScope op_failure_scope = OpFailureScope::kDefault; +13943: }; +13943: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: virtual bool FullMergeV2(const MergeOperationInput& merge_in, +13943: MergeOperationOutput* merge_out) const; +13943: +13943: struct MergeOperationInputV3 { +13943: using ExistingValue = std::variant; +13943: using OperandList = std::vector; +13943: +13943: explicit MergeOperationInputV3(const Slice& _key, +13943: ExistingValue&& _existing_value, +13943: const OperandList& _operand_list, +13943: Logger* _logger) +13943: : key(_key), +13943: existing_value(std::move(_existing_value)), +13943: operand_list(_operand_list), +13943: logger(_logger) {} +13943: +13943: +13943: const Slice& key; +13943: +13943: +13943: +13943: ExistingValue existing_value; +13943: +13943: const OperandList& operand_list; +13943: +13943: Logger* logger; +13943: }; +13943: +13943: struct MergeOperationOutputV3 { +13943: using NewColumns = std::vector>; +13943: using NewValue = std::variant; +13943: +13943: +13943: +13943: +13943: NewValue new_value; +13943: +13943: OpFailureScope op_failure_scope = OpFailureScope::kDefault; +13943: }; +13943: # 209 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: virtual bool FullMergeV3(const MergeOperationInputV3& merge_in, +13943: MergeOperationOutputV3* merge_out) const; +13943: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: virtual bool PartialMerge(const Slice& , const Slice& , +13943: const Slice& , +13943: std::string* , +13943: Logger* ) const { +13943: return false; +13943: } +13943: # 271 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: virtual bool PartialMergeMulti(const Slice& key, +13943: const std::deque& operand_list, +13943: std::string* new_value, Logger* logger) const; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: const char* Name() const override = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool AllowSingleOperand() const { return false; } +13943: # 300 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: virtual bool ShouldMerge(const std::vector& ) const { +13943: return false; +13943: } +13943: }; +13943: +13943: +13943: class AssociativeMergeOperator : public MergeOperator { +13943: public: +13943: ~AssociativeMergeOperator() override {} +13943: # 323 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +13943: virtual bool Merge(const Slice& key, const Slice* existing_value, +13943: const Slice& value, std::string* new_value, +13943: Logger* logger) const = 0; +13943: +13943: private: +13943: +13943: bool FullMergeV2(const MergeOperationInput& merge_in, +13943: MergeOperationOutput* merge_out) const override; +13943: +13943: bool PartialMerge(const Slice& key, const Slice& left_operand, +13943: const Slice& right_operand, std::string* new_value, +13943: Logger* logger) const override; +13943: }; +13943: +13943: } +13943: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Comparator; +13943: class Iterator; +13943: class Logger; +13943: class MergeOperator; +13943: class Statistics; +13943: class SystemClock; +13943: class BlobFetcher; +13943: class PrefetchBufferCollection; +13943: struct CompactionIterationStats; +13943: +13943: class MergeHelper { +13943: public: +13943: MergeHelper(Env* env, const Comparator* user_comparator, +13943: const MergeOperator* user_merge_operator, +13943: const CompactionFilter* compaction_filter, Logger* logger, +13943: bool assert_valid_internal_key, SequenceNumber latest_snapshot, +13943: const SnapshotChecker* snapshot_checker = nullptr, int level = 0, +13943: Statistics* stats = nullptr, +13943: const std::atomic* shutting_down = nullptr); +13943: # 55 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: struct NoBaseValueTag {}; +13943: static constexpr NoBaseValueTag kNoBaseValue{}; +13943: +13943: struct PlainBaseValueTag {}; +13943: static constexpr PlainBaseValueTag kPlainBaseValue{}; +13943: +13943: struct WideBaseValueTag {}; +13943: static constexpr WideBaseValueTag kWideBaseValue{}; +13943: +13943: template +13943: static Status TimedFullMerge(const MergeOperator* merge_operator, +13943: const Slice& key, NoBaseValueTag, +13943: const std::vector& operands, +13943: Logger* logger, Statistics* statistics, +13943: SystemClock* clock, bool update_num_ops_stats, +13943: MergeOperator::OpFailureScope* op_failure_scope, +13943: ResultTs... results) { +13943: MergeOperator::MergeOperationInputV3::ExistingValue existing_value; +13943: +13943: return TimedFullMergeImpl( +13943: merge_operator, key, std::move(existing_value), operands, logger, +13943: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +13943: } +13943: +13943: template +13943: static Status TimedFullMerge( +13943: const MergeOperator* merge_operator, const Slice& key, PlainBaseValueTag, +13943: const Slice& value, const std::vector& operands, Logger* logger, +13943: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +13943: MergeOperator::OpFailureScope* op_failure_scope, ResultTs... results) { +13943: MergeOperator::MergeOperationInputV3::ExistingValue existing_value(value); +13943: +13943: return TimedFullMergeImpl( +13943: merge_operator, key, std::move(existing_value), operands, logger, +13943: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +13943: } +13943: +13943: template +13943: static Status TimedFullMerge( +13943: const MergeOperator* merge_operator, const Slice& key, WideBaseValueTag, +13943: const Slice& entity, const std::vector& operands, Logger* logger, +13943: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +13943: MergeOperator::OpFailureScope* op_failure_scope, ResultTs... results) { +13943: MergeOperator::MergeOperationInputV3::ExistingValue existing_value; +13943: +13943: Slice entity_copy(entity); +13943: WideColumns existing_columns; +13943: +13943: const Status s = +13943: WideColumnSerialization::Deserialize(entity_copy, existing_columns); +13943: if (!s.ok()) { +13943: return s; +13943: } +13943: +13943: existing_value = std::move(existing_columns); +13943: +13943: return TimedFullMergeImpl( +13943: merge_operator, key, std::move(existing_value), operands, logger, +13943: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +13943: } +13943: +13943: template +13943: static Status TimedFullMerge(const MergeOperator* merge_operator, +13943: const Slice& key, WideBaseValueTag, +13943: const WideColumns& columns, +13943: const std::vector& operands, +13943: Logger* logger, Statistics* statistics, +13943: SystemClock* clock, bool update_num_ops_stats, +13943: MergeOperator::OpFailureScope* op_failure_scope, +13943: ResultTs... results) { +13943: MergeOperator::MergeOperationInputV3::ExistingValue existing_value(columns); +13943: +13943: return TimedFullMergeImpl( +13943: merge_operator, key, std::move(existing_value), operands, logger, +13943: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +13943: } +13943: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: Status MergeUntil(InternalIterator* iter, +13943: CompactionRangeDelAggregator* range_del_agg, +13943: const SequenceNumber stop_before, const bool at_bottom, +13943: const bool allow_data_in_errors, +13943: const BlobFetcher* blob_fetcher, +13943: const std::string* const full_history_ts_low, +13943: PrefetchBufferCollection* prefetch_buffers, +13943: CompactionIterationStats* c_iter_stats); +13943: +13943: +13943: +13943: +13943: +13943: +13943: CompactionFilter::Decision FilterMerge(const Slice& user_key, +13943: const Slice& value_slice); +13943: # 210 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: const std::deque& keys() const { return keys_; } +13943: const std::vector& values() const { +13943: return merge_context_.GetOperands(); +13943: } +13943: uint64_t TotalFilterTime() const { return total_filter_time_; } +13943: bool HasOperator() const { return user_merge_operator_ != nullptr; } +13943: +13943: +13943: +13943: +13943: bool FilteredUntil(Slice* skip_until) const { +13943: if (!has_compaction_filter_skip_until_) { +13943: return false; +13943: } +13943: +13943: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: (static_cast ( +13943: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: compaction_filter_ != nullptr +13943: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: "compaction_filter_ != nullptr" +13943: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: ; +13943: +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: (static_cast ( +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: skip_until != nullptr +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: "skip_until != nullptr" +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: ; +13943: +13943: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: (static_cast ( +13943: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: compaction_filter_skip_until_.Valid() +13943: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: "compaction_filter_skip_until_.Valid()" +13943: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +13943: ; +13943: *skip_until = compaction_filter_skip_until_.Encode(); +13943: return true; +13943: } +13943: +13943: private: +13943: Env* env_; +13943: SystemClock* clock_; +13943: const Comparator* user_comparator_; +13943: const MergeOperator* user_merge_operator_; +13943: const CompactionFilter* compaction_filter_; +13943: const std::atomic* shutting_down_; +13943: Logger* logger_; +13943: bool assert_valid_internal_key_; +13943: bool allow_single_operand_; +13943: SequenceNumber latest_snapshot_; +13943: const SnapshotChecker* const snapshot_checker_; +13943: int level_; +13943: +13943: +13943: +13943: +13943: +13943: std::deque keys_; +13943: +13943: mutable MergeContext merge_context_; +13943: +13943: StopWatchNano filter_timer_; +13943: uint64_t total_filter_time_; +13943: Statistics* stats_; +13943: +13943: bool has_compaction_filter_skip_until_ = false; +13943: std::string compaction_filter_value_; +13943: InternalKey compaction_filter_skip_until_; +13943: +13943: bool IsShuttingDown() { +13943: +13943: return shutting_down_ && shutting_down_->load(std::memory_order_relaxed); +13943: } +13943: +13943: template +13943: static Status TimedFullMergeCommonImpl( +13943: const MergeOperator* merge_operator, const Slice& key, +13943: MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value, +13943: const std::vector& operands, Logger* logger, +13943: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +13943: MergeOperator::OpFailureScope* op_failure_scope, Visitor&& visitor); +13943: +13943: +13943: +13943: static Status TimedFullMergeImpl( +13943: const MergeOperator* merge_operator, const Slice& key, +13943: MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value, +13943: const std::vector& operands, Logger* logger, +13943: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +13943: MergeOperator::OpFailureScope* op_failure_scope, std::string* result, +13943: Slice* result_operand, ValueType* result_type); +13943: +13943: +13943: +13943: +13943: +13943: static Status TimedFullMergeImpl( +13943: const MergeOperator* merge_operator, const Slice& key, +13943: MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value, +13943: const std::vector& operands, Logger* logger, +13943: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +13943: MergeOperator::OpFailureScope* op_failure_scope, +13943: std::string* result_value, PinnableWideColumns* result_entity); +13943: }; +13943: +13943: +13943: class MergeOutputIterator { +13943: public: +13943: +13943: explicit MergeOutputIterator(const MergeHelper* merge_helper); +13943: +13943: +13943: void SeekToFirst(); +13943: +13943: void Next(); +13943: +13943: Slice key() { return Slice(*it_keys_); } +13943: Slice value() { return Slice(*it_values_); } +13943: bool Valid() { return it_keys_ != merge_helper_->keys().rend(); } +13943: +13943: private: +13943: const MergeHelper* merge_helper_; +13943: std::deque::const_reverse_iterator it_keys_; +13943: std::vector::const_reverse_iterator it_values_; +13943: }; +13943: +13943: } +13943: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: +13943: # 31 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: namespace rocksdb { +13943: +13943: class Logger; +13943: # 42 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: class ConcurrentArena : public Allocator { +13943: public: +13943: +13943: +13943: +13943: +13943: explicit ConcurrentArena(size_t block_size = Arena::kMinBlockSize, +13943: AllocTracker* tracker = nullptr, +13943: size_t huge_page_size = 0); +13943: +13943: char* Allocate(size_t bytes) override { +13943: return AllocateImpl(bytes, false , +13943: [this, bytes]() { return arena_.Allocate(bytes); }); +13943: } +13943: +13943: char* AllocateAligned(size_t bytes, size_t huge_page_size = 0, +13943: Logger* logger = nullptr) override { +13943: size_t rounded_up = ((bytes - 1) | (sizeof(void*) - 1)) + 1; +13943: +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +13943: (static_cast ( +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: rounded_up >= bytes && rounded_up < bytes + sizeof(void*) && (rounded_up % sizeof(void*)) == 0 +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: "rounded_up >= bytes && rounded_up < bytes + sizeof(void*) && (rounded_up % sizeof(void*)) == 0" +13943: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: +13943: # 61 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: ; +13943: +13943: return AllocateImpl(rounded_up, huge_page_size != 0 , +13943: [this, rounded_up, huge_page_size, logger]() { +13943: return arena_.AllocateAligned(rounded_up, +13943: huge_page_size, logger); +13943: }); +13943: } +13943: +13943: size_t ApproximateMemoryUsage() const { +13943: std::unique_lock lock(arena_mutex_, std::defer_lock); +13943: lock.lock(); +13943: return arena_.ApproximateMemoryUsage() - ShardAllocatedAndUnused(); +13943: } +13943: +13943: size_t MemoryAllocatedBytes() const { +13943: return memory_allocated_bytes_.load(std::memory_order_relaxed); +13943: } +13943: +13943: size_t AllocatedAndUnused() const { +13943: return arena_allocated_and_unused_.load(std::memory_order_relaxed) + +13943: ShardAllocatedAndUnused(); +13943: } +13943: +13943: size_t IrregularBlockNum() const { +13943: return irregular_block_num_.load(std::memory_order_relaxed); +13943: } +13943: +13943: size_t BlockSize() const override { return arena_.BlockSize(); } +13943: +13943: private: +13943: struct Shard { +13943: char padding[40] ; +13943: mutable SpinMutex mutex; +13943: char* free_begin_; +13943: std::atomic allocated_and_unused_; +13943: +13943: Shard() : free_begin_(nullptr), allocated_and_unused_(0) {} +13943: }; +13943: +13943: static thread_local size_t tls_cpuid; +13943: +13943: char padding0[56] ; +13943: +13943: size_t shard_block_size_; +13943: +13943: CoreLocalArray shards_; +13943: +13943: Arena arena_; +13943: mutable SpinMutex arena_mutex_; +13943: std::atomic arena_allocated_and_unused_; +13943: std::atomic memory_allocated_bytes_; +13943: std::atomic irregular_block_num_; +13943: +13943: char padding1[56] ; +13943: +13943: Shard* Repick(); +13943: +13943: size_t ShardAllocatedAndUnused() const { +13943: size_t total = 0; +13943: for (size_t i = 0; i < shards_.Size(); ++i) { +13943: total += shards_.AccessAtCore(i)->allocated_and_unused_.load( +13943: std::memory_order_relaxed); +13943: } +13943: return total; +13943: } +13943: +13943: template +13943: char* AllocateImpl(size_t bytes, bool force_arena, const Func& func) { +13943: size_t cpu; +13943: +13943: +13943: +13943: +13943: +13943: std::unique_lock arena_lock(arena_mutex_, std::defer_lock); +13943: if (bytes > shard_block_size_ / 4 || force_arena || +13943: ((cpu = tls_cpuid) == 0 && +13943: !shards_.AccessAtCore(0)->allocated_and_unused_.load( +13943: std::memory_order_relaxed) && +13943: arena_lock.try_lock())) { +13943: if (!arena_lock.owns_lock()) { +13943: arena_lock.lock(); +13943: } +13943: auto rv = func(); +13943: Fixup(); +13943: return rv; +13943: } +13943: +13943: +13943: Shard* s = shards_.AccessAtCore(cpu & (shards_.Size() - 1)); +13943: if (!s->mutex.try_lock()) { +13943: s = Repick(); +13943: s->mutex.lock(); +13943: } +13943: std::unique_lock lock(s->mutex, std::adopt_lock); +13943: +13943: size_t avail = s->allocated_and_unused_.load(std::memory_order_relaxed); +13943: if (avail < bytes) { +13943: +13943: std::lock_guard reload_lock(arena_mutex_); +13943: +13943: +13943: +13943: auto exact = arena_allocated_and_unused_.load(std::memory_order_relaxed); +13943: +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +13943: (static_cast ( +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: exact == arena_.AllocatedAndUnused() +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: "exact == arena_.AllocatedAndUnused()" +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: ; +13943: +13943: if (exact >= bytes && arena_.IsInInlineBlock()) { +13943: # 177 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +13943: auto rv = func(); +13943: Fixup(); +13943: return rv; +13943: } +13943: +13943: avail = exact >= shard_block_size_ / 2 && exact < shard_block_size_ * 2 +13943: ? exact +13943: : shard_block_size_; +13943: s->free_begin_ = arena_.AllocateAligned(avail); +13943: Fixup(); +13943: } +13943: s->allocated_and_unused_.store(avail - bytes, std::memory_order_relaxed); +13943: +13943: char* rv; +13943: if ((bytes % sizeof(void*)) == 0) { +13943: +13943: rv = s->free_begin_; +13943: s->free_begin_ += bytes; +13943: } else { +13943: +13943: rv = s->free_begin_ + avail - bytes; +13943: } +13943: return rv; +13943: } +13943: +13943: void Fixup() { +13943: arena_allocated_and_unused_.store(arena_.AllocatedAndUnused(), +13943: std::memory_order_relaxed); +13943: memory_allocated_bytes_.store(arena_.MemoryAllocatedBytes(), +13943: std::memory_order_relaxed); +13943: irregular_block_num_.store(arena_.IrregularBlockNum(), +13943: std::memory_order_relaxed); +13943: } +13943: +13943: ConcurrentArena(const ConcurrentArena&) = delete; +13943: ConcurrentArena& operator=(const ConcurrentArena&) = delete; +13943: }; +13943: +13943: } +13943: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: +13943: +13943: +13943: +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/cast_util.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: template +13943: inline DestClass* static_cast_with_check(SrcClass* x) { +13943: DestClass* ret = static_cast(x); +13943: +13943: +13943: +13943: return ret; +13943: } +13943: +13943: template +13943: inline std::shared_ptr static_cast_with_check( +13943: std::shared_ptr&& x) { +13943: +13943: +13943: +13943: auto ret = std::static_pointer_cast(std::move(x)); +13943: +13943: +13943: +13943: return ret; +13943: } +13943: +13943: +13943: +13943: +13943: +13943: template +13943: inline To lossless_cast(From x) { +13943: using FromValue = typename std::remove_reference::type; +13943: static_assert( +13943: std::is_integral::value || std::is_enum::value, +13943: "Only works on integral types"); +13943: static_assert(std::is_integral::value || std::is_enum::value, +13943: "Only works on integral types"); +13943: static_assert(sizeof(To) >= sizeof(FromValue), "Must be lossless"); +13943: return static_cast(x); +13943: } +13943: +13943: +13943: +13943: +13943: template +13943: inline const std::initializer_list& List( +13943: const std::initializer_list& list) { +13943: return list; +13943: } +13943: +13943: +13943: +13943: template +13943: class UnownedPtr { +13943: public: +13943: UnownedPtr() = default; +13943: UnownedPtr(std::nullptr_t) {} +13943: UnownedPtr(T* ptr) : ptr_(ptr) {} +13943: UnownedPtr(const UnownedPtr&) = default; +13943: UnownedPtr(UnownedPtr&&) = default; +13943: UnownedPtr& operator=(const UnownedPtr&) = default; +13943: UnownedPtr& operator=(UnownedPtr&&) = default; +13943: +13943: T* get() const { return ptr_; } +13943: T* operator->() const { return ptr_; } +13943: T& operator*() const { return *ptr_; } +13943: operator bool() const { return ptr_ != nullptr; } +13943: +13943: private: +13943: T* ptr_ = nullptr; +13943: }; +13943: +13943: } +13943: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +13943: namespace rocksdb { +13943: +13943: class Slice; +13943: class Allocator; +13943: class Logger; +13943: # 36 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +13943: class DynamicBloom { +13943: public: +13943: # 47 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +13943: explicit DynamicBloom(Allocator* allocator, uint32_t total_bits, +13943: uint32_t num_probes = 6, size_t huge_page_tlb_size = 0, +13943: Logger* logger = nullptr); +13943: +13943: ~DynamicBloom() {} +13943: +13943: +13943: void Add(const Slice& key); +13943: +13943: +13943: void AddConcurrently(const Slice& key); +13943: +13943: +13943: void AddHash(uint32_t hash); +13943: +13943: +13943: void AddHashConcurrently(uint32_t hash); +13943: +13943: +13943: bool MayContain(const Slice& key) const; +13943: +13943: void MayContain(int num_keys, Slice* keys, bool* may_match) const; +13943: +13943: +13943: bool MayContainHash(uint32_t hash) const; +13943: +13943: void Prefetch(uint32_t h); +13943: +13943: private: +13943: +13943: +13943: uint32_t kLen; +13943: +13943: +13943: const uint32_t kNumDoubleProbes; +13943: +13943: std::atomic* data_; +13943: +13943: +13943: +13943: template +13943: void AddHash(uint32_t hash, const OrFunc& or_func); +13943: +13943: bool DoubleProbe(uint32_t h32, size_t a) const; +13943: }; +13943: +13943: inline void DynamicBloom::Add(const Slice& key) { AddHash(BloomHash(key)); } +13943: +13943: inline void DynamicBloom::AddConcurrently(const Slice& key) { +13943: AddHashConcurrently(BloomHash(key)); +13943: } +13943: +13943: inline void DynamicBloom::AddHash(uint32_t hash) { +13943: AddHash(hash, [](std::atomic* ptr, uint64_t mask) { +13943: ptr->store(ptr->load(std::memory_order_relaxed) | mask, +13943: std::memory_order_relaxed); +13943: }); +13943: } +13943: +13943: inline void DynamicBloom::AddHashConcurrently(uint32_t hash) { +13943: AddHash(hash, [](std::atomic* ptr, uint64_t mask) { +13943: +13943: +13943: +13943: +13943: +13943: if ((mask & ptr->load(std::memory_order_relaxed)) != mask) { +13943: ptr->fetch_or(mask, std::memory_order_relaxed); +13943: } +13943: }); +13943: } +13943: +13943: inline bool DynamicBloom::MayContain(const Slice& key) const { +13943: return (MayContainHash(BloomHash(key))); +13943: } +13943: +13943: inline void DynamicBloom::MayContain(int num_keys, Slice* keys, +13943: bool* may_match) const { +13943: std::array hashes; +13943: std::array byte_offsets; +13943: for (int i = 0; i < num_keys; ++i) { +13943: hashes[i] = BloomHash(keys[i]); +13943: size_t a = FastRange32(hashes[i], kLen); +13943: __builtin_prefetch(data_ + a, 0, 3); +13943: byte_offsets[i] = a; +13943: } +13943: +13943: for (int i = 0; i < num_keys; i++) { +13943: may_match[i] = DoubleProbe(hashes[i], byte_offsets[i]); +13943: } +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline void DynamicBloom::Prefetch(uint32_t h32) { +13943: size_t a = FastRange32(h32, kLen); +13943: __builtin_prefetch(data_ + a, 0, 3); +13943: } +13943: # 173 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +13943: inline bool DynamicBloom::MayContainHash(uint32_t h32) const { +13943: size_t a = FastRange32(h32, kLen); +13943: __builtin_prefetch(data_ + a, 0, 3); +13943: return DoubleProbe(h32, a); +13943: } +13943: +13943: inline bool DynamicBloom::DoubleProbe(uint32_t h32, size_t byte_offset) const { +13943: +13943: uint64_t h = 0x9e3779b97f4a7c13ULL * h32; +13943: for (unsigned i = 0;; ++i) { +13943: +13943: uint64_t mask = +13943: ((uint64_t)1 << (h & 63)) | ((uint64_t)1 << ((h >> 6) & 63)); +13943: uint64_t val = data_[byte_offset ^ i].load(std::memory_order_relaxed); +13943: if (i + 1 >= kNumDoubleProbes) { +13943: return (val & mask) == mask; +13943: } else if ((val & mask) != mask) { +13943: return false; +13943: } +13943: h = (h >> 12) | (h << 52); +13943: } +13943: } +13943: +13943: template +13943: inline void DynamicBloom::AddHash(uint32_t h32, const OrFunc& or_func) { +13943: size_t a = FastRange32(h32, kLen); +13943: __builtin_prefetch(data_ + a, 0, 3); +13943: +13943: uint64_t h = 0x9e3779b97f4a7c13ULL * h32; +13943: for (unsigned i = 0;; ++i) { +13943: +13943: uint64_t mask = +13943: ((uint64_t)1 << (h & 63)) | ((uint64_t)1 << ((h >> 6) & 63)); +13943: or_func(&data_[a ^ i], mask); +13943: if (i + 1 >= kNumDoubleProbes) { +13943: return; +13943: } +13943: h = (h >> 12) | (h << 52); +13943: } +13943: } +13943: +13943: } +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/hash_containers.h" 1 +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/util/hash_containers.h" +13943: +13943: # 38 "/build/reproducible-path/rocksdb-9.10.0/util/hash_containers.h" +13943: namespace rocksdb { +13943: +13943: template +13943: using UnorderedMap = std::unordered_map; +13943: +13943: template +13943: using UnorderedMapH = std::unordered_map; +13943: +13943: template +13943: using UnorderedSet = std::unordered_set; +13943: +13943: } +13943: # 37 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +13943: +13943: namespace rocksdb { +13943: +13943: struct FlushJobInfo; +13943: class Mutex; +13943: class MemTableIterator; +13943: class MergeContext; +13943: class SystemClock; +13943: +13943: struct ImmutableMemTableOptions { +13943: explicit ImmutableMemTableOptions(const ImmutableOptions& ioptions, +13943: const MutableCFOptions& mutable_cf_options); +13943: size_t arena_block_size; +13943: uint32_t memtable_prefix_bloom_bits; +13943: size_t memtable_huge_page_size; +13943: bool memtable_whole_key_filtering; +13943: bool inplace_update_support; +13943: size_t inplace_update_num_locks; +13943: UpdateStatus (*inplace_callback)(char* existing_value, +13943: uint32_t* existing_value_size, +13943: Slice delta_value, +13943: std::string* merged_value); +13943: size_t max_successive_merges; +13943: bool strict_max_successive_merges; +13943: Statistics* statistics; +13943: MergeOperator* merge_operator; +13943: Logger* info_log; +13943: uint32_t protection_bytes_per_key; +13943: bool allow_data_in_errors; +13943: bool paranoid_memory_checks; +13943: }; +13943: +13943: +13943: +13943: +13943: struct MemTablePostProcessInfo { +13943: uint64_t data_size = 0; +13943: uint64_t num_entries = 0; +13943: uint64_t num_deletes = 0; +13943: uint64_t num_range_deletes = 0; +13943: }; +13943: +13943: using MultiGetRange = MultiGetContext::Range; +13943: # 106 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: class ReadOnlyMemTable { +13943: public: +13943: +13943: virtual ~ReadOnlyMemTable() = default; +13943: +13943: virtual const char* Name() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual size_t ApproximateMemoryUsage() = 0; +13943: +13943: +13943: virtual size_t MemoryAllocatedBytes() const = 0; +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: virtual void UniqueRandomSample(const uint64_t& target_sample_size, +13943: std::unordered_set* entries) = 0; +13943: # 153 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: virtual InternalIterator* NewIterator( +13943: const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping, Arena* arena, +13943: const SliceTransform* prefix_extractor, bool for_flush) = 0; +13943: +13943: +13943: +13943: +13943: virtual InternalIterator* NewTimestampStrippingIterator( +13943: const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping, Arena* arena, +13943: const SliceTransform* prefix_extractor, size_t ts_sz) = 0; +13943: # 176 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: virtual FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +13943: const ReadOptions& read_options, SequenceNumber read_seq, +13943: bool immutable_memtable) = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual FragmentedRangeTombstoneIterator* +13943: NewTimestampStrippingRangeTombstoneIterator(const ReadOptions& read_options, +13943: SequenceNumber read_seq, +13943: size_t ts_sz) = 0; +13943: # 221 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: virtual bool Get(const LookupKey& key, std::string* value, +13943: PinnableWideColumns* columns, std::string* timestamp, +13943: Status* s, MergeContext* merge_context, +13943: SequenceNumber* max_covering_tombstone_seq, +13943: SequenceNumber* seq, const ReadOptions& read_opts, +13943: bool immutable_memtable, ReadCallback* callback = nullptr, +13943: bool* is_blob_index = nullptr, bool do_merge = true) = 0; +13943: bool Get(const LookupKey& key, std::string* value, +13943: PinnableWideColumns* columns, std::string* timestamp, Status* s, +13943: MergeContext* merge_context, +13943: SequenceNumber* max_covering_tombstone_seq, +13943: const ReadOptions& read_opts, bool immutable_memtable, +13943: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +13943: bool do_merge = true) { +13943: SequenceNumber seq; +13943: return Get(key, value, columns, timestamp, s, merge_context, +13943: max_covering_tombstone_seq, &seq, read_opts, immutable_memtable, +13943: callback, is_blob_index, do_merge); +13943: } +13943: +13943: +13943: +13943: +13943: virtual void MultiGet(const ReadOptions& read_options, MultiGetRange* range, +13943: ReadCallback* callback, bool immutable_memtable) = 0; +13943: +13943: +13943: +13943: +13943: virtual uint64_t NumEntries() const = 0; +13943: +13943: +13943: +13943: +13943: virtual uint64_t NumDeletion() const = 0; +13943: +13943: +13943: +13943: +13943: virtual uint64_t NumRangeDeletion() const = 0; +13943: +13943: virtual uint64_t GetDataSize() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual SequenceNumber GetFirstSequenceNumber() = 0; +13943: +13943: +13943: +13943: +13943: virtual bool IsEmpty() const = 0; +13943: # 282 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: virtual SequenceNumber GetEarliestSequenceNumber() = 0; +13943: +13943: virtual uint64_t GetMinLogContainingPrepSection() = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual void MarkImmutable() = 0; +13943: +13943: +13943: +13943: +13943: +13943: virtual void MarkFlushed() = 0; +13943: +13943: struct MemTableStats { +13943: uint64_t size; +13943: uint64_t count; +13943: }; +13943: virtual MemTableStats ApproximateStats(const Slice& start_ikey, +13943: const Slice& end_ikey) = 0; +13943: +13943: virtual const InternalKeyComparator& GetInternalKeyComparator() const = 0; +13943: +13943: virtual uint64_t ApproximateOldestKeyTime() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual bool IsFragmentedRangeTombstonesConstructed() const = 0; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: virtual const Slice& GetNewestUDT() const = 0; +13943: +13943: +13943: +13943: +13943: void Ref() { ++refs_; } +13943: +13943: +13943: +13943: +13943: +13943: ReadOnlyMemTable* Unref() { +13943: --refs_; +13943: +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +13943: (static_cast ( +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: refs_ >= 0 +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: "refs_ >= 0" +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: ; +13943: if (refs_ <= 0) { +13943: return this; +13943: } +13943: return nullptr; +13943: } +13943: +13943: +13943: VersionEdit* GetEdits() { return &edit_; } +13943: +13943: +13943: +13943: +13943: +13943: uint64_t GetNextLogNumber() const { return mem_next_logfile_number_; } +13943: +13943: +13943: +13943: +13943: +13943: void SetNextLogNumber(uint64_t num) { mem_next_logfile_number_ = num; } +13943: +13943: +13943: void SetID(uint64_t id) { id_ = id; } +13943: +13943: uint64_t GetID() const { return id_; } +13943: +13943: void SetFlushCompleted(bool completed) { flush_completed_ = completed; } +13943: +13943: uint64_t GetFileNumber() const { return file_number_; } +13943: +13943: void SetFileNumber(uint64_t file_num) { file_number_ = file_num; } +13943: +13943: void SetFlushInProgress(bool in_progress) { +13943: flush_in_progress_ = in_progress; +13943: } +13943: +13943: void SetFlushJobInfo(std::unique_ptr&& info) { +13943: flush_job_info_ = std::move(info); +13943: } +13943: +13943: std::unique_ptr ReleaseFlushJobInfo() { +13943: return std::move(flush_job_info_); +13943: } +13943: +13943: static void HandleTypeValue( +13943: const Slice& lookup_user_key, const Slice& value, bool value_pinned, +13943: bool do_merge, bool merge_in_progress, MergeContext* merge_context, +13943: const MergeOperator* merge_operator, SystemClock* clock, +13943: Statistics* statistics, Logger* info_log, Status* s, +13943: std::string* out_value, PinnableWideColumns* out_columns, +13943: bool* is_blob_index) { +13943: *s = Status::OK(); +13943: +13943: if (!do_merge) { +13943: +13943: +13943: +13943: +13943: merge_context->PushOperand(value, value_pinned); +13943: } else if (merge_in_progress) { +13943: +13943: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +13943: (static_cast ( +13943: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: do_merge +13943: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: "do_merge" +13943: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: ; +13943: +13943: +13943: +13943: if (out_value || out_columns) { +13943: *s = MergeHelper::TimedFullMerge( +13943: merge_operator, lookup_user_key, MergeHelper::kPlainBaseValue, +13943: value, merge_context->GetOperands(), info_log, statistics, clock, +13943: true, +13943: nullptr, out_value, out_columns); +13943: } +13943: } else if (out_value) { +13943: out_value->assign(value.data(), value.size()); +13943: } else if (out_columns) { +13943: out_columns->SetPlainValue(value); +13943: } +13943: +13943: if (is_blob_index) { +13943: *is_blob_index = false; +13943: } +13943: } +13943: +13943: static void HandleTypeDeletion( +13943: const Slice& lookup_user_key, bool merge_in_progress, +13943: MergeContext* merge_context, const MergeOperator* merge_operator, +13943: SystemClock* clock, Statistics* statistics, Logger* logger, Status* s, +13943: std::string* out_value, PinnableWideColumns* out_columns) { +13943: if (merge_in_progress) { +13943: if (out_value || out_columns) { +13943: +13943: +13943: +13943: *s = MergeHelper::TimedFullMerge( +13943: merge_operator, lookup_user_key, MergeHelper::kNoBaseValue, +13943: merge_context->GetOperands(), logger, statistics, clock, +13943: true, +13943: nullptr, out_value, out_columns); +13943: } else { +13943: +13943: +13943: +13943: *s = Status::OK(); +13943: } +13943: } else { +13943: *s = Status::NotFound(); +13943: } +13943: } +13943: +13943: protected: +13943: friend class MemTableList; +13943: +13943: int refs_{0}; +13943: +13943: +13943: bool flush_in_progress_{false}; +13943: bool flush_completed_{false}; +13943: uint64_t file_number_{0}; +13943: +13943: +13943: +13943: VersionEdit edit_; +13943: +13943: +13943: uint64_t mem_next_logfile_number_{0}; +13943: +13943: +13943: uint64_t id_ = 0; +13943: +13943: +13943: +13943: +13943: +13943: SequenceNumber atomic_flush_seqno_{kMaxSequenceNumber}; +13943: +13943: +13943: std::unique_ptr flush_job_info_; +13943: }; +13943: +13943: class MemTable final : public ReadOnlyMemTable { +13943: public: +13943: struct KeyComparator final : public MemTableRep::KeyComparator { +13943: const InternalKeyComparator comparator; +13943: explicit KeyComparator(const InternalKeyComparator& c) : comparator(c) {} +13943: int operator()(const char* prefix_len_key1, +13943: const char* prefix_len_key2) const override; +13943: int operator()(const char* prefix_len_key, +13943: const DecodedType& key) const override; +13943: }; +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: explicit MemTable(const InternalKeyComparator& comparator, +13943: const ImmutableOptions& ioptions, +13943: const MutableCFOptions& mutable_cf_options, +13943: WriteBufferManager* write_buffer_manager, +13943: SequenceNumber earliest_seq, uint32_t column_family_id); +13943: +13943: MemTable(const MemTable&) = delete; +13943: MemTable& operator=(const MemTable&) = delete; +13943: +13943: ~MemTable() override; +13943: +13943: const char* Name() const override { return "MemTable"; } +13943: +13943: size_t ApproximateMemoryUsage() override; +13943: +13943: +13943: +13943: size_t ApproximateMemoryUsageFast() const { +13943: return approximate_memory_usage_.load(std::memory_order_relaxed); +13943: } +13943: +13943: size_t MemoryAllocatedBytes() const override { +13943: return table_->ApproximateMemoryUsage() + +13943: range_del_table_->ApproximateMemoryUsage() + +13943: arena_.MemoryAllocatedBytes(); +13943: } +13943: +13943: void UniqueRandomSample(const uint64_t& target_sample_size, +13943: std::unordered_set* entries) override { +13943: +13943: +13943: table_->UniqueRandomSample(NumEntries(), target_sample_size, entries); +13943: } +13943: +13943: +13943: +13943: bool ShouldScheduleFlush() const { +13943: return flush_state_.load(std::memory_order_relaxed) == FLUSH_REQUESTED; +13943: } +13943: +13943: +13943: +13943: bool MarkFlushScheduled() { +13943: auto before = FLUSH_REQUESTED; +13943: return flush_state_.compare_exchange_strong(before, FLUSH_SCHEDULED, +13943: std::memory_order_relaxed, +13943: std::memory_order_relaxed); +13943: } +13943: +13943: InternalIterator* NewIterator( +13943: const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping, Arena* arena, +13943: const SliceTransform* prefix_extractor, bool for_flush) override; +13943: +13943: InternalIterator* NewTimestampStrippingIterator( +13943: const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping, Arena* arena, +13943: const SliceTransform* prefix_extractor, size_t ts_sz) override; +13943: +13943: FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +13943: const ReadOptions& read_options, SequenceNumber read_seq, +13943: bool immutable_memtable) override; +13943: +13943: FragmentedRangeTombstoneIterator* NewTimestampStrippingRangeTombstoneIterator( +13943: const ReadOptions& read_options, SequenceNumber read_seq, +13943: size_t ts_sz) override; +13943: +13943: Status VerifyEncodedEntry(Slice encoded, +13943: const ProtectionInfoKVOS64& kv_prot_info); +13943: # 572 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: Status Add(SequenceNumber seq, ValueType type, const Slice& key, +13943: const Slice& value, const ProtectionInfoKVOS64* kv_prot_info, +13943: bool allow_concurrent = false, +13943: MemTablePostProcessInfo* post_process_info = nullptr, +13943: void** hint = nullptr); +13943: +13943: using ReadOnlyMemTable::Get; +13943: bool Get(const LookupKey& key, std::string* value, +13943: PinnableWideColumns* columns, std::string* timestamp, Status* s, +13943: MergeContext* merge_context, +13943: SequenceNumber* max_covering_tombstone_seq, SequenceNumber* seq, +13943: const ReadOptions& read_opts, bool immutable_memtable, +13943: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +13943: bool do_merge = true) override; +13943: +13943: void MultiGet(const ReadOptions& read_options, MultiGetRange* range, +13943: ReadCallback* callback, bool immutable_memtable) override; +13943: # 600 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: Status Update(SequenceNumber seq, ValueType value_type, const Slice& key, +13943: const Slice& value, const ProtectionInfoKVOS64* kv_prot_info); +13943: # 617 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +13943: Status UpdateCallback(SequenceNumber seq, const Slice& key, +13943: const Slice& delta, +13943: const ProtectionInfoKVOS64* kv_prot_info); +13943: +13943: +13943: +13943: +13943: +13943: size_t CountSuccessiveMergeEntries(const LookupKey& key, size_t limit); +13943: +13943: +13943: +13943: void BatchPostProcess(const MemTablePostProcessInfo& update_counters) { +13943: num_entries_.fetch_add(update_counters.num_entries, +13943: std::memory_order_relaxed); +13943: data_size_.fetch_add(update_counters.data_size, std::memory_order_relaxed); +13943: if (update_counters.num_deletes != 0) { +13943: num_deletes_.fetch_add(update_counters.num_deletes, +13943: std::memory_order_relaxed); +13943: } +13943: if (update_counters.num_range_deletes > 0) { +13943: num_range_deletes_.fetch_add(update_counters.num_range_deletes, +13943: std::memory_order_relaxed); +13943: } +13943: UpdateFlushState(); +13943: } +13943: +13943: uint64_t NumEntries() const override { +13943: return num_entries_.load(std::memory_order_relaxed); +13943: } +13943: +13943: uint64_t NumDeletion() const override { +13943: return num_deletes_.load(std::memory_order_relaxed); +13943: } +13943: +13943: uint64_t NumRangeDeletion() const override { +13943: return num_range_deletes_.load(std::memory_order_relaxed); +13943: } +13943: +13943: uint64_t GetDataSize() const override { +13943: return data_size_.load(std::memory_order_relaxed); +13943: } +13943: +13943: size_t write_buffer_size() const { +13943: return write_buffer_size_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: void UpdateWriteBufferSize(size_t new_write_buffer_size) { +13943: if (bloom_filter_ == nullptr || +13943: new_write_buffer_size < write_buffer_size_) { +13943: write_buffer_size_.store(new_write_buffer_size, +13943: std::memory_order_relaxed); +13943: } +13943: } +13943: +13943: bool IsEmpty() const override { return first_seqno_ == 0; } +13943: +13943: SequenceNumber GetFirstSequenceNumber() override { +13943: return first_seqno_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: void SetFirstSequenceNumber(SequenceNumber first_seqno) { +13943: return first_seqno_.store(first_seqno, std::memory_order_relaxed); +13943: } +13943: +13943: SequenceNumber GetEarliestSequenceNumber() override { +13943: +13943: return earliest_seqno_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: +13943: +13943: +13943: +13943: void SetEarliestSequenceNumber(SequenceNumber earliest_seqno) { +13943: return earliest_seqno_.store(earliest_seqno, std::memory_order_relaxed); +13943: } +13943: +13943: +13943: +13943: SequenceNumber GetCreationSeq() const { return creation_seq_; } +13943: +13943: void SetCreationSeq(SequenceNumber sn) { creation_seq_ = sn; } +13943: +13943: +13943: +13943: +13943: void RefLogContainingPrepSection(uint64_t log); +13943: uint64_t GetMinLogContainingPrepSection() override; +13943: +13943: void MarkImmutable() override { +13943: table_->MarkReadOnly(); +13943: mem_tracker_.DoneAllocating(); +13943: } +13943: +13943: void MarkFlushed() override { table_->MarkFlushed(); } +13943: +13943: +13943: bool IsMergeOperatorSupported() const { +13943: return table_->IsMergeOperatorSupported(); +13943: } +13943: +13943: +13943: +13943: bool IsSnapshotSupported() const { +13943: return table_->IsSnapshotSupported() && !moptions_.inplace_update_support; +13943: } +13943: +13943: MemTableStats ApproximateStats(const Slice& start_ikey, +13943: const Slice& end_ikey) override; +13943: +13943: +13943: port::RWMutex* GetLock(const Slice& key); +13943: +13943: const InternalKeyComparator& GetInternalKeyComparator() const override { +13943: return comparator_.comparator; +13943: } +13943: +13943: const ImmutableMemTableOptions* GetImmutableMemTableOptions() const { +13943: return &moptions_; +13943: } +13943: +13943: uint64_t ApproximateOldestKeyTime() const override { +13943: return oldest_key_time_.load(std::memory_order_relaxed); +13943: } +13943: +13943: +13943: bool ShouldFlushNow(); +13943: +13943: +13943: +13943: +13943: +13943: +13943: void ConstructFragmentedRangeTombstones(); +13943: +13943: bool IsFragmentedRangeTombstonesConstructed() const override { +13943: return fragmented_range_tombstone_list_.get() != nullptr || +13943: is_range_del_table_empty_; +13943: } +13943: +13943: const Slice& GetNewestUDT() const override; +13943: +13943: +13943: static Status VerifyEntryChecksum(const char* entry, +13943: uint32_t protection_bytes_per_key, +13943: bool allow_data_in_errors = false); +13943: +13943: private: +13943: enum FlushStateEnum { FLUSH_NOT_REQUESTED, FLUSH_REQUESTED, FLUSH_SCHEDULED }; +13943: +13943: friend class MemTableIterator; +13943: friend class MemTableBackwardIterator; +13943: friend class MemTableList; +13943: +13943: KeyComparator comparator_; +13943: const ImmutableMemTableOptions moptions_; +13943: const size_t kArenaBlockSize; +13943: AllocTracker mem_tracker_; +13943: ConcurrentArena arena_; +13943: std::unique_ptr table_; +13943: std::unique_ptr range_del_table_; +13943: std::atomic_bool is_range_del_table_empty_; +13943: +13943: +13943: std::atomic data_size_; +13943: std::atomic num_entries_; +13943: std::atomic num_deletes_; +13943: std::atomic num_range_deletes_; +13943: +13943: +13943: std::atomic write_buffer_size_; +13943: +13943: +13943: std::atomic first_seqno_; +13943: +13943: +13943: +13943: std::atomic earliest_seqno_; +13943: +13943: SequenceNumber creation_seq_; +13943: +13943: +13943: +13943: std::atomic min_prep_log_referenced_; +13943: +13943: +13943: std::vector locks_; +13943: +13943: const SliceTransform* const prefix_extractor_; +13943: std::unique_ptr bloom_filter_; +13943: +13943: std::atomic flush_state_; +13943: +13943: SystemClock* clock_; +13943: +13943: +13943: const SliceTransform* insert_with_hint_prefix_extractor_; +13943: +13943: +13943: UnorderedMapH insert_hints_; +13943: +13943: +13943: std::atomic oldest_key_time_; +13943: +13943: +13943: +13943: std::atomic approximate_memory_usage_; +13943: +13943: +13943: +13943: uint32_t memtable_max_range_deletions_ = 0; +13943: +13943: +13943: size_t ts_sz_; +13943: +13943: +13943: bool persist_user_defined_timestamps_; +13943: +13943: +13943: +13943: +13943: +13943: +13943: Slice newest_udt_; +13943: +13943: +13943: void UpdateFlushState(); +13943: +13943: void UpdateOldestKeyTime(); +13943: +13943: void GetFromTable(const LookupKey& key, +13943: SequenceNumber max_covering_tombstone_seq, bool do_merge, +13943: ReadCallback* callback, bool* is_blob_index, +13943: std::string* value, PinnableWideColumns* columns, +13943: std::string* timestamp, Status* s, +13943: MergeContext* merge_context, SequenceNumber* seq, +13943: bool* found_final_value, bool* merge_in_progress); +13943: +13943: +13943: +13943: +13943: +13943: +13943: FragmentedRangeTombstoneIterator* NewRangeTombstoneIteratorInternal( +13943: const ReadOptions& read_options, SequenceNumber read_seq, +13943: bool immutable_memtable); +13943: +13943: +13943: +13943: +13943: std::unique_ptr +13943: fragmented_range_tombstone_list_; +13943: +13943: +13943: +13943: +13943: std::unique_ptr +13943: timestamp_stripping_fragmented_range_tombstone_list_; +13943: +13943: +13943: std::mutex range_del_mutex_; +13943: CoreLocalArray> +13943: cached_range_tombstone_; +13943: +13943: void UpdateEntryChecksum(const ProtectionInfoKVOS64* kv_prot_info, +13943: const Slice& key, const Slice& value, ValueType type, +13943: SequenceNumber s, char* checksum_ptr); +13943: +13943: void MaybeUpdateNewestUDT(const Slice& user_key); +13943: }; +13943: +13943: const char* EncodeKey(std::string* scratch, const Slice& target); +13943: +13943: } +13943: # 11 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +13943: # 26 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/logging/logging.h" 1 +13943: # 13 "/build/reproducible-path/rocksdb-9.10.0/logging/logging.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: inline const char* RocksLogShorterFileName(const char* file) { +13943: +13943: +13943: return file + (sizeof("./logging/logging.h") > 18 ? sizeof("./logging/logging.h") - 18 : 0); +13943: } +13943: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +13943: +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_usage.h" 1 +13943: +13943: +13943: +13943: +13943: +13943: +13943: # 16 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_usage.h" +13943: namespace rocksdb { +13943: +13943: +13943: +13943: template +13943: size_t ApproximateMemoryUsage( +13943: const std::unordered_map& umap) { +13943: using Map = std::unordered_map; +13943: return sizeof(umap) + +13943: +13943: (sizeof(typename Map::value_type) + sizeof(void*)) * umap.size() + +13943: +13943: umap.bucket_count() * sizeof(void*); +13943: } +13943: # 38 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_usage.h" +13943: } +13943: # 29 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +13943: # 41 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: +13943: +13943: +13943: +13943: template +13943: class IteratorWrapperBase { +13943: public: +13943: IteratorWrapperBase() : iter_(nullptr), valid_(false) {} +13943: explicit IteratorWrapperBase(InternalIteratorBase* _iter) +13943: : iter_(nullptr) { +13943: Set(_iter); +13943: } +13943: ~IteratorWrapperBase() {} +13943: InternalIteratorBase* iter() const { return iter_; } +13943: void SetRangeDelReadSeqno(SequenceNumber read_seqno) { +13943: if (iter_) { +13943: iter_->SetRangeDelReadSeqno(read_seqno); +13943: } +13943: } +13943: +13943: +13943: +13943: InternalIteratorBase* Set(InternalIteratorBase* _iter) { +13943: InternalIteratorBase* old_iter = iter_; +13943: +13943: iter_ = _iter; +13943: if (iter_ == nullptr) { +13943: valid_ = false; +13943: } else { +13943: Update(); +13943: } +13943: return old_iter; +13943: } +13943: +13943: void DeleteIter(bool is_arena_mode) { +13943: if (iter_) { +13943: # 66 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: if (!is_arena_mode) { +13943: delete iter_; +13943: } else { +13943: iter_->~InternalIteratorBase(); +13943: } +13943: } +13943: } +13943: +13943: +13943: bool Valid() const { +13943: +13943: +13943: +13943: return valid_; +13943: } +13943: Slice key() const { +13943: +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return result_.key; +13943: } +13943: +13943: uint64_t write_unix_time() const { +13943: +13943: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return iter_->write_unix_time(); +13943: } +13943: +13943: TValue value() const { +13943: +13943: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return iter_->value(); +13943: } +13943: +13943: Status status() const { +13943: +13943: +13943: +13943: +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return iter_->status(); +13943: } +13943: bool PrepareValue() { +13943: +13943: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: if (result_.value_prepared) { +13943: return true; +13943: } +13943: if (iter_->PrepareValue()) { +13943: result_.value_prepared = true; +13943: result_.key = iter_->key(); +13943: return true; +13943: } +13943: +13943: +13943: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: !iter_->Valid() +13943: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "!iter_->Valid()" +13943: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: valid_ = false; +13943: return false; +13943: } +13943: void Next() { +13943: +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: valid_ = iter_->NextAndGetResult(&result_); +13943: +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: !valid_ || iter_->status().ok() +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "!valid_ || iter_->status().ok()" +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: } +13943: bool NextAndGetResult(IterateResult* result) { +13943: +13943: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: valid_ = iter_->NextAndGetResult(&result_); +13943: *result = result_; +13943: +13943: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: !valid_ || iter_->status().ok() +13943: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "!valid_ || iter_->status().ok()" +13943: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return valid_; +13943: } +13943: void Prev() { +13943: +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: iter_->Prev(); +13943: Update(); +13943: } +13943: void Seek(const Slice& k) { +13943: +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: iter_->Seek(k); +13943: Update(); +13943: } +13943: void SeekForPrev(const Slice& k) { +13943: +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: iter_->SeekForPrev(k); +13943: Update(); +13943: } +13943: void SeekToFirst() { +13943: +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: iter_->SeekToFirst(); +13943: Update(); +13943: } +13943: void SeekToLast() { +13943: +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: iter_->SeekToLast(); +13943: Update(); +13943: } +13943: +13943: bool MayBeOutOfLowerBound() { +13943: +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return iter_->MayBeOutOfLowerBound(); +13943: } +13943: +13943: IterBoundCheck UpperBoundCheckResult() { +13943: +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return result_.bound_check_result; +13943: } +13943: +13943: void SetPinnedItersMgr(PinnedIteratorsManager* pinned_iters_mgr) { +13943: +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_ +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_" +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: iter_->SetPinnedItersMgr(pinned_iters_mgr); +13943: } +13943: bool IsKeyPinned() const { +13943: +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return iter_->IsKeyPinned(); +13943: } +13943: bool IsValuePinned() const { +13943: +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return iter_->IsValuePinned(); +13943: } +13943: +13943: bool IsValuePrepared() const { return result_.value_prepared; } +13943: +13943: Slice user_key() const { +13943: +13943: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: Valid() +13943: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "Valid()" +13943: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: return iter_->user_key(); +13943: } +13943: +13943: void UpdateReadaheadState(InternalIteratorBase* old_iter) { +13943: if (old_iter && iter_) { +13943: ReadaheadFileInfo readahead_file_info; +13943: old_iter->GetReadaheadState(&readahead_file_info); +13943: iter_->SetReadaheadState(&readahead_file_info); +13943: } +13943: } +13943: +13943: bool IsDeleteRangeSentinelKey() const { +13943: return iter_->IsDeleteRangeSentinelKey(); +13943: } +13943: +13943: private: +13943: void Update() { +13943: valid_ = iter_->Valid(); +13943: if (valid_) { +13943: +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: (static_cast ( +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: iter_->status().ok() +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: "iter_->status().ok()" +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +13943: ; +13943: result_.key = iter_->key(); +13943: result_.bound_check_result = IterBoundCheck::kUnknown; +13943: result_.value_prepared = false; +13943: } +13943: } +13943: +13943: InternalIteratorBase* iter_; +13943: IterateResult result_; +13943: bool valid_; +13943: +13943: +13943: +13943: +13943: }; +13943: +13943: using IteratorWrapper = IteratorWrapperBase; +13943: +13943: class Arena; +13943: +13943: template +13943: InternalIteratorBase* NewEmptyInternalIterator(Arena* arena); +13943: +13943: } +13943: # 42 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +13943: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" 1 +13943: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" +13943: +13943: +13943: +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: class Arena; +13943: class ArenaWrappedDBIter; +13943: class InternalKeyComparator; +13943: +13943: template +13943: class InternalIteratorBase; +13943: using InternalIterator = InternalIteratorBase; +13943: # 35 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" +13943: InternalIterator* NewMergingIterator(const InternalKeyComparator* comparator, +13943: InternalIterator** children, int n, +13943: Arena* arena = nullptr, +13943: bool prefix_seek_mode = false); +13943: +13943: +13943: +13943: +13943: class MergingIterator; +13943: +13943: +13943: +13943: +13943: +13943: class MergeIteratorBuilder { +13943: public: +13943: +13943: +13943: explicit MergeIteratorBuilder(const InternalKeyComparator* comparator, +13943: Arena* arena, bool prefix_seek_mode = false, +13943: const Slice* iterate_upper_bound = nullptr); +13943: ~MergeIteratorBuilder(); +13943: +13943: +13943: void AddIterator(InternalIterator* iter); +13943: # 72 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" +13943: void AddPointAndTombstoneIterator( +13943: InternalIterator* point_iter, +13943: std::unique_ptr&& tombstone_iter, +13943: std::unique_ptr** tombstone_iter_ptr = +13943: nullptr); +13943: +13943: +13943: +13943: Arena* GetArena() { return arena; } +13943: +13943: +13943: +13943: +13943: +13943: +13943: InternalIterator* Finish(ArenaWrappedDBIter* db_iter = nullptr); +13943: +13943: private: +13943: MergingIterator* merge_iter; +13943: InternalIterator* first_iter; +13943: bool use_merging_iter; +13943: Arena* arena; +13943: +13943: +13943: std::vector**>> +13943: range_del_iter_ptrs_; +13943: }; +13943: +13943: } +13943: # 43 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +13943: +13943: +13943: +13943: +13943: namespace rocksdb { +13943: +13943: ImmutableMemTableOptions::ImmutableMemTableOptions( +13943: const ImmutableOptions& ioptions, +13943: const MutableCFOptions& mutable_cf_options) +13943: : arena_block_size(mutable_cf_options.arena_block_size), +13943: memtable_prefix_bloom_bits( +13943: static_cast( +13943: static_cast(mutable_cf_options.write_buffer_size) * +13943: mutable_cf_options.memtable_prefix_bloom_size_ratio) * +13943: 8u), +13943: memtable_huge_page_size(mutable_cf_options.memtable_huge_page_size), +13943: memtable_whole_key_filtering( +13943: mutable_cf_options.memtable_whole_key_filtering), +13943: inplace_update_support(ioptions.inplace_update_support), +13943: inplace_update_num_locks(mutable_cf_options.inplace_update_num_locks), +13943: inplace_callback(ioptions.inplace_callback), +13943: max_successive_merges(mutable_cf_options.max_successive_merges), +13943: strict_max_successive_merges( +13943: mutable_cf_options.strict_max_successive_merges), +13943: statistics(ioptions.stats), +13943: merge_operator(ioptions.merge_operator.get()), +13943: info_log(ioptions.logger), +13943: protection_bytes_per_key( +13943: mutable_cf_options.memtable_protection_bytes_per_key), +13943: allow_data_in_errors(ioptions.allow_data_in_errors), +13943: paranoid_memory_checks(mutable_cf_options.paranoid_memory_checks) {} +13943: +13943: MemTable::MemTable(const InternalKeyComparator& cmp, +13943: const ImmutableOptions& ioptions, +13943: const MutableCFOptions& mutable_cf_options, +13943: WriteBufferManager* write_buffer_manager, +13943: SequenceNumber latest_seq, uint32_t column_family_id) +13943: : comparator_(cmp), +13943: moptions_(ioptions, mutable_cf_options), +13943: kArenaBlockSize(Arena::OptimizeBlockSize(moptions_.arena_block_size)), +13943: mem_tracker_(write_buffer_manager), +13943: arena_(moptions_.arena_block_size, +13943: (write_buffer_manager != nullptr && +13943: (write_buffer_manager->enabled() || +13943: write_buffer_manager->cost_to_cache())) +13943: ? &mem_tracker_ +13943: : nullptr, +13943: mutable_cf_options.memtable_huge_page_size), +13943: table_(ioptions.memtable_factory->CreateMemTableRep( +13943: comparator_, &arena_, mutable_cf_options.prefix_extractor.get(), +13943: ioptions.logger, column_family_id)), +13943: range_del_table_(SkipListFactory().CreateMemTableRep( +13943: comparator_, &arena_, nullptr , ioptions.logger, +13943: column_family_id)), +13943: is_range_del_table_empty_(true), +13943: data_size_(0), +13943: num_entries_(0), +13943: num_deletes_(0), +13943: num_range_deletes_(0), +13943: write_buffer_size_(mutable_cf_options.write_buffer_size), +13943: first_seqno_(0), +13943: earliest_seqno_(latest_seq), +13943: creation_seq_(latest_seq), +13943: min_prep_log_referenced_(0), +13943: locks_(moptions_.inplace_update_support +13943: ? moptions_.inplace_update_num_locks +13943: : 0), +13943: prefix_extractor_(mutable_cf_options.prefix_extractor.get()), +13943: flush_state_(FLUSH_NOT_REQUESTED), +13943: clock_(ioptions.clock), +13943: insert_with_hint_prefix_extractor_( +13943: ioptions.memtable_insert_with_hint_prefix_extractor.get()), +13943: oldest_key_time_(std::numeric_limits::max()), +13943: approximate_memory_usage_(0), +13943: memtable_max_range_deletions_( +13943: mutable_cf_options.memtable_max_range_deletions) { +13943: UpdateFlushState(); +13943: +13943: +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: !ShouldScheduleFlush() +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "!ShouldScheduleFlush()" +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: +13943: if ((prefix_extractor_ || moptions_.memtable_whole_key_filtering) && +13943: moptions_.memtable_prefix_bloom_bits > 0) { +13943: bloom_filter_.reset( +13943: new DynamicBloom(&arena_, moptions_.memtable_prefix_bloom_bits, +13943: 6 , +13943: moptions_.memtable_huge_page_size, ioptions.logger)); +13943: } +13943: +13943: +13943: +13943: auto new_cache = std::make_shared(); +13943: size_t size = cached_range_tombstone_.Size(); +13943: for (size_t i = 0; i < size; ++i) { +13943: std::shared_ptr* local_cache_ref_ptr = +13943: cached_range_tombstone_.AccessAtCore(i); +13943: auto new_local_cache_ref = std::make_shared< +13943: const std::shared_ptr>(new_cache); +13943: std::atomic_store_explicit( +13943: local_cache_ref_ptr, +13943: std::shared_ptr(new_local_cache_ref, +13943: new_cache.get()), +13943: std::memory_order_relaxed); +13943: } +13943: const Comparator* ucmp = cmp.user_comparator(); +13943: +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ucmp +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "ucmp" +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: ts_sz_ = ucmp->timestamp_size(); +13943: persist_user_defined_timestamps_ = ioptions.persist_user_defined_timestamps; +13943: } +13943: +13943: MemTable::~MemTable() { +13943: mem_tracker_.FreeMem(); +13943: +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: refs_ == 0 +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "refs_ == 0" +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: } +13943: +13943: size_t MemTable::ApproximateMemoryUsage() { +13943: autovector usages = { +13943: arena_.ApproximateMemoryUsage(), table_->ApproximateMemoryUsage(), +13943: range_del_table_->ApproximateMemoryUsage(), +13943: rocksdb::ApproximateMemoryUsage(insert_hints_)}; +13943: size_t total_usage = 0; +13943: for (size_t usage : usages) { +13943: +13943: +13943: if (usage >= std::numeric_limits::max() - total_usage) { +13943: return std::numeric_limits::max(); +13943: } +13943: total_usage += usage; +13943: } +13943: approximate_memory_usage_.store(total_usage, std::memory_order_relaxed); +13943: +13943: return total_usage; +13943: } +13943: +13943: bool MemTable::ShouldFlushNow() { +13943: +13943: +13943: if (memtable_max_range_deletions_ > 0 && +13943: num_range_deletes_.load(std::memory_order_relaxed) >= +13943: static_cast(memtable_max_range_deletions_)) { +13943: return true; +13943: } +13943: +13943: size_t write_buffer_size = write_buffer_size_.load(std::memory_order_relaxed); +13943: +13943: +13943: +13943: +13943: +13943: +13943: const double kAllowOverAllocationRatio = 0.6; +13943: +13943: +13943: +13943: auto allocated_memory = table_->ApproximateMemoryUsage() + +13943: range_del_table_->ApproximateMemoryUsage() + +13943: arena_.MemoryAllocatedBytes(); +13943: +13943: approximate_memory_usage_.store(allocated_memory, std::memory_order_relaxed); +13943: +13943: +13943: +13943: if (allocated_memory + kArenaBlockSize < +13943: write_buffer_size + kArenaBlockSize * kAllowOverAllocationRatio) { +13943: return false; +13943: } +13943: +13943: +13943: +13943: if (allocated_memory > +13943: write_buffer_size + kArenaBlockSize * kAllowOverAllocationRatio) { +13943: return true; +13943: } +13943: # 242 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: return arena_.AllocatedAndUnused() < kArenaBlockSize / 4; +13943: } +13943: +13943: void MemTable::UpdateFlushState() { +13943: auto state = flush_state_.load(std::memory_order_relaxed); +13943: if (state == FLUSH_NOT_REQUESTED && ShouldFlushNow()) { +13943: +13943: +13943: flush_state_.compare_exchange_strong(state, FLUSH_REQUESTED, +13943: std::memory_order_relaxed, +13943: std::memory_order_relaxed); +13943: } +13943: } +13943: +13943: void MemTable::UpdateOldestKeyTime() { +13943: uint64_t oldest_key_time = oldest_key_time_.load(std::memory_order_relaxed); +13943: if (oldest_key_time == std::numeric_limits::max()) { +13943: int64_t current_time = 0; +13943: auto s = clock_->GetCurrentTime(¤t_time); +13943: if (s.ok()) { +13943: +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: current_time >= 0 +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "current_time >= 0" +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: oldest_key_time_.compare_exchange_strong( +13943: oldest_key_time, static_cast(current_time), +13943: std::memory_order_relaxed, std::memory_order_relaxed); +13943: } +13943: } +13943: } +13943: +13943: Status MemTable::VerifyEntryChecksum(const char* entry, +13943: uint32_t protection_bytes_per_key, +13943: bool allow_data_in_errors) { +13943: if (protection_bytes_per_key == 0) { +13943: return Status::OK(); +13943: } +13943: uint32_t key_length; +13943: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +13943: if (key_ptr == nullptr) { +13943: return Status::Corruption("Unable to parse internal key length"); +13943: } +13943: if (key_length < 8) { +13943: return Status::Corruption("Memtable entry internal key length too short."); +13943: } +13943: Slice user_key = Slice(key_ptr, key_length - 8); +13943: +13943: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +13943: ValueType type; +13943: SequenceNumber seq; +13943: UnPackSequenceAndType(tag, &seq, &type); +13943: +13943: uint32_t value_length = 0; +13943: const char* value_ptr = GetVarint32Ptr( +13943: key_ptr + key_length, key_ptr + key_length + 5, &value_length); +13943: if (value_ptr == nullptr) { +13943: return Status::Corruption("Unable to parse internal key value"); +13943: } +13943: Slice value = Slice(value_ptr, value_length); +13943: +13943: const char* checksum_ptr = value_ptr + value_length; +13943: bool match = +13943: ProtectionInfo64() +13943: .ProtectKVO(user_key, value, type) +13943: .ProtectS(seq) +13943: .Verify(static_cast(protection_bytes_per_key), checksum_ptr); +13943: if (!match) { +13943: std::string msg( +13943: "Corrupted memtable entry, per key-value checksum verification " +13943: "failed."); +13943: if (allow_data_in_errors) { +13943: msg.append("Unrecognized value type: " + +13943: std::to_string(static_cast(type)) + ". "); +13943: msg.append("User key: " + user_key.ToString( true) + ". "); +13943: msg.append("seq: " + std::to_string(seq) + "."); +13943: } +13943: return Status::Corruption(msg.c_str()); +13943: } +13943: return Status::OK(); +13943: } +13943: +13943: int MemTable::KeyComparator::operator()(const char* prefix_len_key1, +13943: const char* prefix_len_key2) const { +13943: +13943: Slice k1 = GetLengthPrefixedSlice(prefix_len_key1); +13943: Slice k2 = GetLengthPrefixedSlice(prefix_len_key2); +13943: return comparator.CompareKeySeq(k1, k2); +13943: } +13943: +13943: int MemTable::KeyComparator::operator()( +13943: const char* prefix_len_key, const KeyComparator::DecodedType& key) const { +13943: +13943: Slice a = GetLengthPrefixedSlice(prefix_len_key); +13943: return comparator.CompareKeySeq(a, key); +13943: } +13943: +13943: void MemTableRep::InsertConcurrently(KeyHandle ) { +13943: throw std::runtime_error("concurrent insert not supported"); +13943: } +13943: +13943: Slice MemTableRep::UserKey(const char* key) const { +13943: Slice slice = GetLengthPrefixedSlice(key); +13943: return Slice(slice.data(), slice.size() - 8); +13943: } +13943: +13943: KeyHandle MemTableRep::Allocate(const size_t len, char** buf) { +13943: *buf = allocator_->Allocate(len); +13943: return static_cast(*buf); +13943: } +13943: +13943: +13943: +13943: +13943: const char* EncodeKey(std::string* scratch, const Slice& target) { +13943: scratch->clear(); +13943: PutVarint32(scratch, static_cast(target.size())); +13943: scratch->append(target.data(), target.size()); +13943: return scratch->data(); +13943: } +13943: +13943: class MemTableIterator : public InternalIterator { +13943: public: +13943: enum Kind { kPointEntries, kRangeDelEntries }; +13943: MemTableIterator( +13943: Kind kind, const MemTable& mem, const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping = nullptr, +13943: Arena* arena = nullptr, +13943: const SliceTransform* cf_prefix_extractor = nullptr) +13943: : bloom_(nullptr), +13943: prefix_extractor_(mem.prefix_extractor_), +13943: comparator_(mem.comparator_), +13943: seqno_to_time_mapping_(seqno_to_time_mapping), +13943: status_(Status::OK()), +13943: logger_(mem.moptions_.info_log), +13943: ts_sz_(mem.ts_sz_), +13943: protection_bytes_per_key_(mem.moptions_.protection_bytes_per_key), +13943: valid_(false), +13943: value_pinned_( +13943: !mem.GetImmutableMemTableOptions()->inplace_update_support), +13943: arena_mode_(arena != nullptr), +13943: paranoid_memory_checks_(mem.moptions_.paranoid_memory_checks), +13943: allow_data_in_error(mem.moptions_.allow_data_in_errors) { +13943: if (kind == kRangeDelEntries) { +13943: iter_ = mem.range_del_table_->GetIterator(arena); +13943: } else if (prefix_extractor_ != nullptr && +13943: +13943: +13943: prefix_extractor_ == cf_prefix_extractor && +13943: (read_options.prefix_same_as_start || +13943: (!read_options.total_order_seek && +13943: !read_options.auto_prefix_mode))) { +13943: +13943: +13943: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: kind == kPointEntries +13943: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "kind == kPointEntries" +13943: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: bloom_ = mem.bloom_filter_.get(); +13943: iter_ = mem.table_->GetDynamicPrefixIterator(arena); +13943: } else { +13943: +13943: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: kind == kPointEntries +13943: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "kind == kPointEntries" +13943: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: iter_ = mem.table_->GetIterator(arena); +13943: } +13943: status_.PermitUncheckedError(); +13943: } +13943: +13943: MemTableIterator(const MemTableIterator&) = delete; +13943: void operator=(const MemTableIterator&) = delete; +13943: +13943: ~MemTableIterator() override { +13943: +13943: +13943: +13943: +13943: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: !pinned_iters_mgr_ || !pinned_iters_mgr_->PinningEnabled() +13943: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "!pinned_iters_mgr_ || !pinned_iters_mgr_->PinningEnabled()" +13943: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: if (arena_mode_) { +13943: iter_->~Iterator(); +13943: } else { +13943: delete iter_; +13943: } +13943: status_.PermitUncheckedError(); +13943: } +13943: +13943: +13943: void SetPinnedItersMgr(PinnedIteratorsManager* pinned_iters_mgr) override { +13943: pinned_iters_mgr_ = pinned_iters_mgr; +13943: } +13943: PinnedIteratorsManager* pinned_iters_mgr_ = nullptr; +13943: +13943: +13943: bool Valid() const override { +13943: +13943: +13943: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: iter_->Valid() || !(valid_ && status_.ok()) +13943: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "iter_->Valid() || !(valid_ && status_.ok())" +13943: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: return valid_ && status_.ok(); +13943: } +13943: +13943: void Seek(const Slice& k) override { +13943: PerfStepTimer perf_step_timer_seek_on_memtable_time(&(perf_context.seek_on_memtable_time)); perf_step_timer_seek_on_memtable_time.Start();; +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.seek_on_memtable_count += 1; } static_assert(true, "semicolon required"); +13943: status_ = Status::OK(); +13943: if (bloom_) { +13943: +13943: Slice user_k_without_ts(ExtractUserKeyAndStripTimestamp(k, ts_sz_)); +13943: if (prefix_extractor_->InDomain(user_k_without_ts)) { +13943: Slice prefix = prefix_extractor_->Transform(user_k_without_ts); +13943: if (!bloom_->MayContain(prefix)) { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +13943: valid_ = false; +13943: return; +13943: } else { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +13943: } +13943: } +13943: } +13943: if (paranoid_memory_checks_) { +13943: status_ = iter_->SeekAndValidate(k, nullptr, allow_data_in_error); +13943: } else { +13943: iter_->Seek(k, nullptr); +13943: } +13943: valid_ = iter_->Valid(); +13943: VerifyEntryChecksum(); +13943: } +13943: void SeekForPrev(const Slice& k) override { +13943: PerfStepTimer perf_step_timer_seek_on_memtable_time(&(perf_context.seek_on_memtable_time)); perf_step_timer_seek_on_memtable_time.Start();; +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.seek_on_memtable_count += 1; } static_assert(true, "semicolon required"); +13943: status_ = Status::OK(); +13943: if (bloom_) { +13943: Slice user_k_without_ts(ExtractUserKeyAndStripTimestamp(k, ts_sz_)); +13943: if (prefix_extractor_->InDomain(user_k_without_ts)) { +13943: if (!bloom_->MayContain( +13943: prefix_extractor_->Transform(user_k_without_ts))) { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +13943: valid_ = false; +13943: return; +13943: } else { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +13943: } +13943: } +13943: } +13943: if (paranoid_memory_checks_) { +13943: status_ = iter_->SeekAndValidate(k, nullptr, allow_data_in_error); +13943: } else { +13943: iter_->Seek(k, nullptr); +13943: } +13943: valid_ = iter_->Valid(); +13943: VerifyEntryChecksum(); +13943: if (!Valid() && status().ok()) { +13943: SeekToLast(); +13943: } +13943: while (Valid() && comparator_.comparator.Compare(k, key()) < 0) { +13943: Prev(); +13943: } +13943: } +13943: void SeekToFirst() override { +13943: status_ = Status::OK(); +13943: iter_->SeekToFirst(); +13943: valid_ = iter_->Valid(); +13943: VerifyEntryChecksum(); +13943: } +13943: void SeekToLast() override { +13943: status_ = Status::OK(); +13943: iter_->SeekToLast(); +13943: valid_ = iter_->Valid(); +13943: VerifyEntryChecksum(); +13943: } +13943: void Next() override { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.next_on_memtable_count += 1; } static_assert(true, "semicolon required"); +13943: +13943: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: Valid() +13943: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "Valid()" +13943: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: if (paranoid_memory_checks_) { +13943: status_ = iter_->NextAndValidate(allow_data_in_error); +13943: } else { +13943: iter_->Next(); +13943: rocksdb::SyncPoint::GetInstance()->Process("MemTableIterator::Next:0", iter_); +13943: } +13943: valid_ = iter_->Valid(); +13943: VerifyEntryChecksum(); +13943: } +13943: bool NextAndGetResult(IterateResult* result) override { +13943: Next(); +13943: bool is_valid = Valid(); +13943: if (is_valid) { +13943: result->key = key(); +13943: result->bound_check_result = IterBoundCheck::kUnknown; +13943: result->value_prepared = true; +13943: } +13943: return is_valid; +13943: } +13943: void Prev() override { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.prev_on_memtable_count += 1; } static_assert(true, "semicolon required"); +13943: +13943: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: Valid() +13943: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "Valid()" +13943: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: if (paranoid_memory_checks_) { +13943: status_ = iter_->PrevAndValidate(allow_data_in_error); +13943: } else { +13943: iter_->Prev(); +13943: } +13943: valid_ = iter_->Valid(); +13943: VerifyEntryChecksum(); +13943: } +13943: Slice key() const override { +13943: +13943: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: Valid() +13943: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "Valid()" +13943: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: return GetLengthPrefixedSlice(iter_->key()); +13943: } +13943: +13943: uint64_t write_unix_time() const override { +13943: +13943: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: Valid() +13943: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "Valid()" +13943: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: ParsedInternalKey pikey; +13943: Status s = ParseInternalKey(key(), &pikey, false); +13943: if (!s.ok()) { +13943: return std::numeric_limits::max(); +13943: } else if (kTypeValuePreferredSeqno == pikey.type) { +13943: return ParsePackedValueForWriteTime(value()); +13943: } else if (!seqno_to_time_mapping_ || seqno_to_time_mapping_->Empty()) { +13943: return std::numeric_limits::max(); +13943: } +13943: return seqno_to_time_mapping_->GetProximalTimeBeforeSeqno(pikey.sequence); +13943: } +13943: +13943: Slice value() const override { +13943: +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: Valid() +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "Valid()" +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: Slice key_slice = GetLengthPrefixedSlice(iter_->key()); +13943: return GetLengthPrefixedSlice(key_slice.data() + key_slice.size()); +13943: } +13943: +13943: Status status() const override { return status_; } +13943: +13943: bool IsKeyPinned() const override { +13943: +13943: return true; +13943: } +13943: +13943: bool IsValuePinned() const override { +13943: +13943: return value_pinned_; +13943: } +13943: +13943: private: +13943: DynamicBloom* bloom_; +13943: const SliceTransform* const prefix_extractor_; +13943: const MemTable::KeyComparator comparator_; +13943: MemTableRep::Iterator* iter_; +13943: +13943: UnownedPtr seqno_to_time_mapping_; +13943: Status status_; +13943: Logger* logger_; +13943: size_t ts_sz_; +13943: uint32_t protection_bytes_per_key_; +13943: bool valid_; +13943: bool value_pinned_; +13943: bool arena_mode_; +13943: const bool paranoid_memory_checks_; +13943: const bool allow_data_in_error; +13943: +13943: void VerifyEntryChecksum() { +13943: if (protection_bytes_per_key_ > 0 && Valid()) { +13943: status_ = MemTable::VerifyEntryChecksum(iter_->key(), +13943: protection_bytes_per_key_); +13943: if (!status_.ok()) { +13943: rocksdb::Log((InfoLogLevel::ERROR_LEVEL), ((logger_)), ("[%s:" "593" "] " "In MemtableIterator: %s"), RocksLogShorterFileName("./db/memtable.cc"), status_.getState()); +13943: } +13943: } +13943: } +13943: }; +13943: +13943: InternalIterator* MemTable::NewIterator( +13943: const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping, Arena* arena, +13943: const SliceTransform* prefix_extractor, bool ) { +13943: +13943: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: arena != nullptr +13943: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "arena != nullptr" +13943: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: auto mem = arena->AllocateAligned(sizeof(MemTableIterator)); +13943: return new (mem) +13943: MemTableIterator(MemTableIterator::kPointEntries, *this, read_options, +13943: seqno_to_time_mapping, arena, prefix_extractor); +13943: } +13943: +13943: +13943: +13943: class TimestampStrippingIterator : public InternalIterator { +13943: public: +13943: TimestampStrippingIterator( +13943: MemTableIterator::Kind kind, const MemTable& memtable, +13943: const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping, Arena* arena, +13943: const SliceTransform* cf_prefix_extractor, size_t ts_sz) +13943: : arena_mode_(arena != nullptr), kind_(kind), ts_sz_(ts_sz) { +13943: +13943: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ts_sz_ != 0 +13943: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "ts_sz_ != 0" +13943: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: void* mem = arena ? arena->AllocateAligned(sizeof(MemTableIterator)) : +13943: operator new(sizeof(MemTableIterator)); +13943: iter_ = new (mem) +13943: MemTableIterator(kind, memtable, read_options, seqno_to_time_mapping, +13943: arena, cf_prefix_extractor); +13943: } +13943: +13943: +13943: TimestampStrippingIterator(const TimestampStrippingIterator&) = delete; +13943: void operator=(const TimestampStrippingIterator&) = delete; +13943: +13943: ~TimestampStrippingIterator() override { +13943: if (arena_mode_) { +13943: iter_->~MemTableIterator(); +13943: } else { +13943: delete iter_; +13943: } +13943: } +13943: +13943: void SetPinnedItersMgr(PinnedIteratorsManager* pinned_iters_mgr) override { +13943: iter_->SetPinnedItersMgr(pinned_iters_mgr); +13943: } +13943: +13943: bool Valid() const override { return iter_->Valid(); } +13943: void Seek(const Slice& k) override { +13943: iter_->Seek(k); +13943: UpdateKeyAndValueBuffer(); +13943: } +13943: void SeekForPrev(const Slice& k) override { +13943: iter_->SeekForPrev(k); +13943: UpdateKeyAndValueBuffer(); +13943: } +13943: void SeekToFirst() override { +13943: iter_->SeekToFirst(); +13943: UpdateKeyAndValueBuffer(); +13943: } +13943: void SeekToLast() override { +13943: iter_->SeekToLast(); +13943: UpdateKeyAndValueBuffer(); +13943: } +13943: void Next() override { +13943: iter_->Next(); +13943: UpdateKeyAndValueBuffer(); +13943: } +13943: bool NextAndGetResult(IterateResult* result) override { +13943: iter_->Next(); +13943: UpdateKeyAndValueBuffer(); +13943: bool is_valid = Valid(); +13943: if (is_valid) { +13943: result->key = key(); +13943: result->bound_check_result = IterBoundCheck::kUnknown; +13943: result->value_prepared = true; +13943: } +13943: return is_valid; +13943: } +13943: void Prev() override { +13943: iter_->Prev(); +13943: UpdateKeyAndValueBuffer(); +13943: } +13943: Slice key() const override { +13943: +13943: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: Valid() +13943: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "Valid()" +13943: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: return key_buf_; +13943: } +13943: +13943: uint64_t write_unix_time() const override { return iter_->write_unix_time(); } +13943: Slice value() const override { +13943: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +13943: return value_buf_; +13943: } +13943: return iter_->value(); +13943: } +13943: Status status() const override { return iter_->status(); } +13943: bool IsKeyPinned() const override { +13943: +13943: return false; +13943: } +13943: bool IsValuePinned() const override { +13943: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +13943: return false; +13943: } +13943: return iter_->IsValuePinned(); +13943: } +13943: +13943: private: +13943: void UpdateKeyAndValueBuffer() { +13943: key_buf_.clear(); +13943: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +13943: value_buf_.clear(); +13943: } +13943: if (!Valid()) { +13943: return; +13943: } +13943: Slice original_key = iter_->key(); +13943: ReplaceInternalKeyWithMinTimestamp(&key_buf_, original_key, ts_sz_); +13943: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +13943: Slice original_value = iter_->value(); +13943: AppendUserKeyWithMinTimestamp(&value_buf_, original_value, ts_sz_); +13943: } +13943: } +13943: bool arena_mode_; +13943: MemTableIterator::Kind kind_; +13943: size_t ts_sz_; +13943: MemTableIterator* iter_; +13943: std::string key_buf_; +13943: std::string value_buf_; +13943: }; +13943: +13943: InternalIterator* MemTable::NewTimestampStrippingIterator( +13943: const ReadOptions& read_options, +13943: UnownedPtr seqno_to_time_mapping, Arena* arena, +13943: const SliceTransform* prefix_extractor, size_t ts_sz) { +13943: +13943: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: arena != nullptr +13943: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "arena != nullptr" +13943: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: auto mem = arena->AllocateAligned(sizeof(TimestampStrippingIterator)); +13943: return new (mem) TimestampStrippingIterator( +13943: MemTableIterator::kPointEntries, *this, read_options, +13943: seqno_to_time_mapping, arena, prefix_extractor, ts_sz); +13943: } +13943: +13943: FragmentedRangeTombstoneIterator* MemTable::NewRangeTombstoneIterator( +13943: const ReadOptions& read_options, SequenceNumber read_seq, +13943: bool immutable_memtable) { +13943: if (read_options.ignore_range_deletions || +13943: is_range_del_table_empty_.load(std::memory_order_relaxed)) { +13943: return nullptr; +13943: } +13943: return NewRangeTombstoneIteratorInternal(read_options, read_seq, +13943: immutable_memtable); +13943: } +13943: +13943: FragmentedRangeTombstoneIterator* +13943: MemTable::NewTimestampStrippingRangeTombstoneIterator( +13943: const ReadOptions& read_options, SequenceNumber read_seq, size_t ts_sz) { +13943: if (read_options.ignore_range_deletions || +13943: is_range_del_table_empty_.load(std::memory_order_relaxed)) { +13943: return nullptr; +13943: } +13943: if (!timestamp_stripping_fragmented_range_tombstone_list_) { +13943: +13943: auto* unfragmented_iter = new TimestampStrippingIterator( +13943: MemTableIterator::kRangeDelEntries, *this, ReadOptions(), +13943: nullptr, nullptr, +13943: nullptr, ts_sz); +13943: +13943: timestamp_stripping_fragmented_range_tombstone_list_ = +13943: std::make_unique( +13943: std::unique_ptr(unfragmented_iter), +13943: comparator_.comparator); +13943: } +13943: return new FragmentedRangeTombstoneIterator( +13943: timestamp_stripping_fragmented_range_tombstone_list_.get(), +13943: comparator_.comparator, read_seq, read_options.timestamp); +13943: } +13943: +13943: FragmentedRangeTombstoneIterator* MemTable::NewRangeTombstoneIteratorInternal( +13943: const ReadOptions& read_options, SequenceNumber read_seq, +13943: bool immutable_memtable) { +13943: if (immutable_memtable) { +13943: +13943: +13943: +13943: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: IsFragmentedRangeTombstonesConstructed() +13943: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "IsFragmentedRangeTombstonesConstructed()" +13943: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: return new FragmentedRangeTombstoneIterator( +13943: fragmented_range_tombstone_list_.get(), comparator_.comparator, +13943: read_seq, read_options.timestamp); +13943: } +13943: +13943: +13943: std::shared_ptr cache = +13943: std::atomic_load_explicit(cached_range_tombstone_.Access(), +13943: std::memory_order_relaxed); +13943: +13943: if (!cache->initialized.load(std::memory_order_acquire)) { +13943: cache->reader_mutex.lock(); +13943: if (!cache->tombstones) { +13943: auto* unfragmented_iter = new MemTableIterator( +13943: MemTableIterator::kRangeDelEntries, *this, read_options); +13943: cache->tombstones.reset(new FragmentedRangeTombstoneList( +13943: std::unique_ptr(unfragmented_iter), +13943: comparator_.comparator)); +13943: cache->initialized.store(true, std::memory_order_release); +13943: } +13943: cache->reader_mutex.unlock(); +13943: } +13943: +13943: auto* fragmented_iter = new FragmentedRangeTombstoneIterator( +13943: cache, comparator_.comparator, read_seq, read_options.timestamp); +13943: return fragmented_iter; +13943: } +13943: +13943: void MemTable::ConstructFragmentedRangeTombstones() { +13943: +13943: +13943: +13943: if (!is_range_del_table_empty_.load(std::memory_order_relaxed)) { +13943: +13943: auto* unfragmented_iter = new MemTableIterator( +13943: MemTableIterator::kRangeDelEntries, *this, ReadOptions()); +13943: +13943: fragmented_range_tombstone_list_ = +13943: std::make_unique( +13943: std::unique_ptr(unfragmented_iter), +13943: comparator_.comparator); +13943: } +13943: } +13943: +13943: port::RWMutex* MemTable::GetLock(const Slice& key) { +13943: return &locks_[GetSliceRangedNPHash(key, locks_.size())]; +13943: } +13943: +13943: ReadOnlyMemTable::MemTableStats MemTable::ApproximateStats( +13943: const Slice& start_ikey, const Slice& end_ikey) { +13943: uint64_t entry_count = table_->ApproximateNumEntries(start_ikey, end_ikey); +13943: entry_count += range_del_table_->ApproximateNumEntries(start_ikey, end_ikey); +13943: if (entry_count == 0) { +13943: return {0, 0}; +13943: } +13943: uint64_t n = num_entries_.load(std::memory_order_relaxed); +13943: if (n == 0) { +13943: return {0, 0}; +13943: } +13943: if (entry_count > n) { +13943: +13943: +13943: +13943: entry_count = n; +13943: } +13943: uint64_t data_size = data_size_.load(std::memory_order_relaxed); +13943: return {entry_count * (data_size / n), entry_count}; +13943: } +13943: +13943: Status MemTable::VerifyEncodedEntry(Slice encoded, +13943: const ProtectionInfoKVOS64& kv_prot_info) { +13943: uint32_t ikey_len = 0; +13943: if (!GetVarint32(&encoded, &ikey_len)) { +13943: return Status::Corruption("Unable to parse internal key length"); +13943: } +13943: if (ikey_len < 8 + ts_sz_) { +13943: return Status::Corruption("Internal key length too short"); +13943: } +13943: if (ikey_len > encoded.size()) { +13943: return Status::Corruption("Internal key length too long"); +13943: } +13943: uint32_t value_len = 0; +13943: const size_t user_key_len = ikey_len - 8; +13943: Slice key(encoded.data(), user_key_len); +13943: encoded.remove_prefix(user_key_len); +13943: +13943: uint64_t packed = DecodeFixed64(encoded.data()); +13943: ValueType value_type = kMaxValue; +13943: SequenceNumber sequence_number = kMaxSequenceNumber; +13943: UnPackSequenceAndType(packed, &sequence_number, &value_type); +13943: encoded.remove_prefix(8); +13943: +13943: if (!GetVarint32(&encoded, &value_len)) { +13943: return Status::Corruption("Unable to parse value length"); +13943: } +13943: if (value_len < encoded.size()) { +13943: return Status::Corruption("Value length too short"); +13943: } +13943: if (value_len > encoded.size()) { +13943: return Status::Corruption("Value length too long"); +13943: } +13943: Slice value(encoded.data(), value_len); +13943: +13943: return kv_prot_info.StripS(sequence_number) +13943: .StripKVO(key, value, value_type) +13943: .GetStatus(); +13943: } +13943: +13943: void MemTable::UpdateEntryChecksum(const ProtectionInfoKVOS64* kv_prot_info, +13943: const Slice& key, const Slice& value, +13943: ValueType type, SequenceNumber s, +13943: char* checksum_ptr) { +13943: if (moptions_.protection_bytes_per_key == 0) { +13943: return; +13943: } +13943: +13943: if (kv_prot_info == nullptr) { +13943: ProtectionInfo64() +13943: .ProtectKVO(key, value, type) +13943: .ProtectS(s) +13943: .Encode(static_cast(moptions_.protection_bytes_per_key), +13943: checksum_ptr); +13943: } else { +13943: kv_prot_info->Encode( +13943: static_cast(moptions_.protection_bytes_per_key), checksum_ptr); +13943: } +13943: } +13943: +13943: Status MemTable::Add(SequenceNumber s, ValueType type, +13943: const Slice& key, +13943: const Slice& value, +13943: const ProtectionInfoKVOS64* kv_prot_info, +13943: bool allow_concurrent, +13943: MemTablePostProcessInfo* post_process_info, void** hint) { +13943: +13943: +13943: +13943: +13943: +13943: +13943: uint32_t key_size = static_cast(key.size()); +13943: uint32_t val_size = static_cast(value.size()); +13943: uint32_t internal_key_size = key_size + 8; +13943: const uint32_t encoded_len = VarintLength(internal_key_size) + +13943: internal_key_size + VarintLength(val_size) + +13943: val_size + moptions_.protection_bytes_per_key; +13943: char* buf = nullptr; +13943: std::unique_ptr& table = +13943: type == kTypeRangeDeletion ? range_del_table_ : table_; +13943: KeyHandle handle = table->Allocate(encoded_len, &buf); +13943: +13943: char* p = EncodeVarint32(buf, internal_key_size); +13943: memcpy(p, key.data(), key_size); +13943: Slice key_slice(p, key_size); +13943: p += key_size; +13943: uint64_t packed = PackSequenceAndType(s, type); +13943: EncodeFixed64(p, packed); +13943: p += 8; +13943: p = EncodeVarint32(p, val_size); +13943: memcpy(p, value.data(), val_size); +13943: +13943: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: (unsigned)(p + val_size - buf + moptions_.protection_bytes_per_key) == (unsigned)encoded_len +13943: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "(unsigned)(p + val_size - buf + moptions_.protection_bytes_per_key) == (unsigned)encoded_len" +13943: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: +13943: # 942 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: UpdateEntryChecksum(kv_prot_info, key, value, type, s, +13943: buf + encoded_len - moptions_.protection_bytes_per_key); +13943: Slice encoded(buf, encoded_len - moptions_.protection_bytes_per_key); +13943: if (kv_prot_info != nullptr) { +13943: rocksdb::SyncPoint::GetInstance()->Process("MemTable::Add:Encoded", &encoded); +13943: Status status = VerifyEncodedEntry(encoded, *kv_prot_info); +13943: if (!status.ok()) { +13943: return status; +13943: } +13943: } +13943: +13943: Slice key_without_ts = StripTimestampFromUserKey(key, ts_sz_); +13943: +13943: if (!allow_concurrent) { +13943: +13943: +13943: if (table == table_ && insert_with_hint_prefix_extractor_ != nullptr && +13943: insert_with_hint_prefix_extractor_->InDomain(key_slice)) { +13943: Slice prefix = insert_with_hint_prefix_extractor_->Transform(key_slice); +13943: bool res = table->InsertKeyWithHint(handle, &insert_hints_[prefix]); +13943: if ((__builtin_expect((!res), 0))) { +13943: return Status::TryAgain("key+seq exists"); +13943: } +13943: } else { +13943: bool res = table->InsertKey(handle); +13943: if ((__builtin_expect((!res), 0))) { +13943: return Status::TryAgain("key+seq exists"); +13943: } +13943: } +13943: +13943: +13943: +13943: num_entries_.store(num_entries_.load(std::memory_order_relaxed) + 1, +13943: std::memory_order_relaxed); +13943: data_size_.store(data_size_.load(std::memory_order_relaxed) + encoded_len, +13943: std::memory_order_relaxed); +13943: if (type == kTypeDeletion || type == kTypeSingleDeletion || +13943: type == kTypeDeletionWithTimestamp) { +13943: num_deletes_.store(num_deletes_.load(std::memory_order_relaxed) + 1, +13943: std::memory_order_relaxed); +13943: } else if (type == kTypeRangeDeletion) { +13943: uint64_t val = num_range_deletes_.load(std::memory_order_relaxed) + 1; +13943: num_range_deletes_.store(val, std::memory_order_relaxed); +13943: } +13943: +13943: if (bloom_filter_ && prefix_extractor_ && +13943: prefix_extractor_->InDomain(key_without_ts)) { +13943: bloom_filter_->Add(prefix_extractor_->Transform(key_without_ts)); +13943: } +13943: if (bloom_filter_ && moptions_.memtable_whole_key_filtering) { +13943: bloom_filter_->Add(key_without_ts); +13943: } +13943: +13943: +13943: +13943: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: first_seqno_ == 0 || s >= first_seqno_ +13943: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "first_seqno_ == 0 || s >= first_seqno_" +13943: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: if (first_seqno_ == 0) { +13943: first_seqno_.store(s, std::memory_order_relaxed); +13943: +13943: if (earliest_seqno_ == kMaxSequenceNumber) { +13943: earliest_seqno_.store(GetFirstSequenceNumber(), +13943: std::memory_order_relaxed); +13943: } +13943: +13943: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: first_seqno_.load() >= earliest_seqno_.load() +13943: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "first_seqno_.load() >= earliest_seqno_.load()" +13943: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: } +13943: +13943: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: post_process_info == nullptr +13943: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "post_process_info == nullptr" +13943: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: +13943: MaybeUpdateNewestUDT(key_slice); +13943: UpdateFlushState(); +13943: } else { +13943: bool res = (hint == nullptr) +13943: ? table->InsertKeyConcurrently(handle) +13943: : table->InsertKeyWithHintConcurrently(handle, hint); +13943: if ((__builtin_expect((!res), 0))) { +13943: return Status::TryAgain("key+seq exists"); +13943: } +13943: +13943: +13943: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: post_process_info != nullptr +13943: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "post_process_info != nullptr" +13943: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: post_process_info->num_entries++; +13943: post_process_info->data_size += encoded_len; +13943: if (type == kTypeDeletion) { +13943: post_process_info->num_deletes++; +13943: } +13943: +13943: if (bloom_filter_ && prefix_extractor_ && +13943: prefix_extractor_->InDomain(key_without_ts)) { +13943: bloom_filter_->AddConcurrently( +13943: prefix_extractor_->Transform(key_without_ts)); +13943: } +13943: if (bloom_filter_ && moptions_.memtable_whole_key_filtering) { +13943: bloom_filter_->AddConcurrently(key_without_ts); +13943: } +13943: +13943: +13943: uint64_t cur_seq_num = first_seqno_.load(std::memory_order_relaxed); +13943: while ((cur_seq_num == 0 || s < cur_seq_num) && +13943: !first_seqno_.compare_exchange_weak(cur_seq_num, s)) { +13943: } +13943: uint64_t cur_earliest_seqno = +13943: earliest_seqno_.load(std::memory_order_relaxed); +13943: while ( +13943: (cur_earliest_seqno == kMaxSequenceNumber || s < cur_earliest_seqno) && +13943: !earliest_seqno_.compare_exchange_weak(cur_earliest_seqno, s)) { +13943: } +13943: } +13943: if (type == kTypeRangeDeletion) { +13943: auto new_cache = std::make_shared(); +13943: size_t size = cached_range_tombstone_.Size(); +13943: if (allow_concurrent) { +13943: post_process_info->num_range_deletes++; +13943: range_del_mutex_.lock(); +13943: } +13943: for (size_t i = 0; i < size; ++i) { +13943: std::shared_ptr* local_cache_ref_ptr = +13943: cached_range_tombstone_.AccessAtCore(i); +13943: auto new_local_cache_ref = std::make_shared< +13943: const std::shared_ptr>(new_cache); +13943: +13943: +13943: +13943: +13943: +13943: std::atomic_store_explicit( +13943: local_cache_ref_ptr, +13943: std::shared_ptr( +13943: new_local_cache_ref, new_cache.get()), +13943: std::memory_order_relaxed); +13943: } +13943: +13943: if (allow_concurrent) { +13943: range_del_mutex_.unlock(); +13943: } +13943: is_range_del_table_empty_.store(false, std::memory_order_relaxed); +13943: } +13943: UpdateOldestKeyTime(); +13943: +13943: rocksdb::SyncPoint::GetInstance()->Process("MemTable::Add:BeforeReturn:Encoded", &encoded); +13943: return Status::OK(); +13943: } +13943: +13943: +13943: namespace { +13943: +13943: struct Saver { +13943: Status* status; +13943: const LookupKey* key; +13943: bool* found_final_value; +13943: bool* merge_in_progress; +13943: std::string* value; +13943: PinnableWideColumns* columns; +13943: SequenceNumber seq; +13943: std::string* timestamp; +13943: const MergeOperator* merge_operator; +13943: +13943: MergeContext* merge_context; +13943: SequenceNumber max_covering_tombstone_seq; +13943: MemTable* mem; +13943: Logger* logger; +13943: Statistics* statistics; +13943: bool inplace_update_support; +13943: bool do_merge; +13943: SystemClock* clock; +13943: +13943: ReadCallback* callback_; +13943: bool* is_blob_index; +13943: bool allow_data_in_errors; +13943: uint32_t protection_bytes_per_key; +13943: bool CheckCallback(SequenceNumber _seq) { +13943: if (callback_) { +13943: return callback_->IsVisible(_seq); +13943: } +13943: return true; +13943: } +13943: }; +13943: } +13943: +13943: static bool SaveValue(void* arg, const char* entry) { +13943: Saver* s = static_cast(arg); +13943: +13943: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: s != nullptr +13943: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "s != nullptr" +13943: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: !s->value || !s->columns +13943: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "!s->value || !s->columns" +13943: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: !*(s->found_final_value) +13943: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "!*(s->found_final_value)" +13943: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: s->status->ok() || s->status->IsMergeInProgress() +13943: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "s->status->ok() || s->status->IsMergeInProgress()" +13943: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: MergeContext* merge_context = s->merge_context; +13943: SequenceNumber max_covering_tombstone_seq = s->max_covering_tombstone_seq; +13943: const MergeOperator* merge_operator = s->merge_operator; +13943: +13943: +13943: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: merge_context != nullptr +13943: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "merge_context != nullptr" +13943: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: +13943: +13943: uint32_t key_length = 0; +13943: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +13943: +13943: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: key_length >= 8 +13943: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "key_length >= 8" +13943: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: Slice user_key_slice = Slice(key_ptr, key_length - 8); +13943: const Comparator* user_comparator = +13943: s->mem->GetInternalKeyComparator().user_comparator(); +13943: size_t ts_sz = user_comparator->timestamp_size(); +13943: if (ts_sz && s->timestamp && max_covering_tombstone_seq > 0) { +13943: +13943: +13943: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: s->timestamp->size() == ts_sz +13943: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "s->timestamp->size() == ts_sz" +13943: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: } +13943: if (user_comparator->EqualWithoutTimestamp(user_key_slice, +13943: s->key->user_key())) { +13943: +13943: rocksdb::SyncPoint::GetInstance()->Process("Memtable::SaveValue:Found:entry", &entry); +13943: std::optional read_lock; +13943: if (s->inplace_update_support) { +13943: read_lock.emplace(s->mem->GetLock(s->key->user_key())); +13943: } +13943: +13943: if (s->protection_bytes_per_key > 0) { +13943: *(s->status) = MemTable::VerifyEntryChecksum( +13943: entry, s->protection_bytes_per_key, s->allow_data_in_errors); +13943: if (!s->status->ok()) { +13943: *(s->found_final_value) = true; +13943: rocksdb::Log((InfoLogLevel::ERROR_LEVEL), ((s->logger)), ("[%s:" "1160" "] " "In SaveValue: %s"), RocksLogShorterFileName("./db/memtable.cc"), s->status->getState()); +13943: +13943: return false; +13943: } +13943: } +13943: +13943: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +13943: ValueType type; +13943: SequenceNumber seq; +13943: UnPackSequenceAndType(tag, &seq, &type); +13943: +13943: if (!s->CheckCallback(seq)) { +13943: return true; +13943: } +13943: +13943: if (s->seq == kMaxSequenceNumber) { +13943: s->seq = seq; +13943: if (s->seq > max_covering_tombstone_seq) { +13943: if (ts_sz && s->timestamp != nullptr) { +13943: +13943: +13943: +13943: +13943: Slice ts = ExtractTimestampFromUserKey(user_key_slice, ts_sz); +13943: s->timestamp->assign(ts.data(), ts_sz); +13943: } +13943: } else { +13943: s->seq = max_covering_tombstone_seq; +13943: } +13943: } +13943: +13943: if (ts_sz > 0 && s->timestamp != nullptr) { +13943: if (!s->timestamp->empty()) { +13943: +13943: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ts_sz == s->timestamp->size() +13943: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "ts_sz == s->timestamp->size()" +13943: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: } +13943: +13943: const std::string kMaxTs(ts_sz, '\xff'); +13943: if (s->timestamp->empty() || +13943: user_comparator->CompareTimestamp(*(s->timestamp), kMaxTs) == 0) { +13943: Slice ts = ExtractTimestampFromUserKey(user_key_slice, ts_sz); +13943: s->timestamp->assign(ts.data(), ts_sz); +13943: } +13943: } +13943: +13943: if ((type == kTypeValue || type == kTypeMerge || type == kTypeBlobIndex || +13943: type == kTypeWideColumnEntity || type == kTypeDeletion || +13943: type == kTypeSingleDeletion || type == kTypeDeletionWithTimestamp || +13943: type == kTypeValuePreferredSeqno) && +13943: max_covering_tombstone_seq > seq) { +13943: type = kTypeRangeDeletion; +13943: } +13943: switch (type) { +13943: case kTypeBlobIndex: { +13943: if (!s->do_merge) { +13943: *(s->status) = Status::NotSupported( +13943: "GetMergeOperands not supported by stacked BlobDB"); +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: +13943: if (*(s->merge_in_progress)) { +13943: *(s->status) = Status::NotSupported( +13943: "Merge operator not supported by stacked BlobDB"); +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: +13943: if (s->is_blob_index == nullptr) { +13943: rocksdb::Log((InfoLogLevel::ERROR_LEVEL), ((s->logger)), ("[%s:" "1228" "] " "Encountered unexpected blob index."), RocksLogShorterFileName("./db/memtable.cc")); +13943: *(s->status) = Status::NotSupported( +13943: "Encountered unexpected blob index. Please open DB with " +13943: "ROCKSDB_NAMESPACE::blob_db::BlobDB."); +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: +13943: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +13943: +13943: *(s->status) = Status::OK(); +13943: +13943: if (s->value) { +13943: s->value->assign(v.data(), v.size()); +13943: } else if (s->columns) { +13943: s->columns->SetPlainValue(v); +13943: } +13943: +13943: *(s->found_final_value) = true; +13943: *(s->is_blob_index) = true; +13943: +13943: return false; +13943: } +13943: case kTypeValue: +13943: case kTypeValuePreferredSeqno: { +13943: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +13943: if (type == kTypeValuePreferredSeqno) { +13943: v = ParsePackedValueForValue(v); +13943: } +13943: +13943: ReadOnlyMemTable::HandleTypeValue( +13943: s->key->user_key(), v, s->inplace_update_support == false, +13943: s->do_merge, *(s->merge_in_progress), merge_context, +13943: s->merge_operator, s->clock, s->statistics, s->logger, s->status, +13943: s->value, s->columns, s->is_blob_index); +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: case kTypeWideColumnEntity: { +13943: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +13943: +13943: *(s->status) = Status::OK(); +13943: +13943: if (!s->do_merge) { +13943: +13943: +13943: +13943: Slice value_of_default; +13943: *(s->status) = WideColumnSerialization::GetValueOfDefaultColumn( +13943: v, value_of_default); +13943: +13943: if (s->status->ok()) { +13943: merge_context->PushOperand( +13943: value_of_default, +13943: s->inplace_update_support == false ); +13943: } +13943: } else if (*(s->merge_in_progress)) { +13943: +13943: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: s->do_merge +13943: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "s->do_merge" +13943: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: +13943: if (s->value || s->columns) { +13943: +13943: +13943: +13943: *(s->status) = MergeHelper::TimedFullMerge( +13943: merge_operator, s->key->user_key(), MergeHelper::kWideBaseValue, +13943: v, merge_context->GetOperands(), s->logger, s->statistics, +13943: s->clock, true, +13943: nullptr, s->value, s->columns); +13943: } +13943: } else if (s->value) { +13943: Slice value_of_default; +13943: *(s->status) = WideColumnSerialization::GetValueOfDefaultColumn( +13943: v, value_of_default); +13943: if (s->status->ok()) { +13943: s->value->assign(value_of_default.data(), value_of_default.size()); +13943: } +13943: } else if (s->columns) { +13943: *(s->status) = s->columns->SetWideColumnValue(v); +13943: } +13943: +13943: *(s->found_final_value) = true; +13943: +13943: if (s->is_blob_index != nullptr) { +13943: *(s->is_blob_index) = false; +13943: } +13943: +13943: return false; +13943: } +13943: case kTypeDeletion: +13943: case kTypeDeletionWithTimestamp: +13943: case kTypeSingleDeletion: +13943: case kTypeRangeDeletion: { +13943: ReadOnlyMemTable::HandleTypeDeletion( +13943: s->key->user_key(), *(s->merge_in_progress), s->merge_context, +13943: s->merge_operator, s->clock, s->statistics, s->logger, s->status, +13943: s->value, s->columns); +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: case kTypeMerge: { +13943: if (!merge_operator) { +13943: *(s->status) = Status::InvalidArgument( +13943: "merge_operator is not properly initialized."); +13943: +13943: +13943: +13943: +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +13943: *(s->merge_in_progress) = true; +13943: merge_context->PushOperand( +13943: v, s->inplace_update_support == false ); +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.internal_merge_point_lookup_count += 1; } static_assert(true, "semicolon required"); +13943: +13943: if (s->do_merge && merge_operator->ShouldMerge( +13943: merge_context->GetOperandsDirectionBackward())) { +13943: if (s->value || s->columns) { +13943: +13943: +13943: +13943: *(s->status) = MergeHelper::TimedFullMerge( +13943: merge_operator, s->key->user_key(), MergeHelper::kNoBaseValue, +13943: merge_context->GetOperands(), s->logger, s->statistics, +13943: s->clock, true, +13943: nullptr, s->value, s->columns); +13943: } +13943: +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: if (merge_context->get_merge_operands_options != nullptr && +13943: merge_context->get_merge_operands_options->continue_cb != nullptr && +13943: !merge_context->get_merge_operands_options->continue_cb(v)) { +13943: +13943: *(s->found_final_value) = true; +13943: return false; +13943: } +13943: +13943: return true; +13943: } +13943: default: { +13943: std::string msg("Corrupted value not expected."); +13943: if (s->allow_data_in_errors) { +13943: msg.append("Unrecognized value type: " + +13943: std::to_string(static_cast(type)) + ". "); +13943: msg.append("User key: " + user_key_slice.ToString( true) + +13943: ". "); +13943: msg.append("seq: " + std::to_string(seq) + "."); +13943: } +13943: *(s->found_final_value) = true; +13943: *(s->status) = Status::Corruption(msg.c_str()); +13943: return false; +13943: } +13943: } +13943: } +13943: +13943: +13943: return false; +13943: } +13943: +13943: bool MemTable::Get(const LookupKey& key, std::string* value, +13943: PinnableWideColumns* columns, std::string* timestamp, +13943: Status* s, MergeContext* merge_context, +13943: SequenceNumber* max_covering_tombstone_seq, +13943: SequenceNumber* seq, const ReadOptions& read_opts, +13943: bool immutable_memtable, ReadCallback* callback, +13943: bool* is_blob_index, bool do_merge) { +13943: +13943: if (IsEmpty()) { +13943: +13943: return false; +13943: } +13943: +13943: PerfStepTimer perf_step_timer_get_from_memtable_time(&(perf_context.get_from_memtable_time)); perf_step_timer_get_from_memtable_time.Start();; +13943: +13943: std::unique_ptr range_del_iter( +13943: NewRangeTombstoneIterator(read_opts, +13943: GetInternalKeySeqno(key.internal_key()), +13943: immutable_memtable)); +13943: if (range_del_iter != nullptr) { +13943: SequenceNumber covering_seq = +13943: range_del_iter->MaxCoveringTombstoneSeqnum(key.user_key()); +13943: if (covering_seq > *max_covering_tombstone_seq) { +13943: *max_covering_tombstone_seq = covering_seq; +13943: if (timestamp) { +13943: +13943: +13943: timestamp->assign(range_del_iter->timestamp().data(), +13943: range_del_iter->timestamp().size()); +13943: } +13943: } +13943: } +13943: +13943: bool found_final_value = false; +13943: bool merge_in_progress = s->IsMergeInProgress(); +13943: bool may_contain = true; +13943: Slice user_key_without_ts = StripTimestampFromUserKey(key.user_key(), ts_sz_); +13943: bool bloom_checked = false; +13943: if (bloom_filter_) { +13943: +13943: +13943: if (moptions_.memtable_whole_key_filtering) { +13943: may_contain = bloom_filter_->MayContain(user_key_without_ts); +13943: bloom_checked = true; +13943: } else { +13943: +13943: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: prefix_extractor_ +13943: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "prefix_extractor_" +13943: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: if (prefix_extractor_->InDomain(user_key_without_ts)) { +13943: may_contain = bloom_filter_->MayContain( +13943: prefix_extractor_->Transform(user_key_without_ts)); +13943: bloom_checked = true; +13943: } +13943: } +13943: } +13943: +13943: if (bloom_filter_ && !may_contain) { +13943: +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +13943: *seq = kMaxSequenceNumber; +13943: } else { +13943: if (bloom_checked) { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +13943: } +13943: GetFromTable(key, *max_covering_tombstone_seq, do_merge, callback, +13943: is_blob_index, value, columns, timestamp, s, merge_context, +13943: seq, &found_final_value, &merge_in_progress); +13943: } +13943: +13943: +13943: +13943: if (!found_final_value && merge_in_progress) { +13943: if (s->ok()) { +13943: *s = Status::MergeInProgress(); +13943: } else { +13943: +13943: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: s->IsMergeInProgress() +13943: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "s->IsMergeInProgress()" +13943: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: } +13943: } +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.get_from_memtable_count += 1; } static_assert(true, "semicolon required"); +13943: return found_final_value; +13943: } +13943: +13943: void MemTable::GetFromTable(const LookupKey& key, +13943: SequenceNumber max_covering_tombstone_seq, +13943: bool do_merge, ReadCallback* callback, +13943: bool* is_blob_index, std::string* value, +13943: PinnableWideColumns* columns, +13943: std::string* timestamp, Status* s, +13943: MergeContext* merge_context, SequenceNumber* seq, +13943: bool* found_final_value, bool* merge_in_progress) { +13943: Saver saver; +13943: saver.status = s; +13943: saver.found_final_value = found_final_value; +13943: saver.merge_in_progress = merge_in_progress; +13943: saver.key = &key; +13943: saver.value = value; +13943: saver.columns = columns; +13943: saver.timestamp = timestamp; +13943: saver.seq = kMaxSequenceNumber; +13943: saver.mem = this; +13943: saver.merge_context = merge_context; +13943: saver.max_covering_tombstone_seq = max_covering_tombstone_seq; +13943: saver.merge_operator = moptions_.merge_operator; +13943: saver.logger = moptions_.info_log; +13943: saver.inplace_update_support = moptions_.inplace_update_support; +13943: saver.statistics = moptions_.statistics; +13943: saver.clock = clock_; +13943: saver.callback_ = callback; +13943: saver.is_blob_index = is_blob_index; +13943: saver.do_merge = do_merge; +13943: saver.allow_data_in_errors = moptions_.allow_data_in_errors; +13943: saver.protection_bytes_per_key = moptions_.protection_bytes_per_key; +13943: +13943: if (!moptions_.paranoid_memory_checks) { +13943: table_->Get(key, &saver, SaveValue); +13943: } else { +13943: Status check_s = table_->GetAndValidate(key, &saver, SaveValue, +13943: moptions_.allow_data_in_errors); +13943: if (check_s.IsCorruption()) { +13943: *(saver.status) = check_s; +13943: +13943: *(saver.found_final_value) = true; +13943: } +13943: } +13943: +13943: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: s->ok() || s->IsMergeInProgress() || *found_final_value +13943: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "s->ok() || s->IsMergeInProgress() || *found_final_value" +13943: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: *seq = saver.seq; +13943: } +13943: +13943: void MemTable::MultiGet(const ReadOptions& read_options, MultiGetRange* range, +13943: ReadCallback* callback, bool immutable_memtable) { +13943: +13943: if (IsEmpty()) { +13943: +13943: return; +13943: } +13943: PerfStepTimer perf_step_timer_get_from_memtable_time(&(perf_context.get_from_memtable_time)); perf_step_timer_get_from_memtable_time.Start();; +13943: +13943: +13943: +13943: +13943: bool no_range_del = read_options.ignore_range_deletions || +13943: is_range_del_table_empty_.load(std::memory_order_relaxed); +13943: MultiGetRange temp_range(*range, range->begin(), range->end()); +13943: if (bloom_filter_ && no_range_del) { +13943: bool whole_key = +13943: !prefix_extractor_ || moptions_.memtable_whole_key_filtering; +13943: std::array bloom_keys; +13943: std::array may_match; +13943: std::array range_indexes; +13943: int num_keys = 0; +13943: for (auto iter = temp_range.begin(); iter != temp_range.end(); ++iter) { +13943: if (whole_key) { +13943: bloom_keys[num_keys] = iter->ukey_without_ts; +13943: range_indexes[num_keys++] = iter.index(); +13943: } else if (prefix_extractor_->InDomain(iter->ukey_without_ts)) { +13943: bloom_keys[num_keys] = +13943: prefix_extractor_->Transform(iter->ukey_without_ts); +13943: range_indexes[num_keys++] = iter.index(); +13943: } +13943: } +13943: bloom_filter_->MayContain(num_keys, bloom_keys.data(), may_match.data()); +13943: for (int i = 0; i < num_keys; ++i) { +13943: if (!may_match[i]) { +13943: temp_range.SkipIndex(range_indexes[i]); +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +13943: } else { +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +13943: } +13943: } +13943: } +13943: for (auto iter = temp_range.begin(); iter != temp_range.end(); ++iter) { +13943: bool found_final_value{false}; +13943: bool merge_in_progress = iter->s->IsMergeInProgress(); +13943: if (!no_range_del) { +13943: std::unique_ptr range_del_iter( +13943: NewRangeTombstoneIteratorInternal( +13943: read_options, GetInternalKeySeqno(iter->lkey->internal_key()), +13943: immutable_memtable)); +13943: SequenceNumber covering_seq = +13943: range_del_iter->MaxCoveringTombstoneSeqnum(iter->lkey->user_key()); +13943: if (covering_seq > iter->max_covering_tombstone_seq) { +13943: iter->max_covering_tombstone_seq = covering_seq; +13943: if (iter->timestamp) { +13943: +13943: +13943: iter->timestamp->assign(range_del_iter->timestamp().data(), +13943: range_del_iter->timestamp().size()); +13943: } +13943: } +13943: } +13943: SequenceNumber dummy_seq; +13943: GetFromTable(*(iter->lkey), iter->max_covering_tombstone_seq, true, +13943: callback, &iter->is_blob_index, +13943: iter->value ? iter->value->GetSelf() : nullptr, iter->columns, +13943: iter->timestamp, iter->s, &(iter->merge_context), &dummy_seq, +13943: &found_final_value, &merge_in_progress); +13943: +13943: if (!found_final_value && merge_in_progress) { +13943: if (iter->s->ok()) { +13943: *(iter->s) = Status::MergeInProgress(); +13943: } else { +13943: +13943: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: iter->s->IsMergeInProgress() +13943: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "iter->s->IsMergeInProgress()" +13943: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: } +13943: } +13943: +13943: if (found_final_value || +13943: (!iter->s->ok() && !iter->s->IsMergeInProgress())) { +13943: +13943: +13943: +13943: +13943: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: found_final_value +13943: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "found_final_value" +13943: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: if (iter->value) { +13943: iter->value->PinSelf(); +13943: range->AddValueSize(iter->value->size()); +13943: } else { +13943: +13943: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: iter->columns +13943: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "iter->columns" +13943: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: range->AddValueSize(iter->columns->serialized_size()); +13943: } +13943: +13943: range->MarkKeyDone(iter); +13943: RecordTick(moptions_.statistics, MEMTABLE_HIT); +13943: if (range->GetValueSize() > read_options.value_size_soft_limit) { +13943: +13943: for (auto range_iter = range->begin(); range_iter != range->end(); +13943: ++range_iter) { +13943: range->MarkKeyDone(range_iter); +13943: *(range_iter->s) = Status::Aborted(); +13943: } +13943: break; +13943: } +13943: } +13943: } +13943: if (perf_level >= PerfLevel::kEnableCount) { perf_context.get_from_memtable_count += 1; } static_assert(true, "semicolon required"); +13943: } +13943: +13943: Status MemTable::Update(SequenceNumber seq, ValueType value_type, +13943: const Slice& key, const Slice& value, +13943: const ProtectionInfoKVOS64* kv_prot_info) { +13943: LookupKey lkey(key, seq); +13943: Slice mem_key = lkey.memtable_key(); +13943: +13943: std::unique_ptr iter( +13943: table_->GetDynamicPrefixIterator()); +13943: iter->Seek(lkey.internal_key(), mem_key.data()); +13943: +13943: if (iter->Valid()) { +13943: +13943: +13943: +13943: +13943: const char* entry = iter->key(); +13943: uint32_t key_length = 0; +13943: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +13943: if (comparator_.comparator.user_comparator()->Equal( +13943: Slice(key_ptr, key_length - 8), lkey.user_key())) { +13943: +13943: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +13943: ValueType type; +13943: SequenceNumber existing_seq; +13943: UnPackSequenceAndType(tag, &existing_seq, &type); +13943: +13943: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: existing_seq != seq +13943: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "existing_seq != seq" +13943: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: if (type == value_type) { +13943: Slice prev_value = GetLengthPrefixedSlice(key_ptr + key_length); +13943: uint32_t prev_size = static_cast(prev_value.size()); +13943: uint32_t new_size = static_cast(value.size()); +13943: +13943: +13943: if (new_size <= prev_size) { +13943: WriteLock wl(GetLock(lkey.user_key())); +13943: char* p = +13943: EncodeVarint32(const_cast(key_ptr) + key_length, new_size); +13943: memcpy(p, value.data(), value.size()); +13943: +13943: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: (unsigned)((p + value.size()) - entry) == (unsigned)(VarintLength(key_length) + key_length + VarintLength(value.size()) + value.size()) +13943: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "(unsigned)((p + value.size()) - entry) == (unsigned)(VarintLength(key_length) + key_length + VarintLength(value.size()) + value.size())" +13943: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: +13943: +13943: # 1662 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: RecordTick(moptions_.statistics, NUMBER_KEYS_UPDATED); +13943: if (kv_prot_info != nullptr) { +13943: ProtectionInfoKVOS64 updated_kv_prot_info(*kv_prot_info); +13943: +13943: updated_kv_prot_info.UpdateS(seq, existing_seq); +13943: UpdateEntryChecksum(&updated_kv_prot_info, key, value, type, +13943: existing_seq, p + value.size()); +13943: Slice encoded(entry, p + value.size() - entry); +13943: return VerifyEncodedEntry(encoded, updated_kv_prot_info); +13943: } else { +13943: UpdateEntryChecksum(nullptr, key, value, type, existing_seq, +13943: p + value.size()); +13943: } +13943: return Status::OK(); +13943: } +13943: } +13943: } +13943: } +13943: +13943: +13943: return Add(seq, value_type, key, value, kv_prot_info); +13943: } +13943: +13943: Status MemTable::UpdateCallback(SequenceNumber seq, const Slice& key, +13943: const Slice& delta, +13943: const ProtectionInfoKVOS64* kv_prot_info) { +13943: LookupKey lkey(key, seq); +13943: Slice memkey = lkey.memtable_key(); +13943: +13943: std::unique_ptr iter( +13943: table_->GetDynamicPrefixIterator()); +13943: iter->Seek(lkey.internal_key(), memkey.data()); +13943: +13943: if (iter->Valid()) { +13943: +13943: +13943: +13943: +13943: const char* entry = iter->key(); +13943: uint32_t key_length = 0; +13943: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +13943: if (comparator_.comparator.user_comparator()->Equal( +13943: Slice(key_ptr, key_length - 8), lkey.user_key())) { +13943: +13943: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +13943: ValueType type; +13943: uint64_t existing_seq; +13943: UnPackSequenceAndType(tag, &existing_seq, &type); +13943: if (type == kTypeValue) { +13943: Slice prev_value = GetLengthPrefixedSlice(key_ptr + key_length); +13943: uint32_t prev_size = static_cast(prev_value.size()); +13943: +13943: char* prev_buffer = const_cast(prev_value.data()); +13943: uint32_t new_prev_size = prev_size; +13943: +13943: std::string str_value; +13943: WriteLock wl(GetLock(lkey.user_key())); +13943: auto status = moptions_.inplace_callback(prev_buffer, &new_prev_size, +13943: delta, &str_value); +13943: if (status == UpdateStatus::UPDATED_INPLACE) { +13943: +13943: +13943: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: new_prev_size <= prev_size +13943: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "new_prev_size <= prev_size" +13943: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: if (new_prev_size < prev_size) { +13943: +13943: char* p = EncodeVarint32(const_cast(key_ptr) + key_length, +13943: new_prev_size); +13943: if (VarintLength(new_prev_size) < VarintLength(prev_size)) { +13943: +13943: memcpy(p, prev_buffer, new_prev_size); +13943: prev_buffer = p; +13943: } +13943: } +13943: RecordTick(moptions_.statistics, NUMBER_KEYS_UPDATED); +13943: UpdateFlushState(); +13943: Slice new_value(prev_buffer, new_prev_size); +13943: if (kv_prot_info != nullptr) { +13943: ProtectionInfoKVOS64 updated_kv_prot_info(*kv_prot_info); +13943: +13943: updated_kv_prot_info.UpdateS(seq, existing_seq); +13943: updated_kv_prot_info.UpdateV(delta, new_value); +13943: Slice encoded(entry, prev_buffer + new_prev_size - entry); +13943: UpdateEntryChecksum(&updated_kv_prot_info, key, new_value, type, +13943: existing_seq, prev_buffer + new_prev_size); +13943: return VerifyEncodedEntry(encoded, updated_kv_prot_info); +13943: } else { +13943: UpdateEntryChecksum(nullptr, key, new_value, type, existing_seq, +13943: prev_buffer + new_prev_size); +13943: } +13943: return Status::OK(); +13943: } else if (status == UpdateStatus::UPDATED) { +13943: Status s; +13943: if (kv_prot_info != nullptr) { +13943: ProtectionInfoKVOS64 updated_kv_prot_info(*kv_prot_info); +13943: updated_kv_prot_info.UpdateV(delta, str_value); +13943: s = Add(seq, kTypeValue, key, Slice(str_value), +13943: &updated_kv_prot_info); +13943: } else { +13943: s = Add(seq, kTypeValue, key, Slice(str_value), +13943: nullptr ); +13943: } +13943: RecordTick(moptions_.statistics, NUMBER_KEYS_WRITTEN); +13943: UpdateFlushState(); +13943: return s; +13943: } else if (status == UpdateStatus::UPDATE_FAILED) { +13943: +13943: +13943: UpdateFlushState(); +13943: return Status::OK(); +13943: } +13943: } +13943: } +13943: } +13943: +13943: return Status::NotFound(); +13943: } +13943: +13943: size_t MemTable::CountSuccessiveMergeEntries(const LookupKey& key, +13943: size_t limit) { +13943: Slice memkey = key.memtable_key(); +13943: +13943: +13943: +13943: +13943: std::unique_ptr iter( +13943: table_->GetDynamicPrefixIterator()); +13943: iter->Seek(key.internal_key(), memkey.data()); +13943: +13943: size_t num_successive_merges = 0; +13943: +13943: for (; iter->Valid() && num_successive_merges < limit; iter->Next()) { +13943: const char* entry = iter->key(); +13943: uint32_t key_length = 0; +13943: const char* iter_key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +13943: if (!comparator_.comparator.user_comparator()->Equal( +13943: Slice(iter_key_ptr, key_length - 8), key.user_key())) { +13943: break; +13943: } +13943: +13943: const uint64_t tag = DecodeFixed64(iter_key_ptr + key_length - 8); +13943: ValueType type; +13943: uint64_t unused; +13943: UnPackSequenceAndType(tag, &unused, &type); +13943: if (type != kTypeMerge) { +13943: break; +13943: } +13943: +13943: ++num_successive_merges; +13943: } +13943: +13943: return num_successive_merges; +13943: } +13943: +13943: void MemTableRep::Get(const LookupKey& k, void* callback_args, +13943: bool (*callback_func)(void* arg, const char* entry)) { +13943: auto iter = GetDynamicPrefixIterator(); +13943: for (iter->Seek(k.internal_key(), k.memtable_key().data()); +13943: iter->Valid() && callback_func(callback_args, iter->key()); +13943: iter->Next()) { +13943: } +13943: } +13943: +13943: void MemTable::RefLogContainingPrepSection(uint64_t log) { +13943: +13943: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: log > 0 +13943: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "log > 0" +13943: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: auto cur = min_prep_log_referenced_.load(); +13943: while ((log < cur || cur == 0) && +13943: !min_prep_log_referenced_.compare_exchange_strong(cur, log)) { +13943: cur = min_prep_log_referenced_.load(); +13943: } +13943: } +13943: +13943: uint64_t MemTable::GetMinLogContainingPrepSection() { +13943: return min_prep_log_referenced_.load(); +13943: } +13943: +13943: void MemTable::MaybeUpdateNewestUDT(const Slice& user_key) { +13943: if (ts_sz_ == 0 || persist_user_defined_timestamps_) { +13943: return; +13943: } +13943: const Comparator* ucmp = GetInternalKeyComparator().user_comparator(); +13943: Slice udt = ExtractTimestampFromUserKey(user_key, ts_sz_); +13943: if (newest_udt_.empty() || ucmp->CompareTimestamp(udt, newest_udt_) > 0) { +13943: newest_udt_ = udt; +13943: } +13943: } +13943: +13943: const Slice& MemTable::GetNewestUDT() const { +13943: +13943: +13943: +13943: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: (static_cast ( +13943: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ts_sz_ > 0 && !persist_user_defined_timestamps_ +13943: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: ) ? void (0) : __assert_fail ( +13943: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: "ts_sz_ > 0 && !persist_user_defined_timestamps_" +13943: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +13943: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +13943: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +13943: ; +13943: return newest_udt_; +13943: } +13943: +13943: } +=== END GCC DUMP === +make[3]: *** [CMakeFiles/rocksdb.dir/build.make:1146: CMakeFiles/rocksdb.dir/db/memtable.cc.o] Error 1 +make[3]: *** Waiting for unfinished jobs.... +[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_experimental.cc In file included from /usr/include/c++/14/bits/stl_algo.h:61, from /usr/include/c++/14/algorithm:61, from /build/reproducible-path/rocksdb-9.10.0/util/coding.h:19, @@ -1435,10 +151054,17 @@ 1770 | __insertion_sort(_RandomAccessIterator __first, | ^~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -[ 18%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/import_column_family_job.cc -[ 18%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/internal_stats.cc +make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' +make[2]: *** [CMakeFiles/Makefile2:212: CMakeFiles/rocksdb.dir/all] Error 2 +make[2]: *** Waiting for unfinished jobs.... +[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.cc +[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc +[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_info_dumper.cc +[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_iter.cc In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, inlined from 'virtual rocksdb::Status rocksdb::DBImpl::Recover(const std::vector&, bool, bool, bool, bool, uint64_t*, RecoveryContext*, bool*)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_open.cc:808:16: @@ -1459,36 +151085,6 @@ /usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1822 | std::__insertion_sort(__first, __last, __comp); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_debug.cc -[ 19%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/logs_with_prep_tracker.cc -[ 19%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_reader.cc -[ 19%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_writer.cc -[ 19%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/malloc_stats.cc -[ 19%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/manifest_ops.cc -[ 19%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_experimental.cc -[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc -[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable_list.cc -[ 20%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.cc -[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_helper.cc -[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_operator.cc -[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/output_validator.cc -[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/periodic_task_scheduler.cc -[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc In file included from /usr/include/c++/14/vector:65, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.h:10, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_readonly.cc:6: @@ -1505,30 +151101,10 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.cc -[ 21%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o -MF CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h:11, - from /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc:6: -/usr/include/c++/14/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const long long unsigned int&, rocksdb::RangeDelAggregator::StripeRep}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {const long long unsigned int&, rocksdb::RangeDelAggregator::StripeRep}; _Key = long long unsigned int; _Tp = rocksdb::RangeDelAggregator::StripeRep; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'std::pair, std::_Select1st >, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::emplace(_Args&& ...) [with _Args = {const long long unsigned int&, rocksdb::RangeDelAggregator::StripeRep}; _Key = long long unsigned int; _Tp = rocksdb::RangeDelAggregator::StripeRep; _Compare = std::less; _Alloc = std::allocator >]' at /usr/include/c++/14/bits/stl_map.h:601:22, - inlined from 'virtual void rocksdb::CompactionRangeDelAggregator::AddTombstones(std::unique_ptr, const rocksdb::InternalKey*, const rocksdb::InternalKey*)' at /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc:386:45: -/usr/include/c++/14/bits/stl_map.h:640:45: note: parameter passing for argument of type 'std::map::const_iterator' {aka 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator'} changed in GCC 7.1 - 640 | return _M_t._M_emplace_hint_unique(__pos, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ - 641 | std::forward<_Args>(__args)...); - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/repair.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/repair.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/repair.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/repair.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/repair.cc -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.cc +[ 20%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/dbformat.cc +[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/error_handler.cc In file included from /usr/include/c++/14/bits/stl_algo.h:61, from /usr/include/c++/14/algorithm:61, from /build/reproducible-path/rocksdb-9.10.0/cache/typed_cache.h:26, @@ -1554,14 +151130,8 @@ 1770 | __insertion_sort(_RandomAccessIterator __first, | ^~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61, - from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h:9, - from /build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.cc:7: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::SeqnoToTimeMapping::EnforceCapacity(bool)::RemovalCandidate; _Compare = __gnu_cxx::__ops::_Iter_comp_val >]': -/usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 135 | __push_heap(_RandomAccessIterator __first, - | ^~~~~~~~~~~ +[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/event_helpers.cc In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, inlined from 'rocksdb::Status rocksdb::DBImplSecondary::FindNewLogNumbers(std::vector*)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc:133:14: @@ -1582,8 +151152,6 @@ /usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 1822 | std::__insertion_sort(__first, __last, __comp); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/snapshot_impl.cc In file included from /usr/include/c++/14/map:62, from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:17: /usr/include/c++/14/bits/stl_tree.h: In member function 'void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_erase_aux(const_iterator) [with _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': @@ -1614,516 +151182,84 @@ 2499 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/14/bits/stl_tree.h:2499:5: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/table_cache.cc In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::erase(const_iterator, const_iterator) [with _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]', inlined from 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::erase(const_iterator, const_iterator) [with _Key = long long unsigned int; _Tp = std::unique_ptr; _Compare = std::less; _Alloc = std::allocator > >]' at /usr/include/c++/14/bits/stl_map.h:1138:26, inlined from 'rocksdb::Status rocksdb::DBImplSecondary::RecoverLogFiles(const std::vector&, rocksdb::SequenceNumber*, std::unordered_set*, rocksdb::JobContext*)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl_secondary.cc:338:23: /usr/include/c++/14/bits/stl_tree.h:1235:21: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 1235 | _M_erase_aux(__first, __last); | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/memory:69, - from /build/reproducible-path/rocksdb-9.10.0/db/version_builder.h:12, - from /build/reproducible-path/rocksdb-9.10.0/db/repair.cc:62: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::DBOptions::DBOptions(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 21%] Building CXX object CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o -MF CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_info_dumper.cc -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.cc -[ 21%] Building CXX object CMakeFiles/rocksdb.dir/db/db_iter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/db_iter.cc.o -MF CMakeFiles/rocksdb.dir/db/db_iter.cc.o.d -o CMakeFiles/rocksdb.dir/db/db_iter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/db_iter.cc -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/transaction_log_impl.cc -[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/trim_history_scheduler.cc -[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc -[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/version_edit.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/version_edit.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/version_edit.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/version_edit.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_edit.cc -[ 22%] Building CXX object CMakeFiles/rocksdb.dir/db/dbformat.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/dbformat.cc.o -MF CMakeFiles/rocksdb.dir/db/dbformat.cc.o.d -o CMakeFiles/rocksdb.dir/db/dbformat.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/dbformat.cc -[ 23%] Building CXX object CMakeFiles/rocksdb.dir/db/error_handler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/error_handler.cc.o -MF CMakeFiles/rocksdb.dir/db/error_handler.cc.o.d -o CMakeFiles/rocksdb.dir/db/error_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/error_handler.cc -In file included from /usr/include/c++/14/bits/unordered_map.h:33, - from /usr/include/c++/14/unordered_map:41, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h:13, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h:11, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h:13, - from /build/reproducible-path/rocksdb-9.10.0/db/dbformat.h:19, - from /build/reproducible-path/rocksdb-9.10.0/db/version_edit.h:20, - from /build/reproducible-path/rocksdb-9.10.0/db/version_builder.h:14, - from /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:10: -/usr/include/c++/14/bits/hashtable.h: In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(const_iterator) [with _Key = long long unsigned int; _Value = long long unsigned int; _Alloc = std::allocator; _ExtractKey = std::__detail::_Identity; _Equal = std::equal_to; _Hash = std::hash; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]': -/usr/include/c++/14/bits/hashtable.h:2380:5: note: parameter passing for argument of type 'std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 2380 | _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2381 | _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(iterator) [with _Key = long long unsigned int; _Value = long long unsigned int; _Alloc = std::allocator; _ExtractKey = std::__detail::_Identity; _Equal = std::equal_to; _Hash = std::hash; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]', - inlined from 'std::unordered_set<_Value, _Hash, _Pred, _Alloc>::iterator std::unordered_set<_Value, _Hash, _Pred, _Alloc>::erase(iterator) [with _Value = long long unsigned int; _Hash = std::hash; _Pred = std::equal_to; _Alloc = std::allocator]' at /usr/include/c++/14/bits/unordered_set.h:536:26, - inlined from 'void rocksdb::VersionBuilder::Rep::BlobFileMetaDataDelta::UnlinkSst(uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:162:33, - inlined from 'void rocksdb::VersionBuilder::Rep::MutableBlobFileMetaData::UnlinkSst(uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:238:23, - inlined from 'rocksdb::Status rocksdb::VersionBuilder::Rep::ApplyFileDeletion(int, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:888:32: -/usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 1024 | { return erase(const_iterator(__it)); } - | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(iterator) [with _Key = long long unsigned int; _Value = long long unsigned int; _Alloc = std::allocator; _ExtractKey = std::__detail::_Identity; _Equal = std::equal_to; _Hash = std::hash; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]', - inlined from 'std::unordered_set<_Value, _Hash, _Pred, _Alloc>::iterator std::unordered_set<_Value, _Hash, _Pred, _Alloc>::erase(iterator) [with _Value = long long unsigned int; _Hash = std::hash; _Pred = std::equal_to; _Alloc = std::allocator]' at /usr/include/c++/14/bits/unordered_set.h:536:26, - inlined from 'rocksdb::Status rocksdb::VersionBuilder::Rep::ApplyFileDeletion(int, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:926:29: -/usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 1024 | { return erase(const_iterator(__it)); } - | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(iterator) [with _Key = long long unsigned int; _Value = long long unsigned int; _Alloc = std::allocator; _ExtractKey = std::__detail::_Identity; _Equal = std::equal_to; _Hash = std::hash; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]', - inlined from 'std::unordered_set<_Value, _Hash, _Pred, _Alloc>::iterator std::unordered_set<_Value, _Hash, _Pred, _Alloc>::erase(iterator) [with _Value = long long unsigned int; _Hash = std::hash; _Pred = std::equal_to; _Alloc = std::allocator]' at /usr/include/c++/14/bits/unordered_set.h:536:26, - inlined from 'rocksdb::Status rocksdb::VersionBuilder::Rep::ApplyFileAddition(int, const rocksdb::FileMetaData&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:965:22: -/usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 1024 | { return erase(const_iterator(__it)); } - | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(iterator) [with _Key = long long unsigned int; _Value = long long unsigned int; _Alloc = std::allocator; _ExtractKey = std::__detail::_Identity; _Equal = std::equal_to; _Hash = std::hash; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]', - inlined from 'std::unordered_set<_Value, _Hash, _Pred, _Alloc>::iterator std::unordered_set<_Value, _Hash, _Pred, _Alloc>::erase(iterator) [with _Value = long long unsigned int; _Hash = std::hash; _Pred = std::equal_to; _Alloc = std::allocator]' at /usr/include/c++/14/bits/unordered_set.h:536:26, - inlined from 'void rocksdb::VersionBuilder::Rep::BlobFileMetaDataDelta::LinkSst(uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:146:35, - inlined from 'void rocksdb::VersionBuilder::Rep::MutableBlobFileMetaData::LinkSst(uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:231:21, - inlined from 'rocksdb::Status rocksdb::VersionBuilder::Rep::ApplyFileAddition(int, const rocksdb::FileMetaData&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:997:30: -/usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 1024 | { return erase(const_iterator(__it)); } - | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/version_edit_handler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/version_edit_handler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/version_edit_handler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/version_edit_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_edit_handler.cc -[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/version_set.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/version_set.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/version_set.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/version_set.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc -[ 23%] Building CXX object CMakeFiles/rocksdb.dir/db/event_helpers.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/event_helpers.cc.o -MF CMakeFiles/rocksdb.dir/db/event_helpers.cc.o.d -o CMakeFiles/rocksdb.dir/db/event_helpers.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/event_helpers.cc -[ 23%] Building CXX object CMakeFiles/rocksdb.dir/db/experimental.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/experimental.cc.o -MF CMakeFiles/rocksdb.dir/db/experimental.cc.o.d -o CMakeFiles/rocksdb.dir/db/experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/experimental.cc -[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/wal_edit.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/wal_edit.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/wal_edit.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/wal_edit.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wal_edit.cc -[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/wal_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/wal_manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/wal_manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/wal_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wal_manager.cc -In file included from /usr/include/c++/14/vector:72, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.h:32, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:10: -/usr/include/c++/14/bits/vector.tcc: In function 'void std::vector<_Tp, _Alloc>::_M_assign_aux(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator > >; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]': -/usr/include/c++/14/bits/vector.tcc:318:7: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 318 | vector<_Tp, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/vector.tcc:318:7: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 -In file included from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/util/coding.h:19, - from /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_index.h:11, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.h:36: -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::FdWithKeyRange; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/bits/stl_algobase.h:71, - from /usr/include/c++/14/deque:62, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.h:23: -/usr/include/c++/14/bits/predefined_ops.h: In member function 'bool __gnu_cxx::__ops::_Iter_pred<_Predicate>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator >; _Predicate = rocksdb::Version::RemoveLiveFiles(std::vector&, std::vector&) const::]': -/usr/include/c++/14/bits/predefined_ops.h:317:9: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 317 | operator()(_Iterator __it) - | ^~~~~~~~ -In function '_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Predicate = __gnu_cxx::__ops::_Iter_pred&, std::vector&) const:: >]', - inlined from '_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = __gnu_cxx::__normal_iterator >; _Predicate = __gnu_cxx::__ops::_Iter_pred&, std::vector&) const:: >]' at /usr/include/c++/14/bits/stl_algobase.h:2152:23, - inlined from '_ForwardIterator std::__remove_if(_ForwardIterator, _ForwardIterator, _Predicate) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Predicate = __gnu_cxx::__ops::_Iter_pred&, std::vector&) const:: >]' at /usr/include/c++/14/bits/stl_algobase.h:2174:31, - inlined from '_FIter std::remove_if(_FIter, _FIter, _Predicate) [with _FIter = __gnu_cxx::__normal_iterator >; _Predicate = rocksdb::Version::RemoveLiveFiles(std::vector&, std::vector&) const::]' at /usr/include/c++/14/bits/stl_algo.h:832:30, - inlined from 'void rocksdb::Version::RemoveLiveFiles(std::vector&, std::vector&) const' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:4962:21: -/usr/include/c++/14/bits/stl_algobase.h:2127:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 2127 | if (__pred(__first)) - | ~~~~~~^~~~~~~~~ -/usr/include/c++/14/bits/stl_algobase.h:2132:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 2132 | if (__pred(__first)) - | ~~~~~~^~~~~~~~~ -/usr/include/c++/14/bits/stl_algobase.h:2137:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 2137 | if (__pred(__first)) - | ~~~~~~^~~~~~~~~ -[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/wide/wide_column_serialization.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/wide/wide_column_serialization.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/wide/wide_column_serialization.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/wide/wide_column_serialization.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.cc -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:4147:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:4147:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wide/wide_columns.cc -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns_helper.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns_helper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wide/wide_columns_helper.cc -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/write_batch.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/write_batch.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/write_batch.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/write_batch.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc -In file included from /usr/include/c++/14/vector:66: -In member function 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]', - inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, - inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, - inlined from 'constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:209:4, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:573:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {rocksdb::autovector&}; = void; unsigned int _Idx = 1; _Head = long long unsigned int; _Tail = {rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {const long long unsigned int&, rocksdb::autovector&}; = void; unsigned int _Idx = 0; _Head = long long unsigned int; _Tail = {long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::tuple< >::tuple(_UElements&& ...) [with _UElements = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; bool _Valid = true; typename std::enable_if<_TCC<_Valid>::__is_implicitly_constructible<_UElements ...>(), bool>::type = true; _Elements = {long long unsigned int, long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:1489:54, - inlined from 'void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/new_allocator.h:191:4, - inlined from 'static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/alloc_traits.h:575:17, - inlined from 'void std::vector<_Tp, _Alloc>::_M_realloc_append(_Args&& ...) [with _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >; _Alloc = std::allocator > >]' at /usr/include/c++/14/bits/vector.tcc:634:26: -/usr/include/c++/14/bits/stl_vector.h:829:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 829 | { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]', - inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, - inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, - inlined from 'constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:209:4, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:573:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {rocksdb::autovector&}; = void; unsigned int _Idx = 1; _Head = long long unsigned int; _Tail = {rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {const long long unsigned int&, rocksdb::autovector&}; = void; unsigned int _Idx = 0; _Head = long long unsigned int; _Tail = {long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::tuple< >::tuple(_UElements&& ...) [with _UElements = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; bool _Valid = true; typename std::enable_if<_TCC<_Valid>::__is_implicitly_constructible<_UElements ...>(), bool>::type = true; _Elements = {long long unsigned int, long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:1489:54, - inlined from 'void rocksdb::autovector::emplace_back(Args&& ...) [with Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; T = std::tuple >; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:300:7, - inlined from 'void rocksdb::Version::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MultiGetRange&, std::unordered_map >&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:2339:29: -/usr/include/c++/14/bits/stl_vector.h:829:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 829 | { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]', - inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, - inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, - inlined from 'constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:209:4, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:573:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {rocksdb::autovector&}; = void; unsigned int _Idx = 1; _Head = long long unsigned int; _Tail = {rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {const long long unsigned int&, rocksdb::autovector&}; = void; unsigned int _Idx = 0; _Head = long long unsigned int; _Tail = {long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::tuple< >::tuple(_UElements&& ...) [with _UElements = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; bool _Valid = true; typename std::enable_if<_TCC<_Valid>::__is_implicitly_constructible<_UElements ...>(), bool>::type = true; _Elements = {long long unsigned int, long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:1489:54, - inlined from 'void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/new_allocator.h:191:4, - inlined from 'static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/alloc_traits.h:575:17, - inlined from 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >; _Alloc = std::allocator > >]' at /usr/include/c++/14/bits/vector.tcc:117:30, - inlined from 'void rocksdb::autovector::emplace_back(Args&& ...) [with Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; T = std::tuple >; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:303:25, - inlined from 'void rocksdb::Version::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MultiGetRange&, std::unordered_map >&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:2339:29: -/usr/include/c++/14/bits/stl_vector.h:829:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 829 | { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 24%] Building CXX object CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o -MF CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/external_sst_file_ingestion_job.cc -In file included from /usr/include/c++/14/deque:65: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = move_iterator; _ForwardIterator = rocksdb::GetContext*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type 'std::move_iterator' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type 'std::move_iterator' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator; _ForwardIterator = rocksdb::GetContext*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = move_iterator; _ForwardIterator = rocksdb::GetContext*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = move_iterator; _ForwardIterator = rocksdb::GetContext*; _Tp = rocksdb::GetContext]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from '_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = rocksdb::GetContext*; _ForwardIterator = rocksdb::GetContext*; _Allocator = allocator]' at /usr/include/c++/14/bits/stl_uninitialized.h:399:2, - inlined from 'void std::vector<_Tp, _Alloc>::_M_realloc_append(_Args&& ...) [with _Args = {const rocksdb::Comparator*, const rocksdb::MergeOperator*&, rocksdb::Logger*&, rocksdb::Statistics*&, rocksdb::GetContext::GetState, rocksdb::Slice&, rocksdb::PinnableSlice*&, rocksdb::PinnableWideColumns*&, std::__cxx11::basic_string, std::allocator >*&, std::nullptr_t, rocksdb::MergeContext*, bool, long long unsigned int*, rocksdb::SystemClock*&, std::nullptr_t, rocksdb::PinnedIteratorsManager*, rocksdb::ReadCallback*&, bool*, long long unsigned int&, rocksdb::BlobFetcher*}; _Tp = rocksdb::GetContext; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:676:60, - inlined from 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const rocksdb::Comparator*, const rocksdb::MergeOperator*&, rocksdb::Logger*&, rocksdb::Statistics*&, rocksdb::GetContext::GetState, rocksdb::Slice&, rocksdb::PinnableSlice*&, rocksdb::PinnableWideColumns*&, std::__cxx11::basic_string, std::allocator >*&, std::nullptr_t, rocksdb::MergeContext*, bool, long long unsigned int*, rocksdb::SystemClock*&, std::nullptr_t, rocksdb::PinnedIteratorsManager*, rocksdb::ReadCallback*&, bool*, long long unsigned int&, rocksdb::BlobFetcher*}; _Tp = rocksdb::GetContext; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:123:21, - inlined from 'void rocksdb::autovector::emplace_back(Args&& ...) [with Args = {const rocksdb::Comparator*, const rocksdb::MergeOperator*&, rocksdb::Logger*&, rocksdb::Statistics*&, rocksdb::GetContext::GetState, rocksdb::Slice&, rocksdb::PinnableSlice*&, rocksdb::PinnableWideColumns*&, std::__cxx11::basic_string, std::allocator >*&, std::nullptr_t, rocksdb::MergeContext*, bool, long long unsigned int*, rocksdb::SystemClock*&, std::nullptr_t, rocksdb::PinnedIteratorsManager*, rocksdb::ReadCallback*&, bool*, long long unsigned int&, rocksdb::BlobFetcher*}; T = rocksdb::GetContext; unsigned int kSize = 16]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:303:25, - inlined from 'void rocksdb::Version::MultiGet(const rocksdb::ReadOptions&, rocksdb::MultiGetRange*, rocksdb::ReadCallback*)' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:2598:25: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type 'std::move_iterator' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:44: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::MemTable*; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = rocksdb::DBImpl::RecoveredTransaction::BatchInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::DBImpl::RecoveredTransaction::RecoveredTransaction(uint64_t, const std::string&, rocksdb::WriteBatch*, rocksdb::SequenceNumber, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:981:19, - inlined from 'void rocksdb::DBImpl::InsertRecoveredTransaction(uint64_t, const std::string&, rocksdb::WriteBatch*, rocksdb::SequenceNumber, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:1028:61: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = rocksdb::DBImpl::RecoveredTransaction::BatchInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::DBImpl::RecoveredTransaction::AddBatch(rocksdb::SequenceNumber, uint64_t, rocksdb::WriteBatch*, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:993:19, - inlined from 'void rocksdb::DBImpl::InsertRecoveredTransaction(uint64_t, const std::string&, rocksdb::WriteBatch*, rocksdb::SequenceNumber, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:1030:29: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::PutBlobIndexCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::TimedPutCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, uint64_t)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::DeleteImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, const rocksdb::ProtectionInfoKVOS64*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2470:17: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::PutEntityCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::PutCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'virtual rocksdb::Status rocksdb::{anonymous}::MemTableInserter::MergeCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2853:21: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'virtual rocksdb::Status rocksdb::{anonymous}::MemTableInserter::MergeCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2856:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/write_batch_base.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/write_batch_base.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/write_batch_base.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/write_batch_base.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_batch_base.cc -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/write_controller.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/write_controller.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/write_controller.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/write_controller.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_controller.cc -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/write_stall_stats.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/write_stall_stats.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/write_stall_stats.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/write_stall_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_stall_stats.cc -[ 24%] Building CXX object CMakeFiles/rocksdb.dir/db/file_indexer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/file_indexer.cc.o -MF CMakeFiles/rocksdb.dir/db/file_indexer.cc.o.d -o CMakeFiles/rocksdb.dir/db/file_indexer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/file_indexer.cc -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/write_thread.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/write_thread.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/write_thread.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/write_thread.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_thread.cc -[ 24%] Building CXX object CMakeFiles/rocksdb.dir/db/flush_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/flush_job.cc.o -MF CMakeFiles/rocksdb.dir/db/flush_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/flush_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_job.cc -[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/composite_env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/composite_env.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/composite_env.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/composite_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/composite_env.cc -[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/env.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/env.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env.cc -[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/env_chroot.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/env_chroot.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/env_chroot.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/env_chroot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env_chroot.cc -[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/env_encryption.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/env_encryption.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/env_encryption.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/env_encryption.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env_encryption.cc -[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/file_system.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/file_system.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/file_system.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/file_system.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/file_system.cc -[ 25%] Building CXX object CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o -MF CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o.d -o CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_scheduler.cc -[ 25%] Building CXX object CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o -MF CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/forward_iterator.cc -[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/file_system_tracer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/file_system_tracer.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/file_system_tracer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/file_system_tracer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.cc -[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/fs_on_demand.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/fs_on_demand.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/fs_on_demand.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/fs_on_demand.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc -In file included from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:8: -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::Env::FileAttributes; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:227:14: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:227:14: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:228:14: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:228:14: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/fs_remap.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/fs_remap.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/fs_remap.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/fs_remap.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/fs_remap.cc -[ 26%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/mock_env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/mock_env.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/mock_env.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/mock_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/mock_env.cc -[ 26%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/unique_id_gen.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/unique_id_gen.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/unique_id_gen.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/unique_id_gen.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/unique_id_gen.cc -[ 27%] Building CXX object CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o -MF CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o.d -o CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/import_column_family_job.cc -[ 27%] Building CXX object CMakeFiles/rocksdb.dir/db/internal_stats.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/internal_stats.cc.o -MF CMakeFiles/rocksdb.dir/db/internal_stats.cc.o.d -o CMakeFiles/rocksdb.dir/db/internal_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/internal_stats.cc -[ 27%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/delete_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/delete_scheduler.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/delete_scheduler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/delete_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/delete_scheduler.cc -[ 27%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/file_prefetch_buffer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/file_prefetch_buffer.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/file_prefetch_buffer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/file_prefetch_buffer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.cc -[ 27%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/file_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/file_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/file_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/file_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/file_util.cc -[ 27%] Building CXX object CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o -MF CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o.d -o CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/logs_with_prep_tracker.cc -[ 27%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/filename.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/filename.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/filename.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/filename.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/filename.cc -[ 27%] Building CXX object CMakeFiles/rocksdb.dir/db/log_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/log_reader.cc.o -MF CMakeFiles/rocksdb.dir/db/log_reader.cc.o.d -o CMakeFiles/rocksdb.dir/db/log_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_reader.cc -[ 27%] Building CXX object CMakeFiles/rocksdb.dir/db/log_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/log_writer.cc.o -MF CMakeFiles/rocksdb.dir/db/log_writer.cc.o.d -o CMakeFiles/rocksdb.dir/db/log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_writer.cc -[ 27%] Building CXX object CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o -MF CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o.d -o CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/malloc_stats.cc -[ 27%] Building CXX object CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o -MF CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o.d -o CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/manifest_ops.cc -[ 27%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/line_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/line_file_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/line_file_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/line_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/line_file_reader.cc -[ 28%] Building CXX object CMakeFiles/rocksdb.dir/db/memtable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/memtable.cc.o -MF CMakeFiles/rocksdb.dir/db/memtable.cc.o.d -o CMakeFiles/rocksdb.dir/db/memtable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc -[ 29%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/random_access_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/random_access_file_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/random_access_file_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/random_access_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.cc -[ 29%] Building CXX object CMakeFiles/rocksdb.dir/db/memtable_list.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/memtable_list.cc.o -MF CMakeFiles/rocksdb.dir/db/memtable_list.cc.o.d -o CMakeFiles/rocksdb.dir/db/memtable_list.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable_list.cc -[ 29%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/read_write_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/read_write_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/read_write_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/read_write_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/read_write_util.cc -[ 29%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/readahead_raf.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/readahead_raf.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/readahead_raf.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/readahead_raf.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/readahead_raf.cc -[ 29%] Building CXX object CMakeFiles/rocksdb.dir/db/merge_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/merge_helper.cc.o -MF CMakeFiles/rocksdb.dir/db/merge_helper.cc.o.d -o CMakeFiles/rocksdb.dir/db/merge_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_helper.cc -[ 29%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/sequence_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/sequence_file_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/sequence_file_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/sequence_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/sequence_file_reader.cc -[ 29%] Building CXX object CMakeFiles/rocksdb.dir/db/merge_operator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/merge_operator.cc.o -MF CMakeFiles/rocksdb.dir/db/merge_operator.cc.o.d -o CMakeFiles/rocksdb.dir/db/merge_operator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_operator.cc -[ 29%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/sst_file_manager_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/sst_file_manager_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/sst_file_manager_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/sst_file_manager_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/sst_file_manager_impl.cc -[ 29%] Building CXX object CMakeFiles/rocksdb.dir/db/output_validator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/output_validator.cc.o -MF CMakeFiles/rocksdb.dir/db/output_validator.cc.o.d -o CMakeFiles/rocksdb.dir/db/output_validator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/output_validator.cc -[ 29%] Building CXX object CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o -MF CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o.d -o CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/periodic_task_scheduler.cc -[ 29%] Building CXX object CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o -MF CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o.d -o CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc -[ 30%] Building CXX object CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o -MF CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o.d -o CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.cc -[ 30%] Building CXX object CMakeFiles/rocksdb-shared.dir/file/writable_file_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/file/writable_file_writer.cc.o -MF CMakeFiles/rocksdb-shared.dir/file/writable_file_writer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/file/writable_file_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.cc +[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/experimental.cc +[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/external_sst_file_ingestion_job.cc +[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/file_indexer.cc +[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_job.cc +[ 21%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/flush_scheduler.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/forward_iterator.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/import_column_family_job.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/internal_stats.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/logs_with_prep_tracker.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_reader.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/log_writer.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/malloc_stats.cc +[ 22%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/manifest_ops.cc +[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc +[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/memtable_list.cc +[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_helper.cc +/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc: In member function 'void rocksdb::MemTable::UpdateOldestKeyTime()': +/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: error: insn does not satisfy its constraints: + 269 | } + | ^ +(insn 271 270 272 13 (set (reg:CC_DNE 100 cc) + (compare:CC_DNE (ior:SI (ne:SI (reg:SI 0 r0 [164]) + (const_int -1 [0xffffffffffffffff])) + (ne:SI (reg:SI 1 r1 [+4 ]) + (const_int -1 [0xffffffffffffffff]))) + (const_int 0 [0]))) "/usr/include/c++/14/bits/atomic_base.h":573:36 343 {*cmp_ior} + (expr_list:REG_DEAD (reg:SI 1 r1 [+4 ]) + (expr_list:REG_DEAD (reg:SI 0 r0 [164]) + (nil)))) +during RTL pass: cprop_hardreg +/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: internal compiler error: in extract_constrain_insn, at recog.cc:2713 +0x6a4a17 internal_error(char const*, ...) + ???:0 +0x6a4acd fancy_abort(char const*, int, char const*) + ???:0 +0x3d10f1 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) + ???:0 +0x3d1123 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) + ???:0 +0x946eb5 extract_constrain_insn(rtx_insn*) + ???:0 +Please submit a full bug report, with preprocessed source (by using -freport-bug). +Please include the complete backtrace with any bug report. +See for instructions. +[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/merge_operator.cc +[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/output_validator.cc +[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/periodic_task_scheduler.cc +[ 23%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc +[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.cc +[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/repair.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/repair.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/repair.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/repair.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/repair.cc In file included from /usr/include/c++/14/map:62, from /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h:11, from /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.cc:6: @@ -2140,10 +151276,12 @@ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ 641 | std::forward<_Args>(__args)...); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 30%] Building CXX object CMakeFiles/rocksdb.dir/db/repair.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/repair.cc.o -MF CMakeFiles/rocksdb.dir/db/repair.cc.o.d -o CMakeFiles/rocksdb.dir/db/repair.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/repair.cc -[ 30%] Building CXX object CMakeFiles/rocksdb.dir/db/seqno_to_time_mapping.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/seqno_to_time_mapping.cc.o -MF CMakeFiles/rocksdb.dir/db/seqno_to_time_mapping.cc.o.d -o CMakeFiles/rocksdb.dir/db/seqno_to_time_mapping.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.cc +[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.cc +[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/snapshot_impl.cc +[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/table_cache.cc In file included from /usr/include/c++/14/bits/stl_algo.h:61, from /usr/include/c++/14/algorithm:61, from /build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h:9, @@ -2152,14 +151290,6 @@ /usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 135 | __push_heap(_RandomAccessIterator __first, | ^~~~~~~~~~~ -[ 30%] Building CXX object CMakeFiles/rocksdb-shared.dir/logging/auto_roll_logger.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/logging/auto_roll_logger.cc.o -MF CMakeFiles/rocksdb-shared.dir/logging/auto_roll_logger.cc.o.d -o CMakeFiles/rocksdb-shared.dir/logging/auto_roll_logger.cc.o -c /build/reproducible-path/rocksdb-9.10.0/logging/auto_roll_logger.cc -[ 30%] Building CXX object CMakeFiles/rocksdb.dir/db/snapshot_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/snapshot_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/snapshot_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/snapshot_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/snapshot_impl.cc -[ 30%] Building CXX object CMakeFiles/rocksdb.dir/db/table_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/table_cache.cc.o -MF CMakeFiles/rocksdb.dir/db/table_cache.cc.o.d -o CMakeFiles/rocksdb.dir/db/table_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/table_cache.cc -[ 30%] Building CXX object CMakeFiles/rocksdb-shared.dir/logging/event_logger.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/logging/event_logger.cc.o -MF CMakeFiles/rocksdb-shared.dir/logging/event_logger.cc.o.d -o CMakeFiles/rocksdb-shared.dir/logging/event_logger.cc.o -c /build/reproducible-path/rocksdb-9.10.0/logging/event_logger.cc In file included from /usr/include/c++/14/memory:69, from /build/reproducible-path/rocksdb-9.10.0/db/version_builder.h:12, from /build/reproducible-path/rocksdb-9.10.0/db/repair.cc:62: @@ -2176,8 +151306,6 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 31%] Building CXX object CMakeFiles/rocksdb-shared.dir/logging/log_buffer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/logging/log_buffer.cc.o -MF CMakeFiles/rocksdb-shared.dir/logging/log_buffer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/logging/log_buffer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.cc In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, @@ -2194,32 +151322,149516 @@ /usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 137 | { return std::__do_uninit_copy(__first, __last, __result); } | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 31%] Building CXX object CMakeFiles/rocksdb-shared.dir/memory/arena.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memory/arena.cc.o -MF CMakeFiles/rocksdb-shared.dir/memory/arena.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memory/arena.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/arena.cc -[ 31%] Building CXX object CMakeFiles/rocksdb-shared.dir/memory/concurrent_arena.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memory/concurrent_arena.cc.o -MF CMakeFiles/rocksdb-shared.dir/memory/concurrent_arena.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memory/concurrent_arena.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.cc -[ 31%] Building CXX object CMakeFiles/rocksdb-shared.dir/memory/jemalloc_nodump_allocator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memory/jemalloc_nodump_allocator.cc.o -MF CMakeFiles/rocksdb-shared.dir/memory/jemalloc_nodump_allocator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memory/jemalloc_nodump_allocator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/jemalloc_nodump_allocator.cc -[ 31%] Building CXX object CMakeFiles/rocksdb.dir/db/table_properties_collector.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/table_properties_collector.cc.o -MF CMakeFiles/rocksdb.dir/db/table_properties_collector.cc.o.d -o CMakeFiles/rocksdb.dir/db/table_properties_collector.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.cc -[ 31%] Building CXX object CMakeFiles/rocksdb.dir/db/transaction_log_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/transaction_log_impl.cc.o -MF CMakeFiles/rocksdb.dir/db/transaction_log_impl.cc.o.d -o CMakeFiles/rocksdb.dir/db/transaction_log_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/transaction_log_impl.cc -[ 31%] Building CXX object CMakeFiles/rocksdb.dir/db/trim_history_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/trim_history_scheduler.cc.o -MF CMakeFiles/rocksdb.dir/db/trim_history_scheduler.cc.o.d -o CMakeFiles/rocksdb.dir/db/trim_history_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/trim_history_scheduler.cc -[ 31%] Building CXX object CMakeFiles/rocksdb-shared.dir/memory/memkind_kmem_allocator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memory/memkind_kmem_allocator.cc.o -MF CMakeFiles/rocksdb-shared.dir/memory/memkind_kmem_allocator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memory/memkind_kmem_allocator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/memkind_kmem_allocator.cc -[ 31%] Building CXX object CMakeFiles/rocksdb-shared.dir/memory/memory_allocator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memory/memory_allocator.cc.o -MF CMakeFiles/rocksdb-shared.dir/memory/memory_allocator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memory/memory_allocator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/memory_allocator.cc -[ 32%] Building CXX object CMakeFiles/rocksdb.dir/db/version_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/version_builder.cc.o -MF CMakeFiles/rocksdb.dir/db/version_builder.cc.o.d -o CMakeFiles/rocksdb.dir/db/version_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc -[ 32%] Building CXX object CMakeFiles/rocksdb.dir/db/version_edit.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/version_edit.cc.o -MF CMakeFiles/rocksdb.dir/db/version_edit.cc.o.d -o CMakeFiles/rocksdb.dir/db/version_edit.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_edit.cc -[ 32%] Building CXX object CMakeFiles/rocksdb-shared.dir/memtable/alloc_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memtable/alloc_tracker.cc.o -MF CMakeFiles/rocksdb-shared.dir/memtable/alloc_tracker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memtable/alloc_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/alloc_tracker.cc -[ 33%] Building CXX object CMakeFiles/rocksdb-shared.dir/memtable/hash_linklist_rep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memtable/hash_linklist_rep.cc.o -MF CMakeFiles/rocksdb-shared.dir/memtable/hash_linklist_rep.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memtable/hash_linklist_rep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/hash_linklist_rep.cc -[ 33%] Building CXX object CMakeFiles/rocksdb-shared.dir/memtable/hash_skiplist_rep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memtable/hash_skiplist_rep.cc.o -MF CMakeFiles/rocksdb-shared.dir/memtable/hash_skiplist_rep.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memtable/hash_skiplist_rep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/hash_skiplist_rep.cc +[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.cc +[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o +/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/transaction_log_impl.cc +Preprocessed source stored into /tmp/ccUsAEQc.out file, please attach this to your bugreport. +=== BEGIN GCC DUMP === +16166: // Target: arm-linux-gnueabihf +16166: // Configured with: ../src/configure -v --with-pkgversion='Debian 14.2.0-16' --with-bugurl=file:///usr/share/doc/gcc-14/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr --with-gcc-major-version-only --program-suffix=-14 --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 +16166: // Thread model: posix +16166: // Supported LTO compression algorithms: zlib zstd +16166: // gcc version 14.2.0 (Debian 14.2.0-16) +16166: // +16166: // /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc: In member function 'void rocksdb::MemTable::UpdateOldestKeyTime()': +16166: // /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: error: insn does not satisfy its constraints: +16166: // 269 | } +16166: // | ^ +16166: // (insn 271 270 272 13 (set (reg:CC_DNE 100 cc) +16166: // (compare:CC_DNE (ior:SI (ne:SI (reg:SI 0 r0 [164]) +16166: // (const_int -1 [0xffffffffffffffff])) +16166: // (ne:SI (reg:SI 1 r1 [+4 ]) +16166: // (const_int -1 [0xffffffffffffffff]))) +16166: // (const_int 0 [0]))) "/usr/include/c++/14/bits/atomic_base.h":573:36 343 {*cmp_ior} +16166: // (expr_list:REG_DEAD (reg:SI 1 r1 [+4 ]) +16166: // (expr_list:REG_DEAD (reg:SI 0 r0 [164]) +16166: // (nil)))) +16166: // during RTL pass: cprop_hardreg +16166: // /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc:269:1: internal compiler error: in extract_constrain_insn, at recog.cc:2713 +16166: // 0x6a4a17 internal_error(char const*, ...) +16166: // ???:0 +16166: // 0x6a4acd fancy_abort(char const*, int, char const*) +16166: // ???:0 +16166: // 0x3d10f1 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) +16166: // ???:0 +16166: // 0x3d1123 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) +16166: // ???:0 +16166: // 0x946eb5 extract_constrain_insn(rtx_insn*) +16166: // ???:0 +16166: // Please submit a full bug report, with preprocessed source (by using -freport-bug). +16166: // Please include the complete backtrace with any bug report. +16166: // See for instructions. +16166: +16166: // /usr/libexec/gcc/arm-linux-gnueabihf/14/cc1plus -quiet -I /build/reproducible-path/rocksdb-9.10.0 -I /build/reproducible-path/rocksdb-9.10.0/include -imultilib . -imultiarch arm-linux-gnueabihf -MD CMakeFiles/rocksdb-shared.dir/db/memtable.cc.d -MF CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o.d -MT CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o -D_GNU_SOURCE -D_REENTRANT -D BZIP2 -D GFLAGS=1 -D GFLAGS_IS_A_DLL=0 -D LZ4 -D OS_LINUX -D ROCKSDB_AUXV_GETAUXVAL_PRESENT -D ROCKSDB_FALLOCATE_PRESENT -D ROCKSDB_LIB_IO_POSIX -D ROCKSDB_MALLOC_USABLE_SIZE -D ROCKSDB_NO_DYNAMIC_EXTENSION -D ROCKSDB_PLATFORM_POSIX -D ROCKSDB_PTHREAD_ADAPTIVE_MUTEX -D ROCKSDB_RANGESYNC_PRESENT -D ROCKSDB_SCHED_GETCPU_PRESENT -D SNAPPY -D ZLIB -D ZSTD -D rocksdb_shared_EXPORTS -D _LARGEFILE_SOURCE -D _FILE_OFFSET_BITS=64 -D _TIME_BITS=64 -D _FORTIFY_SOURCE=2 -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src /build/reproducible-path/rocksdb-9.10.0/db/memtable.cc -quiet -dumpdir CMakeFiles/rocksdb-shared.dir/db/ -dumpbase memtable.cc.cc -dumpbase-ext .cc -mfloat-abi=hard -mtls-dialect=gnu -mthumb -mlibarch=armv8-a+crc+crypto -march=armv8-a+crc+crypto -g -O2 -Wformat=1 -Werror=format-security -Wdate-time -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual=2 -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -Wno-unused-function -std=gnu++17 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -fno-omit-frame-pointer -fno-builtin-memcmp -fPIC -o - -frandom-seed=0 -fdump-noaddr +16166: +16166: # 0 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf//" +16166: # 0 "" +16166: # 0 "" +16166: # 1 "/usr/include/stdc-predef.h" 1 3 4 +16166: # 0 "" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: +16166: # 1 "/usr/include/c++/14/atomic" 1 3 +16166: # 35 "/usr/include/c++/14/atomic" 3 +16166: +16166: # 36 "/usr/include/c++/14/atomic" 3 +16166: # 48 "/usr/include/c++/14/atomic" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 1 3 +16166: # 33 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: +16166: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: # 308 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: +16166: # 308 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: namespace std +16166: { +16166: typedef unsigned int size_t; +16166: typedef int ptrdiff_t; +16166: +16166: +16166: typedef decltype(nullptr) nullptr_t; +16166: +16166: +16166: #pragma GCC visibility push(default) +16166: +16166: +16166: extern "C++" __attribute__ ((__noreturn__, __always_inline__)) +16166: inline void __terminate() noexcept +16166: { +16166: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); +16166: terminate(); +16166: } +16166: #pragma GCC visibility pop +16166: } +16166: # 341 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: namespace std +16166: { +16166: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +16166: } +16166: namespace __gnu_cxx +16166: { +16166: inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +16166: } +16166: # 534 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: namespace std +16166: { +16166: #pragma GCC visibility push(default) +16166: +16166: +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: constexpr inline bool +16166: __is_constant_evaluated() noexcept +16166: { +16166: +16166: +16166: +16166: +16166: +16166: return __builtin_is_constant_evaluated(); +16166: +16166: +16166: +16166: } +16166: #pragma GCC visibility pop +16166: } +16166: # 573 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: namespace std +16166: { +16166: #pragma GCC visibility push(default) +16166: +16166: extern "C++" __attribute__ ((__noreturn__)) +16166: void +16166: __glibcxx_assert_fail +16166: (const char* __file, int __line, const char* __function, +16166: const char* __condition) +16166: noexcept; +16166: #pragma GCC visibility pop +16166: } +16166: # 604 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: namespace std +16166: { +16166: __attribute__((__always_inline__,__visibility__("default"))) +16166: inline void +16166: __glibcxx_assert_fail() +16166: { } +16166: } +16166: # 683 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/os_defines.h" 1 3 +16166: # 39 "/usr/include/arm-linux-gnueabihf/c++/14/bits/os_defines.h" 3 +16166: # 1 "/usr/include/features.h" 1 3 4 +16166: # 402 "/usr/include/features.h" 3 4 +16166: # 1 "/usr/include/features-time64.h" 1 3 4 +16166: # 20 "/usr/include/features-time64.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 21 "/usr/include/features-time64.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 +16166: # 22 "/usr/include/features-time64.h" 2 3 4 +16166: # 403 "/usr/include/features.h" 2 3 4 +16166: # 510 "/usr/include/features.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 1 3 4 +16166: # 730 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 731 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 +16166: # 732 "/usr/include/arm-linux-gnueabihf/sys/cdefs.h" 2 3 4 +16166: # 511 "/usr/include/features.h" 2 3 4 +16166: # 534 "/usr/include/features.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 1 3 4 +16166: # 10 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/gnu/stubs-hard.h" 1 3 4 +16166: # 11 "/usr/include/arm-linux-gnueabihf/gnu/stubs.h" 2 3 4 +16166: # 535 "/usr/include/features.h" 2 3 4 +16166: # 40 "/usr/include/arm-linux-gnueabihf/c++/14/bits/os_defines.h" 2 3 +16166: # 684 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 2 3 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/cpu_defines.h" 1 3 +16166: # 687 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 2 3 +16166: # 890 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 3 +16166: # 1 "/usr/include/c++/14/pstl/pstl_config.h" 1 3 +16166: # 891 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++config.h" 2 3 +16166: # 50 "/usr/include/c++/14/bits/version.h" 2 3 +16166: # 49 "/usr/include/c++/14/atomic" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/atomic_base.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/new" 1 3 +16166: # 38 "/usr/include/c++/14/new" 3 +16166: +16166: # 39 "/usr/include/c++/14/new" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/exception.h" 1 3 +16166: # 34 "/usr/include/c++/14/bits/exception.h" 3 +16166: +16166: # 35 "/usr/include/c++/14/bits/exception.h" 3 +16166: +16166: +16166: +16166: extern "C++" { +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: # 59 "/usr/include/c++/14/bits/exception.h" 3 +16166: class exception +16166: { +16166: public: +16166: exception() noexcept { } +16166: virtual ~exception() noexcept; +16166: +16166: exception(const exception&) = default; +16166: exception& operator=(const exception&) = default; +16166: exception(exception&&) = default; +16166: exception& operator=(exception&&) = default; +16166: +16166: +16166: +16166: +16166: virtual const char* +16166: what() const noexcept; +16166: }; +16166: +16166: +16166: +16166: } +16166: +16166: } +16166: # 42 "/usr/include/c++/14/new" 2 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 47 "/usr/include/c++/14/new" 2 3 +16166: +16166: #pragma GCC visibility push(default) +16166: +16166: extern "C++" { +16166: +16166: namespace std +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: class bad_alloc : public exception +16166: { +16166: public: +16166: bad_alloc() throw() { } +16166: +16166: +16166: bad_alloc(const bad_alloc&) = default; +16166: bad_alloc& operator=(const bad_alloc&) = default; +16166: +16166: +16166: +16166: +16166: virtual ~bad_alloc() throw(); +16166: +16166: +16166: virtual const char* what() const throw(); +16166: }; +16166: +16166: +16166: class bad_array_new_length : public bad_alloc +16166: { +16166: public: +16166: bad_array_new_length() throw() { } +16166: +16166: +16166: +16166: virtual ~bad_array_new_length() throw(); +16166: +16166: +16166: virtual const char* what() const throw(); +16166: }; +16166: +16166: +16166: +16166: enum class align_val_t: size_t {}; +16166: +16166: +16166: struct nothrow_t +16166: { +16166: +16166: explicit nothrow_t() = default; +16166: +16166: }; +16166: +16166: extern const nothrow_t nothrow; +16166: +16166: +16166: +16166: typedef void (*new_handler)(); +16166: +16166: +16166: +16166: new_handler set_new_handler(new_handler) throw(); +16166: +16166: +16166: +16166: new_handler get_new_handler() noexcept; +16166: +16166: } +16166: # 131 "/usr/include/c++/14/new" 3 +16166: [[__nodiscard__]] void* operator new(std::size_t) +16166: __attribute__((__externally_visible__)); +16166: [[__nodiscard__]] void* operator new[](std::size_t) +16166: __attribute__((__externally_visible__)); +16166: void operator delete(void*) noexcept +16166: __attribute__((__externally_visible__)); +16166: void operator delete[](void*) noexcept +16166: __attribute__((__externally_visible__)); +16166: +16166: void operator delete(void*, std::size_t) noexcept +16166: __attribute__((__externally_visible__)); +16166: void operator delete[](void*, std::size_t) noexcept +16166: __attribute__((__externally_visible__)); +16166: +16166: [[__nodiscard__]] void* operator new(std::size_t, const std::nothrow_t&) noexcept +16166: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +16166: [[__nodiscard__]] void* operator new[](std::size_t, const std::nothrow_t&) noexcept +16166: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +16166: void operator delete(void*, const std::nothrow_t&) noexcept +16166: __attribute__((__externally_visible__)); +16166: void operator delete[](void*, const std::nothrow_t&) noexcept +16166: __attribute__((__externally_visible__)); +16166: +16166: [[__nodiscard__]] void* operator new(std::size_t, std::align_val_t) +16166: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +16166: [[__nodiscard__]] void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&) +16166: noexcept __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +16166: void operator delete(void*, std::align_val_t) +16166: noexcept __attribute__((__externally_visible__)); +16166: void operator delete(void*, std::align_val_t, const std::nothrow_t&) +16166: noexcept __attribute__((__externally_visible__)); +16166: [[__nodiscard__]] void* operator new[](std::size_t, std::align_val_t) +16166: __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +16166: [[__nodiscard__]] void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&) +16166: noexcept __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__)); +16166: void operator delete[](void*, std::align_val_t) +16166: noexcept __attribute__((__externally_visible__)); +16166: void operator delete[](void*, std::align_val_t, const std::nothrow_t&) +16166: noexcept __attribute__((__externally_visible__)); +16166: +16166: void operator delete(void*, std::size_t, std::align_val_t) +16166: noexcept __attribute__((__externally_visible__)); +16166: void operator delete[](void*, std::size_t, std::align_val_t) +16166: noexcept __attribute__((__externally_visible__)); +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] inline void* operator new(std::size_t, void* __p) noexcept +16166: { return __p; } +16166: [[__nodiscard__]] inline void* operator new[](std::size_t, void* __p) noexcept +16166: { return __p; } +16166: +16166: +16166: inline void operator delete (void*, void*) noexcept { } +16166: inline void operator delete[](void*, void*) noexcept { } +16166: +16166: } +16166: +16166: +16166: namespace std +16166: { +16166: +16166: +16166: template +16166: [[nodiscard]] constexpr _Tp* +16166: launder(_Tp* __p) noexcept +16166: { return __builtin_launder(__p); } +16166: +16166: +16166: +16166: +16166: template +16166: void launder(_Ret (*)(_Args...) noexcept (_NE)) = delete; +16166: template +16166: void launder(_Ret (*)(_Args......) noexcept (_NE)) = delete; +16166: +16166: void launder(void*) = delete; +16166: void launder(const void*) = delete; +16166: void launder(volatile void*) = delete; +16166: void launder(const volatile void*) = delete; +16166: +16166: +16166: +16166: inline constexpr size_t hardware_destructive_interference_size = 64; +16166: inline constexpr size_t hardware_constructive_interference_size = 64; +16166: +16166: } +16166: # 236 "/usr/include/c++/14/new" 3 +16166: #pragma GCC visibility pop +16166: # 37 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdint.h" 1 3 4 +16166: # 9 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdint.h" 3 4 +16166: # 1 "/usr/include/stdint.h" 1 3 4 +16166: # 26 "/usr/include/stdint.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +16166: # 27 "/usr/include/stdint.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 28 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/timesize.h" 1 3 4 +16166: # 29 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +16166: +16166: +16166: typedef unsigned char __u_char; +16166: typedef unsigned short int __u_short; +16166: typedef unsigned int __u_int; +16166: typedef unsigned long int __u_long; +16166: +16166: +16166: typedef signed char __int8_t; +16166: typedef unsigned char __uint8_t; +16166: typedef signed short int __int16_t; +16166: typedef unsigned short int __uint16_t; +16166: typedef signed int __int32_t; +16166: typedef unsigned int __uint32_t; +16166: +16166: +16166: +16166: +16166: __extension__ typedef signed long long int __int64_t; +16166: __extension__ typedef unsigned long long int __uint64_t; +16166: +16166: +16166: +16166: typedef __int8_t __int_least8_t; +16166: typedef __uint8_t __uint_least8_t; +16166: typedef __int16_t __int_least16_t; +16166: typedef __uint16_t __uint_least16_t; +16166: typedef __int32_t __int_least32_t; +16166: typedef __uint32_t __uint_least32_t; +16166: typedef __int64_t __int_least64_t; +16166: typedef __uint64_t __uint_least64_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: __extension__ typedef long long int __quad_t; +16166: __extension__ typedef unsigned long long int __u_quad_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __extension__ typedef long long int __intmax_t; +16166: __extension__ typedef unsigned long long int __uintmax_t; +16166: # 141 "/usr/include/arm-linux-gnueabihf/bits/types.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/typesizes.h" 1 3 4 +16166: # 142 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/time64.h" 1 3 4 +16166: # 143 "/usr/include/arm-linux-gnueabihf/bits/types.h" 2 3 4 +16166: +16166: +16166: __extension__ typedef __uint64_t __dev_t; +16166: __extension__ typedef unsigned int __uid_t; +16166: __extension__ typedef unsigned int __gid_t; +16166: __extension__ typedef unsigned long int __ino_t; +16166: __extension__ typedef __uint64_t __ino64_t; +16166: __extension__ typedef unsigned int __mode_t; +16166: __extension__ typedef unsigned int __nlink_t; +16166: __extension__ typedef long int __off_t; +16166: __extension__ typedef __int64_t __off64_t; +16166: __extension__ typedef int __pid_t; +16166: __extension__ typedef struct { int __val[2]; } __fsid_t; +16166: __extension__ typedef long int __clock_t; +16166: __extension__ typedef unsigned long int __rlim_t; +16166: __extension__ typedef __uint64_t __rlim64_t; +16166: __extension__ typedef unsigned int __id_t; +16166: __extension__ typedef long int __time_t; +16166: __extension__ typedef unsigned int __useconds_t; +16166: __extension__ typedef long int __suseconds_t; +16166: __extension__ typedef __int64_t __suseconds64_t; +16166: +16166: __extension__ typedef int __daddr_t; +16166: __extension__ typedef int __key_t; +16166: +16166: +16166: __extension__ typedef int __clockid_t; +16166: +16166: +16166: __extension__ typedef void * __timer_t; +16166: +16166: +16166: __extension__ typedef long int __blksize_t; +16166: +16166: +16166: +16166: +16166: __extension__ typedef long int __blkcnt_t; +16166: __extension__ typedef __int64_t __blkcnt64_t; +16166: +16166: +16166: __extension__ typedef unsigned long int __fsblkcnt_t; +16166: __extension__ typedef __uint64_t __fsblkcnt64_t; +16166: +16166: +16166: __extension__ typedef unsigned long int __fsfilcnt_t; +16166: __extension__ typedef __uint64_t __fsfilcnt64_t; +16166: +16166: +16166: __extension__ typedef int __fsword_t; +16166: +16166: __extension__ typedef int __ssize_t; +16166: +16166: +16166: __extension__ typedef long int __syscall_slong_t; +16166: +16166: __extension__ typedef unsigned long int __syscall_ulong_t; +16166: +16166: +16166: +16166: typedef __off64_t __loff_t; +16166: typedef char *__caddr_t; +16166: +16166: +16166: __extension__ typedef int __intptr_t; +16166: +16166: +16166: __extension__ typedef unsigned int __socklen_t; +16166: +16166: +16166: +16166: +16166: typedef int __sig_atomic_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __extension__ typedef __int64_t __time64_t; +16166: # 28 "/usr/include/stdint.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar.h" 1 3 4 +16166: # 29 "/usr/include/stdint.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 30 "/usr/include/stdint.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-intn.h" 3 4 +16166: typedef __int8_t int8_t; +16166: typedef __int16_t int16_t; +16166: typedef __int32_t int32_t; +16166: typedef __int64_t int64_t; +16166: # 35 "/usr/include/stdint.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdint-uintn.h" 3 4 +16166: typedef __uint8_t uint8_t; +16166: typedef __uint16_t uint16_t; +16166: typedef __uint32_t uint32_t; +16166: typedef __uint64_t uint64_t; +16166: # 38 "/usr/include/stdint.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 1 3 4 +16166: # 25 "/usr/include/arm-linux-gnueabihf/bits/stdint-least.h" 3 4 +16166: typedef __int_least8_t int_least8_t; +16166: typedef __int_least16_t int_least16_t; +16166: typedef __int_least32_t int_least32_t; +16166: typedef __int_least64_t int_least64_t; +16166: +16166: +16166: typedef __uint_least8_t uint_least8_t; +16166: typedef __uint_least16_t uint_least16_t; +16166: typedef __uint_least32_t uint_least32_t; +16166: typedef __uint_least64_t uint_least64_t; +16166: # 42 "/usr/include/stdint.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: typedef signed char int_fast8_t; +16166: +16166: +16166: +16166: +16166: +16166: typedef int int_fast16_t; +16166: typedef int int_fast32_t; +16166: __extension__ +16166: typedef long long int int_fast64_t; +16166: +16166: +16166: +16166: typedef unsigned char uint_fast8_t; +16166: +16166: +16166: +16166: +16166: +16166: typedef unsigned int uint_fast16_t; +16166: typedef unsigned int uint_fast32_t; +16166: __extension__ +16166: typedef unsigned long long int uint_fast64_t; +16166: # 82 "/usr/include/stdint.h" 3 4 +16166: typedef int intptr_t; +16166: +16166: +16166: typedef unsigned int uintptr_t; +16166: +16166: +16166: +16166: +16166: typedef __intmax_t intmax_t; +16166: typedef __uintmax_t uintmax_t; +16166: # 10 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdint.h" 2 3 4 +16166: # 38 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/atomic_lockfree_defines.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/atomic_lockfree_defines.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/atomic_lockfree_defines.h" 3 +16166: # 39 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/move.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/move.h" 3 +16166: # 1 "/usr/include/c++/14/type_traits" 1 3 +16166: # 32 "/usr/include/c++/14/type_traits" 3 +16166: +16166: # 33 "/usr/include/c++/14/type_traits" 3 +16166: # 63 "/usr/include/c++/14/type_traits" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 64 "/usr/include/c++/14/type_traits" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: class reference_wrapper; +16166: # 86 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct integral_constant +16166: { +16166: static constexpr _Tp value = __v; +16166: using value_type = _Tp; +16166: using type = integral_constant<_Tp, __v>; +16166: constexpr operator value_type() const noexcept { return value; } +16166: +16166: +16166: constexpr value_type operator()() const noexcept { return value; } +16166: +16166: }; +16166: # 106 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: using __bool_constant = integral_constant; +16166: +16166: +16166: +16166: using true_type = __bool_constant; +16166: +16166: +16166: using false_type = __bool_constant; +16166: +16166: +16166: +16166: +16166: template +16166: using bool_constant = __bool_constant<__v>; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct enable_if +16166: { }; +16166: +16166: +16166: template +16166: struct enable_if +16166: { using type = _Tp; }; +16166: +16166: +16166: template +16166: using __enable_if_t = typename enable_if<_Cond, _Tp>::type; +16166: +16166: template +16166: struct __conditional +16166: { +16166: template +16166: using type = _Tp; +16166: }; +16166: +16166: template<> +16166: struct __conditional +16166: { +16166: template +16166: using type = _Up; +16166: }; +16166: +16166: +16166: template +16166: using __conditional_t +16166: = typename __conditional<_Cond>::template type<_If, _Else>; +16166: +16166: +16166: template +16166: struct __type_identity +16166: { using type = _Type; }; +16166: +16166: template +16166: using __type_identity_t = typename __type_identity<_Tp>::type; +16166: +16166: namespace __detail +16166: { +16166: +16166: template +16166: using __first_t = _Tp; +16166: +16166: +16166: template +16166: auto __or_fn(int) -> __first_t...>; +16166: +16166: template +16166: auto __or_fn(...) -> true_type; +16166: +16166: template +16166: auto __and_fn(int) -> __first_t...>; +16166: +16166: template +16166: auto __and_fn(...) -> false_type; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: struct __or_ +16166: : decltype(__detail::__or_fn<_Bn...>(0)) +16166: { }; +16166: +16166: template +16166: struct __and_ +16166: : decltype(__detail::__and_fn<_Bn...>(0)) +16166: { }; +16166: +16166: template +16166: struct __not_ +16166: : __bool_constant +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool __or_v = __or_<_Bn...>::value; +16166: template +16166: inline constexpr bool __and_v = __and_<_Bn...>::value; +16166: +16166: namespace __detail +16166: { +16166: template +16166: struct __disjunction_impl +16166: { using type = _B1; }; +16166: +16166: template +16166: struct __disjunction_impl<__enable_if_t, _B1, _B2, _Bn...> +16166: { using type = typename __disjunction_impl::type; }; +16166: +16166: template +16166: struct __conjunction_impl +16166: { using type = _B1; }; +16166: +16166: template +16166: struct __conjunction_impl<__enable_if_t, _B1, _B2, _Bn...> +16166: { using type = typename __conjunction_impl::type; }; +16166: } +16166: +16166: +16166: template +16166: struct conjunction +16166: : __detail::__conjunction_impl::type +16166: { }; +16166: +16166: template<> +16166: struct conjunction<> +16166: : true_type +16166: { }; +16166: +16166: template +16166: struct disjunction +16166: : __detail::__disjunction_impl::type +16166: { }; +16166: +16166: template<> +16166: struct disjunction<> +16166: : false_type +16166: { }; +16166: +16166: template +16166: struct negation +16166: : __not_<_Pp>::type +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool conjunction_v = conjunction<_Bn...>::value; +16166: +16166: template +16166: inline constexpr bool disjunction_v = disjunction<_Bn...>::value; +16166: +16166: template +16166: inline constexpr bool negation_v = negation<_Pp>::value; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_reference; +16166: template +16166: struct is_function; +16166: template +16166: struct is_void; +16166: template +16166: struct remove_cv; +16166: template +16166: struct is_const; +16166: +16166: +16166: template +16166: struct __is_array_unknown_bounds; +16166: +16166: +16166: +16166: +16166: template +16166: constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) +16166: { return {}; } +16166: +16166: template +16166: constexpr typename __or_< +16166: is_reference<_NestedType>, +16166: is_function<_NestedType>, +16166: is_void<_NestedType>, +16166: __is_array_unknown_bounds<_NestedType> +16166: >::type __is_complete_or_unbounded(_TypeIdentity) +16166: { return {}; } +16166: +16166: +16166: template +16166: using __remove_cv_t = typename remove_cv<_Tp>::type; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_void +16166: : public false_type { }; +16166: +16166: template<> +16166: struct is_void +16166: : public true_type { }; +16166: +16166: template<> +16166: struct is_void +16166: : public true_type { }; +16166: +16166: template<> +16166: struct is_void +16166: : public true_type { }; +16166: +16166: template<> +16166: struct is_void +16166: : public true_type { }; +16166: +16166: +16166: template +16166: struct __is_integral_helper +16166: : public false_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_integral_helper +16166: : public true_type { }; +16166: # 460 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_integral +16166: : public __is_integral_helper<__remove_cv_t<_Tp>>::type +16166: { }; +16166: +16166: +16166: template +16166: struct __is_floating_point_helper +16166: : public false_type { }; +16166: +16166: template<> +16166: struct __is_floating_point_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_floating_point_helper +16166: : public true_type { }; +16166: +16166: template<> +16166: struct __is_floating_point_helper +16166: : public true_type { }; +16166: # 520 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_floating_point +16166: : public __is_floating_point_helper<__remove_cv_t<_Tp>>::type +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct is_array +16166: : public __bool_constant<__is_array(_Tp)> +16166: { }; +16166: # 545 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct __is_pointer_helper +16166: : public false_type { }; +16166: +16166: template +16166: struct __is_pointer_helper<_Tp*> +16166: : public true_type { }; +16166: +16166: +16166: template +16166: struct is_pointer +16166: : public __is_pointer_helper<__remove_cv_t<_Tp>>::type +16166: { }; +16166: +16166: +16166: template +16166: struct is_lvalue_reference +16166: : public false_type { }; +16166: +16166: template +16166: struct is_lvalue_reference<_Tp&> +16166: : public true_type { }; +16166: +16166: +16166: template +16166: struct is_rvalue_reference +16166: : public false_type { }; +16166: +16166: template +16166: struct is_rvalue_reference<_Tp&&> +16166: : public true_type { }; +16166: +16166: +16166: +16166: template +16166: struct is_member_object_pointer +16166: : public __bool_constant<__is_member_object_pointer(_Tp)> +16166: { }; +16166: # 601 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_member_function_pointer +16166: : public __bool_constant<__is_member_function_pointer(_Tp)> +16166: { }; +16166: # 622 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_enum +16166: : public __bool_constant<__is_enum(_Tp)> +16166: { }; +16166: +16166: +16166: template +16166: struct is_union +16166: : public __bool_constant<__is_union(_Tp)> +16166: { }; +16166: +16166: +16166: template +16166: struct is_class +16166: : public __bool_constant<__is_class(_Tp)> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct is_function +16166: : public __bool_constant<__is_function(_Tp)> +16166: { }; +16166: # 661 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_null_pointer +16166: : public false_type { }; +16166: +16166: template<> +16166: struct is_null_pointer +16166: : public true_type { }; +16166: +16166: template<> +16166: struct is_null_pointer +16166: : public true_type { }; +16166: +16166: template<> +16166: struct is_null_pointer +16166: : public true_type { }; +16166: +16166: template<> +16166: struct is_null_pointer +16166: : public true_type { }; +16166: +16166: +16166: +16166: template +16166: struct __is_nullptr_t +16166: : public is_null_pointer<_Tp> +16166: { } __attribute__ ((__deprecated__ ("use '" "std::is_null_pointer" "' instead"))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_reference +16166: : public __bool_constant<__is_reference(_Tp)> +16166: { }; +16166: # 715 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_arithmetic +16166: : public __or_, is_floating_point<_Tp>>::type +16166: { }; +16166: +16166: +16166: template +16166: struct is_fundamental +16166: : public __or_, is_void<_Tp>, +16166: is_null_pointer<_Tp>>::type +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct is_object +16166: : public __bool_constant<__is_object(_Tp)> +16166: { }; +16166: # 741 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_member_pointer; +16166: +16166: +16166: template +16166: struct is_scalar +16166: : public __or_, is_enum<_Tp>, is_pointer<_Tp>, +16166: is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type +16166: { }; +16166: +16166: +16166: template +16166: struct is_compound +16166: : public __bool_constant::value> { }; +16166: +16166: +16166: +16166: template +16166: struct is_member_pointer +16166: : public __bool_constant<__is_member_pointer(_Tp)> +16166: { }; +16166: # 779 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_same; +16166: +16166: +16166: template +16166: using __is_one_of = __or_...>; +16166: +16166: +16166: __extension__ +16166: template +16166: using __is_signed_integer = __is_one_of<__remove_cv_t<_Tp>, +16166: signed char, signed short, signed int, signed long, +16166: signed long long +16166: # 804 "/usr/include/c++/14/type_traits" 3 +16166: >; +16166: +16166: +16166: __extension__ +16166: template +16166: using __is_unsigned_integer = __is_one_of<__remove_cv_t<_Tp>, +16166: unsigned char, unsigned short, unsigned int, unsigned long, +16166: unsigned long long +16166: # 824 "/usr/include/c++/14/type_traits" 3 +16166: >; +16166: +16166: +16166: template +16166: using __is_standard_integer +16166: = __or_<__is_signed_integer<_Tp>, __is_unsigned_integer<_Tp>>; +16166: +16166: +16166: template using __void_t = void; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_const +16166: : public false_type { }; +16166: +16166: template +16166: struct is_const<_Tp const> +16166: : public true_type { }; +16166: +16166: +16166: template +16166: struct is_volatile +16166: : public false_type { }; +16166: +16166: template +16166: struct is_volatile<_Tp volatile> +16166: : public true_type { }; +16166: +16166: +16166: template +16166: struct is_trivial +16166: : public __bool_constant<__is_trivial(_Tp)> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_trivially_copyable +16166: : public __bool_constant<__is_trivially_copyable(_Tp)> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_standard_layout +16166: : public __bool_constant<__is_standard_layout(_Tp)> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct +16166: +16166: is_pod +16166: : public __bool_constant<__is_pod(_Tp)> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct +16166: [[__deprecated__]] +16166: is_literal_type +16166: : public __bool_constant<__is_literal_type(_Tp)> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_empty +16166: : public __bool_constant<__is_empty(_Tp)> +16166: { }; +16166: +16166: +16166: template +16166: struct is_polymorphic +16166: : public __bool_constant<__is_polymorphic(_Tp)> +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: struct is_final +16166: : public __bool_constant<__is_final(_Tp)> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct is_abstract +16166: : public __bool_constant<__is_abstract(_Tp)> +16166: { }; +16166: +16166: +16166: template::value> +16166: struct __is_signed_helper +16166: : public false_type { }; +16166: +16166: template +16166: struct __is_signed_helper<_Tp, true> +16166: : public __bool_constant<_Tp(-1) < _Tp(0)> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct is_signed +16166: : public __is_signed_helper<_Tp>::type +16166: { }; +16166: +16166: +16166: template +16166: struct is_unsigned +16166: : public __and_, __not_>>::type +16166: { }; +16166: +16166: +16166: template +16166: _Up +16166: __declval(int); +16166: +16166: template +16166: _Tp +16166: __declval(long); +16166: +16166: +16166: template +16166: auto declval() noexcept -> decltype(__declval<_Tp>(0)); +16166: +16166: template +16166: struct remove_all_extents; +16166: +16166: +16166: template +16166: struct __is_array_known_bounds +16166: : public false_type +16166: { }; +16166: +16166: template +16166: struct __is_array_known_bounds<_Tp[_Size]> +16166: : public true_type +16166: { }; +16166: +16166: template +16166: struct __is_array_unknown_bounds +16166: : public false_type +16166: { }; +16166: +16166: template +16166: struct __is_array_unknown_bounds<_Tp[]> +16166: : public true_type +16166: { }; +16166: # 1006 "/usr/include/c++/14/type_traits" 3 +16166: struct __do_is_destructible_impl +16166: { +16166: template().~_Tp())> +16166: static true_type __test(int); +16166: +16166: template +16166: static false_type __test(...); +16166: }; +16166: +16166: template +16166: struct __is_destructible_impl +16166: : public __do_is_destructible_impl +16166: { +16166: using type = decltype(__test<_Tp>(0)); +16166: }; +16166: +16166: template, +16166: __is_array_unknown_bounds<_Tp>, +16166: is_function<_Tp>>::value, +16166: bool = __or_, is_scalar<_Tp>>::value> +16166: struct __is_destructible_safe; +16166: +16166: template +16166: struct __is_destructible_safe<_Tp, false, false> +16166: : public __is_destructible_impl::type>::type +16166: { }; +16166: +16166: template +16166: struct __is_destructible_safe<_Tp, true, false> +16166: : public false_type { }; +16166: +16166: template +16166: struct __is_destructible_safe<_Tp, false, true> +16166: : public true_type { }; +16166: +16166: +16166: +16166: template +16166: struct is_destructible +16166: : public __is_destructible_safe<_Tp>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct __do_is_nt_destructible_impl +16166: { +16166: template +16166: static __bool_constant().~_Tp())> +16166: __test(int); +16166: +16166: template +16166: static false_type __test(...); +16166: }; +16166: +16166: template +16166: struct __is_nt_destructible_impl +16166: : public __do_is_nt_destructible_impl +16166: { +16166: using type = decltype(__test<_Tp>(0)); +16166: }; +16166: +16166: template, +16166: __is_array_unknown_bounds<_Tp>, +16166: is_function<_Tp>>::value, +16166: bool = __or_, is_scalar<_Tp>>::value> +16166: struct __is_nt_destructible_safe; +16166: +16166: template +16166: struct __is_nt_destructible_safe<_Tp, false, false> +16166: : public __is_nt_destructible_impl::type>::type +16166: { }; +16166: +16166: template +16166: struct __is_nt_destructible_safe<_Tp, true, false> +16166: : public false_type { }; +16166: +16166: template +16166: struct __is_nt_destructible_safe<_Tp, false, true> +16166: : public true_type { }; +16166: +16166: +16166: +16166: template +16166: struct is_nothrow_destructible +16166: : public __is_nt_destructible_safe<_Tp>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: using __is_constructible_impl +16166: = __bool_constant<__is_constructible(_Tp, _Args...)>; +16166: +16166: +16166: +16166: template +16166: struct is_constructible +16166: : public __is_constructible_impl<_Tp, _Args...> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_default_constructible +16166: : public __is_constructible_impl<_Tp> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct __add_lvalue_reference_helper +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct __add_lvalue_reference_helper<_Tp, __void_t<_Tp&>> +16166: { using type = _Tp&; }; +16166: +16166: template +16166: using __add_lval_ref_t = typename __add_lvalue_reference_helper<_Tp>::type; +16166: +16166: +16166: +16166: template +16166: struct is_copy_constructible +16166: : public __is_constructible_impl<_Tp, __add_lval_ref_t> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct __add_rvalue_reference_helper +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct __add_rvalue_reference_helper<_Tp, __void_t<_Tp&&>> +16166: { using type = _Tp&&; }; +16166: +16166: template +16166: using __add_rval_ref_t = typename __add_rvalue_reference_helper<_Tp>::type; +16166: +16166: +16166: +16166: template +16166: struct is_move_constructible +16166: : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: using __is_nothrow_constructible_impl +16166: = __bool_constant<__is_nothrow_constructible(_Tp, _Args...)>; +16166: +16166: +16166: +16166: template +16166: struct is_nothrow_constructible +16166: : public __is_nothrow_constructible_impl<_Tp, _Args...> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_default_constructible +16166: : public __is_nothrow_constructible_impl<_Tp> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_copy_constructible +16166: : public __is_nothrow_constructible_impl<_Tp, __add_lval_ref_t> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_move_constructible +16166: : public __is_nothrow_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; +16166: +16166: +16166: +16166: template +16166: struct is_assignable +16166: : public __is_assignable_impl<_Tp, _Up> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_copy_assignable +16166: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, +16166: __add_lval_ref_t> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_move_assignable +16166: : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: using __is_nothrow_assignable_impl +16166: = __bool_constant<__is_nothrow_assignable(_Tp, _Up)>; +16166: +16166: +16166: +16166: template +16166: struct is_nothrow_assignable +16166: : public __is_nothrow_assignable_impl<_Tp, _Up> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_copy_assignable +16166: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, +16166: __add_lval_ref_t> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_move_assignable +16166: : public __is_nothrow_assignable_impl<__add_lval_ref_t<_Tp>, +16166: __add_rval_ref_t<_Tp>> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: using __is_trivially_constructible_impl +16166: = __bool_constant<__is_trivially_constructible(_Tp, _Args...)>; +16166: +16166: +16166: +16166: template +16166: struct is_trivially_constructible +16166: : public __is_trivially_constructible_impl<_Tp, _Args...> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_trivially_default_constructible +16166: : public __is_trivially_constructible_impl<_Tp> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: # 1319 "/usr/include/c++/14/type_traits" 3 +16166: struct __do_is_implicitly_default_constructible_impl +16166: { +16166: template +16166: static void __helper(const _Tp&); +16166: +16166: template +16166: static true_type __test(const _Tp&, +16166: decltype(__helper({}))* = 0); +16166: +16166: static false_type __test(...); +16166: }; +16166: +16166: template +16166: struct __is_implicitly_default_constructible_impl +16166: : public __do_is_implicitly_default_constructible_impl +16166: { +16166: using type = decltype(__test(declval<_Tp>())); +16166: }; +16166: +16166: template +16166: struct __is_implicitly_default_constructible_safe +16166: : public __is_implicitly_default_constructible_impl<_Tp>::type +16166: { }; +16166: +16166: template +16166: struct __is_implicitly_default_constructible +16166: : public __and_<__is_constructible_impl<_Tp>, +16166: __is_implicitly_default_constructible_safe<_Tp>>::type +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct is_trivially_copy_constructible +16166: : public __is_trivially_constructible_impl<_Tp, __add_lval_ref_t> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_trivially_move_constructible +16166: : public __is_trivially_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: using __is_trivially_assignable_impl +16166: = __bool_constant<__is_trivially_assignable(_Tp, _Up)>; +16166: +16166: +16166: +16166: template +16166: struct is_trivially_assignable +16166: : public __is_trivially_assignable_impl<_Tp, _Up> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_trivially_copy_assignable +16166: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, +16166: __add_lval_ref_t> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_trivially_move_assignable +16166: : public __is_trivially_assignable_impl<__add_lval_ref_t<_Tp>, +16166: __add_rval_ref_t<_Tp>> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_trivially_destructible +16166: : public __and_<__is_destructible_safe<_Tp>, +16166: __bool_constant<__has_trivial_destructor(_Tp)>>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: template +16166: struct has_virtual_destructor +16166: : public __bool_constant<__has_virtual_destructor(_Tp)> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct alignment_of +16166: : public integral_constant +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct rank +16166: : public integral_constant { }; +16166: +16166: template +16166: struct rank<_Tp[_Size]> +16166: : public integral_constant::value> { }; +16166: +16166: template +16166: struct rank<_Tp[]> +16166: : public integral_constant::value> { }; +16166: +16166: +16166: template +16166: struct extent +16166: : public integral_constant { }; +16166: +16166: template +16166: struct extent<_Tp[_Size], 0> +16166: : public integral_constant { }; +16166: +16166: template +16166: struct extent<_Tp[_Size], _Uint> +16166: : public extent<_Tp, _Uint - 1>::type { }; +16166: +16166: template +16166: struct extent<_Tp[], 0> +16166: : public integral_constant { }; +16166: +16166: template +16166: struct extent<_Tp[], _Uint> +16166: : public extent<_Tp, _Uint - 1>::type { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_same +16166: : public __bool_constant<__is_same(_Tp, _Up)> +16166: { }; +16166: # 1491 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct is_base_of +16166: : public __bool_constant<__is_base_of(_Base, _Derived)> +16166: { }; +16166: +16166: +16166: template +16166: struct is_convertible +16166: : public __bool_constant<__is_convertible(_From, _To)> +16166: { }; +16166: # 1540 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: using __is_array_convertible +16166: = is_convertible<_FromElementType(*)[], _ToElementType(*)[]>; +16166: # 1600 "/usr/include/c++/14/type_traits" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++14-extensions" +16166: template +16166: struct __is_nothrow_new_constructible_impl +16166: : __bool_constant< +16166: noexcept(::new(std::declval()) _Tp(std::declval<_Args>()...)) +16166: > +16166: { }; +16166: +16166: template +16166: inline constexpr bool __is_nothrow_new_constructible +16166: = __and_, +16166: __is_nothrow_new_constructible_impl<_Tp, _Args...>>::value; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: template +16166: struct remove_const +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct remove_const<_Tp const> +16166: { using type = _Tp; }; +16166: +16166: +16166: template +16166: struct remove_volatile +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct remove_volatile<_Tp volatile> +16166: { using type = _Tp; }; +16166: +16166: +16166: +16166: template +16166: struct remove_cv +16166: { using type = __remove_cv(_Tp); }; +16166: # 1659 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct add_const +16166: { using type = _Tp const; }; +16166: +16166: +16166: template +16166: struct add_volatile +16166: { using type = _Tp volatile; }; +16166: +16166: +16166: template +16166: struct add_cv +16166: { using type = _Tp const volatile; }; +16166: +16166: +16166: +16166: template +16166: using remove_const_t = typename remove_const<_Tp>::type; +16166: +16166: +16166: template +16166: using remove_volatile_t = typename remove_volatile<_Tp>::type; +16166: +16166: +16166: template +16166: using remove_cv_t = typename remove_cv<_Tp>::type; +16166: +16166: +16166: template +16166: using add_const_t = typename add_const<_Tp>::type; +16166: +16166: +16166: template +16166: using add_volatile_t = typename add_volatile<_Tp>::type; +16166: +16166: +16166: template +16166: using add_cv_t = typename add_cv<_Tp>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct remove_reference +16166: { using type = __remove_reference(_Tp); }; +16166: # 1721 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct add_lvalue_reference +16166: { using type = __add_lval_ref_t<_Tp>; }; +16166: +16166: +16166: template +16166: struct add_rvalue_reference +16166: { using type = __add_rval_ref_t<_Tp>; }; +16166: +16166: +16166: +16166: template +16166: using remove_reference_t = typename remove_reference<_Tp>::type; +16166: +16166: +16166: template +16166: using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; +16166: +16166: +16166: template +16166: using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __cv_selector; +16166: +16166: template +16166: struct __cv_selector<_Unqualified, false, false> +16166: { using __type = _Unqualified; }; +16166: +16166: template +16166: struct __cv_selector<_Unqualified, false, true> +16166: { using __type = volatile _Unqualified; }; +16166: +16166: template +16166: struct __cv_selector<_Unqualified, true, false> +16166: { using __type = const _Unqualified; }; +16166: +16166: template +16166: struct __cv_selector<_Unqualified, true, true> +16166: { using __type = const volatile _Unqualified; }; +16166: +16166: template::value, +16166: bool _IsVol = is_volatile<_Qualified>::value> +16166: class __match_cv_qualifiers +16166: { +16166: using __match = __cv_selector<_Unqualified, _IsConst, _IsVol>; +16166: +16166: public: +16166: using __type = typename __match::__type; +16166: }; +16166: +16166: +16166: template +16166: struct __make_unsigned +16166: { using __type = _Tp; }; +16166: +16166: template<> +16166: struct __make_unsigned +16166: { using __type = unsigned char; }; +16166: +16166: template<> +16166: struct __make_unsigned +16166: { using __type = unsigned char; }; +16166: +16166: template<> +16166: struct __make_unsigned +16166: { using __type = unsigned short; }; +16166: +16166: template<> +16166: struct __make_unsigned +16166: { using __type = unsigned int; }; +16166: +16166: template<> +16166: struct __make_unsigned +16166: { using __type = unsigned long; }; +16166: +16166: template<> +16166: struct __make_unsigned +16166: { using __type = unsigned long long; }; +16166: # 1834 "/usr/include/c++/14/type_traits" 3 +16166: template::value, +16166: bool _IsEnum = __is_enum(_Tp)> +16166: class __make_unsigned_selector; +16166: +16166: template +16166: class __make_unsigned_selector<_Tp, true, false> +16166: { +16166: using __unsigned_type +16166: = typename __make_unsigned<__remove_cv_t<_Tp>>::__type; +16166: +16166: public: +16166: using __type +16166: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; +16166: }; +16166: +16166: class __make_unsigned_selector_base +16166: { +16166: protected: +16166: template struct _List { }; +16166: +16166: template +16166: struct _List<_Tp, _Up...> : _List<_Up...> +16166: { static constexpr size_t __size = sizeof(_Tp); }; +16166: +16166: template +16166: struct __select; +16166: +16166: template +16166: struct __select<_Sz, _List<_Uint, _UInts...>, true> +16166: { using __type = _Uint; }; +16166: +16166: template +16166: struct __select<_Sz, _List<_Uint, _UInts...>, false> +16166: : __select<_Sz, _List<_UInts...>> +16166: { }; +16166: }; +16166: +16166: +16166: template +16166: class __make_unsigned_selector<_Tp, false, true> +16166: : __make_unsigned_selector_base +16166: { +16166: +16166: using _UInts = _List; +16166: +16166: using __unsigned_type = typename __select::__type; +16166: +16166: public: +16166: using __type +16166: = typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct __make_unsigned +16166: { +16166: using __type +16166: = typename __make_unsigned_selector::__type; +16166: }; +16166: # 1908 "/usr/include/c++/14/type_traits" 3 +16166: template<> +16166: struct __make_unsigned +16166: { +16166: using __type +16166: = typename __make_unsigned_selector::__type; +16166: }; +16166: +16166: template<> +16166: struct __make_unsigned +16166: { +16166: using __type +16166: = typename __make_unsigned_selector::__type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct make_unsigned +16166: { using type = typename __make_unsigned_selector<_Tp>::__type; }; +16166: +16166: +16166: template<> struct make_unsigned; +16166: template<> struct make_unsigned; +16166: template<> struct make_unsigned; +16166: template<> struct make_unsigned; +16166: +16166: +16166: +16166: +16166: template +16166: struct __make_signed +16166: { using __type = _Tp; }; +16166: +16166: template<> +16166: struct __make_signed +16166: { using __type = signed char; }; +16166: +16166: template<> +16166: struct __make_signed +16166: { using __type = signed char; }; +16166: +16166: template<> +16166: struct __make_signed +16166: { using __type = signed short; }; +16166: +16166: template<> +16166: struct __make_signed +16166: { using __type = signed int; }; +16166: +16166: template<> +16166: struct __make_signed +16166: { using __type = signed long; }; +16166: +16166: template<> +16166: struct __make_signed +16166: { using __type = signed long long; }; +16166: # 1994 "/usr/include/c++/14/type_traits" 3 +16166: template::value, +16166: bool _IsEnum = __is_enum(_Tp)> +16166: class __make_signed_selector; +16166: +16166: template +16166: class __make_signed_selector<_Tp, true, false> +16166: { +16166: using __signed_type +16166: = typename __make_signed<__remove_cv_t<_Tp>>::__type; +16166: +16166: public: +16166: using __type +16166: = typename __match_cv_qualifiers<_Tp, __signed_type>::__type; +16166: }; +16166: +16166: +16166: template +16166: class __make_signed_selector<_Tp, false, true> +16166: { +16166: using __unsigned_type = typename __make_unsigned_selector<_Tp>::__type; +16166: +16166: public: +16166: using __type = typename __make_signed_selector<__unsigned_type>::__type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct __make_signed +16166: { +16166: using __type +16166: = typename __make_signed_selector::__type; +16166: }; +16166: # 2040 "/usr/include/c++/14/type_traits" 3 +16166: template<> +16166: struct __make_signed +16166: { +16166: using __type +16166: = typename __make_signed_selector::__type; +16166: }; +16166: +16166: template<> +16166: struct __make_signed +16166: { +16166: using __type +16166: = typename __make_signed_selector::__type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct make_signed +16166: { using type = typename __make_signed_selector<_Tp>::__type; }; +16166: +16166: +16166: template<> struct make_signed; +16166: template<> struct make_signed; +16166: template<> struct make_signed; +16166: template<> struct make_signed; +16166: +16166: +16166: +16166: template +16166: using make_signed_t = typename make_signed<_Tp>::type; +16166: +16166: +16166: template +16166: using make_unsigned_t = typename make_unsigned<_Tp>::type; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct remove_extent +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct remove_extent<_Tp[_Size]> +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct remove_extent<_Tp[]> +16166: { using type = _Tp; }; +16166: +16166: +16166: template +16166: struct remove_all_extents +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct remove_all_extents<_Tp[_Size]> +16166: { using type = typename remove_all_extents<_Tp>::type; }; +16166: +16166: template +16166: struct remove_all_extents<_Tp[]> +16166: { using type = typename remove_all_extents<_Tp>::type; }; +16166: +16166: +16166: +16166: template +16166: using remove_extent_t = typename remove_extent<_Tp>::type; +16166: +16166: +16166: template +16166: using remove_all_extents_t = typename remove_all_extents<_Tp>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct remove_pointer +16166: { using type = __remove_pointer(_Tp); }; +16166: # 2139 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct __add_pointer_helper +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct __add_pointer_helper<_Tp, __void_t<_Tp*>> +16166: { using type = _Tp*; }; +16166: +16166: +16166: template +16166: struct add_pointer +16166: : public __add_pointer_helper<_Tp> +16166: { }; +16166: +16166: template +16166: struct add_pointer<_Tp&> +16166: { using type = _Tp*; }; +16166: +16166: template +16166: struct add_pointer<_Tp&&> +16166: { using type = _Tp*; }; +16166: +16166: +16166: +16166: template +16166: using remove_pointer_t = typename remove_pointer<_Tp>::type; +16166: +16166: +16166: template +16166: using add_pointer_t = typename add_pointer<_Tp>::type; +16166: +16166: +16166: template +16166: struct __aligned_storage_msa +16166: { +16166: union __type +16166: { +16166: unsigned char __data[_Len]; +16166: struct __attribute__((__aligned__)) { } __align; +16166: }; +16166: }; +16166: # 2194 "/usr/include/c++/14/type_traits" 3 +16166: template::__type)> +16166: struct +16166: +16166: aligned_storage +16166: { +16166: union type +16166: { +16166: unsigned char __data[_Len]; +16166: struct __attribute__((__aligned__((_Align)))) { } __align; +16166: }; +16166: }; +16166: +16166: template +16166: struct __strictest_alignment +16166: { +16166: static const size_t _S_alignment = 0; +16166: static const size_t _S_size = 0; +16166: }; +16166: +16166: template +16166: struct __strictest_alignment<_Tp, _Types...> +16166: { +16166: static const size_t _S_alignment = +16166: alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment +16166: ? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; +16166: static const size_t _S_size = +16166: sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size +16166: ? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; +16166: }; +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: # 2240 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct +16166: +16166: aligned_union +16166: { +16166: private: +16166: static_assert(sizeof...(_Types) != 0, "At least one type is required"); +16166: +16166: using __strictest = __strictest_alignment<_Types...>; +16166: static const size_t _S_len = _Len > __strictest::_S_size +16166: ? _Len : __strictest::_S_size; +16166: public: +16166: +16166: static const size_t alignment_value = __strictest::_S_alignment; +16166: +16166: using type = typename aligned_storage<_S_len, alignment_value>::type; +16166: }; +16166: +16166: template +16166: const size_t aligned_union<_Len, _Types...>::alignment_value; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __decay_selector +16166: : __conditional_t::value, +16166: remove_cv<_Up>, +16166: add_pointer<_Up>> +16166: { }; +16166: +16166: template +16166: struct __decay_selector<_Up[_Nm]> +16166: { using type = _Up*; }; +16166: +16166: template +16166: struct __decay_selector<_Up[]> +16166: { using type = _Up*; }; +16166: +16166: +16166: +16166: +16166: template +16166: struct decay +16166: { using type = typename __decay_selector<_Tp>::type; }; +16166: +16166: template +16166: struct decay<_Tp&> +16166: { using type = typename __decay_selector<_Tp>::type; }; +16166: +16166: template +16166: struct decay<_Tp&&> +16166: { using type = typename __decay_selector<_Tp>::type; }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __strip_reference_wrapper +16166: { +16166: using __type = _Tp; +16166: }; +16166: +16166: template +16166: struct __strip_reference_wrapper > +16166: { +16166: using __type = _Tp&; +16166: }; +16166: +16166: +16166: template +16166: using __decay_t = typename decay<_Tp>::type; +16166: +16166: template +16166: using __decay_and_strip = __strip_reference_wrapper<__decay_t<_Tp>>; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: using _Require = __enable_if_t<__and_<_Cond...>::value>; +16166: +16166: +16166: template +16166: using __remove_cvref_t +16166: = typename remove_cv::type>::type; +16166: +16166: +16166: +16166: +16166: template +16166: struct conditional +16166: { using type = _Iftrue; }; +16166: +16166: +16166: template +16166: struct conditional +16166: { using type = _Iffalse; }; +16166: +16166: +16166: template +16166: struct common_type; +16166: # 2355 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct __success_type +16166: { using type = _Tp; }; +16166: +16166: struct __failure_type +16166: { }; +16166: +16166: struct __do_common_type_impl +16166: { +16166: template +16166: using __cond_t +16166: = decltype(true ? std::declval<_Tp>() : std::declval<_Up>()); +16166: +16166: +16166: +16166: template +16166: static __success_type<__decay_t<__cond_t<_Tp, _Up>>> +16166: _S_test(int); +16166: # 2382 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: static __failure_type +16166: _S_test_2(...); +16166: +16166: template +16166: static decltype(_S_test_2<_Tp, _Up>(0)) +16166: _S_test(...); +16166: }; +16166: +16166: +16166: template<> +16166: struct common_type<> +16166: { }; +16166: +16166: +16166: template +16166: struct common_type<_Tp0> +16166: : public common_type<_Tp0, _Tp0> +16166: { }; +16166: +16166: +16166: template, typename _Dp2 = __decay_t<_Tp2>> +16166: struct __common_type_impl +16166: { +16166: +16166: +16166: using type = common_type<_Dp1, _Dp2>; +16166: }; +16166: +16166: template +16166: struct __common_type_impl<_Tp1, _Tp2, _Tp1, _Tp2> +16166: : private __do_common_type_impl +16166: { +16166: +16166: +16166: using type = decltype(_S_test<_Tp1, _Tp2>(0)); +16166: }; +16166: +16166: +16166: template +16166: struct common_type<_Tp1, _Tp2> +16166: : public __common_type_impl<_Tp1, _Tp2>::type +16166: { }; +16166: +16166: template +16166: struct __common_type_pack +16166: { }; +16166: +16166: template +16166: struct __common_type_fold; +16166: +16166: +16166: template +16166: struct common_type<_Tp1, _Tp2, _Rp...> +16166: : public __common_type_fold, +16166: __common_type_pack<_Rp...>> +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __common_type_fold<_CTp, __common_type_pack<_Rp...>, +16166: __void_t> +16166: : public common_type +16166: { }; +16166: +16166: +16166: template +16166: struct __common_type_fold<_CTp, _Rp, void> +16166: { }; +16166: +16166: template +16166: struct __underlying_type_impl +16166: { +16166: using type = __underlying_type(_Tp); +16166: }; +16166: +16166: template +16166: struct __underlying_type_impl<_Tp, false> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct underlying_type +16166: : public __underlying_type_impl<_Tp> +16166: { }; +16166: +16166: +16166: template +16166: struct __declval_protector +16166: { +16166: static const bool __stop = false; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: auto declval() noexcept -> decltype(__declval<_Tp>(0)) +16166: { +16166: static_assert(__declval_protector<_Tp>::__stop, +16166: "declval() must not be used!"); +16166: return __declval<_Tp>(0); +16166: } +16166: +16166: +16166: template +16166: struct result_of; +16166: +16166: +16166: +16166: +16166: struct __invoke_memfun_ref { }; +16166: struct __invoke_memfun_deref { }; +16166: struct __invoke_memobj_ref { }; +16166: struct __invoke_memobj_deref { }; +16166: struct __invoke_other { }; +16166: +16166: +16166: template +16166: struct __result_of_success : __success_type<_Tp> +16166: { using __invoke_type = _Tag; }; +16166: +16166: +16166: struct __result_of_memfun_ref_impl +16166: { +16166: template +16166: static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) +16166: ), __invoke_memfun_ref> _S_test(int); +16166: +16166: template +16166: static __failure_type _S_test(...); +16166: }; +16166: +16166: template +16166: struct __result_of_memfun_ref +16166: : private __result_of_memfun_ref_impl +16166: { +16166: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); +16166: }; +16166: +16166: +16166: struct __result_of_memfun_deref_impl +16166: { +16166: template +16166: static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) +16166: ), __invoke_memfun_deref> _S_test(int); +16166: +16166: template +16166: static __failure_type _S_test(...); +16166: }; +16166: +16166: template +16166: struct __result_of_memfun_deref +16166: : private __result_of_memfun_deref_impl +16166: { +16166: using type = decltype(_S_test<_MemPtr, _Arg, _Args...>(0)); +16166: }; +16166: +16166: +16166: struct __result_of_memobj_ref_impl +16166: { +16166: template +16166: static __result_of_success().*std::declval<_Fp>() +16166: ), __invoke_memobj_ref> _S_test(int); +16166: +16166: template +16166: static __failure_type _S_test(...); +16166: }; +16166: +16166: template +16166: struct __result_of_memobj_ref +16166: : private __result_of_memobj_ref_impl +16166: { +16166: using type = decltype(_S_test<_MemPtr, _Arg>(0)); +16166: }; +16166: +16166: +16166: struct __result_of_memobj_deref_impl +16166: { +16166: template +16166: static __result_of_success()).*std::declval<_Fp>() +16166: ), __invoke_memobj_deref> _S_test(int); +16166: +16166: template +16166: static __failure_type _S_test(...); +16166: }; +16166: +16166: template +16166: struct __result_of_memobj_deref +16166: : private __result_of_memobj_deref_impl +16166: { +16166: using type = decltype(_S_test<_MemPtr, _Arg>(0)); +16166: }; +16166: +16166: template +16166: struct __result_of_memobj; +16166: +16166: template +16166: struct __result_of_memobj<_Res _Class::*, _Arg> +16166: { +16166: using _Argval = __remove_cvref_t<_Arg>; +16166: using _MemPtr = _Res _Class::*; +16166: using type = typename __conditional_t<__or_, +16166: is_base_of<_Class, _Argval>>::value, +16166: __result_of_memobj_ref<_MemPtr, _Arg>, +16166: __result_of_memobj_deref<_MemPtr, _Arg> +16166: >::type; +16166: }; +16166: +16166: template +16166: struct __result_of_memfun; +16166: +16166: template +16166: struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> +16166: { +16166: using _Argval = typename remove_reference<_Arg>::type; +16166: using _MemPtr = _Res _Class::*; +16166: using type = typename __conditional_t::value, +16166: __result_of_memfun_ref<_MemPtr, _Arg, _Args...>, +16166: __result_of_memfun_deref<_MemPtr, _Arg, _Args...> +16166: >::type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: struct __inv_unwrap +16166: { +16166: using type = _Tp; +16166: }; +16166: +16166: template +16166: struct __inv_unwrap<_Tp, reference_wrapper<_Up>> +16166: { +16166: using type = _Up&; +16166: }; +16166: +16166: template +16166: struct __result_of_impl +16166: { +16166: using type = __failure_type; +16166: }; +16166: +16166: template +16166: struct __result_of_impl +16166: : public __result_of_memobj<__decay_t<_MemPtr>, +16166: typename __inv_unwrap<_Arg>::type> +16166: { }; +16166: +16166: template +16166: struct __result_of_impl +16166: : public __result_of_memfun<__decay_t<_MemPtr>, +16166: typename __inv_unwrap<_Arg>::type, _Args...> +16166: { }; +16166: +16166: +16166: struct __result_of_other_impl +16166: { +16166: template +16166: static __result_of_success()(std::declval<_Args>()...) +16166: ), __invoke_other> _S_test(int); +16166: +16166: template +16166: static __failure_type _S_test(...); +16166: }; +16166: +16166: template +16166: struct __result_of_impl +16166: : private __result_of_other_impl +16166: { +16166: using type = decltype(_S_test<_Functor, _ArgTypes...>(0)); +16166: }; +16166: +16166: +16166: template +16166: struct __invoke_result +16166: : public __result_of_impl< +16166: is_member_object_pointer< +16166: typename remove_reference<_Functor>::type +16166: >::value, +16166: is_member_function_pointer< +16166: typename remove_reference<_Functor>::type +16166: >::value, +16166: _Functor, _ArgTypes... +16166: >::type +16166: { }; +16166: +16166: +16166: template +16166: using __invoke_result_t = typename __invoke_result<_Fn, _Args...>::type; +16166: +16166: +16166: template +16166: struct result_of<_Functor(_ArgTypes...)> +16166: : public __invoke_result<_Functor, _ArgTypes...> +16166: { } __attribute__ ((__deprecated__ ("use '" "std::invoke_result" "' instead"))); +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: template::__type)> +16166: using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; +16166: +16166: template +16166: using aligned_union_t = typename aligned_union<_Len, _Types...>::type; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: template +16166: using decay_t = typename decay<_Tp>::type; +16166: +16166: +16166: template +16166: using enable_if_t = typename enable_if<_Cond, _Tp>::type; +16166: +16166: +16166: template +16166: using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; +16166: +16166: +16166: template +16166: using common_type_t = typename common_type<_Tp...>::type; +16166: +16166: +16166: template +16166: using underlying_type_t = typename underlying_type<_Tp>::type; +16166: +16166: +16166: template +16166: using result_of_t = typename result_of<_Tp>::type; +16166: +16166: +16166: +16166: +16166: template using void_t = void; +16166: # 2759 "/usr/include/c++/14/type_traits" 3 +16166: template class _Op, typename... _Args> +16166: struct __detector +16166: { +16166: using type = _Default; +16166: using __is_detected = false_type; +16166: }; +16166: +16166: +16166: template class _Op, +16166: typename... _Args> +16166: struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> +16166: { +16166: using type = _Op<_Args...>; +16166: using __is_detected = true_type; +16166: }; +16166: +16166: template class _Op, +16166: typename... _Args> +16166: using __detected_or = __detector<_Default, void, _Op, _Args...>; +16166: +16166: +16166: +16166: template class _Op, +16166: typename... _Args> +16166: using __detected_or_t +16166: = typename __detected_or<_Default, _Op, _Args...>::type; +16166: # 2801 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: struct __is_swappable; +16166: +16166: template +16166: struct __is_nothrow_swappable; +16166: +16166: template +16166: struct __is_tuple_like_impl : false_type +16166: { }; +16166: +16166: +16166: template +16166: struct __is_tuple_like +16166: : public __is_tuple_like_impl<__remove_cvref_t<_Tp>>::type +16166: { }; +16166: +16166: +16166: template +16166: +16166: inline +16166: _Require<__not_<__is_tuple_like<_Tp>>, +16166: is_move_constructible<_Tp>, +16166: is_move_assignable<_Tp>> +16166: swap(_Tp&, _Tp&) +16166: noexcept(__and_, +16166: is_nothrow_move_assignable<_Tp>>::value); +16166: +16166: template +16166: +16166: inline +16166: __enable_if_t<__is_swappable<_Tp>::value> +16166: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) +16166: noexcept(__is_nothrow_swappable<_Tp>::value); +16166: +16166: +16166: namespace __swappable_details { +16166: using std::swap; +16166: +16166: struct __do_is_swappable_impl +16166: { +16166: template(), std::declval<_Tp&>()))> +16166: static true_type __test(int); +16166: +16166: template +16166: static false_type __test(...); +16166: }; +16166: +16166: struct __do_is_nothrow_swappable_impl +16166: { +16166: template +16166: static __bool_constant< +16166: noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) +16166: > __test(int); +16166: +16166: template +16166: static false_type __test(...); +16166: }; +16166: +16166: } +16166: +16166: template +16166: struct __is_swappable_impl +16166: : public __swappable_details::__do_is_swappable_impl +16166: { +16166: using type = decltype(__test<_Tp>(0)); +16166: }; +16166: +16166: template +16166: struct __is_nothrow_swappable_impl +16166: : public __swappable_details::__do_is_nothrow_swappable_impl +16166: { +16166: using type = decltype(__test<_Tp>(0)); +16166: }; +16166: +16166: template +16166: struct __is_swappable +16166: : public __is_swappable_impl<_Tp>::type +16166: { }; +16166: +16166: template +16166: struct __is_nothrow_swappable +16166: : public __is_nothrow_swappable_impl<_Tp>::type +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_swappable +16166: : public __is_swappable_impl<_Tp>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_swappable +16166: : public __is_nothrow_swappable_impl<_Tp>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_swappable_v = +16166: is_swappable<_Tp>::value; +16166: +16166: +16166: template +16166: inline constexpr bool is_nothrow_swappable_v = +16166: is_nothrow_swappable<_Tp>::value; +16166: +16166: +16166: +16166: namespace __swappable_with_details { +16166: using std::swap; +16166: +16166: struct __do_is_swappable_with_impl +16166: { +16166: template(), std::declval<_Up>())), +16166: typename +16166: = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> +16166: static true_type __test(int); +16166: +16166: template +16166: static false_type __test(...); +16166: }; +16166: +16166: struct __do_is_nothrow_swappable_with_impl +16166: { +16166: template +16166: static __bool_constant< +16166: noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) +16166: && +16166: noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) +16166: > __test(int); +16166: +16166: template +16166: static false_type __test(...); +16166: }; +16166: +16166: } +16166: +16166: template +16166: struct __is_swappable_with_impl +16166: : public __swappable_with_details::__do_is_swappable_with_impl +16166: { +16166: using type = decltype(__test<_Tp, _Up>(0)); +16166: }; +16166: +16166: +16166: template +16166: struct __is_swappable_with_impl<_Tp&, _Tp&> +16166: : public __swappable_details::__do_is_swappable_impl +16166: { +16166: using type = decltype(__test<_Tp&>(0)); +16166: }; +16166: +16166: template +16166: struct __is_nothrow_swappable_with_impl +16166: : public __swappable_with_details::__do_is_nothrow_swappable_with_impl +16166: { +16166: using type = decltype(__test<_Tp, _Up>(0)); +16166: }; +16166: +16166: +16166: template +16166: struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> +16166: : public __swappable_details::__do_is_nothrow_swappable_impl +16166: { +16166: using type = decltype(__test<_Tp&>(0)); +16166: }; +16166: +16166: +16166: +16166: template +16166: struct is_swappable_with +16166: : public __is_swappable_with_impl<_Tp, _Up>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "first template argument must be a complete class or an unbounded array"); +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Up>{}), +16166: "second template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_swappable_with +16166: : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "first template argument must be a complete class or an unbounded array"); +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Up>{}), +16166: "second template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_swappable_with_v = +16166: is_swappable_with<_Tp, _Up>::value; +16166: +16166: +16166: template +16166: inline constexpr bool is_nothrow_swappable_with_v = +16166: is_nothrow_swappable_with<_Tp, _Up>::value; +16166: # 3023 "/usr/include/c++/14/type_traits" 3 +16166: template::value, typename = void> +16166: struct __is_invocable_impl +16166: : false_type +16166: { +16166: using __nothrow_conv = false_type; +16166: }; +16166: +16166: +16166: template +16166: struct __is_invocable_impl<_Result, _Ret, +16166: true, +16166: __void_t> +16166: : true_type +16166: { +16166: using __nothrow_conv = true_type; +16166: }; +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +16166: +16166: template +16166: struct __is_invocable_impl<_Result, _Ret, +16166: false, +16166: __void_t> +16166: { +16166: private: +16166: +16166: using _Res_t = typename _Result::type; +16166: +16166: +16166: +16166: static _Res_t _S_get() noexcept; +16166: +16166: +16166: template +16166: static void _S_conv(__type_identity_t<_Tp>) noexcept; +16166: +16166: +16166: template(_S_get())), +16166: typename = decltype(_S_conv<_Tp>(_S_get())), +16166: +16166: bool _Dangle = __reference_converts_from_temporary(_Tp, _Res_t) +16166: +16166: +16166: +16166: > +16166: static __bool_constant<_Nothrow && !_Dangle> +16166: _S_test(int); +16166: +16166: template +16166: static false_type +16166: _S_test(...); +16166: +16166: public: +16166: +16166: using type = decltype(_S_test<_Ret, true>(1)); +16166: +16166: +16166: using __nothrow_conv = decltype(_S_test<_Ret>(1)); +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: template +16166: struct __is_invocable +16166: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type +16166: { }; +16166: +16166: template +16166: constexpr bool __call_is_nt(__invoke_memfun_ref) +16166: { +16166: using _Up = typename __inv_unwrap<_Tp>::type; +16166: return noexcept((std::declval<_Up>().*std::declval<_Fn>())( +16166: std::declval<_Args>()...)); +16166: } +16166: +16166: template +16166: constexpr bool __call_is_nt(__invoke_memfun_deref) +16166: { +16166: return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( +16166: std::declval<_Args>()...)); +16166: } +16166: +16166: template +16166: constexpr bool __call_is_nt(__invoke_memobj_ref) +16166: { +16166: using _Up = typename __inv_unwrap<_Tp>::type; +16166: return noexcept(std::declval<_Up>().*std::declval<_Fn>()); +16166: } +16166: +16166: template +16166: constexpr bool __call_is_nt(__invoke_memobj_deref) +16166: { +16166: return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); +16166: } +16166: +16166: template +16166: constexpr bool __call_is_nt(__invoke_other) +16166: { +16166: return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); +16166: } +16166: +16166: template +16166: struct __call_is_nothrow +16166: : __bool_constant< +16166: std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) +16166: > +16166: { }; +16166: +16166: template +16166: using __call_is_nothrow_ +16166: = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; +16166: +16166: +16166: template +16166: struct __is_nothrow_invocable +16166: : __and_<__is_invocable<_Fn, _Args...>, +16166: __call_is_nothrow_<_Fn, _Args...>>::type +16166: { }; +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wctor-dtor-privacy" +16166: struct __nonesuchbase {}; +16166: struct __nonesuch : private __nonesuchbase { +16166: ~__nonesuch() = delete; +16166: __nonesuch(__nonesuch const&) = delete; +16166: void operator=(__nonesuch const&) = delete; +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: template +16166: struct invoke_result +16166: : public __invoke_result<_Functor, _ArgTypes...> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Functor>{}), +16166: "_Functor must be a complete class or an unbounded array"); +16166: static_assert((std::__is_complete_or_unbounded( +16166: __type_identity<_ArgTypes>{}) && ...), +16166: "each argument type must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: using invoke_result_t = typename invoke_result<_Fn, _Args...>::type; +16166: +16166: +16166: template +16166: struct is_invocable +16166: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +16166: "_Fn must be a complete class or an unbounded array"); +16166: static_assert((std::__is_complete_or_unbounded( +16166: __type_identity<_ArgTypes>{}) && ...), +16166: "each argument type must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_invocable_r +16166: : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +16166: "_Fn must be a complete class or an unbounded array"); +16166: static_assert((std::__is_complete_or_unbounded( +16166: __type_identity<_ArgTypes>{}) && ...), +16166: "each argument type must be a complete class or an unbounded array"); +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{}), +16166: "_Ret must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: template +16166: struct is_nothrow_invocable +16166: : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>, +16166: __call_is_nothrow_<_Fn, _ArgTypes...>>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +16166: "_Fn must be a complete class or an unbounded array"); +16166: static_assert((std::__is_complete_or_unbounded( +16166: __type_identity<_ArgTypes>{}) && ...), +16166: "each argument type must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: using __is_nt_invocable_impl +16166: = typename __is_invocable_impl<_Result, _Ret>::__nothrow_conv; +16166: +16166: +16166: +16166: template +16166: struct is_nothrow_invocable_r +16166: : __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>, +16166: __call_is_nothrow_<_Fn, _ArgTypes...>>::type +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{}), +16166: "_Fn must be a complete class or an unbounded array"); +16166: static_assert((std::__is_complete_or_unbounded( +16166: __type_identity<_ArgTypes>{}) && ...), +16166: "each argument type must be a complete class or an unbounded array"); +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{}), +16166: "_Ret must be a complete class or an unbounded array"); +16166: }; +16166: # 3251 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: inline constexpr bool is_void_v = is_void<_Tp>::value; +16166: template +16166: inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; +16166: template +16166: inline constexpr bool is_integral_v = is_integral<_Tp>::value; +16166: template +16166: inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; +16166: +16166: +16166: template +16166: inline constexpr bool is_array_v = __is_array(_Tp); +16166: # 3272 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: inline constexpr bool is_pointer_v = is_pointer<_Tp>::value; +16166: template +16166: inline constexpr bool is_lvalue_reference_v = false; +16166: template +16166: inline constexpr bool is_lvalue_reference_v<_Tp&> = true; +16166: template +16166: inline constexpr bool is_rvalue_reference_v = false; +16166: template +16166: inline constexpr bool is_rvalue_reference_v<_Tp&&> = true; +16166: +16166: +16166: template +16166: inline constexpr bool is_member_object_pointer_v = +16166: __is_member_object_pointer(_Tp); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_member_function_pointer_v = +16166: __is_member_function_pointer(_Tp); +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_enum_v = __is_enum(_Tp); +16166: template +16166: inline constexpr bool is_union_v = __is_union(_Tp); +16166: template +16166: inline constexpr bool is_class_v = __is_class(_Tp); +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_reference_v = __is_reference(_Tp); +16166: # 3323 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; +16166: template +16166: inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; +16166: +16166: +16166: template +16166: inline constexpr bool is_object_v = __is_object(_Tp); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_scalar_v = is_scalar<_Tp>::value; +16166: template +16166: inline constexpr bool is_compound_v = !is_fundamental_v<_Tp>; +16166: +16166: +16166: template +16166: inline constexpr bool is_member_pointer_v = __is_member_pointer(_Tp); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_const_v = false; +16166: template +16166: inline constexpr bool is_const_v = true; +16166: +16166: +16166: template +16166: inline constexpr bool is_function_v = __is_function(_Tp); +16166: # 3366 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: inline constexpr bool is_volatile_v = false; +16166: template +16166: inline constexpr bool is_volatile_v = true; +16166: +16166: template +16166: inline constexpr bool is_trivial_v = __is_trivial(_Tp); +16166: template +16166: inline constexpr bool is_trivially_copyable_v = __is_trivially_copyable(_Tp); +16166: template +16166: inline constexpr bool is_standard_layout_v = __is_standard_layout(_Tp); +16166: template +16166: +16166: inline constexpr bool is_pod_v = __is_pod(_Tp); +16166: template +16166: [[__deprecated__]] +16166: inline constexpr bool is_literal_type_v = __is_literal_type(_Tp); +16166: template +16166: inline constexpr bool is_empty_v = __is_empty(_Tp); +16166: template +16166: inline constexpr bool is_polymorphic_v = __is_polymorphic(_Tp); +16166: template +16166: inline constexpr bool is_abstract_v = __is_abstract(_Tp); +16166: template +16166: inline constexpr bool is_final_v = __is_final(_Tp); +16166: +16166: template +16166: inline constexpr bool is_signed_v = is_signed<_Tp>::value; +16166: template +16166: inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; +16166: +16166: template +16166: inline constexpr bool is_constructible_v = __is_constructible(_Tp, _Args...); +16166: template +16166: inline constexpr bool is_default_constructible_v = __is_constructible(_Tp); +16166: template +16166: inline constexpr bool is_copy_constructible_v +16166: = __is_constructible(_Tp, __add_lval_ref_t); +16166: template +16166: inline constexpr bool is_move_constructible_v +16166: = __is_constructible(_Tp, __add_rval_ref_t<_Tp>); +16166: +16166: template +16166: inline constexpr bool is_assignable_v = __is_assignable(_Tp, _Up); +16166: template +16166: inline constexpr bool is_copy_assignable_v +16166: = __is_assignable(__add_lval_ref_t<_Tp>, __add_lval_ref_t); +16166: template +16166: inline constexpr bool is_move_assignable_v +16166: = __is_assignable(__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>); +16166: +16166: template +16166: inline constexpr bool is_destructible_v = is_destructible<_Tp>::value; +16166: +16166: template +16166: inline constexpr bool is_trivially_constructible_v +16166: = __is_trivially_constructible(_Tp, _Args...); +16166: template +16166: inline constexpr bool is_trivially_default_constructible_v +16166: = __is_trivially_constructible(_Tp); +16166: template +16166: inline constexpr bool is_trivially_copy_constructible_v +16166: = __is_trivially_constructible(_Tp, __add_lval_ref_t); +16166: template +16166: inline constexpr bool is_trivially_move_constructible_v +16166: = __is_trivially_constructible(_Tp, __add_rval_ref_t<_Tp>); +16166: +16166: template +16166: inline constexpr bool is_trivially_assignable_v +16166: = __is_trivially_assignable(_Tp, _Up); +16166: template +16166: inline constexpr bool is_trivially_copy_assignable_v +16166: = __is_trivially_assignable(__add_lval_ref_t<_Tp>, +16166: __add_lval_ref_t); +16166: template +16166: inline constexpr bool is_trivially_move_assignable_v +16166: = __is_trivially_assignable(__add_lval_ref_t<_Tp>, +16166: __add_rval_ref_t<_Tp>); +16166: # 3461 "/usr/include/c++/14/type_traits" 3 +16166: template +16166: inline constexpr bool is_trivially_destructible_v = +16166: is_trivially_destructible<_Tp>::value; +16166: +16166: +16166: template +16166: inline constexpr bool is_nothrow_constructible_v +16166: = __is_nothrow_constructible(_Tp, _Args...); +16166: template +16166: inline constexpr bool is_nothrow_default_constructible_v +16166: = __is_nothrow_constructible(_Tp); +16166: template +16166: inline constexpr bool is_nothrow_copy_constructible_v +16166: = __is_nothrow_constructible(_Tp, __add_lval_ref_t); +16166: template +16166: inline constexpr bool is_nothrow_move_constructible_v +16166: = __is_nothrow_constructible(_Tp, __add_rval_ref_t<_Tp>); +16166: +16166: template +16166: inline constexpr bool is_nothrow_assignable_v +16166: = __is_nothrow_assignable(_Tp, _Up); +16166: template +16166: inline constexpr bool is_nothrow_copy_assignable_v +16166: = __is_nothrow_assignable(__add_lval_ref_t<_Tp>, +16166: __add_lval_ref_t); +16166: template +16166: inline constexpr bool is_nothrow_move_assignable_v +16166: = __is_nothrow_assignable(__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>); +16166: +16166: template +16166: inline constexpr bool is_nothrow_destructible_v = +16166: is_nothrow_destructible<_Tp>::value; +16166: +16166: template +16166: inline constexpr bool has_virtual_destructor_v +16166: = __has_virtual_destructor(_Tp); +16166: +16166: template +16166: inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value; +16166: +16166: template +16166: inline constexpr size_t rank_v = 0; +16166: template +16166: inline constexpr size_t rank_v<_Tp[_Size]> = 1 + rank_v<_Tp>; +16166: template +16166: inline constexpr size_t rank_v<_Tp[]> = 1 + rank_v<_Tp>; +16166: +16166: template +16166: inline constexpr size_t extent_v = 0; +16166: template +16166: inline constexpr size_t extent_v<_Tp[_Size], 0> = _Size; +16166: template +16166: inline constexpr size_t extent_v<_Tp[_Size], _Idx> = extent_v<_Tp, _Idx - 1>; +16166: template +16166: inline constexpr size_t extent_v<_Tp[], 0> = 0; +16166: template +16166: inline constexpr size_t extent_v<_Tp[], _Idx> = extent_v<_Tp, _Idx - 1>; +16166: +16166: +16166: template +16166: inline constexpr bool is_same_v = __is_same(_Tp, _Up); +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_base_of_v = __is_base_of(_Base, _Derived); +16166: +16166: template +16166: inline constexpr bool is_convertible_v = __is_convertible(_From, _To); +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; +16166: template +16166: inline constexpr bool is_nothrow_invocable_v +16166: = is_nothrow_invocable<_Fn, _Args...>::value; +16166: template +16166: inline constexpr bool is_invocable_r_v +16166: = is_invocable_r<_Ret, _Fn, _Args...>::value; +16166: template +16166: inline constexpr bool is_nothrow_invocable_r_v +16166: = is_nothrow_invocable_r<_Ret, _Fn, _Args...>::value; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct has_unique_object_representations +16166: : bool_constant<__has_unique_object_representations( +16166: remove_cv_t> +16166: )> +16166: { +16166: static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}), +16166: "template argument must be a complete class or an unbounded array"); +16166: }; +16166: +16166: +16166: +16166: template +16166: inline constexpr bool has_unique_object_representations_v +16166: = has_unique_object_representations<_Tp>::value; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_aggregate +16166: : bool_constant<__is_aggregate(remove_cv_t<_Tp>)> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr bool is_aggregate_v = __is_aggregate(remove_cv_t<_Tp>); +16166: # 4017 "/usr/include/c++/14/type_traits" 3 +16166: +16166: } +16166: # 38 "/usr/include/c++/14/bits/move.h" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline constexpr _Tp* +16166: __addressof(_Tp& __r) noexcept +16166: { return __builtin_addressof(__r); } +16166: # 68 "/usr/include/c++/14/bits/move.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: constexpr _Tp&& +16166: forward(typename std::remove_reference<_Tp>::type& __t) noexcept +16166: { return static_cast<_Tp&&>(__t); } +16166: # 81 "/usr/include/c++/14/bits/move.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: constexpr _Tp&& +16166: forward(typename std::remove_reference<_Tp>::type&& __t) noexcept +16166: { +16166: static_assert(!std::is_lvalue_reference<_Tp>::value, +16166: "std::forward must not be used to convert an rvalue to an lvalue"); +16166: return static_cast<_Tp&&>(__t); +16166: } +16166: # 134 "/usr/include/c++/14/bits/move.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: constexpr typename std::remove_reference<_Tp>::type&& +16166: move(_Tp&& __t) noexcept +16166: { return static_cast::type&&>(__t); } +16166: +16166: +16166: template +16166: struct __move_if_noexcept_cond +16166: : public __and_<__not_>, +16166: is_copy_constructible<_Tp>>::type { }; +16166: # 155 "/usr/include/c++/14/bits/move.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: constexpr +16166: __conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&> +16166: move_if_noexcept(_Tp& __x) noexcept +16166: { return std::move(__x); } +16166: # 172 "/usr/include/c++/14/bits/move.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr _Tp* +16166: addressof(_Tp& __r) noexcept +16166: { return std::__addressof(__r); } +16166: +16166: +16166: +16166: template +16166: const _Tp* addressof(const _Tp&&) = delete; +16166: +16166: +16166: template +16166: +16166: inline _Tp +16166: __exchange(_Tp& __obj, _Up&& __new_val) +16166: { +16166: _Tp __old_val = std::move(__obj); +16166: __obj = std::forward<_Up>(__new_val); +16166: return __old_val; +16166: } +16166: # 216 "/usr/include/c++/14/bits/move.h" 3 +16166: template +16166: +16166: inline +16166: +16166: typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, +16166: is_move_constructible<_Tp>, +16166: is_move_assignable<_Tp>>::value>::type +16166: +16166: +16166: +16166: swap(_Tp& __a, _Tp& __b) +16166: noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value) +16166: +16166: { +16166: +16166: +16166: +16166: +16166: _Tp __tmp = std::move(__a); +16166: __a = std::move(__b); +16166: __b = std::move(__tmp); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline +16166: +16166: typename enable_if<__is_swappable<_Tp>::value>::type +16166: +16166: +16166: +16166: swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) +16166: noexcept(__is_nothrow_swappable<_Tp>::value) +16166: { +16166: for (size_t __n = 0; __n < _Nm; ++__n) +16166: swap(__a[__n], __b[__n]); +16166: } +16166: +16166: +16166: +16166: } +16166: # 40 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +16166: # 49 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 50 "/usr/include/c++/14/bits/atomic_base.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 81 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: enum memory_order : int +16166: { +16166: memory_order_relaxed, +16166: memory_order_consume, +16166: memory_order_acquire, +16166: memory_order_release, +16166: memory_order_acq_rel, +16166: memory_order_seq_cst +16166: }; +16166: +16166: +16166: +16166: enum __memory_order_modifier +16166: { +16166: __memory_order_mask = 0x0ffff, +16166: __memory_order_modifier_mask = 0xffff0000, +16166: __memory_order_hle_acquire = 0x10000, +16166: __memory_order_hle_release = 0x20000 +16166: }; +16166: +16166: +16166: constexpr memory_order +16166: operator|(memory_order __m, __memory_order_modifier __mod) noexcept +16166: { +16166: return memory_order(int(__m) | int(__mod)); +16166: } +16166: +16166: constexpr memory_order +16166: operator&(memory_order __m, __memory_order_modifier __mod) noexcept +16166: { +16166: return memory_order(int(__m) & int(__mod)); +16166: } +16166: +16166: +16166: +16166: +16166: constexpr memory_order +16166: __cmpexch_failure_order2(memory_order __m) noexcept +16166: { +16166: return __m == memory_order_acq_rel ? memory_order_acquire +16166: : __m == memory_order_release ? memory_order_relaxed : __m; +16166: } +16166: +16166: constexpr memory_order +16166: __cmpexch_failure_order(memory_order __m) noexcept +16166: { +16166: return memory_order(__cmpexch_failure_order2(__m & __memory_order_mask) +16166: | __memory_order_modifier(__m & __memory_order_modifier_mask)); +16166: } +16166: +16166: constexpr bool +16166: __is_valid_cmpexch_failure_order(memory_order __m) noexcept +16166: { +16166: return (__m & __memory_order_mask) != memory_order_release +16166: && (__m & __memory_order_mask) != memory_order_acq_rel; +16166: } +16166: +16166: +16166: template +16166: struct __atomic_base; +16166: +16166: +16166: +16166: inline __attribute__((__always_inline__)) void +16166: atomic_thread_fence(memory_order __m) noexcept +16166: { __atomic_thread_fence(int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) void +16166: atomic_signal_fence(memory_order __m) noexcept +16166: { __atomic_signal_fence(int(__m)); } +16166: +16166: +16166: template +16166: inline _Tp +16166: kill_dependency(_Tp __y) noexcept +16166: { +16166: _Tp __ret(__y); +16166: return __ret; +16166: } +16166: # 171 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: template +16166: struct atomic; +16166: +16166: template +16166: struct atomic<_Tp*>; +16166: +16166: +16166: +16166: typedef bool __atomic_flag_data_type; +16166: # 196 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: extern "C" { +16166: +16166: struct __atomic_flag_base +16166: { +16166: __atomic_flag_data_type _M_i ; +16166: }; +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct atomic_flag : public __atomic_flag_base +16166: { +16166: atomic_flag() noexcept = default; +16166: ~atomic_flag() noexcept = default; +16166: atomic_flag(const atomic_flag&) = delete; +16166: atomic_flag& operator=(const atomic_flag&) = delete; +16166: atomic_flag& operator=(const atomic_flag&) volatile = delete; +16166: +16166: +16166: constexpr atomic_flag(bool __i) noexcept +16166: : __atomic_flag_base{ _S_init(__i) } +16166: { } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: test_and_set(memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: return __atomic_test_and_set (&_M_i, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: return __atomic_test_and_set (&_M_i, int(__m)); +16166: } +16166: # 280 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: inline __attribute__((__always_inline__)) void +16166: clear(memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __atomic_clear (&_M_i, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) void +16166: clear(memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __atomic_clear (&_M_i, int(__m)); +16166: } +16166: +16166: private: +16166: static constexpr __atomic_flag_data_type +16166: _S_init(bool __i) +16166: { return __i ? 1 : 0; } +16166: }; +16166: # 336 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: template +16166: struct __atomic_base +16166: { +16166: using value_type = _ITp; +16166: using difference_type = value_type; +16166: +16166: private: +16166: typedef _ITp __int_type; +16166: +16166: static constexpr int _S_alignment = +16166: sizeof(_ITp) > alignof(_ITp) ? sizeof(_ITp) : alignof(_ITp); +16166: +16166: alignas(_S_alignment) __int_type _M_i ; +16166: +16166: public: +16166: __atomic_base() noexcept = default; +16166: ~__atomic_base() noexcept = default; +16166: __atomic_base(const __atomic_base&) = delete; +16166: __atomic_base& operator=(const __atomic_base&) = delete; +16166: __atomic_base& operator=(const __atomic_base&) volatile = delete; +16166: +16166: +16166: constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { } +16166: +16166: operator __int_type() const noexcept +16166: { return load(); } +16166: +16166: operator __int_type() const volatile noexcept +16166: { return load(); } +16166: +16166: __int_type +16166: operator=(__int_type __i) noexcept +16166: { +16166: store(__i); +16166: return __i; +16166: } +16166: +16166: __int_type +16166: operator=(__int_type __i) volatile noexcept +16166: { +16166: store(__i); +16166: return __i; +16166: } +16166: +16166: __int_type +16166: operator++(int) noexcept +16166: { return fetch_add(1); } +16166: +16166: __int_type +16166: operator++(int) volatile noexcept +16166: { return fetch_add(1); } +16166: +16166: __int_type +16166: operator--(int) noexcept +16166: { return fetch_sub(1); } +16166: +16166: __int_type +16166: operator--(int) volatile noexcept +16166: { return fetch_sub(1); } +16166: +16166: __int_type +16166: operator++() noexcept +16166: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator++() volatile noexcept +16166: { return __atomic_add_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator--() noexcept +16166: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator--() volatile noexcept +16166: { return __atomic_sub_fetch(&_M_i, 1, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator+=(__int_type __i) noexcept +16166: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator+=(__int_type __i) volatile noexcept +16166: { return __atomic_add_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator-=(__int_type __i) noexcept +16166: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator-=(__int_type __i) volatile noexcept +16166: { return __atomic_sub_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator&=(__int_type __i) noexcept +16166: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator&=(__int_type __i) volatile noexcept +16166: { return __atomic_and_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator|=(__int_type __i) noexcept +16166: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator|=(__int_type __i) volatile noexcept +16166: { return __atomic_or_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator^=(__int_type __i) noexcept +16166: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: __int_type +16166: operator^=(__int_type __i) volatile noexcept +16166: { return __atomic_xor_fetch(&_M_i, __i, int(memory_order_seq_cst)); } +16166: +16166: bool +16166: is_lock_free() const noexcept +16166: { +16166: +16166: return __atomic_is_lock_free(sizeof(_M_i), +16166: reinterpret_cast(-_S_alignment)); +16166: } +16166: +16166: bool +16166: is_lock_free() const volatile noexcept +16166: { +16166: +16166: return __atomic_is_lock_free(sizeof(_M_i), +16166: reinterpret_cast(-_S_alignment)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) void +16166: store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __atomic_store_n(&_M_i, __i, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) void +16166: store(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __atomic_store_n(&_M_i, __i, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: load(memory_order __m = memory_order_seq_cst) const noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_load_n(&_M_i, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_load_n(&_M_i, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: exchange(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: return __atomic_exchange_n(&_M_i, __i, int(__m)); +16166: } +16166: +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: exchange(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: return __atomic_exchange_n(&_M_i, __i, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_weak(__int_type& __i1, __int_type __i2, +16166: memory_order __m1, memory_order __m2) noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, +16166: int(__m1), int(__m2)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_weak(__int_type& __i1, __int_type __i2, +16166: memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, +16166: int(__m1), int(__m2)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_weak(__int_type& __i1, __int_type __i2, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: return compare_exchange_weak(__i1, __i2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_weak(__int_type& __i1, __int_type __i2, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: return compare_exchange_weak(__i1, __i2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_strong(__int_type& __i1, __int_type __i2, +16166: memory_order __m1, memory_order __m2) noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, +16166: int(__m1), int(__m2)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_strong(__int_type& __i1, __int_type __i2, +16166: memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, +16166: int(__m1), int(__m2)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_strong(__int_type& __i1, __int_type __i2, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: return compare_exchange_strong(__i1, __i2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_strong(__int_type& __i1, __int_type __i2, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: return compare_exchange_strong(__i1, __i2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: # 628 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_add(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_add(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return __atomic_fetch_add(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_sub(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_sub(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return __atomic_fetch_sub(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_and(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_and(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return __atomic_fetch_and(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_or(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_or(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return __atomic_fetch_or(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_xor(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __int_type +16166: fetch_xor(__int_type __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return __atomic_fetch_xor(&_M_i, __i, int(__m)); } +16166: }; +16166: +16166: +16166: +16166: template +16166: struct __atomic_base<_PTp*> +16166: { +16166: private: +16166: typedef _PTp* __pointer_type; +16166: +16166: __pointer_type _M_p ; +16166: +16166: +16166: constexpr ptrdiff_t +16166: _M_type_size(ptrdiff_t __d) const { return __d * sizeof(_PTp); } +16166: +16166: constexpr ptrdiff_t +16166: _M_type_size(ptrdiff_t __d) const volatile { return __d * sizeof(_PTp); } +16166: +16166: public: +16166: __atomic_base() noexcept = default; +16166: ~__atomic_base() noexcept = default; +16166: __atomic_base(const __atomic_base&) = delete; +16166: __atomic_base& operator=(const __atomic_base&) = delete; +16166: __atomic_base& operator=(const __atomic_base&) volatile = delete; +16166: +16166: +16166: constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { } +16166: +16166: operator __pointer_type() const noexcept +16166: { return load(); } +16166: +16166: operator __pointer_type() const volatile noexcept +16166: { return load(); } +16166: +16166: __pointer_type +16166: operator=(__pointer_type __p) noexcept +16166: { +16166: store(__p); +16166: return __p; +16166: } +16166: +16166: __pointer_type +16166: operator=(__pointer_type __p) volatile noexcept +16166: { +16166: store(__p); +16166: return __p; +16166: } +16166: +16166: __pointer_type +16166: operator++(int) noexcept +16166: { return fetch_add(1); } +16166: +16166: __pointer_type +16166: operator++(int) volatile noexcept +16166: { return fetch_add(1); } +16166: +16166: __pointer_type +16166: operator--(int) noexcept +16166: { return fetch_sub(1); } +16166: +16166: __pointer_type +16166: operator--(int) volatile noexcept +16166: { return fetch_sub(1); } +16166: +16166: __pointer_type +16166: operator++() noexcept +16166: { return __atomic_add_fetch(&_M_p, _M_type_size(1), +16166: int(memory_order_seq_cst)); } +16166: +16166: __pointer_type +16166: operator++() volatile noexcept +16166: { return __atomic_add_fetch(&_M_p, _M_type_size(1), +16166: int(memory_order_seq_cst)); } +16166: +16166: __pointer_type +16166: operator--() noexcept +16166: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), +16166: int(memory_order_seq_cst)); } +16166: +16166: __pointer_type +16166: operator--() volatile noexcept +16166: { return __atomic_sub_fetch(&_M_p, _M_type_size(1), +16166: int(memory_order_seq_cst)); } +16166: +16166: __pointer_type +16166: operator+=(ptrdiff_t __d) noexcept +16166: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), +16166: int(memory_order_seq_cst)); } +16166: +16166: __pointer_type +16166: operator+=(ptrdiff_t __d) volatile noexcept +16166: { return __atomic_add_fetch(&_M_p, _M_type_size(__d), +16166: int(memory_order_seq_cst)); } +16166: +16166: __pointer_type +16166: operator-=(ptrdiff_t __d) noexcept +16166: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), +16166: int(memory_order_seq_cst)); } +16166: +16166: __pointer_type +16166: operator-=(ptrdiff_t __d) volatile noexcept +16166: { return __atomic_sub_fetch(&_M_p, _M_type_size(__d), +16166: int(memory_order_seq_cst)); } +16166: +16166: bool +16166: is_lock_free() const noexcept +16166: { +16166: +16166: return __atomic_is_lock_free(sizeof(_M_p), +16166: reinterpret_cast(-__alignof(_M_p))); +16166: } +16166: +16166: bool +16166: is_lock_free() const volatile noexcept +16166: { +16166: +16166: return __atomic_is_lock_free(sizeof(_M_p), +16166: reinterpret_cast(-__alignof(_M_p))); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) void +16166: store(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __atomic_store_n(&_M_p, __p, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) void +16166: store(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acquire)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_consume)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __atomic_store_n(&_M_p, __p, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: load(memory_order __m = memory_order_seq_cst) const noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_load_n(&_M_p, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +16166: { +16166: memory_order __b __attribute__ ((__unused__)) +16166: = __m & __memory_order_mask; +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_release)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(__b != memory_order_acq_rel)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_load_n(&_M_p, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: exchange(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: return __atomic_exchange_n(&_M_p, __p, int(__m)); +16166: } +16166: +16166: +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: exchange(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: return __atomic_exchange_n(&_M_p, __p, int(__m)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, +16166: memory_order __m2) noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, +16166: int(__m1), int(__m2)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1, +16166: int(__m1), int(__m2)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, +16166: memory_order __m2) noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, +16166: int(__m1), int(__m2)); +16166: } +16166: +16166: inline __attribute__((__always_inline__)) bool +16166: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__m2))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, +16166: int(__m1), int(__m2)); +16166: } +16166: # 931 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: fetch_add(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: fetch_add(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return __atomic_fetch_add(&_M_p, _M_type_size(__d), int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: fetch_sub(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } +16166: +16166: inline __attribute__((__always_inline__)) __pointer_type +16166: fetch_sub(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return __atomic_fetch_sub(&_M_p, _M_type_size(__d), int(__m)); } +16166: }; +16166: +16166: namespace __atomic_impl +16166: { +16166: +16166: +16166: template +16166: constexpr bool +16166: __maybe_has_padding() +16166: { +16166: +16166: +16166: +16166: return !__has_unique_object_representations(_Tp) +16166: && !is_same<_Tp, float>::value && !is_same<_Tp, double>::value; +16166: +16166: +16166: +16166: } +16166: +16166: template +16166: inline __attribute__((__always_inline__)) constexpr _Tp* +16166: __clear_padding(_Tp& __val) noexcept +16166: { +16166: auto* __ptr = std::__addressof(__val); +16166: +16166: if constexpr (__atomic_impl::__maybe_has_padding<_Tp>()) +16166: __builtin_clear_padding(__ptr); +16166: +16166: return __ptr; +16166: } +16166: +16166: +16166: template +16166: using _Val = typename remove_volatile<_Tp>::type; +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: +16166: template +16166: inline __attribute__((__always_inline__)) bool +16166: __compare_exchange(_Tp& __val, _Val<_Tp>& __e, _Val<_Tp>& __i, +16166: bool __is_weak, +16166: memory_order __s, memory_order __f) noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__is_valid_cmpexch_failure_order(__f))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: using _Vp = _Val<_Tp>; +16166: _Tp* const __pval = std::__addressof(__val); +16166: +16166: if constexpr (!__atomic_impl::__maybe_has_padding<_Vp>()) +16166: { +16166: return __atomic_compare_exchange(__pval, std::__addressof(__e), +16166: std::__addressof(__i), __is_weak, +16166: int(__s), int(__f)); +16166: } +16166: else if constexpr (!_AtomicRef) +16166: { +16166: +16166: _Vp* const __pi = __atomic_impl::__clear_padding(__i); +16166: +16166: _Vp __exp = __e; +16166: +16166: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); +16166: +16166: +16166: +16166: if (__atomic_compare_exchange(__pval, __pexp, __pi, +16166: __is_weak, int(__s), int(__f))) +16166: return true; +16166: +16166: __builtin_memcpy(std::__addressof(__e), __pexp, sizeof(_Vp)); +16166: return false; +16166: } +16166: else +16166: { +16166: +16166: _Vp* const __pi = __atomic_impl::__clear_padding(__i); +16166: +16166: +16166: _Vp __exp = __e; +16166: +16166: +16166: _Vp* const __pexp = __atomic_impl::__clear_padding(__exp); +16166: # 1045 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: while (true) +16166: { +16166: +16166: _Vp __orig = __exp; +16166: +16166: if (__atomic_compare_exchange(__pval, __pexp, __pi, +16166: __is_weak, int(__s), int(__f))) +16166: return true; +16166: +16166: +16166: _Vp __curr = __exp; +16166: +16166: +16166: if (__builtin_memcmp(__atomic_impl::__clear_padding(__orig), +16166: __atomic_impl::__clear_padding(__curr), +16166: sizeof(_Vp))) +16166: { +16166: +16166: __builtin_memcpy(std::__addressof(__e), __pexp, +16166: sizeof(_Vp)); +16166: return false; +16166: } +16166: } +16166: } +16166: } +16166: #pragma GCC diagnostic pop +16166: } +16166: # 2065 "/usr/include/c++/14/bits/atomic_base.h" 3 +16166: +16166: } +16166: # 51 "/usr/include/c++/14/atomic" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct atomic; +16166: +16166: +16166: +16166: template<> +16166: struct atomic +16166: { +16166: using value_type = bool; +16166: +16166: private: +16166: __atomic_base _M_base; +16166: +16166: public: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(bool __i) noexcept : _M_base(__i) { } +16166: +16166: bool +16166: operator=(bool __i) noexcept +16166: { return _M_base.operator=(__i); } +16166: +16166: bool +16166: operator=(bool __i) volatile noexcept +16166: { return _M_base.operator=(__i); } +16166: +16166: operator bool() const noexcept +16166: { return _M_base.load(); } +16166: +16166: operator bool() const volatile noexcept +16166: { return _M_base.load(); } +16166: +16166: bool +16166: is_lock_free() const noexcept { return _M_base.is_lock_free(); } +16166: +16166: bool +16166: is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); } +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: +16166: void +16166: store(bool __i, memory_order __m = memory_order_seq_cst) noexcept +16166: { _M_base.store(__i, __m); } +16166: +16166: void +16166: store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { _M_base.store(__i, __m); } +16166: +16166: bool +16166: load(memory_order __m = memory_order_seq_cst) const noexcept +16166: { return _M_base.load(__m); } +16166: +16166: bool +16166: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +16166: { return _M_base.load(__m); } +16166: +16166: bool +16166: exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept +16166: { return _M_base.exchange(__i, __m); } +16166: +16166: bool +16166: exchange(bool __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return _M_base.exchange(__i, __m); } +16166: +16166: bool +16166: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, +16166: memory_order __m2) noexcept +16166: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_weak(bool& __i1, bool __i2, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } +16166: +16166: bool +16166: compare_exchange_weak(bool& __i1, bool __i2, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return _M_base.compare_exchange_weak(__i1, __i2, __m); } +16166: +16166: bool +16166: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, +16166: memory_order __m2) noexcept +16166: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_strong(bool& __i1, bool __i2, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } +16166: +16166: bool +16166: compare_exchange_strong(bool& __i1, bool __i2, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return _M_base.compare_exchange_strong(__i1, __i2, __m); } +16166: # 187 "/usr/include/c++/14/atomic" 3 +16166: }; +16166: # 202 "/usr/include/c++/14/atomic" 3 +16166: template +16166: struct atomic +16166: { +16166: using value_type = _Tp; +16166: +16166: private: +16166: +16166: static constexpr int _S_min_alignment +16166: = (sizeof(_Tp) & (sizeof(_Tp) - 1)) || sizeof(_Tp) > 16 +16166: ? 0 : sizeof(_Tp); +16166: +16166: static constexpr int _S_alignment +16166: = _S_min_alignment > alignof(_Tp) ? _S_min_alignment : alignof(_Tp); +16166: +16166: alignas(_S_alignment) _Tp _M_i ; +16166: +16166: static_assert(__is_trivially_copyable(_Tp), +16166: "std::atomic requires a trivially copyable type"); +16166: +16166: static_assert(sizeof(_Tp) > 0, +16166: "Incomplete or zero-sized types are not supported"); +16166: # 231 "/usr/include/c++/14/atomic" 3 +16166: public: +16166: atomic() = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(_Tp __i) noexcept : _M_i(__i) +16166: { +16166: +16166: if constexpr (__atomic_impl::__maybe_has_padding<_Tp>()) +16166: __builtin_clear_padding(std::__addressof(_M_i)); +16166: +16166: } +16166: +16166: operator _Tp() const noexcept +16166: { return load(); } +16166: +16166: operator _Tp() const volatile noexcept +16166: { return load(); } +16166: +16166: _Tp +16166: operator=(_Tp __i) noexcept +16166: { store(__i); return __i; } +16166: +16166: _Tp +16166: operator=(_Tp __i) volatile noexcept +16166: { store(__i); return __i; } +16166: +16166: bool +16166: is_lock_free() const noexcept +16166: { +16166: +16166: return __atomic_is_lock_free(sizeof(_M_i), +16166: reinterpret_cast(-_S_alignment)); +16166: } +16166: +16166: bool +16166: is_lock_free() const volatile noexcept +16166: { +16166: +16166: return __atomic_is_lock_free(sizeof(_M_i), +16166: reinterpret_cast(-_S_alignment)); +16166: } +16166: +16166: +16166: static constexpr bool is_always_lock_free +16166: = __atomic_always_lock_free(sizeof(_M_i), 0); +16166: +16166: +16166: void +16166: store(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: __atomic_store(std::__addressof(_M_i), +16166: __atomic_impl::__clear_padding(__i), +16166: int(__m)); +16166: } +16166: +16166: void +16166: store(_Tp __i, memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: __atomic_store(std::__addressof(_M_i), +16166: __atomic_impl::__clear_padding(__i), +16166: int(__m)); +16166: } +16166: +16166: _Tp +16166: load(memory_order __m = memory_order_seq_cst) const noexcept +16166: { +16166: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +16166: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +16166: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); +16166: return *__ptr; +16166: } +16166: +16166: _Tp +16166: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +16166: { +16166: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +16166: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +16166: __atomic_load(std::__addressof(_M_i), __ptr, int(__m)); +16166: return *__ptr; +16166: } +16166: +16166: _Tp +16166: exchange(_Tp __i, memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +16166: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +16166: __atomic_exchange(std::__addressof(_M_i), +16166: __atomic_impl::__clear_padding(__i), +16166: __ptr, int(__m)); +16166: return *__ptr; +16166: } +16166: +16166: _Tp +16166: exchange(_Tp __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: alignas(_Tp) unsigned char __buf[sizeof(_Tp)]; +16166: _Tp* __ptr = reinterpret_cast<_Tp*>(__buf); +16166: __atomic_exchange(std::__addressof(_M_i), +16166: __atomic_impl::__clear_padding(__i), +16166: __ptr, int(__m)); +16166: return *__ptr; +16166: } +16166: +16166: bool +16166: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, +16166: memory_order __f) noexcept +16166: { +16166: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, +16166: __s, __f); +16166: } +16166: +16166: bool +16166: compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s, +16166: memory_order __f) volatile noexcept +16166: { +16166: return __atomic_impl::__compare_exchange(_M_i, __e, __i, true, +16166: __s, __f); +16166: } +16166: +16166: bool +16166: compare_exchange_weak(_Tp& __e, _Tp __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return compare_exchange_weak(__e, __i, __m, +16166: __cmpexch_failure_order(__m)); } +16166: +16166: bool +16166: compare_exchange_weak(_Tp& __e, _Tp __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return compare_exchange_weak(__e, __i, __m, +16166: __cmpexch_failure_order(__m)); } +16166: +16166: bool +16166: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, +16166: memory_order __f) noexcept +16166: { +16166: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, +16166: __s, __f); +16166: } +16166: +16166: bool +16166: compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s, +16166: memory_order __f) volatile noexcept +16166: { +16166: return __atomic_impl::__compare_exchange(_M_i, __e, __i, false, +16166: __s, __f); +16166: } +16166: +16166: bool +16166: compare_exchange_strong(_Tp& __e, _Tp __i, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return compare_exchange_strong(__e, __i, __m, +16166: __cmpexch_failure_order(__m)); } +16166: +16166: bool +16166: compare_exchange_strong(_Tp& __e, _Tp __i, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return compare_exchange_strong(__e, __i, __m, +16166: __cmpexch_failure_order(__m)); } +16166: # 413 "/usr/include/c++/14/atomic" 3 +16166: }; +16166: +16166: +16166: +16166: template +16166: struct atomic<_Tp*> +16166: { +16166: using value_type = _Tp*; +16166: using difference_type = ptrdiff_t; +16166: +16166: typedef _Tp* __pointer_type; +16166: typedef __atomic_base<_Tp*> __base_type; +16166: __base_type _M_b; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { } +16166: +16166: operator __pointer_type() const noexcept +16166: { return __pointer_type(_M_b); } +16166: +16166: operator __pointer_type() const volatile noexcept +16166: { return __pointer_type(_M_b); } +16166: +16166: __pointer_type +16166: operator=(__pointer_type __p) noexcept +16166: { return _M_b.operator=(__p); } +16166: +16166: __pointer_type +16166: operator=(__pointer_type __p) volatile noexcept +16166: { return _M_b.operator=(__p); } +16166: +16166: __pointer_type +16166: operator++(int) noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b++; +16166: } +16166: +16166: __pointer_type +16166: operator++(int) volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b++; +16166: } +16166: +16166: __pointer_type +16166: operator--(int) noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b--; +16166: } +16166: +16166: __pointer_type +16166: operator--(int) volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b--; +16166: } +16166: +16166: __pointer_type +16166: operator++() noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return ++_M_b; +16166: } +16166: +16166: __pointer_type +16166: operator++() volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return ++_M_b; +16166: } +16166: +16166: __pointer_type +16166: operator--() noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return --_M_b; +16166: } +16166: +16166: __pointer_type +16166: operator--() volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return --_M_b; +16166: } +16166: +16166: __pointer_type +16166: operator+=(ptrdiff_t __d) noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.operator+=(__d); +16166: } +16166: +16166: __pointer_type +16166: operator+=(ptrdiff_t __d) volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.operator+=(__d); +16166: } +16166: +16166: __pointer_type +16166: operator-=(ptrdiff_t __d) noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.operator-=(__d); +16166: } +16166: +16166: __pointer_type +16166: operator-=(ptrdiff_t __d) volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.operator-=(__d); +16166: } +16166: +16166: bool +16166: is_lock_free() const noexcept +16166: { return _M_b.is_lock_free(); } +16166: +16166: bool +16166: is_lock_free() const volatile noexcept +16166: { return _M_b.is_lock_free(); } +16166: +16166: +16166: static constexpr bool is_always_lock_free +16166: = 2 == 2; +16166: +16166: +16166: void +16166: store(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return _M_b.store(__p, __m); } +16166: +16166: void +16166: store(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return _M_b.store(__p, __m); } +16166: +16166: __pointer_type +16166: load(memory_order __m = memory_order_seq_cst) const noexcept +16166: { return _M_b.load(__m); } +16166: +16166: __pointer_type +16166: load(memory_order __m = memory_order_seq_cst) const volatile noexcept +16166: { return _M_b.load(__m); } +16166: +16166: __pointer_type +16166: exchange(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { return _M_b.exchange(__p, __m); } +16166: +16166: __pointer_type +16166: exchange(__pointer_type __p, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { return _M_b.exchange(__p, __m); } +16166: +16166: bool +16166: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, memory_order __m2) noexcept +16166: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: return compare_exchange_weak(__p1, __p2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: +16166: bool +16166: compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: return compare_exchange_weak(__p1, __p2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: +16166: bool +16166: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, memory_order __m2) noexcept +16166: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m1, +16166: memory_order __m2) volatile noexcept +16166: { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); } +16166: +16166: bool +16166: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: return _M_b.compare_exchange_strong(__p1, __p2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: +16166: bool +16166: compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: return _M_b.compare_exchange_strong(__p1, __p2, __m, +16166: __cmpexch_failure_order(__m)); +16166: } +16166: # 668 "/usr/include/c++/14/atomic" 3 +16166: __pointer_type +16166: fetch_add(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.fetch_add(__d, __m); +16166: } +16166: +16166: __pointer_type +16166: fetch_add(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.fetch_add(__d, __m); +16166: } +16166: +16166: __pointer_type +16166: fetch_sub(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.fetch_sub(__d, __m); +16166: } +16166: +16166: __pointer_type +16166: fetch_sub(ptrdiff_t __d, +16166: memory_order __m = memory_order_seq_cst) volatile noexcept +16166: { +16166: +16166: static_assert( is_object<_Tp>::value, "pointer to object type" ); +16166: +16166: return _M_b.fetch_sub(__d, __m); +16166: } +16166: }; +16166: +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef char __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef signed char __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept= default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef unsigned char __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept= default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef short __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef unsigned short __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef int __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef unsigned int __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef long __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef unsigned long __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef long long __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef unsigned long long __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef wchar_t __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free = 2 == 2; +16166: +16166: }; +16166: # 1013 "/usr/include/c++/14/atomic" 3 +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef char16_t __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free +16166: = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: template<> +16166: struct atomic : __atomic_base +16166: { +16166: typedef char32_t __integral_type; +16166: typedef __atomic_base __base_type; +16166: +16166: atomic() noexcept = default; +16166: ~atomic() noexcept = default; +16166: atomic(const atomic&) = delete; +16166: atomic& operator=(const atomic&) = delete; +16166: atomic& operator=(const atomic&) volatile = delete; +16166: +16166: constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { } +16166: +16166: using __base_type::operator __integral_type; +16166: using __base_type::operator=; +16166: +16166: +16166: static constexpr bool is_always_lock_free +16166: = 2 == 2; +16166: +16166: }; +16166: +16166: +16166: +16166: typedef atomic atomic_bool; +16166: +16166: +16166: typedef atomic atomic_char; +16166: +16166: +16166: typedef atomic atomic_schar; +16166: +16166: +16166: typedef atomic atomic_uchar; +16166: +16166: +16166: typedef atomic atomic_short; +16166: +16166: +16166: typedef atomic atomic_ushort; +16166: +16166: +16166: typedef atomic atomic_int; +16166: +16166: +16166: typedef atomic atomic_uint; +16166: +16166: +16166: typedef atomic atomic_long; +16166: +16166: +16166: typedef atomic atomic_ulong; +16166: +16166: +16166: typedef atomic atomic_llong; +16166: +16166: +16166: typedef atomic atomic_ullong; +16166: +16166: +16166: typedef atomic atomic_wchar_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef atomic atomic_char16_t; +16166: +16166: +16166: typedef atomic atomic_char32_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef atomic atomic_int8_t; +16166: +16166: +16166: typedef atomic atomic_uint8_t; +16166: +16166: +16166: typedef atomic atomic_int16_t; +16166: +16166: +16166: typedef atomic atomic_uint16_t; +16166: +16166: +16166: typedef atomic atomic_int32_t; +16166: +16166: +16166: typedef atomic atomic_uint32_t; +16166: +16166: +16166: typedef atomic atomic_int64_t; +16166: +16166: +16166: typedef atomic atomic_uint64_t; +16166: +16166: +16166: +16166: typedef atomic atomic_int_least8_t; +16166: +16166: +16166: typedef atomic atomic_uint_least8_t; +16166: +16166: +16166: typedef atomic atomic_int_least16_t; +16166: +16166: +16166: typedef atomic atomic_uint_least16_t; +16166: +16166: +16166: typedef atomic atomic_int_least32_t; +16166: +16166: +16166: typedef atomic atomic_uint_least32_t; +16166: +16166: +16166: typedef atomic atomic_int_least64_t; +16166: +16166: +16166: typedef atomic atomic_uint_least64_t; +16166: +16166: +16166: +16166: typedef atomic atomic_int_fast8_t; +16166: +16166: +16166: typedef atomic atomic_uint_fast8_t; +16166: +16166: +16166: typedef atomic atomic_int_fast16_t; +16166: +16166: +16166: typedef atomic atomic_uint_fast16_t; +16166: +16166: +16166: typedef atomic atomic_int_fast32_t; +16166: +16166: +16166: typedef atomic atomic_uint_fast32_t; +16166: +16166: +16166: typedef atomic atomic_int_fast64_t; +16166: +16166: +16166: typedef atomic atomic_uint_fast64_t; +16166: +16166: +16166: +16166: typedef atomic atomic_intptr_t; +16166: +16166: +16166: typedef atomic atomic_uintptr_t; +16166: +16166: +16166: typedef atomic atomic_size_t; +16166: +16166: +16166: typedef atomic atomic_ptrdiff_t; +16166: +16166: +16166: typedef atomic atomic_intmax_t; +16166: +16166: +16166: typedef atomic atomic_uintmax_t; +16166: +16166: +16166: inline bool +16166: atomic_flag_test_and_set_explicit(atomic_flag* __a, +16166: memory_order __m) noexcept +16166: { return __a->test_and_set(__m); } +16166: +16166: inline bool +16166: atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, +16166: memory_order __m) noexcept +16166: { return __a->test_and_set(__m); } +16166: # 1239 "/usr/include/c++/14/atomic" 3 +16166: inline void +16166: atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept +16166: { __a->clear(__m); } +16166: +16166: inline void +16166: atomic_flag_clear_explicit(volatile atomic_flag* __a, +16166: memory_order __m) noexcept +16166: { __a->clear(__m); } +16166: +16166: inline bool +16166: atomic_flag_test_and_set(atomic_flag* __a) noexcept +16166: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } +16166: +16166: inline bool +16166: atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept +16166: { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); } +16166: +16166: inline void +16166: atomic_flag_clear(atomic_flag* __a) noexcept +16166: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } +16166: +16166: inline void +16166: atomic_flag_clear(volatile atomic_flag* __a) noexcept +16166: { atomic_flag_clear_explicit(__a, memory_order_seq_cst); } +16166: # 1286 "/usr/include/c++/14/atomic" 3 +16166: template +16166: using __atomic_val_t = __type_identity_t<_Tp>; +16166: template +16166: using __atomic_diff_t = typename atomic<_Tp>::difference_type; +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: atomic_is_lock_free(const atomic<_ITp>* __a) noexcept +16166: { return __a->is_lock_free(); } +16166: +16166: template +16166: inline bool +16166: atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept +16166: { return __a->is_lock_free(); } +16166: +16166: template +16166: inline void +16166: atomic_init(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +16166: { __a->store(__i, memory_order_relaxed); } +16166: +16166: template +16166: inline void +16166: atomic_init(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +16166: { __a->store(__i, memory_order_relaxed); } +16166: +16166: template +16166: inline void +16166: atomic_store_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { __a->store(__i, __m); } +16166: +16166: template +16166: inline void +16166: atomic_store_explicit(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { __a->store(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept +16166: { return __a->load(__m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_load_explicit(const volatile atomic<_ITp>* __a, +16166: memory_order __m) noexcept +16166: { return __a->load(__m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_exchange_explicit(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->exchange(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_exchange_explicit(volatile atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->exchange(__i, __m); } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2, +16166: memory_order __m1, +16166: memory_order __m2) noexcept +16166: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2, +16166: memory_order __m1, +16166: memory_order __m2) noexcept +16166: { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2, +16166: memory_order __m1, +16166: memory_order __m2) noexcept +16166: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2, +16166: memory_order __m1, +16166: memory_order __m2) noexcept +16166: { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } +16166: +16166: +16166: template +16166: inline void +16166: atomic_store(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +16166: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline void +16166: atomic_store(volatile atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +16166: { atomic_store_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_load(const atomic<_ITp>* __a) noexcept +16166: { return atomic_load_explicit(__a, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_load(const volatile atomic<_ITp>* __a) noexcept +16166: { return atomic_load_explicit(__a, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_exchange(atomic<_ITp>* __a, __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_exchange(volatile atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_weak(atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2) noexcept +16166: { +16166: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, +16166: memory_order_seq_cst, +16166: memory_order_seq_cst); +16166: } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_weak(volatile atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2) noexcept +16166: { +16166: return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, +16166: memory_order_seq_cst, +16166: memory_order_seq_cst); +16166: } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_strong(atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2) noexcept +16166: { +16166: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, +16166: memory_order_seq_cst, +16166: memory_order_seq_cst); +16166: } +16166: +16166: template +16166: inline bool +16166: atomic_compare_exchange_strong(volatile atomic<_ITp>* __a, +16166: __atomic_val_t<_ITp>* __i1, +16166: __atomic_val_t<_ITp> __i2) noexcept +16166: { +16166: return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, +16166: memory_order_seq_cst, +16166: memory_order_seq_cst); +16166: } +16166: # 1492 "/usr/include/c++/14/atomic" 3 +16166: template +16166: inline _ITp +16166: atomic_fetch_add_explicit(atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_add(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_add_explicit(volatile atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_add(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_sub_explicit(atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_sub(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_sub_explicit(volatile atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_sub(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_and(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_and(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_or(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_or(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_xor(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i, +16166: memory_order __m) noexcept +16166: { return __a->fetch_xor(__i, __m); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_add(atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i) noexcept +16166: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_add(volatile atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i) noexcept +16166: { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_sub(atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i) noexcept +16166: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_sub(volatile atomic<_ITp>* __a, +16166: __atomic_diff_t<_ITp> __i) noexcept +16166: { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_and(__atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_and(volatile __atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_or(__atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_or(volatile __atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_xor(__atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } +16166: +16166: template +16166: inline _ITp +16166: atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, +16166: __atomic_val_t<_ITp> __i) noexcept +16166: { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } +16166: # 1793 "/usr/include/c++/14/atomic" 3 +16166: +16166: } +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/usr/include/c++/14/deque" 1 3 +16166: # 58 "/usr/include/c++/14/deque" 3 +16166: +16166: # 59 "/usr/include/c++/14/deque" 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/requires_hosted.h" 1 3 +16166: # 61 "/usr/include/c++/14/deque" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_algobase.h" 1 3 +16166: # 60 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: # 1 "/usr/include/c++/14/bits/functexcept.h" 1 3 +16166: # 40 "/usr/include/c++/14/bits/functexcept.h" 3 +16166: # 1 "/usr/include/c++/14/bits/exception_defines.h" 1 3 +16166: # 41 "/usr/include/c++/14/bits/functexcept.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: void +16166: __throw_bad_exception(void) __attribute__((__noreturn__)); +16166: +16166: +16166: void +16166: __throw_bad_alloc(void) __attribute__((__noreturn__)); +16166: +16166: void +16166: __throw_bad_array_new_length(void) __attribute__((__noreturn__)); +16166: +16166: +16166: void +16166: __throw_bad_cast(void) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_bad_typeid(void) __attribute__((__noreturn__,__cold__)); +16166: +16166: +16166: void +16166: __throw_logic_error(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_domain_error(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_invalid_argument(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_length_error(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_out_of_range(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__,__cold__)) +16166: __attribute__((__format__(__gnu_printf__, 1, 2))); +16166: +16166: void +16166: __throw_runtime_error(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_range_error(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_overflow_error(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_underflow_error(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: +16166: void +16166: __throw_ios_failure(const char*) __attribute__((__noreturn__,__cold__)); +16166: +16166: void +16166: __throw_ios_failure(const char*, int) __attribute__((__noreturn__,__cold__)); +16166: +16166: +16166: void +16166: __throw_system_error(int) __attribute__((__noreturn__,__cold__)); +16166: +16166: +16166: void +16166: __throw_future_error(int) __attribute__((__noreturn__,__cold__)); +16166: +16166: +16166: void +16166: __throw_bad_function_call() __attribute__((__noreturn__,__cold__)); +16166: # 140 "/usr/include/c++/14/bits/functexcept.h" 3 +16166: +16166: } +16166: # 61 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/cpp_type_traits.h" 1 3 +16166: # 35 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: +16166: # 36 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 39 "/usr/include/c++/14/bits/cpp_type_traits.h" 2 3 +16166: # 68 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: extern "C++" { +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: struct __true_type { }; +16166: struct __false_type { }; +16166: +16166: template +16166: struct __truth_type +16166: { typedef __false_type __type; }; +16166: +16166: template<> +16166: struct __truth_type +16166: { typedef __true_type __type; }; +16166: +16166: +16166: +16166: template +16166: struct __traitor +16166: { +16166: enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; +16166: typedef typename __truth_type<__value>::__type __type; +16166: }; +16166: +16166: +16166: template +16166: struct __are_same +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: template +16166: struct __are_same<_Tp, _Tp> +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: template +16166: struct __is_void +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_void +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_integer +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: # 185 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_integer +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: # 290 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: template +16166: struct __is_floating +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: +16166: template<> +16166: struct __is_floating +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_floating +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_floating +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: # 367 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: template +16166: struct __is_pointer +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: template +16166: struct __is_pointer<_Tp*> +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_arithmetic +16166: : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_scalar +16166: : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_char +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_char +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: template<> +16166: struct __is_char +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: template +16166: struct __is_byte +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_byte +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_byte +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template<> +16166: struct __is_byte +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: +16166: enum class byte : unsigned char; +16166: +16166: template<> +16166: struct __is_byte +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: # 471 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: template struct iterator_traits; +16166: +16166: +16166: template +16166: struct __is_nonvolatile_trivially_copyable +16166: { +16166: enum { __value = __is_trivially_copyable(_Tp) }; +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_nonvolatile_trivially_copyable +16166: { +16166: enum { __value = 0 }; +16166: }; +16166: +16166: +16166: template +16166: struct __memcpyable +16166: { +16166: enum { __value = 0 }; +16166: }; +16166: +16166: template +16166: struct __memcpyable<_Tp*, _Tp*> +16166: : __is_nonvolatile_trivially_copyable<_Tp> +16166: { }; +16166: +16166: template +16166: struct __memcpyable<_Tp*, const _Tp*> +16166: : __is_nonvolatile_trivially_copyable<_Tp> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __memcmpable +16166: { +16166: enum { __value = 0 }; +16166: }; +16166: +16166: +16166: template +16166: struct __memcmpable<_Tp*, _Tp*> +16166: : __is_nonvolatile_trivially_copyable<_Tp> +16166: { }; +16166: +16166: template +16166: struct __memcmpable +16166: : __is_nonvolatile_trivially_copyable<_Tp> +16166: { }; +16166: +16166: template +16166: struct __memcmpable<_Tp*, const _Tp*> +16166: : __is_nonvolatile_trivially_copyable<_Tp> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template::__value +16166: +16166: > +16166: struct __is_memcmp_ordered +16166: { +16166: static const bool __value = _Tp(-1) > _Tp(1); +16166: }; +16166: +16166: template +16166: struct __is_memcmp_ordered<_Tp, false> +16166: { +16166: static const bool __value = false; +16166: }; +16166: +16166: +16166: template +16166: struct __is_memcmp_ordered_with +16166: { +16166: static const bool __value = __is_memcmp_ordered<_Tp>::__value +16166: && __is_memcmp_ordered<_Up>::__value; +16166: }; +16166: +16166: template +16166: struct __is_memcmp_ordered_with<_Tp, _Up, false> +16166: { +16166: static const bool __value = false; +16166: }; +16166: # 580 "/usr/include/c++/14/bits/cpp_type_traits.h" 3 +16166: template<> +16166: struct __is_memcmp_ordered_with +16166: { static constexpr bool __value = true; }; +16166: +16166: template +16166: struct __is_memcmp_ordered_with<_Tp, std::byte, _SameSize> +16166: { static constexpr bool __value = false; }; +16166: +16166: template +16166: struct __is_memcmp_ordered_with +16166: { static constexpr bool __value = false; }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_move_iterator +16166: { +16166: enum { __value = 0 }; +16166: typedef __false_type __type; +16166: }; +16166: +16166: +16166: +16166: template +16166: +16166: inline _Iterator +16166: __miter_base(_Iterator __it) +16166: { return __it; } +16166: +16166: +16166: } +16166: } +16166: # 62 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: # 1 "/usr/include/c++/14/ext/type_traits.h" 1 3 +16166: # 32 "/usr/include/c++/14/ext/type_traits.h" 3 +16166: +16166: # 33 "/usr/include/c++/14/ext/type_traits.h" 3 +16166: +16166: +16166: +16166: +16166: extern "C++" { +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: struct __enable_if +16166: { }; +16166: +16166: template +16166: struct __enable_if +16166: { typedef _Tp __type; }; +16166: +16166: +16166: +16166: template +16166: struct __conditional_type +16166: { typedef _Iftrue __type; }; +16166: +16166: template +16166: struct __conditional_type +16166: { typedef _Iffalse __type; }; +16166: +16166: +16166: +16166: template +16166: struct __add_unsigned +16166: { +16166: private: +16166: typedef __enable_if::__value, _Tp> __if_type; +16166: +16166: public: +16166: typedef typename __if_type::__type __type; +16166: }; +16166: +16166: template<> +16166: struct __add_unsigned +16166: { typedef unsigned char __type; }; +16166: +16166: template<> +16166: struct __add_unsigned +16166: { typedef unsigned char __type; }; +16166: +16166: template<> +16166: struct __add_unsigned +16166: { typedef unsigned short __type; }; +16166: +16166: template<> +16166: struct __add_unsigned +16166: { typedef unsigned int __type; }; +16166: +16166: template<> +16166: struct __add_unsigned +16166: { typedef unsigned long __type; }; +16166: +16166: template<> +16166: struct __add_unsigned +16166: { typedef unsigned long long __type; }; +16166: +16166: +16166: template<> +16166: struct __add_unsigned; +16166: +16166: template<> +16166: struct __add_unsigned; +16166: +16166: +16166: +16166: template +16166: struct __remove_unsigned +16166: { +16166: private: +16166: typedef __enable_if::__value, _Tp> __if_type; +16166: +16166: public: +16166: typedef typename __if_type::__type __type; +16166: }; +16166: +16166: template<> +16166: struct __remove_unsigned +16166: { typedef signed char __type; }; +16166: +16166: template<> +16166: struct __remove_unsigned +16166: { typedef signed char __type; }; +16166: +16166: template<> +16166: struct __remove_unsigned +16166: { typedef short __type; }; +16166: +16166: template<> +16166: struct __remove_unsigned +16166: { typedef int __type; }; +16166: +16166: template<> +16166: struct __remove_unsigned +16166: { typedef long __type; }; +16166: +16166: template<> +16166: struct __remove_unsigned +16166: { typedef long long __type; }; +16166: +16166: +16166: template<> +16166: struct __remove_unsigned; +16166: +16166: template<> +16166: struct __remove_unsigned; +16166: +16166: +16166: +16166: template +16166: constexpr +16166: inline bool +16166: __is_null_pointer(_Type* __ptr) +16166: { return __ptr == 0; } +16166: +16166: template +16166: constexpr +16166: inline bool +16166: __is_null_pointer(_Type) +16166: { return false; } +16166: +16166: +16166: constexpr bool +16166: __is_null_pointer(std::nullptr_t) +16166: { return true; } +16166: +16166: +16166: +16166: +16166: template::__value> +16166: struct __promote +16166: { typedef double __type; }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __promote<_Tp, false> +16166: { }; +16166: +16166: template<> +16166: struct __promote +16166: { typedef long double __type; }; +16166: +16166: template<> +16166: struct __promote +16166: { typedef double __type; }; +16166: +16166: template<> +16166: struct __promote +16166: { typedef float __type; }; +16166: # 225 "/usr/include/c++/14/ext/type_traits.h" 3 +16166: template +16166: using __promoted_t = decltype((typename __promote<_Tp>::__type(0) + ...)); +16166: +16166: +16166: +16166: template +16166: using __promote_2 = __promote<__promoted_t<_Tp, _Up>>; +16166: +16166: template +16166: using __promote_3 = __promote<__promoted_t<_Tp, _Up, _Vp>>; +16166: +16166: template +16166: using __promote_4 = __promote<__promoted_t<_Tp, _Up, _Vp, _Wp>>; +16166: # 269 "/usr/include/c++/14/ext/type_traits.h" 3 +16166: +16166: } +16166: } +16166: # 63 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: # 1 "/usr/include/c++/14/ext/numeric_traits.h" 1 3 +16166: # 32 "/usr/include/c++/14/ext/numeric_traits.h" 3 +16166: +16166: # 33 "/usr/include/c++/14/ext/numeric_traits.h" 3 +16166: +16166: +16166: +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 50 "/usr/include/c++/14/ext/numeric_traits.h" 3 +16166: template +16166: struct __is_integer_nonstrict +16166: : public std::__is_integer<_Tp> +16166: { +16166: using std::__is_integer<_Tp>::__value; +16166: +16166: +16166: enum { __width = __value ? sizeof(_Tp) * 8 : 0 }; +16166: }; +16166: +16166: template +16166: struct __numeric_traits_integer +16166: { +16166: +16166: static_assert(__is_integer_nonstrict<_Value>::__value, +16166: "invalid specialization"); +16166: +16166: +16166: +16166: +16166: static const bool __is_signed = (_Value)(-1) < 0; +16166: static const int __digits +16166: = __is_integer_nonstrict<_Value>::__width - __is_signed; +16166: +16166: +16166: static const _Value __max = __is_signed +16166: ? (((((_Value)1 << (__digits - 1)) - 1) << 1) + 1) +16166: : ~(_Value)0; +16166: static const _Value __min = __is_signed ? -__max - 1 : (_Value)0; +16166: }; +16166: +16166: template +16166: const _Value __numeric_traits_integer<_Value>::__min; +16166: +16166: template +16166: const _Value __numeric_traits_integer<_Value>::__max; +16166: +16166: template +16166: const bool __numeric_traits_integer<_Value>::__is_signed; +16166: +16166: template +16166: const int __numeric_traits_integer<_Value>::__digits; +16166: # 137 "/usr/include/c++/14/ext/numeric_traits.h" 3 +16166: template +16166: using __int_traits = __numeric_traits_integer<_Tp>; +16166: # 157 "/usr/include/c++/14/ext/numeric_traits.h" 3 +16166: template +16166: struct __numeric_traits_floating +16166: { +16166: +16166: static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 643L / 2136); +16166: +16166: +16166: static const bool __is_signed = true; +16166: static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15); +16166: static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308); +16166: }; +16166: +16166: template +16166: const int __numeric_traits_floating<_Value>::__max_digits10; +16166: +16166: template +16166: const bool __numeric_traits_floating<_Value>::__is_signed; +16166: +16166: template +16166: const int __numeric_traits_floating<_Value>::__digits10; +16166: +16166: template +16166: const int __numeric_traits_floating<_Value>::__max_exponent10; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __numeric_traits +16166: : public __numeric_traits_integer<_Value> +16166: { }; +16166: +16166: template<> +16166: struct __numeric_traits +16166: : public __numeric_traits_floating +16166: { }; +16166: +16166: template<> +16166: struct __numeric_traits +16166: : public __numeric_traits_floating +16166: { }; +16166: +16166: template<> +16166: struct __numeric_traits +16166: : public __numeric_traits_floating +16166: { }; +16166: # 238 "/usr/include/c++/14/ext/numeric_traits.h" 3 +16166: +16166: } +16166: # 64 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_pair.h" 1 3 +16166: # 62 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: # 1 "/usr/include/c++/14/bits/utility.h" 1 3 +16166: # 36 "/usr/include/c++/14/bits/utility.h" 3 +16166: +16166: # 37 "/usr/include/c++/14/bits/utility.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: struct tuple_size; +16166: +16166: +16166: +16166: +16166: +16166: template::type, +16166: typename = typename enable_if::value>::type, +16166: size_t = tuple_size<_Tp>::value> +16166: using __enable_if_has_tuple_size = _Tp; +16166: +16166: template +16166: struct tuple_size> +16166: : public tuple_size<_Tp> { }; +16166: +16166: template +16166: struct tuple_size> +16166: : public tuple_size<_Tp> { }; +16166: +16166: template +16166: struct tuple_size> +16166: : public tuple_size<_Tp> { }; +16166: +16166: +16166: template +16166: inline constexpr size_t tuple_size_v = tuple_size<_Tp>::value; +16166: +16166: +16166: +16166: template +16166: struct tuple_element; +16166: +16166: +16166: template +16166: using __tuple_element_t = typename tuple_element<__i, _Tp>::type; +16166: +16166: template +16166: struct tuple_element<__i, const _Tp> +16166: { +16166: using type = const __tuple_element_t<__i, _Tp>; +16166: }; +16166: +16166: template +16166: struct tuple_element<__i, volatile _Tp> +16166: { +16166: using type = volatile __tuple_element_t<__i, _Tp>; +16166: }; +16166: +16166: template +16166: struct tuple_element<__i, const volatile _Tp> +16166: { +16166: using type = const volatile __tuple_element_t<__i, _Tp>; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr size_t +16166: __find_uniq_type_in_pack() +16166: { +16166: constexpr size_t __sz = sizeof...(_Types); +16166: constexpr bool __found[__sz] = { __is_same(_Tp, _Types) ... }; +16166: size_t __n = __sz; +16166: for (size_t __i = 0; __i < __sz; ++__i) +16166: { +16166: if (__found[__i]) +16166: { +16166: if (__n < __sz) +16166: return __sz; +16166: __n = __i; +16166: } +16166: } +16166: return __n; +16166: } +16166: # 134 "/usr/include/c++/14/bits/utility.h" 3 +16166: template +16166: using tuple_element_t = typename tuple_element<__i, _Tp>::type; +16166: +16166: +16166: +16166: +16166: template struct _Index_tuple { }; +16166: +16166: +16166: template +16166: struct _Build_index_tuple +16166: { +16166: # 154 "/usr/include/c++/14/bits/utility.h" 3 +16166: using __type = _Index_tuple<__integer_pack(_Num)...>; +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct integer_sequence +16166: { +16166: +16166: +16166: +16166: typedef _Tp value_type; +16166: static constexpr size_t size() noexcept { return sizeof...(_Idx); } +16166: }; +16166: +16166: +16166: template +16166: using make_integer_sequence +16166: +16166: +16166: +16166: = integer_sequence<_Tp, __integer_pack(_Num)...>; +16166: +16166: +16166: +16166: template +16166: using index_sequence = integer_sequence; +16166: +16166: +16166: template +16166: using make_index_sequence = make_integer_sequence; +16166: +16166: +16166: template +16166: using index_sequence_for = make_index_sequence; +16166: +16166: +16166: +16166: +16166: struct in_place_t { +16166: explicit in_place_t() = default; +16166: }; +16166: +16166: inline constexpr in_place_t in_place{}; +16166: +16166: template struct in_place_type_t +16166: { +16166: explicit in_place_type_t() = default; +16166: }; +16166: +16166: template +16166: inline constexpr in_place_type_t<_Tp> in_place_type{}; +16166: +16166: template struct in_place_index_t +16166: { +16166: explicit in_place_index_t() = default; +16166: }; +16166: +16166: template +16166: inline constexpr in_place_index_t<_Idx> in_place_index{}; +16166: +16166: template +16166: inline constexpr bool __is_in_place_type_v = false; +16166: +16166: template +16166: inline constexpr bool __is_in_place_type_v> = true; +16166: +16166: template +16166: using __is_in_place_type = bool_constant<__is_in_place_type_v<_Tp>>; +16166: +16166: template +16166: inline constexpr bool __is_in_place_index_v = false; +16166: +16166: template +16166: inline constexpr bool __is_in_place_index_v> = true; +16166: +16166: +16166: +16166: +16166: template +16166: struct _Nth_type +16166: { using type = __type_pack_element<_Np, _Types...>; }; +16166: # 283 "/usr/include/c++/14/bits/utility.h" 3 +16166: +16166: } +16166: # 63 "/usr/include/c++/14/bits/stl_pair.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 79 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; +16166: +16166: +16166: inline constexpr piecewise_construct_t piecewise_construct = +16166: piecewise_construct_t(); +16166: +16166: +16166: +16166: +16166: template +16166: struct pair; +16166: +16166: template +16166: class tuple; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct array; +16166: +16166: template +16166: struct _Index_tuple; +16166: +16166: template +16166: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +16166: get(pair<_Tp1, _Tp2>& __in) noexcept; +16166: +16166: template +16166: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +16166: get(pair<_Tp1, _Tp2>&& __in) noexcept; +16166: +16166: template +16166: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +16166: get(const pair<_Tp1, _Tp2>& __in) noexcept; +16166: +16166: template +16166: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +16166: get(const pair<_Tp1, _Tp2>&& __in) noexcept; +16166: +16166: template +16166: constexpr __tuple_element_t<__i, tuple<_Elements...>>& +16166: get(tuple<_Elements...>& __t) noexcept; +16166: +16166: template +16166: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& +16166: get(const tuple<_Elements...>& __t) noexcept; +16166: +16166: template +16166: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& +16166: get(tuple<_Elements...>&& __t) noexcept; +16166: +16166: template +16166: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& +16166: get(const tuple<_Elements...>&& __t) noexcept; +16166: +16166: template +16166: constexpr _Tp& +16166: get(array<_Tp, _Nm>&) noexcept; +16166: +16166: template +16166: constexpr _Tp&& +16166: get(array<_Tp, _Nm>&&) noexcept; +16166: +16166: template +16166: constexpr const _Tp& +16166: get(const array<_Tp, _Nm>&) noexcept; +16166: +16166: template +16166: constexpr const _Tp&& +16166: get(const array<_Tp, _Nm>&&) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _PCC +16166: { +16166: template +16166: static constexpr bool _ConstructiblePair() +16166: { +16166: return __and_, +16166: is_constructible<_T2, const _U2&>>::value; +16166: } +16166: +16166: template +16166: static constexpr bool _ImplicitlyConvertiblePair() +16166: { +16166: return __and_, +16166: is_convertible>::value; +16166: } +16166: +16166: template +16166: static constexpr bool _MoveConstructiblePair() +16166: { +16166: return __and_, +16166: is_constructible<_T2, _U2&&>>::value; +16166: } +16166: +16166: template +16166: static constexpr bool _ImplicitlyMoveConvertiblePair() +16166: { +16166: return __and_, +16166: is_convertible<_U2&&, _T2>>::value; +16166: } +16166: }; +16166: +16166: template +16166: struct _PCC +16166: { +16166: template +16166: static constexpr bool _ConstructiblePair() +16166: { +16166: return false; +16166: } +16166: +16166: template +16166: static constexpr bool _ImplicitlyConvertiblePair() +16166: { +16166: return false; +16166: } +16166: +16166: template +16166: static constexpr bool _MoveConstructiblePair() +16166: { +16166: return false; +16166: } +16166: +16166: template +16166: static constexpr bool _ImplicitlyMoveConvertiblePair() +16166: { +16166: return false; +16166: } +16166: }; +16166: # 260 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template class __pair_base +16166: { +16166: +16166: template friend struct pair; +16166: __pair_base() = default; +16166: ~__pair_base() = default; +16166: __pair_base(const __pair_base&) = default; +16166: __pair_base& operator=(const __pair_base&) = delete; +16166: +16166: }; +16166: # 283 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template +16166: struct pair +16166: : public __pair_base<_T1, _T2> +16166: { +16166: typedef _T1 first_type; +16166: typedef _T2 second_type; +16166: +16166: _T1 first; +16166: _T2 second; +16166: +16166: +16166: constexpr pair(const pair&) = default; +16166: constexpr pair(pair&&) = default; +16166: +16166: template +16166: +16166: pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); +16166: +16166: +16166: void +16166: swap(pair& __p) +16166: noexcept(__and_<__is_nothrow_swappable<_T1>, +16166: __is_nothrow_swappable<_T2>>::value) +16166: { +16166: using std::swap; +16166: swap(first, __p.first); +16166: swap(second, __p.second); +16166: } +16166: # 331 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: private: +16166: template +16166: +16166: pair(tuple<_Args1...>&, tuple<_Args2...>&, +16166: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); +16166: public: +16166: # 719 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template , +16166: __is_implicitly_default_constructible<_U2>> +16166: ::value, bool>::type = true> +16166: constexpr pair() +16166: : first(), second() { } +16166: +16166: template , +16166: is_default_constructible<_U2>, +16166: __not_< +16166: __and_<__is_implicitly_default_constructible<_U1>, +16166: __is_implicitly_default_constructible<_U2>>>> +16166: ::value, bool>::type = false> +16166: explicit constexpr pair() +16166: : first(), second() { } +16166: +16166: +16166: +16166: using _PCCP = _PCC; +16166: +16166: +16166: +16166: template() +16166: && _PCCP::template +16166: _ImplicitlyConvertiblePair<_U1, _U2>(), +16166: bool>::type=true> +16166: constexpr pair(const _T1& __a, const _T2& __b) +16166: : first(__a), second(__b) { } +16166: +16166: +16166: template() +16166: && !_PCCP::template +16166: _ImplicitlyConvertiblePair<_U1, _U2>(), +16166: bool>::type=false> +16166: explicit constexpr pair(const _T1& __a, const _T2& __b) +16166: : first(__a), second(__b) { } +16166: +16166: +16166: +16166: template +16166: using _PCCFP = _PCC::value +16166: || !is_same<_T2, _U2>::value, +16166: _T1, _T2>; +16166: +16166: +16166: template::template +16166: _ConstructiblePair<_U1, _U2>() +16166: && _PCCFP<_U1, _U2>::template +16166: _ImplicitlyConvertiblePair<_U1, _U2>(), +16166: bool>::type=true> +16166: constexpr pair(const pair<_U1, _U2>& __p) +16166: : first(__p.first), second(__p.second) +16166: { ; } +16166: +16166: template::template +16166: _ConstructiblePair<_U1, _U2>() +16166: && !_PCCFP<_U1, _U2>::template +16166: _ImplicitlyConvertiblePair<_U1, _U2>(), +16166: bool>::type=false> +16166: explicit constexpr pair(const pair<_U1, _U2>& __p) +16166: : first(__p.first), second(__p.second) +16166: { ; } +16166: # 803 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: private: +16166: +16166: +16166: +16166: struct __zero_as_null_pointer_constant +16166: { +16166: __zero_as_null_pointer_constant(int __zero_as_null_pointer_constant::*) +16166: { } +16166: template::value>> +16166: __zero_as_null_pointer_constant(_Tp) = delete; +16166: }; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: template>, +16166: is_pointer<_T2>, +16166: is_constructible<_T1, _U1>, +16166: __not_>, +16166: is_convertible<_U1, _T1>>::value, +16166: bool> = true> +16166: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +16166: constexpr +16166: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) +16166: : first(std::forward<_U1>(__x)), second(nullptr) +16166: { ; } +16166: +16166: template>, +16166: is_pointer<_T2>, +16166: is_constructible<_T1, _U1>, +16166: __not_>, +16166: __not_>>::value, +16166: bool> = false> +16166: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +16166: explicit constexpr +16166: pair(_U1&& __x, __zero_as_null_pointer_constant, ...) +16166: : first(std::forward<_U1>(__x)), second(nullptr) +16166: { ; } +16166: +16166: template, +16166: __not_>, +16166: is_constructible<_T2, _U2>, +16166: __not_>, +16166: is_convertible<_U2, _T2>>::value, +16166: bool> = true> +16166: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +16166: constexpr +16166: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) +16166: : first(nullptr), second(std::forward<_U2>(__y)) +16166: { ; } +16166: +16166: template, +16166: __not_>, +16166: is_constructible<_T2, _U2>, +16166: __not_>, +16166: __not_>>::value, +16166: bool> = false> +16166: __attribute__ ((__deprecated__ ("use 'nullptr' instead of '0' to " "initialize std::pair of move-only " "type and pointer"))) +16166: explicit constexpr +16166: pair(__zero_as_null_pointer_constant, _U2&& __y, ...) +16166: : first(nullptr), second(std::forward<_U2>(__y)) +16166: { ; } +16166: +16166: +16166: +16166: template() +16166: && _PCCP::template +16166: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +16166: bool>::type=true> +16166: constexpr pair(_U1&& __x, _U2&& __y) +16166: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) +16166: { ; } +16166: +16166: template() +16166: && !_PCCP::template +16166: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +16166: bool>::type=false> +16166: explicit constexpr pair(_U1&& __x, _U2&& __y) +16166: : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) +16166: { ; } +16166: +16166: +16166: template::template +16166: _MoveConstructiblePair<_U1, _U2>() +16166: && _PCCFP<_U1, _U2>::template +16166: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +16166: bool>::type=true> +16166: constexpr pair(pair<_U1, _U2>&& __p) +16166: : first(std::forward<_U1>(__p.first)), +16166: second(std::forward<_U2>(__p.second)) +16166: { ; } +16166: +16166: template::template +16166: _MoveConstructiblePair<_U1, _U2>() +16166: && !_PCCFP<_U1, _U2>::template +16166: _ImplicitlyMoveConvertiblePair<_U1, _U2>(), +16166: bool>::type=false> +16166: explicit constexpr pair(pair<_U1, _U2>&& __p) +16166: : first(std::forward<_U1>(__p.first)), +16166: second(std::forward<_U2>(__p.second)) +16166: { ; } +16166: +16166: +16166: +16166: pair& +16166: operator=(__conditional_t<__and_, +16166: is_copy_assignable<_T2>>::value, +16166: const pair&, const __nonesuch&> __p) +16166: { +16166: first = __p.first; +16166: second = __p.second; +16166: return *this; +16166: } +16166: +16166: pair& +16166: operator=(__conditional_t<__and_, +16166: is_move_assignable<_T2>>::value, +16166: pair&&, __nonesuch&&> __p) +16166: noexcept(__and_, +16166: is_nothrow_move_assignable<_T2>>::value) +16166: { +16166: first = std::forward(__p.first); +16166: second = std::forward(__p.second); +16166: return *this; +16166: } +16166: +16166: template +16166: typename enable_if<__and_, +16166: is_assignable<_T2&, const _U2&>>::value, +16166: pair&>::type +16166: operator=(const pair<_U1, _U2>& __p) +16166: { +16166: first = __p.first; +16166: second = __p.second; +16166: return *this; +16166: } +16166: +16166: template +16166: typename enable_if<__and_, +16166: is_assignable<_T2&, _U2&&>>::value, +16166: pair&>::type +16166: operator=(pair<_U1, _U2>&& __p) +16166: { +16166: first = std::forward<_U1>(__p.first); +16166: second = std::forward<_U2>(__p.second); +16166: return *this; +16166: } +16166: # 995 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: }; +16166: +16166: +16166: +16166: +16166: template pair(_T1, _T2) -> pair<_T1, _T2>; +16166: # 1031 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template +16166: inline constexpr bool +16166: operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +16166: { return __x.first == __y.first && __x.second == __y.second; } +16166: # 1043 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template +16166: inline constexpr bool +16166: operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +16166: { return __x.first < __y.first +16166: || (!(__y.first < __x.first) && __x.second < __y.second); } +16166: +16166: +16166: template +16166: inline constexpr bool +16166: operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: inline constexpr bool +16166: operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: inline constexpr bool +16166: operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: inline constexpr bool +16166: operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) +16166: { return !(__x < __y); } +16166: # 1080 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template +16166: inline +16166: +16166: +16166: typename enable_if<__and_<__is_swappable<_T1>, +16166: __is_swappable<_T2>>::value>::type +16166: +16166: +16166: +16166: swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: # 1103 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template +16166: typename enable_if, +16166: __is_swappable<_T2>>::value>::type +16166: swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete; +16166: # 1129 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template +16166: constexpr pair::__type, +16166: typename __decay_and_strip<_T2>::__type> +16166: make_pair(_T1&& __x, _T2&& __y) +16166: { +16166: typedef typename __decay_and_strip<_T1>::__type __ds_type1; +16166: typedef typename __decay_and_strip<_T2>::__type __ds_type2; +16166: typedef pair<__ds_type1, __ds_type2> __pair_type; +16166: return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); +16166: } +16166: # 1152 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: template +16166: struct __is_tuple_like_impl> : true_type +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct tuple_size> +16166: : public integral_constant { }; +16166: +16166: +16166: template +16166: struct tuple_element<0, pair<_Tp1, _Tp2>> +16166: { typedef _Tp1 type; }; +16166: +16166: +16166: template +16166: struct tuple_element<1, pair<_Tp1, _Tp2>> +16166: { typedef _Tp2 type; }; +16166: +16166: +16166: +16166: template +16166: struct tuple_element<__i, tuple<_Types...>>; +16166: +16166: +16166: template +16166: inline constexpr size_t tuple_size_v> = 2; +16166: +16166: template +16166: inline constexpr size_t tuple_size_v> = 2; +16166: +16166: template +16166: inline constexpr bool __is_pair = false; +16166: +16166: template +16166: inline constexpr bool __is_pair> = true; +16166: +16166: +16166: +16166: template +16166: struct __pair_get; +16166: +16166: template<> +16166: struct __pair_get<0> +16166: { +16166: template +16166: static constexpr _Tp1& +16166: __get(pair<_Tp1, _Tp2>& __pair) noexcept +16166: { return __pair.first; } +16166: +16166: template +16166: static constexpr _Tp1&& +16166: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept +16166: { return std::forward<_Tp1>(__pair.first); } +16166: +16166: template +16166: static constexpr const _Tp1& +16166: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept +16166: { return __pair.first; } +16166: +16166: template +16166: static constexpr const _Tp1&& +16166: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept +16166: { return std::forward(__pair.first); } +16166: }; +16166: +16166: template<> +16166: struct __pair_get<1> +16166: { +16166: template +16166: static constexpr _Tp2& +16166: __get(pair<_Tp1, _Tp2>& __pair) noexcept +16166: { return __pair.second; } +16166: +16166: template +16166: static constexpr _Tp2&& +16166: __move_get(pair<_Tp1, _Tp2>&& __pair) noexcept +16166: { return std::forward<_Tp2>(__pair.second); } +16166: +16166: template +16166: static constexpr const _Tp2& +16166: __const_get(const pair<_Tp1, _Tp2>& __pair) noexcept +16166: { return __pair.second; } +16166: +16166: template +16166: static constexpr const _Tp2&& +16166: __const_move_get(const pair<_Tp1, _Tp2>&& __pair) noexcept +16166: { return std::forward(__pair.second); } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +16166: get(pair<_Tp1, _Tp2>& __in) noexcept +16166: { return __pair_get<_Int>::__get(__in); } +16166: +16166: template +16166: constexpr typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +16166: get(pair<_Tp1, _Tp2>&& __in) noexcept +16166: { return __pair_get<_Int>::__move_get(std::move(__in)); } +16166: +16166: template +16166: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type& +16166: get(const pair<_Tp1, _Tp2>& __in) noexcept +16166: { return __pair_get<_Int>::__const_get(__in); } +16166: +16166: template +16166: constexpr const typename tuple_element<_Int, pair<_Tp1, _Tp2>>::type&& +16166: get(const pair<_Tp1, _Tp2>&& __in) noexcept +16166: { return __pair_get<_Int>::__const_move_get(std::move(__in)); } +16166: +16166: +16166: +16166: template +16166: constexpr _Tp& +16166: get(pair<_Tp, _Up>& __p) noexcept +16166: { return __p.first; } +16166: +16166: template +16166: constexpr const _Tp& +16166: get(const pair<_Tp, _Up>& __p) noexcept +16166: { return __p.first; } +16166: +16166: template +16166: constexpr _Tp&& +16166: get(pair<_Tp, _Up>&& __p) noexcept +16166: { return std::move(__p.first); } +16166: +16166: template +16166: constexpr const _Tp&& +16166: get(const pair<_Tp, _Up>&& __p) noexcept +16166: { return std::move(__p.first); } +16166: +16166: template +16166: constexpr _Tp& +16166: get(pair<_Up, _Tp>& __p) noexcept +16166: { return __p.second; } +16166: +16166: template +16166: constexpr const _Tp& +16166: get(const pair<_Up, _Tp>& __p) noexcept +16166: { return __p.second; } +16166: +16166: template +16166: constexpr _Tp&& +16166: get(pair<_Up, _Tp>&& __p) noexcept +16166: { return std::move(__p.second); } +16166: +16166: template +16166: constexpr const _Tp&& +16166: get(const pair<_Up, _Tp>&& __p) noexcept +16166: { return std::move(__p.second); } +16166: # 1332 "/usr/include/c++/14/bits/stl_pair.h" 3 +16166: +16166: } +16166: # 65 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 1 3 +16166: # 62 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +16166: +16166: # 63 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +16166: # 74 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 93 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +16166: struct input_iterator_tag { }; +16166: +16166: +16166: struct output_iterator_tag { }; +16166: +16166: +16166: struct forward_iterator_tag : public input_iterator_tag { }; +16166: +16166: +16166: +16166: struct bidirectional_iterator_tag : public forward_iterator_tag { }; +16166: +16166: +16166: +16166: struct random_access_iterator_tag : public bidirectional_iterator_tag { }; +16166: # 125 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +16166: template +16166: struct [[__deprecated__]] iterator +16166: { +16166: +16166: typedef _Category iterator_category; +16166: +16166: typedef _Tp value_type; +16166: +16166: typedef _Distance difference_type; +16166: +16166: typedef _Pointer pointer; +16166: +16166: typedef _Reference reference; +16166: }; +16166: # 149 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +16166: template +16166: struct iterator_traits; +16166: +16166: +16166: +16166: +16166: template> +16166: struct __iterator_traits { }; +16166: +16166: +16166: +16166: template +16166: struct __iterator_traits<_Iterator, +16166: __void_t> +16166: { +16166: typedef typename _Iterator::iterator_category iterator_category; +16166: typedef typename _Iterator::value_type value_type; +16166: typedef typename _Iterator::difference_type difference_type; +16166: typedef typename _Iterator::pointer pointer; +16166: typedef typename _Iterator::reference reference; +16166: }; +16166: +16166: +16166: template +16166: struct iterator_traits +16166: : public __iterator_traits<_Iterator> { }; +16166: # 209 "/usr/include/c++/14/bits/stl_iterator_base_types.h" 3 +16166: template +16166: struct iterator_traits<_Tp*> +16166: { +16166: typedef random_access_iterator_tag iterator_category; +16166: typedef _Tp value_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef _Tp* pointer; +16166: typedef _Tp& reference; +16166: }; +16166: +16166: +16166: template +16166: struct iterator_traits +16166: { +16166: typedef random_access_iterator_tag iterator_category; +16166: typedef _Tp value_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef const _Tp* pointer; +16166: typedef const _Tp& reference; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: inline constexpr +16166: typename iterator_traits<_Iter>::iterator_category +16166: __iterator_category(const _Iter&) +16166: { return typename iterator_traits<_Iter>::iterator_category(); } +16166: +16166: +16166: +16166: +16166: template +16166: using __iter_category_t +16166: = typename iterator_traits<_Iter>::iterator_category; +16166: +16166: template +16166: using _RequireInputIter = +16166: __enable_if_t, +16166: input_iterator_tag>::value>; +16166: +16166: template> +16166: struct __is_random_access_iter +16166: : is_base_of +16166: { +16166: typedef is_base_of _Base; +16166: enum { __value = _Base::value }; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 66 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 1 3 +16166: # 62 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +16166: +16166: # 63 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/concept_check.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/concept_check.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/concept_check.h" 3 +16166: # 65 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 2 3 +16166: # 1 "/usr/include/c++/14/debug/assertions.h" 1 3 +16166: # 66 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template struct _List_iterator; +16166: template struct _List_const_iterator; +16166: +16166: +16166: template +16166: inline constexpr +16166: typename iterator_traits<_InputIterator>::difference_type +16166: __distance(_InputIterator __first, _InputIterator __last, +16166: input_iterator_tag) +16166: { +16166: +16166: +16166: +16166: typename iterator_traits<_InputIterator>::difference_type __n = 0; +16166: while (__first != __last) +16166: { +16166: ++__first; +16166: ++__n; +16166: } +16166: return __n; +16166: } +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: inline constexpr +16166: typename iterator_traits<_RandomAccessIterator>::difference_type +16166: __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: random_access_iterator_tag) +16166: { +16166: +16166: +16166: +16166: return __last - __first; +16166: } +16166: +16166: +16166: +16166: template +16166: ptrdiff_t +16166: __distance(std::_List_iterator<_Tp>, +16166: std::_List_iterator<_Tp>, +16166: input_iterator_tag); +16166: +16166: template +16166: ptrdiff_t +16166: __distance(std::_List_const_iterator<_Tp>, +16166: std::_List_const_iterator<_Tp>, +16166: input_iterator_tag); +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete; +16166: # 144 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +16166: template +16166: [[__nodiscard__]] __attribute__((__always_inline__)) +16166: inline constexpr +16166: typename iterator_traits<_InputIterator>::difference_type +16166: distance(_InputIterator __first, _InputIterator __last) +16166: { +16166: +16166: return std::__distance(__first, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: template +16166: inline constexpr void +16166: __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) +16166: { +16166: +16166: +16166: do { if (std::__is_constant_evaluated() && !bool(__n >= 0)) std::__glibcxx_assert_fail(); } while (false); +16166: while (__n--) +16166: ++__i; +16166: } +16166: +16166: template +16166: inline constexpr void +16166: __advance(_BidirectionalIterator& __i, _Distance __n, +16166: bidirectional_iterator_tag) +16166: { +16166: +16166: +16166: +16166: if (__n > 0) +16166: while (__n--) +16166: ++__i; +16166: else +16166: while (__n++) +16166: --__i; +16166: } +16166: +16166: template +16166: inline constexpr void +16166: __advance(_RandomAccessIterator& __i, _Distance __n, +16166: random_access_iterator_tag) +16166: { +16166: +16166: +16166: +16166: if (__builtin_constant_p(__n) && __n == 1) +16166: ++__i; +16166: else if (__builtin_constant_p(__n) && __n == -1) +16166: --__i; +16166: else +16166: __i += __n; +16166: } +16166: +16166: +16166: +16166: template +16166: void +16166: __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; +16166: # 217 "/usr/include/c++/14/bits/stl_iterator_base_funcs.h" 3 +16166: template +16166: __attribute__((__always_inline__)) +16166: inline constexpr void +16166: advance(_InputIterator& __i, _Distance __n) +16166: { +16166: +16166: typename iterator_traits<_InputIterator>::difference_type __d = __n; +16166: std::__advance(__i, __d, std::__iterator_category(__i)); +16166: } +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] [[__gnu__::__always_inline__]] +16166: inline constexpr _InputIterator +16166: next(_InputIterator __x, typename +16166: iterator_traits<_InputIterator>::difference_type __n = 1) +16166: { +16166: +16166: +16166: std::advance(__x, __n); +16166: return __x; +16166: } +16166: +16166: template +16166: [[__nodiscard__]] [[__gnu__::__always_inline__]] +16166: inline constexpr _BidirectionalIterator +16166: prev(_BidirectionalIterator __x, typename +16166: iterator_traits<_BidirectionalIterator>::difference_type __n = 1) +16166: { +16166: +16166: +16166: +16166: std::advance(__x, -__n); +16166: return __x; +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 67 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_iterator.h" 1 3 +16166: # 67 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: # 1 "/usr/include/c++/14/bits/ptr_traits.h" 1 3 +16166: # 42 "/usr/include/c++/14/bits/ptr_traits.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: class __undefined; +16166: +16166: +16166: +16166: template +16166: struct __get_first_arg +16166: { using type = __undefined; }; +16166: +16166: template class _SomeTemplate, typename _Tp, +16166: typename... _Types> +16166: struct __get_first_arg<_SomeTemplate<_Tp, _Types...>> +16166: { using type = _Tp; }; +16166: +16166: +16166: +16166: template +16166: struct __replace_first_arg +16166: { }; +16166: +16166: template class _SomeTemplate, typename _Up, +16166: typename _Tp, typename... _Types> +16166: struct __replace_first_arg<_SomeTemplate<_Tp, _Types...>, _Up> +16166: { using type = _SomeTemplate<_Up, _Types...>; }; +16166: +16166: +16166: template +16166: struct __ptr_traits_elem : __get_first_arg<_Ptr> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __ptr_traits_elem<_Ptr, __void_t> +16166: { using type = typename _Ptr::element_type; }; +16166: +16166: +16166: template +16166: using __ptr_traits_elem_t = typename __ptr_traits_elem<_Ptr>::type; +16166: +16166: +16166: +16166: +16166: template::value> +16166: struct __ptr_traits_ptr_to +16166: { +16166: using pointer = _Ptr; +16166: using element_type = _Elt; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: static pointer +16166: pointer_to(element_type& __r) +16166: +16166: +16166: +16166: +16166: +16166: { return pointer::pointer_to(__r); } +16166: }; +16166: +16166: +16166: template +16166: struct __ptr_traits_ptr_to<_Ptr, _Elt, true> +16166: { }; +16166: +16166: +16166: template +16166: struct __ptr_traits_ptr_to<_Tp*, _Tp, false> +16166: { +16166: using pointer = _Tp*; +16166: using element_type = _Tp; +16166: +16166: +16166: +16166: +16166: +16166: +16166: static pointer +16166: pointer_to(element_type& __r) noexcept +16166: { return std::addressof(__r); } +16166: }; +16166: +16166: template +16166: struct __ptr_traits_impl : __ptr_traits_ptr_to<_Ptr, _Elt> +16166: { +16166: private: +16166: template +16166: using __diff_t = typename _Tp::difference_type; +16166: +16166: template +16166: using __rebind = __type_identity>; +16166: +16166: public: +16166: +16166: using pointer = _Ptr; +16166: +16166: +16166: using element_type = _Elt; +16166: +16166: +16166: using difference_type = __detected_or_t; +16166: +16166: +16166: template +16166: using rebind = typename __detected_or_t<__replace_first_arg<_Ptr, _Up>, +16166: __rebind, _Ptr, _Up>::type; +16166: }; +16166: +16166: +16166: +16166: template +16166: struct __ptr_traits_impl<_Ptr, __undefined> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct pointer_traits : __ptr_traits_impl<_Ptr, __ptr_traits_elem_t<_Ptr>> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct pointer_traits<_Tp*> : __ptr_traits_ptr_to<_Tp*, _Tp> +16166: { +16166: +16166: typedef _Tp* pointer; +16166: +16166: typedef _Tp element_type; +16166: +16166: typedef ptrdiff_t difference_type; +16166: +16166: template using rebind = _Up*; +16166: }; +16166: +16166: +16166: template +16166: using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; +16166: +16166: template +16166: constexpr _Tp* +16166: __to_address(_Tp* __ptr) noexcept +16166: { +16166: static_assert(!std::is_function<_Tp>::value, "not a function pointer"); +16166: return __ptr; +16166: } +16166: +16166: +16166: template +16166: constexpr typename std::pointer_traits<_Ptr>::element_type* +16166: __to_address(const _Ptr& __ptr) +16166: { return std::__to_address(__ptr.operator->()); } +16166: # 257 "/usr/include/c++/14/bits/ptr_traits.h" 3 +16166: +16166: } +16166: # 68 "/usr/include/c++/14/bits/stl_iterator.h" 2 3 +16166: # 85 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 106 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: +16166: # 106 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: # 128 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: class reverse_iterator +16166: : public iterator::iterator_category, +16166: typename iterator_traits<_Iterator>::value_type, +16166: typename iterator_traits<_Iterator>::difference_type, +16166: typename iterator_traits<_Iterator>::pointer, +16166: typename iterator_traits<_Iterator>::reference> +16166: { +16166: template +16166: friend class reverse_iterator; +16166: # 147 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: protected: +16166: _Iterator current; +16166: +16166: typedef iterator_traits<_Iterator> __traits_type; +16166: +16166: public: +16166: typedef _Iterator iterator_type; +16166: typedef typename __traits_type::pointer pointer; +16166: +16166: typedef typename __traits_type::difference_type difference_type; +16166: typedef typename __traits_type::reference reference; +16166: # 178 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: constexpr +16166: reverse_iterator() +16166: noexcept(noexcept(_Iterator())) +16166: : current() +16166: { } +16166: +16166: +16166: +16166: +16166: explicit constexpr +16166: reverse_iterator(iterator_type __x) +16166: noexcept(noexcept(_Iterator(__x))) +16166: : current(__x) +16166: { } +16166: +16166: +16166: +16166: +16166: constexpr +16166: reverse_iterator(const reverse_iterator& __x) +16166: noexcept(noexcept(_Iterator(__x.current))) +16166: : current(__x.current) +16166: { } +16166: +16166: +16166: reverse_iterator& operator=(const reverse_iterator&) = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: +16166: +16166: constexpr +16166: reverse_iterator(const reverse_iterator<_Iter>& __x) +16166: noexcept(noexcept(_Iterator(__x.current))) +16166: : current(__x.current) +16166: { } +16166: +16166: +16166: template +16166: +16166: +16166: +16166: +16166: constexpr +16166: reverse_iterator& +16166: operator=(const reverse_iterator<_Iter>& __x) +16166: noexcept(noexcept(current = __x.current)) +16166: { +16166: current = __x.current; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr iterator_type +16166: base() const +16166: noexcept(noexcept(_Iterator(current))) +16166: { return current; } +16166: # 255 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: [[__nodiscard__]] +16166: constexpr reference +16166: operator*() const +16166: { +16166: _Iterator __tmp = current; +16166: return *--__tmp; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr pointer +16166: operator->() const +16166: +16166: +16166: +16166: +16166: { +16166: +16166: +16166: _Iterator __tmp = current; +16166: --__tmp; +16166: return _S_to_pointer(__tmp); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: constexpr reverse_iterator& +16166: operator++() +16166: { +16166: --current; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: constexpr reverse_iterator +16166: operator++(int) +16166: { +16166: reverse_iterator __tmp = *this; +16166: --current; +16166: return __tmp; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: constexpr reverse_iterator& +16166: operator--() +16166: { +16166: ++current; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: constexpr reverse_iterator +16166: operator--(int) +16166: { +16166: reverse_iterator __tmp = *this; +16166: ++current; +16166: return __tmp; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr reverse_iterator +16166: operator+(difference_type __n) const +16166: { return reverse_iterator(current - __n); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: constexpr reverse_iterator& +16166: operator+=(difference_type __n) +16166: { +16166: current -= __n; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr reverse_iterator +16166: operator-(difference_type __n) const +16166: { return reverse_iterator(current + __n); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: constexpr reverse_iterator& +16166: operator-=(difference_type __n) +16166: { +16166: current += __n; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr reference +16166: operator[](difference_type __n) const +16166: { return *(*this + __n); } +16166: # 415 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: private: +16166: template +16166: static constexpr _Tp* +16166: _S_to_pointer(_Tp* __p) +16166: { return __p; } +16166: +16166: template +16166: static constexpr pointer +16166: _S_to_pointer(_Tp __t) +16166: { return __t.operator->(); } +16166: }; +16166: # 438 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator==(const reverse_iterator<_Iterator>& __x, +16166: const reverse_iterator<_Iterator>& __y) +16166: { return __x.base() == __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator<(const reverse_iterator<_Iterator>& __x, +16166: const reverse_iterator<_Iterator>& __y) +16166: { return __y.base() < __x.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator!=(const reverse_iterator<_Iterator>& __x, +16166: const reverse_iterator<_Iterator>& __y) +16166: { return !(__x == __y); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>(const reverse_iterator<_Iterator>& __x, +16166: const reverse_iterator<_Iterator>& __y) +16166: { return __y < __x; } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator<=(const reverse_iterator<_Iterator>& __x, +16166: const reverse_iterator<_Iterator>& __y) +16166: { return !(__y < __x); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>=(const reverse_iterator<_Iterator>& __x, +16166: const reverse_iterator<_Iterator>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator==(const reverse_iterator<_IteratorL>& __x, +16166: const reverse_iterator<_IteratorR>& __y) +16166: { return __x.base() == __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator<(const reverse_iterator<_IteratorL>& __x, +16166: const reverse_iterator<_IteratorR>& __y) +16166: { return __x.base() > __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator!=(const reverse_iterator<_IteratorL>& __x, +16166: const reverse_iterator<_IteratorR>& __y) +16166: { return __x.base() != __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>(const reverse_iterator<_IteratorL>& __x, +16166: const reverse_iterator<_IteratorR>& __y) +16166: { return __x.base() < __y.base(); } +16166: +16166: template +16166: inline constexpr bool +16166: operator<=(const reverse_iterator<_IteratorL>& __x, +16166: const reverse_iterator<_IteratorR>& __y) +16166: { return __x.base() >= __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>=(const reverse_iterator<_IteratorL>& __x, +16166: const reverse_iterator<_IteratorR>& __y) +16166: { return __x.base() <= __y.base(); } +16166: # 615 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr auto +16166: operator-(const reverse_iterator<_IteratorL>& __x, +16166: const reverse_iterator<_IteratorR>& __y) +16166: -> decltype(__y.base() - __x.base()) +16166: { return __y.base() - __x.base(); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr reverse_iterator<_Iterator> +16166: operator+(typename reverse_iterator<_Iterator>::difference_type __n, +16166: const reverse_iterator<_Iterator>& __x) +16166: { return reverse_iterator<_Iterator>(__x.base() - __n); } +16166: +16166: +16166: +16166: template +16166: inline constexpr reverse_iterator<_Iterator> +16166: __make_reverse_iterator(_Iterator __i) +16166: { return reverse_iterator<_Iterator>(__i); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr reverse_iterator<_Iterator> +16166: make_reverse_iterator(_Iterator __i) +16166: { return reverse_iterator<_Iterator>(__i); } +16166: # 657 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: +16166: auto +16166: __niter_base(reverse_iterator<_Iterator> __it) +16166: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) +16166: { return __make_reverse_iterator(__niter_base(__it.base())); } +16166: +16166: template +16166: struct __is_move_iterator > +16166: : __is_move_iterator<_Iterator> +16166: { }; +16166: +16166: template +16166: +16166: auto +16166: __miter_base(reverse_iterator<_Iterator> __it) +16166: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) +16166: { return __make_reverse_iterator(__miter_base(__it.base())); } +16166: # 688 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: class back_insert_iterator +16166: : public iterator +16166: { +16166: protected: +16166: _Container* container; +16166: +16166: public: +16166: +16166: typedef _Container container_type; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: back_insert_iterator(_Container& __x) +16166: : container(std::__addressof(__x)) { } +16166: # 726 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: +16166: back_insert_iterator& +16166: operator=(const typename _Container::value_type& __value) +16166: { +16166: container->push_back(__value); +16166: return *this; +16166: } +16166: +16166: +16166: back_insert_iterator& +16166: operator=(typename _Container::value_type&& __value) +16166: { +16166: container->push_back(std::move(__value)); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: back_insert_iterator& +16166: operator*() +16166: { return *this; } +16166: +16166: +16166: +16166: back_insert_iterator& +16166: operator++() +16166: { return *this; } +16166: +16166: +16166: +16166: back_insert_iterator +16166: operator++(int) +16166: { return *this; } +16166: }; +16166: # 773 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline back_insert_iterator<_Container> +16166: back_inserter(_Container& __x) +16166: { return back_insert_iterator<_Container>(__x); } +16166: # 789 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: class front_insert_iterator +16166: : public iterator +16166: { +16166: protected: +16166: _Container* container; +16166: +16166: public: +16166: +16166: typedef _Container container_type; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: front_insert_iterator(_Container& __x) +16166: : container(std::__addressof(__x)) { } +16166: # 827 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: +16166: front_insert_iterator& +16166: operator=(const typename _Container::value_type& __value) +16166: { +16166: container->push_front(__value); +16166: return *this; +16166: } +16166: +16166: +16166: front_insert_iterator& +16166: operator=(typename _Container::value_type&& __value) +16166: { +16166: container->push_front(std::move(__value)); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: front_insert_iterator& +16166: operator*() +16166: { return *this; } +16166: +16166: +16166: +16166: front_insert_iterator& +16166: operator++() +16166: { return *this; } +16166: +16166: +16166: +16166: front_insert_iterator +16166: operator++(int) +16166: { return *this; } +16166: }; +16166: # 874 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline front_insert_iterator<_Container> +16166: front_inserter(_Container& __x) +16166: { return front_insert_iterator<_Container>(__x); } +16166: # 894 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: class insert_iterator +16166: : public iterator +16166: { +16166: +16166: +16166: +16166: typedef typename _Container::iterator _Iter; +16166: +16166: protected: +16166: _Container* container; +16166: _Iter iter; +16166: +16166: public: +16166: +16166: typedef _Container container_type; +16166: # 919 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: +16166: insert_iterator(_Container& __x, _Iter __i) +16166: : container(std::__addressof(__x)), iter(__i) {} +16166: # 955 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: +16166: insert_iterator& +16166: operator=(const typename _Container::value_type& __value) +16166: { +16166: iter = container->insert(iter, __value); +16166: ++iter; +16166: return *this; +16166: } +16166: +16166: +16166: insert_iterator& +16166: operator=(typename _Container::value_type&& __value) +16166: { +16166: iter = container->insert(iter, std::move(__value)); +16166: ++iter; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: insert_iterator& +16166: operator*() +16166: { return *this; } +16166: +16166: +16166: +16166: insert_iterator& +16166: operator++() +16166: { return *this; } +16166: +16166: +16166: +16166: insert_iterator& +16166: operator++(int) +16166: { return *this; } +16166: }; +16166: +16166: #pragma GCC diagnostic pop +16166: # 1014 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline insert_iterator<_Container> +16166: inserter(_Container& __x, typename _Container::iterator __i) +16166: { return insert_iterator<_Container>(__x, __i); } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 1037 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: class __normal_iterator +16166: { +16166: protected: +16166: _Iterator _M_current; +16166: +16166: typedef std::iterator_traits<_Iterator> __traits_type; +16166: +16166: +16166: template +16166: using __convertible_from +16166: = std::__enable_if_t::value>; +16166: +16166: +16166: public: +16166: typedef _Iterator iterator_type; +16166: typedef typename __traits_type::iterator_category iterator_category; +16166: typedef typename __traits_type::value_type value_type; +16166: typedef typename __traits_type::difference_type difference_type; +16166: typedef typename __traits_type::reference reference; +16166: typedef typename __traits_type::pointer pointer; +16166: +16166: +16166: +16166: +16166: +16166: constexpr __normal_iterator() noexcept +16166: : _M_current(_Iterator()) { } +16166: +16166: explicit +16166: __normal_iterator(const _Iterator& __i) noexcept +16166: : _M_current(__i) { } +16166: +16166: +16166: +16166: template> +16166: +16166: __normal_iterator(const __normal_iterator<_Iter, _Container>& __i) +16166: noexcept +16166: # 1085 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: : _M_current(__i.base()) { } +16166: +16166: +16166: +16166: reference +16166: operator*() const noexcept +16166: { return *_M_current; } +16166: +16166: +16166: pointer +16166: operator->() const noexcept +16166: { return _M_current; } +16166: +16166: +16166: __normal_iterator& +16166: operator++() noexcept +16166: { +16166: ++_M_current; +16166: return *this; +16166: } +16166: +16166: +16166: __normal_iterator +16166: operator++(int) noexcept +16166: { return __normal_iterator(_M_current++); } +16166: +16166: +16166: +16166: __normal_iterator& +16166: operator--() noexcept +16166: { +16166: --_M_current; +16166: return *this; +16166: } +16166: +16166: +16166: __normal_iterator +16166: operator--(int) noexcept +16166: { return __normal_iterator(_M_current--); } +16166: +16166: +16166: +16166: reference +16166: operator[](difference_type __n) const noexcept +16166: { return _M_current[__n]; } +16166: +16166: +16166: __normal_iterator& +16166: operator+=(difference_type __n) noexcept +16166: { _M_current += __n; return *this; } +16166: +16166: +16166: __normal_iterator +16166: operator+(difference_type __n) const noexcept +16166: { return __normal_iterator(_M_current + __n); } +16166: +16166: +16166: __normal_iterator& +16166: operator-=(difference_type __n) noexcept +16166: { _M_current -= __n; return *this; } +16166: +16166: +16166: __normal_iterator +16166: operator-(difference_type __n) const noexcept +16166: { return __normal_iterator(_M_current - __n); } +16166: +16166: +16166: const _Iterator& +16166: base() const noexcept +16166: { return _M_current; } +16166: }; +16166: # 1205 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, +16166: const __normal_iterator<_IteratorR, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() == __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, +16166: const __normal_iterator<_Iterator, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() == __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, +16166: const __normal_iterator<_IteratorR, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() != __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, +16166: const __normal_iterator<_Iterator, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() != __rhs.base(); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, +16166: const __normal_iterator<_IteratorR, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() < __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, +16166: const __normal_iterator<_Iterator, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() < __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, +16166: const __normal_iterator<_IteratorR, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() > __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, +16166: const __normal_iterator<_Iterator, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() > __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, +16166: const __normal_iterator<_IteratorR, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() <= __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, +16166: const __normal_iterator<_Iterator, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() <= __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, +16166: const __normal_iterator<_IteratorR, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() >= __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, +16166: const __normal_iterator<_Iterator, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() >= __rhs.base(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: +16166: [[__nodiscard__]] +16166: inline auto +16166: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, +16166: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept +16166: -> decltype(__lhs.base() - __rhs.base()) +16166: +16166: +16166: +16166: +16166: +16166: { return __lhs.base() - __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline typename __normal_iterator<_Iterator, _Container>::difference_type +16166: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, +16166: const __normal_iterator<_Iterator, _Container>& __rhs) +16166: noexcept +16166: { return __lhs.base() - __rhs.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline __normal_iterator<_Iterator, _Container> +16166: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type +16166: __n, const __normal_iterator<_Iterator, _Container>& __i) +16166: noexcept +16166: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } +16166: +16166: +16166: } +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: +16166: _Iterator +16166: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) +16166: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) +16166: { return __it.base(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr auto +16166: __to_address(const __gnu_cxx::__normal_iterator<_Iterator, +16166: _Container>& __it) noexcept +16166: -> decltype(std::__to_address(__it.base())) +16166: { return std::__to_address(__it.base()); } +16166: # 1412 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: namespace __detail +16166: { +16166: # 1428 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: } +16166: # 1439 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: class move_iterator +16166: +16166: +16166: +16166: { +16166: _Iterator _M_current; +16166: +16166: using __traits_type = iterator_traits<_Iterator>; +16166: +16166: using __base_ref = typename __traits_type::reference; +16166: +16166: +16166: template +16166: friend class move_iterator; +16166: # 1478 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: public: +16166: using iterator_type = _Iterator; +16166: # 1490 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: typedef typename __traits_type::iterator_category iterator_category; +16166: typedef typename __traits_type::value_type value_type; +16166: typedef typename __traits_type::difference_type difference_type; +16166: +16166: typedef _Iterator pointer; +16166: +16166: +16166: using reference +16166: = __conditional_t::value, +16166: typename remove_reference<__base_ref>::type&&, +16166: __base_ref>; +16166: +16166: +16166: constexpr +16166: move_iterator() +16166: : _M_current() { } +16166: +16166: explicit constexpr +16166: move_iterator(iterator_type __i) +16166: : _M_current(std::move(__i)) { } +16166: +16166: template +16166: +16166: +16166: +16166: constexpr +16166: move_iterator(const move_iterator<_Iter>& __i) +16166: : _M_current(__i._M_current) { } +16166: +16166: template +16166: +16166: +16166: +16166: +16166: constexpr +16166: move_iterator& operator=(const move_iterator<_Iter>& __i) +16166: { +16166: _M_current = __i._M_current; +16166: return *this; +16166: } +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr iterator_type +16166: base() const +16166: { return _M_current; } +16166: # 1548 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: [[__nodiscard__]] +16166: constexpr reference +16166: operator*() const +16166: +16166: +16166: +16166: { return static_cast(*_M_current); } +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr pointer +16166: operator->() const +16166: { return _M_current; } +16166: +16166: constexpr move_iterator& +16166: operator++() +16166: { +16166: ++_M_current; +16166: return *this; +16166: } +16166: +16166: constexpr move_iterator +16166: operator++(int) +16166: { +16166: move_iterator __tmp = *this; +16166: ++_M_current; +16166: return __tmp; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: constexpr move_iterator& +16166: operator--() +16166: { +16166: --_M_current; +16166: return *this; +16166: } +16166: +16166: constexpr move_iterator +16166: operator--(int) +16166: { +16166: move_iterator __tmp = *this; +16166: --_M_current; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr move_iterator +16166: operator+(difference_type __n) const +16166: { return move_iterator(_M_current + __n); } +16166: +16166: constexpr move_iterator& +16166: operator+=(difference_type __n) +16166: { +16166: _M_current += __n; +16166: return *this; +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr move_iterator +16166: operator-(difference_type __n) const +16166: { return move_iterator(_M_current - __n); } +16166: +16166: constexpr move_iterator& +16166: operator-=(difference_type __n) +16166: { +16166: _M_current -= __n; +16166: return *this; +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr reference +16166: operator[](difference_type __n) const +16166: +16166: +16166: +16166: { return std::move(_M_current[__n]); } +16166: # 1662 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: }; +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator==(const move_iterator<_IteratorL>& __x, +16166: const move_iterator<_IteratorR>& __y) +16166: +16166: +16166: +16166: { return __x.base() == __y.base(); } +16166: # 1683 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator!=(const move_iterator<_IteratorL>& __x, +16166: const move_iterator<_IteratorR>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator<(const move_iterator<_IteratorL>& __x, +16166: const move_iterator<_IteratorR>& __y) +16166: +16166: +16166: +16166: { return __x.base() < __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator<=(const move_iterator<_IteratorL>& __x, +16166: const move_iterator<_IteratorR>& __y) +16166: +16166: +16166: +16166: { return !(__y < __x); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>(const move_iterator<_IteratorL>& __x, +16166: const move_iterator<_IteratorR>& __y) +16166: +16166: +16166: +16166: { return __y < __x; } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>=(const move_iterator<_IteratorL>& __x, +16166: const move_iterator<_IteratorR>& __y) +16166: +16166: +16166: +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator==(const move_iterator<_Iterator>& __x, +16166: const move_iterator<_Iterator>& __y) +16166: +16166: { return __x.base() == __y.base(); } +16166: # 1750 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator!=(const move_iterator<_Iterator>& __x, +16166: const move_iterator<_Iterator>& __y) +16166: { return !(__x == __y); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator<(const move_iterator<_Iterator>& __x, +16166: const move_iterator<_Iterator>& __y) +16166: { return __x.base() < __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator<=(const move_iterator<_Iterator>& __x, +16166: const move_iterator<_Iterator>& __y) +16166: { return !(__y < __x); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>(const move_iterator<_Iterator>& __x, +16166: const move_iterator<_Iterator>& __y) +16166: { return __y < __x; } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr bool +16166: operator>=(const move_iterator<_Iterator>& __x, +16166: const move_iterator<_Iterator>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr auto +16166: operator-(const move_iterator<_IteratorL>& __x, +16166: const move_iterator<_IteratorR>& __y) +16166: -> decltype(__x.base() - __y.base()) +16166: { return __x.base() - __y.base(); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr move_iterator<_Iterator> +16166: operator+(typename move_iterator<_Iterator>::difference_type __n, +16166: const move_iterator<_Iterator>& __x) +16166: +16166: +16166: +16166: { return __x + __n; } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr move_iterator<_Iterator> +16166: make_move_iterator(_Iterator __i) +16166: { return move_iterator<_Iterator>(std::move(__i)); } +16166: +16166: template::value_type>::value, +16166: _Iterator, move_iterator<_Iterator>>> +16166: inline constexpr _ReturnType +16166: __make_move_if_noexcept_iterator(_Iterator __i) +16166: { return _ReturnType(__i); } +16166: +16166: +16166: +16166: template::value, +16166: const _Tp*, move_iterator<_Tp*>>> +16166: inline constexpr _ReturnType +16166: __make_move_if_noexcept_iterator(_Tp* __i) +16166: { return _ReturnType(__i); } +16166: # 2964 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: +16166: auto +16166: __niter_base(move_iterator<_Iterator> __it) +16166: -> decltype(make_move_iterator(__niter_base(__it.base()))) +16166: { return make_move_iterator(__niter_base(__it.base())); } +16166: +16166: template +16166: struct __is_move_iterator > +16166: { +16166: enum { __value = 1 }; +16166: typedef __true_type __type; +16166: }; +16166: +16166: template +16166: +16166: auto +16166: __miter_base(move_iterator<_Iterator> __it) +16166: -> decltype(__miter_base(__it.base())) +16166: { return __miter_base(__it.base()); } +16166: # 2996 "/usr/include/c++/14/bits/stl_iterator.h" 3 +16166: template +16166: using __iter_key_t = remove_const_t< +16166: +16166: +16166: +16166: typename iterator_traits<_InputIterator>::value_type::first_type>; +16166: +16166: +16166: template +16166: using __iter_val_t +16166: +16166: +16166: +16166: = typename iterator_traits<_InputIterator>::value_type::second_type; +16166: +16166: +16166: template +16166: struct pair; +16166: +16166: template +16166: using __iter_to_alloc_t +16166: = pair, __iter_val_t<_InputIterator>>; +16166: +16166: +16166: +16166: } +16166: # 68 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/debug/debug.h" 1 3 +16166: # 48 "/usr/include/c++/14/debug/debug.h" 3 +16166: namespace std +16166: { +16166: namespace __debug { } +16166: } +16166: +16166: +16166: +16166: +16166: namespace __gnu_debug +16166: { +16166: using namespace std::__debug; +16166: +16166: template +16166: struct _Safe_iterator; +16166: } +16166: # 70 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/predefined_ops.h" 1 3 +16166: # 35 "/usr/include/c++/14/bits/predefined_ops.h" 3 +16166: namespace __gnu_cxx +16166: { +16166: namespace __ops +16166: { +16166: struct _Iter_less_iter +16166: { +16166: template +16166: constexpr +16166: bool +16166: operator()(_Iterator1 __it1, _Iterator2 __it2) const +16166: { return *__it1 < *__it2; } +16166: }; +16166: +16166: constexpr +16166: inline _Iter_less_iter +16166: __iter_less_iter() +16166: { return _Iter_less_iter(); } +16166: +16166: struct _Iter_less_val +16166: { +16166: +16166: constexpr _Iter_less_val() = default; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: _Iter_less_val(_Iter_less_iter) { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator __it, _Value& __val) const +16166: { return *__it < __val; } +16166: }; +16166: +16166: +16166: inline _Iter_less_val +16166: __iter_less_val() +16166: { return _Iter_less_val(); } +16166: +16166: +16166: inline _Iter_less_val +16166: __iter_comp_val(_Iter_less_iter) +16166: { return _Iter_less_val(); } +16166: +16166: struct _Val_less_iter +16166: { +16166: +16166: constexpr _Val_less_iter() = default; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: _Val_less_iter(_Iter_less_iter) { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Value& __val, _Iterator __it) const +16166: { return __val < *__it; } +16166: }; +16166: +16166: +16166: inline _Val_less_iter +16166: __val_less_iter() +16166: { return _Val_less_iter(); } +16166: +16166: +16166: inline _Val_less_iter +16166: __val_comp_iter(_Iter_less_iter) +16166: { return _Val_less_iter(); } +16166: +16166: struct _Iter_equal_to_iter +16166: { +16166: template +16166: +16166: bool +16166: operator()(_Iterator1 __it1, _Iterator2 __it2) const +16166: { return *__it1 == *__it2; } +16166: }; +16166: +16166: +16166: inline _Iter_equal_to_iter +16166: __iter_equal_to_iter() +16166: { return _Iter_equal_to_iter(); } +16166: +16166: struct _Iter_equal_to_val +16166: { +16166: template +16166: +16166: bool +16166: operator()(_Iterator __it, _Value& __val) const +16166: { return *__it == __val; } +16166: }; +16166: +16166: +16166: inline _Iter_equal_to_val +16166: __iter_equal_to_val() +16166: { return _Iter_equal_to_val(); } +16166: +16166: +16166: inline _Iter_equal_to_val +16166: __iter_comp_val(_Iter_equal_to_iter) +16166: { return _Iter_equal_to_val(); } +16166: +16166: template +16166: struct _Iter_comp_iter +16166: { +16166: _Compare _M_comp; +16166: +16166: explicit constexpr +16166: _Iter_comp_iter(_Compare __comp) +16166: : _M_comp(std::move(__comp)) +16166: { } +16166: +16166: template +16166: constexpr +16166: bool +16166: operator()(_Iterator1 __it1, _Iterator2 __it2) +16166: { return bool(_M_comp(*__it1, *__it2)); } +16166: }; +16166: +16166: template +16166: constexpr +16166: inline _Iter_comp_iter<_Compare> +16166: __iter_comp_iter(_Compare __comp) +16166: { return _Iter_comp_iter<_Compare>(std::move(__comp)); } +16166: +16166: template +16166: struct _Iter_comp_val +16166: { +16166: _Compare _M_comp; +16166: +16166: +16166: explicit +16166: _Iter_comp_val(_Compare __comp) +16166: : _M_comp(std::move(__comp)) +16166: { } +16166: +16166: +16166: explicit +16166: _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) +16166: : _M_comp(__comp._M_comp) +16166: { } +16166: +16166: +16166: +16166: explicit +16166: _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) +16166: : _M_comp(std::move(__comp._M_comp)) +16166: { } +16166: +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator __it, _Value& __val) +16166: { return bool(_M_comp(*__it, __val)); } +16166: }; +16166: +16166: template +16166: +16166: inline _Iter_comp_val<_Compare> +16166: __iter_comp_val(_Compare __comp) +16166: { return _Iter_comp_val<_Compare>(std::move(__comp)); } +16166: +16166: template +16166: +16166: inline _Iter_comp_val<_Compare> +16166: __iter_comp_val(_Iter_comp_iter<_Compare> __comp) +16166: { return _Iter_comp_val<_Compare>(std::move(__comp)); } +16166: +16166: template +16166: struct _Val_comp_iter +16166: { +16166: _Compare _M_comp; +16166: +16166: +16166: explicit +16166: _Val_comp_iter(_Compare __comp) +16166: : _M_comp(std::move(__comp)) +16166: { } +16166: +16166: +16166: explicit +16166: _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) +16166: : _M_comp(__comp._M_comp) +16166: { } +16166: +16166: +16166: +16166: explicit +16166: _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) +16166: : _M_comp(std::move(__comp._M_comp)) +16166: { } +16166: +16166: +16166: template +16166: +16166: bool +16166: operator()(_Value& __val, _Iterator __it) +16166: { return bool(_M_comp(__val, *__it)); } +16166: }; +16166: +16166: template +16166: +16166: inline _Val_comp_iter<_Compare> +16166: __val_comp_iter(_Compare __comp) +16166: { return _Val_comp_iter<_Compare>(std::move(__comp)); } +16166: +16166: template +16166: +16166: inline _Val_comp_iter<_Compare> +16166: __val_comp_iter(_Iter_comp_iter<_Compare> __comp) +16166: { return _Val_comp_iter<_Compare>(std::move(__comp)); } +16166: +16166: template +16166: struct _Iter_equals_val +16166: { +16166: _Value& _M_value; +16166: +16166: +16166: explicit +16166: _Iter_equals_val(_Value& __value) +16166: : _M_value(__value) +16166: { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator __it) +16166: { return *__it == _M_value; } +16166: }; +16166: +16166: template +16166: +16166: inline _Iter_equals_val<_Value> +16166: __iter_equals_val(_Value& __val) +16166: { return _Iter_equals_val<_Value>(__val); } +16166: +16166: template +16166: struct _Iter_equals_iter +16166: { +16166: _Iterator1 _M_it1; +16166: +16166: +16166: explicit +16166: _Iter_equals_iter(_Iterator1 __it1) +16166: : _M_it1(__it1) +16166: { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator2 __it2) +16166: { return *__it2 == *_M_it1; } +16166: }; +16166: +16166: template +16166: +16166: inline _Iter_equals_iter<_Iterator> +16166: __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) +16166: { return _Iter_equals_iter<_Iterator>(__it); } +16166: +16166: template +16166: struct _Iter_pred +16166: { +16166: _Predicate _M_pred; +16166: +16166: +16166: explicit +16166: _Iter_pred(_Predicate __pred) +16166: : _M_pred(std::move(__pred)) +16166: { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator __it) +16166: { return bool(_M_pred(*__it)); } +16166: }; +16166: +16166: template +16166: +16166: inline _Iter_pred<_Predicate> +16166: __pred_iter(_Predicate __pred) +16166: { return _Iter_pred<_Predicate>(std::move(__pred)); } +16166: +16166: template +16166: struct _Iter_comp_to_val +16166: { +16166: _Compare _M_comp; +16166: _Value& _M_value; +16166: +16166: +16166: _Iter_comp_to_val(_Compare __comp, _Value& __value) +16166: : _M_comp(std::move(__comp)), _M_value(__value) +16166: { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator __it) +16166: { return bool(_M_comp(*__it, _M_value)); } +16166: }; +16166: +16166: template +16166: _Iter_comp_to_val<_Compare, _Value> +16166: +16166: __iter_comp_val(_Compare __comp, _Value &__val) +16166: { +16166: return _Iter_comp_to_val<_Compare, _Value>(std::move(__comp), __val); +16166: } +16166: +16166: template +16166: struct _Iter_comp_to_iter +16166: { +16166: _Compare _M_comp; +16166: _Iterator1 _M_it1; +16166: +16166: +16166: _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) +16166: : _M_comp(std::move(__comp)), _M_it1(__it1) +16166: { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator2 __it2) +16166: { return bool(_M_comp(*__it2, *_M_it1)); } +16166: }; +16166: +16166: template +16166: +16166: inline _Iter_comp_to_iter<_Compare, _Iterator> +16166: __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) +16166: { +16166: return _Iter_comp_to_iter<_Compare, _Iterator>( +16166: std::move(__comp._M_comp), __it); +16166: } +16166: +16166: template +16166: struct _Iter_negate +16166: { +16166: _Predicate _M_pred; +16166: +16166: +16166: explicit +16166: _Iter_negate(_Predicate __pred) +16166: : _M_pred(std::move(__pred)) +16166: { } +16166: +16166: template +16166: +16166: bool +16166: operator()(_Iterator __it) +16166: { return !bool(_M_pred(*__it)); } +16166: }; +16166: +16166: template +16166: +16166: inline _Iter_negate<_Predicate> +16166: __negate(_Iter_pred<_Predicate> __pred) +16166: { return _Iter_negate<_Predicate>(std::move(__pred._M_pred)); } +16166: +16166: } +16166: } +16166: # 72 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bit" 1 3 +16166: # 32 "/usr/include/c++/14/bit" 3 +16166: +16166: # 33 "/usr/include/c++/14/bit" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/concepts" 1 3 +16166: # 33 "/usr/include/c++/14/concepts" 3 +16166: +16166: # 34 "/usr/include/c++/14/concepts" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 37 "/usr/include/c++/14/concepts" 2 3 +16166: # 37 "/usr/include/c++/14/bit" 2 3 +16166: # 61 "/usr/include/c++/14/bit" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 62 "/usr/include/c++/14/bit" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 155 "/usr/include/c++/14/bit" 3 +16166: template +16166: constexpr _Tp +16166: __rotl(_Tp __x, int __s) noexcept +16166: { +16166: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +16166: if constexpr ((_Nd & (_Nd - 1)) == 0) +16166: { +16166: +16166: +16166: constexpr unsigned __uNd = _Nd; +16166: const unsigned __r = __s; +16166: return (__x << (__r % __uNd)) | (__x >> ((-__r) % __uNd)); +16166: } +16166: const int __r = __s % _Nd; +16166: if (__r == 0) +16166: return __x; +16166: else if (__r > 0) +16166: return (__x << __r) | (__x >> ((_Nd - __r) % _Nd)); +16166: else +16166: return (__x >> -__r) | (__x << ((_Nd + __r) % _Nd)); +16166: } +16166: +16166: template +16166: constexpr _Tp +16166: __rotr(_Tp __x, int __s) noexcept +16166: { +16166: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +16166: if constexpr ((_Nd & (_Nd - 1)) == 0) +16166: { +16166: +16166: +16166: constexpr unsigned __uNd = _Nd; +16166: const unsigned __r = __s; +16166: return (__x >> (__r % __uNd)) | (__x << ((-__r) % __uNd)); +16166: } +16166: const int __r = __s % _Nd; +16166: if (__r == 0) +16166: return __x; +16166: else if (__r > 0) +16166: return (__x >> __r) | (__x << ((_Nd - __r) % _Nd)); +16166: else +16166: return (__x << -__r) | (__x >> ((_Nd + __r) % _Nd)); +16166: } +16166: +16166: template +16166: constexpr int +16166: __countl_zero(_Tp __x) noexcept +16166: { +16166: using __gnu_cxx::__int_traits; +16166: constexpr auto _Nd = __int_traits<_Tp>::__digits; +16166: +16166: if (__x == 0) +16166: return _Nd; +16166: +16166: constexpr auto _Nd_ull = __int_traits::__digits; +16166: constexpr auto _Nd_ul = __int_traits::__digits; +16166: constexpr auto _Nd_u = __int_traits::__digits; +16166: +16166: if constexpr (_Nd <= _Nd_u) +16166: { +16166: constexpr int __diff = _Nd_u - _Nd; +16166: return __builtin_clz(__x) - __diff; +16166: } +16166: else if constexpr (_Nd <= _Nd_ul) +16166: { +16166: constexpr int __diff = _Nd_ul - _Nd; +16166: return __builtin_clzl(__x) - __diff; +16166: } +16166: else if constexpr (_Nd <= _Nd_ull) +16166: { +16166: constexpr int __diff = _Nd_ull - _Nd; +16166: return __builtin_clzll(__x) - __diff; +16166: } +16166: else +16166: { +16166: static_assert(_Nd <= (2 * _Nd_ull), +16166: "Maximum supported integer size is 128-bit"); +16166: +16166: unsigned long long __high = __x >> _Nd_ull; +16166: if (__high != 0) +16166: { +16166: constexpr int __diff = (2 * _Nd_ull) - _Nd; +16166: return __builtin_clzll(__high) - __diff; +16166: } +16166: constexpr auto __max_ull = __int_traits::__max; +16166: unsigned long long __low = __x & __max_ull; +16166: return (_Nd - _Nd_ull) + __builtin_clzll(__low); +16166: } +16166: } +16166: +16166: template +16166: constexpr int +16166: __countl_one(_Tp __x) noexcept +16166: { +16166: return std::__countl_zero<_Tp>((_Tp)~__x); +16166: } +16166: +16166: template +16166: constexpr int +16166: __countr_zero(_Tp __x) noexcept +16166: { +16166: using __gnu_cxx::__int_traits; +16166: constexpr auto _Nd = __int_traits<_Tp>::__digits; +16166: +16166: if (__x == 0) +16166: return _Nd; +16166: +16166: constexpr auto _Nd_ull = __int_traits::__digits; +16166: constexpr auto _Nd_ul = __int_traits::__digits; +16166: constexpr auto _Nd_u = __int_traits::__digits; +16166: +16166: if constexpr (_Nd <= _Nd_u) +16166: return __builtin_ctz(__x); +16166: else if constexpr (_Nd <= _Nd_ul) +16166: return __builtin_ctzl(__x); +16166: else if constexpr (_Nd <= _Nd_ull) +16166: return __builtin_ctzll(__x); +16166: else +16166: { +16166: static_assert(_Nd <= (2 * _Nd_ull), +16166: "Maximum supported integer size is 128-bit"); +16166: +16166: constexpr auto __max_ull = __int_traits::__max; +16166: unsigned long long __low = __x & __max_ull; +16166: if (__low != 0) +16166: return __builtin_ctzll(__low); +16166: unsigned long long __high = __x >> _Nd_ull; +16166: return __builtin_ctzll(__high) + _Nd_ull; +16166: } +16166: } +16166: +16166: template +16166: constexpr int +16166: __countr_one(_Tp __x) noexcept +16166: { +16166: return std::__countr_zero((_Tp)~__x); +16166: } +16166: +16166: template +16166: constexpr int +16166: __popcount(_Tp __x) noexcept +16166: { +16166: using __gnu_cxx::__int_traits; +16166: constexpr auto _Nd = __int_traits<_Tp>::__digits; +16166: +16166: constexpr auto _Nd_ull = __int_traits::__digits; +16166: constexpr auto _Nd_ul = __int_traits::__digits; +16166: constexpr auto _Nd_u = __int_traits::__digits; +16166: +16166: if constexpr (_Nd <= _Nd_u) +16166: return __builtin_popcount(__x); +16166: else if constexpr (_Nd <= _Nd_ul) +16166: return __builtin_popcountl(__x); +16166: else if constexpr (_Nd <= _Nd_ull) +16166: return __builtin_popcountll(__x); +16166: else +16166: { +16166: static_assert(_Nd <= (2 * _Nd_ull), +16166: "Maximum supported integer size is 128-bit"); +16166: +16166: constexpr auto __max_ull = __int_traits::__max; +16166: unsigned long long __low = __x & __max_ull; +16166: unsigned long long __high = __x >> _Nd_ull; +16166: return __builtin_popcountll(__low) + __builtin_popcountll(__high); +16166: } +16166: } +16166: +16166: template +16166: constexpr bool +16166: __has_single_bit(_Tp __x) noexcept +16166: { return std::__popcount(__x) == 1; } +16166: +16166: template +16166: constexpr _Tp +16166: __bit_ceil(_Tp __x) noexcept +16166: { +16166: using __gnu_cxx::__int_traits; +16166: constexpr auto _Nd = __int_traits<_Tp>::__digits; +16166: if (__x == 0 || __x == 1) +16166: return 1; +16166: auto __shift_exponent = _Nd - std::__countl_zero((_Tp)(__x - 1u)); +16166: +16166: +16166: +16166: +16166: if (!std::__is_constant_evaluated()) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__shift_exponent != __int_traits<_Tp>::__digits)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: using __promoted_type = decltype(__x << 1); +16166: if constexpr (!is_same<__promoted_type, _Tp>::value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: const int __extra_exp = sizeof(__promoted_type) / sizeof(_Tp) / 2; +16166: __shift_exponent |= (__shift_exponent & _Nd) << __extra_exp; +16166: } +16166: return (_Tp)1u << __shift_exponent; +16166: } +16166: +16166: template +16166: constexpr _Tp +16166: __bit_floor(_Tp __x) noexcept +16166: { +16166: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +16166: if (__x == 0) +16166: return 0; +16166: return (_Tp)1u << (_Nd - std::__countl_zero((_Tp)(__x >> 1))); +16166: } +16166: +16166: template +16166: constexpr int +16166: __bit_width(_Tp __x) noexcept +16166: { +16166: constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits; +16166: return _Nd - std::__countl_zero(__x); +16166: } +16166: # 482 "/usr/include/c++/14/bit" 3 +16166: +16166: } +16166: # 77 "/usr/include/c++/14/bits/stl_algobase.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr +16166: inline int +16166: __memcmp(const _Tp* __first1, const _Up* __first2, size_t __num) +16166: { +16166: +16166: static_assert(sizeof(_Tp) == sizeof(_Up), "can be compared with memcmp"); +16166: # 108 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: return __builtin_memcmp(__first1, __first2, sizeof(_Tp) * __num); +16166: } +16166: # 152 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline void +16166: iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) +16166: { +16166: +16166: +16166: +16166: +16166: # 185 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: swap(*__a, *__b); +16166: +16166: } +16166: # 201 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: _ForwardIterator2 +16166: swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first1 != __last1; ++__first1, (void)++__first2) +16166: std::iter_swap(__first1, __first2); +16166: return __first2; +16166: } +16166: # 230 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline const _Tp& +16166: min(const _Tp& __a, const _Tp& __b) +16166: { +16166: +16166: +16166: +16166: if (__b < __a) +16166: return __b; +16166: return __a; +16166: } +16166: # 254 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline const _Tp& +16166: max(const _Tp& __a, const _Tp& __b) +16166: { +16166: +16166: +16166: +16166: if (__a < __b) +16166: return __b; +16166: return __a; +16166: } +16166: # 278 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline const _Tp& +16166: min(const _Tp& __a, const _Tp& __b, _Compare __comp) +16166: { +16166: +16166: if (__comp(__b, __a)) +16166: return __b; +16166: return __a; +16166: } +16166: # 300 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline const _Tp& +16166: max(const _Tp& __a, const _Tp& __b, _Compare __comp) +16166: { +16166: +16166: if (__comp(__a, __b)) +16166: return __b; +16166: return __a; +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: inline _Iterator +16166: __niter_base(_Iterator __it) +16166: noexcept(std::is_nothrow_copy_constructible<_Iterator>::value) +16166: { return __it; } +16166: # 332 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: decltype(std::__niter_base(std::declval<_Ite>())) +16166: __niter_base(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, +16166: std::random_access_iterator_tag>&) +16166: noexcept(std::is_nothrow_copy_constructible<_Ite>::value); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline _From +16166: __niter_wrap(_From __from, _To __res) +16166: { return __from + (std::__niter_base(__res) - std::__niter_base(__from)); } +16166: +16166: +16166: template +16166: +16166: inline _Iterator +16166: __niter_wrap(const _Iterator&, _Iterator __res) +16166: { return __res; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __copy_move +16166: { +16166: template +16166: +16166: static _OI +16166: __copy_m(_II __first, _II __last, _OI __result) +16166: { +16166: for (; __first != __last; ++__result, (void)++__first) +16166: *__result = *__first; +16166: return __result; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct __copy_move +16166: { +16166: template +16166: +16166: static _OI +16166: __copy_m(_II __first, _II __last, _OI __result) +16166: { +16166: for (; __first != __last; ++__result, (void)++__first) +16166: *__result = std::move(*__first); +16166: return __result; +16166: } +16166: }; +16166: +16166: +16166: template<> +16166: struct __copy_move +16166: { +16166: template +16166: +16166: static _OI +16166: __copy_m(_II __first, _II __last, _OI __result) +16166: { +16166: typedef typename iterator_traits<_II>::difference_type _Distance; +16166: for(_Distance __n = __last - __first; __n > 0; --__n) +16166: { +16166: *__result = *__first; +16166: ++__first; +16166: ++__result; +16166: } +16166: return __result; +16166: } +16166: +16166: template +16166: static void +16166: __assign_one(_Tp* __to, _Up* __from) +16166: { *__to = *__from; } +16166: }; +16166: +16166: +16166: template<> +16166: struct __copy_move +16166: { +16166: template +16166: +16166: static _OI +16166: __copy_m(_II __first, _II __last, _OI __result) +16166: { +16166: typedef typename iterator_traits<_II>::difference_type _Distance; +16166: for(_Distance __n = __last - __first; __n > 0; --__n) +16166: { +16166: *__result = std::move(*__first); +16166: ++__first; +16166: ++__result; +16166: } +16166: return __result; +16166: } +16166: +16166: template +16166: static void +16166: __assign_one(_Tp* __to, _Up* __from) +16166: { *__to = std::move(*__from); } +16166: }; +16166: +16166: +16166: template +16166: struct __copy_move<_IsMove, true, random_access_iterator_tag> +16166: { +16166: template +16166: +16166: static _Up* +16166: __copy_m(_Tp* __first, _Tp* __last, _Up* __result) +16166: { +16166: const ptrdiff_t _Num = __last - __first; +16166: if (__builtin_expect(_Num > 1, true)) +16166: __builtin_memmove(__result, __first, sizeof(_Tp) * _Num); +16166: else if (_Num == 1) +16166: std::__copy_move<_IsMove, false, random_access_iterator_tag>:: +16166: __assign_one(__result, __first); +16166: return __result + _Num; +16166: } +16166: }; +16166: +16166: +16166: +16166: template +16166: struct _Deque_iterator; +16166: +16166: struct _Bit_iterator; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct char_traits; +16166: +16166: template +16166: class istreambuf_iterator; +16166: +16166: template +16166: class ostreambuf_iterator; +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type +16166: __copy_move_a2(_CharT*, _CharT*, +16166: ostreambuf_iterator<_CharT, char_traits<_CharT> >); +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type +16166: __copy_move_a2(const _CharT*, const _CharT*, +16166: ostreambuf_iterator<_CharT, char_traits<_CharT> >); +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: _CharT*>::__type +16166: __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, +16166: istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_char<_CharT>::__value, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +16166: __copy_move_a2( +16166: istreambuf_iterator<_CharT, char_traits<_CharT> >, +16166: istreambuf_iterator<_CharT, char_traits<_CharT> >, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*>); +16166: +16166: +16166: template +16166: +16166: inline _OI +16166: __copy_move_a2(_II __first, _II __last, _OI __result) +16166: { +16166: typedef typename iterator_traits<_II>::iterator_category _Category; +16166: +16166: +16166: +16166: +16166: +16166: return std::__copy_move<_IsMove, __memcpyable<_OI, _II>::__value, +16166: _Category>::__copy_m(__first, __last, __result); +16166: } +16166: +16166: template +16166: _OI +16166: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr>, +16166: _OI); +16166: +16166: template +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +16166: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr>, +16166: std::_Deque_iterator<_ITp, _IRef, _IPtr>, +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, +16166: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +16166: __copy_move_a1(_II, _II, std::_Deque_iterator<_Tp, _Tp&, _Tp*>); +16166: +16166: template +16166: +16166: inline _OI +16166: __copy_move_a1(_II __first, _II __last, _OI __result) +16166: { return std::__copy_move_a2<_IsMove>(__first, __last, __result); } +16166: +16166: template +16166: +16166: inline _OI +16166: __copy_move_a(_II __first, _II __last, _OI __result) +16166: { +16166: return std::__niter_wrap(__result, +16166: std::__copy_move_a1<_IsMove>(std::__niter_base(__first), +16166: std::__niter_base(__last), +16166: std::__niter_base(__result))); +16166: } +16166: +16166: template +16166: +16166: _OI +16166: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +16166: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +16166: _OI); +16166: +16166: template +16166: +16166: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> +16166: __copy_move_a(_II, _II, +16166: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); +16166: +16166: template +16166: +16166: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> +16166: __copy_move_a(const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +16166: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +16166: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); +16166: +16166: template +16166: +16166: _OutputIterator +16166: __copy_n_a(_InputIterator __first, _Size __n, _OutputIterator __result, +16166: bool) +16166: { +16166: if (__n > 0) +16166: { +16166: while (true) +16166: { +16166: *__result = *__first; +16166: ++__result; +16166: if (--__n > 0) +16166: ++__first; +16166: else +16166: break; +16166: } +16166: } +16166: return __result; +16166: } +16166: +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_char<_CharT>::__value, _CharT*>::__type +16166: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, +16166: _Size, _CharT*, bool); +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_char<_CharT>::__value, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +16166: __copy_n_a(istreambuf_iterator<_CharT, char_traits<_CharT> >, _Size, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*>, +16166: bool); +16166: # 639 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline _OI +16166: copy(_II __first, _II __last, _OI __result) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__copy_move_a<__is_move_iterator<_II>::__value> +16166: (std::__miter_base(__first), std::__miter_base(__last), __result); +16166: } +16166: # 672 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline _OI +16166: move(_II __first, _II __last, _OI __result) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__copy_move_a(std::__miter_base(__first), +16166: std::__miter_base(__last), __result); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __copy_move_backward +16166: { +16166: template +16166: +16166: static _BI2 +16166: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { +16166: while (__first != __last) +16166: *--__result = *--__last; +16166: return __result; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct __copy_move_backward +16166: { +16166: template +16166: +16166: static _BI2 +16166: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { +16166: while (__first != __last) +16166: *--__result = std::move(*--__last); +16166: return __result; +16166: } +16166: }; +16166: +16166: +16166: template<> +16166: struct __copy_move_backward +16166: { +16166: template +16166: +16166: static _BI2 +16166: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { +16166: typename iterator_traits<_BI1>::difference_type +16166: __n = __last - __first; +16166: for (; __n > 0; --__n) +16166: *--__result = *--__last; +16166: return __result; +16166: } +16166: }; +16166: +16166: +16166: template<> +16166: struct __copy_move_backward +16166: { +16166: template +16166: +16166: static _BI2 +16166: __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { +16166: typename iterator_traits<_BI1>::difference_type +16166: __n = __last - __first; +16166: for (; __n > 0; --__n) +16166: *--__result = std::move(*--__last); +16166: return __result; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> +16166: { +16166: template +16166: +16166: static _Up* +16166: __copy_move_b(_Tp* __first, _Tp* __last, _Up* __result) +16166: { +16166: const ptrdiff_t _Num = __last - __first; +16166: if (__builtin_expect(_Num > 1, true)) +16166: __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); +16166: else if (_Num == 1) +16166: std::__copy_move<_IsMove, false, random_access_iterator_tag>:: +16166: __assign_one(__result - 1, __first); +16166: return __result - _Num; +16166: } +16166: }; +16166: +16166: template +16166: +16166: inline _BI2 +16166: __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { +16166: typedef typename iterator_traits<_BI1>::iterator_category _Category; +16166: +16166: +16166: +16166: +16166: +16166: return std::__copy_move_backward<_IsMove, +16166: __memcpyable<_BI2, _BI1>::__value, +16166: _Category>::__copy_move_b(__first, +16166: __last, +16166: __result); +16166: } +16166: +16166: template +16166: +16166: inline _BI2 +16166: __copy_move_backward_a1(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { return std::__copy_move_backward_a2<_IsMove>(__first, __last, __result); } +16166: +16166: template +16166: _OI +16166: __copy_move_backward_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr>, +16166: _OI); +16166: +16166: template +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +16166: __copy_move_backward_a1( +16166: std::_Deque_iterator<_ITp, _IRef, _IPtr>, +16166: std::_Deque_iterator<_ITp, _IRef, _IPtr>, +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*>); +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, +16166: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +16166: __copy_move_backward_a1(_II, _II, +16166: std::_Deque_iterator<_Tp, _Tp&, _Tp*>); +16166: +16166: template +16166: +16166: inline _OI +16166: __copy_move_backward_a(_II __first, _II __last, _OI __result) +16166: { +16166: return std::__niter_wrap(__result, +16166: std::__copy_move_backward_a1<_IsMove> +16166: (std::__niter_base(__first), std::__niter_base(__last), +16166: std::__niter_base(__result))); +16166: } +16166: +16166: template +16166: +16166: _OI +16166: __copy_move_backward_a( +16166: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +16166: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +16166: _OI); +16166: +16166: template +16166: +16166: __gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> +16166: __copy_move_backward_a(_II, _II, +16166: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&); +16166: +16166: template +16166: +16166: ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat> +16166: __copy_move_backward_a( +16166: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +16166: const ::__gnu_debug::_Safe_iterator<_IIte, _ISeq, _ICat>&, +16166: const ::__gnu_debug::_Safe_iterator<_OIte, _OSeq, _OCat>&); +16166: # 875 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline _BI2 +16166: copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__copy_move_backward_a<__is_move_iterator<_BI1>::__value> +16166: (std::__miter_base(__first), std::__miter_base(__last), __result); +16166: } +16166: # 910 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline _BI2 +16166: move_backward(_BI1 __first, _BI1 __last, _BI2 __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__copy_move_backward_a(std::__miter_base(__first), +16166: std::__miter_base(__last), +16166: __result); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline typename +16166: __gnu_cxx::__enable_if::__value, void>::__type +16166: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __value) +16166: { +16166: for (; __first != __last; ++__first) +16166: *__first = __value; +16166: } +16166: +16166: template +16166: +16166: inline typename +16166: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type +16166: __fill_a1(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __value) +16166: { +16166: const _Tp __tmp = __value; +16166: for (; __first != __last; ++__first) +16166: *__first = __tmp; +16166: } +16166: +16166: +16166: template +16166: +16166: inline typename +16166: __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type +16166: __fill_a1(_Tp* __first, _Tp* __last, const _Tp& __c) +16166: { +16166: const _Tp __tmp = __c; +16166: # 971 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: if (const size_t __len = __last - __first) +16166: __builtin_memset(__first, static_cast(__tmp), __len); +16166: } +16166: +16166: template +16166: +16166: inline void +16166: __fill_a1(::__gnu_cxx::__normal_iterator<_Ite, _Cont> __first, +16166: ::__gnu_cxx::__normal_iterator<_Ite, _Cont> __last, +16166: const _Tp& __value) +16166: { std::__fill_a1(__first.base(), __last.base(), __value); } +16166: +16166: template +16166: void +16166: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, +16166: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>&, +16166: const _VTp&); +16166: +16166: +16166: void +16166: __fill_a1(std::_Bit_iterator, std::_Bit_iterator, +16166: const bool&); +16166: +16166: template +16166: +16166: inline void +16166: __fill_a(_FIte __first, _FIte __last, const _Tp& __value) +16166: { std::__fill_a1(__first, __last, __value); } +16166: +16166: template +16166: +16166: void +16166: __fill_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +16166: const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>&, +16166: const _Tp&); +16166: # 1019 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline void +16166: fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: std::__fill_a(__first, __last, __value); +16166: } +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: +16166: inline constexpr int +16166: __size_to_integer(int __n) { return __n; } +16166: inline constexpr unsigned +16166: __size_to_integer(unsigned __n) { return __n; } +16166: inline constexpr long +16166: __size_to_integer(long __n) { return __n; } +16166: inline constexpr unsigned long +16166: __size_to_integer(unsigned long __n) { return __n; } +16166: inline constexpr long long +16166: __size_to_integer(long long __n) { return __n; } +16166: inline constexpr unsigned long long +16166: __size_to_integer(unsigned long long __n) { return __n; } +16166: # 1073 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: inline constexpr long long +16166: __size_to_integer(float __n) { return (long long)__n; } +16166: inline constexpr long long +16166: __size_to_integer(double __n) { return (long long)__n; } +16166: inline constexpr long long +16166: __size_to_integer(long double __n) { return (long long)__n; } +16166: +16166: +16166: +16166: +16166: #pragma GCC diagnostic pop +16166: +16166: template +16166: +16166: inline typename +16166: __gnu_cxx::__enable_if::__value, _OutputIterator>::__type +16166: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) +16166: { +16166: for (; __n > 0; --__n, (void) ++__first) +16166: *__first = __value; +16166: return __first; +16166: } +16166: +16166: template +16166: +16166: inline typename +16166: __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type +16166: __fill_n_a1(_OutputIterator __first, _Size __n, const _Tp& __value) +16166: { +16166: const _Tp __tmp = __value; +16166: for (; __n > 0; --__n, (void) ++__first) +16166: *__first = __tmp; +16166: return __first; +16166: } +16166: +16166: template +16166: +16166: ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat> +16166: __fill_n_a(const ::__gnu_debug::_Safe_iterator<_Ite, _Seq, _Cat>& __first, +16166: _Size __n, const _Tp& __value, +16166: std::input_iterator_tag); +16166: +16166: template +16166: +16166: inline _OutputIterator +16166: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, +16166: std::output_iterator_tag) +16166: { +16166: +16166: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); +16166: +16166: return __fill_n_a1(__first, __n, __value); +16166: } +16166: +16166: template +16166: +16166: inline _OutputIterator +16166: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, +16166: std::input_iterator_tag) +16166: { +16166: +16166: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); +16166: +16166: return __fill_n_a1(__first, __n, __value); +16166: } +16166: +16166: template +16166: +16166: inline _OutputIterator +16166: __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value, +16166: std::random_access_iterator_tag) +16166: { +16166: +16166: static_assert(is_integral<_Size>{}, "fill_n must pass integral size"); +16166: +16166: if (__n <= 0) +16166: return __first; +16166: +16166: ; +16166: +16166: std::__fill_a(__first, __first + __n, __value); +16166: return __first + __n; +16166: } +16166: # 1175 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline _OI +16166: fill_n(_OI __first, _Size __n, const _Tp& __value) +16166: { +16166: +16166: +16166: +16166: return std::__fill_n_a(__first, std::__size_to_integer(__n), __value, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: template +16166: struct __equal +16166: { +16166: template +16166: +16166: static bool +16166: equal(_II1 __first1, _II1 __last1, _II2 __first2) +16166: { +16166: for (; __first1 != __last1; ++__first1, (void) ++__first2) +16166: if (!(*__first1 == *__first2)) +16166: return false; +16166: return true; +16166: } +16166: }; +16166: +16166: template<> +16166: struct __equal +16166: { +16166: template +16166: +16166: static bool +16166: equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) +16166: { +16166: if (const size_t __len = (__last1 - __first1)) +16166: return !std::__memcmp(__first1, __first2, __len); +16166: return true; +16166: } +16166: }; +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, bool>::__type +16166: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr>, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr>, +16166: _II); +16166: +16166: template +16166: bool +16166: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, bool>::__type +16166: __equal_aux1(_II, _II, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr>); +16166: +16166: template +16166: +16166: inline bool +16166: __equal_aux1(_II1 __first1, _II1 __last1, _II2 __first2) +16166: { +16166: typedef typename iterator_traits<_II1>::value_type _ValueType1; +16166: const bool __simple = ((__is_integer<_ValueType1>::__value +16166: || __is_pointer<_ValueType1>::__value) +16166: && __memcmpable<_II1, _II2>::__value); +16166: return std::__equal<__simple>::equal(__first1, __last1, __first2); +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) +16166: { +16166: return std::__equal_aux1(std::__niter_base(__first1), +16166: std::__niter_base(__last1), +16166: std::__niter_base(__first2)); +16166: } +16166: +16166: template +16166: +16166: bool +16166: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +16166: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +16166: _II2); +16166: +16166: template +16166: +16166: bool +16166: __equal_aux(_II1, _II1, +16166: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); +16166: +16166: template +16166: +16166: bool +16166: __equal_aux(const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +16166: const ::__gnu_debug::_Safe_iterator<_II1, _Seq1, _Cat1>&, +16166: const ::__gnu_debug::_Safe_iterator<_II2, _Seq2, _Cat2>&); +16166: +16166: template +16166: struct __lc_rai +16166: { +16166: template +16166: +16166: static _II1 +16166: __newlast1(_II1, _II1 __last1, _II2, _II2) +16166: { return __last1; } +16166: +16166: template +16166: +16166: static bool +16166: __cnd2(_II __first, _II __last) +16166: { return __first != __last; } +16166: }; +16166: +16166: template<> +16166: struct __lc_rai +16166: { +16166: template +16166: +16166: static _RAI1 +16166: __newlast1(_RAI1 __first1, _RAI1 __last1, +16166: _RAI2 __first2, _RAI2 __last2) +16166: { +16166: const typename iterator_traits<_RAI1>::difference_type +16166: __diff1 = __last1 - __first1; +16166: const typename iterator_traits<_RAI2>::difference_type +16166: __diff2 = __last2 - __first2; +16166: return __diff2 < __diff1 ? __first1 + __diff2 : __last1; +16166: } +16166: +16166: template +16166: static bool +16166: __cnd2(_RAI, _RAI) +16166: { return true; } +16166: }; +16166: +16166: template +16166: +16166: bool +16166: __lexicographical_compare_impl(_II1 __first1, _II1 __last1, +16166: _II2 __first2, _II2 __last2, +16166: _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_II1>::iterator_category _Category1; +16166: typedef typename iterator_traits<_II2>::iterator_category _Category2; +16166: typedef std::__lc_rai<_Category1, _Category2> __rai_type; +16166: +16166: __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); +16166: for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); +16166: ++__first1, (void)++__first2) +16166: { +16166: if (__comp(__first1, __first2)) +16166: return true; +16166: if (__comp(__first2, __first1)) +16166: return false; +16166: } +16166: return __first1 == __last1 && __first2 != __last2; +16166: } +16166: +16166: template +16166: struct __lexicographical_compare +16166: { +16166: template +16166: +16166: static bool +16166: __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +16166: { +16166: using __gnu_cxx::__ops::__iter_less_iter; +16166: return std::__lexicographical_compare_impl(__first1, __last1, +16166: __first2, __last2, +16166: __iter_less_iter()); +16166: } +16166: +16166: template +16166: +16166: static int +16166: __3way(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +16166: { +16166: while (__first1 != __last1) +16166: { +16166: if (__first2 == __last2) +16166: return +1; +16166: if (*__first1 < *__first2) +16166: return -1; +16166: if (*__first2 < *__first1) +16166: return +1; +16166: ++__first1; +16166: ++__first2; +16166: } +16166: return int(__first2 == __last2) - 1; +16166: } +16166: }; +16166: +16166: template<> +16166: struct __lexicographical_compare +16166: { +16166: template +16166: +16166: static bool +16166: __lc(const _Tp* __first1, const _Tp* __last1, +16166: const _Up* __first2, const _Up* __last2) +16166: { return __3way(__first1, __last1, __first2, __last2) < 0; } +16166: +16166: template +16166: +16166: static ptrdiff_t +16166: __3way(const _Tp* __first1, const _Tp* __last1, +16166: const _Up* __first2, const _Up* __last2) +16166: { +16166: const size_t __len1 = __last1 - __first1; +16166: const size_t __len2 = __last2 - __first2; +16166: if (const size_t __len = std::min(__len1, __len2)) +16166: if (int __result = std::__memcmp(__first1, __first2, __len)) +16166: return __result; +16166: return ptrdiff_t(__len1 - __len2); +16166: } +16166: }; +16166: +16166: template +16166: +16166: inline bool +16166: __lexicographical_compare_aux1(_II1 __first1, _II1 __last1, +16166: _II2 __first2, _II2 __last2) +16166: { +16166: typedef typename iterator_traits<_II1>::value_type _ValueType1; +16166: typedef typename iterator_traits<_II2>::value_type _ValueType2; +16166: const bool __simple = +16166: (__is_memcmp_ordered_with<_ValueType1, _ValueType2>::__value +16166: && __is_pointer<_II1>::__value +16166: && __is_pointer<_II2>::__value +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ); +16166: +16166: return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, +16166: __first2, __last2); +16166: } +16166: +16166: template +16166: bool +16166: __lexicographical_compare_aux1( +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +16166: _Tp2*, _Tp2*); +16166: +16166: template +16166: bool +16166: __lexicographical_compare_aux1(_Tp1*, _Tp1*, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); +16166: +16166: template +16166: bool +16166: __lexicographical_compare_aux1( +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1>, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2>); +16166: +16166: template +16166: +16166: inline bool +16166: __lexicographical_compare_aux(_II1 __first1, _II1 __last1, +16166: _II2 __first2, _II2 __last2) +16166: { +16166: return std::__lexicographical_compare_aux1(std::__niter_base(__first1), +16166: std::__niter_base(__last1), +16166: std::__niter_base(__first2), +16166: std::__niter_base(__last2)); +16166: } +16166: +16166: template +16166: +16166: bool +16166: __lexicographical_compare_aux( +16166: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +16166: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +16166: _II2, _II2); +16166: +16166: template +16166: +16166: bool +16166: __lexicographical_compare_aux( +16166: _II1, _II1, +16166: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, +16166: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); +16166: +16166: template +16166: +16166: bool +16166: __lexicographical_compare_aux( +16166: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +16166: const ::__gnu_debug::_Safe_iterator<_Iter1, _Seq1, _Cat1>&, +16166: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&, +16166: const ::__gnu_debug::_Safe_iterator<_Iter2, _Seq2, _Cat2>&); +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __lower_bound(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val, _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::difference_type +16166: _DistanceType; +16166: +16166: _DistanceType __len = std::distance(__first, __last); +16166: +16166: while (__len > 0) +16166: { +16166: _DistanceType __half = __len >> 1; +16166: _ForwardIterator __middle = __first; +16166: std::advance(__middle, __half); +16166: if (__comp(__middle, __val)) +16166: { +16166: __first = __middle; +16166: ++__first; +16166: __len = __len - __half - 1; +16166: } +16166: else +16166: __len = __half; +16166: } +16166: return __first; +16166: } +16166: # 1527 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: lower_bound(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__lower_bound(__first, __last, __val, +16166: __gnu_cxx::__ops::__iter_less_val()); +16166: } +16166: +16166: +16166: +16166: template +16166: inline constexpr _Tp +16166: __lg(_Tp __n) +16166: { +16166: +16166: return std::__bit_width(make_unsigned_t<_Tp>(__n)) - 1; +16166: # 1563 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: } +16166: +16166: +16166: # 1579 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: equal(_II1 __first1, _II1 __last1, _II2 __first2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__equal_aux(__first1, __last1, __first2); +16166: } +16166: # 1610 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: equal(_IIter1 __first1, _IIter1 __last1, +16166: _IIter2 __first2, _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first1 != __last1; ++__first1, (void)++__first2) +16166: if (!bool(__binary_pred(*__first1, *__first2))) +16166: return false; +16166: return true; +16166: } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: +16166: +16166: template +16166: +16166: inline bool +16166: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +16166: { +16166: using _RATag = random_access_iterator_tag; +16166: using _Cat1 = typename iterator_traits<_II1>::iterator_category; +16166: using _Cat2 = typename iterator_traits<_II2>::iterator_category; +16166: using _RAIters = __and_, is_same<_Cat2, _RATag>>; +16166: if constexpr (_RAIters::value) +16166: { +16166: if ((__last1 - __first1) != (__last2 - __first2)) +16166: return false; +16166: return std::equal(__first1, __last1, __first2); +16166: } +16166: else +16166: { +16166: for (; __first1 != __last1 && __first2 != __last2; +16166: ++__first1, (void)++__first2) +16166: if (!(*__first1 == *__first2)) +16166: return false; +16166: return __first1 == __last1 && __first2 == __last2; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: inline bool +16166: __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: using _RATag = random_access_iterator_tag; +16166: using _Cat1 = typename iterator_traits<_II1>::iterator_category; +16166: using _Cat2 = typename iterator_traits<_II2>::iterator_category; +16166: using _RAIters = __and_, is_same<_Cat2, _RATag>>; +16166: if constexpr (_RAIters::value) +16166: { +16166: if ((__last1 - __first1) != (__last2 - __first2)) +16166: return false; +16166: return std::equal(__first1, __last1, __first2, +16166: __binary_pred); +16166: } +16166: else +16166: { +16166: for (; __first1 != __last1 && __first2 != __last2; +16166: ++__first1, (void)++__first2) +16166: if (!bool(__binary_pred(*__first1, *__first2))) +16166: return false; +16166: return __first1 == __last1 && __first2 == __last2; +16166: } +16166: } +16166: #pragma GCC diagnostic pop +16166: # 1701 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__equal4(__first1, __last1, __first2, __last2); +16166: } +16166: # 1734 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: equal(_IIter1 __first1, _IIter1 __last1, +16166: _IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__equal4(__first1, __last1, __first2, __last2, +16166: __binary_pred); +16166: } +16166: # 1766 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: lexicographical_compare(_II1 __first1, _II1 __last1, +16166: _II2 __first2, _II2 __last2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__lexicographical_compare_aux(__first1, __last1, +16166: __first2, __last2); +16166: } +16166: # 1801 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: lexicographical_compare(_II1 __first1, _II1 __last1, +16166: _II2 __first2, _II2 __last2, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__lexicographical_compare_impl +16166: (__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: # 1916 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: pair<_InputIterator1, _InputIterator2> +16166: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _BinaryPredicate __binary_pred) +16166: { +16166: while (__first1 != __last1 && __binary_pred(__first1, __first2)) +16166: { +16166: ++__first1; +16166: ++__first2; +16166: } +16166: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); +16166: } +16166: # 1944 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline pair<_InputIterator1, _InputIterator2> +16166: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__mismatch(__first1, __last1, __first2, +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: # 1978 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline pair<_InputIterator1, _InputIterator2> +16166: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__mismatch(__first1, __last1, __first2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +16166: } +16166: +16166: +16166: template +16166: +16166: pair<_InputIterator1, _InputIterator2> +16166: __mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2 +16166: && __binary_pred(__first1, __first2)) +16166: { +16166: ++__first1; +16166: ++__first2; +16166: } +16166: return pair<_InputIterator1, _InputIterator2>(__first1, __first2); +16166: } +16166: # 2026 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline pair<_InputIterator1, _InputIterator2> +16166: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__mismatch(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: # 2062 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline pair<_InputIterator1, _InputIterator2> +16166: mismatch(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__mismatch(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline _InputIterator +16166: __find_if(_InputIterator __first, _InputIterator __last, +16166: _Predicate __pred, input_iterator_tag) +16166: { +16166: while (__first != __last && !__pred(__first)) +16166: ++__first; +16166: return __first; +16166: } +16166: +16166: +16166: template +16166: +16166: _RandomAccessIterator +16166: __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Predicate __pred, random_access_iterator_tag) +16166: { +16166: typename iterator_traits<_RandomAccessIterator>::difference_type +16166: __trip_count = (__last - __first) >> 2; +16166: +16166: for (; __trip_count > 0; --__trip_count) +16166: { +16166: if (__pred(__first)) +16166: return __first; +16166: ++__first; +16166: +16166: if (__pred(__first)) +16166: return __first; +16166: ++__first; +16166: +16166: if (__pred(__first)) +16166: return __first; +16166: ++__first; +16166: +16166: if (__pred(__first)) +16166: return __first; +16166: ++__first; +16166: } +16166: +16166: switch (__last - __first) +16166: { +16166: case 3: +16166: if (__pred(__first)) +16166: return __first; +16166: ++__first; +16166: +16166: case 2: +16166: if (__pred(__first)) +16166: return __first; +16166: ++__first; +16166: +16166: case 1: +16166: if (__pred(__first)) +16166: return __first; +16166: ++__first; +16166: +16166: case 0: +16166: default: +16166: return __last; +16166: } +16166: } +16166: +16166: template +16166: +16166: inline _Iterator +16166: __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) +16166: { +16166: return __find_if(__first, __last, __pred, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: template +16166: +16166: typename iterator_traits<_InputIterator>::difference_type +16166: __count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) +16166: { +16166: typename iterator_traits<_InputIterator>::difference_type __n = 0; +16166: for (; __first != __last; ++__first) +16166: if (__pred(__first)) +16166: ++__n; +16166: return __n; +16166: } +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __remove_if(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred) +16166: { +16166: __first = std::__find_if(__first, __last, __pred); +16166: if (__first == __last) +16166: return __first; +16166: _ForwardIterator __result = __first; +16166: ++__first; +16166: for (; __first != __last; ++__first) +16166: if (!__pred(__first)) +16166: { +16166: *__result = std::move(*__first); +16166: ++__result; +16166: } +16166: return __result; +16166: } +16166: +16166: template +16166: +16166: _ForwardIterator1 +16166: __search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +16166: _BinaryPredicate __predicate) +16166: { +16166: +16166: if (__first1 == __last1 || __first2 == __last2) +16166: return __first1; +16166: +16166: +16166: _ForwardIterator2 __p1(__first2); +16166: if (++__p1 == __last2) +16166: return std::__find_if(__first1, __last1, +16166: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); +16166: +16166: +16166: _ForwardIterator1 __current = __first1; +16166: +16166: for (;;) +16166: { +16166: __first1 = +16166: std::__find_if(__first1, __last1, +16166: __gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2)); +16166: +16166: if (__first1 == __last1) +16166: return __last1; +16166: +16166: _ForwardIterator2 __p = __p1; +16166: __current = __first1; +16166: if (++__current == __last1) +16166: return __last1; +16166: +16166: while (__predicate(__current, __p)) +16166: { +16166: if (++__p == __last2) +16166: return __first1; +16166: if (++__current == __last1) +16166: return __last1; +16166: } +16166: ++__first1; +16166: } +16166: return __first1; +16166: } +16166: +16166: +16166: template +16166: +16166: bool +16166: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _BinaryPredicate __pred) +16166: { +16166: +16166: +16166: for (; __first1 != __last1; ++__first1, (void)++__first2) +16166: if (!__pred(__first1, __first2)) +16166: break; +16166: +16166: if (__first1 == __last1) +16166: return true; +16166: +16166: +16166: +16166: _ForwardIterator2 __last2 = __first2; +16166: std::advance(__last2, std::distance(__first1, __last1)); +16166: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) +16166: { +16166: if (__scan != std::__find_if(__first1, __scan, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) +16166: continue; +16166: +16166: auto __matches +16166: = std::__count_if(__first2, __last2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); +16166: if (0 == __matches || +16166: std::__count_if(__scan, __last1, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) +16166: != __matches) +16166: return false; +16166: } +16166: return true; +16166: } +16166: # 2286 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline bool +16166: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__is_permutation(__first1, __last1, __first2, +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: +16166: +16166: +16166: # 2328 "/usr/include/c++/14/bits/stl_algobase.h" 3 +16166: template +16166: +16166: inline _ForwardIterator1 +16166: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +16166: _BinaryPredicate __predicate) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__search(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__predicate)); +16166: } +16166: +16166: +16166: +16166: } +16166: # 63 "/usr/include/c++/14/deque" 2 3 +16166: # 1 "/usr/include/c++/14/bits/allocator.h" 1 3 +16166: # 46 "/usr/include/c++/14/bits/allocator.h" 3 +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 1 3 +16166: # 33 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 3 +16166: # 1 "/usr/include/c++/14/bits/new_allocator.h" 1 3 +16166: # 41 "/usr/include/c++/14/bits/new_allocator.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 62 "/usr/include/c++/14/bits/new_allocator.h" 3 +16166: template +16166: class __new_allocator +16166: { +16166: public: +16166: typedef _Tp value_type; +16166: typedef std::size_t size_type; +16166: typedef std::ptrdiff_t difference_type; +16166: +16166: typedef _Tp* pointer; +16166: typedef const _Tp* const_pointer; +16166: typedef _Tp& reference; +16166: typedef const _Tp& const_reference; +16166: +16166: template +16166: struct rebind +16166: { typedef __new_allocator<_Tp1> other; }; +16166: +16166: +16166: +16166: +16166: +16166: typedef std::true_type propagate_on_container_move_assignment; +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: +16166: __new_allocator() noexcept { } +16166: +16166: __attribute__((__always_inline__)) +16166: +16166: __new_allocator(const __new_allocator&) noexcept { } +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: +16166: __new_allocator(const __new_allocator<_Tp1>&) noexcept { } +16166: +16166: +16166: __new_allocator& operator=(const __new_allocator&) = default; +16166: +16166: +16166: +16166: ~__new_allocator() noexcept { } +16166: +16166: pointer +16166: address(reference __x) const noexcept +16166: { return std::__addressof(__x); } +16166: +16166: const_pointer +16166: address(const_reference __x) const noexcept +16166: { return std::__addressof(__x); } +16166: # 125 "/usr/include/c++/14/bits/new_allocator.h" 3 +16166: [[__nodiscard__]] _Tp* +16166: allocate(size_type __n, const void* = static_cast(0)) +16166: { +16166: +16166: +16166: +16166: static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types"); +16166: +16166: +16166: if (__builtin_expect(__n > this->_M_max_size(), false)) +16166: { +16166: +16166: +16166: if (__n > (std::size_t(-1) / sizeof(_Tp))) +16166: std::__throw_bad_array_new_length(); +16166: std::__throw_bad_alloc(); +16166: } +16166: +16166: +16166: if (alignof(_Tp) > 8) +16166: { +16166: std::align_val_t __al = std::align_val_t(alignof(_Tp)); +16166: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), +16166: __al)); +16166: } +16166: +16166: return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); +16166: } +16166: +16166: +16166: void +16166: deallocate(_Tp* __p, size_type __n __attribute__ ((__unused__))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if (alignof(_Tp) > 8) +16166: { +16166: ::operator delete((__p), (__n) * sizeof(_Tp), +16166: std::align_val_t(alignof(_Tp))); +16166: return; +16166: } +16166: +16166: ::operator delete((__p), (__n) * sizeof(_Tp)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: size_type +16166: max_size() const noexcept +16166: { return _M_max_size(); } +16166: +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: void +16166: construct(_Up* __p, _Args&&... __args) +16166: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) +16166: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: void +16166: destroy(_Up* __p) +16166: noexcept(std::is_nothrow_destructible<_Up>::value) +16166: { __p->~_Up(); } +16166: # 213 "/usr/include/c++/14/bits/new_allocator.h" 3 +16166: template +16166: friend __attribute__((__always_inline__)) bool +16166: operator==(const __new_allocator&, const __new_allocator<_Up>&) +16166: noexcept +16166: { return true; } +16166: +16166: +16166: template +16166: friend __attribute__((__always_inline__)) bool +16166: operator!=(const __new_allocator&, const __new_allocator<_Up>&) +16166: noexcept +16166: { return false; } +16166: +16166: +16166: private: +16166: __attribute__((__always_inline__)) +16166: constexpr size_type +16166: _M_max_size() const noexcept +16166: { +16166: +16166: return std::size_t(0x7fffffff) / sizeof(_Tp); +16166: +16166: +16166: +16166: } +16166: }; +16166: +16166: +16166: } +16166: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 2 3 +16166: +16166: +16166: namespace std +16166: { +16166: # 46 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++allocator.h" 3 +16166: template +16166: using __allocator_base = __new_allocator<_Tp>; +16166: } +16166: # 47 "/usr/include/c++/14/bits/allocator.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/memoryfwd.h" 1 3 +16166: # 46 "/usr/include/c++/14/bits/memoryfwd.h" 3 +16166: +16166: # 47 "/usr/include/c++/14/bits/memoryfwd.h" 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 64 "/usr/include/c++/14/bits/memoryfwd.h" 3 +16166: template +16166: class allocator; +16166: +16166: template<> +16166: class allocator; +16166: +16166: +16166: +16166: template +16166: struct uses_allocator; +16166: +16166: template +16166: struct allocator_traits; +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 48 "/usr/include/c++/14/bits/allocator.h" 2 3 +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 72 "/usr/include/c++/14/bits/allocator.h" 3 +16166: template<> +16166: class allocator +16166: { +16166: public: +16166: typedef void value_type; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: +16166: +16166: +16166: typedef void* pointer; +16166: typedef const void* const_pointer; +16166: +16166: template +16166: struct rebind +16166: { typedef allocator<_Tp1> other; }; +16166: +16166: +16166: +16166: +16166: +16166: using propagate_on_container_move_assignment = true_type; +16166: +16166: using is_always_equal +16166: +16166: = true_type; +16166: # 115 "/usr/include/c++/14/bits/allocator.h" 3 +16166: }; +16166: # 127 "/usr/include/c++/14/bits/allocator.h" 3 +16166: template +16166: class allocator : public __allocator_base<_Tp> +16166: { +16166: public: +16166: typedef _Tp value_type; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: +16166: +16166: +16166: typedef _Tp* pointer; +16166: typedef const _Tp* const_pointer; +16166: typedef _Tp& reference; +16166: typedef const _Tp& const_reference; +16166: +16166: template +16166: struct rebind +16166: { typedef allocator<_Tp1> other; }; +16166: +16166: +16166: +16166: +16166: +16166: using propagate_on_container_move_assignment = true_type; +16166: +16166: using is_always_equal +16166: +16166: = true_type; +16166: +16166: +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: +16166: allocator() noexcept { } +16166: +16166: __attribute__((__always_inline__)) +16166: +16166: allocator(const allocator& __a) noexcept +16166: : __allocator_base<_Tp>(__a) { } +16166: +16166: +16166: +16166: allocator& operator=(const allocator&) = default; +16166: +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: +16166: allocator(const allocator<_Tp1>&) noexcept { } +16166: +16166: __attribute__((__always_inline__)) +16166: +16166: +16166: +16166: ~allocator() noexcept { } +16166: # 212 "/usr/include/c++/14/bits/allocator.h" 3 +16166: friend __attribute__((__always_inline__)) +16166: bool +16166: operator==(const allocator&, const allocator&) noexcept +16166: { return true; } +16166: +16166: +16166: friend __attribute__((__always_inline__)) +16166: bool +16166: operator!=(const allocator&, const allocator&) noexcept +16166: { return false; } +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: inline bool +16166: operator==(const allocator<_T1>&, const allocator<_T2>&) +16166: noexcept +16166: { return true; } +16166: +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: inline bool +16166: operator!=(const allocator<_T1>&, const allocator<_T2>&) +16166: noexcept +16166: { return false; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class allocator +16166: { +16166: public: +16166: typedef _Tp value_type; +16166: allocator() { } +16166: template allocator(const allocator<_Up>&) { } +16166: }; +16166: +16166: template +16166: class allocator +16166: { +16166: public: +16166: typedef _Tp value_type; +16166: allocator() { } +16166: template allocator(const allocator<_Up>&) { } +16166: }; +16166: +16166: template +16166: class allocator +16166: { +16166: public: +16166: typedef _Tp value_type; +16166: allocator() { } +16166: template allocator(const allocator<_Up>&) { } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern template class allocator; +16166: extern template class allocator; +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 64 "/usr/include/c++/14/deque" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_construct.h" 1 3 +16166: # 73 "/usr/include/c++/14/bits/stl_construct.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: inline void +16166: destroy_at(_Tp* __location) +16166: { +16166: if constexpr (201703L > 201703L && is_array_v<_Tp>) +16166: { +16166: for (auto& __x : *__location) +16166: std::destroy_at(std::__addressof(__x)); +16166: } +16166: else +16166: __location->~_Tp(); +16166: } +16166: # 106 "/usr/include/c++/14/bits/stl_construct.h" 3 +16166: template +16166: +16166: inline void +16166: _Construct(_Tp* __p, _Args&&... __args) +16166: { +16166: # 119 "/usr/include/c++/14/bits/stl_construct.h" 3 +16166: ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); +16166: } +16166: # 132 "/usr/include/c++/14/bits/stl_construct.h" 3 +16166: template +16166: inline void +16166: _Construct_novalue(_T1* __p) +16166: { ::new((void*)__p) _T1; } +16166: +16166: template +16166: void +16166: _Destroy(_ForwardIterator __first, _ForwardIterator __last); +16166: +16166: +16166: +16166: +16166: template +16166: constexpr inline void +16166: _Destroy(_Tp* __pointer) +16166: { +16166: +16166: +16166: +16166: __pointer->~_Tp(); +16166: +16166: } +16166: +16166: template +16166: struct _Destroy_aux +16166: { +16166: template +16166: static void +16166: __destroy(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: for (; __first != __last; ++__first) +16166: std::_Destroy(std::__addressof(*__first)); +16166: } +16166: }; +16166: +16166: template<> +16166: struct _Destroy_aux +16166: { +16166: template +16166: static void +16166: __destroy(_ForwardIterator, _ForwardIterator) { } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline void +16166: _Destroy(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _Value_type; +16166: +16166: +16166: static_assert(is_destructible<_Value_type>::value, +16166: "value type is destructible"); +16166: +16166: +16166: +16166: +16166: +16166: std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: +16166: __destroy(__first, __last); +16166: } +16166: +16166: template +16166: struct _Destroy_n_aux +16166: { +16166: template +16166: static _ForwardIterator +16166: __destroy_n(_ForwardIterator __first, _Size __count) +16166: { +16166: for (; __count > 0; (void)++__first, --__count) +16166: std::_Destroy(std::__addressof(*__first)); +16166: return __first; +16166: } +16166: }; +16166: +16166: template<> +16166: struct _Destroy_n_aux +16166: { +16166: template +16166: static _ForwardIterator +16166: __destroy_n(_ForwardIterator __first, _Size __count) +16166: { +16166: std::advance(__first, __count); +16166: return __first; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline _ForwardIterator +16166: _Destroy_n(_ForwardIterator __first, _Size __count) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _Value_type; +16166: +16166: +16166: static_assert(is_destructible<_Value_type>::value, +16166: "value type is destructible"); +16166: +16166: +16166: +16166: +16166: +16166: return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>:: +16166: __destroy_n(__first, __count); +16166: } +16166: +16166: +16166: template +16166: inline void +16166: destroy(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: std::_Destroy(__first, __last); +16166: } +16166: +16166: template +16166: inline _ForwardIterator +16166: destroy_n(_ForwardIterator __first, _Size __count) +16166: { +16166: return std::_Destroy_n(__first, __count); +16166: } +16166: +16166: +16166: +16166: } +16166: # 65 "/usr/include/c++/14/deque" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_uninitialized.h" 1 3 +16166: # 64 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: # 1 "/usr/include/c++/14/ext/alloc_traits.h" 1 3 +16166: # 32 "/usr/include/c++/14/ext/alloc_traits.h" 3 +16166: +16166: # 33 "/usr/include/c++/14/ext/alloc_traits.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/alloc_traits.h" 1 3 +16166: # 46 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: # 52 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++14-extensions" +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: +16166: +16166: struct __allocator_traits_base +16166: { +16166: template +16166: struct __rebind : __replace_first_arg<_Tp, _Up> +16166: { +16166: static_assert(is_same< +16166: typename __replace_first_arg<_Tp, typename _Tp::value_type>::type, +16166: _Tp>::value, +16166: "allocator_traits::rebind_alloc must be A"); +16166: }; +16166: +16166: template +16166: struct __rebind<_Tp, _Up, +16166: __void_t::other>> +16166: { +16166: using type = typename _Tp::template rebind<_Up>::other; +16166: +16166: static_assert(is_same< +16166: typename _Tp::template rebind::other, +16166: _Tp>::value, +16166: "allocator_traits::rebind_alloc must be A"); +16166: }; +16166: +16166: protected: +16166: template +16166: using __pointer = typename _Tp::pointer; +16166: template +16166: using __c_pointer = typename _Tp::const_pointer; +16166: template +16166: using __v_pointer = typename _Tp::void_pointer; +16166: template +16166: using __cv_pointer = typename _Tp::const_void_pointer; +16166: template +16166: using __pocca = typename _Tp::propagate_on_container_copy_assignment; +16166: template +16166: using __pocma = typename _Tp::propagate_on_container_move_assignment; +16166: template +16166: using __pocs = typename _Tp::propagate_on_container_swap; +16166: template +16166: using __equal = __type_identity; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: using __construct_t +16166: = decltype(std::declval<_Alloc&>().construct(std::declval<_Tp*>(), +16166: std::declval<_Args>()...)); +16166: template +16166: static constexpr bool __has_construct_impl = false; +16166: template +16166: static constexpr bool +16166: __has_construct_impl<_Alloc, _Tp, +16166: __void_t<__construct_t<_Alloc, _Tp, _Args...>>, +16166: _Args...> +16166: = true; +16166: template +16166: static constexpr bool __has_construct +16166: = __has_construct_impl<_Alloc, _Tp, void, _Args...>; +16166: template +16166: using __new_expr_t +16166: = decltype(::new((void*)0) _Tp(std::declval<_Args>()...)); +16166: template +16166: static constexpr bool __has_new_expr = false; +16166: template +16166: static constexpr bool +16166: __has_new_expr<_Tp, __void_t<__new_expr_t<_Tp, _Args...>>, _Args...> +16166: = true; +16166: template +16166: static constexpr bool __can_construct +16166: = __has_construct<_Alloc, _Tp, _Args...> +16166: || __has_new_expr<_Tp, void, _Args...>; +16166: }; +16166: +16166: template +16166: using __alloc_rebind +16166: = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; +16166: # 143 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: struct allocator_traits : __allocator_traits_base +16166: { +16166: +16166: typedef _Alloc allocator_type; +16166: +16166: typedef typename _Alloc::value_type value_type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: using pointer = __detected_or_t; +16166: +16166: private: +16166: +16166: template class _Func, typename _Tp, typename = void> +16166: struct _Ptr +16166: { +16166: using type = typename pointer_traits::template rebind<_Tp>; +16166: }; +16166: +16166: template class _Func, typename _Tp> +16166: struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> +16166: { +16166: using type = _Func<_Alloc>; +16166: }; +16166: +16166: +16166: template +16166: struct _Diff +16166: { using type = typename pointer_traits<_PtrT>::difference_type; }; +16166: +16166: template +16166: struct _Diff<_A2, _PtrT, __void_t> +16166: { using type = typename _A2::difference_type; }; +16166: +16166: +16166: template +16166: struct _Size : make_unsigned<_DiffT> { }; +16166: +16166: template +16166: struct _Size<_A2, _DiffT, __void_t> +16166: { using type = typename _A2::size_type; }; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using void_pointer = typename _Ptr<__v_pointer, void>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using difference_type = typename _Diff<_Alloc, pointer>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using size_type = typename _Size<_Alloc, difference_type>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using propagate_on_container_copy_assignment +16166: = __detected_or_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using propagate_on_container_move_assignment +16166: = __detected_or_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using propagate_on_container_swap +16166: = __detected_or_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using is_always_equal +16166: = typename __detected_or_t, __equal, _Alloc>::type; +16166: +16166: template +16166: using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; +16166: template +16166: using rebind_traits = allocator_traits>; +16166: +16166: private: +16166: template +16166: static constexpr auto +16166: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) +16166: -> decltype(__a.allocate(__n, __hint)) +16166: { return __a.allocate(__n, __hint); } +16166: +16166: template +16166: static constexpr pointer +16166: _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) +16166: { return __a.allocate(__n); } +16166: +16166: +16166: template +16166: static constexpr auto +16166: _S_destroy(_Alloc2& __a, _Tp* __p, int) +16166: noexcept(noexcept(__a.destroy(__p))) +16166: -> decltype(__a.destroy(__p)) +16166: { __a.destroy(__p); } +16166: +16166: template +16166: static constexpr void +16166: _S_destroy(_Alloc2&, _Tp* __p, ...) +16166: noexcept(std::is_nothrow_destructible<_Tp>::value) +16166: { std::_Destroy(__p); } +16166: +16166: template +16166: static constexpr auto +16166: _S_max_size(_Alloc2& __a, int) +16166: -> decltype(__a.max_size()) +16166: { return __a.max_size(); } +16166: +16166: template +16166: static constexpr size_type +16166: _S_max_size(_Alloc2&, ...) +16166: { +16166: +16166: +16166: return __gnu_cxx::__numeric_traits::__max +16166: / sizeof(value_type); +16166: } +16166: +16166: template +16166: static constexpr auto +16166: _S_select(_Alloc2& __a, int) +16166: -> decltype(__a.select_on_container_copy_construction()) +16166: { return __a.select_on_container_copy_construction(); } +16166: +16166: template +16166: static constexpr _Alloc2 +16166: _S_select(_Alloc2& __a, ...) +16166: { return __a; } +16166: +16166: public: +16166: # 333 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: [[__nodiscard__]] static pointer +16166: allocate(_Alloc& __a, size_type __n) +16166: { return __a.allocate(__n); } +16166: # 348 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: [[__nodiscard__]] static pointer +16166: allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) +16166: { return _S_allocate(__a, __n, __hint, 0); } +16166: # 360 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: static void +16166: deallocate(_Alloc& __a, pointer __p, size_type __n) +16166: { __a.deallocate(__p, __n); } +16166: # 375 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: static +16166: __enable_if_t<__can_construct<_Alloc, _Tp, _Args...>> +16166: construct(_Alloc& __a, _Tp* __p, _Args&&... __args) +16166: noexcept(_S_nothrow_construct<_Tp, _Args...>()) +16166: { +16166: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) +16166: __a.construct(__p, std::forward<_Args>(__args)...); +16166: else +16166: std::_Construct(__p, std::forward<_Args>(__args)...); +16166: } +16166: # 395 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: static void +16166: destroy(_Alloc& __a, _Tp* __p) +16166: noexcept(noexcept(_S_destroy(__a, __p, 0))) +16166: { _S_destroy(__a, __p, 0); } +16166: # 409 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: static size_type +16166: max_size(const _Alloc& __a) noexcept +16166: { return _S_max_size(__a, 0); } +16166: # 421 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: static _Alloc +16166: select_on_container_copy_construction(const _Alloc& __rhs) +16166: { return _S_select(__rhs, 0); } +16166: +16166: private: +16166: +16166: template +16166: static constexpr bool +16166: _S_nothrow_construct(_Alloc* __a = nullptr, _Tp* __p = nullptr) +16166: { +16166: if constexpr (__has_construct<_Alloc, _Tp, _Args...>) +16166: return noexcept(__a->construct(__p, std::declval<_Args>()...)); +16166: else +16166: return __is_nothrow_new_constructible<_Tp, _Args...>; +16166: } +16166: # 449 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: }; +16166: #pragma GCC diagnostic pop +16166: # 460 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: struct allocator_traits> +16166: { +16166: +16166: using allocator_type = allocator<_Tp>; +16166: +16166: +16166: using value_type = _Tp; +16166: +16166: +16166: using pointer = _Tp*; +16166: +16166: +16166: using const_pointer = const _Tp*; +16166: +16166: +16166: using void_pointer = void*; +16166: +16166: +16166: using const_void_pointer = const void*; +16166: +16166: +16166: using difference_type = std::ptrdiff_t; +16166: +16166: +16166: using size_type = std::size_t; +16166: +16166: +16166: using propagate_on_container_copy_assignment = false_type; +16166: +16166: +16166: using propagate_on_container_move_assignment = true_type; +16166: +16166: +16166: using propagate_on_container_swap = false_type; +16166: +16166: +16166: using is_always_equal = true_type; +16166: +16166: template +16166: using rebind_alloc = allocator<_Up>; +16166: +16166: template +16166: using rebind_traits = allocator_traits>; +16166: # 512 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: [[__nodiscard__,__gnu__::__always_inline__]] +16166: static pointer +16166: allocate(allocator_type& __a, size_type __n) +16166: { return __a.allocate(__n); } +16166: # 527 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: [[__nodiscard__,__gnu__::__always_inline__]] +16166: static pointer +16166: allocate(allocator_type& __a, size_type __n, +16166: [[maybe_unused]] const_void_pointer __hint) +16166: { +16166: +16166: return __a.allocate(__n, __hint); +16166: +16166: +16166: +16166: } +16166: # 547 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: [[__gnu__::__always_inline__]] +16166: static void +16166: deallocate(allocator_type& __a, pointer __p, size_type __n) +16166: { __a.deallocate(__p, __n); } +16166: # 563 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: [[__gnu__::__always_inline__]] +16166: static void +16166: construct(allocator_type& __a __attribute__((__unused__)), +16166: _Up* __p, _Args&&... __args) +16166: +16166: noexcept(noexcept(__a.construct(__p, std::forward<_Args>(__args)...))) +16166: +16166: +16166: +16166: { +16166: +16166: __a.construct(__p, std::forward<_Args>(__args)...); +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 590 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: [[__gnu__::__always_inline__]] +16166: static void +16166: destroy(allocator_type& __a __attribute__((__unused__)), _Up* __p) +16166: noexcept(is_nothrow_destructible<_Up>::value) +16166: { +16166: +16166: __a.destroy(__p); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__gnu__::__always_inline__]] +16166: static size_type +16166: max_size(const allocator_type& __a __attribute__((__unused__))) noexcept +16166: { +16166: +16166: return __a.max_size(); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__gnu__::__always_inline__]] +16166: static allocator_type +16166: select_on_container_copy_construction(const allocator_type& __rhs) +16166: { return __rhs; } +16166: }; +16166: # 637 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template<> +16166: struct allocator_traits> +16166: { +16166: +16166: using allocator_type = allocator; +16166: +16166: +16166: using value_type = void; +16166: +16166: +16166: using pointer = void*; +16166: +16166: +16166: using const_pointer = const void*; +16166: +16166: +16166: using void_pointer = void*; +16166: +16166: +16166: using const_void_pointer = const void*; +16166: +16166: +16166: using difference_type = std::ptrdiff_t; +16166: +16166: +16166: using size_type = std::size_t; +16166: +16166: +16166: using propagate_on_container_copy_assignment = false_type; +16166: +16166: +16166: using propagate_on_container_move_assignment = true_type; +16166: +16166: +16166: using propagate_on_container_swap = false_type; +16166: +16166: +16166: using is_always_equal = true_type; +16166: +16166: template +16166: using rebind_alloc = allocator<_Up>; +16166: +16166: template +16166: using rebind_traits = allocator_traits>; +16166: +16166: +16166: static void* +16166: allocate(allocator_type&, size_type, const void* = nullptr) = delete; +16166: +16166: +16166: static void +16166: deallocate(allocator_type&, void*, size_type) = delete; +16166: # 701 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: [[__gnu__::__always_inline__]] +16166: static void +16166: construct(allocator_type&, _Up* __p, _Args&&... __args) +16166: noexcept(__is_nothrow_new_constructible<_Up, _Args...>) +16166: { std::_Construct(__p, std::forward<_Args>(__args)...); } +16166: # 715 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: [[__gnu__::__always_inline__]] +16166: static void +16166: destroy(allocator_type&, _Up* __p) +16166: noexcept(is_nothrow_destructible<_Up>::value) +16166: { std::_Destroy(__p); } +16166: +16166: +16166: static size_type +16166: max_size(const allocator_type&) = delete; +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__gnu__::__always_inline__]] +16166: static allocator_type +16166: select_on_container_copy_construction(const allocator_type& __rhs) +16166: { return __rhs; } +16166: }; +16166: # 753 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr inline void +16166: __alloc_on_copy(_Alloc& __one, const _Alloc& __two) +16166: { +16166: using __traits = allocator_traits<_Alloc>; +16166: using __pocca = +16166: typename __traits::propagate_on_container_copy_assignment::type; +16166: +16166: if constexpr (__pocca::value) +16166: __one = __two; +16166: +16166: +16166: +16166: } +16166: +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr _Alloc +16166: __alloc_on_copy(const _Alloc& __a) +16166: { +16166: typedef allocator_traits<_Alloc> __traits; +16166: return __traits::select_on_container_copy_construction(__a); +16166: } +16166: # 790 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr inline void +16166: __alloc_on_move(_Alloc& __one, _Alloc& __two) +16166: { +16166: using __traits = allocator_traits<_Alloc>; +16166: using __pocma +16166: = typename __traits::propagate_on_container_move_assignment::type; +16166: +16166: if constexpr (__pocma::value) +16166: __one = std::move(__two); +16166: +16166: +16166: +16166: } +16166: # 821 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr inline void +16166: __alloc_on_swap(_Alloc& __one, _Alloc& __two) +16166: { +16166: using __traits = allocator_traits<_Alloc>; +16166: using __pocs = typename __traits::propagate_on_container_swap::type; +16166: +16166: if constexpr (__pocs::value) +16166: { +16166: using std::swap; +16166: swap(__one, __two); +16166: } +16166: +16166: +16166: +16166: } +16166: +16166: template, +16166: typename = void> +16166: struct __is_alloc_insertable_impl +16166: : false_type +16166: { }; +16166: +16166: template +16166: struct __is_alloc_insertable_impl<_Alloc, _Tp, _ValueT, +16166: __void_t::construct( +16166: std::declval<_Alloc&>(), std::declval<_ValueT*>(), +16166: std::declval<_Tp>()))>> +16166: : true_type +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_copy_insertable +16166: : __is_alloc_insertable_impl<_Alloc, +16166: typename _Alloc::value_type const&>::type +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct __is_copy_insertable> +16166: : is_copy_constructible<_Tp> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_move_insertable +16166: : __is_alloc_insertable_impl<_Alloc, typename _Alloc::value_type>::type +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct __is_move_insertable> +16166: : is_move_constructible<_Tp> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct __is_allocator : false_type { }; +16166: +16166: template +16166: struct __is_allocator<_Alloc, +16166: __void_t().allocate(size_t{}))>> +16166: : true_type { }; +16166: +16166: template +16166: using _RequireAllocator +16166: = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; +16166: +16166: template +16166: using _RequireNotAllocator +16166: = typename enable_if::value, _Alloc>::type; +16166: # 918 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: struct __alloc_swap +16166: { static void _S_do_it(_Alloc&, _Alloc&) noexcept { } }; +16166: +16166: template +16166: struct __alloc_swap<_Alloc, false> +16166: { +16166: static void +16166: _S_do_it(_Alloc& __one, _Alloc& __two) noexcept +16166: { +16166: +16166: if (__one != __two) +16166: swap(__one, __two); +16166: } +16166: }; +16166: +16166: +16166: template, +16166: is_nothrow_move_constructible>::value> +16166: struct __shrink_to_fit_aux +16166: { static bool _S_do_it(_Tp&) noexcept { return false; } }; +16166: +16166: template +16166: struct __shrink_to_fit_aux<_Tp, true> +16166: { +16166: +16166: static bool +16166: _S_do_it(_Tp& __c) noexcept +16166: { +16166: +16166: try +16166: { +16166: _Tp(__make_move_if_noexcept_iterator(__c.begin()), +16166: __make_move_if_noexcept_iterator(__c.end()), +16166: __c.get_allocator()).swap(__c); +16166: return true; +16166: } +16166: catch(...) +16166: { return false; } +16166: +16166: +16166: +16166: } +16166: }; +16166: # 971 "/usr/include/c++/14/bits/alloc_traits.h" 3 +16166: template +16166: +16166: void +16166: _Destroy(_ForwardIterator __first, _ForwardIterator __last, +16166: _Allocator& __alloc) +16166: { +16166: for (; __first != __last; ++__first) +16166: +16166: +16166: +16166: allocator_traits<_Allocator>::destroy(__alloc, +16166: std::__addressof(*__first)); +16166: +16166: } +16166: +16166: +16166: template +16166: __attribute__((__always_inline__)) +16166: inline void +16166: _Destroy(_ForwardIterator __first, _ForwardIterator __last, +16166: allocator<_Tp>&) +16166: { +16166: std::_Destroy(__first, __last); +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 35 "/usr/include/c++/14/ext/alloc_traits.h" 2 3 +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __alloc_traits +16166: +16166: : std::allocator_traits<_Alloc> +16166: +16166: { +16166: typedef _Alloc allocator_type; +16166: +16166: typedef std::allocator_traits<_Alloc> _Base_type; +16166: typedef typename _Base_type::value_type value_type; +16166: typedef typename _Base_type::pointer pointer; +16166: typedef typename _Base_type::const_pointer const_pointer; +16166: typedef typename _Base_type::size_type size_type; +16166: typedef typename _Base_type::difference_type difference_type; +16166: +16166: typedef value_type& reference; +16166: typedef const value_type& const_reference; +16166: using _Base_type::allocate; +16166: using _Base_type::deallocate; +16166: using _Base_type::construct; +16166: using _Base_type::destroy; +16166: using _Base_type::max_size; +16166: +16166: private: +16166: template +16166: using __is_custom_pointer +16166: = std::__and_, +16166: std::__not_>>; +16166: +16166: public: +16166: +16166: template +16166: [[__gnu__::__always_inline__]] +16166: static constexpr +16166: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> +16166: construct(_Alloc& __a, _Ptr __p, _Args&&... __args) +16166: noexcept(noexcept(_Base_type::construct(__a, std::__to_address(__p), +16166: std::forward<_Args>(__args)...))) +16166: { +16166: _Base_type::construct(__a, std::__to_address(__p), +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: template +16166: [[__gnu__::__always_inline__]] +16166: static constexpr +16166: std::__enable_if_t<__is_custom_pointer<_Ptr>::value> +16166: destroy(_Alloc& __a, _Ptr __p) +16166: noexcept(noexcept(_Base_type::destroy(__a, std::__to_address(__p)))) +16166: { _Base_type::destroy(__a, std::__to_address(__p)); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: static constexpr _Alloc _S_select_on_copy(const _Alloc& __a) +16166: { return _Base_type::select_on_container_copy_construction(__a); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: static constexpr void _S_on_swap(_Alloc& __a, _Alloc& __b) +16166: { std::__alloc_on_swap(__a, __b); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: static constexpr bool _S_propagate_on_copy_assign() +16166: { return _Base_type::propagate_on_container_copy_assignment::value; } +16166: +16166: [[__gnu__::__always_inline__]] +16166: static constexpr bool _S_propagate_on_move_assign() +16166: { return _Base_type::propagate_on_container_move_assignment::value; } +16166: +16166: [[__gnu__::__always_inline__]] +16166: static constexpr bool _S_propagate_on_swap() +16166: { return _Base_type::propagate_on_container_swap::value; } +16166: +16166: [[__gnu__::__always_inline__]] +16166: static constexpr bool _S_always_equal() +16166: { return _Base_type::is_always_equal::value; } +16166: +16166: __attribute__((__always_inline__)) +16166: static constexpr bool _S_nothrow_move() +16166: { return _S_propagate_on_move_assign() || _S_always_equal(); } +16166: +16166: template +16166: struct rebind +16166: { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; +16166: # 180 "/usr/include/c++/14/ext/alloc_traits.h" 3 +16166: }; +16166: +16166: +16166: } +16166: # 65 "/usr/include/c++/14/bits/stl_uninitialized.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 81 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: constexpr bool +16166: __check_constructible() +16166: { +16166: +16166: +16166: +16166: +16166: +16166: static_assert(is_constructible<_ValueType, _Tp>::value, +16166: "result type must be constructible from input type"); +16166: +16166: return true; +16166: } +16166: # 110 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: +16166: _ForwardIterator +16166: __do_uninit_copy(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result) +16166: { +16166: _ForwardIterator __cur = __result; +16166: try +16166: { +16166: for (; __first != __last; ++__first, (void)++__cur) +16166: std::_Construct(std::__addressof(*__cur), *__first); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__result, __cur); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: struct __uninitialized_copy +16166: { +16166: template +16166: static _ForwardIterator +16166: __uninit_copy(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result) +16166: { return std::__do_uninit_copy(__first, __last, __result); } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_copy +16166: { +16166: template +16166: static _ForwardIterator +16166: __uninit_copy(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result) +16166: { return std::copy(__first, __last, __result); } +16166: }; +16166: # 161 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline _ForwardIterator +16166: uninitialized_copy(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result) +16166: { +16166: typedef typename iterator_traits<_InputIterator>::value_type +16166: _ValueType1; +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType2; +16166: +16166: +16166: +16166: +16166: const bool __can_memmove = __is_trivial(_ValueType1); +16166: +16166: +16166: +16166: +16166: using _From = decltype(*__first); +16166: +16166: const bool __assignable +16166: = __is_trivial(_ValueType2) && __is_assignable(_ValueType2&, _From) && std::__check_constructible<_ValueType2, _From>(); +16166: +16166: return std::__uninitialized_copy<__can_memmove && __assignable>:: +16166: __uninit_copy(__first, __last, __result); +16166: } +16166: +16166: +16166: +16166: template +16166: void +16166: __do_uninit_fill(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __x) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: for (; __cur != __last; ++__cur) +16166: std::_Construct(std::__addressof(*__cur), __x); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: struct __uninitialized_fill +16166: { +16166: template +16166: static void +16166: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __x) +16166: { std::__do_uninit_fill(__first, __last, __x); } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_fill +16166: { +16166: template +16166: static void +16166: __uninit_fill(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __x) +16166: { std::fill(__first, __last, __x); } +16166: }; +16166: # 239 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline void +16166: uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __x) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType; +16166: +16166: +16166: +16166: const bool __can_fill +16166: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>(); +16166: +16166: std::__uninitialized_fill<__can_fill>:: +16166: __uninit_fill(__first, __last, __x); +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __do_uninit_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: for (; __n > 0; --__n, (void) ++__cur) +16166: std::_Construct(std::__addressof(*__cur), __x); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: struct __uninitialized_fill_n +16166: { +16166: template +16166: static _ForwardIterator +16166: __uninit_fill_n(_ForwardIterator __first, _Size __n, +16166: const _Tp& __x) +16166: { return std::__do_uninit_fill_n(__first, __n, __x); } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_fill_n +16166: { +16166: template +16166: static _ForwardIterator +16166: __uninit_fill_n(_ForwardIterator __first, _Size __n, +16166: const _Tp& __x) +16166: { return std::fill_n(__first, __n, __x); } +16166: }; +16166: # 310 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline _ForwardIterator +16166: uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType; +16166: +16166: +16166: +16166: const bool __can_fill +16166: = __is_trivial(_ValueType) && __is_assignable(_ValueType&, const _Tp&) && std::__check_constructible<_ValueType, const _Tp&>() +16166: +16166: +16166: +16166: && __is_integer<_Size>::__value; +16166: +16166: return __uninitialized_fill_n<__can_fill>:: +16166: __uninit_fill_n(__first, __n, __x); +16166: } +16166: # 340 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: +16166: _ForwardIterator +16166: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result, _Allocator& __alloc) +16166: { +16166: _ForwardIterator __cur = __result; +16166: try +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +16166: for (; __first != __last; ++__first, (void)++__cur) +16166: __traits::construct(__alloc, std::__addressof(*__cur), *__first); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__result, __cur, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result, allocator<_Tp>&) +16166: { +16166: +16166: +16166: +16166: +16166: return std::uninitialized_copy(__first, __last, __result); +16166: } +16166: +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __uninitialized_move_a(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result, _Allocator& __alloc) +16166: { +16166: return std::__uninitialized_copy_a(std::make_move_iterator(__first), +16166: std::make_move_iterator(__last), +16166: __result, __alloc); +16166: } +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __uninitialized_move_if_noexcept_a(_InputIterator __first, +16166: _InputIterator __last, +16166: _ForwardIterator __result, +16166: _Allocator& __alloc) +16166: { +16166: return std::__uninitialized_copy_a +16166: (std::__make_move_if_noexcept_iterator(__first), +16166: std::__make_move_if_noexcept_iterator(__last), __result, __alloc); +16166: } +16166: +16166: template +16166: +16166: void +16166: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __x, _Allocator& __alloc) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +16166: for (; __cur != __last; ++__cur) +16166: __traits::construct(__alloc, std::__addressof(*__cur), __x); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: inline void +16166: __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __x, allocator<_Tp2>&) +16166: { +16166: +16166: +16166: +16166: +16166: std::uninitialized_fill(__first, __last, __x); +16166: } +16166: +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, +16166: const _Tp& __x, _Allocator& __alloc) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +16166: for (; __n > 0; --__n, (void) ++__cur) +16166: __traits::construct(__alloc, std::__addressof(*__cur), __x); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, +16166: const _Tp& __x, allocator<_Tp2>&) +16166: { +16166: +16166: +16166: +16166: +16166: return std::uninitialized_fill_n(__first, __n, __x); +16166: } +16166: # 485 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline _ForwardIterator +16166: __uninitialized_copy_move(_InputIterator1 __first1, +16166: _InputIterator1 __last1, +16166: _InputIterator2 __first2, +16166: _InputIterator2 __last2, +16166: _ForwardIterator __result, +16166: _Allocator& __alloc) +16166: { +16166: _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1, +16166: __result, +16166: __alloc); +16166: try +16166: { +16166: return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__result, __mid, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline _ForwardIterator +16166: __uninitialized_move_copy(_InputIterator1 __first1, +16166: _InputIterator1 __last1, +16166: _InputIterator2 __first2, +16166: _InputIterator2 __last2, +16166: _ForwardIterator __result, +16166: _Allocator& __alloc) +16166: { +16166: _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1, +16166: __result, +16166: __alloc); +16166: try +16166: { +16166: return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__result, __mid, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: inline _ForwardIterator +16166: __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid, +16166: const _Tp& __x, _InputIterator __first, +16166: _InputIterator __last, _Allocator& __alloc) +16166: { +16166: std::__uninitialized_fill_a(__result, __mid, __x, __alloc); +16166: try +16166: { +16166: return std::__uninitialized_move_a(__first, __last, __mid, __alloc); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__result, __mid, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: inline void +16166: __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1, +16166: _ForwardIterator __first2, +16166: _ForwardIterator __last2, const _Tp& __x, +16166: _Allocator& __alloc) +16166: { +16166: _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1, +16166: __first2, +16166: __alloc); +16166: try +16166: { +16166: std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first2, __mid2, __alloc); +16166: throw; +16166: } +16166: } +16166: # 592 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: struct __uninitialized_default_1 +16166: { +16166: template +16166: static void +16166: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: for (; __cur != __last; ++__cur) +16166: std::_Construct(std::__addressof(*__cur)); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur); +16166: throw; +16166: } +16166: } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_default_1 +16166: { +16166: template +16166: static void +16166: __uninit_default(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: if (__first == __last) +16166: return; +16166: +16166: typename iterator_traits<_ForwardIterator>::value_type* __val +16166: = std::__addressof(*__first); +16166: std::_Construct(__val); +16166: if (++__first != __last) +16166: std::fill(__first, __last, *__val); +16166: } +16166: }; +16166: +16166: template +16166: struct __uninitialized_default_n_1 +16166: { +16166: template +16166: +16166: static _ForwardIterator +16166: __uninit_default_n(_ForwardIterator __first, _Size __n) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: for (; __n > 0; --__n, (void) ++__cur) +16166: std::_Construct(std::__addressof(*__cur)); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur); +16166: throw; +16166: } +16166: } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_default_n_1 +16166: { +16166: template +16166: +16166: static _ForwardIterator +16166: __uninit_default_n(_ForwardIterator __first, _Size __n) +16166: { +16166: if (__n > 0) +16166: { +16166: typename iterator_traits<_ForwardIterator>::value_type* __val +16166: = std::__addressof(*__first); +16166: std::_Construct(__val); +16166: ++__first; +16166: __first = std::fill_n(__first, __n - 1, *__val); +16166: } +16166: return __first; +16166: } +16166: }; +16166: +16166: +16166: +16166: template +16166: inline void +16166: __uninitialized_default(_ForwardIterator __first, +16166: _ForwardIterator __last) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType; +16166: +16166: const bool __assignable = is_copy_assignable<_ValueType>::value; +16166: +16166: std::__uninitialized_default_1<__is_trivial(_ValueType) +16166: && __assignable>:: +16166: __uninit_default(__first, __last); +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __uninitialized_default_n(_ForwardIterator __first, _Size __n) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType; +16166: +16166: constexpr bool __can_fill +16166: = __and_, is_copy_assignable<_ValueType>>::value; +16166: +16166: return __uninitialized_default_n_1<__is_trivial(_ValueType) +16166: && __can_fill>:: +16166: __uninit_default_n(__first, __n); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: __uninitialized_default_a(_ForwardIterator __first, +16166: _ForwardIterator __last, +16166: _Allocator& __alloc) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +16166: for (; __cur != __last; ++__cur) +16166: __traits::construct(__alloc, std::__addressof(*__cur)); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: inline void +16166: __uninitialized_default_a(_ForwardIterator __first, +16166: _ForwardIterator __last, +16166: allocator<_Tp>&) +16166: { std::__uninitialized_default(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _ForwardIterator +16166: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, +16166: _Allocator& __alloc) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; +16166: for (; __n > 0; --__n, (void) ++__cur) +16166: __traits::construct(__alloc, std::__addressof(*__cur)); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur, __alloc); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, +16166: allocator<_Tp>&) +16166: { return std::__uninitialized_default_n(__first, __n); } +16166: +16166: +16166: template +16166: struct __uninitialized_default_novalue_1 +16166: { +16166: template +16166: static void +16166: __uninit_default_novalue(_ForwardIterator __first, +16166: _ForwardIterator __last) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: for (; __cur != __last; ++__cur) +16166: std::_Construct_novalue(std::__addressof(*__cur)); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur); +16166: throw; +16166: } +16166: } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_default_novalue_1 +16166: { +16166: template +16166: static void +16166: __uninit_default_novalue(_ForwardIterator, _ForwardIterator) +16166: { +16166: } +16166: }; +16166: +16166: template +16166: struct __uninitialized_default_novalue_n_1 +16166: { +16166: template +16166: static _ForwardIterator +16166: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) +16166: { +16166: _ForwardIterator __cur = __first; +16166: try +16166: { +16166: for (; __n > 0; --__n, (void) ++__cur) +16166: std::_Construct_novalue(std::__addressof(*__cur)); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur); +16166: throw; +16166: } +16166: } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_default_novalue_n_1 +16166: { +16166: template +16166: static _ForwardIterator +16166: __uninit_default_novalue_n(_ForwardIterator __first, _Size __n) +16166: { return std::next(__first, __n); } +16166: }; +16166: +16166: +16166: +16166: template +16166: inline void +16166: __uninitialized_default_novalue(_ForwardIterator __first, +16166: _ForwardIterator __last) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType; +16166: +16166: std::__uninitialized_default_novalue_1< +16166: is_trivially_default_constructible<_ValueType>::value>:: +16166: __uninit_default_novalue(__first, __last); +16166: } +16166: +16166: +16166: +16166: template +16166: inline _ForwardIterator +16166: __uninitialized_default_novalue_n(_ForwardIterator __first, _Size __n) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType; +16166: +16166: return __uninitialized_default_novalue_n_1< +16166: is_trivially_default_constructible<_ValueType>::value>:: +16166: __uninit_default_novalue_n(__first, __n); +16166: } +16166: +16166: template +16166: _ForwardIterator +16166: __uninitialized_copy_n(_InputIterator __first, _Size __n, +16166: _ForwardIterator __result, input_iterator_tag) +16166: { +16166: _ForwardIterator __cur = __result; +16166: try +16166: { +16166: for (; __n > 0; --__n, (void) ++__first, ++__cur) +16166: std::_Construct(std::__addressof(*__cur), *__first); +16166: return __cur; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__result, __cur); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: inline _ForwardIterator +16166: __uninitialized_copy_n(_RandomAccessIterator __first, _Size __n, +16166: _ForwardIterator __result, +16166: random_access_iterator_tag) +16166: { return std::uninitialized_copy(__first, __first + __n, __result); } +16166: +16166: template +16166: pair<_InputIterator, _ForwardIterator> +16166: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, +16166: _ForwardIterator __result, input_iterator_tag) +16166: { +16166: _ForwardIterator __cur = __result; +16166: try +16166: { +16166: for (; __n > 0; --__n, (void) ++__first, ++__cur) +16166: std::_Construct(std::__addressof(*__cur), *__first); +16166: return {__first, __cur}; +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__result, __cur); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: inline pair<_RandomAccessIterator, _ForwardIterator> +16166: __uninitialized_copy_n_pair(_RandomAccessIterator __first, _Size __n, +16166: _ForwardIterator __result, +16166: random_access_iterator_tag) +16166: { +16166: auto __second_res = uninitialized_copy(__first, __first + __n, __result); +16166: auto __first_res = std::next(__first, __n); +16166: return {__first_res, __second_res}; +16166: } +16166: # 946 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline _ForwardIterator +16166: uninitialized_copy_n(_InputIterator __first, _Size __n, +16166: _ForwardIterator __result) +16166: { return std::__uninitialized_copy_n(__first, __n, __result, +16166: std::__iterator_category(__first)); } +16166: +16166: +16166: template +16166: inline pair<_InputIterator, _ForwardIterator> +16166: __uninitialized_copy_n_pair(_InputIterator __first, _Size __n, +16166: _ForwardIterator __result) +16166: { +16166: return +16166: std::__uninitialized_copy_n_pair(__first, __n, __result, +16166: std::__iterator_category(__first)); +16166: } +16166: # 973 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline void +16166: uninitialized_default_construct(_ForwardIterator __first, +16166: _ForwardIterator __last) +16166: { +16166: __uninitialized_default_novalue(__first, __last); +16166: } +16166: # 988 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline _ForwardIterator +16166: uninitialized_default_construct_n(_ForwardIterator __first, _Size __count) +16166: { +16166: return __uninitialized_default_novalue_n(__first, __count); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline void +16166: uninitialized_value_construct(_ForwardIterator __first, +16166: _ForwardIterator __last) +16166: { +16166: return __uninitialized_default(__first, __last); +16166: } +16166: # 1016 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline _ForwardIterator +16166: uninitialized_value_construct_n(_ForwardIterator __first, _Size __count) +16166: { +16166: return __uninitialized_default_n(__first, __count); +16166: } +16166: # 1031 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline _ForwardIterator +16166: uninitialized_move(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result) +16166: { +16166: return std::uninitialized_copy +16166: (std::make_move_iterator(__first), +16166: std::make_move_iterator(__last), __result); +16166: } +16166: # 1049 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: template +16166: inline pair<_InputIterator, _ForwardIterator> +16166: uninitialized_move_n(_InputIterator __first, _Size __count, +16166: _ForwardIterator __result) +16166: { +16166: auto __res = std::__uninitialized_copy_n_pair +16166: (std::make_move_iterator(__first), +16166: __count, __result); +16166: return {__res.first.base(), __res.second}; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline void +16166: __relocate_object_a(_Tp* __restrict __dest, _Up* __restrict __orig, +16166: _Allocator& __alloc) +16166: noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc, +16166: __dest, std::move(*__orig))) +16166: && noexcept(std::allocator_traits<_Allocator>::destroy( +16166: __alloc, std::__addressof(*__orig)))) +16166: { +16166: typedef std::allocator_traits<_Allocator> __traits; +16166: __traits::construct(__alloc, __dest, std::move(*__orig)); +16166: __traits::destroy(__alloc, std::__addressof(*__orig)); +16166: } +16166: +16166: +16166: +16166: template +16166: struct __is_bitwise_relocatable +16166: : is_trivial<_Tp> { }; +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __relocate_a_1(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result, _Allocator& __alloc) +16166: noexcept(noexcept(std::__relocate_object_a(std::addressof(*__result), +16166: std::addressof(*__first), +16166: __alloc))) +16166: { +16166: typedef typename iterator_traits<_InputIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType2; +16166: static_assert(std::is_same<_ValueType, _ValueType2>::value, +16166: "relocation is only possible for values of the same type"); +16166: _ForwardIterator __cur = __result; +16166: for (; __first != __last; ++__first, (void)++__cur) +16166: std::__relocate_object_a(std::__addressof(*__cur), +16166: std::__addressof(*__first), __alloc); +16166: return __cur; +16166: } +16166: +16166: +16166: template +16166: +16166: inline __enable_if_t::value, _Tp*> +16166: __relocate_a_1(_Tp* __first, _Tp* __last, +16166: _Tp* __result, +16166: [[__maybe_unused__]] allocator<_Up>& __alloc) noexcept +16166: { +16166: ptrdiff_t __count = __last - __first; +16166: if (__count > 0) +16166: { +16166: # 1129 "/usr/include/c++/14/bits/stl_uninitialized.h" 3 +16166: __builtin_memcpy(__result, __first, __count * sizeof(_Tp)); +16166: } +16166: return __result + __count; +16166: } +16166: +16166: +16166: template +16166: +16166: inline _ForwardIterator +16166: __relocate_a(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result, _Allocator& __alloc) +16166: noexcept(noexcept(__relocate_a_1(std::__niter_base(__first), +16166: std::__niter_base(__last), +16166: std::__niter_base(__result), __alloc))) +16166: { +16166: return std::__relocate_a_1(std::__niter_base(__first), +16166: std::__niter_base(__last), +16166: std::__niter_base(__result), __alloc); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 66 "/usr/include/c++/14/deque" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_deque.h" 1 3 +16166: # 63 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: # 1 "/usr/include/c++/14/initializer_list" 1 3 +16166: # 33 "/usr/include/c++/14/initializer_list" 3 +16166: +16166: # 34 "/usr/include/c++/14/initializer_list" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: template +16166: class initializer_list +16166: { +16166: public: +16166: typedef _E value_type; +16166: typedef const _E& reference; +16166: typedef const _E& const_reference; +16166: typedef size_t size_type; +16166: typedef const _E* iterator; +16166: typedef const _E* const_iterator; +16166: +16166: private: +16166: iterator _M_array; +16166: size_type _M_len; +16166: +16166: +16166: constexpr initializer_list(const_iterator __a, size_type __l) +16166: : _M_array(__a), _M_len(__l) { } +16166: +16166: public: +16166: constexpr initializer_list() noexcept +16166: : _M_array(0), _M_len(0) { } +16166: +16166: +16166: constexpr size_type +16166: size() const noexcept { return _M_len; } +16166: +16166: +16166: constexpr const_iterator +16166: begin() const noexcept { return _M_array; } +16166: +16166: +16166: constexpr const_iterator +16166: end() const noexcept { return begin() + size(); } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr const _Tp* +16166: begin(initializer_list<_Tp> __ils) noexcept +16166: { return __ils.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr const _Tp* +16166: end(initializer_list<_Tp> __ils) noexcept +16166: { return __ils.end(); } +16166: } +16166: # 64 "/usr/include/c++/14/bits/stl_deque.h" 2 3 +16166: # 72 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: # 95 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: constexpr inline size_t +16166: __deque_buf_size(size_t __size) +16166: { return (__size < 512 +16166: ? size_t(512 / __size) : size_t(1)); } +16166: # 112 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: struct _Deque_iterator +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: private: +16166: template +16166: using __iter = _Deque_iterator<_Tp, _CvTp&, __ptr_rebind<_Ptr, _CvTp>>; +16166: public: +16166: typedef __iter<_Tp> iterator; +16166: typedef __iter const_iterator; +16166: typedef __ptr_rebind<_Ptr, _Tp> _Elt_pointer; +16166: typedef __ptr_rebind<_Ptr, _Elt_pointer> _Map_pointer; +16166: +16166: +16166: static size_t _S_buffer_size() noexcept +16166: { return __deque_buf_size(sizeof(_Tp)); } +16166: +16166: typedef std::random_access_iterator_tag iterator_category; +16166: typedef _Tp value_type; +16166: typedef _Ptr pointer; +16166: typedef _Ref reference; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef _Deque_iterator _Self; +16166: +16166: _Elt_pointer _M_cur; +16166: _Elt_pointer _M_first; +16166: _Elt_pointer _M_last; +16166: _Map_pointer _M_node; +16166: +16166: _Deque_iterator(_Elt_pointer __x, _Map_pointer __y) noexcept +16166: : _M_cur(__x), _M_first(*__y), +16166: _M_last(*__y + _S_buffer_size()), _M_node(__y) { } +16166: +16166: _Deque_iterator() noexcept +16166: : _M_cur(), _M_first(), _M_last(), _M_node() { } +16166: # 161 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template, +16166: is_same<_Iter, iterator>>> +16166: _Deque_iterator(const _Iter& __x) noexcept +16166: : _M_cur(__x._M_cur), _M_first(__x._M_first), +16166: _M_last(__x._M_last), _M_node(__x._M_node) { } +16166: +16166: _Deque_iterator(const _Deque_iterator& __x) noexcept +16166: : _M_cur(__x._M_cur), _M_first(__x._M_first), +16166: _M_last(__x._M_last), _M_node(__x._M_node) { } +16166: +16166: _Deque_iterator& operator=(const _Deque_iterator&) = default; +16166: +16166: +16166: iterator +16166: _M_const_cast() const noexcept +16166: { return iterator(_M_cur, _M_node); } +16166: +16166: [[__nodiscard__]] +16166: reference +16166: operator*() const noexcept +16166: { return *_M_cur; } +16166: +16166: [[__nodiscard__]] +16166: pointer +16166: operator->() const noexcept +16166: { return _M_cur; } +16166: +16166: _Self& +16166: operator++() noexcept +16166: { +16166: ++_M_cur; +16166: if (_M_cur == _M_last) +16166: { +16166: _M_set_node(_M_node + 1); +16166: _M_cur = _M_first; +16166: } +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator++(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: ++*this; +16166: return __tmp; +16166: } +16166: +16166: _Self& +16166: operator--() noexcept +16166: { +16166: if (_M_cur == _M_first) +16166: { +16166: _M_set_node(_M_node - 1); +16166: _M_cur = _M_last; +16166: } +16166: --_M_cur; +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator--(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: --*this; +16166: return __tmp; +16166: } +16166: +16166: _Self& +16166: operator+=(difference_type __n) noexcept +16166: { +16166: const difference_type __offset = __n + (_M_cur - _M_first); +16166: if (__offset >= 0 && __offset < difference_type(_S_buffer_size())) +16166: _M_cur += __n; +16166: else +16166: { +16166: const difference_type __node_offset = +16166: __offset > 0 ? __offset / difference_type(_S_buffer_size()) +16166: : -difference_type((-__offset - 1) +16166: / _S_buffer_size()) - 1; +16166: _M_set_node(_M_node + __node_offset); +16166: _M_cur = _M_first + (__offset - __node_offset +16166: * difference_type(_S_buffer_size())); +16166: } +16166: return *this; +16166: } +16166: +16166: _Self& +16166: operator-=(difference_type __n) noexcept +16166: { return *this += -__n; } +16166: +16166: [[__nodiscard__]] +16166: reference +16166: operator[](difference_type __n) const noexcept +16166: { return *(*this + __n); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: _M_set_node(_Map_pointer __new_node) noexcept +16166: { +16166: _M_node = __new_node; +16166: _M_first = *__new_node; +16166: _M_last = _M_first + difference_type(_S_buffer_size()); +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator==(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_cur == __y._M_cur; } +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: friend bool +16166: operator==(const _Self& __x, +16166: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +16166: noexcept +16166: { return __x._M_cur == __y._M_cur; } +16166: # 296 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: [[__nodiscard__]] +16166: friend bool +16166: operator!=(const _Self& __x, const _Self& __y) noexcept +16166: { return !(__x == __y); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: friend bool +16166: operator!=(const _Self& __x, +16166: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +16166: noexcept +16166: { return !(__x == __y); } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator<(const _Self& __x, const _Self& __y) noexcept +16166: { +16166: return (__x._M_node == __y._M_node) +16166: ? (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: friend bool +16166: operator<(const _Self& __x, +16166: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +16166: noexcept +16166: { +16166: return (__x._M_node == __y._M_node) +16166: ? (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node); +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator>(const _Self& __x, const _Self& __y) noexcept +16166: { return __y < __x; } +16166: +16166: template +16166: [[__nodiscard__]] +16166: friend bool +16166: operator>(const _Self& __x, +16166: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +16166: noexcept +16166: { return __y < __x; } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator<=(const _Self& __x, const _Self& __y) noexcept +16166: { return !(__y < __x); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: friend bool +16166: operator<=(const _Self& __x, +16166: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +16166: noexcept +16166: { return !(__y < __x); } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator>=(const _Self& __x, const _Self& __y) noexcept +16166: { return !(__x < __y); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: friend bool +16166: operator>=(const _Self& __x, +16166: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +16166: noexcept +16166: { return !(__x < __y); } +16166: +16166: +16166: [[__nodiscard__]] +16166: friend difference_type +16166: operator-(const _Self& __x, const _Self& __y) noexcept +16166: { +16166: return difference_type(_S_buffer_size()) +16166: * (__x._M_node - __y._M_node - bool(__x._M_node)) +16166: + (__x._M_cur - __x._M_first) +16166: + (__y._M_last - __y._M_cur); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: friend difference_type +16166: operator-(const _Self& __x, +16166: const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) +16166: noexcept +16166: { +16166: return difference_type(_S_buffer_size()) +16166: * (__x._M_node - __y._M_node - bool(__x._M_node)) +16166: + (__x._M_cur - __x._M_first) +16166: + (__y._M_last - __y._M_cur); +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend _Self +16166: operator+(const _Self& __x, difference_type __n) noexcept +16166: { +16166: _Self __tmp = __x; +16166: __tmp += __n; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend _Self +16166: operator-(const _Self& __x, difference_type __n) noexcept +16166: { +16166: _Self __tmp = __x; +16166: __tmp -= __n; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend _Self +16166: operator+(difference_type __n, const _Self& __x) noexcept +16166: { return __x + __n; } +16166: }; +16166: # 429 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: class _Deque_base +16166: { +16166: protected: +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_Tp>::other _Tp_alloc_type; +16166: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; +16166: +16166: +16166: +16166: +16166: +16166: typedef typename _Alloc_traits::pointer _Ptr; +16166: typedef typename _Alloc_traits::const_pointer _Ptr_const; +16166: +16166: +16166: typedef typename _Alloc_traits::template rebind<_Ptr>::other +16166: _Map_alloc_type; +16166: typedef __gnu_cxx::__alloc_traits<_Map_alloc_type> _Map_alloc_traits; +16166: +16166: typedef _Alloc allocator_type; +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_get_Tp_allocator()); } +16166: +16166: typedef _Deque_iterator<_Tp, _Tp&, _Ptr> iterator; +16166: typedef _Deque_iterator<_Tp, const _Tp&, _Ptr_const> const_iterator; +16166: +16166: _Deque_base() +16166: : _M_impl() +16166: { _M_initialize_map(0); } +16166: +16166: _Deque_base(size_t __num_elements) +16166: : _M_impl() +16166: { _M_initialize_map(__num_elements); } +16166: +16166: _Deque_base(const allocator_type& __a, size_t __num_elements) +16166: : _M_impl(__a) +16166: { _M_initialize_map(__num_elements); } +16166: +16166: _Deque_base(const allocator_type& __a) +16166: : _M_impl(__a) +16166: { } +16166: +16166: +16166: _Deque_base(_Deque_base&& __x) +16166: : _M_impl(std::move(__x._M_get_Tp_allocator())) +16166: { +16166: _M_initialize_map(0); +16166: if (__x._M_impl._M_map) +16166: this->_M_impl._M_swap_data(__x._M_impl); +16166: } +16166: +16166: _Deque_base(_Deque_base&& __x, const allocator_type& __a) +16166: : _M_impl(std::move(__x._M_impl), _Tp_alloc_type(__a)) +16166: { __x._M_initialize_map(0); } +16166: +16166: _Deque_base(_Deque_base&& __x, const allocator_type& __a, size_t __n) +16166: : _M_impl(__a) +16166: { +16166: if (__x.get_allocator() == __a) +16166: { +16166: if (__x._M_impl._M_map) +16166: { +16166: _M_initialize_map(0); +16166: this->_M_impl._M_swap_data(__x._M_impl); +16166: } +16166: } +16166: else +16166: { +16166: _M_initialize_map(__n); +16166: } +16166: } +16166: +16166: +16166: ~_Deque_base() noexcept; +16166: +16166: typedef typename iterator::_Map_pointer _Map_pointer; +16166: +16166: struct _Deque_impl_data +16166: { +16166: _Map_pointer _M_map; +16166: size_t _M_map_size; +16166: iterator _M_start; +16166: iterator _M_finish; +16166: +16166: _Deque_impl_data() noexcept +16166: : _M_map(), _M_map_size(), _M_start(), _M_finish() +16166: { } +16166: +16166: +16166: _Deque_impl_data(const _Deque_impl_data&) = default; +16166: _Deque_impl_data& +16166: operator=(const _Deque_impl_data&) = default; +16166: +16166: _Deque_impl_data(_Deque_impl_data&& __x) noexcept +16166: : _Deque_impl_data(__x) +16166: { __x = _Deque_impl_data(); } +16166: +16166: +16166: void +16166: _M_swap_data(_Deque_impl_data& __x) noexcept +16166: { +16166: +16166: +16166: std::swap(*this, __x); +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: struct _Deque_impl +16166: : public _Tp_alloc_type, public _Deque_impl_data +16166: { +16166: _Deque_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) +16166: +16166: : _Tp_alloc_type() +16166: { } +16166: +16166: _Deque_impl(const _Tp_alloc_type& __a) noexcept +16166: : _Tp_alloc_type(__a) +16166: { } +16166: +16166: +16166: _Deque_impl(_Deque_impl&&) = default; +16166: +16166: _Deque_impl(_Tp_alloc_type&& __a) noexcept +16166: : _Tp_alloc_type(std::move(__a)) +16166: { } +16166: +16166: _Deque_impl(_Deque_impl&& __d, _Tp_alloc_type&& __a) +16166: : _Tp_alloc_type(std::move(__a)), _Deque_impl_data(std::move(__d)) +16166: { } +16166: +16166: }; +16166: +16166: _Tp_alloc_type& +16166: _M_get_Tp_allocator() noexcept +16166: { return this->_M_impl; } +16166: +16166: const _Tp_alloc_type& +16166: _M_get_Tp_allocator() const noexcept +16166: { return this->_M_impl; } +16166: +16166: _Map_alloc_type +16166: _M_get_map_allocator() const noexcept +16166: { return _Map_alloc_type(_M_get_Tp_allocator()); } +16166: +16166: _Ptr +16166: _M_allocate_node() +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits; +16166: return _Traits::allocate(_M_impl, __deque_buf_size(sizeof(_Tp))); +16166: } +16166: +16166: void +16166: _M_deallocate_node(_Ptr __p) noexcept +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits; +16166: _Traits::deallocate(_M_impl, __p, __deque_buf_size(sizeof(_Tp))); +16166: } +16166: +16166: _Map_pointer +16166: _M_allocate_map(size_t __n) +16166: { +16166: _Map_alloc_type __map_alloc = _M_get_map_allocator(); +16166: return _Map_alloc_traits::allocate(__map_alloc, __n); +16166: } +16166: +16166: void +16166: _M_deallocate_map(_Map_pointer __p, size_t __n) noexcept +16166: { +16166: _Map_alloc_type __map_alloc = _M_get_map_allocator(); +16166: _Map_alloc_traits::deallocate(__map_alloc, __p, __n); +16166: } +16166: +16166: void _M_initialize_map(size_t); +16166: void _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish); +16166: void _M_destroy_nodes(_Map_pointer __nstart, +16166: _Map_pointer __nfinish) noexcept; +16166: enum { _S_initial_map_size = 8 }; +16166: +16166: _Deque_impl _M_impl; +16166: }; +16166: +16166: template +16166: _Deque_base<_Tp, _Alloc>:: +16166: ~_Deque_base() noexcept +16166: { +16166: if (this->_M_impl._M_map) +16166: { +16166: _M_destroy_nodes(this->_M_impl._M_start._M_node, +16166: this->_M_impl._M_finish._M_node + 1); +16166: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +16166: } +16166: } +16166: # 636 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: void +16166: _Deque_base<_Tp, _Alloc>:: +16166: _M_initialize_map(size_t __num_elements) +16166: { +16166: const size_t __num_nodes = (__num_elements / __deque_buf_size(sizeof(_Tp)) +16166: + 1); +16166: +16166: this->_M_impl._M_map_size = std::max((size_t) _S_initial_map_size, +16166: size_t(__num_nodes + 2)); +16166: this->_M_impl._M_map = _M_allocate_map(this->_M_impl._M_map_size); +16166: +16166: +16166: +16166: +16166: +16166: +16166: _Map_pointer __nstart = (this->_M_impl._M_map +16166: + (this->_M_impl._M_map_size - __num_nodes) / 2); +16166: _Map_pointer __nfinish = __nstart + __num_nodes; +16166: +16166: try +16166: { _M_create_nodes(__nstart, __nfinish); } +16166: catch(...) +16166: { +16166: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +16166: this->_M_impl._M_map = _Map_pointer(); +16166: this->_M_impl._M_map_size = 0; +16166: throw; +16166: } +16166: +16166: this->_M_impl._M_start._M_set_node(__nstart); +16166: this->_M_impl._M_finish._M_set_node(__nfinish - 1); +16166: this->_M_impl._M_start._M_cur = _M_impl._M_start._M_first; +16166: this->_M_impl._M_finish._M_cur = (this->_M_impl._M_finish._M_first +16166: + __num_elements +16166: % __deque_buf_size(sizeof(_Tp))); +16166: } +16166: +16166: template +16166: void +16166: _Deque_base<_Tp, _Alloc>:: +16166: _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish) +16166: { +16166: _Map_pointer __cur; +16166: try +16166: { +16166: for (__cur = __nstart; __cur < __nfinish; ++__cur) +16166: *__cur = this->_M_allocate_node(); +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(__nstart, __cur); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: void +16166: _Deque_base<_Tp, _Alloc>:: +16166: _M_destroy_nodes(_Map_pointer __nstart, +16166: _Map_pointer __nfinish) noexcept +16166: { +16166: for (_Map_pointer __n = __nstart; __n < __nfinish; ++__n) +16166: _M_deallocate_node(*__n); +16166: } +16166: # 787 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template > +16166: class deque : protected _Deque_base<_Tp, _Alloc> +16166: { +16166: # 800 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: static_assert(is_same::type, _Tp>::value, +16166: "std::deque must have a non-const, non-volatile value_type"); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef _Deque_base<_Tp, _Alloc> _Base; +16166: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; +16166: typedef typename _Base::_Alloc_traits _Alloc_traits; +16166: typedef typename _Base::_Map_pointer _Map_pointer; +16166: +16166: public: +16166: typedef _Tp value_type; +16166: typedef typename _Alloc_traits::pointer pointer; +16166: typedef typename _Alloc_traits::const_pointer const_pointer; +16166: typedef typename _Alloc_traits::reference reference; +16166: typedef typename _Alloc_traits::const_reference const_reference; +16166: typedef typename _Base::iterator iterator; +16166: typedef typename _Base::const_iterator const_iterator; +16166: typedef std::reverse_iterator const_reverse_iterator; +16166: typedef std::reverse_iterator reverse_iterator; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef _Alloc allocator_type; +16166: +16166: private: +16166: static size_t _S_buffer_size() noexcept +16166: { return __deque_buf_size(sizeof(_Tp)); } +16166: +16166: +16166: using _Base::_M_initialize_map; +16166: using _Base::_M_create_nodes; +16166: using _Base::_M_destroy_nodes; +16166: using _Base::_M_allocate_node; +16166: using _Base::_M_deallocate_node; +16166: using _Base::_M_allocate_map; +16166: using _Base::_M_deallocate_map; +16166: using _Base::_M_get_Tp_allocator; +16166: +16166: +16166: +16166: +16166: +16166: using _Base::_M_impl; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: deque() = default; +16166: # 864 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: explicit +16166: deque(const allocator_type& __a) +16166: : _Base(__a, 0) { } +16166: # 877 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: explicit +16166: deque(size_type __n, const allocator_type& __a = allocator_type()) +16166: : _Base(__a, _S_check_init_len(__n, __a)) +16166: { _M_default_initialize(); } +16166: # 890 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: deque(size_type __n, const value_type& __value, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(__a, _S_check_init_len(__n, __a)) +16166: { _M_fill_initialize(__value); } +16166: # 917 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: deque(const deque& __x) +16166: : _Base(_Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator()), +16166: __x.size()) +16166: { std::__uninitialized_copy_a(__x.begin(), __x.end(), +16166: this->_M_impl._M_start, +16166: _M_get_Tp_allocator()); } +16166: # 933 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: deque(deque&&) = default; +16166: +16166: +16166: deque(const deque& __x, const __type_identity_t& __a) +16166: : _Base(__a, __x.size()) +16166: { std::__uninitialized_copy_a(__x.begin(), __x.end(), +16166: this->_M_impl._M_start, +16166: _M_get_Tp_allocator()); } +16166: +16166: +16166: deque(deque&& __x, const __type_identity_t& __a) +16166: : deque(std::move(__x), __a, typename _Alloc_traits::is_always_equal{}) +16166: { } +16166: +16166: private: +16166: deque(deque&& __x, const allocator_type& __a, true_type) +16166: : _Base(std::move(__x), __a) +16166: { } +16166: +16166: deque(deque&& __x, const allocator_type& __a, false_type) +16166: : _Base(std::move(__x), __a, __x.size()) +16166: { +16166: if (__x.get_allocator() != __a && !__x.empty()) +16166: { +16166: std::__uninitialized_move_a(__x.begin(), __x.end(), +16166: this->_M_impl._M_start, +16166: _M_get_Tp_allocator()); +16166: __x.clear(); +16166: } +16166: } +16166: +16166: public: +16166: # 976 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: deque(initializer_list __l, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(__a) +16166: { +16166: _M_range_initialize(__l.begin(), __l.end(), +16166: random_access_iterator_tag()); +16166: } +16166: # 1001 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template> +16166: deque(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(__a) +16166: { +16166: _M_range_initialize(__first, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: # 1027 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: ~deque() +16166: { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); } +16166: # 1039 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: deque& +16166: operator=(const deque& __x); +16166: # 1051 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: deque& +16166: operator=(deque&& __x) noexcept(_Alloc_traits::_S_always_equal()) +16166: { +16166: using __always_equal = typename _Alloc_traits::is_always_equal; +16166: _M_move_assign1(std::move(__x), __always_equal{}); +16166: return *this; +16166: } +16166: # 1070 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: deque& +16166: operator=(initializer_list __l) +16166: { +16166: _M_assign_aux(__l.begin(), __l.end(), +16166: random_access_iterator_tag()); +16166: return *this; +16166: } +16166: # 1089 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: assign(size_type __n, const value_type& __val) +16166: { _M_fill_assign(__n, __val); } +16166: # 1106 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template> +16166: void +16166: assign(_InputIterator __first, _InputIterator __last) +16166: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +16166: # 1133 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: assign(initializer_list __l) +16166: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return _Base::get_allocator(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: begin() noexcept +16166: { return this->_M_impl._M_start; } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: begin() const noexcept +16166: { return this->_M_impl._M_start; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: end() noexcept +16166: { return this->_M_impl._M_finish; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: end() const noexcept +16166: { return this->_M_impl._M_finish; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return reverse_iterator(this->_M_impl._M_finish); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(this->_M_impl._M_finish); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rend() noexcept +16166: { return reverse_iterator(this->_M_impl._M_start); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(this->_M_impl._M_start); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cbegin() const noexcept +16166: { return this->_M_impl._M_start; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cend() const noexcept +16166: { return this->_M_impl._M_finish; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crbegin() const noexcept +16166: { return const_reverse_iterator(this->_M_impl._M_finish); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crend() const noexcept +16166: { return const_reverse_iterator(this->_M_impl._M_start); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: size() const noexcept +16166: { return this->_M_impl._M_finish - this->_M_impl._M_start; } +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: max_size() const noexcept +16166: { return _S_max_size(_M_get_Tp_allocator()); } +16166: # 1287 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: resize(size_type __new_size) +16166: { +16166: const size_type __len = size(); +16166: if (__new_size > __len) +16166: _M_default_append(__new_size - __len); +16166: else if (__new_size < __len) +16166: _M_erase_at_end(this->_M_impl._M_start +16166: + difference_type(__new_size)); +16166: } +16166: # 1309 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: resize(size_type __new_size, const value_type& __x) +16166: # 1326 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: { +16166: const size_type __len = size(); +16166: if (__new_size > __len) +16166: _M_fill_insert(this->_M_impl._M_finish, __new_size - __len, __x); +16166: else if (__new_size < __len) +16166: _M_erase_at_end(this->_M_impl._M_start +16166: + difference_type(__new_size)); +16166: } +16166: +16166: +16166: +16166: void +16166: shrink_to_fit() noexcept +16166: { _M_shrink_to_fit(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return this->_M_impl._M_finish == this->_M_impl._M_start; } +16166: # 1362 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: [[__nodiscard__]] +16166: reference +16166: operator[](size_type __n) noexcept +16166: { +16166: ; +16166: return this->_M_impl._M_start[difference_type(__n)]; +16166: } +16166: # 1381 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: [[__nodiscard__]] +16166: const_reference +16166: operator[](size_type __n) const noexcept +16166: { +16166: ; +16166: return this->_M_impl._M_start[difference_type(__n)]; +16166: } +16166: +16166: protected: +16166: +16166: void +16166: _M_range_check(size_type __n) const +16166: { +16166: if (__n >= this->size()) +16166: __throw_out_of_range_fmt(("deque::_M_range_check: __n " "(which is %zu)>= this->size() " "(which is %zu)") +16166: +16166: , +16166: __n, this->size()); +16166: } +16166: +16166: public: +16166: # 1413 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: reference +16166: at(size_type __n) +16166: { +16166: _M_range_check(__n); +16166: return (*this)[__n]; +16166: } +16166: # 1431 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: const_reference +16166: at(size_type __n) const +16166: { +16166: _M_range_check(__n); +16166: return (*this)[__n]; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: front() noexcept +16166: { +16166: ; +16166: return *begin(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: front() const noexcept +16166: { +16166: ; +16166: return *begin(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: back() noexcept +16166: { +16166: ; +16166: iterator __tmp = end(); +16166: --__tmp; +16166: return *__tmp; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: back() const noexcept +16166: { +16166: ; +16166: const_iterator __tmp = end(); +16166: --__tmp; +16166: return *__tmp; +16166: } +16166: # 1500 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: push_front(const value_type& __x) +16166: { +16166: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) +16166: { +16166: _Alloc_traits::construct(this->_M_impl, +16166: this->_M_impl._M_start._M_cur - 1, +16166: __x); +16166: --this->_M_impl._M_start._M_cur; +16166: } +16166: else +16166: _M_push_front_aux(__x); +16166: } +16166: +16166: +16166: void +16166: push_front(value_type&& __x) +16166: { emplace_front(std::move(__x)); } +16166: +16166: template +16166: +16166: reference +16166: +16166: +16166: +16166: emplace_front(_Args&&... __args); +16166: # 1537 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: push_back(const value_type& __x) +16166: { +16166: if (this->_M_impl._M_finish._M_cur +16166: != this->_M_impl._M_finish._M_last - 1) +16166: { +16166: _Alloc_traits::construct(this->_M_impl, +16166: this->_M_impl._M_finish._M_cur, __x); +16166: ++this->_M_impl._M_finish._M_cur; +16166: } +16166: else +16166: _M_push_back_aux(__x); +16166: } +16166: +16166: +16166: void +16166: push_back(value_type&& __x) +16166: { emplace_back(std::move(__x)); } +16166: +16166: template +16166: +16166: reference +16166: +16166: +16166: +16166: emplace_back(_Args&&... __args); +16166: # 1573 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: pop_front() noexcept +16166: { +16166: ; +16166: if (this->_M_impl._M_start._M_cur +16166: != this->_M_impl._M_start._M_last - 1) +16166: { +16166: _Alloc_traits::destroy(_M_get_Tp_allocator(), +16166: this->_M_impl._M_start._M_cur); +16166: ++this->_M_impl._M_start._M_cur; +16166: } +16166: else +16166: _M_pop_front_aux(); +16166: } +16166: # 1596 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: pop_back() noexcept +16166: { +16166: ; +16166: if (this->_M_impl._M_finish._M_cur +16166: != this->_M_impl._M_finish._M_first) +16166: { +16166: --this->_M_impl._M_finish._M_cur; +16166: _Alloc_traits::destroy(_M_get_Tp_allocator(), +16166: this->_M_impl._M_finish._M_cur); +16166: } +16166: else +16166: _M_pop_back_aux(); +16166: } +16166: # 1621 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: iterator +16166: emplace(const_iterator __position, _Args&&... __args); +16166: # 1634 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: iterator +16166: insert(const_iterator __position, const value_type& __x); +16166: # 1660 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: iterator +16166: insert(const_iterator __position, value_type&& __x) +16166: { return emplace(__position, std::move(__x)); } +16166: # 1674 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: iterator +16166: insert(const_iterator __p, initializer_list __l) +16166: { +16166: auto __offset = __p - cbegin(); +16166: _M_range_insert_aux(__p._M_const_cast(), __l.begin(), __l.end(), +16166: std::random_access_iterator_tag()); +16166: return begin() + __offset; +16166: } +16166: # 1693 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: iterator +16166: insert(const_iterator __position, size_type __n, const value_type& __x) +16166: { +16166: difference_type __offset = __position - cbegin(); +16166: _M_fill_insert(__position._M_const_cast(), __n, __x); +16166: return begin() + __offset; +16166: } +16166: # 1727 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template> +16166: iterator +16166: insert(const_iterator __position, _InputIterator __first, +16166: _InputIterator __last) +16166: { +16166: difference_type __offset = __position - cbegin(); +16166: _M_range_insert_aux(__position._M_const_cast(), __first, __last, +16166: std::__iterator_category(__first)); +16166: return begin() + __offset; +16166: } +16166: # 1773 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: iterator +16166: +16166: erase(const_iterator __position) +16166: +16166: +16166: +16166: { return _M_erase(__position._M_const_cast()); } +16166: # 1797 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: iterator +16166: +16166: erase(const_iterator __first, const_iterator __last) +16166: +16166: +16166: +16166: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } +16166: # 1816 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: swap(deque& __x) noexcept +16166: { +16166: +16166: 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) +16166: ; +16166: +16166: _M_impl._M_swap_data(__x._M_impl); +16166: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), +16166: __x._M_get_Tp_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_erase_at_end(begin()); } +16166: +16166: protected: +16166: # 1866 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: static size_t +16166: _S_check_init_len(size_t __n, const allocator_type& __a) +16166: { +16166: if (__n > _S_max_size(__a)) +16166: __throw_length_error( +16166: ("cannot create std::deque larger than max_size()")); +16166: return __n; +16166: } +16166: +16166: static size_type +16166: _S_max_size(const _Tp_alloc_type& __a) noexcept +16166: { +16166: const size_t __diffmax = __gnu_cxx::__numeric_traits::__max; +16166: const size_t __allocmax = _Alloc_traits::max_size(__a); +16166: return (std::min)(__diffmax, __allocmax); +16166: } +16166: # 1895 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: void +16166: _M_range_initialize(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag); +16166: +16166: +16166: template +16166: void +16166: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag); +16166: # 1917 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: _M_fill_initialize(const value_type& __value); +16166: +16166: +16166: +16166: void +16166: _M_default_initialize(); +16166: # 1948 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: void +16166: _M_assign_aux(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag); +16166: +16166: +16166: template +16166: void +16166: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag) +16166: { +16166: const size_type __len = std::distance(__first, __last); +16166: if (__len > size()) +16166: { +16166: _ForwardIterator __mid = __first; +16166: std::advance(__mid, size()); +16166: std::copy(__first, __mid, begin()); +16166: _M_range_insert_aux(end(), __mid, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: else +16166: _M_erase_at_end(std::copy(__first, __last, begin())); +16166: } +16166: +16166: +16166: +16166: void +16166: _M_fill_assign(size_type __n, const value_type& __val) +16166: { +16166: if (__n > size()) +16166: { +16166: std::fill(begin(), end(), __val); +16166: _M_fill_insert(end(), __n - size(), __val); +16166: } +16166: else +16166: { +16166: _M_erase_at_end(begin() + difference_type(__n)); +16166: std::fill(begin(), end(), __val); +16166: } +16166: } +16166: # 1996 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: void _M_push_back_aux(_Args&&... __args); +16166: +16166: template +16166: void _M_push_front_aux(_Args&&... __args); +16166: +16166: +16166: void _M_pop_back_aux(); +16166: +16166: void _M_pop_front_aux(); +16166: # 2035 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: void +16166: _M_range_insert_aux(iterator __pos, _InputIterator __first, +16166: _InputIterator __last, std::input_iterator_tag); +16166: +16166: +16166: template +16166: void +16166: _M_range_insert_aux(iterator __pos, _ForwardIterator __first, +16166: _ForwardIterator __last, std::forward_iterator_tag); +16166: +16166: +16166: +16166: +16166: void +16166: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: _M_insert_aux(iterator __pos, const value_type& __x) +16166: { return _M_emplace_aux(__pos, __x); } +16166: +16166: template +16166: iterator +16166: _M_emplace_aux(iterator __pos, _Args&&... __args); +16166: +16166: +16166: +16166: void +16166: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x); +16166: +16166: +16166: template +16166: void +16166: _M_insert_aux(iterator __pos, +16166: _ForwardIterator __first, _ForwardIterator __last, +16166: size_type __n); +16166: +16166: +16166: +16166: +16166: void +16166: _M_destroy_data_aux(iterator __first, iterator __last); +16166: +16166: +16166: +16166: template +16166: void +16166: _M_destroy_data(iterator __first, iterator __last, const _Alloc1&) +16166: { _M_destroy_data_aux(__first, __last); } +16166: +16166: void +16166: _M_destroy_data(iterator __first, iterator __last, +16166: const std::allocator<_Tp>&) +16166: { +16166: if (!__has_trivial_destructor(value_type)) +16166: _M_destroy_data_aux(__first, __last); +16166: } +16166: +16166: +16166: void +16166: _M_erase_at_begin(iterator __pos) +16166: { +16166: _M_destroy_data(begin(), __pos, _M_get_Tp_allocator()); +16166: _M_destroy_nodes(this->_M_impl._M_start._M_node, __pos._M_node); +16166: this->_M_impl._M_start = __pos; +16166: } +16166: +16166: +16166: +16166: void +16166: _M_erase_at_end(iterator __pos) +16166: { +16166: _M_destroy_data(__pos, end(), _M_get_Tp_allocator()); +16166: _M_destroy_nodes(__pos._M_node + 1, +16166: this->_M_impl._M_finish._M_node + 1); +16166: this->_M_impl._M_finish = __pos; +16166: } +16166: +16166: iterator +16166: _M_erase(iterator __pos); +16166: +16166: iterator +16166: _M_erase(iterator __first, iterator __last); +16166: +16166: +16166: +16166: void +16166: _M_default_append(size_type __n); +16166: +16166: bool +16166: _M_shrink_to_fit(); +16166: +16166: +16166: +16166: +16166: iterator +16166: _M_reserve_elements_at_front(size_type __n) +16166: { +16166: const size_type __vacancies = this->_M_impl._M_start._M_cur +16166: - this->_M_impl._M_start._M_first; +16166: if (__n > __vacancies) +16166: _M_new_elements_at_front(__n - __vacancies); +16166: return this->_M_impl._M_start - difference_type(__n); +16166: } +16166: +16166: iterator +16166: _M_reserve_elements_at_back(size_type __n) +16166: { +16166: const size_type __vacancies = (this->_M_impl._M_finish._M_last +16166: - this->_M_impl._M_finish._M_cur) - 1; +16166: if (__n > __vacancies) +16166: _M_new_elements_at_back(__n - __vacancies); +16166: return this->_M_impl._M_finish + difference_type(__n); +16166: } +16166: +16166: void +16166: _M_new_elements_at_front(size_type __new_elements); +16166: +16166: void +16166: _M_new_elements_at_back(size_type __new_elements); +16166: # 2171 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: void +16166: _M_reserve_map_at_back(size_type __nodes_to_add = 1) +16166: { +16166: if (__nodes_to_add + 1 > this->_M_impl._M_map_size +16166: - (this->_M_impl._M_finish._M_node - this->_M_impl._M_map)) +16166: _M_reallocate_map(__nodes_to_add, false); +16166: } +16166: +16166: void +16166: _M_reserve_map_at_front(size_type __nodes_to_add = 1) +16166: { +16166: if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node +16166: - this->_M_impl._M_map)) +16166: _M_reallocate_map(__nodes_to_add, true); +16166: } +16166: +16166: void +16166: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front); +16166: +16166: +16166: +16166: +16166: +16166: void +16166: _M_move_assign1(deque&& __x, true_type) noexcept +16166: { +16166: this->_M_impl._M_swap_data(__x._M_impl); +16166: __x.clear(); +16166: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: _M_move_assign1(deque&& __x, false_type) +16166: { +16166: if (_M_get_Tp_allocator() == __x._M_get_Tp_allocator()) +16166: return _M_move_assign1(std::move(__x), true_type()); +16166: +16166: constexpr bool __move_storage = +16166: _Alloc_traits::_S_propagate_on_move_assign(); +16166: _M_move_assign2(std::move(__x), __bool_constant<__move_storage>()); +16166: } +16166: +16166: +16166: +16166: template +16166: void +16166: _M_replace_map(_Args&&... __args) +16166: { +16166: +16166: deque __newobj(std::forward<_Args>(__args)...); +16166: +16166: clear(); +16166: _M_deallocate_node(*begin()._M_node); +16166: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +16166: this->_M_impl._M_map = nullptr; +16166: this->_M_impl._M_map_size = 0; +16166: +16166: this->_M_impl._M_swap_data(__newobj._M_impl); +16166: } +16166: +16166: +16166: void +16166: _M_move_assign2(deque&& __x, true_type) +16166: { +16166: +16166: auto __alloc = __x._M_get_Tp_allocator(); +16166: +16166: +16166: _M_replace_map(std::move(__x)); +16166: +16166: _M_get_Tp_allocator() = std::move(__alloc); +16166: } +16166: +16166: +16166: +16166: void +16166: _M_move_assign2(deque&& __x, false_type) +16166: { +16166: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) +16166: { +16166: +16166: +16166: _M_replace_map(std::move(__x), __x.get_allocator()); +16166: } +16166: else +16166: { +16166: +16166: +16166: _M_assign_aux(std::make_move_iterator(__x.begin()), +16166: std::make_move_iterator(__x.end()), +16166: std::random_access_iterator_tag()); +16166: __x.clear(); +16166: } +16166: } +16166: +16166: }; +16166: +16166: +16166: template::value_type, +16166: typename _Allocator = allocator<_ValT>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireAllocator<_Allocator>> +16166: deque(_InputIterator, _InputIterator, _Allocator = _Allocator()) +16166: -> deque<_ValT, _Allocator>; +16166: # 2291 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +16166: { return __x.size() == __y.size() +16166: && std::equal(__x.begin(), __x.end(), __y.begin()); } +16166: # 2331 "/usr/include/c++/14/bits/stl_deque.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +16166: { return std::lexicographical_compare(__x.begin(), __x.end(), +16166: __y.begin(), __y.end()); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_bitwise_relocatable> +16166: : true_type { }; +16166: +16166: +16166: +16166: } +16166: # 67 "/usr/include/c++/14/deque" 2 3 +16166: # 1 "/usr/include/c++/14/bits/refwrap.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/refwrap.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/refwrap.h" 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/invoke.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/invoke.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/invoke.h" 3 +16166: # 42 "/usr/include/c++/14/bits/invoke.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 53 "/usr/include/c++/14/bits/invoke.h" 3 +16166: template::type> +16166: constexpr _Up&& +16166: __invfwd(typename remove_reference<_Tp>::type& __t) noexcept +16166: { return static_cast<_Up&&>(__t); } +16166: +16166: template +16166: constexpr _Res +16166: __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) +16166: { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } +16166: +16166: template +16166: constexpr _Res +16166: __invoke_impl(__invoke_memfun_ref, _MemFun&& __f, _Tp&& __t, +16166: _Args&&... __args) +16166: { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); } +16166: +16166: template +16166: constexpr _Res +16166: __invoke_impl(__invoke_memfun_deref, _MemFun&& __f, _Tp&& __t, +16166: _Args&&... __args) +16166: { +16166: return ((*std::forward<_Tp>(__t)).*__f)(std::forward<_Args>(__args)...); +16166: } +16166: +16166: template +16166: constexpr _Res +16166: __invoke_impl(__invoke_memobj_ref, _MemPtr&& __f, _Tp&& __t) +16166: { return __invfwd<_Tp>(__t).*__f; } +16166: +16166: template +16166: constexpr _Res +16166: __invoke_impl(__invoke_memobj_deref, _MemPtr&& __f, _Tp&& __t) +16166: { return (*std::forward<_Tp>(__t)).*__f; } +16166: +16166: +16166: template +16166: constexpr typename __invoke_result<_Callable, _Args...>::type +16166: __invoke(_Callable&& __fn, _Args&&... __args) +16166: noexcept(__is_nothrow_invocable<_Callable, _Args...>::value) +16166: { +16166: using __result = __invoke_result<_Callable, _Args...>; +16166: using __type = typename __result::type; +16166: using __tag = typename __result::__invoke_type; +16166: return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: +16166: template +16166: constexpr enable_if_t, _Res> +16166: __invoke_r(_Callable&& __fn, _Args&&... __args) +16166: noexcept(is_nothrow_invocable_r_v<_Res, _Callable, _Args...>) +16166: { +16166: using __result = __invoke_result<_Callable, _Args...>; +16166: using __type = typename __result::type; +16166: using __tag = typename __result::__invoke_type; +16166: if constexpr (is_void_v<_Res>) +16166: std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), +16166: std::forward<_Args>(__args)...); +16166: else +16166: return std::__invoke_impl<__type>(__tag{}, +16166: std::forward<_Callable>(__fn), +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 155 "/usr/include/c++/14/bits/invoke.h" 3 +16166: +16166: } +16166: # 39 "/usr/include/c++/14/bits/refwrap.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_function.h" 1 3 +16166: # 63 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 116 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: template +16166: struct unary_function +16166: { +16166: +16166: typedef _Arg argument_type; +16166: +16166: +16166: typedef _Result result_type; +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct binary_function +16166: { +16166: +16166: typedef _Arg1 first_argument_type; +16166: +16166: +16166: typedef _Arg2 second_argument_type; +16166: +16166: +16166: typedef _Result result_type; +16166: } __attribute__ ((__deprecated__)); +16166: # 157 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: struct __is_transparent; +16166: +16166: template +16166: struct plus; +16166: +16166: template +16166: struct minus; +16166: +16166: template +16166: struct multiplies; +16166: +16166: template +16166: struct divides; +16166: +16166: template +16166: struct modulus; +16166: +16166: template +16166: struct negate; +16166: +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: template +16166: struct plus : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x + __y; } +16166: }; +16166: +16166: +16166: template +16166: struct minus : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x - __y; } +16166: }; +16166: +16166: +16166: template +16166: struct multiplies : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x * __y; } +16166: }; +16166: +16166: +16166: template +16166: struct divides : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x / __y; } +16166: }; +16166: +16166: +16166: template +16166: struct modulus : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x % __y; } +16166: }; +16166: +16166: +16166: template +16166: struct negate : public unary_function<_Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x) const +16166: { return -__x; } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: template<> +16166: struct plus +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct minus +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct multiplies +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct divides +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct modulus +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct negate +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t) const +16166: noexcept(noexcept(-std::forward<_Tp>(__t))) +16166: -> decltype(-std::forward<_Tp>(__t)) +16166: { return -std::forward<_Tp>(__t); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: # 346 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: template +16166: struct equal_to; +16166: +16166: template +16166: struct not_equal_to; +16166: +16166: template +16166: struct greater; +16166: +16166: template +16166: struct less; +16166: +16166: template +16166: struct greater_equal; +16166: +16166: template +16166: struct less_equal; +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: template +16166: struct equal_to : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x == __y; } +16166: }; +16166: +16166: +16166: template +16166: struct not_equal_to : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x != __y; } +16166: }; +16166: +16166: +16166: template +16166: struct greater : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x > __y; } +16166: }; +16166: +16166: +16166: template +16166: struct less : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x < __y; } +16166: }; +16166: +16166: +16166: template +16166: struct greater_equal : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x >= __y; } +16166: }; +16166: +16166: +16166: template +16166: struct less_equal : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x <= __y; } +16166: }; +16166: +16166: +16166: template +16166: struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +16166: { +16166: constexpr bool +16166: operator()(_Tp* __x, _Tp* __y) const noexcept +16166: { +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __x > __y; +16166: +16166: return (unsigned int)__x > (unsigned int)__y; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +16166: { +16166: constexpr bool +16166: operator()(_Tp* __x, _Tp* __y) const noexcept +16166: { +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __x < __y; +16166: +16166: return (unsigned int)__x < (unsigned int)__y; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +16166: { +16166: constexpr bool +16166: operator()(_Tp* __x, _Tp* __y) const noexcept +16166: { +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __x >= __y; +16166: +16166: return (unsigned int)__x >= (unsigned int)__y; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> +16166: { +16166: constexpr bool +16166: operator()(_Tp* __x, _Tp* __y) const noexcept +16166: { +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __x <= __y; +16166: +16166: return (unsigned int)__x <= (unsigned int)__y; +16166: } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: template<> +16166: struct equal_to +16166: { +16166: template +16166: constexpr auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct not_equal_to +16166: { +16166: template +16166: constexpr auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct greater +16166: { +16166: template +16166: constexpr auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) +16166: { +16166: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +16166: __ptr_cmp<_Tp, _Up>{}); +16166: } +16166: +16166: template +16166: constexpr bool +16166: operator()(_Tp* __t, _Up* __u) const noexcept +16166: { return greater>{}(__t, __u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: +16166: private: +16166: template +16166: static constexpr decltype(auto) +16166: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +16166: { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } +16166: +16166: template +16166: static constexpr bool +16166: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +16166: { +16166: return greater{}( +16166: static_cast(std::forward<_Tp>(__t)), +16166: static_cast(std::forward<_Up>(__u))); +16166: } +16166: +16166: +16166: template +16166: struct __not_overloaded2 : true_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded2<_Tp, _Up, __void_t< +16166: decltype(std::declval<_Tp>().operator>(std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +16166: +16166: +16166: template +16166: struct __not_overloaded<_Tp, _Up, __void_t< +16166: decltype(operator>(std::declval<_Tp>(), std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: template +16166: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +16166: is_convertible<_Tp, const volatile void*>, +16166: is_convertible<_Up, const volatile void*>>; +16166: }; +16166: +16166: +16166: template<> +16166: struct less +16166: { +16166: template +16166: constexpr auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) +16166: { +16166: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +16166: __ptr_cmp<_Tp, _Up>{}); +16166: } +16166: +16166: template +16166: constexpr bool +16166: operator()(_Tp* __t, _Up* __u) const noexcept +16166: { return less>{}(__t, __u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: +16166: private: +16166: template +16166: static constexpr decltype(auto) +16166: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +16166: { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } +16166: +16166: template +16166: static constexpr bool +16166: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +16166: { +16166: return less{}( +16166: static_cast(std::forward<_Tp>(__t)), +16166: static_cast(std::forward<_Up>(__u))); +16166: } +16166: +16166: +16166: template +16166: struct __not_overloaded2 : true_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded2<_Tp, _Up, __void_t< +16166: decltype(std::declval<_Tp>().operator<(std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +16166: +16166: +16166: template +16166: struct __not_overloaded<_Tp, _Up, __void_t< +16166: decltype(operator<(std::declval<_Tp>(), std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: template +16166: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +16166: is_convertible<_Tp, const volatile void*>, +16166: is_convertible<_Up, const volatile void*>>; +16166: }; +16166: +16166: +16166: template<> +16166: struct greater_equal +16166: { +16166: template +16166: constexpr auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) +16166: { +16166: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +16166: __ptr_cmp<_Tp, _Up>{}); +16166: } +16166: +16166: template +16166: constexpr bool +16166: operator()(_Tp* __t, _Up* __u) const noexcept +16166: { return greater_equal>{}(__t, __u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: +16166: private: +16166: template +16166: static constexpr decltype(auto) +16166: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +16166: { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } +16166: +16166: template +16166: static constexpr bool +16166: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +16166: { +16166: return greater_equal{}( +16166: static_cast(std::forward<_Tp>(__t)), +16166: static_cast(std::forward<_Up>(__u))); +16166: } +16166: +16166: +16166: template +16166: struct __not_overloaded2 : true_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded2<_Tp, _Up, __void_t< +16166: decltype(std::declval<_Tp>().operator>=(std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +16166: +16166: +16166: template +16166: struct __not_overloaded<_Tp, _Up, __void_t< +16166: decltype(operator>=(std::declval<_Tp>(), std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: template +16166: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +16166: is_convertible<_Tp, const volatile void*>, +16166: is_convertible<_Up, const volatile void*>>; +16166: }; +16166: +16166: +16166: template<> +16166: struct less_equal +16166: { +16166: template +16166: constexpr auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) +16166: { +16166: return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), +16166: __ptr_cmp<_Tp, _Up>{}); +16166: } +16166: +16166: template +16166: constexpr bool +16166: operator()(_Tp* __t, _Up* __u) const noexcept +16166: { return less_equal>{}(__t, __u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: +16166: private: +16166: template +16166: static constexpr decltype(auto) +16166: _S_cmp(_Tp&& __t, _Up&& __u, false_type) +16166: { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } +16166: +16166: template +16166: static constexpr bool +16166: _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept +16166: { +16166: return less_equal{}( +16166: static_cast(std::forward<_Tp>(__t)), +16166: static_cast(std::forward<_Up>(__u))); +16166: } +16166: +16166: +16166: template +16166: struct __not_overloaded2 : true_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded2<_Tp, _Up, __void_t< +16166: decltype(std::declval<_Tp>().operator<=(std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: +16166: template +16166: struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; +16166: +16166: +16166: template +16166: struct __not_overloaded<_Tp, _Up, __void_t< +16166: decltype(operator<=(std::declval<_Tp>(), std::declval<_Up>()))>> +16166: : false_type { }; +16166: +16166: template +16166: using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, +16166: is_convertible<_Tp, const volatile void*>, +16166: is_convertible<_Up, const volatile void*>>; +16166: }; +16166: # 778 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: template +16166: struct logical_and; +16166: +16166: template +16166: struct logical_or; +16166: +16166: template +16166: struct logical_not; +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: template +16166: struct logical_and : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x && __y; } +16166: }; +16166: +16166: +16166: template +16166: struct logical_or : public binary_function<_Tp, _Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x || __y; } +16166: }; +16166: +16166: +16166: template +16166: struct logical_not : public unary_function<_Tp, bool> +16166: { +16166: constexpr +16166: bool +16166: operator()(const _Tp& __x) const +16166: { return !__x; } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: template<> +16166: struct logical_and +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct logical_or +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: template<> +16166: struct logical_not +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t) const +16166: noexcept(noexcept(!std::forward<_Tp>(__t))) +16166: -> decltype(!std::forward<_Tp>(__t)) +16166: { return !std::forward<_Tp>(__t); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct bit_and; +16166: +16166: template +16166: struct bit_or; +16166: +16166: template +16166: struct bit_xor; +16166: +16166: template +16166: struct bit_not; +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: +16166: template +16166: struct bit_and : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x & __y; } +16166: }; +16166: +16166: template +16166: struct bit_or : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x | __y; } +16166: }; +16166: +16166: template +16166: struct bit_xor : public binary_function<_Tp, _Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x, const _Tp& __y) const +16166: { return __x ^ __y; } +16166: }; +16166: +16166: template +16166: struct bit_not : public unary_function<_Tp, _Tp> +16166: { +16166: constexpr +16166: _Tp +16166: operator()(const _Tp& __x) const +16166: { return ~__x; } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: template <> +16166: struct bit_and +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: template <> +16166: struct bit_or +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: template <> +16166: struct bit_xor +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t, _Up&& __u) const +16166: noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) +16166: -> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) +16166: { return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: template <> +16166: struct bit_not +16166: { +16166: template +16166: constexpr +16166: auto +16166: operator()(_Tp&& __t) const +16166: noexcept(noexcept(~std::forward<_Tp>(__t))) +16166: -> decltype(~std::forward<_Tp>(__t)) +16166: { return ~std::forward<_Tp>(__t); } +16166: +16166: typedef __is_transparent is_transparent; +16166: }; +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: # 1020 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: template +16166: class [[__deprecated__]] unary_negate +16166: : public unary_function +16166: { +16166: protected: +16166: _Predicate _M_pred; +16166: +16166: public: +16166: constexpr +16166: explicit +16166: unary_negate(const _Predicate& __x) : _M_pred(__x) { } +16166: +16166: constexpr +16166: bool +16166: operator()(const typename _Predicate::argument_type& __x) const +16166: { return !_M_pred(__x); } +16166: }; +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::not_fn" "' instead"))) +16166: constexpr +16166: inline unary_negate<_Predicate> +16166: not1(const _Predicate& __pred) +16166: { return unary_negate<_Predicate>(__pred); } +16166: +16166: +16166: template +16166: class [[__deprecated__]] binary_negate +16166: : public binary_function +16166: { +16166: protected: +16166: _Predicate _M_pred; +16166: +16166: public: +16166: constexpr +16166: explicit +16166: binary_negate(const _Predicate& __x) : _M_pred(__x) { } +16166: +16166: constexpr +16166: bool +16166: operator()(const typename _Predicate::first_argument_type& __x, +16166: const typename _Predicate::second_argument_type& __y) const +16166: { return !_M_pred(__x, __y); } +16166: }; +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::not_fn" "' instead"))) +16166: constexpr +16166: inline binary_negate<_Predicate> +16166: not2(const _Predicate& __pred) +16166: { return binary_negate<_Predicate>(__pred); } +16166: # 1101 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: template +16166: class pointer_to_unary_function : public unary_function<_Arg, _Result> +16166: { +16166: protected: +16166: _Result (*_M_ptr)(_Arg); +16166: +16166: public: +16166: pointer_to_unary_function() { } +16166: +16166: explicit +16166: pointer_to_unary_function(_Result (*__x)(_Arg)) +16166: : _M_ptr(__x) { } +16166: +16166: _Result +16166: operator()(_Arg __x) const +16166: { return _M_ptr(__x); } +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) +16166: inline pointer_to_unary_function<_Arg, _Result> +16166: ptr_fun(_Result (*__x)(_Arg)) +16166: { return pointer_to_unary_function<_Arg, _Result>(__x); } +16166: +16166: +16166: template +16166: class pointer_to_binary_function +16166: : public binary_function<_Arg1, _Arg2, _Result> +16166: { +16166: protected: +16166: _Result (*_M_ptr)(_Arg1, _Arg2); +16166: +16166: public: +16166: pointer_to_binary_function() { } +16166: +16166: explicit +16166: pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) +16166: : _M_ptr(__x) { } +16166: +16166: _Result +16166: operator()(_Arg1 __x, _Arg2 __y) const +16166: { return _M_ptr(__x, __y); } +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::function" "' instead"))) +16166: inline pointer_to_binary_function<_Arg1, _Arg2, _Result> +16166: ptr_fun(_Result (*__x)(_Arg1, _Arg2)) +16166: { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } +16166: +16166: +16166: template +16166: struct _Identity +16166: : public unary_function<_Tp, _Tp> +16166: { +16166: _Tp& +16166: operator()(_Tp& __x) const +16166: { return __x; } +16166: +16166: const _Tp& +16166: operator()(const _Tp& __x) const +16166: { return __x; } +16166: }; +16166: +16166: +16166: template struct _Identity : _Identity<_Tp> { }; +16166: +16166: template +16166: struct _Select1st +16166: : public unary_function<_Pair, typename _Pair::first_type> +16166: { +16166: typename _Pair::first_type& +16166: operator()(_Pair& __x) const +16166: { return __x.first; } +16166: +16166: const typename _Pair::first_type& +16166: operator()(const _Pair& __x) const +16166: { return __x.first; } +16166: +16166: +16166: template +16166: typename _Pair2::first_type& +16166: operator()(_Pair2& __x) const +16166: { return __x.first; } +16166: +16166: template +16166: const typename _Pair2::first_type& +16166: operator()(const _Pair2& __x) const +16166: { return __x.first; } +16166: +16166: }; +16166: +16166: template +16166: struct _Select2nd +16166: : public unary_function<_Pair, typename _Pair::second_type> +16166: { +16166: typename _Pair::second_type& +16166: operator()(_Pair& __x) const +16166: { return __x.second; } +16166: +16166: const typename _Pair::second_type& +16166: operator()(const _Pair& __x) const +16166: { return __x.second; } +16166: }; +16166: # 1228 "/usr/include/c++/14/bits/stl_function.h" 3 +16166: template +16166: class mem_fun_t : public unary_function<_Tp*, _Ret> +16166: { +16166: public: +16166: explicit +16166: mem_fun_t(_Ret (_Tp::*__pf)()) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(_Tp* __p) const +16166: { return (__p->*_M_f)(); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)(); +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: class const_mem_fun_t : public unary_function +16166: { +16166: public: +16166: explicit +16166: const_mem_fun_t(_Ret (_Tp::*__pf)() const) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(const _Tp* __p) const +16166: { return (__p->*_M_f)(); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)() const; +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: class mem_fun_ref_t : public unary_function<_Tp, _Ret> +16166: { +16166: public: +16166: explicit +16166: mem_fun_ref_t(_Ret (_Tp::*__pf)()) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(_Tp& __r) const +16166: { return (__r.*_M_f)(); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)(); +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> +16166: { +16166: public: +16166: explicit +16166: const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(const _Tp& __r) const +16166: { return (__r.*_M_f)(); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)() const; +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> +16166: { +16166: public: +16166: explicit +16166: mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(_Tp* __p, _Arg __x) const +16166: { return (__p->*_M_f)(__x); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)(_Arg); +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: class const_mem_fun1_t : public binary_function +16166: { +16166: public: +16166: explicit +16166: const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(const _Tp* __p, _Arg __x) const +16166: { return (__p->*_M_f)(__x); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)(_Arg) const; +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> +16166: { +16166: public: +16166: explicit +16166: mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(_Tp& __r, _Arg __x) const +16166: { return (__r.*_M_f)(__x); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)(_Arg); +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: template +16166: class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> +16166: { +16166: public: +16166: explicit +16166: const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) +16166: : _M_f(__pf) { } +16166: +16166: _Ret +16166: operator()(const _Tp& __r, _Arg __x) const +16166: { return (__r.*_M_f)(__x); } +16166: +16166: private: +16166: _Ret (_Tp::*_M_f)(_Arg) const; +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline mem_fun_t<_Ret, _Tp> +16166: mem_fun(_Ret (_Tp::*__f)()) +16166: { return mem_fun_t<_Ret, _Tp>(__f); } +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline const_mem_fun_t<_Ret, _Tp> +16166: mem_fun(_Ret (_Tp::*__f)() const) +16166: { return const_mem_fun_t<_Ret, _Tp>(__f); } +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline mem_fun_ref_t<_Ret, _Tp> +16166: mem_fun_ref(_Ret (_Tp::*__f)()) +16166: { return mem_fun_ref_t<_Ret, _Tp>(__f); } +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline const_mem_fun_ref_t<_Ret, _Tp> +16166: mem_fun_ref(_Ret (_Tp::*__f)() const) +16166: { return const_mem_fun_ref_t<_Ret, _Tp>(__f); } +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline mem_fun1_t<_Ret, _Tp, _Arg> +16166: mem_fun(_Ret (_Tp::*__f)(_Arg)) +16166: { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline const_mem_fun1_t<_Ret, _Tp, _Arg> +16166: mem_fun(_Ret (_Tp::*__f)(_Arg) const) +16166: { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline mem_fun1_ref_t<_Ret, _Tp, _Arg> +16166: mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) +16166: { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::mem_fn" "' instead"))) +16166: inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> +16166: mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) +16166: { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: template> +16166: struct __has_is_transparent +16166: { }; +16166: +16166: template +16166: struct __has_is_transparent<_Func, _SfinaeType, +16166: __void_t> +16166: { typedef void type; }; +16166: +16166: template +16166: using __has_is_transparent_t +16166: = typename __has_is_transparent<_Func, _SfinaeType>::type; +16166: +16166: +16166: +16166: } +16166: +16166: +16166: # 1 "/usr/include/c++/14/backward/binders.h" 1 3 +16166: # 60 "/usr/include/c++/14/backward/binders.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 107 "/usr/include/c++/14/backward/binders.h" 3 +16166: template +16166: class binder1st +16166: : public unary_function +16166: { +16166: protected: +16166: _Operation op; +16166: typename _Operation::first_argument_type value; +16166: +16166: public: +16166: binder1st(const _Operation& __x, +16166: const typename _Operation::first_argument_type& __y) +16166: : op(__x), value(__y) { } +16166: +16166: typename _Operation::result_type +16166: operator()(const typename _Operation::second_argument_type& __x) const +16166: { return op(value, __x); } +16166: +16166: +16166: +16166: typename _Operation::result_type +16166: operator()(typename _Operation::second_argument_type& __x) const +16166: { return op(value, __x); } +16166: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) +16166: inline binder1st<_Operation> +16166: bind1st(const _Operation& __fn, const _Tp& __x) +16166: { +16166: typedef typename _Operation::first_argument_type _Arg1_type; +16166: return binder1st<_Operation>(__fn, _Arg1_type(__x)); +16166: } +16166: +16166: +16166: template +16166: class binder2nd +16166: : public unary_function +16166: { +16166: protected: +16166: _Operation op; +16166: typename _Operation::second_argument_type value; +16166: +16166: public: +16166: binder2nd(const _Operation& __x, +16166: const typename _Operation::second_argument_type& __y) +16166: : op(__x), value(__y) { } +16166: +16166: typename _Operation::result_type +16166: operator()(const typename _Operation::first_argument_type& __x) const +16166: { return op(__x, value); } +16166: +16166: +16166: +16166: typename _Operation::result_type +16166: operator()(typename _Operation::first_argument_type& __x) const +16166: { return op(__x, value); } +16166: } __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))); +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::bind" "' instead"))) +16166: inline binder2nd<_Operation> +16166: bind2nd(const _Operation& __fn, const _Tp& __x) +16166: { +16166: typedef typename _Operation::second_argument_type _Arg2_type; +16166: return binder2nd<_Operation>(__fn, _Arg2_type(__x)); +16166: } +16166: +16166: +16166: +16166: } +16166: +16166: #pragma GCC diagnostic pop +16166: # 1436 "/usr/include/c++/14/bits/stl_function.h" 2 3 +16166: # 40 "/usr/include/c++/14/bits/refwrap.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 56 "/usr/include/c++/14/bits/refwrap.h" 3 +16166: template +16166: struct _Maybe_unary_or_binary_function { }; +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: template +16166: struct _Maybe_unary_or_binary_function<_Res, _T1> +16166: : std::unary_function<_T1, _Res> { }; +16166: +16166: +16166: template +16166: struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> +16166: : std::binary_function<_T1, _T2, _Res> { }; +16166: +16166: #pragma GCC diagnostic pop +16166: +16166: template +16166: struct _Mem_fn_traits; +16166: +16166: template +16166: struct _Mem_fn_traits_base +16166: { +16166: using __result_type = _Res; +16166: using __maybe_type +16166: = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; +16166: using __arity = integral_constant; +16166: }; +16166: # 107 "/usr/include/c++/14/bits/refwrap.h" 3 +16166: 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; }; +16166: 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; }; +16166: 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; }; +16166: +16166: +16166: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; +16166: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) & noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const & noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile & noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile & noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; +16166: template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) && noexcept> : _Mem_fn_traits_base<_Res, _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const && noexcept> : _Mem_fn_traits_base<_Res, const _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) volatile && noexcept> : _Mem_fn_traits_base<_Res, volatile _Class, _ArgTypes...> { using __vararg = true_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = false_type; }; template struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) const volatile && noexcept> : _Mem_fn_traits_base<_Res, const volatile _Class, _ArgTypes...> { using __vararg = true_type; }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: struct _Maybe_get_result_type +16166: { }; +16166: +16166: template +16166: struct _Maybe_get_result_type<_Functor, +16166: __void_t> +16166: { typedef typename _Functor::result_type result_type; }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Weak_result_type_impl +16166: : _Maybe_get_result_type<_Functor> +16166: { }; +16166: +16166: +16166: template +16166: struct _Weak_result_type_impl<_Res(_ArgTypes...) noexcept (_NE)> +16166: { typedef _Res result_type; }; +16166: +16166: +16166: template +16166: struct _Weak_result_type_impl<_Res(_ArgTypes......) noexcept (_NE)> +16166: { typedef _Res result_type; }; +16166: +16166: +16166: template +16166: struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) noexcept (_NE)> +16166: { typedef _Res result_type; }; +16166: +16166: +16166: template +16166: struct +16166: _Weak_result_type_impl<_Res(*)(_ArgTypes......) noexcept (_NE)> +16166: { typedef _Res result_type; }; +16166: +16166: +16166: template::value> +16166: struct _Weak_result_type_memfun +16166: : _Weak_result_type_impl<_Functor> +16166: { }; +16166: +16166: +16166: template +16166: struct _Weak_result_type_memfun<_MemFunPtr, true> +16166: { +16166: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; +16166: }; +16166: +16166: +16166: template +16166: struct _Weak_result_type_memfun<_Func _Class::*, false> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Weak_result_type +16166: : _Weak_result_type_memfun::type> +16166: { }; +16166: +16166: +16166: +16166: template> +16166: struct _Refwrap_base_arg1 +16166: { }; +16166: +16166: +16166: template +16166: struct _Refwrap_base_arg1<_Tp, +16166: __void_t> +16166: { +16166: typedef typename _Tp::argument_type argument_type; +16166: }; +16166: +16166: +16166: template> +16166: struct _Refwrap_base_arg2 +16166: { }; +16166: +16166: +16166: template +16166: struct _Refwrap_base_arg2<_Tp, +16166: __void_t> +16166: { +16166: typedef typename _Tp::first_argument_type first_argument_type; +16166: typedef typename _Tp::second_argument_type second_argument_type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Reference_wrapper_base +16166: : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> +16166: { }; +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1) noexcept (_NE)> +16166: : unary_function<_T1, _Res> +16166: { }; +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1) const> +16166: : unary_function<_T1, _Res> +16166: { }; +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1) volatile> +16166: : unary_function<_T1, _Res> +16166: { }; +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1) const volatile> +16166: : unary_function<_T1, _Res> +16166: { }; +16166: +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1, _T2) noexcept (_NE)> +16166: : binary_function<_T1, _T2, _Res> +16166: { }; +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1, _T2) const> +16166: : binary_function<_T1, _T2, _Res> +16166: { }; +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> +16166: : binary_function<_T1, _T2, _Res> +16166: { }; +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> +16166: : binary_function<_T1, _T2, _Res> +16166: { }; +16166: +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(*)(_T1) noexcept (_NE)> +16166: : unary_function<_T1, _Res> +16166: { }; +16166: +16166: +16166: template +16166: struct _Reference_wrapper_base<_Res(*)(_T1, _T2) noexcept (_NE)> +16166: : binary_function<_T1, _T2, _Res> +16166: { }; +16166: +16166: template::value> +16166: struct _Reference_wrapper_base_memfun +16166: : _Reference_wrapper_base<_Tp> +16166: { }; +16166: +16166: template +16166: struct _Reference_wrapper_base_memfun<_MemFunPtr, true> +16166: : _Mem_fn_traits<_MemFunPtr>::__maybe_type +16166: { +16166: using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; +16166: }; +16166: #pragma GCC diagnostic pop +16166: # 306 "/usr/include/c++/14/bits/refwrap.h" 3 +16166: template +16166: class reference_wrapper +16166: +16166: +16166: +16166: : public _Reference_wrapper_base_memfun::type> +16166: +16166: { +16166: _Tp* _M_data; +16166: +16166: +16166: static _Tp* _S_fun(_Tp& __r) noexcept { return std::__addressof(__r); } +16166: +16166: static void _S_fun(_Tp&&) = delete; +16166: +16166: template> +16166: using __not_same +16166: = typename enable_if::value>::type; +16166: +16166: public: +16166: typedef _Tp type; +16166: +16166: +16166: +16166: +16166: template, typename +16166: = decltype(reference_wrapper::_S_fun(std::declval<_Up>()))> +16166: +16166: reference_wrapper(_Up&& __uref) +16166: noexcept(noexcept(reference_wrapper::_S_fun(std::declval<_Up>()))) +16166: : _M_data(reference_wrapper::_S_fun(std::forward<_Up>(__uref))) +16166: { } +16166: +16166: reference_wrapper(const reference_wrapper&) = default; +16166: +16166: reference_wrapper& +16166: operator=(const reference_wrapper&) = default; +16166: +16166: +16166: operator _Tp&() const noexcept +16166: { return this->get(); } +16166: +16166: +16166: _Tp& +16166: get() const noexcept +16166: { return *_M_data; } +16166: +16166: template +16166: +16166: typename __invoke_result<_Tp&, _Args...>::type +16166: operator()(_Args&&... __args) const +16166: noexcept(__is_nothrow_invocable<_Tp&, _Args...>::value) +16166: { +16166: +16166: +16166: +16166: +16166: return std::__invoke(get(), std::forward<_Args>(__args)...); +16166: } +16166: # 412 "/usr/include/c++/14/bits/refwrap.h" 3 +16166: }; +16166: +16166: +16166: template +16166: reference_wrapper(_Tp&) -> reference_wrapper<_Tp>; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline reference_wrapper<_Tp> +16166: ref(_Tp& __t) noexcept +16166: { return reference_wrapper<_Tp>(__t); } +16166: +16166: +16166: template +16166: +16166: inline reference_wrapper +16166: cref(const _Tp& __t) noexcept +16166: { return reference_wrapper(__t); } +16166: +16166: template +16166: void ref(const _Tp&&) = delete; +16166: +16166: template +16166: void cref(const _Tp&&) = delete; +16166: +16166: +16166: template +16166: +16166: inline reference_wrapper<_Tp> +16166: ref(reference_wrapper<_Tp> __t) noexcept +16166: { return __t; } +16166: +16166: +16166: template +16166: +16166: inline reference_wrapper +16166: cref(reference_wrapper<_Tp> __t) noexcept +16166: { return { __t.get() }; } +16166: +16166: +16166: +16166: +16166: } +16166: # 68 "/usr/include/c++/14/deque" 2 3 +16166: # 1 "/usr/include/c++/14/bits/range_access.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/range_access.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/range_access.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: begin(_Container& __cont) -> decltype(__cont.begin()) +16166: { return __cont.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: begin(const _Container& __cont) -> decltype(__cont.begin()) +16166: { return __cont.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: end(_Container& __cont) -> decltype(__cont.end()) +16166: { return __cont.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: end(const _Container& __cont) -> decltype(__cont.end()) +16166: { return __cont.end(); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr _Tp* +16166: begin(_Tp (&__arr)[_Nm]) noexcept +16166: { return __arr; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr _Tp* +16166: end(_Tp (&__arr)[_Nm]) noexcept +16166: { return __arr + _Nm; } +16166: +16166: +16166: +16166: template class valarray; +16166: +16166: template _Tp* begin(valarray<_Tp>&) noexcept; +16166: template const _Tp* begin(const valarray<_Tp>&) noexcept; +16166: template _Tp* end(valarray<_Tp>&) noexcept; +16166: template const _Tp* end(const valarray<_Tp>&) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: constexpr auto +16166: cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) +16166: -> decltype(std::begin(__cont)) +16166: { return std::begin(__cont); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: constexpr auto +16166: cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) +16166: -> decltype(std::end(__cont)) +16166: { return std::end(__cont); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: rbegin(_Container& __cont) -> decltype(__cont.rbegin()) +16166: { return __cont.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) +16166: { return __cont.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: rend(_Container& __cont) -> decltype(__cont.rend()) +16166: { return __cont.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: rend(const _Container& __cont) -> decltype(__cont.rend()) +16166: { return __cont.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr reverse_iterator<_Tp*> +16166: rbegin(_Tp (&__arr)[_Nm]) noexcept +16166: { return reverse_iterator<_Tp*>(__arr + _Nm); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr reverse_iterator<_Tp*> +16166: rend(_Tp (&__arr)[_Nm]) noexcept +16166: { return reverse_iterator<_Tp*>(__arr); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr reverse_iterator +16166: rbegin(initializer_list<_Tp> __il) noexcept +16166: { return reverse_iterator(__il.end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline constexpr reverse_iterator +16166: rend(initializer_list<_Tp> __il) noexcept +16166: { return reverse_iterator(__il.begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) +16166: { return std::rbegin(__cont); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__, __gnu__::__always_inline__]] +16166: inline constexpr auto +16166: crend(const _Container& __cont) -> decltype(std::rend(__cont)) +16166: { return std::rend(__cont); } +16166: # 259 "/usr/include/c++/14/bits/range_access.h" 3 +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr auto +16166: size(const _Container& __cont) noexcept(noexcept(__cont.size())) +16166: -> decltype(__cont.size()) +16166: { return __cont.size(); } +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr size_t +16166: size(const _Tp (&)[_Nm]) noexcept +16166: { return _Nm; } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr auto +16166: empty(const _Container& __cont) noexcept(noexcept(__cont.empty())) +16166: -> decltype(__cont.empty()) +16166: { return __cont.empty(); } +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr bool +16166: empty(const _Tp (&)[_Nm]) noexcept +16166: { return false; } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr bool +16166: empty(initializer_list<_Tp> __il) noexcept +16166: { return __il.size() == 0;} +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr auto +16166: data(_Container& __cont) noexcept(noexcept(__cont.data())) +16166: -> decltype(__cont.data()) +16166: { return __cont.data(); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr auto +16166: data(const _Container& __cont) noexcept(noexcept(__cont.data())) +16166: -> decltype(__cont.data()) +16166: { return __cont.data(); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr _Tp* +16166: data(_Tp (&__array)[_Nm]) noexcept +16166: { return __array; } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard, __gnu__::__always_inline__]] +16166: constexpr const _Tp* +16166: data(initializer_list<_Tp> __il) noexcept +16166: { return __il.begin(); } +16166: # 366 "/usr/include/c++/14/bits/range_access.h" 3 +16166: +16166: } +16166: # 69 "/usr/include/c++/14/deque" 2 3 +16166: # 1 "/usr/include/c++/14/bits/deque.tcc" 1 3 +16166: # 61 "/usr/include/c++/14/bits/deque.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_default_initialize() +16166: { +16166: _Map_pointer __cur; +16166: try +16166: { +16166: for (__cur = this->_M_impl._M_start._M_node; +16166: __cur < this->_M_impl._M_finish._M_node; +16166: ++__cur) +16166: std::__uninitialized_default_a(*__cur, *__cur + _S_buffer_size(), +16166: _M_get_Tp_allocator()); +16166: std::__uninitialized_default_a(this->_M_impl._M_finish._M_first, +16166: this->_M_impl._M_finish._M_cur, +16166: _M_get_Tp_allocator()); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), +16166: _M_get_Tp_allocator()); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: deque<_Tp, _Alloc>& +16166: deque<_Tp, _Alloc>:: +16166: operator=(const deque& __x) +16166: { +16166: if (std::__addressof(__x) != this) +16166: { +16166: +16166: if (_Alloc_traits::_S_propagate_on_copy_assign()) +16166: { +16166: if (!_Alloc_traits::_S_always_equal() +16166: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) +16166: { +16166: +16166: +16166: _M_replace_map(__x, __x.get_allocator()); +16166: std::__alloc_on_copy(_M_get_Tp_allocator(), +16166: __x._M_get_Tp_allocator()); +16166: return *this; +16166: } +16166: std::__alloc_on_copy(_M_get_Tp_allocator(), +16166: __x._M_get_Tp_allocator()); +16166: } +16166: +16166: const size_type __len = size(); +16166: if (__len >= __x.size()) +16166: _M_erase_at_end(std::copy(__x.begin(), __x.end(), +16166: this->_M_impl._M_start)); +16166: else +16166: { +16166: const_iterator __mid = __x.begin() + difference_type(__len); +16166: std::copy(__x.begin(), __mid, this->_M_impl._M_start); +16166: _M_range_insert_aux(this->_M_impl._M_finish, __mid, __x.end(), +16166: std::random_access_iterator_tag()); +16166: } +16166: } +16166: return *this; +16166: } +16166: +16166: +16166: template +16166: template +16166: +16166: typename deque<_Tp, _Alloc>::reference +16166: +16166: +16166: +16166: deque<_Tp, _Alloc>:: +16166: emplace_front(_Args&&... __args) +16166: { +16166: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) +16166: { +16166: _Alloc_traits::construct(this->_M_impl, +16166: this->_M_impl._M_start._M_cur - 1, +16166: std::forward<_Args>(__args)...); +16166: --this->_M_impl._M_start._M_cur; +16166: } +16166: else +16166: _M_push_front_aux(std::forward<_Args>(__args)...); +16166: +16166: return front(); +16166: +16166: } +16166: +16166: template +16166: template +16166: +16166: typename deque<_Tp, _Alloc>::reference +16166: +16166: +16166: +16166: deque<_Tp, _Alloc>:: +16166: emplace_back(_Args&&... __args) +16166: { +16166: if (this->_M_impl._M_finish._M_cur +16166: != this->_M_impl._M_finish._M_last - 1) +16166: { +16166: _Alloc_traits::construct(this->_M_impl, +16166: this->_M_impl._M_finish._M_cur, +16166: std::forward<_Args>(__args)...); +16166: ++this->_M_impl._M_finish._M_cur; +16166: } +16166: else +16166: _M_push_back_aux(std::forward<_Args>(__args)...); +16166: +16166: return back(); +16166: +16166: } +16166: +16166: +16166: +16166: template +16166: template +16166: typename deque<_Tp, _Alloc>::iterator +16166: deque<_Tp, _Alloc>:: +16166: emplace(const_iterator __position, _Args&&... __args) +16166: { +16166: if (__position._M_cur == this->_M_impl._M_start._M_cur) +16166: { +16166: emplace_front(std::forward<_Args>(__args)...); +16166: return this->_M_impl._M_start; +16166: } +16166: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) +16166: { +16166: emplace_back(std::forward<_Args>(__args)...); +16166: iterator __tmp = this->_M_impl._M_finish; +16166: --__tmp; +16166: return __tmp; +16166: } +16166: else +16166: return _M_emplace_aux(__position._M_const_cast(), +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: template +16166: typename deque<_Tp, _Alloc>::iterator +16166: deque<_Tp, _Alloc>:: +16166: +16166: insert(const_iterator __position, const value_type& __x) +16166: +16166: +16166: +16166: { +16166: if (__position._M_cur == this->_M_impl._M_start._M_cur) +16166: { +16166: push_front(__x); +16166: return this->_M_impl._M_start; +16166: } +16166: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) +16166: { +16166: push_back(__x); +16166: iterator __tmp = this->_M_impl._M_finish; +16166: --__tmp; +16166: return __tmp; +16166: } +16166: else +16166: return _M_insert_aux(__position._M_const_cast(), __x); +16166: } +16166: +16166: template +16166: typename deque<_Tp, _Alloc>::iterator +16166: deque<_Tp, _Alloc>:: +16166: _M_erase(iterator __position) +16166: { +16166: iterator __next = __position; +16166: ++__next; +16166: const difference_type __index = __position - begin(); +16166: if (static_cast(__index) < (size() >> 1)) +16166: { +16166: if (__position != begin()) +16166: std::move_backward(begin(), __position, __next); +16166: pop_front(); +16166: } +16166: else +16166: { +16166: if (__next != end()) +16166: std::move(__next, end(), __position); +16166: pop_back(); +16166: } +16166: return begin() + __index; +16166: } +16166: +16166: template +16166: typename deque<_Tp, _Alloc>::iterator +16166: deque<_Tp, _Alloc>:: +16166: _M_erase(iterator __first, iterator __last) +16166: { +16166: if (__first == __last) +16166: return __first; +16166: else if (__first == begin() && __last == end()) +16166: { +16166: clear(); +16166: return end(); +16166: } +16166: else +16166: { +16166: const difference_type __n = __last - __first; +16166: const difference_type __elems_before = __first - begin(); +16166: if (static_cast(__elems_before) <= (size() - __n) / 2) +16166: { +16166: if (__first != begin()) +16166: std::move_backward(begin(), __first, __last); +16166: _M_erase_at_begin(begin() + __n); +16166: } +16166: else +16166: { +16166: if (__last != end()) +16166: std::move(__last, end(), __first); +16166: _M_erase_at_end(end() - __n); +16166: } +16166: return begin() + __elems_before; +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_assign_aux(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag) +16166: { +16166: iterator __cur = begin(); +16166: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) +16166: *__cur = *__first; +16166: if (__first == __last) +16166: _M_erase_at_end(__cur); +16166: else +16166: _M_range_insert_aux(end(), __first, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) +16166: { +16166: if (__pos._M_cur == this->_M_impl._M_start._M_cur) +16166: { +16166: iterator __new_start = _M_reserve_elements_at_front(__n); +16166: try +16166: { +16166: std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start, +16166: __x, _M_get_Tp_allocator()); +16166: this->_M_impl._M_start = __new_start; +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(__new_start._M_node, +16166: this->_M_impl._M_start._M_node); +16166: throw; +16166: } +16166: } +16166: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) +16166: { +16166: iterator __new_finish = _M_reserve_elements_at_back(__n); +16166: try +16166: { +16166: std::__uninitialized_fill_a(this->_M_impl._M_finish, +16166: __new_finish, __x, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __new_finish; +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +16166: __new_finish._M_node + 1); +16166: throw; +16166: } +16166: } +16166: else +16166: _M_insert_aux(__pos, __n, __x); +16166: } +16166: +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_default_append(size_type __n) +16166: { +16166: if (__n) +16166: { +16166: iterator __new_finish = _M_reserve_elements_at_back(__n); +16166: try +16166: { +16166: std::__uninitialized_default_a(this->_M_impl._M_finish, +16166: __new_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __new_finish; +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +16166: __new_finish._M_node + 1); +16166: throw; +16166: } +16166: } +16166: } +16166: +16166: template +16166: bool +16166: deque<_Tp, _Alloc>:: +16166: _M_shrink_to_fit() +16166: { +16166: const difference_type __front_capacity +16166: = (this->_M_impl._M_start._M_cur - this->_M_impl._M_start._M_first); +16166: if (__front_capacity == 0) +16166: return false; +16166: +16166: const difference_type __back_capacity +16166: = (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur); +16166: if (__front_capacity + __back_capacity < _S_buffer_size()) +16166: return false; +16166: +16166: return std::__shrink_to_fit_aux::_S_do_it(*this); +16166: } +16166: +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_fill_initialize(const value_type& __value) +16166: { +16166: _Map_pointer __cur; +16166: try +16166: { +16166: for (__cur = this->_M_impl._M_start._M_node; +16166: __cur < this->_M_impl._M_finish._M_node; +16166: ++__cur) +16166: std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(), +16166: __value, _M_get_Tp_allocator()); +16166: std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first, +16166: this->_M_impl._M_finish._M_cur, +16166: __value, _M_get_Tp_allocator()); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), +16166: _M_get_Tp_allocator()); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_range_initialize(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag) +16166: { +16166: this->_M_initialize_map(0); +16166: try +16166: { +16166: for (; __first != __last; ++__first) +16166: +16166: emplace_back(*__first); +16166: +16166: +16166: +16166: } +16166: catch(...) +16166: { +16166: clear(); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag) +16166: { +16166: const size_type __n = std::distance(__first, __last); +16166: this->_M_initialize_map(_S_check_init_len(__n, _M_get_Tp_allocator())); +16166: +16166: _Map_pointer __cur_node; +16166: try +16166: { +16166: for (__cur_node = this->_M_impl._M_start._M_node; +16166: __cur_node < this->_M_impl._M_finish._M_node; +16166: ++__cur_node) +16166: { +16166: if (__n < _S_buffer_size()) +16166: __builtin_unreachable(); +16166: +16166: _ForwardIterator __mid = __first; +16166: std::advance(__mid, _S_buffer_size()); +16166: std::__uninitialized_copy_a(__first, __mid, *__cur_node, +16166: _M_get_Tp_allocator()); +16166: __first = __mid; +16166: } +16166: std::__uninitialized_copy_a(__first, __last, +16166: this->_M_impl._M_finish._M_first, +16166: _M_get_Tp_allocator()); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(this->_M_impl._M_start, +16166: iterator(*__cur_node, __cur_node), +16166: _M_get_Tp_allocator()); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_push_back_aux(_Args&&... __args) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: if (size() == max_size()) +16166: __throw_length_error( +16166: ("cannot create std::deque larger than max_size()")); +16166: +16166: _M_reserve_map_at_back(); +16166: *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); +16166: try +16166: { +16166: +16166: _Alloc_traits::construct(this->_M_impl, +16166: this->_M_impl._M_finish._M_cur, +16166: std::forward<_Args>(__args)...); +16166: +16166: +16166: +16166: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node +16166: + 1); +16166: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first; +16166: } +16166: catch(...) +16166: { +16166: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1)); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_push_front_aux(_Args&&... __args) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: if (size() == max_size()) +16166: __throw_length_error( +16166: ("cannot create std::deque larger than max_size()")); +16166: +16166: _M_reserve_map_at_front(); +16166: *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node(); +16166: try +16166: { +16166: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node +16166: - 1); +16166: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1; +16166: +16166: _Alloc_traits::construct(this->_M_impl, +16166: this->_M_impl._M_start._M_cur, +16166: std::forward<_Args>(__args)...); +16166: +16166: +16166: +16166: } +16166: catch(...) +16166: { +16166: ++this->_M_impl._M_start; +16166: _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1)); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: void deque<_Tp, _Alloc>:: +16166: _M_pop_back_aux() +16166: { +16166: _M_deallocate_node(this->_M_impl._M_finish._M_first); +16166: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1); +16166: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1; +16166: _Alloc_traits::destroy(_M_get_Tp_allocator(), +16166: this->_M_impl._M_finish._M_cur); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: void deque<_Tp, _Alloc>:: +16166: _M_pop_front_aux() +16166: { +16166: _Alloc_traits::destroy(_M_get_Tp_allocator(), +16166: this->_M_impl._M_start._M_cur); +16166: _M_deallocate_node(this->_M_impl._M_start._M_first); +16166: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1); +16166: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first; +16166: } +16166: +16166: template +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_range_insert_aux(iterator __pos, +16166: _InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag) +16166: { std::copy(__first, __last, std::inserter(*this, __pos)); } +16166: +16166: template +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_range_insert_aux(iterator __pos, +16166: _ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag) +16166: { +16166: const size_type __n = std::distance(__first, __last); +16166: if (__builtin_expect(__n == 0, 0)) +16166: return; +16166: +16166: if (__pos._M_cur == this->_M_impl._M_start._M_cur) +16166: { +16166: iterator __new_start = _M_reserve_elements_at_front(__n); +16166: try +16166: { +16166: std::__uninitialized_copy_a(__first, __last, __new_start, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_start = __new_start; +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(__new_start._M_node, +16166: this->_M_impl._M_start._M_node); +16166: throw; +16166: } +16166: } +16166: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) +16166: { +16166: iterator __new_finish = _M_reserve_elements_at_back(__n); +16166: try +16166: { +16166: std::__uninitialized_copy_a(__first, __last, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __new_finish; +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +16166: __new_finish._M_node + 1); +16166: throw; +16166: } +16166: } +16166: else +16166: _M_insert_aux(__pos, __first, __last, __n); +16166: } +16166: +16166: template +16166: +16166: template +16166: typename deque<_Tp, _Alloc>::iterator +16166: deque<_Tp, _Alloc>:: +16166: _M_emplace_aux(iterator __pos, _Args&&... __args) +16166: { +16166: value_type __x_copy(std::forward<_Args>(__args)...); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: difference_type __index = __pos - this->_M_impl._M_start; +16166: if (static_cast(__index) < size() / 2) +16166: { +16166: push_front(std::move(front())); +16166: iterator __front1 = this->_M_impl._M_start; +16166: ++__front1; +16166: iterator __front2 = __front1; +16166: ++__front2; +16166: __pos = this->_M_impl._M_start + __index; +16166: iterator __pos1 = __pos; +16166: ++__pos1; +16166: std::move(__front2, __pos1, __front1); +16166: } +16166: else +16166: { +16166: push_back(std::move(back())); +16166: iterator __back1 = this->_M_impl._M_finish; +16166: --__back1; +16166: iterator __back2 = __back1; +16166: --__back2; +16166: __pos = this->_M_impl._M_start + __index; +16166: std::move_backward(__pos, __back2, __back1); +16166: } +16166: *__pos = std::move(__x_copy); +16166: return __pos; +16166: } +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x) +16166: { +16166: const difference_type __elems_before = __pos - this->_M_impl._M_start; +16166: const size_type __length = this->size(); +16166: value_type __x_copy = __x; +16166: if (__elems_before < difference_type(__length / 2)) +16166: { +16166: iterator __new_start = _M_reserve_elements_at_front(__n); +16166: iterator __old_start = this->_M_impl._M_start; +16166: __pos = this->_M_impl._M_start + __elems_before; +16166: try +16166: { +16166: if (__elems_before >= difference_type(__n)) +16166: { +16166: iterator __start_n = (this->_M_impl._M_start +16166: + difference_type(__n)); +16166: std::__uninitialized_move_a(this->_M_impl._M_start, +16166: __start_n, __new_start, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_start = __new_start; +16166: std::move(__start_n, __pos, __old_start); +16166: std::fill(__pos - difference_type(__n), __pos, __x_copy); +16166: } +16166: else +16166: { +16166: std::__uninitialized_move_fill(this->_M_impl._M_start, +16166: __pos, __new_start, +16166: this->_M_impl._M_start, +16166: __x_copy, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_start = __new_start; +16166: std::fill(__old_start, __pos, __x_copy); +16166: } +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(__new_start._M_node, +16166: this->_M_impl._M_start._M_node); +16166: throw; +16166: } +16166: } +16166: else +16166: { +16166: iterator __new_finish = _M_reserve_elements_at_back(__n); +16166: iterator __old_finish = this->_M_impl._M_finish; +16166: const difference_type __elems_after = +16166: difference_type(__length) - __elems_before; +16166: __pos = this->_M_impl._M_finish - __elems_after; +16166: try +16166: { +16166: if (__elems_after > difference_type(__n)) +16166: { +16166: iterator __finish_n = (this->_M_impl._M_finish +16166: - difference_type(__n)); +16166: std::__uninitialized_move_a(__finish_n, +16166: this->_M_impl._M_finish, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __new_finish; +16166: std::move_backward(__pos, __finish_n, __old_finish); +16166: std::fill(__pos, __pos + difference_type(__n), __x_copy); +16166: } +16166: else +16166: { +16166: std::__uninitialized_fill_move(this->_M_impl._M_finish, +16166: __pos + difference_type(__n), +16166: __x_copy, __pos, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __new_finish; +16166: std::fill(__pos, __old_finish, __x_copy); +16166: } +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +16166: __new_finish._M_node + 1); +16166: throw; +16166: } +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_insert_aux(iterator __pos, +16166: _ForwardIterator __first, _ForwardIterator __last, +16166: size_type __n) +16166: { +16166: const difference_type __elemsbefore = __pos - this->_M_impl._M_start; +16166: const size_type __length = size(); +16166: if (static_cast(__elemsbefore) < __length / 2) +16166: { +16166: iterator __new_start = _M_reserve_elements_at_front(__n); +16166: iterator __old_start = this->_M_impl._M_start; +16166: __pos = this->_M_impl._M_start + __elemsbefore; +16166: try +16166: { +16166: if (__elemsbefore >= difference_type(__n)) +16166: { +16166: iterator __start_n = (this->_M_impl._M_start +16166: + difference_type(__n)); +16166: std::__uninitialized_move_a(this->_M_impl._M_start, +16166: __start_n, __new_start, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_start = __new_start; +16166: std::move(__start_n, __pos, __old_start); +16166: std::copy(__first, __last, __pos - difference_type(__n)); +16166: } +16166: else +16166: { +16166: _ForwardIterator __mid = __first; +16166: std::advance(__mid, difference_type(__n) - __elemsbefore); +16166: std::__uninitialized_move_copy(this->_M_impl._M_start, +16166: __pos, __first, __mid, +16166: __new_start, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_start = __new_start; +16166: std::copy(__mid, __last, __old_start); +16166: } +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(__new_start._M_node, +16166: this->_M_impl._M_start._M_node); +16166: throw; +16166: } +16166: } +16166: else +16166: { +16166: iterator __new_finish = _M_reserve_elements_at_back(__n); +16166: iterator __old_finish = this->_M_impl._M_finish; +16166: const difference_type __elemsafter = +16166: difference_type(__length) - __elemsbefore; +16166: __pos = this->_M_impl._M_finish - __elemsafter; +16166: try +16166: { +16166: if (__elemsafter > difference_type(__n)) +16166: { +16166: iterator __finish_n = (this->_M_impl._M_finish +16166: - difference_type(__n)); +16166: std::__uninitialized_move_a(__finish_n, +16166: this->_M_impl._M_finish, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __new_finish; +16166: std::move_backward(__pos, __finish_n, __old_finish); +16166: std::copy(__first, __last, __pos); +16166: } +16166: else +16166: { +16166: _ForwardIterator __mid = __first; +16166: std::advance(__mid, __elemsafter); +16166: std::__uninitialized_copy_move(__mid, __last, __pos, +16166: this->_M_impl._M_finish, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __new_finish; +16166: std::copy(__first, __mid, __pos); +16166: } +16166: } +16166: catch(...) +16166: { +16166: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, +16166: __new_finish._M_node + 1); +16166: throw; +16166: } +16166: } +16166: } +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_destroy_data_aux(iterator __first, iterator __last) +16166: { +16166: for (_Map_pointer __node = __first._M_node + 1; +16166: __node < __last._M_node; ++__node) +16166: std::_Destroy(*__node, *__node + _S_buffer_size(), +16166: _M_get_Tp_allocator()); +16166: +16166: if (__first._M_node != __last._M_node) +16166: { +16166: std::_Destroy(__first._M_cur, __first._M_last, +16166: _M_get_Tp_allocator()); +16166: std::_Destroy(__last._M_first, __last._M_cur, +16166: _M_get_Tp_allocator()); +16166: } +16166: else +16166: std::_Destroy(__first._M_cur, __last._M_cur, +16166: _M_get_Tp_allocator()); +16166: } +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_new_elements_at_front(size_type __new_elems) +16166: { +16166: if (this->max_size() - this->size() < __new_elems) +16166: __throw_length_error(("deque::_M_new_elements_at_front")); +16166: +16166: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) +16166: / _S_buffer_size()); +16166: _M_reserve_map_at_front(__new_nodes); +16166: size_type __i; +16166: try +16166: { +16166: for (__i = 1; __i <= __new_nodes; ++__i) +16166: *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node(); +16166: } +16166: catch(...) +16166: { +16166: for (size_type __j = 1; __j < __i; ++__j) +16166: _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j)); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_new_elements_at_back(size_type __new_elems) +16166: { +16166: if (this->max_size() - this->size() < __new_elems) +16166: __throw_length_error(("deque::_M_new_elements_at_back")); +16166: +16166: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) +16166: / _S_buffer_size()); +16166: _M_reserve_map_at_back(__new_nodes); +16166: size_type __i; +16166: try +16166: { +16166: for (__i = 1; __i <= __new_nodes; ++__i) +16166: *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node(); +16166: } +16166: catch(...) +16166: { +16166: for (size_type __j = 1; __j < __i; ++__j) +16166: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j)); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: void +16166: deque<_Tp, _Alloc>:: +16166: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front) +16166: { +16166: const size_type __old_num_nodes +16166: = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1; +16166: const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; +16166: +16166: _Map_pointer __new_nstart; +16166: if (this->_M_impl._M_map_size > 2 * __new_num_nodes) +16166: { +16166: __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size +16166: - __new_num_nodes) / 2 +16166: + (__add_at_front ? __nodes_to_add : 0); +16166: if (__new_nstart < this->_M_impl._M_start._M_node) +16166: std::copy(this->_M_impl._M_start._M_node, +16166: this->_M_impl._M_finish._M_node + 1, +16166: __new_nstart); +16166: else +16166: std::copy_backward(this->_M_impl._M_start._M_node, +16166: this->_M_impl._M_finish._M_node + 1, +16166: __new_nstart + __old_num_nodes); +16166: } +16166: else +16166: { +16166: size_type __new_map_size = this->_M_impl._M_map_size +16166: + std::max(this->_M_impl._M_map_size, +16166: __nodes_to_add) + 2; +16166: +16166: _Map_pointer __new_map = this->_M_allocate_map(__new_map_size); +16166: __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 +16166: + (__add_at_front ? __nodes_to_add : 0); +16166: std::copy(this->_M_impl._M_start._M_node, +16166: this->_M_impl._M_finish._M_node + 1, +16166: __new_nstart); +16166: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); +16166: +16166: this->_M_impl._M_map = __new_map; +16166: this->_M_impl._M_map_size = __new_map_size; +16166: } +16166: +16166: this->_M_impl._M_start._M_set_node(__new_nstart); +16166: this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: __fill_a1(const std::_Deque_iterator<_Tp, _Tp&, _Tp*>& __first, +16166: const std::_Deque_iterator<_Tp, _Tp&, _Tp*>& __last, +16166: const _VTp& __value) +16166: { +16166: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter; +16166: if (__first._M_node != __last._M_node) +16166: { +16166: std::__fill_a1(__first._M_cur, __first._M_last, __value); +16166: +16166: for (typename _Iter::_Map_pointer __node = __first._M_node + 1; +16166: __node < __last._M_node; ++__node) +16166: std::__fill_a1(*__node, *__node + _Iter::_S_buffer_size(), __value); +16166: +16166: std::__fill_a1(__last._M_first, __last._M_cur, __value); +16166: } +16166: else +16166: std::__fill_a1(__first._M_cur, __last._M_cur, __value); +16166: } +16166: +16166: template +16166: _OI +16166: __copy_move_dit(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +16166: _OI __result) +16166: { +16166: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +16166: if (__first._M_node != __last._M_node) +16166: { +16166: __result +16166: = std::__copy_move_a1<_IsMove>(__first._M_cur, __first._M_last, +16166: __result); +16166: +16166: for (typename _Iter::_Map_pointer __node = __first._M_node + 1; +16166: __node != __last._M_node; ++__node) +16166: __result +16166: = std::__copy_move_a1<_IsMove>(*__node, +16166: *__node + _Iter::_S_buffer_size(), +16166: __result); +16166: +16166: return std::__copy_move_a1<_IsMove>(__last._M_first, __last._M_cur, +16166: __result); +16166: } +16166: +16166: return std::__copy_move_a1<_IsMove>(__first._M_cur, __last._M_cur, +16166: __result); +16166: } +16166: +16166: template +16166: _OI +16166: __copy_move_a1(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +16166: _OI __result) +16166: { return __copy_move_dit<_IsMove>(__first, __last, __result); } +16166: +16166: template +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +16166: __copy_move_a1(std::_Deque_iterator<_ITp, _IRef, _IPtr> __first, +16166: std::_Deque_iterator<_ITp, _IRef, _IPtr> __last, +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*> __result) +16166: { return __copy_move_dit<_IsMove>(__first, __last, __result); } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, +16166: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +16166: __copy_move_a1(_II __first, _II __last, +16166: std::_Deque_iterator<_Tp, _Tp&, _Tp*> __result) +16166: { +16166: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter; +16166: typedef typename _Iter::difference_type difference_type; +16166: +16166: difference_type __len = __last - __first; +16166: while (__len > 0) +16166: { +16166: const difference_type __clen +16166: = std::min(__len, __result._M_last - __result._M_cur); +16166: std::__copy_move_a1<_IsMove>(__first, __first + __clen, +16166: __result._M_cur); +16166: +16166: __first += __clen; +16166: __result += __clen; +16166: __len -= __clen; +16166: } +16166: +16166: return __result; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_char<_CharT>::__value, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +16166: __copy_move_a2( +16166: istreambuf_iterator<_CharT, char_traits<_CharT> > __first, +16166: istreambuf_iterator<_CharT, char_traits<_CharT> > __last, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*> __result) +16166: { +16166: if (__first == __last) +16166: return __result; +16166: +16166: for (;;) +16166: { +16166: const std::ptrdiff_t __len = __result._M_last - __result._M_cur; +16166: const std::ptrdiff_t __nb +16166: = std::__copy_n_a(__first, __len, __result._M_cur, false) +16166: - __result._M_cur; +16166: __result += __nb; +16166: +16166: if (__nb != __len) +16166: break; +16166: } +16166: +16166: return __result; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_char<_CharT>::__value, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type +16166: __copy_n_a( +16166: istreambuf_iterator<_CharT, char_traits<_CharT> > __it, _Size __size, +16166: std::_Deque_iterator<_CharT, _CharT&, _CharT*> __result, +16166: bool __strict) +16166: { +16166: if (__size == 0) +16166: return __result; +16166: +16166: do +16166: { +16166: const _Size __len +16166: = std::min<_Size>(__result._M_last - __result._M_cur, __size); +16166: std::__copy_n_a(__it, __len, __result._M_cur, __strict); +16166: __result += __len; +16166: __size -= __len; +16166: } +16166: while (__size != 0); +16166: return __result; +16166: } +16166: +16166: template +16166: _OI +16166: __copy_move_backward_dit( +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +16166: _OI __result) +16166: { +16166: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +16166: if (__first._M_node != __last._M_node) +16166: { +16166: __result = std::__copy_move_backward_a1<_IsMove>( +16166: __last._M_first, __last._M_cur, __result); +16166: +16166: for (typename _Iter::_Map_pointer __node = __last._M_node - 1; +16166: __node != __first._M_node; --__node) +16166: __result = std::__copy_move_backward_a1<_IsMove>( +16166: *__node, *__node + _Iter::_S_buffer_size(), __result); +16166: +16166: return std::__copy_move_backward_a1<_IsMove>( +16166: __first._M_cur, __first._M_last, __result); +16166: } +16166: +16166: return std::__copy_move_backward_a1<_IsMove>( +16166: __first._M_cur, __last._M_cur, __result); +16166: } +16166: +16166: template +16166: _OI +16166: __copy_move_backward_a1( +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last, +16166: _OI __result) +16166: { return __copy_move_backward_dit<_IsMove>(__first, __last, __result); } +16166: +16166: template +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*> +16166: __copy_move_backward_a1( +16166: std::_Deque_iterator<_ITp, _IRef, _IPtr> __first, +16166: std::_Deque_iterator<_ITp, _IRef, _IPtr> __last, +16166: std::_Deque_iterator<_OTp, _OTp&, _OTp*> __result) +16166: { return __copy_move_backward_dit<_IsMove>(__first, __last, __result); } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, +16166: std::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type +16166: __copy_move_backward_a1(_II __first, _II __last, +16166: std::_Deque_iterator<_Tp, _Tp&, _Tp*> __result) +16166: { +16166: typedef std::_Deque_iterator<_Tp, _Tp&, _Tp*> _Iter; +16166: typedef typename _Iter::difference_type difference_type; +16166: +16166: difference_type __len = __last - __first; +16166: while (__len > 0) +16166: { +16166: difference_type __rlen = __result._M_cur - __result._M_first; +16166: _Tp* __rend = __result._M_cur; +16166: if (!__rlen) +16166: { +16166: __rlen = _Iter::_S_buffer_size(); +16166: __rend = *(__result._M_node - 1) + __rlen; +16166: } +16166: +16166: const difference_type __clen = std::min(__len, __rlen); +16166: std::__copy_move_backward_a1<_IsMove>(__last - __clen, __last, __rend); +16166: +16166: __last -= __clen; +16166: __result -= __clen; +16166: __len -= __clen; +16166: } +16166: +16166: return __result; +16166: } +16166: +16166: template +16166: bool +16166: __equal_dit( +16166: const std::_Deque_iterator<_Tp, _Ref, _Ptr>& __first1, +16166: const std::_Deque_iterator<_Tp, _Ref, _Ptr>& __last1, +16166: _II __first2) +16166: { +16166: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +16166: if (__first1._M_node != __last1._M_node) +16166: { +16166: if (!std::__equal_aux1(__first1._M_cur, __first1._M_last, __first2)) +16166: return false; +16166: +16166: __first2 += __first1._M_last - __first1._M_cur; +16166: for (typename _Iter::_Map_pointer __node = __first1._M_node + 1; +16166: __node != __last1._M_node; +16166: __first2 += _Iter::_S_buffer_size(), ++__node) +16166: if (!std::__equal_aux1(*__node, *__node + _Iter::_S_buffer_size(), +16166: __first2)) +16166: return false; +16166: +16166: return std::__equal_aux1(__last1._M_first, __last1._M_cur, __first2); +16166: } +16166: +16166: return std::__equal_aux1(__first1._M_cur, __last1._M_cur, __first2); +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, bool>::__type +16166: __equal_aux1(std::_Deque_iterator<_Tp, _Ref, _Ptr> __first1, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __last1, +16166: _II __first2) +16166: { return std::__equal_dit(__first1, __last1, __first2); } +16166: +16166: template +16166: bool +16166: __equal_aux1(std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1, +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2) +16166: { return std::__equal_dit(__first1, __last1, __first2); } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if< +16166: __is_random_access_iter<_II>::__value, bool>::__type +16166: __equal_aux1(_II __first1, _II __last1, +16166: std::_Deque_iterator<_Tp, _Ref, _Ptr> __first2) +16166: { +16166: typedef std::_Deque_iterator<_Tp, _Ref, _Ptr> _Iter; +16166: typedef typename _Iter::difference_type difference_type; +16166: +16166: difference_type __len = __last1 - __first1; +16166: while (__len > 0) +16166: { +16166: const difference_type __clen +16166: = std::min(__len, __first2._M_last - __first2._M_cur); +16166: if (!std::__equal_aux1(__first1, __first1 + __clen, __first2._M_cur)) +16166: return false; +16166: +16166: __first1 += __clen; +16166: __len -= __clen; +16166: __first2 += __clen; +16166: } +16166: +16166: return true; +16166: } +16166: +16166: template +16166: int +16166: __lex_cmp_dit( +16166: std::_Deque_iterator<_Tp1, _Ref, _Ptr> __first1, +16166: std::_Deque_iterator<_Tp1, _Ref, _Ptr> __last1, +16166: const _Tp2* __first2, const _Tp2* __last2) +16166: { +16166: const bool __simple = +16166: (__is_memcmp_ordered_with<_Tp1, _Tp2>::__value +16166: && __is_pointer<_Ptr>::__value +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ); +16166: typedef std::__lexicographical_compare<__simple> _Lc; +16166: +16166: while (__first1._M_node != __last1._M_node) +16166: { +16166: const ptrdiff_t __len1 = __first1._M_last - __first1._M_cur; +16166: const ptrdiff_t __len2 = __last2 - __first2; +16166: const ptrdiff_t __len = std::min(__len1, __len2); +16166: +16166: if (int __ret = _Lc::__3way(__first1._M_cur, __first1._M_last, +16166: __first2, __first2 + __len)) +16166: return __ret; +16166: +16166: __first1 += __len; +16166: __first2 += __len; +16166: } +16166: return _Lc::__3way(__first1._M_cur, __last1._M_cur, +16166: __first2, __last2); +16166: } +16166: +16166: template +16166: inline bool +16166: __lexicographical_compare_aux1( +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1, +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1, +16166: _Tp2* __first2, _Tp2* __last2) +16166: { return std::__lex_cmp_dit(__first1, __last1, __first2, __last2) < 0; } +16166: +16166: template +16166: inline bool +16166: __lexicographical_compare_aux1(_Tp1* __first1, _Tp1* __last1, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __last2) +16166: { return std::__lex_cmp_dit(__first2, __last2, __first1, __last1) > 0; } +16166: +16166: template +16166: inline bool +16166: __lexicographical_compare_aux1( +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1, +16166: std::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2, +16166: std::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __last2) +16166: { +16166: const bool __simple = +16166: (__is_memcmp_ordered_with<_Tp1, _Tp2>::__value +16166: && __is_pointer<_Ptr1>::__value +16166: && __is_pointer<_Ptr2>::__value +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ); +16166: typedef std::__lexicographical_compare<__simple> _Lc; +16166: +16166: while (__first1 != __last1) +16166: { +16166: const ptrdiff_t __len2 = __first2._M_node == __last2._M_node +16166: ? __last2._M_cur - __first2._M_cur +16166: : __first2._M_last - __first2._M_cur; +16166: if (__len2 == 0) +16166: return false; +16166: const ptrdiff_t __len1 = __first1._M_node == __last1._M_node +16166: ? __last1._M_cur - __first1._M_cur +16166: : __first1._M_last - __first1._M_cur; +16166: const ptrdiff_t __len = std::min(__len1, __len2); +16166: if (int __ret = _Lc::__3way(__first1._M_cur, __first1._M_cur + __len, +16166: __first2._M_cur, __first2._M_cur + __len)) +16166: return __ret < 0; +16166: +16166: __first1 += __len; +16166: __first2 += __len; +16166: } +16166: +16166: return __last2 != __first2; +16166: } +16166: +16166: +16166: } +16166: # 70 "/usr/include/c++/14/deque" 2 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 75 "/usr/include/c++/14/deque" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/memory_resource.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cstddef" 1 3 +16166: # 42 "/usr/include/c++/14/cstddef" 3 +16166: +16166: # 43 "/usr/include/c++/14/cstddef" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 145 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +16166: typedef int ptrdiff_t; +16166: # 214 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +16166: typedef unsigned int size_t; +16166: # 425 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +16166: typedef struct { +16166: long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); +16166: long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); +16166: # 436 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 3 4 +16166: } max_align_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef decltype(nullptr) nullptr_t; +16166: # 51 "/usr/include/c++/14/cstddef" 2 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 54 "/usr/include/c++/14/cstddef" 2 3 +16166: +16166: extern "C++" +16166: { +16166: +16166: namespace std +16166: { +16166: +16166: using ::max_align_t; +16166: } +16166: +16166: +16166: +16166: namespace std +16166: { +16166: +16166: +16166: enum class byte : unsigned char {}; +16166: +16166: template struct __byte_operand { }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: +16166: +16166: +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: template<> struct __byte_operand { using __type = byte; }; +16166: # 109 "/usr/include/c++/14/cstddef" 3 +16166: template +16166: struct __byte_operand +16166: : __byte_operand<_IntegerType> { }; +16166: template +16166: struct __byte_operand +16166: : __byte_operand<_IntegerType> { }; +16166: template +16166: struct __byte_operand +16166: : __byte_operand<_IntegerType> { }; +16166: +16166: template +16166: using __byte_op_t = typename __byte_operand<_IntegerType>::__type; +16166: +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr __byte_op_t<_IntegerType> +16166: operator<<(byte __b, _IntegerType __shift) noexcept +16166: { return (byte)(unsigned char)((unsigned)__b << __shift); } +16166: +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr __byte_op_t<_IntegerType> +16166: operator>>(byte __b, _IntegerType __shift) noexcept +16166: { return (byte)(unsigned char)((unsigned)__b >> __shift); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: constexpr byte +16166: operator|(byte __l, byte __r) noexcept +16166: { return (byte)(unsigned char)((unsigned)__l | (unsigned)__r); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: constexpr byte +16166: operator&(byte __l, byte __r) noexcept +16166: { return (byte)(unsigned char)((unsigned)__l & (unsigned)__r); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: constexpr byte +16166: operator^(byte __l, byte __r) noexcept +16166: { return (byte)(unsigned char)((unsigned)__l ^ (unsigned)__r); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: constexpr byte +16166: operator~(byte __b) noexcept +16166: { return (byte)(unsigned char)~(unsigned)__b; } +16166: +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr __byte_op_t<_IntegerType>& +16166: operator<<=(byte& __b, _IntegerType __shift) noexcept +16166: { return __b = __b << __shift; } +16166: +16166: template +16166: [[__gnu__::__always_inline__]] +16166: constexpr __byte_op_t<_IntegerType>& +16166: operator>>=(byte& __b, _IntegerType __shift) noexcept +16166: { return __b = __b >> __shift; } +16166: +16166: [[__gnu__::__always_inline__]] +16166: constexpr byte& +16166: operator|=(byte& __l, byte __r) noexcept +16166: { return __l = __l | __r; } +16166: +16166: [[__gnu__::__always_inline__]] +16166: constexpr byte& +16166: operator&=(byte& __l, byte __r) noexcept +16166: { return __l = __l & __r; } +16166: +16166: [[__gnu__::__always_inline__]] +16166: constexpr byte& +16166: operator^=(byte& __l, byte __r) noexcept +16166: { return __l = __l ^ __r; } +16166: +16166: template +16166: [[nodiscard,__gnu__::__always_inline__]] +16166: constexpr _IntegerType +16166: to_integer(__byte_op_t<_IntegerType> __b) noexcept +16166: { return _IntegerType(__b); } +16166: +16166: +16166: } +16166: +16166: } +16166: # 39 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/uses_allocator.h" 1 3 +16166: # 40 "/usr/include/c++/14/bits/uses_allocator.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: struct __erased_type { }; +16166: +16166: +16166: +16166: +16166: template +16166: using __is_erased_or_convertible +16166: = __or_, is_same<_Tp, __erased_type>>; +16166: +16166: +16166: struct allocator_arg_t { explicit allocator_arg_t() = default; }; +16166: +16166: inline constexpr allocator_arg_t allocator_arg = +16166: allocator_arg_t(); +16166: +16166: template> +16166: struct __uses_allocator_helper +16166: : false_type { }; +16166: +16166: template +16166: struct __uses_allocator_helper<_Tp, _Alloc, +16166: __void_t> +16166: : __is_erased_or_convertible<_Alloc, typename _Tp::allocator_type>::type +16166: { }; +16166: +16166: +16166: template +16166: struct uses_allocator +16166: : __uses_allocator_helper<_Tp, _Alloc>::type +16166: { }; +16166: +16166: struct __uses_alloc_base { }; +16166: +16166: struct __uses_alloc0 : __uses_alloc_base +16166: { +16166: struct _Sink { void operator=(const void*) { } } _M_a; +16166: }; +16166: +16166: template +16166: struct __uses_alloc1 : __uses_alloc_base { const _Alloc* _M_a; }; +16166: +16166: template +16166: struct __uses_alloc2 : __uses_alloc_base { const _Alloc* _M_a; }; +16166: +16166: template +16166: struct __uses_alloc; +16166: +16166: template +16166: struct __uses_alloc +16166: : __conditional_t< +16166: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, +16166: __uses_alloc1<_Alloc>, +16166: __uses_alloc2<_Alloc>> +16166: { +16166: +16166: +16166: static_assert(__or_< +16166: is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, +16166: is_constructible<_Tp, _Args..., const _Alloc&>>::value, +16166: "construction with an allocator must be possible" +16166: " if uses_allocator is true"); +16166: }; +16166: +16166: template +16166: struct __uses_alloc +16166: : __uses_alloc0 { }; +16166: +16166: template +16166: using __uses_alloc_t = +16166: __uses_alloc::value, _Tp, _Alloc, _Args...>; +16166: +16166: template +16166: +16166: inline __uses_alloc_t<_Tp, _Alloc, _Args...> +16166: __use_alloc(const _Alloc& __a) +16166: { +16166: __uses_alloc_t<_Tp, _Alloc, _Args...> __ret; +16166: __ret._M_a = std::__addressof(__a); +16166: return __ret; +16166: } +16166: +16166: template +16166: void +16166: __use_alloc(const _Alloc&&) = delete; +16166: +16166: +16166: template +16166: inline constexpr bool uses_allocator_v = +16166: uses_allocator<_Tp, _Alloc>::value; +16166: +16166: +16166: template class _Predicate, +16166: typename _Tp, typename _Alloc, typename... _Args> +16166: struct __is_uses_allocator_predicate +16166: : __conditional_t::value, +16166: __or_<_Predicate<_Tp, allocator_arg_t, _Alloc, _Args...>, +16166: _Predicate<_Tp, _Args..., _Alloc>>, +16166: _Predicate<_Tp, _Args...>> { }; +16166: +16166: template +16166: struct __is_uses_allocator_constructible +16166: : __is_uses_allocator_predicate +16166: { }; +16166: +16166: +16166: template +16166: inline constexpr bool __is_uses_allocator_constructible_v = +16166: __is_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; +16166: +16166: +16166: template +16166: struct __is_nothrow_uses_allocator_constructible +16166: : __is_uses_allocator_predicate +16166: { }; +16166: +16166: +16166: +16166: template +16166: inline constexpr bool +16166: __is_nothrow_uses_allocator_constructible_v = +16166: __is_nothrow_uses_allocator_constructible<_Tp, _Alloc, _Args...>::value; +16166: +16166: +16166: template +16166: void __uses_allocator_construct_impl(__uses_alloc0, _Tp* __ptr, +16166: _Args&&... __args) +16166: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); } +16166: +16166: template +16166: void __uses_allocator_construct_impl(__uses_alloc1<_Alloc> __a, _Tp* __ptr, +16166: _Args&&... __args) +16166: { +16166: ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a, +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: template +16166: void __uses_allocator_construct_impl(__uses_alloc2<_Alloc> __a, _Tp* __ptr, +16166: _Args&&... __args) +16166: { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); } +16166: +16166: template +16166: void __uses_allocator_construct(const _Alloc& __a, _Tp* __ptr, +16166: _Args&&... __args) +16166: { +16166: std::__uses_allocator_construct_impl( +16166: std::__use_alloc<_Tp, _Alloc, _Args...>(__a), __ptr, +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: +16166: } +16166: # 41 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/uses_allocator_args.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/uses_allocator_args.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/uses_allocator_args.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 36 "/usr/include/c++/14/bits/uses_allocator_args.h" 2 3 +16166: # 42 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/tuple" 1 3 +16166: # 32 "/usr/include/c++/14/tuple" 3 +16166: +16166: # 33 "/usr/include/c++/14/tuple" 3 +16166: # 54 "/usr/include/c++/14/tuple" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 55 "/usr/include/c++/14/tuple" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class tuple; +16166: +16166: template +16166: struct __is_empty_non_tuple : is_empty<_Tp> { }; +16166: +16166: +16166: template +16166: struct __is_empty_non_tuple> : false_type { }; +16166: +16166: +16166: template +16166: using __empty_not_final +16166: = __conditional_t<__is_final(_Tp), false_type, +16166: __is_empty_non_tuple<_Tp>>; +16166: +16166: template::value> +16166: struct _Head_base; +16166: +16166: +16166: template +16166: struct _Head_base<_Idx, _Head, true> +16166: { +16166: constexpr _Head_base() +16166: : _M_head_impl() { } +16166: +16166: constexpr _Head_base(const _Head& __h) +16166: : _M_head_impl(__h) { } +16166: +16166: constexpr _Head_base(const _Head_base&) = default; +16166: constexpr _Head_base(_Head_base&&) = default; +16166: +16166: template +16166: constexpr _Head_base(_UHead&& __h) +16166: : _M_head_impl(std::forward<_UHead>(__h)) { } +16166: +16166: +16166: _Head_base(allocator_arg_t, __uses_alloc0) +16166: : _M_head_impl() { } +16166: +16166: template +16166: +16166: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) +16166: : _M_head_impl(allocator_arg, *__a._M_a) { } +16166: +16166: template +16166: +16166: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) +16166: : _M_head_impl(*__a._M_a) { } +16166: +16166: template +16166: +16166: _Head_base(__uses_alloc0, _UHead&& __uhead) +16166: : _M_head_impl(std::forward<_UHead>(__uhead)) { } +16166: +16166: template +16166: +16166: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) +16166: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) +16166: { } +16166: +16166: template +16166: +16166: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) +16166: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } +16166: +16166: static constexpr _Head& +16166: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } +16166: +16166: static constexpr const _Head& +16166: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } +16166: +16166: [[__no_unique_address__]] _Head _M_head_impl; +16166: }; +16166: # 195 "/usr/include/c++/14/tuple" 3 +16166: template +16166: struct _Head_base<_Idx, _Head, false> +16166: { +16166: constexpr _Head_base() +16166: : _M_head_impl() { } +16166: +16166: constexpr _Head_base(const _Head& __h) +16166: : _M_head_impl(__h) { } +16166: +16166: constexpr _Head_base(const _Head_base&) = default; +16166: constexpr _Head_base(_Head_base&&) = default; +16166: +16166: template +16166: constexpr _Head_base(_UHead&& __h) +16166: : _M_head_impl(std::forward<_UHead>(__h)) { } +16166: +16166: +16166: _Head_base(allocator_arg_t, __uses_alloc0) +16166: : _M_head_impl() { } +16166: +16166: template +16166: +16166: _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) +16166: : _M_head_impl(allocator_arg, *__a._M_a) { } +16166: +16166: template +16166: +16166: _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) +16166: : _M_head_impl(*__a._M_a) { } +16166: +16166: template +16166: +16166: _Head_base(__uses_alloc0, _UHead&& __uhead) +16166: : _M_head_impl(std::forward<_UHead>(__uhead)) { } +16166: +16166: template +16166: +16166: _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) +16166: : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) +16166: { } +16166: +16166: template +16166: +16166: _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) +16166: : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } +16166: +16166: static constexpr _Head& +16166: _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } +16166: +16166: static constexpr const _Head& +16166: _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } +16166: +16166: _Head _M_head_impl; +16166: }; +16166: # 274 "/usr/include/c++/14/tuple" 3 +16166: template +16166: struct _Tuple_impl; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Tuple_impl<_Idx, _Head, _Tail...> +16166: : public _Tuple_impl<_Idx + 1, _Tail...>, +16166: private _Head_base<_Idx, _Head> +16166: { +16166: template friend struct _Tuple_impl; +16166: +16166: typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; +16166: typedef _Head_base<_Idx, _Head> _Base; +16166: +16166: static constexpr _Head& +16166: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +16166: +16166: static constexpr const _Head& +16166: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +16166: +16166: static constexpr _Inherited& +16166: _M_tail(_Tuple_impl& __t) noexcept { return __t; } +16166: +16166: static constexpr const _Inherited& +16166: _M_tail(const _Tuple_impl& __t) noexcept { return __t; } +16166: +16166: constexpr _Tuple_impl() +16166: : _Inherited(), _Base() { } +16166: +16166: explicit constexpr +16166: _Tuple_impl(const _Head& __head, const _Tail&... __tail) +16166: : _Inherited(__tail...), _Base(__head) +16166: { } +16166: +16166: template> +16166: explicit constexpr +16166: _Tuple_impl(_UHead&& __head, _UTail&&... __tail) +16166: : _Inherited(std::forward<_UTail>(__tail)...), +16166: _Base(std::forward<_UHead>(__head)) +16166: { } +16166: +16166: constexpr _Tuple_impl(const _Tuple_impl&) = default; +16166: +16166: +16166: +16166: _Tuple_impl& operator=(const _Tuple_impl&) = delete; +16166: +16166: _Tuple_impl(_Tuple_impl&&) = default; +16166: +16166: template +16166: constexpr +16166: _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) +16166: : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), +16166: _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) +16166: : _Inherited(std::move +16166: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), +16166: _Base(std::forward<_UHead> +16166: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) +16166: { } +16166: # 370 "/usr/include/c++/14/tuple" 3 +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) +16166: : _Inherited(__tag, __a), +16166: _Base(__tag, __use_alloc<_Head>(__a)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +16166: const _Head& __head, const _Tail&... __tail) +16166: : _Inherited(__tag, __a, __tail...), +16166: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) +16166: { } +16166: +16166: template> +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +16166: _UHead&& __head, _UTail&&... __tail) +16166: : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), +16166: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +16166: std::forward<_UHead>(__head)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +16166: const _Tuple_impl& __in) +16166: : _Inherited(__tag, __a, _M_tail(__in)), +16166: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +16166: _Tuple_impl&& __in) +16166: : _Inherited(__tag, __a, std::move(_M_tail(__in))), +16166: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), +16166: std::forward<_Head>(_M_head(__in))) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +16166: const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) +16166: : _Inherited(__tag, __a, +16166: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), +16166: _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), +16166: _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +16166: _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) +16166: : _Inherited(__tag, __a, std::move +16166: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), +16166: _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +16166: std::forward<_UHead> +16166: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) +16166: { } +16166: # 465 "/usr/include/c++/14/tuple" 3 +16166: template +16166: +16166: void +16166: _M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) +16166: { +16166: _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); +16166: _M_tail(*this)._M_assign( +16166: _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)); +16166: } +16166: +16166: template +16166: +16166: void +16166: _M_assign(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) +16166: { +16166: _M_head(*this) = std::forward<_UHead> +16166: (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); +16166: _M_tail(*this)._M_assign( +16166: std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))); +16166: } +16166: # 525 "/usr/include/c++/14/tuple" 3 +16166: protected: +16166: +16166: void +16166: _M_swap(_Tuple_impl& __in) +16166: { +16166: using std::swap; +16166: swap(_M_head(*this), _M_head(__in)); +16166: _Inherited::_M_swap(_M_tail(__in)); +16166: } +16166: # 544 "/usr/include/c++/14/tuple" 3 +16166: }; +16166: +16166: +16166: template +16166: struct _Tuple_impl<_Idx, _Head> +16166: : private _Head_base<_Idx, _Head> +16166: { +16166: template friend struct _Tuple_impl; +16166: +16166: typedef _Head_base<_Idx, _Head> _Base; +16166: +16166: static constexpr _Head& +16166: _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +16166: +16166: static constexpr const _Head& +16166: _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } +16166: +16166: constexpr +16166: _Tuple_impl() +16166: : _Base() { } +16166: +16166: explicit constexpr +16166: _Tuple_impl(const _Head& __head) +16166: : _Base(__head) +16166: { } +16166: +16166: template +16166: explicit constexpr +16166: _Tuple_impl(_UHead&& __head) +16166: : _Base(std::forward<_UHead>(__head)) +16166: { } +16166: +16166: constexpr _Tuple_impl(const _Tuple_impl&) = default; +16166: +16166: +16166: +16166: _Tuple_impl& operator=(const _Tuple_impl&) = delete; +16166: +16166: +16166: +16166: +16166: constexpr +16166: _Tuple_impl(_Tuple_impl&& __in) +16166: noexcept(is_nothrow_move_constructible<_Head>::value) +16166: : _Base(static_cast<_Base&&>(__in)) +16166: { } +16166: +16166: +16166: template +16166: constexpr +16166: _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) +16166: : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) +16166: : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) +16166: { } +16166: # 626 "/usr/include/c++/14/tuple" 3 +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) +16166: : _Base(__tag, __use_alloc<_Head>(__a)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +16166: const _Head& __head) +16166: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), __head) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +16166: _UHead&& __head) +16166: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +16166: std::forward<_UHead>(__head)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +16166: const _Tuple_impl& __in) +16166: : _Base(__use_alloc<_Head, _Alloc, const _Head&>(__a), _M_head(__in)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +16166: _Tuple_impl&& __in) +16166: : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), +16166: std::forward<_Head>(_M_head(__in))) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +16166: const _Tuple_impl<_Idx, _UHead>& __in) +16166: : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), +16166: _Tuple_impl<_Idx, _UHead>::_M_head(__in)) +16166: { } +16166: +16166: template +16166: +16166: _Tuple_impl(allocator_arg_t, const _Alloc& __a, +16166: _Tuple_impl<_Idx, _UHead>&& __in) +16166: : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), +16166: std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) +16166: { } +16166: # 705 "/usr/include/c++/14/tuple" 3 +16166: template +16166: +16166: void +16166: _M_assign(const _Tuple_impl<_Idx, _UHead>& __in) +16166: { +16166: _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); +16166: } +16166: +16166: template +16166: +16166: void +16166: _M_assign(_Tuple_impl<_Idx, _UHead>&& __in) +16166: { +16166: _M_head(*this) +16166: = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); +16166: } +16166: # 751 "/usr/include/c++/14/tuple" 3 +16166: protected: +16166: +16166: void +16166: _M_swap(_Tuple_impl& __in) +16166: { +16166: using std::swap; +16166: swap(_M_head(*this), _M_head(__in)); +16166: } +16166: # 768 "/usr/include/c++/14/tuple" 3 +16166: }; +16166: +16166: +16166: +16166: template +16166: struct _TupleConstraints +16166: { +16166: template +16166: using __constructible = __and_...>; +16166: +16166: template +16166: using __convertible = __and_...>; +16166: +16166: +16166: +16166: +16166: template +16166: static constexpr bool __is_implicitly_constructible() +16166: { +16166: return __and_<__constructible<_UTypes...>, +16166: __convertible<_UTypes...> +16166: >::value; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: static constexpr bool __is_explicitly_constructible() +16166: { +16166: return __and_<__constructible<_UTypes...>, +16166: __not_<__convertible<_UTypes...>> +16166: >::value; +16166: } +16166: +16166: static constexpr bool __is_implicitly_default_constructible() +16166: { +16166: return __and_... +16166: >::value; +16166: } +16166: +16166: static constexpr bool __is_explicitly_default_constructible() +16166: { +16166: return __and_..., +16166: __not_<__and_< +16166: std::__is_implicitly_default_constructible<_Types>...> +16166: >>::value; +16166: } +16166: }; +16166: +16166: +16166: +16166: template +16166: struct _TupleConstraints +16166: { +16166: template +16166: static constexpr bool __is_implicitly_constructible() +16166: { return false; } +16166: +16166: template +16166: static constexpr bool __is_explicitly_constructible() +16166: { return false; } +16166: }; +16166: +16166: +16166: template +16166: class tuple : public _Tuple_impl<0, _Elements...> +16166: { +16166: using _Inherited = _Tuple_impl<0, _Elements...>; +16166: # 1351 "/usr/include/c++/14/tuple" 3 +16166: template +16166: using _TCC = _TupleConstraints<_Cond, _Elements...>; +16166: +16166: +16166: template +16166: using _ImplicitDefaultCtor = __enable_if_t< +16166: _TCC<_Dummy>::__is_implicitly_default_constructible(), +16166: bool>; +16166: +16166: +16166: template +16166: using _ExplicitDefaultCtor = __enable_if_t< +16166: _TCC<_Dummy>::__is_explicitly_default_constructible(), +16166: bool>; +16166: +16166: +16166: template +16166: using _ImplicitCtor = __enable_if_t< +16166: _TCC<_Cond>::template __is_implicitly_constructible<_Args...>(), +16166: bool>; +16166: +16166: +16166: template +16166: using _ExplicitCtor = __enable_if_t< +16166: _TCC<_Cond>::template __is_explicitly_constructible<_Args...>(), +16166: bool>; +16166: +16166: +16166: template +16166: static constexpr bool __nothrow_constructible() +16166: { +16166: return +16166: __and_...>::value; +16166: } +16166: +16166: +16166: template +16166: static constexpr bool __valid_args() +16166: { +16166: return sizeof...(_Elements) == 1 +16166: && !is_same>::value; +16166: } +16166: +16166: +16166: template +16166: static constexpr bool __valid_args() +16166: { return (sizeof...(_Tail) + 2) == sizeof...(_Elements); } +16166: # 1408 "/usr/include/c++/14/tuple" 3 +16166: template> +16166: struct _UseOtherCtor +16166: : false_type +16166: { }; +16166: +16166: +16166: template +16166: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Up>> +16166: : __or_, is_constructible<_Tp, _Tuple>>::type +16166: { }; +16166: +16166: +16166: template +16166: struct _UseOtherCtor<_Tuple, tuple<_Tp>, tuple<_Tp>> +16166: : true_type +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: static constexpr bool __use_other_ctor() +16166: { return _UseOtherCtor<_Tuple>::value; } +16166: # 1454 "/usr/include/c++/14/tuple" 3 +16166: public: +16166: template::value> = true> +16166: constexpr +16166: tuple() +16166: noexcept(__and_...>::value) +16166: : _Inherited() { } +16166: +16166: template::value> = false> +16166: explicit constexpr +16166: tuple() +16166: noexcept(__and_...>::value) +16166: : _Inherited() { } +16166: +16166: template= 1), +16166: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> +16166: constexpr +16166: tuple(const _Elements&... __elements) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(__elements...) { } +16166: +16166: template= 1), +16166: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> +16166: explicit constexpr +16166: tuple(const _Elements&... __elements) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(__elements...) { } +16166: +16166: template(), +16166: _ImplicitCtor<_Valid, _UElements...> = true> +16166: constexpr +16166: tuple(_UElements&&... __elements) +16166: noexcept(__nothrow_constructible<_UElements...>()) +16166: : _Inherited(std::forward<_UElements>(__elements)...) +16166: { ; } +16166: +16166: template(), +16166: _ExplicitCtor<_Valid, _UElements...> = false> +16166: explicit constexpr +16166: tuple(_UElements&&... __elements) +16166: noexcept(__nothrow_constructible<_UElements...>()) +16166: : _Inherited(std::forward<_UElements>(__elements)...) +16166: { ; } +16166: +16166: constexpr tuple(const tuple&) = default; +16166: +16166: constexpr tuple(tuple&&) = default; +16166: +16166: template&>(), +16166: _ImplicitCtor<_Valid, const _UElements&...> = true> +16166: constexpr +16166: tuple(const tuple<_UElements...>& __in) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(static_cast&>(__in)) +16166: { ; } +16166: +16166: template&>(), +16166: _ExplicitCtor<_Valid, const _UElements&...> = false> +16166: explicit constexpr +16166: tuple(const tuple<_UElements...>& __in) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(static_cast&>(__in)) +16166: { ; } +16166: +16166: template&&>(), +16166: _ImplicitCtor<_Valid, _UElements...> = true> +16166: constexpr +16166: tuple(tuple<_UElements...>&& __in) +16166: noexcept(__nothrow_constructible<_UElements...>()) +16166: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +16166: { ; } +16166: +16166: template&&>(), +16166: _ExplicitCtor<_Valid, _UElements...> = false> +16166: explicit constexpr +16166: tuple(tuple<_UElements...>&& __in) +16166: noexcept(__nothrow_constructible<_UElements...>()) +16166: : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +16166: { ; } +16166: +16166: +16166: +16166: template::value> = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a) +16166: : _Inherited(__tag, __a) { } +16166: +16166: template::value> = false> +16166: +16166: explicit +16166: tuple(allocator_arg_t __tag, const _Alloc& __a) +16166: : _Inherited(__tag, __a) { } +16166: +16166: template= 1), +16166: _ImplicitCtor<_NotEmpty, const _Elements&...> = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const _Elements&... __elements) +16166: : _Inherited(__tag, __a, __elements...) { } +16166: +16166: template= 1), +16166: _ExplicitCtor<_NotEmpty, const _Elements&...> = false> +16166: +16166: explicit +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const _Elements&... __elements) +16166: : _Inherited(__tag, __a, __elements...) { } +16166: +16166: template(), +16166: _ImplicitCtor<_Valid, _UElements...> = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: _UElements&&... __elements) +16166: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) +16166: { ; } +16166: +16166: template(), +16166: _ExplicitCtor<_Valid, _UElements...> = false> +16166: +16166: explicit +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: _UElements&&... __elements) +16166: : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) +16166: { ; } +16166: +16166: template +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) +16166: : _Inherited(__tag, __a, static_cast(__in)) { } +16166: +16166: template +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) +16166: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } +16166: +16166: template&>(), +16166: _ImplicitCtor<_Valid, const _UElements&...> = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const tuple<_UElements...>& __in) +16166: : _Inherited(__tag, __a, +16166: static_cast&>(__in)) +16166: { ; } +16166: +16166: template&>(), +16166: _ExplicitCtor<_Valid, const _UElements&...> = false> +16166: +16166: explicit +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const tuple<_UElements...>& __in) +16166: : _Inherited(__tag, __a, +16166: static_cast&>(__in)) +16166: { ; } +16166: +16166: template&&>(), +16166: _ImplicitCtor<_Valid, _UElements...> = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: tuple<_UElements...>&& __in) +16166: : _Inherited(__tag, __a, +16166: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +16166: { ; } +16166: +16166: template&&>(), +16166: _ExplicitCtor<_Valid, _UElements...> = false> +16166: +16166: explicit +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: tuple<_UElements...>&& __in) +16166: : _Inherited(__tag, __a, +16166: static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) +16166: { ; } +16166: # 1886 "/usr/include/c++/14/tuple" 3 +16166: private: +16166: template +16166: static constexpr +16166: __enable_if_t +16166: __assignable() +16166: { return __and_...>::value; } +16166: +16166: +16166: template +16166: static constexpr bool __nothrow_assignable() +16166: { +16166: return +16166: __and_...>::value; +16166: } +16166: +16166: public: +16166: +16166: +16166: tuple& +16166: operator=(__conditional_t<__assignable(), +16166: const tuple&, +16166: const __nonesuch&> __in) +16166: noexcept(__nothrow_assignable()) +16166: { +16166: this->_M_assign(__in); +16166: return *this; +16166: } +16166: +16166: +16166: tuple& +16166: operator=(__conditional_t<__assignable<_Elements...>(), +16166: tuple&&, +16166: __nonesuch&&> __in) +16166: noexcept(__nothrow_assignable<_Elements...>()) +16166: { +16166: this->_M_assign(std::move(__in)); +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: __enable_if_t<__assignable(), tuple&> +16166: operator=(const tuple<_UElements...>& __in) +16166: noexcept(__nothrow_assignable()) +16166: { +16166: this->_M_assign(__in); +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: __enable_if_t<__assignable<_UElements...>(), tuple&> +16166: operator=(tuple<_UElements...>&& __in) +16166: noexcept(__nothrow_assignable<_UElements...>()) +16166: { +16166: this->_M_assign(std::move(__in)); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: swap(tuple& __in) +16166: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) +16166: { _Inherited::_M_swap(__in); } +16166: # 1966 "/usr/include/c++/14/tuple" 3 +16166: }; +16166: +16166: +16166: template +16166: tuple(_UTypes...) -> tuple<_UTypes...>; +16166: template +16166: tuple(pair<_T1, _T2>) -> tuple<_T1, _T2>; +16166: template +16166: tuple(allocator_arg_t, _Alloc, _UTypes...) -> tuple<_UTypes...>; +16166: template +16166: tuple(allocator_arg_t, _Alloc, pair<_T1, _T2>) -> tuple<_T1, _T2>; +16166: template +16166: tuple(allocator_arg_t, _Alloc, tuple<_UTypes...>) -> tuple<_UTypes...>; +16166: +16166: +16166: +16166: template<> +16166: class tuple<> +16166: { +16166: public: +16166: +16166: void swap(tuple&) noexcept { } +16166: +16166: +16166: +16166: +16166: +16166: tuple() = default; +16166: +16166: template +16166: +16166: tuple(allocator_arg_t, const _Alloc&) noexcept { } +16166: template +16166: +16166: tuple(allocator_arg_t, const _Alloc&, const tuple&) noexcept { } +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> +16166: { +16166: typedef _Tuple_impl<0, _T1, _T2> _Inherited; +16166: +16166: +16166: template +16166: using _ImplicitDefaultCtor = __enable_if_t< +16166: _TupleConstraints<_Dummy, _U1, _U2>:: +16166: __is_implicitly_default_constructible(), +16166: bool>; +16166: +16166: +16166: template +16166: using _ExplicitDefaultCtor = __enable_if_t< +16166: _TupleConstraints<_Dummy, _U1, _U2>:: +16166: __is_explicitly_default_constructible(), +16166: bool>; +16166: +16166: template +16166: using _TCC = _TupleConstraints<_Dummy, _T1, _T2>; +16166: +16166: +16166: template +16166: using _ImplicitCtor = __enable_if_t< +16166: _TCC<_Cond>::template __is_implicitly_constructible<_U1, _U2>(), +16166: bool>; +16166: +16166: +16166: template +16166: using _ExplicitCtor = __enable_if_t< +16166: _TCC<_Cond>::template __is_explicitly_constructible<_U1, _U2>(), +16166: bool>; +16166: +16166: template +16166: static constexpr bool __assignable() +16166: { +16166: return __and_, +16166: is_assignable<_T2&, _U2>>::value; +16166: } +16166: +16166: template +16166: static constexpr bool __nothrow_assignable() +16166: { +16166: return __and_, +16166: is_nothrow_assignable<_T2&, _U2>>::value; +16166: } +16166: +16166: template +16166: static constexpr bool __nothrow_constructible() +16166: { +16166: return __and_, +16166: is_nothrow_constructible<_T2, _U2>>::value; +16166: } +16166: +16166: static constexpr bool __nothrow_default_constructible() +16166: { +16166: return __and_, +16166: is_nothrow_default_constructible<_T2>>::value; +16166: } +16166: +16166: template +16166: static constexpr bool __is_alloc_arg() +16166: { return is_same<__remove_cvref_t<_U1>, allocator_arg_t>::value; } +16166: # 2085 "/usr/include/c++/14/tuple" 3 +16166: public: +16166: template = true> +16166: constexpr +16166: tuple() +16166: noexcept(__nothrow_default_constructible()) +16166: : _Inherited() { } +16166: +16166: template = false> +16166: explicit constexpr +16166: tuple() +16166: noexcept(__nothrow_default_constructible()) +16166: : _Inherited() { } +16166: +16166: template = true> +16166: constexpr +16166: tuple(const _T1& __a1, const _T2& __a2) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(__a1, __a2) { } +16166: +16166: template = false> +16166: explicit constexpr +16166: tuple(const _T1& __a1, const _T2& __a2) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(__a1, __a2) { } +16166: +16166: template(), _U1, _U2> = true> +16166: constexpr +16166: tuple(_U1&& __a1, _U2&& __a2) +16166: noexcept(__nothrow_constructible<_U1, _U2>()) +16166: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) +16166: { ; } +16166: +16166: template(), _U1, _U2> = false> +16166: explicit constexpr +16166: tuple(_U1&& __a1, _U2&& __a2) +16166: noexcept(__nothrow_constructible<_U1, _U2>()) +16166: : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) +16166: { ; } +16166: +16166: constexpr tuple(const tuple&) = default; +16166: +16166: constexpr tuple(tuple&&) = default; +16166: +16166: template = true> +16166: constexpr +16166: tuple(const tuple<_U1, _U2>& __in) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(static_cast&>(__in)) +16166: { ; } +16166: +16166: template = false> +16166: explicit constexpr +16166: tuple(const tuple<_U1, _U2>& __in) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(static_cast&>(__in)) +16166: { ; } +16166: +16166: template = true> +16166: constexpr +16166: tuple(tuple<_U1, _U2>&& __in) +16166: noexcept(__nothrow_constructible<_U1, _U2>()) +16166: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +16166: { ; } +16166: +16166: template = false> +16166: explicit constexpr +16166: tuple(tuple<_U1, _U2>&& __in) +16166: noexcept(__nothrow_constructible<_U1, _U2>()) +16166: : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +16166: { ; } +16166: +16166: template = true> +16166: constexpr +16166: tuple(const pair<_U1, _U2>& __in) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(__in.first, __in.second) +16166: { ; } +16166: +16166: template = false> +16166: explicit constexpr +16166: tuple(const pair<_U1, _U2>& __in) +16166: noexcept(__nothrow_constructible()) +16166: : _Inherited(__in.first, __in.second) +16166: { ; } +16166: +16166: template = true> +16166: constexpr +16166: tuple(pair<_U1, _U2>&& __in) +16166: noexcept(__nothrow_constructible<_U1, _U2>()) +16166: : _Inherited(std::forward<_U1>(__in.first), +16166: std::forward<_U2>(__in.second)) +16166: { ; } +16166: +16166: template = false> +16166: explicit constexpr +16166: tuple(pair<_U1, _U2>&& __in) +16166: noexcept(__nothrow_constructible<_U1, _U2>()) +16166: : _Inherited(std::forward<_U1>(__in.first), +16166: std::forward<_U2>(__in.second)) +16166: { ; } +16166: +16166: +16166: +16166: template::value, _T1, _T2> = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a) +16166: : _Inherited(__tag, __a) { } +16166: +16166: template::value, _T1, _T2> = false> +16166: +16166: explicit +16166: tuple(allocator_arg_t __tag, const _Alloc& __a) +16166: : _Inherited(__tag, __a) { } +16166: +16166: template = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const _T1& __a1, const _T2& __a2) +16166: : _Inherited(__tag, __a, __a1, __a2) { } +16166: +16166: template = false> +16166: explicit +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const _T1& __a1, const _T2& __a2) +16166: : _Inherited(__tag, __a, __a1, __a2) { } +16166: +16166: template = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) +16166: : _Inherited(__tag, __a, std::forward<_U1>(__a1), +16166: std::forward<_U2>(__a2)) +16166: { ; } +16166: +16166: template = false> +16166: explicit +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: _U1&& __a1, _U2&& __a2) +16166: : _Inherited(__tag, __a, std::forward<_U1>(__a1), +16166: std::forward<_U2>(__a2)) +16166: { ; } +16166: +16166: template +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) +16166: : _Inherited(__tag, __a, static_cast(__in)) { } +16166: +16166: template +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) +16166: : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } +16166: +16166: template = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const tuple<_U1, _U2>& __in) +16166: : _Inherited(__tag, __a, +16166: static_cast&>(__in)) +16166: { ; } +16166: +16166: template = false> +16166: explicit +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const tuple<_U1, _U2>& __in) +16166: : _Inherited(__tag, __a, +16166: static_cast&>(__in)) +16166: { ; } +16166: +16166: template = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) +16166: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +16166: { ; } +16166: +16166: template = false> +16166: explicit +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) +16166: : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) +16166: { ; } +16166: +16166: template = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const pair<_U1, _U2>& __in) +16166: : _Inherited(__tag, __a, __in.first, __in.second) +16166: { ; } +16166: +16166: template = false> +16166: explicit +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, +16166: const pair<_U1, _U2>& __in) +16166: : _Inherited(__tag, __a, __in.first, __in.second) +16166: { ; } +16166: +16166: template = true> +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) +16166: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), +16166: std::forward<_U2>(__in.second)) +16166: { ; } +16166: +16166: template = false> +16166: explicit +16166: +16166: tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) +16166: : _Inherited(__tag, __a, std::forward<_U1>(__in.first), +16166: std::forward<_U2>(__in.second)) +16166: { ; } +16166: +16166: +16166: +16166: +16166: tuple& +16166: operator=(__conditional_t<__assignable(), +16166: const tuple&, +16166: const __nonesuch&> __in) +16166: noexcept(__nothrow_assignable()) +16166: { +16166: this->_M_assign(__in); +16166: return *this; +16166: } +16166: +16166: +16166: tuple& +16166: operator=(__conditional_t<__assignable<_T1, _T2>(), +16166: tuple&&, +16166: __nonesuch&&> __in) +16166: noexcept(__nothrow_assignable<_T1, _T2>()) +16166: { +16166: this->_M_assign(std::move(__in)); +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: __enable_if_t<__assignable(), tuple&> +16166: operator=(const tuple<_U1, _U2>& __in) +16166: noexcept(__nothrow_assignable()) +16166: { +16166: this->_M_assign(__in); +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: __enable_if_t<__assignable<_U1, _U2>(), tuple&> +16166: operator=(tuple<_U1, _U2>&& __in) +16166: noexcept(__nothrow_assignable<_U1, _U2>()) +16166: { +16166: this->_M_assign(std::move(__in)); +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: __enable_if_t<__assignable(), tuple&> +16166: operator=(const pair<_U1, _U2>& __in) +16166: noexcept(__nothrow_assignable()) +16166: { +16166: this->_M_head(*this) = __in.first; +16166: this->_M_tail(*this)._M_head(*this) = __in.second; +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: __enable_if_t<__assignable<_U1, _U2>(), tuple&> +16166: operator=(pair<_U1, _U2>&& __in) +16166: noexcept(__nothrow_assignable<_U1, _U2>()) +16166: { +16166: this->_M_head(*this) = std::forward<_U1>(__in.first); +16166: this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); +16166: return *this; +16166: } +16166: +16166: +16166: void +16166: swap(tuple& __in) +16166: noexcept(__and_<__is_nothrow_swappable<_T1>, +16166: __is_nothrow_swappable<_T2>>::value) +16166: { _Inherited::_M_swap(__in); } +16166: }; +16166: +16166: +16166: +16166: template +16166: struct tuple_size> +16166: : public integral_constant { }; +16166: +16166: +16166: template +16166: inline constexpr size_t tuple_size_v> +16166: = sizeof...(_Types); +16166: +16166: template +16166: inline constexpr size_t tuple_size_v> +16166: = sizeof...(_Types); +16166: +16166: +16166: +16166: template +16166: struct tuple_element<__i, tuple<_Types...>> +16166: { +16166: static_assert(__i < sizeof...(_Types), "tuple index must be in range"); +16166: +16166: using type = typename _Nth_type<__i, _Types...>::type; +16166: }; +16166: +16166: template +16166: constexpr _Head& +16166: __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept +16166: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } +16166: +16166: template +16166: constexpr const _Head& +16166: __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept +16166: { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } +16166: +16166: +16166: template +16166: __enable_if_t<(__i >= sizeof...(_Types))> +16166: __get_helper(const tuple<_Types...>&) = delete; +16166: +16166: +16166: template +16166: constexpr __tuple_element_t<__i, tuple<_Elements...>>& +16166: get(tuple<_Elements...>& __t) noexcept +16166: { return std::__get_helper<__i>(__t); } +16166: +16166: +16166: template +16166: constexpr const __tuple_element_t<__i, tuple<_Elements...>>& +16166: get(const tuple<_Elements...>& __t) noexcept +16166: { return std::__get_helper<__i>(__t); } +16166: +16166: +16166: template +16166: constexpr __tuple_element_t<__i, tuple<_Elements...>>&& +16166: get(tuple<_Elements...>&& __t) noexcept +16166: { +16166: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; +16166: return std::forward<__element_type>(std::__get_helper<__i>(__t)); +16166: } +16166: +16166: +16166: template +16166: constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& +16166: get(const tuple<_Elements...>&& __t) noexcept +16166: { +16166: typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; +16166: return std::forward(std::__get_helper<__i>(__t)); +16166: } +16166: +16166: +16166: +16166: template +16166: constexpr __enable_if_t<(__i >= sizeof...(_Elements))> +16166: get(const tuple<_Elements...>&) = delete; +16166: +16166: +16166: +16166: +16166: template +16166: constexpr _Tp& +16166: get(tuple<_Types...>& __t) noexcept +16166: { +16166: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +16166: static_assert(__idx < sizeof...(_Types), +16166: "the type T in std::get must occur exactly once in the tuple"); +16166: return std::__get_helper<__idx>(__t); +16166: } +16166: +16166: +16166: template +16166: constexpr _Tp&& +16166: get(tuple<_Types...>&& __t) noexcept +16166: { +16166: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +16166: static_assert(__idx < sizeof...(_Types), +16166: "the type T in std::get must occur exactly once in the tuple"); +16166: return std::forward<_Tp>(std::__get_helper<__idx>(__t)); +16166: } +16166: +16166: +16166: template +16166: constexpr const _Tp& +16166: get(const tuple<_Types...>& __t) noexcept +16166: { +16166: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +16166: static_assert(__idx < sizeof...(_Types), +16166: "the type T in std::get must occur exactly once in the tuple"); +16166: return std::__get_helper<__idx>(__t); +16166: } +16166: +16166: +16166: +16166: template +16166: constexpr const _Tp&& +16166: get(const tuple<_Types...>&& __t) noexcept +16166: { +16166: constexpr size_t __idx = __find_uniq_type_in_pack<_Tp, _Types...>(); +16166: static_assert(__idx < sizeof...(_Types), +16166: "the type T in std::get must occur exactly once in the tuple"); +16166: return std::forward(std::__get_helper<__idx>(__t)); +16166: } +16166: +16166: +16166: +16166: template +16166: struct __tuple_compare +16166: { +16166: static constexpr bool +16166: __eq(const _Tp& __t, const _Up& __u) +16166: { +16166: return bool(std::get<__i>(__t) == std::get<__i>(__u)) +16166: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); +16166: } +16166: +16166: static constexpr bool +16166: __less(const _Tp& __t, const _Up& __u) +16166: { +16166: return bool(std::get<__i>(__t) < std::get<__i>(__u)) +16166: || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) +16166: && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); +16166: } +16166: }; +16166: +16166: template +16166: struct __tuple_compare<_Tp, _Up, __size, __size> +16166: { +16166: static constexpr bool +16166: __eq(const _Tp&, const _Up&) { return true; } +16166: +16166: static constexpr bool +16166: __less(const _Tp&, const _Up&) { return false; } +16166: }; +16166: +16166: template +16166: constexpr bool +16166: operator==(const tuple<_TElements...>& __t, +16166: const tuple<_UElements...>& __u) +16166: { +16166: static_assert(sizeof...(_TElements) == sizeof...(_UElements), +16166: "tuple objects can only be compared if they have equal sizes."); +16166: using __compare = __tuple_compare, +16166: tuple<_UElements...>, +16166: 0, sizeof...(_TElements)>; +16166: return __compare::__eq(__t, __u); +16166: } +16166: # 2596 "/usr/include/c++/14/tuple" 3 +16166: template +16166: constexpr bool +16166: operator<(const tuple<_TElements...>& __t, +16166: const tuple<_UElements...>& __u) +16166: { +16166: static_assert(sizeof...(_TElements) == sizeof...(_UElements), +16166: "tuple objects can only be compared if they have equal sizes."); +16166: using __compare = __tuple_compare, +16166: tuple<_UElements...>, +16166: 0, sizeof...(_TElements)>; +16166: return __compare::__less(__t, __u); +16166: } +16166: +16166: template +16166: constexpr bool +16166: operator!=(const tuple<_TElements...>& __t, +16166: const tuple<_UElements...>& __u) +16166: { return !(__t == __u); } +16166: +16166: template +16166: constexpr bool +16166: operator>(const tuple<_TElements...>& __t, +16166: const tuple<_UElements...>& __u) +16166: { return __u < __t; } +16166: +16166: template +16166: constexpr bool +16166: operator<=(const tuple<_TElements...>& __t, +16166: const tuple<_UElements...>& __u) +16166: { return !(__u < __t); } +16166: +16166: template +16166: constexpr bool +16166: operator>=(const tuple<_TElements...>& __t, +16166: const tuple<_UElements...>& __u) +16166: { return !(__t < __u); } +16166: +16166: +16166: +16166: +16166: template +16166: constexpr tuple::__type...> +16166: make_tuple(_Elements&&... __args) +16166: { +16166: typedef tuple::__type...> +16166: __result_type; +16166: return __result_type(std::forward<_Elements>(__args)...); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: constexpr tuple<_Elements&&...> +16166: forward_as_tuple(_Elements&&... __args) noexcept +16166: { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } +16166: +16166: +16166: template +16166: struct __make_tuple_impl; +16166: +16166: template +16166: struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> +16166: : __make_tuple_impl<_Idx + 1, +16166: tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, +16166: _Tuple, _Nm> +16166: { }; +16166: +16166: template +16166: struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> +16166: { +16166: typedef tuple<_Tp...> __type; +16166: }; +16166: +16166: template +16166: struct __do_make_tuple +16166: : __make_tuple_impl<0, tuple<>, _Tuple, tuple_size<_Tuple>::value> +16166: { }; +16166: +16166: +16166: template +16166: struct __make_tuple +16166: : public __do_make_tuple<__remove_cvref_t<_Tuple>> +16166: { }; +16166: +16166: +16166: template +16166: struct __combine_tuples; +16166: +16166: template<> +16166: struct __combine_tuples<> +16166: { +16166: typedef tuple<> __type; +16166: }; +16166: +16166: template +16166: struct __combine_tuples> +16166: { +16166: typedef tuple<_Ts...> __type; +16166: }; +16166: +16166: template +16166: struct __combine_tuples, tuple<_T2s...>, _Rem...> +16166: { +16166: typedef typename __combine_tuples, +16166: _Rem...>::__type __type; +16166: }; +16166: +16166: +16166: template +16166: struct __tuple_cat_result +16166: { +16166: typedef typename __combine_tuples +16166: ::__type...>::__type __type; +16166: }; +16166: +16166: +16166: +16166: template +16166: struct __make_1st_indices; +16166: +16166: template<> +16166: struct __make_1st_indices<> +16166: { +16166: typedef _Index_tuple<> __type; +16166: }; +16166: +16166: template +16166: struct __make_1st_indices<_Tp, _Tpls...> +16166: { +16166: typedef typename _Build_index_tuple::type>::value>::__type __type; +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __tuple_concater; +16166: +16166: template +16166: struct __tuple_concater<_Ret, _Index_tuple<_Is...>, _Tp, _Tpls...> +16166: { +16166: template +16166: static constexpr _Ret +16166: _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) +16166: { +16166: typedef typename __make_1st_indices<_Tpls...>::__type __idx; +16166: typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; +16166: return __next::_S_do(std::forward<_Tpls>(__tps)..., +16166: std::forward<_Us>(__us)..., +16166: std::get<_Is>(std::forward<_Tp>(__tp))...); +16166: } +16166: }; +16166: +16166: template +16166: struct __tuple_concater<_Ret, _Index_tuple<>> +16166: { +16166: template +16166: static constexpr _Ret +16166: _S_do(_Us&&... __us) +16166: { +16166: return _Ret(std::forward<_Us>(__us)...); +16166: } +16166: }; +16166: +16166: template +16166: struct __is_tuple_like_impl> : true_type +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template...>::value>::type> +16166: +16166: constexpr auto +16166: tuple_cat(_Tpls&&... __tpls) +16166: -> typename __tuple_cat_result<_Tpls...>::__type +16166: { +16166: typedef typename __tuple_cat_result<_Tpls...>::__type __ret; +16166: typedef typename __make_1st_indices<_Tpls...>::__type __idx; +16166: typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; +16166: return __concater::_S_do(std::forward<_Tpls>(__tpls)...); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: constexpr tuple<_Elements&...> +16166: tie(_Elements&... __args) noexcept +16166: { return tuple<_Elements&...>(__args...); } +16166: +16166: +16166: template +16166: +16166: inline +16166: +16166: +16166: typename enable_if<__and_<__is_swappable<_Elements>...>::value +16166: >::type +16166: +16166: +16166: +16166: swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: # 2818 "/usr/include/c++/14/tuple" 3 +16166: template +16166: +16166: typename enable_if...>::value>::type +16166: swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct _Swallow_assign +16166: { +16166: template +16166: constexpr const _Swallow_assign& +16166: operator=(const _Tp&) const +16166: { return *this; } +16166: }; +16166: # 2853 "/usr/include/c++/14/tuple" 3 +16166: inline constexpr _Swallow_assign ignore{}; +16166: +16166: +16166: template +16166: struct uses_allocator, _Alloc> : true_type { }; +16166: # 2868 "/usr/include/c++/14/tuple" 3 +16166: template +16166: template +16166: +16166: inline +16166: pair<_T1, _T2>:: +16166: pair(piecewise_construct_t, +16166: tuple<_Args1...> __first, tuple<_Args2...> __second) +16166: : pair(__first, __second, +16166: typename _Build_index_tuple::__type(), +16166: typename _Build_index_tuple::__type()) +16166: { } +16166: +16166: template +16166: template +16166: inline +16166: pair<_T1, _T2>:: +16166: pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, +16166: _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) +16166: : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), +16166: second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template class _Trait, typename _Tp, typename _Tuple> +16166: inline constexpr bool __unpack_std_tuple = false; +16166: +16166: template class _Trait, typename _Tp, typename... _Up> +16166: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, tuple<_Up...>> +16166: = _Trait<_Tp, _Up...>::value; +16166: +16166: template class _Trait, typename _Tp, typename... _Up> +16166: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, tuple<_Up...>&> +16166: = _Trait<_Tp, _Up&...>::value; +16166: +16166: template class _Trait, typename _Tp, typename... _Up> +16166: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, const tuple<_Up...>> +16166: = _Trait<_Tp, const _Up...>::value; +16166: +16166: template class _Trait, typename _Tp, typename... _Up> +16166: inline constexpr bool __unpack_std_tuple<_Trait, _Tp, const tuple<_Up...>&> +16166: = _Trait<_Tp, const _Up&...>::value; +16166: +16166: +16166: +16166: template +16166: constexpr decltype(auto) +16166: __apply_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Idx...>) +16166: { +16166: return std::__invoke(std::forward<_Fn>(__f), +16166: std::get<_Idx>(std::forward<_Tuple>(__t))...); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: constexpr decltype(auto) +16166: apply(_Fn&& __f, _Tuple&& __t) +16166: noexcept(__unpack_std_tuple) +16166: { +16166: using _Indices +16166: = make_index_sequence>>; +16166: return std::__apply_impl(std::forward<_Fn>(__f), +16166: std::forward<_Tuple>(__t), +16166: _Indices{}); +16166: } +16166: +16166: +16166: +16166: template +16166: constexpr _Tp +16166: __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>) +16166: { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: constexpr _Tp +16166: make_from_tuple(_Tuple&& __t) +16166: noexcept(__unpack_std_tuple) +16166: { +16166: constexpr size_t __n = tuple_size_v>; +16166: +16166: if constexpr (__n == 1) +16166: { +16166: using _Elt = decltype(std::get<0>(std::declval<_Tuple>())); +16166: static_assert(!__reference_constructs_from_temporary(_Tp, _Elt)); +16166: } +16166: +16166: return __make_from_tuple_impl<_Tp>(std::forward<_Tuple>(__t), +16166: make_index_sequence<__n>{}); +16166: } +16166: # 3030 "/usr/include/c++/14/tuple" 3 +16166: +16166: } +16166: # 48 "/usr/include/c++/14/bits/memory_resource.h" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: class memory_resource +16166: { +16166: static constexpr size_t _S_max_align = alignof(max_align_t); +16166: +16166: public: +16166: memory_resource() = default; +16166: memory_resource(const memory_resource&) = default; +16166: virtual ~memory_resource(); +16166: +16166: memory_resource& operator=(const memory_resource&) = default; +16166: +16166: [[nodiscard]] +16166: void* +16166: allocate(size_t __bytes, size_t __alignment = _S_max_align) +16166: __attribute__((__returns_nonnull__,__alloc_size__(2),__alloc_align__(3))) +16166: { return ::operator new(__bytes, do_allocate(__bytes, __alignment)); } +16166: +16166: void +16166: deallocate(void* __p, size_t __bytes, size_t __alignment = _S_max_align) +16166: __attribute__((__nonnull__)) +16166: { return do_deallocate(__p, __bytes, __alignment); } +16166: +16166: [[nodiscard]] +16166: bool +16166: is_equal(const memory_resource& __other) const noexcept +16166: { return do_is_equal(__other); } +16166: +16166: private: +16166: virtual void* +16166: do_allocate(size_t __bytes, size_t __alignment) = 0; +16166: +16166: virtual void +16166: do_deallocate(void* __p, size_t __bytes, size_t __alignment) = 0; +16166: +16166: virtual bool +16166: do_is_equal(const memory_resource& __other) const noexcept = 0; +16166: }; +16166: +16166: [[nodiscard]] +16166: inline bool +16166: operator==(const memory_resource& __a, const memory_resource& __b) noexcept +16166: { return &__a == &__b || __a.is_equal(__b); } +16166: +16166: +16166: [[nodiscard]] +16166: inline bool +16166: operator!=(const memory_resource& __a, const memory_resource& __b) noexcept +16166: { return !(__a == __b); } +16166: # 119 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: template +16166: class polymorphic_allocator +16166: { +16166: +16166: +16166: template +16166: struct __not_pair { using type = void; }; +16166: +16166: template +16166: struct __not_pair> { }; +16166: +16166: public: +16166: using value_type = _Tp; +16166: +16166: polymorphic_allocator() noexcept +16166: { +16166: extern memory_resource* get_default_resource() noexcept +16166: __attribute__((__returns_nonnull__)); +16166: _M_resource = get_default_resource(); +16166: } +16166: +16166: polymorphic_allocator(memory_resource* __r) noexcept +16166: __attribute__((__nonnull__)) +16166: : _M_resource(__r) +16166: { ; } +16166: +16166: polymorphic_allocator(const polymorphic_allocator& __other) = default; +16166: +16166: template +16166: polymorphic_allocator(const polymorphic_allocator<_Up>& __x) noexcept +16166: : _M_resource(__x.resource()) +16166: { } +16166: +16166: polymorphic_allocator& +16166: operator=(const polymorphic_allocator&) = delete; +16166: +16166: [[nodiscard]] +16166: _Tp* +16166: allocate(size_t __n) +16166: __attribute__((__returns_nonnull__)) +16166: { +16166: if ((__gnu_cxx::__int_traits::__max / sizeof(_Tp)) < __n) +16166: std::__throw_bad_array_new_length(); +16166: return static_cast<_Tp*>(_M_resource->allocate(__n * sizeof(_Tp), +16166: alignof(_Tp))); +16166: } +16166: +16166: void +16166: deallocate(_Tp* __p, size_t __n) noexcept +16166: __attribute__((__nonnull__)) +16166: { _M_resource->deallocate(__p, __n * sizeof(_Tp), alignof(_Tp)); } +16166: # 224 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: template +16166: __attribute__((__nonnull__)) +16166: typename __not_pair<_Tp1>::type +16166: construct(_Tp1* __p, _Args&&... __args) +16166: { +16166: +16166: +16166: using __use_tag +16166: = std::__uses_alloc_t<_Tp1, polymorphic_allocator, _Args...>; +16166: if constexpr (is_base_of_v<__uses_alloc0, __use_tag>) +16166: ::new(__p) _Tp1(std::forward<_Args>(__args)...); +16166: else if constexpr (is_base_of_v<__uses_alloc1_, __use_tag>) +16166: ::new(__p) _Tp1(allocator_arg, *this, +16166: std::forward<_Args>(__args)...); +16166: else +16166: ::new(__p) _Tp1(std::forward<_Args>(__args)..., *this); +16166: } +16166: +16166: template +16166: __attribute__((__nonnull__)) +16166: void +16166: construct(pair<_Tp1, _Tp2>* __p, piecewise_construct_t, +16166: tuple<_Args1...> __x, tuple<_Args2...> __y) +16166: { +16166: auto __x_tag = +16166: __use_alloc<_Tp1, polymorphic_allocator, _Args1...>(*this); +16166: auto __y_tag = +16166: __use_alloc<_Tp2, polymorphic_allocator, _Args2...>(*this); +16166: index_sequence_for<_Args1...> __x_i; +16166: index_sequence_for<_Args2...> __y_i; +16166: +16166: ::new(__p) pair<_Tp1, _Tp2>(piecewise_construct, +16166: _S_construct_p(__x_tag, __x_i, __x), +16166: _S_construct_p(__y_tag, __y_i, __y)); +16166: } +16166: +16166: template +16166: __attribute__((__nonnull__)) +16166: void +16166: construct(pair<_Tp1, _Tp2>* __p) +16166: { this->construct(__p, piecewise_construct, tuple<>(), tuple<>()); } +16166: +16166: template +16166: __attribute__((__nonnull__)) +16166: void +16166: construct(pair<_Tp1, _Tp2>* __p, _Up&& __x, _Vp&& __y) +16166: { +16166: this->construct(__p, piecewise_construct, +16166: std::forward_as_tuple(std::forward<_Up>(__x)), +16166: std::forward_as_tuple(std::forward<_Vp>(__y))); +16166: } +16166: +16166: template +16166: __attribute__((__nonnull__)) +16166: void +16166: construct(pair<_Tp1, _Tp2>* __p, const std::pair<_Up, _Vp>& __pr) +16166: { +16166: this->construct(__p, piecewise_construct, +16166: std::forward_as_tuple(__pr.first), +16166: std::forward_as_tuple(__pr.second)); +16166: } +16166: +16166: template +16166: __attribute__((__nonnull__)) +16166: void +16166: construct(pair<_Tp1, _Tp2>* __p, pair<_Up, _Vp>&& __pr) +16166: { +16166: this->construct(__p, piecewise_construct, +16166: std::forward_as_tuple(std::forward<_Up>(__pr.first)), +16166: std::forward_as_tuple(std::forward<_Vp>(__pr.second))); +16166: } +16166: # 307 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: template +16166: __attribute__((__nonnull__)) +16166: void +16166: destroy(_Up* __p) +16166: { __p->~_Up(); } +16166: +16166: polymorphic_allocator +16166: select_on_container_copy_construction() const noexcept +16166: { return polymorphic_allocator(); } +16166: +16166: memory_resource* +16166: resource() const noexcept +16166: __attribute__((__returns_nonnull__)) +16166: { return _M_resource; } +16166: +16166: +16166: +16166: [[nodiscard]] +16166: friend bool +16166: operator==(const polymorphic_allocator& __a, +16166: const polymorphic_allocator& __b) noexcept +16166: { return *__a.resource() == *__b.resource(); } +16166: +16166: +16166: [[nodiscard]] +16166: friend bool +16166: operator!=(const polymorphic_allocator& __a, +16166: const polymorphic_allocator& __b) noexcept +16166: { return !(__a == __b); } +16166: +16166: +16166: private: +16166: +16166: using __uses_alloc1_ = __uses_alloc1; +16166: using __uses_alloc2_ = __uses_alloc2; +16166: +16166: template +16166: static tuple<_Args&&...> +16166: _S_construct_p(__uses_alloc0, _Ind, tuple<_Args...>& __t) +16166: { return std::move(__t); } +16166: +16166: template +16166: static tuple +16166: _S_construct_p(__uses_alloc1_ __ua, index_sequence<_Ind...>, +16166: tuple<_Args...>& __t) +16166: { +16166: return { +16166: allocator_arg, *__ua._M_a, std::get<_Ind>(std::move(__t))... +16166: }; +16166: } +16166: +16166: template +16166: static tuple<_Args&&..., polymorphic_allocator> +16166: _S_construct_p(__uses_alloc2_ __ua, index_sequence<_Ind...>, +16166: tuple<_Args...>& __t) +16166: { return { std::get<_Ind>(std::move(__t))..., *__ua._M_a }; } +16166: +16166: +16166: memory_resource* _M_resource; +16166: }; +16166: +16166: template +16166: [[nodiscard]] +16166: inline bool +16166: operator==(const polymorphic_allocator<_Tp1>& __a, +16166: const polymorphic_allocator<_Tp2>& __b) noexcept +16166: { return *__a.resource() == *__b.resource(); } +16166: +16166: +16166: template +16166: [[nodiscard]] +16166: inline bool +16166: operator!=(const polymorphic_allocator<_Tp1>& __a, +16166: const polymorphic_allocator<_Tp2>& __b) noexcept +16166: { return !(__a == __b); } +16166: +16166: +16166: } +16166: +16166: template struct allocator_traits; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct allocator_traits> +16166: { +16166: +16166: using allocator_type = pmr::polymorphic_allocator<_Tp>; +16166: +16166: +16166: using value_type = _Tp; +16166: +16166: +16166: using pointer = _Tp*; +16166: +16166: +16166: using const_pointer = const _Tp*; +16166: +16166: +16166: using void_pointer = void*; +16166: +16166: +16166: using const_void_pointer = const void*; +16166: +16166: +16166: using difference_type = std::ptrdiff_t; +16166: +16166: +16166: using size_type = std::size_t; +16166: +16166: +16166: +16166: +16166: +16166: using propagate_on_container_copy_assignment = false_type; +16166: using propagate_on_container_move_assignment = false_type; +16166: using propagate_on_container_swap = false_type; +16166: +16166: static allocator_type +16166: select_on_container_copy_construction(const allocator_type&) noexcept +16166: { return allocator_type(); } +16166: +16166: +16166: +16166: using is_always_equal = false_type; +16166: +16166: template +16166: using rebind_alloc = pmr::polymorphic_allocator<_Up>; +16166: +16166: template +16166: using rebind_traits = allocator_traits>; +16166: # 450 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: [[nodiscard]] static pointer +16166: allocate(allocator_type& __a, size_type __n) +16166: { return __a.allocate(__n); } +16166: # 465 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: [[nodiscard]] static pointer +16166: allocate(allocator_type& __a, size_type __n, const_void_pointer) +16166: { return __a.allocate(__n); } +16166: # 477 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: static void +16166: deallocate(allocator_type& __a, pointer __p, size_type __n) +16166: { __a.deallocate(__p, __n); } +16166: # 492 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: template +16166: static void +16166: construct(allocator_type& __a, _Up* __p, _Args&&... __args) +16166: { __a.construct(__p, std::forward<_Args>(__args)...); } +16166: # 504 "/usr/include/c++/14/bits/memory_resource.h" 3 +16166: template +16166: static void +16166: destroy(allocator_type&, _Up* __p) +16166: noexcept(is_nothrow_destructible<_Up>::value) +16166: { __p->~_Up(); } +16166: +16166: +16166: +16166: +16166: +16166: static size_type +16166: max_size(const allocator_type&) noexcept +16166: { return size_t(-1) / sizeof(value_type); } +16166: }; +16166: +16166: +16166: } +16166: # 82 "/usr/include/c++/14/deque" 2 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr +16166: { +16166: template +16166: using deque = std::deque<_Tp, polymorphic_allocator<_Tp>>; +16166: } +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/usr/include/c++/14/functional" 1 3 +16166: # 46 "/usr/include/c++/14/functional" 3 +16166: +16166: # 47 "/usr/include/c++/14/functional" 3 +16166: # 55 "/usr/include/c++/14/functional" 3 +16166: # 1 "/usr/include/c++/14/bits/functional_hash.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/functional_hash.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/functional_hash.h" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/hash_bytes.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/hash_bytes.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/hash_bytes.h" 3 +16166: +16166: +16166: +16166: namespace std +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t +16166: _Hash_bytes(const void* __ptr, size_t __len, size_t __seed); +16166: +16166: +16166: +16166: +16166: +16166: size_t +16166: _Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); +16166: +16166: +16166: } +16166: # 37 "/usr/include/c++/14/bits/functional_hash.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 50 "/usr/include/c++/14/bits/functional_hash.h" 3 +16166: template +16166: struct __hash_base +16166: { +16166: typedef _Result result_type [[__deprecated__]]; +16166: typedef _Arg argument_type [[__deprecated__]]; +16166: }; +16166: +16166: +16166: template +16166: struct hash; +16166: +16166: template +16166: struct __poison_hash +16166: { +16166: static constexpr bool __enable_hash_call = false; +16166: private: +16166: +16166: __poison_hash(__poison_hash&&); +16166: ~__poison_hash(); +16166: }; +16166: +16166: template +16166: struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> +16166: { +16166: static constexpr bool __enable_hash_call = true; +16166: }; +16166: +16166: +16166: template::value> +16166: struct __hash_enum +16166: { +16166: private: +16166: +16166: __hash_enum(__hash_enum&&); +16166: ~__hash_enum(); +16166: }; +16166: +16166: +16166: template +16166: struct __hash_enum<_Tp, true> : public __hash_base +16166: { +16166: size_t +16166: operator()(_Tp __val) const noexcept +16166: { +16166: using __type = typename underlying_type<_Tp>::type; +16166: return hash<__type>{}(static_cast<__type>(__val)); +16166: } +16166: }; +16166: +16166: +16166: +16166: template +16166: struct hash : __hash_enum<_Tp> +16166: { }; +16166: +16166: +16166: template +16166: struct hash<_Tp*> : public __hash_base +16166: { +16166: size_t +16166: operator()(_Tp* __p) const noexcept +16166: { return reinterpret_cast(__p); } +16166: }; +16166: # 125 "/usr/include/c++/14/bits/functional_hash.h" 3 +16166: template<> struct hash : public __hash_base { size_t operator()(bool __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(char __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(signed char __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(unsigned char __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(wchar_t __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(char16_t __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(char32_t __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(short __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(int __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(long __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(long long __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(unsigned short __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(unsigned int __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(unsigned long __val) const noexcept { return static_cast(__val); } }; +16166: +16166: +16166: template<> struct hash : public __hash_base { size_t operator()(unsigned long long __val) const noexcept { return static_cast(__val); } }; +16166: # 201 "/usr/include/c++/14/bits/functional_hash.h" 3 +16166: struct _Hash_impl +16166: { +16166: static size_t +16166: hash(const void* __ptr, size_t __clength, +16166: size_t __seed = static_cast(0xc70f6907UL)) +16166: { return _Hash_bytes(__ptr, __clength, __seed); } +16166: +16166: template +16166: static size_t +16166: hash(const _Tp& __val) +16166: { return hash(&__val, sizeof(__val)); } +16166: +16166: template +16166: static size_t +16166: __hash_combine(const _Tp& __val, size_t __hash) +16166: { return hash(&__val, sizeof(__val), __hash); } +16166: }; +16166: +16166: +16166: struct _Fnv_hash_impl +16166: { +16166: static size_t +16166: hash(const void* __ptr, size_t __clength, +16166: size_t __seed = static_cast(2166136261UL)) +16166: { return _Fnv_hash_bytes(__ptr, __clength, __seed); } +16166: +16166: template +16166: static size_t +16166: hash(const _Tp& __val) +16166: { return hash(&__val, sizeof(__val)); } +16166: +16166: template +16166: static size_t +16166: __hash_combine(const _Tp& __val, size_t __hash) +16166: { return hash(&__val, sizeof(__val), __hash); } +16166: }; +16166: +16166: +16166: template<> +16166: struct hash : public __hash_base +16166: { +16166: size_t +16166: operator()(float __val) const noexcept +16166: { +16166: +16166: return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; +16166: } +16166: }; +16166: +16166: +16166: template<> +16166: struct hash : public __hash_base +16166: { +16166: size_t +16166: operator()(double __val) const noexcept +16166: { +16166: +16166: return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; +16166: } +16166: }; +16166: +16166: +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: __attribute__ ((__pure__)) size_t +16166: operator()(long double __val) const noexcept; +16166: }; +16166: +16166: +16166: template<> +16166: struct hash : public __hash_base +16166: { +16166: size_t +16166: operator()(nullptr_t) const noexcept +16166: { return 0; } +16166: }; +16166: # 294 "/usr/include/c++/14/bits/functional_hash.h" 3 +16166: template +16166: struct __is_fast_hash : public std::true_type +16166: { }; +16166: +16166: template<> +16166: struct __is_fast_hash> : public std::false_type +16166: { }; +16166: +16166: +16166: } +16166: # 56 "/usr/include/c++/14/functional" 2 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/std_function.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/std_function.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/std_function.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/typeinfo" 1 3 +16166: # 32 "/usr/include/c++/14/typeinfo" 3 +16166: +16166: # 33 "/usr/include/c++/14/typeinfo" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 41 "/usr/include/c++/14/typeinfo" 2 3 +16166: +16166: #pragma GCC visibility push(default) +16166: +16166: extern "C++" { +16166: +16166: namespace __cxxabiv1 +16166: { +16166: class __class_type_info; +16166: } +16166: # 83 "/usr/include/c++/14/typeinfo" 3 +16166: namespace std +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: class type_info +16166: { +16166: public: +16166: +16166: +16166: +16166: +16166: virtual ~type_info(); +16166: +16166: +16166: +16166: const char* name() const noexcept +16166: { return __name[0] == '*' ? __name + 1 : __name; } +16166: +16166: +16166: +16166: bool before(const type_info& __arg) const noexcept; +16166: +16166: +16166: bool operator==(const type_info& __arg) const noexcept; +16166: +16166: +16166: bool operator!=(const type_info& __arg) const noexcept +16166: { return !operator==(__arg); } +16166: +16166: +16166: +16166: size_t hash_code() const noexcept +16166: { +16166: +16166: return _Hash_bytes(name(), __builtin_strlen(name()), +16166: static_cast(0xc70f6907UL)); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: virtual bool __is_pointer_p() const; +16166: +16166: +16166: virtual bool __is_function_p() const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, +16166: unsigned __outer) const; +16166: +16166: +16166: virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, +16166: void **__obj_ptr) const; +16166: +16166: protected: +16166: const char *__name; +16166: +16166: explicit type_info(const char *__n): __name(__n) { } +16166: +16166: private: +16166: +16166: +16166: type_info& operator=(const type_info&) = delete; +16166: type_info(const type_info&) = delete; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool __equal(const type_info&) const noexcept; +16166: +16166: }; +16166: # 219 "/usr/include/c++/14/typeinfo" 3 +16166: class bad_cast : public exception +16166: { +16166: public: +16166: bad_cast() noexcept { } +16166: +16166: +16166: +16166: virtual ~bad_cast() noexcept; +16166: +16166: +16166: virtual const char* what() const noexcept; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: class bad_typeid : public exception +16166: { +16166: public: +16166: bad_typeid () noexcept { } +16166: +16166: +16166: +16166: virtual ~bad_typeid() noexcept; +16166: +16166: +16166: virtual const char* what() const noexcept; +16166: }; +16166: } +16166: +16166: } +16166: +16166: #pragma GCC visibility pop +16166: # 41 "/usr/include/c++/14/bits/std_function.h" 2 3 +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class bad_function_call : public std::exception +16166: { +16166: public: +16166: virtual ~bad_function_call() noexcept; +16166: +16166: const char* what() const noexcept; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __is_location_invariant +16166: : is_trivially_copyable<_Tp>::type +16166: { }; +16166: +16166: class _Undefined_class; +16166: +16166: union _Nocopy_types +16166: { +16166: void* _M_object; +16166: const void* _M_const_object; +16166: void (*_M_function_pointer)(); +16166: void (_Undefined_class::*_M_member_pointer)(); +16166: }; +16166: +16166: union [[gnu::may_alias]] _Any_data +16166: { +16166: void* _M_access() noexcept { return &_M_pod_data[0]; } +16166: const void* _M_access() const noexcept { return &_M_pod_data[0]; } +16166: +16166: template +16166: _Tp& +16166: _M_access() noexcept +16166: { return *static_cast<_Tp*>(_M_access()); } +16166: +16166: template +16166: const _Tp& +16166: _M_access() const noexcept +16166: { return *static_cast(_M_access()); } +16166: +16166: _Nocopy_types _M_unused; +16166: char _M_pod_data[sizeof(_Nocopy_types)]; +16166: }; +16166: +16166: enum _Manager_operation +16166: { +16166: __get_type_info, +16166: __get_functor_ptr, +16166: __clone_functor, +16166: __destroy_functor +16166: }; +16166: +16166: template +16166: class function; +16166: +16166: +16166: class _Function_base +16166: { +16166: public: +16166: static const size_t _M_max_size = sizeof(_Nocopy_types); +16166: static const size_t _M_max_align = __alignof__(_Nocopy_types); +16166: +16166: template +16166: class _Base_manager +16166: { +16166: protected: +16166: static const bool __stored_locally = +16166: (__is_location_invariant<_Functor>::value +16166: && sizeof(_Functor) <= _M_max_size +16166: && __alignof__(_Functor) <= _M_max_align +16166: && (_M_max_align % __alignof__(_Functor) == 0)); +16166: +16166: using _Local_storage = integral_constant; +16166: +16166: +16166: static _Functor* +16166: _M_get_pointer(const _Any_data& __source) noexcept +16166: { +16166: if constexpr (__stored_locally) +16166: { +16166: const _Functor& __f = __source._M_access<_Functor>(); +16166: return const_cast<_Functor*>(std::__addressof(__f)); +16166: } +16166: else +16166: return __source._M_access<_Functor*>(); +16166: } +16166: +16166: private: +16166: +16166: +16166: template +16166: static void +16166: _M_create(_Any_data& __dest, _Fn&& __f, true_type) +16166: { +16166: ::new (__dest._M_access()) _Functor(std::forward<_Fn>(__f)); +16166: } +16166: +16166: +16166: template +16166: static void +16166: _M_create(_Any_data& __dest, _Fn&& __f, false_type) +16166: { +16166: __dest._M_access<_Functor*>() +16166: = new _Functor(std::forward<_Fn>(__f)); +16166: } +16166: +16166: +16166: static void +16166: _M_destroy(_Any_data& __victim, true_type) +16166: { +16166: __victim._M_access<_Functor>().~_Functor(); +16166: } +16166: +16166: +16166: static void +16166: _M_destroy(_Any_data& __victim, false_type) +16166: { +16166: delete __victim._M_access<_Functor*>(); +16166: } +16166: +16166: public: +16166: static bool +16166: _M_manager(_Any_data& __dest, const _Any_data& __source, +16166: _Manager_operation __op) +16166: { +16166: switch (__op) +16166: { +16166: case __get_type_info: +16166: +16166: __dest._M_access() = &typeid(_Functor); +16166: +16166: +16166: +16166: break; +16166: +16166: case __get_functor_ptr: +16166: __dest._M_access<_Functor*>() = _M_get_pointer(__source); +16166: break; +16166: +16166: case __clone_functor: +16166: _M_init_functor(__dest, +16166: *const_cast(_M_get_pointer(__source))); +16166: break; +16166: +16166: case __destroy_functor: +16166: _M_destroy(__dest, _Local_storage()); +16166: break; +16166: } +16166: return false; +16166: } +16166: +16166: template +16166: static void +16166: _M_init_functor(_Any_data& __functor, _Fn&& __f) +16166: noexcept(__and_<_Local_storage, +16166: is_nothrow_constructible<_Functor, _Fn>>::value) +16166: { +16166: _M_create(__functor, std::forward<_Fn>(__f), _Local_storage()); +16166: } +16166: +16166: template +16166: static bool +16166: _M_not_empty_function(const function<_Signature>& __f) noexcept +16166: { return static_cast(__f); } +16166: +16166: template +16166: static bool +16166: _M_not_empty_function(_Tp* __fp) noexcept +16166: { return __fp != nullptr; } +16166: +16166: template +16166: static bool +16166: _M_not_empty_function(_Tp _Class::* __mp) noexcept +16166: { return __mp != nullptr; } +16166: +16166: template +16166: static bool +16166: _M_not_empty_function(const _Tp&) noexcept +16166: { return true; } +16166: }; +16166: +16166: _Function_base() = default; +16166: +16166: ~_Function_base() +16166: { +16166: if (_M_manager) +16166: _M_manager(_M_functor, _M_functor, __destroy_functor); +16166: } +16166: +16166: bool _M_empty() const { return !_M_manager; } +16166: +16166: using _Manager_type +16166: = bool (*)(_Any_data&, const _Any_data&, _Manager_operation); +16166: +16166: _Any_data _M_functor{}; +16166: _Manager_type _M_manager{}; +16166: }; +16166: +16166: template +16166: class _Function_handler; +16166: +16166: template +16166: class _Function_handler<_Res(_ArgTypes...), _Functor> +16166: : public _Function_base::_Base_manager<_Functor> +16166: { +16166: using _Base = _Function_base::_Base_manager<_Functor>; +16166: +16166: public: +16166: static bool +16166: _M_manager(_Any_data& __dest, const _Any_data& __source, +16166: _Manager_operation __op) +16166: { +16166: switch (__op) +16166: { +16166: +16166: case __get_type_info: +16166: __dest._M_access() = &typeid(_Functor); +16166: break; +16166: +16166: case __get_functor_ptr: +16166: __dest._M_access<_Functor*>() = _Base::_M_get_pointer(__source); +16166: break; +16166: +16166: default: +16166: _Base::_M_manager(__dest, __source, __op); +16166: } +16166: return false; +16166: } +16166: +16166: static _Res +16166: _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args) +16166: { +16166: return std::__invoke_r<_Res>(*_Base::_M_get_pointer(__functor), +16166: std::forward<_ArgTypes>(__args)...); +16166: } +16166: +16166: template +16166: static constexpr bool +16166: _S_nothrow_init() noexcept +16166: { +16166: return __and_>::value; +16166: } +16166: }; +16166: +16166: +16166: template<> +16166: class _Function_handler +16166: { +16166: public: +16166: static bool +16166: _M_manager(_Any_data&, const _Any_data&, _Manager_operation) +16166: { return false; } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template::value> +16166: struct _Target_handler +16166: : _Function_handler<_Signature, typename remove_cv<_Functor>::type> +16166: { }; +16166: +16166: template +16166: struct _Target_handler<_Signature, _Functor, false> +16166: : _Function_handler +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class function<_Res(_ArgTypes...)> +16166: : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, +16166: private _Function_base +16166: { +16166: +16166: +16166: template, function>::value> +16166: using _Decay_t +16166: = typename __enable_if_t>::type; +16166: +16166: template, +16166: typename _Res2 = __invoke_result<_DFunc&, _ArgTypes...>> +16166: struct _Callable +16166: : __is_invocable_impl<_Res2, _Res>::type +16166: { }; +16166: +16166: template +16166: using _Requires = __enable_if_t<_Cond::value, _Tp>; +16166: +16166: template +16166: using _Handler +16166: = _Function_handler<_Res(_ArgTypes...), __decay_t<_Functor>>; +16166: +16166: public: +16166: typedef _Res result_type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: function() noexcept +16166: : _Function_base() { } +16166: +16166: +16166: +16166: +16166: +16166: function(nullptr_t) noexcept +16166: : _Function_base() { } +16166: # 386 "/usr/include/c++/14/bits/std_function.h" 3 +16166: function(const function& __x) +16166: : _Function_base() +16166: { +16166: if (static_cast(__x)) +16166: { +16166: __x._M_manager(_M_functor, __x._M_functor, __clone_functor); +16166: _M_invoker = __x._M_invoker; +16166: _M_manager = __x._M_manager; +16166: } +16166: } +16166: # 404 "/usr/include/c++/14/bits/std_function.h" 3 +16166: function(function&& __x) noexcept +16166: : _Function_base(), _M_invoker(__x._M_invoker) +16166: { +16166: if (static_cast(__x)) +16166: { +16166: _M_functor = __x._M_functor; +16166: _M_manager = __x._M_manager; +16166: __x._M_manager = nullptr; +16166: __x._M_invoker = nullptr; +16166: } +16166: } +16166: # 433 "/usr/include/c++/14/bits/std_function.h" 3 +16166: template>> +16166: function(_Functor&& __f) +16166: noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>()) +16166: : _Function_base() +16166: { +16166: static_assert(is_copy_constructible<__decay_t<_Functor>>::value, +16166: "std::function target must be copy-constructible"); +16166: static_assert(is_constructible<__decay_t<_Functor>, _Functor>::value, +16166: "std::function target must be constructible from the " +16166: "constructor argument"); +16166: +16166: using _My_handler = _Handler<_Functor>; +16166: +16166: if (_My_handler::_M_not_empty_function(__f)) +16166: { +16166: _My_handler::_M_init_functor(_M_functor, +16166: std::forward<_Functor>(__f)); +16166: _M_invoker = &_My_handler::_M_invoke; +16166: _M_manager = &_My_handler::_M_manager; +16166: } +16166: } +16166: # 468 "/usr/include/c++/14/bits/std_function.h" 3 +16166: function& +16166: operator=(const function& __x) +16166: { +16166: function(__x).swap(*this); +16166: return *this; +16166: } +16166: # 486 "/usr/include/c++/14/bits/std_function.h" 3 +16166: function& +16166: operator=(function&& __x) noexcept +16166: { +16166: function(std::move(__x)).swap(*this); +16166: return *this; +16166: } +16166: # 500 "/usr/include/c++/14/bits/std_function.h" 3 +16166: function& +16166: operator=(nullptr_t) noexcept +16166: { +16166: if (_M_manager) +16166: { +16166: _M_manager(_M_functor, _M_functor, __destroy_functor); +16166: _M_manager = nullptr; +16166: _M_invoker = nullptr; +16166: } +16166: return *this; +16166: } +16166: # 529 "/usr/include/c++/14/bits/std_function.h" 3 +16166: template +16166: _Requires<_Callable<_Functor>, function&> +16166: operator=(_Functor&& __f) +16166: noexcept(_Handler<_Functor>::template _S_nothrow_init<_Functor>()) +16166: { +16166: function(std::forward<_Functor>(__f)).swap(*this); +16166: return *this; +16166: } +16166: +16166: +16166: template +16166: function& +16166: operator=(reference_wrapper<_Functor> __f) noexcept +16166: { +16166: function(__f).swap(*this); +16166: return *this; +16166: } +16166: # 556 "/usr/include/c++/14/bits/std_function.h" 3 +16166: void swap(function& __x) noexcept +16166: { +16166: std::swap(_M_functor, __x._M_functor); +16166: std::swap(_M_manager, __x._M_manager); +16166: std::swap(_M_invoker, __x._M_invoker); +16166: } +16166: # 573 "/usr/include/c++/14/bits/std_function.h" 3 +16166: explicit operator bool() const noexcept +16166: { return !_M_empty(); } +16166: # 586 "/usr/include/c++/14/bits/std_function.h" 3 +16166: _Res +16166: operator()(_ArgTypes... __args) const +16166: { +16166: if (_M_empty()) +16166: __throw_bad_function_call(); +16166: return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...); +16166: } +16166: # 605 "/usr/include/c++/14/bits/std_function.h" 3 +16166: const type_info& +16166: target_type() const noexcept +16166: { +16166: if (_M_manager) +16166: { +16166: _Any_data __typeinfo_result; +16166: _M_manager(__typeinfo_result, _M_functor, __get_type_info); +16166: if (auto __ti = __typeinfo_result._M_access()) +16166: return *__ti; +16166: } +16166: return typeid(void); +16166: } +16166: # 630 "/usr/include/c++/14/bits/std_function.h" 3 +16166: template +16166: _Functor* +16166: target() noexcept +16166: { +16166: const function* __const_this = this; +16166: const _Functor* __func = __const_this->template target<_Functor>(); +16166: +16166: +16166: return *const_cast<_Functor**>(&__func); +16166: } +16166: +16166: template +16166: const _Functor* +16166: target() const noexcept +16166: { +16166: if constexpr (is_object<_Functor>::value) +16166: { +16166: +16166: +16166: using _Handler = _Target_handler<_Res(_ArgTypes...), _Functor>; +16166: +16166: if (_M_manager == &_Handler::_M_manager +16166: +16166: || (_M_manager && typeid(_Functor) == target_type()) +16166: +16166: ) +16166: { +16166: _Any_data __ptr; +16166: _M_manager(__ptr, _M_functor, __get_functor_ptr); +16166: return __ptr._M_access(); +16166: } +16166: } +16166: return nullptr; +16166: } +16166: +16166: +16166: private: +16166: using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...); +16166: _Invoker_type _M_invoker = nullptr; +16166: }; +16166: +16166: +16166: template +16166: struct __function_guide_helper +16166: { }; +16166: +16166: template +16166: struct __function_guide_helper< +16166: _Res (_Tp::*) (_Args...) noexcept(_Nx) +16166: > +16166: { using type = _Res(_Args...); }; +16166: +16166: template +16166: struct __function_guide_helper< +16166: _Res (_Tp::*) (_Args...) & noexcept(_Nx) +16166: > +16166: { using type = _Res(_Args...); }; +16166: +16166: template +16166: struct __function_guide_helper< +16166: _Res (_Tp::*) (_Args...) const noexcept(_Nx) +16166: > +16166: { using type = _Res(_Args...); }; +16166: +16166: template +16166: struct __function_guide_helper< +16166: _Res (_Tp::*) (_Args...) const & noexcept(_Nx) +16166: > +16166: { using type = _Res(_Args...); }; +16166: # 721 "/usr/include/c++/14/bits/std_function.h" 3 +16166: template +16166: using __function_guide_t = typename __function_guide_helper<_Op>::type; +16166: +16166: +16166: template +16166: function(_Res(*)(_ArgTypes...)) -> function<_Res(_ArgTypes...)>; +16166: +16166: template> +16166: function(_Fn) -> function<_Signature>; +16166: # 741 "/usr/include/c++/14/bits/std_function.h" 3 +16166: template +16166: inline bool +16166: operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept +16166: { return !static_cast(__f); } +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept +16166: { return !static_cast(__f); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const function<_Res(_Args...)>& __f, nullptr_t) noexcept +16166: { return static_cast(__f); } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(nullptr_t, const function<_Res(_Args...)>& __f) noexcept +16166: { return static_cast(__f); } +16166: # 780 "/usr/include/c++/14/bits/std_function.h" 3 +16166: template +16166: inline void +16166: swap(function<_Res(_Args...)>& __x, function<_Res(_Args...)>& __y) noexcept +16166: { __x.swap(__y); } +16166: +16166: +16166: namespace __detail::__variant +16166: { +16166: template struct _Never_valueless_alt; +16166: +16166: +16166: +16166: template +16166: struct _Never_valueless_alt> +16166: : std::true_type +16166: { }; +16166: } +16166: +16166: +16166: +16166: } +16166: # 60 "/usr/include/c++/14/functional" 2 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/unordered_map" 1 3 +16166: # 32 "/usr/include/c++/14/unordered_map" 3 +16166: +16166: # 33 "/usr/include/c++/14/unordered_map" 3 +16166: # 41 "/usr/include/c++/14/unordered_map" 3 +16166: # 1 "/usr/include/c++/14/bits/unordered_map.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: # 1 "/usr/include/c++/14/bits/hashtable.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/hashtable.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/hashtable.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/hashtable_policy.h" 1 3 +16166: # 38 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +16166: # 1 "/usr/include/c++/14/ext/aligned_buffer.h" 1 3 +16166: # 32 "/usr/include/c++/14/ext/aligned_buffer.h" 3 +16166: +16166: # 33 "/usr/include/c++/14/ext/aligned_buffer.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace __gnu_cxx +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: struct __aligned_membuf +16166: { +16166: +16166: +16166: +16166: +16166: +16166: struct _Tp2 { _Tp _M_t; }; +16166: +16166: alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; +16166: +16166: __aligned_membuf() = default; +16166: +16166: +16166: __aligned_membuf(std::nullptr_t) { } +16166: +16166: void* +16166: _M_addr() noexcept +16166: { return static_cast(&_M_storage); } +16166: +16166: const void* +16166: _M_addr() const noexcept +16166: { return static_cast(&_M_storage); } +16166: +16166: _Tp* +16166: _M_ptr() noexcept +16166: { return static_cast<_Tp*>(_M_addr()); } +16166: +16166: const _Tp* +16166: _M_ptr() const noexcept +16166: { return static_cast(_M_addr()); } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __aligned_buffer +16166: : std::aligned_storage +16166: { +16166: typename +16166: std::aligned_storage::type _M_storage; +16166: +16166: __aligned_buffer() = default; +16166: +16166: +16166: __aligned_buffer(std::nullptr_t) { } +16166: +16166: void* +16166: _M_addr() noexcept +16166: { +16166: return static_cast(&_M_storage); +16166: } +16166: +16166: const void* +16166: _M_addr() const noexcept +16166: { +16166: return static_cast(&_M_storage); +16166: } +16166: +16166: _Tp* +16166: _M_ptr() noexcept +16166: { return static_cast<_Tp*>(_M_addr()); } +16166: +16166: const _Tp* +16166: _M_ptr() const noexcept +16166: { return static_cast(_M_addr()); } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: } +16166: # 39 "/usr/include/c++/14/bits/hashtable_policy.h" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: class _Hashtable; +16166: +16166: namespace __detail +16166: { +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hashtable_base; +16166: +16166: +16166: +16166: template +16166: inline typename std::iterator_traits<_Iterator>::difference_type +16166: __distance_fw(_Iterator __first, _Iterator __last, +16166: std::input_iterator_tag) +16166: { return __first != __last ? 1 : 0; } +16166: +16166: template +16166: inline typename std::iterator_traits<_Iterator>::difference_type +16166: __distance_fw(_Iterator __first, _Iterator __last, +16166: std::forward_iterator_tag) +16166: { return std::distance(__first, __last); } +16166: +16166: template +16166: inline typename std::iterator_traits<_Iterator>::difference_type +16166: __distance_fw(_Iterator __first, _Iterator __last) +16166: { return __distance_fw(__first, __last, +16166: std::__iterator_category(__first)); } +16166: +16166: struct _Identity +16166: { +16166: template +16166: _Tp&& +16166: operator()(_Tp&& __x) const noexcept +16166: { return std::forward<_Tp>(__x); } +16166: }; +16166: +16166: struct _Select1st +16166: { +16166: template +16166: struct __1st_type; +16166: +16166: template +16166: struct __1st_type> +16166: { using type = _Tp; }; +16166: +16166: template +16166: struct __1st_type> +16166: { using type = const _Tp; }; +16166: +16166: template +16166: struct __1st_type<_Pair&> +16166: { using type = typename __1st_type<_Pair>::type&; }; +16166: +16166: template +16166: typename __1st_type<_Tp>::type&& +16166: operator()(_Tp&& __x) const noexcept +16166: { return std::forward<_Tp>(__x).first; } +16166: }; +16166: +16166: template +16166: struct _ConvertToValueType; +16166: +16166: template +16166: struct _ConvertToValueType<_Identity, _Value> +16166: { +16166: template +16166: constexpr _Kt&& +16166: operator()(_Kt&& __k) const noexcept +16166: { return std::forward<_Kt>(__k); } +16166: }; +16166: +16166: template +16166: struct _ConvertToValueType<_Select1st, _Value> +16166: { +16166: constexpr _Value&& +16166: operator()(_Value&& __x) const noexcept +16166: { return std::move(__x); } +16166: +16166: constexpr const _Value& +16166: operator()(const _Value& __x) const noexcept +16166: { return __x; } +16166: +16166: template +16166: constexpr std::pair<_Kt, _Val>&& +16166: operator()(std::pair<_Kt, _Val>&& __x) const noexcept +16166: { return std::move(__x); } +16166: +16166: template +16166: constexpr const std::pair<_Kt, _Val>& +16166: operator()(const std::pair<_Kt, _Val>& __x) const noexcept +16166: { return __x; } +16166: }; +16166: +16166: template +16166: struct _NodeBuilder; +16166: +16166: template<> +16166: struct _NodeBuilder<_Select1st> +16166: { +16166: template +16166: static auto +16166: _S_build(_Kt&& __k, _Arg&& __arg, const _NodeGenerator& __node_gen) +16166: -> typename _NodeGenerator::__node_ptr +16166: { +16166: return __node_gen(std::forward<_Kt>(__k), +16166: std::forward<_Arg>(__arg).second); +16166: } +16166: }; +16166: +16166: template<> +16166: struct _NodeBuilder<_Identity> +16166: { +16166: template +16166: static auto +16166: _S_build(_Kt&& __k, _Arg&&, const _NodeGenerator& __node_gen) +16166: -> typename _NodeGenerator::__node_ptr +16166: { return __node_gen(std::forward<_Kt>(__k)); } +16166: }; +16166: +16166: template +16166: struct _NodePtrGuard +16166: { +16166: _HashtableAlloc& _M_h; +16166: _NodePtr _M_ptr; +16166: +16166: ~_NodePtrGuard() +16166: { +16166: if (_M_ptr) +16166: _M_h._M_deallocate_node_ptr(_M_ptr); +16166: } +16166: }; +16166: +16166: template +16166: struct _Hashtable_alloc; +16166: +16166: +16166: +16166: template +16166: struct _ReuseOrAllocNode +16166: { +16166: private: +16166: using __node_alloc_type = _NodeAlloc; +16166: using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; +16166: using __node_alloc_traits = +16166: typename __hashtable_alloc::__node_alloc_traits; +16166: +16166: public: +16166: using __node_ptr = typename __hashtable_alloc::__node_ptr; +16166: +16166: _ReuseOrAllocNode(__node_ptr __nodes, __hashtable_alloc& __h) +16166: : _M_nodes(__nodes), _M_h(__h) { } +16166: _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; +16166: +16166: ~_ReuseOrAllocNode() +16166: { _M_h._M_deallocate_nodes(_M_nodes); } +16166: +16166: template +16166: __node_ptr +16166: operator()(_Args&&... __args) const +16166: { +16166: if (!_M_nodes) +16166: return _M_h._M_allocate_node(std::forward<_Args>(__args)...); +16166: +16166: __node_ptr __node = _M_nodes; +16166: _M_nodes = _M_nodes->_M_next(); +16166: __node->_M_nxt = nullptr; +16166: auto& __a = _M_h._M_node_allocator(); +16166: __node_alloc_traits::destroy(__a, __node->_M_valptr()); +16166: _NodePtrGuard<__hashtable_alloc, __node_ptr> __guard { _M_h, __node }; +16166: __node_alloc_traits::construct(__a, __node->_M_valptr(), +16166: std::forward<_Args>(__args)...); +16166: __guard._M_ptr = nullptr; +16166: return __node; +16166: } +16166: +16166: private: +16166: mutable __node_ptr _M_nodes; +16166: __hashtable_alloc& _M_h; +16166: }; +16166: +16166: +16166: +16166: template +16166: struct _AllocNode +16166: { +16166: private: +16166: using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; +16166: +16166: public: +16166: using __node_ptr = typename __hashtable_alloc::__node_ptr; +16166: +16166: _AllocNode(__hashtable_alloc& __h) +16166: : _M_h(__h) { } +16166: +16166: template +16166: __node_ptr +16166: operator()(_Args&&... __args) const +16166: { return _M_h._M_allocate_node(std::forward<_Args>(__args)...); } +16166: +16166: private: +16166: __hashtable_alloc& _M_h; +16166: }; +16166: # 285 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +16166: template +16166: struct _Hashtable_traits +16166: { +16166: using __hash_cached = __bool_constant<_Cache_hash_code>; +16166: using __constant_iterators = __bool_constant<_Constant_iterators>; +16166: using __unique_keys = __bool_constant<_Unique_keys>; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hashtable_hash_traits +16166: { +16166: static constexpr std::size_t +16166: __small_size_threshold() noexcept +16166: { return std::__is_fast_hash<_Hash>::value ? 0 : 20; } +16166: }; +16166: # 315 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +16166: struct _Hash_node_base +16166: { +16166: _Hash_node_base* _M_nxt; +16166: +16166: _Hash_node_base() noexcept : _M_nxt() { } +16166: +16166: _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hash_node_value_base +16166: { +16166: typedef _Value value_type; +16166: +16166: __gnu_cxx::__aligned_buffer<_Value> _M_storage; +16166: +16166: [[__gnu__::__always_inline__]] +16166: _Value* +16166: _M_valptr() noexcept +16166: { return _M_storage._M_ptr(); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: const _Value* +16166: _M_valptr() const noexcept +16166: { return _M_storage._M_ptr(); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: _Value& +16166: _M_v() noexcept +16166: { return *_M_valptr(); } +16166: +16166: [[__gnu__::__always_inline__]] +16166: const _Value& +16166: _M_v() const noexcept +16166: { return *_M_valptr(); } +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hash_node_code_cache +16166: { }; +16166: +16166: +16166: +16166: +16166: template<> +16166: struct _Hash_node_code_cache +16166: { std::size_t _M_hash_code; }; +16166: +16166: template +16166: struct _Hash_node_value +16166: : _Hash_node_value_base<_Value> +16166: , _Hash_node_code_cache<_Cache_hash_code> +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hash_node +16166: : _Hash_node_base +16166: , _Hash_node_value<_Value, _Cache_hash_code> +16166: { +16166: _Hash_node* +16166: _M_next() const noexcept +16166: { return static_cast<_Hash_node*>(this->_M_nxt); } +16166: }; +16166: +16166: +16166: template +16166: struct _Node_iterator_base +16166: { +16166: using __node_type = _Hash_node<_Value, _Cache_hash_code>; +16166: +16166: __node_type* _M_cur; +16166: +16166: _Node_iterator_base() : _M_cur(nullptr) { } +16166: _Node_iterator_base(__node_type* __p) noexcept +16166: : _M_cur(__p) { } +16166: +16166: void +16166: _M_incr() noexcept +16166: { _M_cur = _M_cur->_M_next(); } +16166: +16166: friend bool +16166: operator==(const _Node_iterator_base& __x, const _Node_iterator_base& __y) +16166: noexcept +16166: { return __x._M_cur == __y._M_cur; } +16166: +16166: +16166: friend bool +16166: operator!=(const _Node_iterator_base& __x, const _Node_iterator_base& __y) +16166: noexcept +16166: { return __x._M_cur != __y._M_cur; } +16166: +16166: }; +16166: +16166: +16166: template +16166: struct _Node_iterator +16166: : public _Node_iterator_base<_Value, __cache> +16166: { +16166: private: +16166: using __base_type = _Node_iterator_base<_Value, __cache>; +16166: using __node_type = typename __base_type::__node_type; +16166: +16166: public: +16166: using value_type = _Value; +16166: using difference_type = std::ptrdiff_t; +16166: using iterator_category = std::forward_iterator_tag; +16166: +16166: using pointer = __conditional_t<__constant_iterators, +16166: const value_type*, value_type*>; +16166: +16166: using reference = __conditional_t<__constant_iterators, +16166: const value_type&, value_type&>; +16166: +16166: _Node_iterator() = default; +16166: +16166: explicit +16166: _Node_iterator(__node_type* __p) noexcept +16166: : __base_type(__p) { } +16166: +16166: reference +16166: operator*() const noexcept +16166: { return this->_M_cur->_M_v(); } +16166: +16166: pointer +16166: operator->() const noexcept +16166: { return this->_M_cur->_M_valptr(); } +16166: +16166: _Node_iterator& +16166: operator++() noexcept +16166: { +16166: this->_M_incr(); +16166: return *this; +16166: } +16166: +16166: _Node_iterator +16166: operator++(int) noexcept +16166: { +16166: _Node_iterator __tmp(*this); +16166: this->_M_incr(); +16166: return __tmp; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Node_const_iterator +16166: : public _Node_iterator_base<_Value, __cache> +16166: { +16166: private: +16166: using __base_type = _Node_iterator_base<_Value, __cache>; +16166: using __node_type = typename __base_type::__node_type; +16166: +16166: public: +16166: typedef _Value value_type; +16166: typedef std::ptrdiff_t difference_type; +16166: typedef std::forward_iterator_tag iterator_category; +16166: +16166: typedef const value_type* pointer; +16166: typedef const value_type& reference; +16166: +16166: _Node_const_iterator() = default; +16166: +16166: explicit +16166: _Node_const_iterator(__node_type* __p) noexcept +16166: : __base_type(__p) { } +16166: +16166: _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, +16166: __cache>& __x) noexcept +16166: : __base_type(__x._M_cur) { } +16166: +16166: reference +16166: operator*() const noexcept +16166: { return this->_M_cur->_M_v(); } +16166: +16166: pointer +16166: operator->() const noexcept +16166: { return this->_M_cur->_M_valptr(); } +16166: +16166: _Node_const_iterator& +16166: operator++() noexcept +16166: { +16166: this->_M_incr(); +16166: return *this; +16166: } +16166: +16166: _Node_const_iterator +16166: operator++(int) noexcept +16166: { +16166: _Node_const_iterator __tmp(*this); +16166: this->_M_incr(); +16166: return __tmp; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct _Mod_range_hashing +16166: { +16166: typedef std::size_t first_argument_type; +16166: typedef std::size_t second_argument_type; +16166: typedef std::size_t result_type; +16166: +16166: result_type +16166: operator()(first_argument_type __num, +16166: second_argument_type __den) const noexcept +16166: { return __num % __den; } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct _Default_ranged_hash { }; +16166: +16166: +16166: +16166: struct _Prime_rehash_policy +16166: { +16166: using __has_load_factor = true_type; +16166: +16166: _Prime_rehash_policy(float __z = 1.0) noexcept +16166: : _M_max_load_factor(__z), _M_next_resize(0) { } +16166: +16166: float +16166: max_load_factor() const noexcept +16166: { return _M_max_load_factor; } +16166: +16166: +16166: std::size_t +16166: _M_next_bkt(std::size_t __n) const; +16166: +16166: +16166: std::size_t +16166: _M_bkt_for_elements(std::size_t __n) const +16166: { return __builtin_ceil(__n / (double)_M_max_load_factor); } +16166: +16166: +16166: +16166: +16166: +16166: std::pair +16166: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, +16166: std::size_t __n_ins) const; +16166: +16166: typedef std::size_t _State; +16166: +16166: _State +16166: _M_state() const +16166: { return _M_next_resize; } +16166: +16166: void +16166: _M_reset() noexcept +16166: { _M_next_resize = 0; } +16166: +16166: void +16166: _M_reset(_State __state) +16166: { _M_next_resize = __state; } +16166: +16166: static const std::size_t _S_growth_factor = 2; +16166: +16166: float _M_max_load_factor; +16166: mutable std::size_t _M_next_resize; +16166: }; +16166: +16166: +16166: struct _Mask_range_hashing +16166: { +16166: typedef std::size_t first_argument_type; +16166: typedef std::size_t second_argument_type; +16166: typedef std::size_t result_type; +16166: +16166: result_type +16166: operator()(first_argument_type __num, +16166: second_argument_type __den) const noexcept +16166: { return __num & (__den - 1); } +16166: }; +16166: +16166: +16166: inline std::size_t +16166: __clp2(std::size_t __n) noexcept +16166: { +16166: using __gnu_cxx::__int_traits; +16166: +16166: if (__n < 2) +16166: return __n; +16166: const unsigned __lz = sizeof(size_t) > sizeof(long) +16166: ? __builtin_clzll(__n - 1ull) +16166: : __builtin_clzl(__n - 1ul); +16166: +16166: return (size_t(1) << (__int_traits::__digits - __lz - 1)) << 1; +16166: } +16166: +16166: +16166: +16166: struct _Power2_rehash_policy +16166: { +16166: using __has_load_factor = true_type; +16166: +16166: _Power2_rehash_policy(float __z = 1.0) noexcept +16166: : _M_max_load_factor(__z), _M_next_resize(0) { } +16166: +16166: float +16166: max_load_factor() const noexcept +16166: { return _M_max_load_factor; } +16166: +16166: +16166: +16166: std::size_t +16166: _M_next_bkt(std::size_t __n) noexcept +16166: { +16166: if (__n == 0) +16166: +16166: +16166: +16166: return 1; +16166: +16166: const auto __max_width = std::min(sizeof(size_t), 8); +16166: const auto __max_bkt = size_t(1) << (__max_width * 8 - 1); +16166: std::size_t __res = __clp2(__n); +16166: +16166: if (__res == 0) +16166: __res = __max_bkt; +16166: else if (__res == 1) +16166: +16166: +16166: +16166: __res = 2; +16166: +16166: if (__res == __max_bkt) +16166: +16166: +16166: +16166: _M_next_resize = size_t(-1); +16166: else +16166: _M_next_resize +16166: = __builtin_floor(__res * (double)_M_max_load_factor); +16166: +16166: return __res; +16166: } +16166: +16166: +16166: std::size_t +16166: _M_bkt_for_elements(std::size_t __n) const noexcept +16166: { return __builtin_ceil(__n / (double)_M_max_load_factor); } +16166: +16166: +16166: +16166: +16166: +16166: std::pair +16166: _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, +16166: std::size_t __n_ins) noexcept +16166: { +16166: if (__n_elt + __n_ins > _M_next_resize) +16166: { +16166: +16166: +16166: +16166: double __min_bkts +16166: = std::max(__n_elt + __n_ins, _M_next_resize ? 0 : 11) +16166: / (double)_M_max_load_factor; +16166: if (__min_bkts >= __n_bkt) +16166: return { true, +16166: _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, +16166: __n_bkt * _S_growth_factor)) }; +16166: +16166: _M_next_resize +16166: = __builtin_floor(__n_bkt * (double)_M_max_load_factor); +16166: return { false, 0 }; +16166: } +16166: else +16166: return { false, 0 }; +16166: } +16166: +16166: typedef std::size_t _State; +16166: +16166: _State +16166: _M_state() const noexcept +16166: { return _M_next_resize; } +16166: +16166: void +16166: _M_reset() noexcept +16166: { _M_next_resize = 0; } +16166: +16166: void +16166: _M_reset(_State __state) noexcept +16166: { _M_next_resize = __state; } +16166: +16166: static const std::size_t _S_growth_factor = 2; +16166: +16166: float _M_max_load_factor; +16166: std::size_t _M_next_resize; +16166: }; +16166: +16166: template +16166: struct _RehashStateGuard +16166: { +16166: _RehashPolicy* _M_guarded_obj; +16166: typename _RehashPolicy::_State _M_prev_state; +16166: +16166: _RehashStateGuard(_RehashPolicy& __policy) +16166: : _M_guarded_obj(std::__addressof(__policy)) +16166: , _M_prev_state(__policy._M_state()) +16166: { } +16166: _RehashStateGuard(const _RehashStateGuard&) = delete; +16166: +16166: ~_RehashStateGuard() +16166: { +16166: if (_M_guarded_obj) +16166: _M_guarded_obj->_M_reset(_M_prev_state); +16166: } +16166: }; +16166: # 761 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +16166: template +16166: struct _Map_base { }; +16166: +16166: +16166: template +16166: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> +16166: { +16166: using mapped_type = _Val; +16166: }; +16166: +16166: +16166: template +16166: struct _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true> +16166: { +16166: private: +16166: using __hashtable_base = _Hashtable_base<_Key, pair, +16166: _Select1st, _Equal, _Hash, +16166: _RangeHash, _Unused, +16166: _Traits>; +16166: +16166: using __hashtable = _Hashtable<_Key, pair, _Alloc, +16166: _Select1st, _Equal, _Hash, _RangeHash, +16166: _Unused, _RehashPolicy, _Traits>; +16166: +16166: using __hash_code = typename __hashtable_base::__hash_code; +16166: +16166: public: +16166: using key_type = typename __hashtable_base::key_type; +16166: using mapped_type = _Val; +16166: +16166: mapped_type& +16166: operator[](const key_type& __k); +16166: +16166: mapped_type& +16166: operator[](key_type&& __k); +16166: +16166: +16166: +16166: mapped_type& +16166: at(const key_type& __k) +16166: { +16166: auto __ite = static_cast<__hashtable*>(this)->find(__k); +16166: if (!__ite._M_cur) +16166: __throw_out_of_range(("unordered_map::at")); +16166: return __ite->second; +16166: } +16166: +16166: const mapped_type& +16166: at(const key_type& __k) const +16166: { +16166: auto __ite = static_cast(this)->find(__k); +16166: if (!__ite._M_cur) +16166: __throw_out_of_range(("unordered_map::at")); +16166: return __ite->second; +16166: } +16166: }; +16166: +16166: template +16166: auto +16166: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: +16166: operator[](const key_type& __k) +16166: -> mapped_type& +16166: { +16166: __hashtable* __h = static_cast<__hashtable*>(this); +16166: __hash_code __code = __h->_M_hash_code(__k); +16166: std::size_t __bkt = __h->_M_bucket_index(__code); +16166: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) +16166: return __node->_M_v().second; +16166: +16166: typename __hashtable::_Scoped_node __node { +16166: __h, +16166: std::piecewise_construct, +16166: std::tuple(__k), +16166: std::tuple<>() +16166: }; +16166: auto __pos +16166: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); +16166: __node._M_node = nullptr; +16166: return __pos->second; +16166: } +16166: +16166: template +16166: auto +16166: _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: +16166: operator[](key_type&& __k) +16166: -> mapped_type& +16166: { +16166: __hashtable* __h = static_cast<__hashtable*>(this); +16166: __hash_code __code = __h->_M_hash_code(__k); +16166: std::size_t __bkt = __h->_M_bucket_index(__code); +16166: if (auto __node = __h->_M_find_node(__bkt, __k, __code)) +16166: return __node->_M_v().second; +16166: +16166: typename __hashtable::_Scoped_node __node { +16166: __h, +16166: std::piecewise_construct, +16166: std::forward_as_tuple(std::move(__k)), +16166: std::tuple<>() +16166: }; +16166: auto __pos +16166: = __h->_M_insert_unique_node(__bkt, __code, __node._M_node); +16166: __node._M_node = nullptr; +16166: return __pos->second; +16166: } +16166: +16166: +16166: template +16166: struct _Map_base, +16166: _Alloc, _Select1st, _Equal, _Hash, +16166: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> +16166: : _Map_base<_Key, pair, _Alloc, _Select1st, _Equal, _Hash, +16166: _RangeHash, _Unused, _RehashPolicy, _Traits, __uniq> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Insert_base +16166: { +16166: protected: +16166: using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, +16166: _Equal, _Hash, _RangeHash, +16166: _Unused, _Traits>; +16166: +16166: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, +16166: _Unused, _RehashPolicy, _Traits>; +16166: +16166: using __hash_cached = typename _Traits::__hash_cached; +16166: using __constant_iterators = typename _Traits::__constant_iterators; +16166: +16166: using __hashtable_alloc = _Hashtable_alloc< +16166: __alloc_rebind<_Alloc, _Hash_node<_Value, +16166: __hash_cached::value>>>; +16166: +16166: using value_type = typename __hashtable_base::value_type; +16166: using size_type = typename __hashtable_base::size_type; +16166: +16166: using __unique_keys = typename _Traits::__unique_keys; +16166: using __node_alloc_type = typename __hashtable_alloc::__node_alloc_type; +16166: using __node_gen_type = _AllocNode<__node_alloc_type>; +16166: +16166: __hashtable& +16166: _M_conjure_hashtable() +16166: { return *(static_cast<__hashtable*>(this)); } +16166: +16166: template +16166: void +16166: _M_insert_range(_InputIterator __first, _InputIterator __last, +16166: const _NodeGetter&, true_type __uks); +16166: +16166: template +16166: void +16166: _M_insert_range(_InputIterator __first, _InputIterator __last, +16166: const _NodeGetter&, false_type __uks); +16166: +16166: public: +16166: using iterator = _Node_iterator<_Value, __constant_iterators::value, +16166: __hash_cached::value>; +16166: +16166: using const_iterator = _Node_const_iterator<_Value, +16166: __constant_iterators::value, +16166: __hash_cached::value>; +16166: +16166: using __ireturn_type = __conditional_t<__unique_keys::value, +16166: std::pair, +16166: iterator>; +16166: +16166: __ireturn_type +16166: insert(const value_type& __v) +16166: { +16166: __hashtable& __h = _M_conjure_hashtable(); +16166: __node_gen_type __node_gen(__h); +16166: return __h._M_insert(__v, __node_gen, __unique_keys{}); +16166: } +16166: +16166: iterator +16166: insert(const_iterator __hint, const value_type& __v) +16166: { +16166: __hashtable& __h = _M_conjure_hashtable(); +16166: __node_gen_type __node_gen(__h); +16166: return __h._M_insert(__hint, __v, __node_gen, __unique_keys{}); +16166: } +16166: +16166: +16166: template +16166: std::pair +16166: try_emplace(const_iterator, _KType&& __k, _Args&&... __args) +16166: { +16166: __hashtable& __h = _M_conjure_hashtable(); +16166: auto __code = __h._M_hash_code(__k); +16166: std::size_t __bkt = __h._M_bucket_index(__code); +16166: if (auto __node = __h._M_find_node(__bkt, __k, __code)) +16166: return { iterator(__node), false }; +16166: +16166: typename __hashtable::_Scoped_node __node { +16166: &__h, +16166: std::piecewise_construct, +16166: std::forward_as_tuple(std::forward<_KType>(__k)), +16166: std::forward_as_tuple(std::forward<_Args>(__args)...) +16166: }; +16166: auto __it +16166: = __h._M_insert_unique_node(__bkt, __code, __node._M_node); +16166: __node._M_node = nullptr; +16166: return { __it, true }; +16166: } +16166: +16166: +16166: void +16166: insert(initializer_list __l) +16166: { this->insert(__l.begin(), __l.end()); } +16166: +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { +16166: __hashtable& __h = _M_conjure_hashtable(); +16166: __node_gen_type __node_gen(__h); +16166: return _M_insert_range(__first, __last, __node_gen, __unique_keys{}); +16166: } +16166: }; +16166: +16166: template +16166: template +16166: void +16166: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>:: +16166: _M_insert_range(_InputIterator __first, _InputIterator __last, +16166: const _NodeGetter& __node_gen, true_type __uks) +16166: { +16166: __hashtable& __h = _M_conjure_hashtable(); +16166: for (; __first != __last; ++__first) +16166: __h._M_insert(*__first, __node_gen, __uks); +16166: } +16166: +16166: template +16166: template +16166: void +16166: _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>:: +16166: _M_insert_range(_InputIterator __first, _InputIterator __last, +16166: const _NodeGetter& __node_gen, false_type __uks) +16166: { +16166: using __rehash_guard_t = typename __hashtable::__rehash_guard_t; +16166: using __pair_type = std::pair; +16166: +16166: size_type __n_elt = __detail::__distance_fw(__first, __last); +16166: if (__n_elt == 0) +16166: return; +16166: +16166: __hashtable& __h = _M_conjure_hashtable(); +16166: __rehash_guard_t __rehash_guard(__h._M_rehash_policy); +16166: __pair_type __do_rehash +16166: = __h._M_rehash_policy._M_need_rehash(__h._M_bucket_count, +16166: __h._M_element_count, +16166: __n_elt); +16166: +16166: if (__do_rehash.first) +16166: __h._M_rehash(__do_rehash.second, __uks); +16166: +16166: __rehash_guard._M_guarded_obj = nullptr; +16166: for (; __first != __last; ++__first) +16166: __h._M_insert(*__first, __node_gen, __uks); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Insert; +16166: +16166: +16166: template +16166: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits, true> +16166: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits> +16166: { +16166: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, +16166: _Equal, _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: +16166: using value_type = typename __base_type::value_type; +16166: using iterator = typename __base_type::iterator; +16166: using const_iterator = typename __base_type::const_iterator; +16166: using __ireturn_type = typename __base_type::__ireturn_type; +16166: +16166: using __unique_keys = typename __base_type::__unique_keys; +16166: using __hashtable = typename __base_type::__hashtable; +16166: using __node_gen_type = typename __base_type::__node_gen_type; +16166: +16166: using __base_type::insert; +16166: +16166: __ireturn_type +16166: insert(value_type&& __v) +16166: { +16166: __hashtable& __h = this->_M_conjure_hashtable(); +16166: __node_gen_type __node_gen(__h); +16166: return __h._M_insert(std::move(__v), __node_gen, __unique_keys{}); +16166: } +16166: +16166: iterator +16166: insert(const_iterator __hint, value_type&& __v) +16166: { +16166: __hashtable& __h = this->_M_conjure_hashtable(); +16166: __node_gen_type __node_gen(__h); +16166: return __h._M_insert(__hint, std::move(__v), __node_gen, +16166: __unique_keys{}); +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> +16166: : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits> +16166: { +16166: using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, +16166: _Equal, _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: using value_type = typename __base_type::value_type; +16166: using iterator = typename __base_type::iterator; +16166: using const_iterator = typename __base_type::const_iterator; +16166: +16166: using __unique_keys = typename __base_type::__unique_keys; +16166: using __hashtable = typename __base_type::__hashtable; +16166: using __ireturn_type = typename __base_type::__ireturn_type; +16166: +16166: using __base_type::insert; +16166: +16166: template +16166: using __is_cons = std::is_constructible; +16166: +16166: template +16166: using _IFcons = std::enable_if<__is_cons<_Pair>::value>; +16166: +16166: template +16166: using _IFconsp = typename _IFcons<_Pair>::type; +16166: +16166: template> +16166: __ireturn_type +16166: insert(_Pair&& __v) +16166: { +16166: __hashtable& __h = this->_M_conjure_hashtable(); +16166: return __h._M_emplace(__unique_keys{}, std::forward<_Pair>(__v)); +16166: } +16166: +16166: template> +16166: iterator +16166: insert(const_iterator __hint, _Pair&& __v) +16166: { +16166: __hashtable& __h = this->_M_conjure_hashtable(); +16166: return __h._M_emplace(__hint, __unique_keys{}, +16166: std::forward<_Pair>(__v)); +16166: } +16166: }; +16166: +16166: template +16166: using __has_load_factor = typename _Policy::__has_load_factor; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: struct _Rehash_base; +16166: +16166: +16166: template +16166: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, +16166: false_type > +16166: { +16166: }; +16166: +16166: +16166: template +16166: struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, +16166: true_type > +16166: { +16166: private: +16166: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, +16166: _Equal, _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: +16166: public: +16166: float +16166: max_load_factor() const noexcept +16166: { +16166: const __hashtable* __this = static_cast(this); +16166: return __this->__rehash_policy().max_load_factor(); +16166: } +16166: +16166: void +16166: max_load_factor(float __z) +16166: { +16166: __hashtable* __this = static_cast<__hashtable*>(this); +16166: __this->__rehash_policy(_RehashPolicy(__z)); +16166: } +16166: +16166: void +16166: reserve(std::size_t __n) +16166: { +16166: __hashtable* __this = static_cast<__hashtable*>(this); +16166: __this->rehash(__this->__rehash_policy()._M_bkt_for_elements(__n)); +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hashtable_ebo_helper; +16166: +16166: +16166: template +16166: struct _Hashtable_ebo_helper<_Nm, _Tp, true> +16166: : private _Tp +16166: { +16166: _Hashtable_ebo_helper() noexcept(noexcept(_Tp())) : _Tp() { } +16166: +16166: template +16166: _Hashtable_ebo_helper(_OtherTp&& __tp) +16166: : _Tp(std::forward<_OtherTp>(__tp)) +16166: { } +16166: +16166: const _Tp& _M_cget() const { return static_cast(*this); } +16166: _Tp& _M_get() { return static_cast<_Tp&>(*this); } +16166: }; +16166: +16166: +16166: template +16166: struct _Hashtable_ebo_helper<_Nm, _Tp, false> +16166: { +16166: _Hashtable_ebo_helper() = default; +16166: +16166: template +16166: _Hashtable_ebo_helper(_OtherTp&& __tp) +16166: : _M_tp(std::forward<_OtherTp>(__tp)) +16166: { } +16166: +16166: const _Tp& _M_cget() const { return _M_tp; } +16166: _Tp& _M_get() { return _M_tp; } +16166: +16166: private: +16166: _Tp _M_tp{}; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Local_iterator_base; +16166: # 1303 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +16166: template +16166: struct _Hash_code_base +16166: : private _Hashtable_ebo_helper<1, _Hash> +16166: { +16166: private: +16166: using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>; +16166: +16166: +16166: friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, false>; +16166: +16166: public: +16166: typedef _Hash hasher; +16166: +16166: hasher +16166: hash_function() const +16166: { return _M_hash(); } +16166: +16166: protected: +16166: typedef std::size_t __hash_code; +16166: +16166: +16166: +16166: _Hash_code_base() = default; +16166: +16166: _Hash_code_base(const _Hash& __hash) : __ebo_hash(__hash) { } +16166: +16166: __hash_code +16166: _M_hash_code(const _Key& __k) const +16166: { +16166: static_assert(__is_invocable{}, +16166: "hash function must be invocable with an argument of key type"); +16166: return _M_hash()(__k); +16166: } +16166: +16166: template +16166: __hash_code +16166: _M_hash_code_tr(const _Kt& __k) const +16166: { +16166: static_assert(__is_invocable{}, +16166: "hash function must be invocable with an argument of key type"); +16166: return _M_hash()(__k); +16166: } +16166: +16166: __hash_code +16166: _M_hash_code(const _Hash_node_value<_Value, false>& __n) const +16166: { return _M_hash_code(_ExtractKey{}(__n._M_v())); } +16166: +16166: __hash_code +16166: _M_hash_code(const _Hash_node_value<_Value, true>& __n) const +16166: { return __n._M_hash_code; } +16166: +16166: std::size_t +16166: _M_bucket_index(__hash_code __c, std::size_t __bkt_count) const +16166: { return _RangeHash{}(__c, __bkt_count); } +16166: +16166: std::size_t +16166: _M_bucket_index(const _Hash_node_value<_Value, false>& __n, +16166: std::size_t __bkt_count) const +16166: noexcept( noexcept(declval()(declval())) +16166: && noexcept(declval()((__hash_code)0, +16166: (std::size_t)0)) ) +16166: { +16166: return _RangeHash{}(_M_hash_code(_ExtractKey{}(__n._M_v())), +16166: __bkt_count); +16166: } +16166: +16166: std::size_t +16166: _M_bucket_index(const _Hash_node_value<_Value, true>& __n, +16166: std::size_t __bkt_count) const +16166: noexcept( noexcept(declval()((__hash_code)0, +16166: (std::size_t)0)) ) +16166: { return _RangeHash{}(__n._M_hash_code, __bkt_count); } +16166: +16166: void +16166: _M_store_code(_Hash_node_code_cache&, __hash_code) const +16166: { } +16166: +16166: void +16166: _M_copy_code(_Hash_node_code_cache&, +16166: const _Hash_node_code_cache&) const +16166: { } +16166: +16166: void +16166: _M_store_code(_Hash_node_code_cache& __n, __hash_code __c) const +16166: { __n._M_hash_code = __c; } +16166: +16166: void +16166: _M_copy_code(_Hash_node_code_cache& __to, +16166: const _Hash_node_code_cache& __from) const +16166: { __to._M_hash_code = __from._M_hash_code; } +16166: +16166: void +16166: _M_swap(_Hash_code_base& __x) +16166: { std::swap(__ebo_hash::_M_get(), __x.__ebo_hash::_M_get()); } +16166: +16166: const _Hash& +16166: _M_hash() const { return __ebo_hash::_M_cget(); } +16166: }; +16166: +16166: +16166: template +16166: struct _Local_iterator_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, true> +16166: : public _Node_iterator_base<_Value, true> +16166: { +16166: protected: +16166: using __base_node_iter = _Node_iterator_base<_Value, true>; +16166: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, true>; +16166: +16166: _Local_iterator_base() = default; +16166: _Local_iterator_base(const __hash_code_base&, +16166: _Hash_node<_Value, true>* __p, +16166: std::size_t __bkt, std::size_t __bkt_count) +16166: : __base_node_iter(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) +16166: { } +16166: +16166: void +16166: _M_incr() +16166: { +16166: __base_node_iter::_M_incr(); +16166: if (this->_M_cur) +16166: { +16166: std::size_t __bkt +16166: = _RangeHash{}(this->_M_cur->_M_hash_code, _M_bucket_count); +16166: if (__bkt != _M_bucket) +16166: this->_M_cur = nullptr; +16166: } +16166: } +16166: +16166: std::size_t _M_bucket; +16166: std::size_t _M_bucket_count; +16166: +16166: public: +16166: std::size_t +16166: _M_get_bucket() const { return _M_bucket; } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template::value> +16166: struct _Hash_code_storage +16166: { +16166: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; +16166: +16166: _Tp* +16166: _M_h() { return _M_storage._M_ptr(); } +16166: +16166: const _Tp* +16166: _M_h() const { return _M_storage._M_ptr(); } +16166: }; +16166: +16166: +16166: template +16166: struct _Hash_code_storage<_Tp, true> +16166: { +16166: static_assert( std::is_empty<_Tp>::value, "Type must be empty" ); +16166: +16166: +16166: +16166: _Tp* +16166: _M_h() { return reinterpret_cast<_Tp*>(this); } +16166: +16166: const _Tp* +16166: _M_h() const { return reinterpret_cast(this); } +16166: }; +16166: +16166: template +16166: using __hash_code_for_local_iter +16166: = _Hash_code_storage<_Hash_code_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, false>>; +16166: +16166: +16166: template +16166: struct _Local_iterator_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, false> +16166: : __hash_code_for_local_iter<_Key, _Value, _ExtractKey, _Hash, _RangeHash, +16166: _Unused> +16166: , _Node_iterator_base<_Value, false> +16166: { +16166: protected: +16166: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, false>; +16166: using __node_iter_base = _Node_iterator_base<_Value, false>; +16166: +16166: _Local_iterator_base() : _M_bucket_count(-1) { } +16166: +16166: _Local_iterator_base(const __hash_code_base& __base, +16166: _Hash_node<_Value, false>* __p, +16166: std::size_t __bkt, std::size_t __bkt_count) +16166: : __node_iter_base(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) +16166: { _M_init(__base); } +16166: +16166: ~_Local_iterator_base() +16166: { +16166: if (_M_bucket_count != size_t(-1)) +16166: _M_destroy(); +16166: } +16166: +16166: _Local_iterator_base(const _Local_iterator_base& __iter) +16166: : __node_iter_base(__iter._M_cur), _M_bucket(__iter._M_bucket) +16166: , _M_bucket_count(__iter._M_bucket_count) +16166: { +16166: if (_M_bucket_count != size_t(-1)) +16166: _M_init(*__iter._M_h()); +16166: } +16166: +16166: _Local_iterator_base& +16166: operator=(const _Local_iterator_base& __iter) +16166: { +16166: if (_M_bucket_count != -1) +16166: _M_destroy(); +16166: this->_M_cur = __iter._M_cur; +16166: _M_bucket = __iter._M_bucket; +16166: _M_bucket_count = __iter._M_bucket_count; +16166: if (_M_bucket_count != -1) +16166: _M_init(*__iter._M_h()); +16166: return *this; +16166: } +16166: +16166: void +16166: _M_incr() +16166: { +16166: __node_iter_base::_M_incr(); +16166: if (this->_M_cur) +16166: { +16166: std::size_t __bkt = this->_M_h()->_M_bucket_index(*this->_M_cur, +16166: _M_bucket_count); +16166: if (__bkt != _M_bucket) +16166: this->_M_cur = nullptr; +16166: } +16166: } +16166: +16166: std::size_t _M_bucket; +16166: std::size_t _M_bucket_count; +16166: +16166: void +16166: _M_init(const __hash_code_base& __base) +16166: { ::new(this->_M_h()) __hash_code_base(__base); } +16166: +16166: void +16166: _M_destroy() { this->_M_h()->~__hash_code_base(); } +16166: +16166: public: +16166: std::size_t +16166: _M_get_bucket() const { return _M_bucket; } +16166: }; +16166: +16166: +16166: template +16166: struct _Local_iterator +16166: : public _Local_iterator_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, __cache> +16166: { +16166: private: +16166: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, __cache>; +16166: using __hash_code_base = typename __base_type::__hash_code_base; +16166: +16166: public: +16166: using value_type = _Value; +16166: using pointer = __conditional_t<__constant_iterators, +16166: const value_type*, value_type*>; +16166: using reference = __conditional_t<__constant_iterators, +16166: const value_type&, value_type&>; +16166: using difference_type = ptrdiff_t; +16166: using iterator_category = forward_iterator_tag; +16166: +16166: _Local_iterator() = default; +16166: +16166: _Local_iterator(const __hash_code_base& __base, +16166: _Hash_node<_Value, __cache>* __n, +16166: std::size_t __bkt, std::size_t __bkt_count) +16166: : __base_type(__base, __n, __bkt, __bkt_count) +16166: { } +16166: +16166: reference +16166: operator*() const +16166: { return this->_M_cur->_M_v(); } +16166: +16166: pointer +16166: operator->() const +16166: { return this->_M_cur->_M_valptr(); } +16166: +16166: _Local_iterator& +16166: operator++() +16166: { +16166: this->_M_incr(); +16166: return *this; +16166: } +16166: +16166: _Local_iterator +16166: operator++(int) +16166: { +16166: _Local_iterator __tmp(*this); +16166: this->_M_incr(); +16166: return __tmp; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Local_const_iterator +16166: : public _Local_iterator_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, __cache> +16166: { +16166: private: +16166: using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, __cache>; +16166: using __hash_code_base = typename __base_type::__hash_code_base; +16166: +16166: public: +16166: typedef _Value value_type; +16166: typedef const value_type* pointer; +16166: typedef const value_type& reference; +16166: typedef std::ptrdiff_t difference_type; +16166: typedef std::forward_iterator_tag iterator_category; +16166: +16166: _Local_const_iterator() = default; +16166: +16166: _Local_const_iterator(const __hash_code_base& __base, +16166: _Hash_node<_Value, __cache>* __n, +16166: std::size_t __bkt, std::size_t __bkt_count) +16166: : __base_type(__base, __n, __bkt, __bkt_count) +16166: { } +16166: +16166: _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, +16166: __constant_iterators, +16166: __cache>& __x) +16166: : __base_type(__x) +16166: { } +16166: +16166: reference +16166: operator*() const +16166: { return this->_M_cur->_M_v(); } +16166: +16166: pointer +16166: operator->() const +16166: { return this->_M_cur->_M_valptr(); } +16166: +16166: _Local_const_iterator& +16166: operator++() +16166: { +16166: this->_M_incr(); +16166: return *this; +16166: } +16166: +16166: _Local_const_iterator +16166: operator++(int) +16166: { +16166: _Local_const_iterator __tmp(*this); +16166: this->_M_incr(); +16166: return __tmp; +16166: } +16166: }; +16166: # 1682 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +16166: template +16166: struct _Hashtable_base +16166: : public _Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHash, +16166: _Unused, _Traits::__hash_cached::value>, +16166: private _Hashtable_ebo_helper<0, _Equal> +16166: { +16166: public: +16166: typedef _Key key_type; +16166: typedef _Value value_type; +16166: typedef _Equal key_equal; +16166: typedef std::size_t size_type; +16166: typedef std::ptrdiff_t difference_type; +16166: +16166: using __traits_type = _Traits; +16166: using __hash_cached = typename __traits_type::__hash_cached; +16166: +16166: using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, +16166: _Hash, _RangeHash, _Unused, +16166: __hash_cached::value>; +16166: +16166: using __hash_code = typename __hash_code_base::__hash_code; +16166: +16166: private: +16166: using _EqualEBO = _Hashtable_ebo_helper<0, _Equal>; +16166: +16166: static bool +16166: _S_equals(__hash_code, const _Hash_node_code_cache&) +16166: { return true; } +16166: +16166: static bool +16166: _S_node_equals(const _Hash_node_code_cache&, +16166: const _Hash_node_code_cache&) +16166: { return true; } +16166: +16166: static bool +16166: _S_equals(__hash_code __c, const _Hash_node_code_cache& __n) +16166: { return __c == __n._M_hash_code; } +16166: +16166: static bool +16166: _S_node_equals(const _Hash_node_code_cache& __lhn, +16166: const _Hash_node_code_cache& __rhn) +16166: { return __lhn._M_hash_code == __rhn._M_hash_code; } +16166: +16166: protected: +16166: _Hashtable_base() = default; +16166: +16166: _Hashtable_base(const _Hash& __hash, const _Equal& __eq) +16166: : __hash_code_base(__hash), _EqualEBO(__eq) +16166: { } +16166: +16166: bool +16166: _M_key_equals(const _Key& __k, +16166: const _Hash_node_value<_Value, +16166: __hash_cached::value>& __n) const +16166: { +16166: static_assert(__is_invocable{}, +16166: "key equality predicate must be invocable with two arguments of " +16166: "key type"); +16166: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); +16166: } +16166: +16166: template +16166: bool +16166: _M_key_equals_tr(const _Kt& __k, +16166: const _Hash_node_value<_Value, +16166: __hash_cached::value>& __n) const +16166: { +16166: static_assert( +16166: __is_invocable{}, +16166: "key equality predicate must be invocable with two arguments of " +16166: "key type"); +16166: return _M_eq()(__k, _ExtractKey{}(__n._M_v())); +16166: } +16166: +16166: bool +16166: _M_equals(const _Key& __k, __hash_code __c, +16166: const _Hash_node_value<_Value, __hash_cached::value>& __n) const +16166: { return _S_equals(__c, __n) && _M_key_equals(__k, __n); } +16166: +16166: template +16166: bool +16166: _M_equals_tr(const _Kt& __k, __hash_code __c, +16166: const _Hash_node_value<_Value, +16166: __hash_cached::value>& __n) const +16166: { return _S_equals(__c, __n) && _M_key_equals_tr(__k, __n); } +16166: +16166: bool +16166: _M_node_equals( +16166: const _Hash_node_value<_Value, __hash_cached::value>& __lhn, +16166: const _Hash_node_value<_Value, __hash_cached::value>& __rhn) const +16166: { +16166: return _S_node_equals(__lhn, __rhn) +16166: && _M_key_equals(_ExtractKey{}(__lhn._M_v()), __rhn); +16166: } +16166: +16166: void +16166: _M_swap(_Hashtable_base& __x) +16166: { +16166: __hash_code_base::_M_swap(__x); +16166: std::swap(_EqualEBO::_M_get(), __x._EqualEBO::_M_get()); +16166: } +16166: +16166: const _Equal& +16166: _M_eq() const { return _EqualEBO::_M_cget(); } +16166: }; +16166: # 1798 "/usr/include/c++/14/bits/hashtable_policy.h" 3 +16166: template +16166: struct _Equality; +16166: +16166: +16166: template +16166: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true> +16166: { +16166: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: +16166: bool +16166: _M_equal(const __hashtable&) const; +16166: }; +16166: +16166: template +16166: bool +16166: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, true>:: +16166: _M_equal(const __hashtable& __other) const +16166: { +16166: using __node_ptr = typename __hashtable::__node_ptr; +16166: const __hashtable* __this = static_cast(this); +16166: if (__this->size() != __other.size()) +16166: return false; +16166: +16166: for (auto __x_n = __this->_M_begin(); __x_n; __x_n = __x_n->_M_next()) +16166: { +16166: std::size_t __ybkt = __other._M_bucket_index(*__x_n); +16166: auto __prev_n = __other._M_buckets[__ybkt]; +16166: if (!__prev_n) +16166: return false; +16166: +16166: for (__node_ptr __n = static_cast<__node_ptr>(__prev_n->_M_nxt);; +16166: __n = __n->_M_next()) +16166: { +16166: if (__n->_M_v() == __x_n->_M_v()) +16166: break; +16166: +16166: if (!__n->_M_nxt +16166: || __other._M_bucket_index(*__n->_M_next()) != __ybkt) +16166: return false; +16166: } +16166: } +16166: +16166: return true; +16166: } +16166: +16166: +16166: template +16166: struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false> +16166: { +16166: using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: +16166: bool +16166: _M_equal(const __hashtable&) const; +16166: }; +16166: +16166: template +16166: bool +16166: _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits, false>:: +16166: _M_equal(const __hashtable& __other) const +16166: { +16166: using __node_ptr = typename __hashtable::__node_ptr; +16166: using const_iterator = typename __hashtable::const_iterator; +16166: const __hashtable* __this = static_cast(this); +16166: if (__this->size() != __other.size()) +16166: return false; +16166: +16166: for (auto __x_n = __this->_M_begin(); __x_n;) +16166: { +16166: std::size_t __x_count = 1; +16166: auto __x_n_end = __x_n->_M_next(); +16166: for (; __x_n_end +16166: && __this->key_eq()(_ExtractKey{}(__x_n->_M_v()), +16166: _ExtractKey{}(__x_n_end->_M_v())); +16166: __x_n_end = __x_n_end->_M_next()) +16166: ++__x_count; +16166: +16166: std::size_t __ybkt = __other._M_bucket_index(*__x_n); +16166: auto __y_prev_n = __other._M_buckets[__ybkt]; +16166: if (!__y_prev_n) +16166: return false; +16166: +16166: __node_ptr __y_n = static_cast<__node_ptr>(__y_prev_n->_M_nxt); +16166: for (;;) +16166: { +16166: if (__this->key_eq()(_ExtractKey{}(__y_n->_M_v()), +16166: _ExtractKey{}(__x_n->_M_v()))) +16166: break; +16166: +16166: auto __y_ref_n = __y_n; +16166: for (__y_n = __y_n->_M_next(); __y_n; __y_n = __y_n->_M_next()) +16166: if (!__other._M_node_equals(*__y_ref_n, *__y_n)) +16166: break; +16166: +16166: if (!__y_n || __other._M_bucket_index(*__y_n) != __ybkt) +16166: return false; +16166: } +16166: +16166: auto __y_n_end = __y_n; +16166: for (; __y_n_end; __y_n_end = __y_n_end->_M_next()) +16166: if (--__x_count == 0) +16166: break; +16166: +16166: if (__x_count != 0) +16166: return false; +16166: +16166: const_iterator __itx(__x_n), __itx_end(__x_n_end); +16166: const_iterator __ity(__y_n); +16166: if (!std::is_permutation(__itx, __itx_end, __ity)) +16166: return false; +16166: +16166: __x_n = __x_n_end; +16166: } +16166: return true; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hashtable_alloc : private _Hashtable_ebo_helper<0, _NodeAlloc> +16166: { +16166: private: +16166: using __ebo_node_alloc = _Hashtable_ebo_helper<0, _NodeAlloc>; +16166: +16166: template +16166: struct __get_value_type; +16166: template +16166: struct __get_value_type<_Hash_node<_Val, _Cache_hash_code>> +16166: { using type = _Val; }; +16166: +16166: public: +16166: using __node_type = typename _NodeAlloc::value_type; +16166: using __node_alloc_type = _NodeAlloc; +16166: +16166: using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; +16166: +16166: using __value_alloc_traits = typename __node_alloc_traits::template +16166: rebind_traits::type>; +16166: +16166: using __node_ptr = __node_type*; +16166: using __node_base = _Hash_node_base; +16166: using __node_base_ptr = __node_base*; +16166: using __buckets_alloc_type = +16166: __alloc_rebind<__node_alloc_type, __node_base_ptr>; +16166: using __buckets_alloc_traits = std::allocator_traits<__buckets_alloc_type>; +16166: using __buckets_ptr = __node_base_ptr*; +16166: +16166: _Hashtable_alloc() = default; +16166: _Hashtable_alloc(const _Hashtable_alloc&) = default; +16166: _Hashtable_alloc(_Hashtable_alloc&&) = default; +16166: +16166: template +16166: _Hashtable_alloc(_Alloc&& __a) +16166: : __ebo_node_alloc(std::forward<_Alloc>(__a)) +16166: { } +16166: +16166: __node_alloc_type& +16166: _M_node_allocator() +16166: { return __ebo_node_alloc::_M_get(); } +16166: +16166: const __node_alloc_type& +16166: _M_node_allocator() const +16166: { return __ebo_node_alloc::_M_cget(); } +16166: +16166: +16166: template +16166: __node_ptr +16166: _M_allocate_node(_Args&&... __args); +16166: +16166: +16166: void +16166: _M_deallocate_node(__node_ptr __n); +16166: +16166: +16166: void +16166: _M_deallocate_node_ptr(__node_ptr __n); +16166: +16166: +16166: +16166: void +16166: _M_deallocate_nodes(__node_ptr __n); +16166: +16166: __buckets_ptr +16166: _M_allocate_buckets(std::size_t __bkt_count); +16166: +16166: void +16166: _M_deallocate_buckets(__buckets_ptr, std::size_t __bkt_count); +16166: }; +16166: +16166: +16166: +16166: template +16166: template +16166: auto +16166: _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) +16166: -> __node_ptr +16166: { +16166: auto& __alloc = _M_node_allocator(); +16166: auto __nptr = __node_alloc_traits::allocate(__alloc, 1); +16166: __node_ptr __n = std::__to_address(__nptr); +16166: try +16166: { +16166: ::new ((void*)__n) __node_type; +16166: __node_alloc_traits::construct(__alloc, __n->_M_valptr(), +16166: std::forward<_Args>(__args)...); +16166: return __n; +16166: } +16166: catch(...) +16166: { +16166: __n->~__node_type(); +16166: __node_alloc_traits::deallocate(__alloc, __nptr, 1); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: void +16166: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_ptr __n) +16166: { +16166: __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr()); +16166: _M_deallocate_node_ptr(__n); +16166: } +16166: +16166: template +16166: void +16166: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node_ptr(__node_ptr __n) +16166: { +16166: typedef typename __node_alloc_traits::pointer _Ptr; +16166: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); +16166: __n->~__node_type(); +16166: __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); +16166: } +16166: +16166: template +16166: void +16166: _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_ptr __n) +16166: { +16166: while (__n) +16166: { +16166: __node_ptr __tmp = __n; +16166: __n = __n->_M_next(); +16166: _M_deallocate_node(__tmp); +16166: } +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(std::size_t __bkt_count) +16166: -> __buckets_ptr +16166: { +16166: __buckets_alloc_type __alloc(_M_node_allocator()); +16166: +16166: auto __ptr = __buckets_alloc_traits::allocate(__alloc, __bkt_count); +16166: __buckets_ptr __p = std::__to_address(__ptr); +16166: __builtin_memset(__p, 0, __bkt_count * sizeof(__node_base_ptr)); +16166: return __p; +16166: } +16166: +16166: template +16166: void +16166: _Hashtable_alloc<_NodeAlloc>:: +16166: _M_deallocate_buckets(__buckets_ptr __bkts, +16166: std::size_t __bkt_count) +16166: { +16166: typedef typename __buckets_alloc_traits::pointer _Ptr; +16166: auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); +16166: __buckets_alloc_type __alloc(_M_node_allocator()); +16166: __buckets_alloc_traits::deallocate(__alloc, __ptr, __bkt_count); +16166: } +16166: +16166: +16166: } +16166: +16166: +16166: } +16166: # 36 "/usr/include/c++/14/bits/hashtable.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/enable_special_members.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/enable_special_members.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/enable_special_members.h" 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: struct _Enable_default_constructor_tag +16166: { +16166: explicit constexpr _Enable_default_constructor_tag() = default; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Enable_default_constructor +16166: { +16166: constexpr _Enable_default_constructor() noexcept = default; +16166: constexpr _Enable_default_constructor(_Enable_default_constructor const&) +16166: noexcept = default; +16166: constexpr _Enable_default_constructor(_Enable_default_constructor&&) +16166: noexcept = default; +16166: _Enable_default_constructor& +16166: operator=(_Enable_default_constructor const&) noexcept = default; +16166: _Enable_default_constructor& +16166: operator=(_Enable_default_constructor&&) noexcept = default; +16166: +16166: +16166: constexpr explicit +16166: _Enable_default_constructor(_Enable_default_constructor_tag) { } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Enable_destructor { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Enable_copy_move { }; +16166: # 96 "/usr/include/c++/14/bits/enable_special_members.h" 3 +16166: template +16166: struct _Enable_special_members +16166: : private _Enable_default_constructor<_Default, _Tag>, +16166: private _Enable_destructor<_Destructor, _Tag>, +16166: private _Enable_copy_move<_Copy, _CopyAssignment, +16166: _Move, _MoveAssignment, +16166: _Tag> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct _Enable_default_constructor +16166: { +16166: constexpr _Enable_default_constructor() noexcept = delete; +16166: constexpr _Enable_default_constructor(_Enable_default_constructor const&) +16166: noexcept = default; +16166: constexpr _Enable_default_constructor(_Enable_default_constructor&&) +16166: noexcept = default; +16166: _Enable_default_constructor& +16166: operator=(_Enable_default_constructor const&) noexcept = default; +16166: _Enable_default_constructor& +16166: operator=(_Enable_default_constructor&&) noexcept = default; +16166: +16166: +16166: constexpr explicit +16166: _Enable_default_constructor(_Enable_default_constructor_tag) { } +16166: }; +16166: +16166: template +16166: struct _Enable_destructor +16166: { ~_Enable_destructor() noexcept = delete; }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = default; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = default; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = default; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = default; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = default; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = default; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = default; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = default; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: template +16166: struct _Enable_copy_move +16166: { +16166: constexpr _Enable_copy_move() noexcept = default; +16166: constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept = delete; +16166: constexpr _Enable_copy_move(_Enable_copy_move&&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move const&) noexcept = delete; +16166: _Enable_copy_move& +16166: operator=(_Enable_copy_move&&) noexcept = delete; +16166: }; +16166: +16166: +16166: +16166: } +16166: # 37 "/usr/include/c++/14/bits/hashtable.h" 2 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/node_handle.h" 1 3 +16166: # 34 "/usr/include/c++/14/bits/node_handle.h" 3 +16166: +16166: # 35 "/usr/include/c++/14/bits/node_handle.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 37 "/usr/include/c++/14/bits/node_handle.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 64 "/usr/include/c++/14/bits/node_handle.h" 3 +16166: template +16166: class _Node_handle_common +16166: { +16166: using _AllocTraits = allocator_traits<_NodeAlloc>; +16166: +16166: public: +16166: using allocator_type = __alloc_rebind<_NodeAlloc, _Val>; +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return allocator_type(_M_alloc._M_alloc); +16166: } +16166: +16166: explicit operator bool() const noexcept { return _M_ptr != nullptr; } +16166: +16166: [[nodiscard]] bool empty() const noexcept { return _M_ptr == nullptr; } +16166: +16166: +16166: protected: +16166: constexpr _Node_handle_common() noexcept : _M_ptr() { } +16166: +16166: ~_Node_handle_common() +16166: { +16166: if (!empty()) +16166: _M_reset(); +16166: } +16166: +16166: _Node_handle_common(_Node_handle_common&& __nh) noexcept +16166: : _M_ptr(__nh._M_ptr) +16166: { +16166: if (_M_ptr) +16166: _M_move(std::move(__nh)); +16166: } +16166: +16166: _Node_handle_common& +16166: operator=(_Node_handle_common&& __nh) noexcept +16166: { +16166: if (empty()) +16166: { +16166: if (!__nh.empty()) +16166: _M_move(std::move(__nh)); +16166: } +16166: else if (__nh.empty()) +16166: _M_reset(); +16166: else +16166: { +16166: +16166: _AllocTraits::destroy(*_M_alloc, _M_ptr->_M_valptr()); +16166: _AllocTraits::deallocate(*_M_alloc, _M_ptr, 1); +16166: +16166: _M_alloc = __nh._M_alloc.release(); +16166: _M_ptr = __nh._M_ptr; +16166: __nh._M_ptr = nullptr; +16166: } +16166: return *this; +16166: } +16166: +16166: _Node_handle_common(typename _AllocTraits::pointer __ptr, +16166: const _NodeAlloc& __alloc) +16166: : _M_ptr(__ptr), _M_alloc(__alloc) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__ptr != nullptr)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: void +16166: _M_swap(_Node_handle_common& __nh) noexcept +16166: { +16166: if (empty()) +16166: { +16166: if (!__nh.empty()) +16166: _M_move(std::move(__nh)); +16166: } +16166: else if (__nh.empty()) +16166: __nh._M_move(std::move(*this)); +16166: else +16166: { +16166: using std::swap; +16166: swap(_M_ptr, __nh._M_ptr); +16166: _M_alloc.swap(__nh._M_alloc); +16166: } +16166: } +16166: +16166: private: +16166: +16166: +16166: +16166: void +16166: _M_move(_Node_handle_common&& __nh) noexcept +16166: { +16166: ::new (std::__addressof(_M_alloc)) _NodeAlloc(__nh._M_alloc.release()); +16166: _M_ptr = __nh._M_ptr; +16166: __nh._M_ptr = nullptr; +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: _M_reset() noexcept +16166: { +16166: _NodeAlloc __alloc = _M_alloc.release(); +16166: _AllocTraits::destroy(__alloc, _M_ptr->_M_valptr()); +16166: _AllocTraits::deallocate(__alloc, _M_ptr, 1); +16166: _M_ptr = nullptr; +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: release() noexcept +16166: { +16166: _M_alloc.release(); +16166: _M_ptr = nullptr; +16166: } +16166: +16166: protected: +16166: typename _AllocTraits::pointer _M_ptr; +16166: +16166: private: +16166: +16166: +16166: union _Optional_alloc +16166: { +16166: _Optional_alloc() { } +16166: ~_Optional_alloc() { } +16166: +16166: _Optional_alloc(_Optional_alloc&&) = delete; +16166: _Optional_alloc& operator=(_Optional_alloc&&) = delete; +16166: +16166: _Optional_alloc(const _NodeAlloc& __alloc) noexcept +16166: : _M_alloc(__alloc) +16166: { } +16166: +16166: +16166: void +16166: operator=(_NodeAlloc&& __alloc) noexcept +16166: { +16166: using _ATr = _AllocTraits; +16166: if constexpr (_ATr::propagate_on_container_move_assignment::value) +16166: _M_alloc = std::move(__alloc); +16166: else if constexpr (!_AllocTraits::is_always_equal::value) +16166: do { if (std::__is_constant_evaluated() && !bool(_M_alloc == __alloc)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: +16166: void +16166: swap(_Optional_alloc& __other) noexcept +16166: { +16166: using std::swap; +16166: if constexpr (_AllocTraits::propagate_on_container_swap::value) +16166: swap(_M_alloc, __other._M_alloc); +16166: else if constexpr (!_AllocTraits::is_always_equal::value) +16166: do { if (std::__is_constant_evaluated() && !bool(_M_alloc == __other._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: +16166: _NodeAlloc& operator*() noexcept { return _M_alloc; } +16166: +16166: +16166: _NodeAlloc release() noexcept +16166: { +16166: _NodeAlloc __tmp = std::move(_M_alloc); +16166: _M_alloc.~_NodeAlloc(); +16166: return __tmp; +16166: } +16166: +16166: [[__no_unique_address__]] _NodeAlloc _M_alloc; +16166: }; +16166: +16166: [[__no_unique_address__]] _Optional_alloc _M_alloc; +16166: +16166: template +16166: friend class _Rb_tree; +16166: +16166: template +16166: friend class _Hashtable; +16166: +16166: +16166: }; +16166: +16166: +16166: template +16166: class _Node_handle : public _Node_handle_common<_Value, _NodeAlloc> +16166: { +16166: public: +16166: constexpr _Node_handle() noexcept = default; +16166: ~_Node_handle() = default; +16166: _Node_handle(_Node_handle&&) noexcept = default; +16166: +16166: _Node_handle& +16166: operator=(_Node_handle&&) noexcept = default; +16166: +16166: using key_type = _Key; +16166: using mapped_type = typename _Value::second_type; +16166: +16166: key_type& +16166: key() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return *_M_pkey; +16166: } +16166: +16166: mapped_type& +16166: mapped() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return *_M_pmapped; +16166: } +16166: +16166: void +16166: swap(_Node_handle& __nh) noexcept +16166: { +16166: this->_M_swap(__nh); +16166: using std::swap; +16166: swap(_M_pkey, __nh._M_pkey); +16166: swap(_M_pmapped, __nh._M_pmapped); +16166: } +16166: +16166: friend void +16166: swap(_Node_handle& __x, _Node_handle& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: private: +16166: using _AllocTraits = allocator_traits<_NodeAlloc>; +16166: +16166: _Node_handle(typename _AllocTraits::pointer __ptr, +16166: const _NodeAlloc& __alloc) +16166: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc) +16166: { +16166: if (__ptr) +16166: { +16166: auto& __key = const_cast<_Key&>(__ptr->_M_valptr()->first); +16166: _M_pkey = _S_pointer_to(__key); +16166: _M_pmapped = _S_pointer_to(__ptr->_M_valptr()->second); +16166: } +16166: else +16166: { +16166: _M_pkey = nullptr; +16166: _M_pmapped = nullptr; +16166: } +16166: } +16166: +16166: template +16166: using __pointer +16166: = __ptr_rebind>; +16166: +16166: __pointer<_Key> _M_pkey = nullptr; +16166: __pointer _M_pmapped = nullptr; +16166: +16166: template +16166: __pointer<_Tp> +16166: _S_pointer_to(_Tp& __obj) +16166: { return pointer_traits<__pointer<_Tp>>::pointer_to(__obj); } +16166: +16166: const key_type& +16166: _M_key() const noexcept { return key(); } +16166: +16166: template +16166: friend class _Rb_tree; +16166: +16166: template +16166: friend class _Hashtable; +16166: }; +16166: +16166: +16166: template +16166: class _Node_handle<_Value, _Value, _NodeAlloc> +16166: : public _Node_handle_common<_Value, _NodeAlloc> +16166: { +16166: public: +16166: constexpr _Node_handle() noexcept = default; +16166: ~_Node_handle() = default; +16166: _Node_handle(_Node_handle&&) noexcept = default; +16166: +16166: _Node_handle& +16166: operator=(_Node_handle&&) noexcept = default; +16166: +16166: using value_type = _Value; +16166: +16166: value_type& +16166: value() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!this->empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return *this->_M_ptr->_M_valptr(); +16166: } +16166: +16166: void +16166: swap(_Node_handle& __nh) noexcept +16166: { this->_M_swap(__nh); } +16166: +16166: friend void +16166: swap(_Node_handle& __x, _Node_handle& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: private: +16166: using _AllocTraits = allocator_traits<_NodeAlloc>; +16166: +16166: _Node_handle(typename _AllocTraits::pointer __ptr, +16166: const _NodeAlloc& __alloc) +16166: : _Node_handle_common<_Value, _NodeAlloc>(__ptr, __alloc) { } +16166: +16166: const value_type& +16166: _M_key() const noexcept { return value(); } +16166: +16166: template +16166: friend class _Rb_tree; +16166: +16166: template +16166: friend class _Hashtable; +16166: }; +16166: +16166: +16166: template +16166: struct _Node_insert_return +16166: { +16166: _Iterator position = _Iterator(); +16166: bool inserted = false; +16166: _NodeHandle node; +16166: }; +16166: +16166: +16166: +16166: +16166: } +16166: # 40 "/usr/include/c++/14/bits/hashtable.h" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: using __cache_default +16166: = __not_<__and_< +16166: __is_fast_hash<_Hash>, +16166: +16166: __is_nothrow_invocable>>; +16166: +16166: +16166: +16166: +16166: template +16166: using _Hashtable_enable_default_ctor +16166: = _Enable_default_constructor<__and_, +16166: is_default_constructible<_Hash>, +16166: is_default_constructible<_Allocator>>{}, +16166: __detail::_Hash_node_base>; +16166: # 181 "/usr/include/c++/14/bits/hashtable.h" 3 +16166: template +16166: class _Hashtable +16166: : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _Traits>, +16166: public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>, +16166: public __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>, +16166: public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>, +16166: public __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>, +16166: private __detail::_Hashtable_alloc< +16166: __alloc_rebind<_Alloc, +16166: __detail::_Hash_node<_Value, +16166: _Traits::__hash_cached::value>>>, +16166: private _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc> +16166: { +16166: static_assert(is_same::type, _Value>::value, +16166: "unordered container must have a non-const, non-volatile value_type"); +16166: +16166: +16166: +16166: +16166: +16166: using __traits_type = _Traits; +16166: using __hash_cached = typename __traits_type::__hash_cached; +16166: using __constant_iterators = typename __traits_type::__constant_iterators; +16166: using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; +16166: using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; +16166: +16166: using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; +16166: +16166: using __node_value_type = +16166: __detail::_Hash_node_value<_Value, __hash_cached::value>; +16166: using __node_ptr = typename __hashtable_alloc::__node_ptr; +16166: using __value_alloc_traits = +16166: typename __hashtable_alloc::__value_alloc_traits; +16166: using __node_alloc_traits = +16166: typename __hashtable_alloc::__node_alloc_traits; +16166: using __node_base = typename __hashtable_alloc::__node_base; +16166: using __node_base_ptr = typename __hashtable_alloc::__node_base_ptr; +16166: using __buckets_ptr = typename __hashtable_alloc::__buckets_ptr; +16166: +16166: using __insert_base = __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, +16166: _Equal, _Hash, +16166: _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: using __enable_default_ctor +16166: = _Hashtable_enable_default_ctor<_Equal, _Hash, _Alloc>; +16166: using __rehash_guard_t +16166: = __detail::_RehashStateGuard<_RehashPolicy>; +16166: +16166: public: +16166: typedef _Key key_type; +16166: typedef _Value value_type; +16166: typedef _Alloc allocator_type; +16166: typedef _Equal key_equal; +16166: +16166: +16166: +16166: typedef typename __value_alloc_traits::pointer pointer; +16166: typedef typename __value_alloc_traits::const_pointer const_pointer; +16166: typedef value_type& reference; +16166: typedef const value_type& const_reference; +16166: +16166: using iterator = typename __insert_base::iterator; +16166: +16166: using const_iterator = typename __insert_base::const_iterator; +16166: +16166: using local_iterator = __detail::_Local_iterator; +16166: +16166: using const_local_iterator = __detail::_Local_const_iterator< +16166: key_type, _Value, +16166: _ExtractKey, _Hash, _RangeHash, _Unused, +16166: __constant_iterators::value, __hash_cached::value>; +16166: +16166: private: +16166: using __rehash_type = _RehashPolicy; +16166: +16166: using __unique_keys = typename __traits_type::__unique_keys; +16166: +16166: using __hashtable_base = __detail:: +16166: _Hashtable_base<_Key, _Value, _ExtractKey, +16166: _Equal, _Hash, _RangeHash, _Unused, _Traits>; +16166: +16166: using __hash_code_base = typename __hashtable_base::__hash_code_base; +16166: using __hash_code = typename __hashtable_base::__hash_code; +16166: using __ireturn_type = typename __insert_base::__ireturn_type; +16166: +16166: using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, +16166: _Equal, _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: +16166: using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, +16166: _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: +16166: using __eq_base = __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, +16166: _Equal, _Hash, _RangeHash, _Unused, +16166: _RehashPolicy, _Traits>; +16166: +16166: using __reuse_or_alloc_node_gen_t = +16166: __detail::_ReuseOrAllocNode<__node_alloc_type>; +16166: using __alloc_node_gen_t = +16166: __detail::_AllocNode<__node_alloc_type>; +16166: using __node_builder_t = +16166: __detail::_NodeBuilder<_ExtractKey>; +16166: +16166: +16166: struct _Scoped_node +16166: { +16166: +16166: _Scoped_node(__node_ptr __n, __hashtable_alloc* __h) +16166: : _M_h(__h), _M_node(__n) { } +16166: +16166: +16166: template +16166: _Scoped_node(__hashtable_alloc* __h, _Args&&... __args) +16166: : _M_h(__h), +16166: _M_node(__h->_M_allocate_node(std::forward<_Args>(__args)...)) +16166: { } +16166: +16166: +16166: ~_Scoped_node() { if (_M_node) _M_h->_M_deallocate_node(_M_node); }; +16166: +16166: _Scoped_node(const _Scoped_node&) = delete; +16166: _Scoped_node& operator=(const _Scoped_node&) = delete; +16166: +16166: __hashtable_alloc* _M_h; +16166: __node_ptr _M_node; +16166: }; +16166: +16166: template +16166: static constexpr +16166: __conditional_t::value, +16166: const value_type&, value_type&&> +16166: __fwd_value_for(value_type& __val) noexcept +16166: { return std::move(__val); } +16166: +16166: +16166: +16166: +16166: +16166: struct __hash_code_base_access : __hash_code_base +16166: { using __hash_code_base::_M_bucket_index; }; +16166: +16166: +16166: static_assert(is_nothrow_default_constructible<_RangeHash>::value, +16166: "Functor used to map hash code to bucket index" +16166: " must be nothrow default constructible"); +16166: static_assert(noexcept( +16166: std::declval()((std::size_t)0, (std::size_t)0)), +16166: "Functor used to map hash code to bucket index must be" +16166: " noexcept"); +16166: +16166: +16166: static_assert(is_nothrow_default_constructible<_ExtractKey>::value, +16166: "_ExtractKey must be nothrow default constructible"); +16166: static_assert(noexcept( +16166: std::declval()(std::declval<_Value>())), +16166: "_ExtractKey functor must be noexcept invocable"); +16166: +16166: template +16166: friend struct __detail::_Map_base; +16166: +16166: template +16166: friend struct __detail::_Insert_base; +16166: +16166: template +16166: friend struct __detail::_Insert; +16166: +16166: template +16166: friend struct __detail::_Equality; +16166: +16166: public: +16166: using size_type = typename __hashtable_base::size_type; +16166: using difference_type = typename __hashtable_base::difference_type; +16166: +16166: +16166: using node_type = _Node_handle<_Key, _Value, __node_alloc_type>; +16166: using insert_return_type = _Node_insert_return; +16166: +16166: +16166: private: +16166: __buckets_ptr _M_buckets = &_M_single_bucket; +16166: size_type _M_bucket_count = 1; +16166: __node_base _M_before_begin; +16166: size_type _M_element_count = 0; +16166: _RehashPolicy _M_rehash_policy; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __node_base_ptr _M_single_bucket = nullptr; +16166: +16166: void +16166: _M_update_bbegin() +16166: { +16166: if (auto __begin = _M_begin()) +16166: _M_buckets[_M_bucket_index(*__begin)] = &_M_before_begin; +16166: } +16166: +16166: void +16166: _M_update_bbegin(__node_ptr __n) +16166: { +16166: _M_before_begin._M_nxt = __n; +16166: _M_update_bbegin(); +16166: } +16166: +16166: bool +16166: _M_uses_single_bucket(__buckets_ptr __bkts) const +16166: { return __builtin_expect(__bkts == &_M_single_bucket, false); } +16166: +16166: bool +16166: _M_uses_single_bucket() const +16166: { return _M_uses_single_bucket(_M_buckets); } +16166: +16166: static constexpr size_t +16166: __small_size_threshold() noexcept +16166: { +16166: return +16166: __detail::_Hashtable_hash_traits<_Hash>::__small_size_threshold(); +16166: } +16166: +16166: __hashtable_alloc& +16166: _M_base_alloc() { return *this; } +16166: +16166: __buckets_ptr +16166: _M_allocate_buckets(size_type __bkt_count) +16166: { +16166: if (__builtin_expect(__bkt_count == 1, false)) +16166: { +16166: _M_single_bucket = nullptr; +16166: return &_M_single_bucket; +16166: } +16166: +16166: return __hashtable_alloc::_M_allocate_buckets(__bkt_count); +16166: } +16166: +16166: void +16166: _M_deallocate_buckets(__buckets_ptr __bkts, size_type __bkt_count) +16166: { +16166: if (_M_uses_single_bucket(__bkts)) +16166: return; +16166: +16166: __hashtable_alloc::_M_deallocate_buckets(__bkts, __bkt_count); +16166: } +16166: +16166: void +16166: _M_deallocate_buckets() +16166: { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } +16166: +16166: +16166: +16166: __node_ptr +16166: _M_bucket_begin(size_type __bkt) const +16166: { +16166: __node_base_ptr __n = _M_buckets[__bkt]; +16166: return __n ? static_cast<__node_ptr>(__n->_M_nxt) : nullptr; +16166: } +16166: +16166: __node_ptr +16166: _M_begin() const +16166: { return static_cast<__node_ptr>(_M_before_begin._M_nxt); } +16166: +16166: +16166: +16166: template +16166: void +16166: _M_assign_elements(_Ht&&); +16166: +16166: template +16166: void +16166: _M_assign(_Ht&&, const _NodeGenerator&); +16166: +16166: void +16166: _M_move_assign(_Hashtable&&, true_type); +16166: +16166: void +16166: _M_move_assign(_Hashtable&&, false_type); +16166: +16166: void +16166: _M_reset() noexcept; +16166: +16166: _Hashtable(const _Hash& __h, const _Equal& __eq, +16166: const allocator_type& __a) +16166: : __hashtable_base(__h, __eq), +16166: __hashtable_alloc(__node_alloc_type(__a)), +16166: __enable_default_ctor(_Enable_default_constructor_tag{}) +16166: { } +16166: +16166: template +16166: static constexpr bool +16166: _S_nothrow_move() +16166: { +16166: +16166: +16166: +16166: +16166: +16166: if constexpr (_No_realloc) +16166: if constexpr (is_nothrow_copy_constructible<_Hash>()) +16166: return is_nothrow_copy_constructible<_Equal>(); +16166: return false; +16166: +16166: } +16166: +16166: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, +16166: true_type ) +16166: noexcept(_S_nothrow_move()); +16166: +16166: _Hashtable(_Hashtable&&, __node_alloc_type&&, +16166: false_type ); +16166: +16166: template +16166: _Hashtable(_InputIterator __first, _InputIterator __last, +16166: size_type __bkt_count_hint, +16166: const _Hash&, const _Equal&, const allocator_type&, +16166: true_type __uks); +16166: +16166: template +16166: _Hashtable(_InputIterator __first, _InputIterator __last, +16166: size_type __bkt_count_hint, +16166: const _Hash&, const _Equal&, const allocator_type&, +16166: false_type __uks); +16166: +16166: public: +16166: +16166: _Hashtable() = default; +16166: +16166: _Hashtable(const _Hashtable&); +16166: +16166: _Hashtable(const _Hashtable&, const allocator_type&); +16166: +16166: explicit +16166: _Hashtable(size_type __bkt_count_hint, +16166: const _Hash& __hf = _Hash(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()); +16166: +16166: +16166: _Hashtable(_Hashtable&& __ht) +16166: noexcept(_S_nothrow_move()) +16166: : _Hashtable(std::move(__ht), std::move(__ht._M_node_allocator()), +16166: true_type{}) +16166: { } +16166: +16166: _Hashtable(_Hashtable&& __ht, const allocator_type& __a) +16166: noexcept(_S_nothrow_move<__node_alloc_traits::_S_always_equal()>()) +16166: : _Hashtable(std::move(__ht), __node_alloc_type(__a), +16166: typename __node_alloc_traits::is_always_equal{}) +16166: { } +16166: +16166: explicit +16166: _Hashtable(const allocator_type& __a) +16166: : __hashtable_alloc(__node_alloc_type(__a)), +16166: __enable_default_ctor(_Enable_default_constructor_tag{}) +16166: { } +16166: +16166: template +16166: _Hashtable(_InputIterator __f, _InputIterator __l, +16166: size_type __bkt_count_hint = 0, +16166: const _Hash& __hf = _Hash(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _Hashtable(__f, __l, __bkt_count_hint, __hf, __eql, __a, +16166: __unique_keys{}) +16166: { } +16166: +16166: _Hashtable(initializer_list __l, +16166: size_type __bkt_count_hint = 0, +16166: const _Hash& __hf = _Hash(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _Hashtable(__l.begin(), __l.end(), __bkt_count_hint, +16166: __hf, __eql, __a, __unique_keys{}) +16166: { } +16166: +16166: _Hashtable& +16166: operator=(const _Hashtable& __ht); +16166: +16166: _Hashtable& +16166: operator=(_Hashtable&& __ht) +16166: noexcept(__node_alloc_traits::_S_nothrow_move() +16166: && is_nothrow_move_assignable<_Hash>::value +16166: && is_nothrow_move_assignable<_Equal>::value) +16166: { +16166: constexpr bool __move_storage = +16166: __node_alloc_traits::_S_propagate_on_move_assign() +16166: || __node_alloc_traits::_S_always_equal(); +16166: _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); +16166: return *this; +16166: } +16166: +16166: _Hashtable& +16166: operator=(initializer_list __l) +16166: { +16166: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); +16166: _M_before_begin._M_nxt = nullptr; +16166: clear(); +16166: +16166: +16166: auto __l_bkt_count = _M_rehash_policy._M_bkt_for_elements(__l.size()); +16166: +16166: +16166: if (_M_bucket_count < __l_bkt_count) +16166: rehash(__l_bkt_count); +16166: +16166: this->_M_insert_range(__l.begin(), __l.end(), __roan, __unique_keys{}); +16166: return *this; +16166: } +16166: +16166: ~_Hashtable() noexcept; +16166: +16166: void +16166: swap(_Hashtable&) +16166: noexcept(__and_<__is_nothrow_swappable<_Hash>, +16166: __is_nothrow_swappable<_Equal>>::value); +16166: +16166: +16166: iterator +16166: begin() noexcept +16166: { return iterator(_M_begin()); } +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return const_iterator(_M_begin()); } +16166: +16166: iterator +16166: end() noexcept +16166: { return iterator(nullptr); } +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return const_iterator(nullptr); } +16166: +16166: const_iterator +16166: cbegin() const noexcept +16166: { return const_iterator(_M_begin()); } +16166: +16166: const_iterator +16166: cend() const noexcept +16166: { return const_iterator(nullptr); } +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_element_count; } +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return size() == 0; } +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(this->_M_node_allocator()); } +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return __node_alloc_traits::max_size(this->_M_node_allocator()); } +16166: +16166: +16166: key_equal +16166: key_eq() const +16166: { return this->_M_eq(); } +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket_count() const noexcept +16166: { return _M_bucket_count; } +16166: +16166: size_type +16166: max_bucket_count() const noexcept +16166: { return max_size(); } +16166: +16166: size_type +16166: bucket_size(size_type __bkt) const +16166: { return std::distance(begin(__bkt), end(__bkt)); } +16166: +16166: size_type +16166: bucket(const key_type& __k) const +16166: { return _M_bucket_index(this->_M_hash_code(__k)); } +16166: +16166: local_iterator +16166: begin(size_type __bkt) +16166: { +16166: return local_iterator(*this, _M_bucket_begin(__bkt), +16166: __bkt, _M_bucket_count); +16166: } +16166: +16166: local_iterator +16166: end(size_type __bkt) +16166: { return local_iterator(*this, nullptr, __bkt, _M_bucket_count); } +16166: +16166: const_local_iterator +16166: begin(size_type __bkt) const +16166: { +16166: return const_local_iterator(*this, _M_bucket_begin(__bkt), +16166: __bkt, _M_bucket_count); +16166: } +16166: +16166: const_local_iterator +16166: end(size_type __bkt) const +16166: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } +16166: +16166: +16166: const_local_iterator +16166: cbegin(size_type __bkt) const +16166: { +16166: return const_local_iterator(*this, _M_bucket_begin(__bkt), +16166: __bkt, _M_bucket_count); +16166: } +16166: +16166: const_local_iterator +16166: cend(size_type __bkt) const +16166: { return const_local_iterator(*this, nullptr, __bkt, _M_bucket_count); } +16166: +16166: float +16166: load_factor() const noexcept +16166: { +16166: return static_cast(size()) / static_cast(bucket_count()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const _RehashPolicy& +16166: __rehash_policy() const +16166: { return _M_rehash_policy; } +16166: +16166: void +16166: __rehash_policy(const _RehashPolicy& __pol) +16166: { _M_rehash_policy = __pol; } +16166: +16166: +16166: iterator +16166: find(const key_type& __k); +16166: +16166: const_iterator +16166: find(const key_type& __k) const; +16166: +16166: size_type +16166: count(const key_type& __k) const; +16166: +16166: std::pair +16166: equal_range(const key_type& __k); +16166: +16166: std::pair +16166: equal_range(const key_type& __k) const; +16166: # 796 "/usr/include/c++/14/bits/hashtable.h" 3 +16166: private: +16166: +16166: size_type +16166: _M_bucket_index(const __node_value_type& __n) const noexcept +16166: { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } +16166: +16166: size_type +16166: _M_bucket_index(__hash_code __c) const +16166: { return __hash_code_base::_M_bucket_index(__c, _M_bucket_count); } +16166: +16166: __node_base_ptr +16166: _M_find_before_node(const key_type&); +16166: +16166: +16166: +16166: __node_base_ptr +16166: _M_find_before_node(size_type, const key_type&, __hash_code) const; +16166: +16166: template +16166: __node_base_ptr +16166: _M_find_before_node_tr(size_type, const _Kt&, __hash_code) const; +16166: +16166: __node_ptr +16166: _M_find_node(size_type __bkt, const key_type& __key, +16166: __hash_code __c) const +16166: { +16166: __node_base_ptr __before_n = _M_find_before_node(__bkt, __key, __c); +16166: if (__before_n) +16166: return static_cast<__node_ptr>(__before_n->_M_nxt); +16166: return nullptr; +16166: } +16166: +16166: template +16166: __node_ptr +16166: _M_find_node_tr(size_type __bkt, const _Kt& __key, +16166: __hash_code __c) const +16166: { +16166: auto __before_n = _M_find_before_node_tr(__bkt, __key, __c); +16166: if (__before_n) +16166: return static_cast<__node_ptr>(__before_n->_M_nxt); +16166: return nullptr; +16166: } +16166: +16166: +16166: void +16166: _M_insert_bucket_begin(size_type __bkt, __node_ptr __node) +16166: { +16166: if (_M_buckets[__bkt]) +16166: { +16166: +16166: +16166: __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; +16166: _M_buckets[__bkt]->_M_nxt = __node; +16166: } +16166: else +16166: { +16166: +16166: +16166: +16166: __node->_M_nxt = _M_before_begin._M_nxt; +16166: _M_before_begin._M_nxt = __node; +16166: +16166: if (__node->_M_nxt) +16166: +16166: +16166: _M_buckets[_M_bucket_index(*__node->_M_next())] = __node; +16166: +16166: _M_buckets[__bkt] = &_M_before_begin; +16166: } +16166: } +16166: +16166: +16166: void +16166: _M_remove_bucket_begin(size_type __bkt, __node_ptr __next_n, +16166: size_type __next_bkt) +16166: { +16166: if (!__next_n) +16166: _M_buckets[__bkt] = nullptr; +16166: else if (__next_bkt != __bkt) +16166: { +16166: _M_buckets[__next_bkt] = _M_buckets[__bkt]; +16166: _M_buckets[__bkt] = nullptr; +16166: } +16166: } +16166: +16166: +16166: __node_base_ptr +16166: _M_get_previous_node(size_type __bkt, __node_ptr __n); +16166: +16166: pair<__node_ptr, __hash_code> +16166: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: _M_insert_unique_node(size_type __bkt, __hash_code, +16166: __node_ptr __n, size_type __n_elt = 1); +16166: +16166: +16166: +16166: iterator +16166: _M_insert_multi_node(__node_ptr __hint, +16166: __hash_code __code, __node_ptr __n); +16166: +16166: template +16166: std::pair +16166: _M_emplace(true_type __uks, _Args&&... __args); +16166: +16166: template +16166: iterator +16166: _M_emplace(false_type __uks, _Args&&... __args) +16166: { return _M_emplace(cend(), __uks, std::forward<_Args>(__args)...); } +16166: +16166: +16166: template +16166: iterator +16166: _M_emplace(const_iterator, true_type __uks, _Args&&... __args) +16166: { return _M_emplace(__uks, std::forward<_Args>(__args)...).first; } +16166: +16166: template +16166: iterator +16166: _M_emplace(const_iterator, false_type __uks, _Args&&... __args); +16166: +16166: template +16166: std::pair +16166: _M_insert_unique(_Kt&&, _Arg&&, const _NodeGenerator&); +16166: +16166: template +16166: static __conditional_t< +16166: __and_<__is_nothrow_invocable<_Hash&, const key_type&>, +16166: __not_<__is_nothrow_invocable<_Hash&, _Kt>>>::value, +16166: key_type, _Kt&&> +16166: _S_forward_key(_Kt&& __k) +16166: { return std::forward<_Kt>(__k); } +16166: +16166: static const key_type& +16166: _S_forward_key(const key_type& __k) +16166: { return __k; } +16166: +16166: static key_type&& +16166: _S_forward_key(key_type&& __k) +16166: { return std::move(__k); } +16166: +16166: template +16166: std::pair +16166: _M_insert_unique_aux(_Arg&& __arg, const _NodeGenerator& __node_gen) +16166: { +16166: return _M_insert_unique( +16166: _S_forward_key(_ExtractKey{}(std::forward<_Arg>(__arg))), +16166: std::forward<_Arg>(__arg), __node_gen); +16166: } +16166: +16166: template +16166: std::pair +16166: _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen, +16166: true_type ) +16166: { +16166: using __to_value +16166: = __detail::_ConvertToValueType<_ExtractKey, value_type>; +16166: return _M_insert_unique_aux( +16166: __to_value{}(std::forward<_Arg>(__arg)), __node_gen); +16166: } +16166: +16166: template +16166: iterator +16166: _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen, +16166: false_type __uks) +16166: { +16166: using __to_value +16166: = __detail::_ConvertToValueType<_ExtractKey, value_type>; +16166: return _M_insert(cend(), +16166: __to_value{}(std::forward<_Arg>(__arg)), __node_gen, __uks); +16166: } +16166: +16166: +16166: template +16166: iterator +16166: _M_insert(const_iterator, _Arg&& __arg, +16166: const _NodeGenerator& __node_gen, true_type __uks) +16166: { +16166: return +16166: _M_insert(std::forward<_Arg>(__arg), __node_gen, __uks).first; +16166: } +16166: +16166: +16166: template +16166: iterator +16166: _M_insert(const_iterator, _Arg&&, +16166: const _NodeGenerator&, false_type __uks); +16166: +16166: size_type +16166: _M_erase(true_type __uks, const key_type&); +16166: +16166: size_type +16166: _M_erase(false_type __uks, const key_type&); +16166: +16166: iterator +16166: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n); +16166: +16166: public: +16166: +16166: template +16166: __ireturn_type +16166: emplace(_Args&&... __args) +16166: { return _M_emplace(__unique_keys{}, std::forward<_Args>(__args)...); } +16166: +16166: template +16166: iterator +16166: emplace_hint(const_iterator __hint, _Args&&... __args) +16166: { +16166: return _M_emplace(__hint, __unique_keys{}, +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: +16166: +16166: iterator +16166: erase(const_iterator); +16166: +16166: +16166: +16166: iterator +16166: erase(iterator __it) +16166: { return erase(const_iterator(__it)); } +16166: +16166: size_type +16166: erase(const key_type& __k) +16166: { return _M_erase(__unique_keys{}, __k); } +16166: +16166: iterator +16166: erase(const_iterator, const_iterator); +16166: +16166: void +16166: clear() noexcept; +16166: +16166: +16166: +16166: void rehash(size_type __bkt_count); +16166: +16166: +16166: +16166: +16166: +16166: +16166: insert_return_type +16166: _M_reinsert_node(node_type&& __nh) +16166: { +16166: insert_return_type __ret; +16166: if (__nh.empty()) +16166: __ret.position = end(); +16166: else +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __nh.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __node_ptr __n = nullptr; +16166: const key_type& __k = __nh._M_key(); +16166: const size_type __size = size(); +16166: if (__size <= __small_size_threshold()) +16166: { +16166: for (__n = _M_begin(); __n; __n = __n->_M_next()) +16166: if (this->_M_key_equals(__k, *__n)) +16166: break; +16166: } +16166: +16166: __hash_code __code; +16166: size_type __bkt; +16166: if (!__n) +16166: { +16166: __code = this->_M_hash_code(__k); +16166: __bkt = _M_bucket_index(__code); +16166: if (__size > __small_size_threshold()) +16166: __n = _M_find_node(__bkt, __k, __code); +16166: } +16166: +16166: if (__n) +16166: { +16166: __ret.node = std::move(__nh); +16166: __ret.position = iterator(__n); +16166: __ret.inserted = false; +16166: } +16166: else +16166: { +16166: __ret.position +16166: = _M_insert_unique_node(__bkt, __code, __nh._M_ptr); +16166: __nh.release(); +16166: __ret.inserted = true; +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: iterator +16166: _M_reinsert_node_multi(const_iterator __hint, node_type&& __nh) +16166: { +16166: if (__nh.empty()) +16166: return end(); +16166: +16166: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __nh.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: const key_type& __k = __nh._M_key(); +16166: auto __code = this->_M_hash_code(__k); +16166: auto __ret +16166: = _M_insert_multi_node(__hint._M_cur, __code, __nh._M_ptr); +16166: __nh.release(); +16166: return __ret; +16166: } +16166: +16166: private: +16166: node_type +16166: _M_extract_node(size_t __bkt, __node_base_ptr __prev_n) +16166: { +16166: __node_ptr __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +16166: if (__prev_n == _M_buckets[__bkt]) +16166: _M_remove_bucket_begin(__bkt, __n->_M_next(), +16166: __n->_M_nxt ? _M_bucket_index(*__n->_M_next()) : 0); +16166: else if (__n->_M_nxt) +16166: { +16166: size_type __next_bkt = _M_bucket_index(*__n->_M_next()); +16166: if (__next_bkt != __bkt) +16166: _M_buckets[__next_bkt] = __prev_n; +16166: } +16166: +16166: __prev_n->_M_nxt = __n->_M_nxt; +16166: __n->_M_nxt = nullptr; +16166: --_M_element_count; +16166: return { __n, this->_M_node_allocator() }; +16166: } +16166: +16166: +16166: +16166: template +16166: __hash_code +16166: _M_src_hash_code(const _H2&, const key_type& __k, +16166: const __node_value_type& __src_n) const +16166: { +16166: if constexpr (std::is_same_v<_H2, _Hash>) +16166: if constexpr (std::is_empty_v<_Hash>) +16166: return this->_M_hash_code(__src_n); +16166: +16166: return this->_M_hash_code(__k); +16166: } +16166: +16166: public: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: size_t __bkt = _M_bucket_index(*__pos._M_cur); +16166: return _M_extract_node(__bkt, +16166: _M_get_previous_node(__bkt, __pos._M_cur)); +16166: } +16166: +16166: +16166: node_type +16166: extract(const _Key& __k) +16166: { +16166: node_type __nh; +16166: __hash_code __code = this->_M_hash_code(__k); +16166: std::size_t __bkt = _M_bucket_index(__code); +16166: if (__node_base_ptr __prev_node = _M_find_before_node(__bkt, __k, __code)) +16166: __nh = _M_extract_node(__bkt, __prev_node); +16166: return __nh; +16166: } +16166: +16166: +16166: template +16166: void +16166: _M_merge_unique(_Compatible_Hashtable& __src) +16166: { +16166: static_assert(is_same_v, "Node types are compatible"); +16166: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __src.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: auto __n_elt = __src.size(); +16166: for (auto __i = __src.cbegin(), __end = __src.cend(); __i != __end;) +16166: { +16166: auto __pos = __i++; +16166: const size_type __size = size(); +16166: const key_type& __k = _ExtractKey{}(*__pos); +16166: if (__size <= __small_size_threshold()) +16166: { +16166: bool __found = false; +16166: for (auto __n = _M_begin(); __n; __n = __n->_M_next()) +16166: if (this->_M_key_equals(__k, *__n)) +16166: { +16166: __found = true; +16166: break; +16166: } +16166: +16166: if (__found) +16166: { +16166: if (__n_elt != 1) +16166: --__n_elt; +16166: continue; +16166: } +16166: } +16166: +16166: __hash_code __code +16166: = _M_src_hash_code(__src.hash_function(), __k, *__pos._M_cur); +16166: size_type __bkt = _M_bucket_index(__code); +16166: if (__size <= __small_size_threshold() +16166: || _M_find_node(__bkt, __k, __code) == nullptr) +16166: { +16166: auto __nh = __src.extract(__pos); +16166: _M_insert_unique_node(__bkt, __code, __nh._M_ptr, __n_elt); +16166: __nh.release(); +16166: __n_elt = 1; +16166: } +16166: else if (__n_elt != 1) +16166: --__n_elt; +16166: } +16166: } +16166: +16166: +16166: template +16166: void +16166: _M_merge_multi(_Compatible_Hashtable& __src) +16166: { +16166: static_assert(is_same_v, "Node types are compatible"); +16166: do { if (std::__is_constant_evaluated() && !bool(get_allocator() == __src.get_allocator())) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __node_ptr __hint = nullptr; +16166: this->reserve(size() + __src.size()); +16166: for (auto __i = __src.cbegin(), __end = __src.cend(); __i != __end;) +16166: { +16166: auto __pos = __i++; +16166: const key_type& __k = _ExtractKey{}(*__pos); +16166: __hash_code __code +16166: = _M_src_hash_code(__src.hash_function(), __k, *__pos._M_cur); +16166: auto __nh = __src.extract(__pos); +16166: __hint = _M_insert_multi_node(__hint, __code, __nh._M_ptr)._M_cur; +16166: __nh.release(); +16166: } +16166: } +16166: +16166: +16166: private: +16166: +16166: void _M_rehash(size_type __bkt_count, true_type __uks); +16166: +16166: +16166: void _M_rehash(size_type __bkt_count, false_type __uks); +16166: }; +16166: +16166: +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _Hashtable(size_type __bkt_count_hint, +16166: const _Hash& __h, const _Equal& __eq, const allocator_type& __a) +16166: : _Hashtable(__h, __eq, __a) +16166: { +16166: auto __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count_hint); +16166: if (__bkt_count > _M_bucket_count) +16166: { +16166: _M_buckets = _M_allocate_buckets(__bkt_count); +16166: _M_bucket_count = __bkt_count; +16166: } +16166: } +16166: +16166: template +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _Hashtable(_InputIterator __f, _InputIterator __l, +16166: size_type __bkt_count_hint, +16166: const _Hash& __h, const _Equal& __eq, +16166: const allocator_type& __a, true_type ) +16166: : _Hashtable(__bkt_count_hint, __h, __eq, __a) +16166: { this->insert(__f, __l); } +16166: +16166: template +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _Hashtable(_InputIterator __f, _InputIterator __l, +16166: size_type __bkt_count_hint, +16166: const _Hash& __h, const _Equal& __eq, +16166: const allocator_type& __a, false_type __uks) +16166: : _Hashtable(__h, __eq, __a) +16166: { +16166: auto __nb_elems = __detail::__distance_fw(__f, __l); +16166: auto __bkt_count = +16166: _M_rehash_policy._M_next_bkt( +16166: std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), +16166: __bkt_count_hint)); +16166: +16166: if (__bkt_count > _M_bucket_count) +16166: { +16166: _M_buckets = _M_allocate_buckets(__bkt_count); +16166: _M_bucket_count = __bkt_count; +16166: } +16166: +16166: __alloc_node_gen_t __node_gen(*this); +16166: for (; __f != __l; ++__f) +16166: _M_insert(*__f, __node_gen, __uks); +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: operator=(const _Hashtable& __ht) +16166: -> _Hashtable& +16166: { +16166: if (&__ht == this) +16166: return *this; +16166: +16166: if (__node_alloc_traits::_S_propagate_on_copy_assign()) +16166: { +16166: auto& __this_alloc = this->_M_node_allocator(); +16166: auto& __that_alloc = __ht._M_node_allocator(); +16166: if (!__node_alloc_traits::_S_always_equal() +16166: && __this_alloc != __that_alloc) +16166: { +16166: +16166: this->_M_deallocate_nodes(_M_begin()); +16166: _M_before_begin._M_nxt = nullptr; +16166: _M_deallocate_buckets(); +16166: _M_buckets = nullptr; +16166: std::__alloc_on_copy(__this_alloc, __that_alloc); +16166: __hashtable_base::operator=(__ht); +16166: _M_bucket_count = __ht._M_bucket_count; +16166: _M_element_count = __ht._M_element_count; +16166: _M_rehash_policy = __ht._M_rehash_policy; +16166: __alloc_node_gen_t __alloc_node_gen(*this); +16166: try +16166: { +16166: _M_assign(__ht, __alloc_node_gen); +16166: } +16166: catch(...) +16166: { +16166: +16166: +16166: _M_reset(); +16166: throw; +16166: } +16166: return *this; +16166: } +16166: std::__alloc_on_copy(__this_alloc, __that_alloc); +16166: } +16166: +16166: +16166: _M_assign_elements(__ht); +16166: return *this; +16166: } +16166: +16166: template +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_assign_elements(_Ht&& __ht) +16166: { +16166: __buckets_ptr __former_buckets = nullptr; +16166: std::size_t __former_bucket_count = _M_bucket_count; +16166: __rehash_guard_t __rehash_guard(_M_rehash_policy); +16166: +16166: if (_M_bucket_count != __ht._M_bucket_count) +16166: { +16166: __former_buckets = _M_buckets; +16166: _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); +16166: _M_bucket_count = __ht._M_bucket_count; +16166: } +16166: else +16166: __builtin_memset(_M_buckets, 0, +16166: _M_bucket_count * sizeof(__node_base_ptr)); +16166: +16166: try +16166: { +16166: __hashtable_base::operator=(std::forward<_Ht>(__ht)); +16166: _M_element_count = __ht._M_element_count; +16166: _M_rehash_policy = __ht._M_rehash_policy; +16166: __reuse_or_alloc_node_gen_t __roan(_M_begin(), *this); +16166: _M_before_begin._M_nxt = nullptr; +16166: _M_assign(std::forward<_Ht>(__ht), __roan); +16166: if (__former_buckets) +16166: _M_deallocate_buckets(__former_buckets, __former_bucket_count); +16166: __rehash_guard._M_guarded_obj = nullptr; +16166: } +16166: catch(...) +16166: { +16166: if (__former_buckets) +16166: { +16166: +16166: _M_deallocate_buckets(); +16166: _M_buckets = __former_buckets; +16166: _M_bucket_count = __former_bucket_count; +16166: } +16166: __builtin_memset(_M_buckets, 0, +16166: _M_bucket_count * sizeof(__node_base_ptr)); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_assign(_Ht&& __ht, const _NodeGenerator& __node_gen) +16166: { +16166: __buckets_ptr __buckets = nullptr; +16166: if (!_M_buckets) +16166: _M_buckets = __buckets = _M_allocate_buckets(_M_bucket_count); +16166: +16166: try +16166: { +16166: if (!__ht._M_before_begin._M_nxt) +16166: return; +16166: +16166: +16166: +16166: __node_ptr __ht_n = __ht._M_begin(); +16166: __node_ptr __this_n +16166: = __node_gen(__fwd_value_for<_Ht>(__ht_n->_M_v())); +16166: this->_M_copy_code(*__this_n, *__ht_n); +16166: _M_update_bbegin(__this_n); +16166: +16166: +16166: __node_ptr __prev_n = __this_n; +16166: for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) +16166: { +16166: __this_n = __node_gen(__fwd_value_for<_Ht>(__ht_n->_M_v())); +16166: __prev_n->_M_nxt = __this_n; +16166: this->_M_copy_code(*__this_n, *__ht_n); +16166: size_type __bkt = _M_bucket_index(*__this_n); +16166: if (!_M_buckets[__bkt]) +16166: _M_buckets[__bkt] = __prev_n; +16166: __prev_n = __this_n; +16166: } +16166: } +16166: catch(...) +16166: { +16166: clear(); +16166: if (__buckets) +16166: _M_deallocate_buckets(); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_reset() noexcept +16166: { +16166: _M_rehash_policy._M_reset(); +16166: _M_bucket_count = 1; +16166: _M_single_bucket = nullptr; +16166: _M_buckets = &_M_single_bucket; +16166: _M_before_begin._M_nxt = nullptr; +16166: _M_element_count = 0; +16166: } +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_move_assign(_Hashtable&& __ht, true_type) +16166: { +16166: if (__builtin_expect(std::__addressof(__ht) == this, false)) +16166: return; +16166: +16166: this->_M_deallocate_nodes(_M_begin()); +16166: _M_deallocate_buckets(); +16166: __hashtable_base::operator=(std::move(__ht)); +16166: _M_rehash_policy = __ht._M_rehash_policy; +16166: if (!__ht._M_uses_single_bucket()) +16166: _M_buckets = __ht._M_buckets; +16166: else +16166: { +16166: _M_buckets = &_M_single_bucket; +16166: _M_single_bucket = __ht._M_single_bucket; +16166: } +16166: +16166: _M_bucket_count = __ht._M_bucket_count; +16166: _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; +16166: _M_element_count = __ht._M_element_count; +16166: std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); +16166: +16166: +16166: _M_update_bbegin(); +16166: __ht._M_reset(); +16166: } +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_move_assign(_Hashtable&& __ht, false_type) +16166: { +16166: if (__ht._M_node_allocator() == this->_M_node_allocator()) +16166: _M_move_assign(std::move(__ht), true_type{}); +16166: else +16166: { +16166: +16166: _M_assign_elements(std::move(__ht)); +16166: __ht.clear(); +16166: } +16166: } +16166: +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _Hashtable(const _Hashtable& __ht) +16166: : __hashtable_base(__ht), +16166: __map_base(__ht), +16166: __rehash_base(__ht), +16166: __hashtable_alloc( +16166: __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), +16166: __enable_default_ctor(__ht), +16166: _M_buckets(nullptr), +16166: _M_bucket_count(__ht._M_bucket_count), +16166: _M_element_count(__ht._M_element_count), +16166: _M_rehash_policy(__ht._M_rehash_policy) +16166: { +16166: __alloc_node_gen_t __alloc_node_gen(*this); +16166: _M_assign(__ht, __alloc_node_gen); +16166: } +16166: +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, +16166: true_type ) +16166: noexcept(_S_nothrow_move()) +16166: : __hashtable_base(__ht), +16166: __map_base(__ht), +16166: __rehash_base(__ht), +16166: __hashtable_alloc(std::move(__a)), +16166: __enable_default_ctor(__ht), +16166: _M_buckets(__ht._M_buckets), +16166: _M_bucket_count(__ht._M_bucket_count), +16166: _M_before_begin(__ht._M_before_begin._M_nxt), +16166: _M_element_count(__ht._M_element_count), +16166: _M_rehash_policy(__ht._M_rehash_policy) +16166: { +16166: +16166: if (__ht._M_uses_single_bucket()) +16166: { +16166: _M_buckets = &_M_single_bucket; +16166: _M_single_bucket = __ht._M_single_bucket; +16166: } +16166: +16166: +16166: _M_update_bbegin(); +16166: +16166: __ht._M_reset(); +16166: } +16166: +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _Hashtable(const _Hashtable& __ht, const allocator_type& __a) +16166: : __hashtable_base(__ht), +16166: __map_base(__ht), +16166: __rehash_base(__ht), +16166: __hashtable_alloc(__node_alloc_type(__a)), +16166: __enable_default_ctor(__ht), +16166: _M_buckets(), +16166: _M_bucket_count(__ht._M_bucket_count), +16166: _M_element_count(__ht._M_element_count), +16166: _M_rehash_policy(__ht._M_rehash_policy) +16166: { +16166: __alloc_node_gen_t __alloc_node_gen(*this); +16166: _M_assign(__ht, __alloc_node_gen); +16166: } +16166: +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, +16166: false_type ) +16166: : __hashtable_base(__ht), +16166: __map_base(__ht), +16166: __rehash_base(__ht), +16166: __hashtable_alloc(std::move(__a)), +16166: __enable_default_ctor(__ht), +16166: _M_buckets(nullptr), +16166: _M_bucket_count(__ht._M_bucket_count), +16166: _M_element_count(__ht._M_element_count), +16166: _M_rehash_policy(__ht._M_rehash_policy) +16166: { +16166: if (__ht._M_node_allocator() == this->_M_node_allocator()) +16166: { +16166: if (__ht._M_uses_single_bucket()) +16166: { +16166: _M_buckets = &_M_single_bucket; +16166: _M_single_bucket = __ht._M_single_bucket; +16166: } +16166: else +16166: _M_buckets = __ht._M_buckets; +16166: +16166: +16166: +16166: _M_update_bbegin(__ht._M_begin()); +16166: +16166: __ht._M_reset(); +16166: } +16166: else +16166: { +16166: __alloc_node_gen_t __alloc_gen(*this); +16166: +16166: using _Fwd_Ht = __conditional_t< +16166: __move_if_noexcept_cond::value, +16166: const _Hashtable&, _Hashtable&&>; +16166: _M_assign(std::forward<_Fwd_Ht>(__ht), __alloc_gen); +16166: __ht.clear(); +16166: } +16166: } +16166: +16166: template +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: ~_Hashtable() noexcept +16166: { +16166: +16166: +16166: +16166: static_assert(noexcept(declval() +16166: ._M_bucket_index(declval(), +16166: (std::size_t)0)), +16166: "Cache the hash code or qualify your functors involved" +16166: " in hash code and bucket index computation with noexcept"); +16166: +16166: clear(); +16166: _M_deallocate_buckets(); +16166: } +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: swap(_Hashtable& __x) +16166: noexcept(__and_<__is_nothrow_swappable<_Hash>, +16166: __is_nothrow_swappable<_Equal>>::value) +16166: { +16166: +16166: +16166: +16166: this->_M_swap(__x); +16166: +16166: std::__alloc_on_swap(this->_M_node_allocator(), __x._M_node_allocator()); +16166: std::swap(_M_rehash_policy, __x._M_rehash_policy); +16166: +16166: +16166: if (this->_M_uses_single_bucket()) +16166: { +16166: if (!__x._M_uses_single_bucket()) +16166: { +16166: _M_buckets = __x._M_buckets; +16166: __x._M_buckets = &__x._M_single_bucket; +16166: } +16166: } +16166: else if (__x._M_uses_single_bucket()) +16166: { +16166: __x._M_buckets = _M_buckets; +16166: _M_buckets = &_M_single_bucket; +16166: } +16166: else +16166: std::swap(_M_buckets, __x._M_buckets); +16166: +16166: std::swap(_M_bucket_count, __x._M_bucket_count); +16166: std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); +16166: std::swap(_M_element_count, __x._M_element_count); +16166: std::swap(_M_single_bucket, __x._M_single_bucket); +16166: +16166: +16166: +16166: _M_update_bbegin(); +16166: __x._M_update_bbegin(); +16166: } +16166: +16166: template +16166: auto inline +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: find(const key_type& __k) +16166: -> iterator +16166: { +16166: if (size() <= __small_size_threshold()) +16166: { +16166: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +16166: if (this->_M_key_equals(__k, *__it)) +16166: return iterator(__it); +16166: return end(); +16166: } +16166: +16166: __hash_code __code = this->_M_hash_code(__k); +16166: std::size_t __bkt = _M_bucket_index(__code); +16166: return iterator(_M_find_node(__bkt, __k, __code)); +16166: } +16166: +16166: template +16166: auto inline +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: find(const key_type& __k) const +16166: -> const_iterator +16166: { +16166: if (size() <= __small_size_threshold()) +16166: { +16166: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +16166: if (this->_M_key_equals(__k, *__it)) +16166: return const_iterator(__it); +16166: return end(); +16166: } +16166: +16166: __hash_code __code = this->_M_hash_code(__k); +16166: std::size_t __bkt = _M_bucket_index(__code); +16166: return const_iterator(_M_find_node(__bkt, __k, __code)); +16166: } +16166: # 1818 "/usr/include/c++/14/bits/hashtable.h" 3 +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: count(const key_type& __k) const +16166: -> size_type +16166: { +16166: auto __it = find(__k); +16166: if (!__it._M_cur) +16166: return 0; +16166: +16166: if (__unique_keys::value) +16166: return 1; +16166: +16166: size_type __result = 1; +16166: for (auto __ref = __it++; +16166: __it._M_cur && this->_M_node_equals(*__ref._M_cur, *__it._M_cur); +16166: ++__it) +16166: ++__result; +16166: +16166: return __result; +16166: } +16166: # 1891 "/usr/include/c++/14/bits/hashtable.h" 3 +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: equal_range(const key_type& __k) +16166: -> pair +16166: { +16166: auto __ite = find(__k); +16166: if (!__ite._M_cur) +16166: return { __ite, __ite }; +16166: +16166: auto __beg = __ite++; +16166: if (__unique_keys::value) +16166: return { __beg, __ite }; +16166: +16166: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) +16166: ++__ite; +16166: +16166: return { __beg, __ite }; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: equal_range(const key_type& __k) const +16166: -> pair +16166: { +16166: auto __ite = find(__k); +16166: if (!__ite._M_cur) +16166: return { __ite, __ite }; +16166: +16166: auto __beg = __ite++; +16166: if (__unique_keys::value) +16166: return { __beg, __ite }; +16166: +16166: while (__ite._M_cur && this->_M_node_equals(*__beg._M_cur, *__ite._M_cur)) +16166: ++__ite; +16166: +16166: return { __beg, __ite }; +16166: } +16166: # 2031 "/usr/include/c++/14/bits/hashtable.h" 3 +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_find_before_node(const key_type& __k) +16166: -> __node_base_ptr +16166: { +16166: __node_base_ptr __prev_p = &_M_before_begin; +16166: if (!__prev_p->_M_nxt) +16166: return nullptr; +16166: +16166: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt); +16166: __p != nullptr; +16166: __p = __p->_M_next()) +16166: { +16166: if (this->_M_key_equals(__k, *__p)) +16166: return __prev_p; +16166: +16166: __prev_p = __p; +16166: } +16166: +16166: return nullptr; +16166: } +16166: +16166: +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_find_before_node(size_type __bkt, const key_type& __k, +16166: __hash_code __code) const +16166: -> __node_base_ptr +16166: { +16166: __node_base_ptr __prev_p = _M_buckets[__bkt]; +16166: if (!__prev_p) +16166: return nullptr; +16166: +16166: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; +16166: __p = __p->_M_next()) +16166: { +16166: if (this->_M_equals(__k, __code, *__p)) +16166: return __prev_p; +16166: +16166: if (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt) +16166: break; +16166: __prev_p = __p; +16166: } +16166: +16166: return nullptr; +16166: } +16166: +16166: template +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_find_before_node_tr(size_type __bkt, const _Kt& __k, +16166: __hash_code __code) const +16166: -> __node_base_ptr +16166: { +16166: __node_base_ptr __prev_p = _M_buckets[__bkt]; +16166: if (!__prev_p) +16166: return nullptr; +16166: +16166: for (__node_ptr __p = static_cast<__node_ptr>(__prev_p->_M_nxt);; +16166: __p = __p->_M_next()) +16166: { +16166: if (this->_M_equals_tr(__k, __code, *__p)) +16166: return __prev_p; +16166: +16166: if (!__p->_M_nxt || _M_bucket_index(*__p->_M_next()) != __bkt) +16166: break; +16166: __prev_p = __p; +16166: } +16166: +16166: return nullptr; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_get_previous_node(size_type __bkt, __node_ptr __n) +16166: -> __node_base_ptr +16166: { +16166: __node_base_ptr __prev_n = _M_buckets[__bkt]; +16166: while (__prev_n->_M_nxt != __n) +16166: __prev_n = __prev_n->_M_nxt; +16166: return __prev_n; +16166: } +16166: +16166: template +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_emplace(true_type , _Args&&... __args) +16166: -> pair +16166: { +16166: +16166: _Scoped_node __node { this, std::forward<_Args>(__args)... }; +16166: const key_type& __k = _ExtractKey{}(__node._M_node->_M_v()); +16166: const size_type __size = size(); +16166: if (__size <= __small_size_threshold()) +16166: { +16166: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +16166: if (this->_M_key_equals(__k, *__it)) +16166: +16166: return { iterator(__it), false }; +16166: } +16166: +16166: __hash_code __code = this->_M_hash_code(__k); +16166: size_type __bkt = _M_bucket_index(__code); +16166: if (__size > __small_size_threshold()) +16166: if (__node_ptr __p = _M_find_node(__bkt, __k, __code)) +16166: +16166: return { iterator(__p), false }; +16166: +16166: +16166: auto __pos = _M_insert_unique_node(__bkt, __code, __node._M_node); +16166: __node._M_node = nullptr; +16166: return { __pos, true }; +16166: } +16166: +16166: template +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_emplace(const_iterator __hint, false_type , +16166: _Args&&... __args) +16166: -> iterator +16166: { +16166: +16166: _Scoped_node __node { this, std::forward<_Args>(__args)... }; +16166: const key_type& __k = _ExtractKey{}(__node._M_node->_M_v()); +16166: +16166: auto __res = this->_M_compute_hash_code(__hint._M_cur, __k); +16166: auto __pos +16166: = _M_insert_multi_node(__res.first, __res.second, __node._M_node); +16166: __node._M_node = nullptr; +16166: return __pos; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_compute_hash_code(__node_ptr __hint, const key_type& __k) const +16166: -> pair<__node_ptr, __hash_code> +16166: { +16166: if (size() <= __small_size_threshold()) +16166: { +16166: if (__hint) +16166: { +16166: for (auto __it = __hint; __it; __it = __it->_M_next()) +16166: if (this->_M_key_equals(__k, *__it)) +16166: return { __it, this->_M_hash_code(*__it) }; +16166: } +16166: +16166: for (auto __it = _M_begin(); __it != __hint; __it = __it->_M_next()) +16166: if (this->_M_key_equals(__k, *__it)) +16166: return { __it, this->_M_hash_code(*__it) }; +16166: +16166: __hint = nullptr; +16166: } +16166: +16166: return { __hint, this->_M_hash_code(__k) }; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_insert_unique_node(size_type __bkt, __hash_code __code, +16166: __node_ptr __node, size_type __n_elt) +16166: -> iterator +16166: { +16166: __rehash_guard_t __rehash_guard(_M_rehash_policy); +16166: std::pair __do_rehash +16166: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, +16166: __n_elt); +16166: +16166: if (__do_rehash.first) +16166: { +16166: _M_rehash(__do_rehash.second, true_type{}); +16166: __bkt = _M_bucket_index(__code); +16166: } +16166: +16166: __rehash_guard._M_guarded_obj = nullptr; +16166: this->_M_store_code(*__node, __code); +16166: +16166: +16166: _M_insert_bucket_begin(__bkt, __node); +16166: ++_M_element_count; +16166: return iterator(__node); +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_insert_multi_node(__node_ptr __hint, +16166: __hash_code __code, __node_ptr __node) +16166: -> iterator +16166: { +16166: __rehash_guard_t __rehash_guard(_M_rehash_policy); +16166: std::pair __do_rehash +16166: = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); +16166: +16166: if (__do_rehash.first) +16166: _M_rehash(__do_rehash.second, false_type{}); +16166: +16166: __rehash_guard._M_guarded_obj = nullptr; +16166: this->_M_store_code(*__node, __code); +16166: const key_type& __k = _ExtractKey{}(__node->_M_v()); +16166: size_type __bkt = _M_bucket_index(__code); +16166: +16166: +16166: +16166: __node_base_ptr __prev +16166: = __builtin_expect(__hint != nullptr, false) +16166: && this->_M_equals(__k, __code, *__hint) +16166: ? __hint +16166: : _M_find_before_node(__bkt, __k, __code); +16166: +16166: if (__prev) +16166: { +16166: +16166: __node->_M_nxt = __prev->_M_nxt; +16166: __prev->_M_nxt = __node; +16166: if (__builtin_expect(__prev == __hint, false)) +16166: +16166: +16166: if (__node->_M_nxt +16166: && !this->_M_equals(__k, __code, *__node->_M_next())) +16166: { +16166: size_type __next_bkt = _M_bucket_index(*__node->_M_next()); +16166: if (__next_bkt != __bkt) +16166: _M_buckets[__next_bkt] = __node; +16166: } +16166: } +16166: else +16166: +16166: +16166: +16166: _M_insert_bucket_begin(__bkt, __node); +16166: ++_M_element_count; +16166: return iterator(__node); +16166: } +16166: +16166: +16166: template +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_insert_unique(_Kt&& __k, _Arg&& __v, +16166: const _NodeGenerator& __node_gen) +16166: -> pair +16166: { +16166: const size_type __size = size(); +16166: if (__size <= __small_size_threshold()) +16166: for (auto __it = _M_begin(); __it; __it = __it->_M_next()) +16166: if (this->_M_key_equals_tr(__k, *__it)) +16166: return { iterator(__it), false }; +16166: +16166: __hash_code __code = this->_M_hash_code_tr(__k); +16166: size_type __bkt = _M_bucket_index(__code); +16166: +16166: if (__size > __small_size_threshold()) +16166: if (__node_ptr __node = _M_find_node_tr(__bkt, __k, __code)) +16166: return { iterator(__node), false }; +16166: +16166: _Scoped_node __node { +16166: __node_builder_t::_S_build(std::forward<_Kt>(__k), +16166: std::forward<_Arg>(__v), +16166: __node_gen), +16166: this +16166: }; +16166: auto __pos +16166: = _M_insert_unique_node(__bkt, __code, __node._M_node); +16166: __node._M_node = nullptr; +16166: return { __pos, true }; +16166: } +16166: +16166: +16166: template +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_insert(const_iterator __hint, _Arg&& __v, +16166: const _NodeGenerator& __node_gen, +16166: false_type ) +16166: -> iterator +16166: { +16166: +16166: _Scoped_node __node{ __node_gen(std::forward<_Arg>(__v)), this }; +16166: +16166: +16166: auto __res = this->_M_compute_hash_code( +16166: __hint._M_cur, _ExtractKey{}(__node._M_node->_M_v())); +16166: +16166: auto __pos +16166: = _M_insert_multi_node(__res.first, __res.second, __node._M_node); +16166: __node._M_node = nullptr; +16166: return __pos; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: erase(const_iterator __it) +16166: -> iterator +16166: { +16166: __node_ptr __n = __it._M_cur; +16166: std::size_t __bkt = _M_bucket_index(*__n); +16166: +16166: +16166: +16166: +16166: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); +16166: return _M_erase(__bkt, __prev_n, __n); +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_erase(size_type __bkt, __node_base_ptr __prev_n, __node_ptr __n) +16166: -> iterator +16166: { +16166: if (__prev_n == _M_buckets[__bkt]) +16166: _M_remove_bucket_begin(__bkt, __n->_M_next(), +16166: __n->_M_nxt ? _M_bucket_index(*__n->_M_next()) : 0); +16166: else if (__n->_M_nxt) +16166: { +16166: size_type __next_bkt = _M_bucket_index(*__n->_M_next()); +16166: if (__next_bkt != __bkt) +16166: _M_buckets[__next_bkt] = __prev_n; +16166: } +16166: +16166: __prev_n->_M_nxt = __n->_M_nxt; +16166: iterator __result(__n->_M_next()); +16166: this->_M_deallocate_node(__n); +16166: --_M_element_count; +16166: +16166: return __result; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_erase(true_type , const key_type& __k) +16166: -> size_type +16166: { +16166: __node_base_ptr __prev_n; +16166: __node_ptr __n; +16166: std::size_t __bkt; +16166: if (size() <= __small_size_threshold()) +16166: { +16166: __prev_n = _M_find_before_node(__k); +16166: if (!__prev_n) +16166: return 0; +16166: +16166: +16166: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +16166: __bkt = _M_bucket_index(*__n); +16166: } +16166: else +16166: { +16166: __hash_code __code = this->_M_hash_code(__k); +16166: __bkt = _M_bucket_index(__code); +16166: +16166: +16166: __prev_n = _M_find_before_node(__bkt, __k, __code); +16166: if (!__prev_n) +16166: return 0; +16166: +16166: +16166: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +16166: } +16166: +16166: _M_erase(__bkt, __prev_n, __n); +16166: return 1; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_erase(false_type , const key_type& __k) +16166: -> size_type +16166: { +16166: std::size_t __bkt; +16166: __node_base_ptr __prev_n; +16166: __node_ptr __n; +16166: if (size() <= __small_size_threshold()) +16166: { +16166: __prev_n = _M_find_before_node(__k); +16166: if (!__prev_n) +16166: return 0; +16166: +16166: +16166: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +16166: __bkt = _M_bucket_index(*__n); +16166: } +16166: else +16166: { +16166: __hash_code __code = this->_M_hash_code(__k); +16166: __bkt = _M_bucket_index(__code); +16166: +16166: +16166: __prev_n = _M_find_before_node(__bkt, __k, __code); +16166: if (!__prev_n) +16166: return 0; +16166: +16166: __n = static_cast<__node_ptr>(__prev_n->_M_nxt); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __node_ptr __n_last = __n->_M_next(); +16166: while (__n_last && this->_M_node_equals(*__n, *__n_last)) +16166: __n_last = __n_last->_M_next(); +16166: +16166: std::size_t __n_last_bkt = __n_last ? _M_bucket_index(*__n_last) : __bkt; +16166: +16166: +16166: size_type __result = 0; +16166: do +16166: { +16166: __node_ptr __p = __n->_M_next(); +16166: this->_M_deallocate_node(__n); +16166: __n = __p; +16166: ++__result; +16166: } +16166: while (__n != __n_last); +16166: +16166: _M_element_count -= __result; +16166: if (__prev_n == _M_buckets[__bkt]) +16166: _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); +16166: else if (__n_last_bkt != __bkt) +16166: _M_buckets[__n_last_bkt] = __prev_n; +16166: __prev_n->_M_nxt = __n_last; +16166: return __result; +16166: } +16166: +16166: template +16166: auto +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: erase(const_iterator __first, const_iterator __last) +16166: -> iterator +16166: { +16166: __node_ptr __n = __first._M_cur; +16166: __node_ptr __last_n = __last._M_cur; +16166: if (__n == __last_n) +16166: return iterator(__n); +16166: +16166: std::size_t __bkt = _M_bucket_index(*__n); +16166: +16166: __node_base_ptr __prev_n = _M_get_previous_node(__bkt, __n); +16166: bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); +16166: std::size_t __n_bkt = __bkt; +16166: for (;;) +16166: { +16166: do +16166: { +16166: __node_ptr __tmp = __n; +16166: __n = __n->_M_next(); +16166: this->_M_deallocate_node(__tmp); +16166: --_M_element_count; +16166: if (!__n) +16166: break; +16166: __n_bkt = _M_bucket_index(*__n); +16166: } +16166: while (__n != __last_n && __n_bkt == __bkt); +16166: if (__is_bucket_begin) +16166: _M_remove_bucket_begin(__bkt, __n, __n_bkt); +16166: if (__n == __last_n) +16166: break; +16166: __is_bucket_begin = true; +16166: __bkt = __n_bkt; +16166: } +16166: +16166: if (__n && (__n_bkt != __bkt || __is_bucket_begin)) +16166: _M_buckets[__n_bkt] = __prev_n; +16166: __prev_n->_M_nxt = __n; +16166: return iterator(__n); +16166: } +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: clear() noexcept +16166: { +16166: this->_M_deallocate_nodes(_M_begin()); +16166: __builtin_memset(_M_buckets, 0, +16166: _M_bucket_count * sizeof(__node_base_ptr)); +16166: _M_element_count = 0; +16166: _M_before_begin._M_nxt = nullptr; +16166: } +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: rehash(size_type __bkt_count) +16166: { +16166: __rehash_guard_t __rehash_guard(_M_rehash_policy); +16166: __bkt_count +16166: = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), +16166: __bkt_count); +16166: __bkt_count = _M_rehash_policy._M_next_bkt(__bkt_count); +16166: +16166: if (__bkt_count != _M_bucket_count) +16166: { +16166: _M_rehash(__bkt_count, __unique_keys{}); +16166: __rehash_guard._M_guarded_obj = nullptr; +16166: } +16166: } +16166: +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_rehash(size_type __bkt_count, true_type ) +16166: { +16166: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); +16166: __node_ptr __p = _M_begin(); +16166: _M_before_begin._M_nxt = nullptr; +16166: std::size_t __bbegin_bkt = 0; +16166: while (__p) +16166: { +16166: __node_ptr __next = __p->_M_next(); +16166: std::size_t __bkt +16166: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); +16166: if (!__new_buckets[__bkt]) +16166: { +16166: __p->_M_nxt = _M_before_begin._M_nxt; +16166: _M_before_begin._M_nxt = __p; +16166: __new_buckets[__bkt] = &_M_before_begin; +16166: if (__p->_M_nxt) +16166: __new_buckets[__bbegin_bkt] = __p; +16166: __bbegin_bkt = __bkt; +16166: } +16166: else +16166: { +16166: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; +16166: __new_buckets[__bkt]->_M_nxt = __p; +16166: } +16166: +16166: __p = __next; +16166: } +16166: +16166: _M_deallocate_buckets(); +16166: _M_bucket_count = __bkt_count; +16166: _M_buckets = __new_buckets; +16166: } +16166: +16166: +16166: +16166: template +16166: void +16166: _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, +16166: _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: +16166: _M_rehash(size_type __bkt_count, false_type ) +16166: { +16166: __buckets_ptr __new_buckets = _M_allocate_buckets(__bkt_count); +16166: __node_ptr __p = _M_begin(); +16166: _M_before_begin._M_nxt = nullptr; +16166: std::size_t __bbegin_bkt = 0; +16166: std::size_t __prev_bkt = 0; +16166: __node_ptr __prev_p = nullptr; +16166: bool __check_bucket = false; +16166: +16166: while (__p) +16166: { +16166: __node_ptr __next = __p->_M_next(); +16166: std::size_t __bkt +16166: = __hash_code_base::_M_bucket_index(*__p, __bkt_count); +16166: +16166: if (__prev_p && __prev_bkt == __bkt) +16166: { +16166: +16166: +16166: +16166: __p->_M_nxt = __prev_p->_M_nxt; +16166: __prev_p->_M_nxt = __p; +16166: +16166: +16166: +16166: +16166: +16166: +16166: __check_bucket = true; +16166: } +16166: else +16166: { +16166: if (__check_bucket) +16166: { +16166: +16166: +16166: if (__prev_p->_M_nxt) +16166: { +16166: std::size_t __next_bkt +16166: = __hash_code_base::_M_bucket_index( +16166: *__prev_p->_M_next(), __bkt_count); +16166: if (__next_bkt != __prev_bkt) +16166: __new_buckets[__next_bkt] = __prev_p; +16166: } +16166: __check_bucket = false; +16166: } +16166: +16166: if (!__new_buckets[__bkt]) +16166: { +16166: __p->_M_nxt = _M_before_begin._M_nxt; +16166: _M_before_begin._M_nxt = __p; +16166: __new_buckets[__bkt] = &_M_before_begin; +16166: if (__p->_M_nxt) +16166: __new_buckets[__bbegin_bkt] = __p; +16166: __bbegin_bkt = __bkt; +16166: } +16166: else +16166: { +16166: __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; +16166: __new_buckets[__bkt]->_M_nxt = __p; +16166: } +16166: } +16166: __prev_p = __p; +16166: __prev_bkt = __bkt; +16166: __p = __next; +16166: } +16166: +16166: if (__check_bucket && __prev_p->_M_nxt) +16166: { +16166: std::size_t __next_bkt +16166: = __hash_code_base::_M_bucket_index(*__prev_p->_M_next(), +16166: __bkt_count); +16166: if (__next_bkt != __prev_bkt) +16166: __new_buckets[__next_bkt] = __prev_p; +16166: } +16166: +16166: _M_deallocate_buckets(); +16166: _M_bucket_count = __bkt_count; +16166: _M_buckets = __new_buckets; +16166: } +16166: +16166: +16166: template class _Hash_merge_helper { }; +16166: +16166: +16166: +16166: +16166: template +16166: using _RequireNotAllocatorOrIntegral +16166: = __enable_if_t, __is_allocator<_Hash>>::value>; +16166: +16166: +16166: +16166: +16166: } +16166: # 34 "/usr/include/c++/14/bits/unordered_map.h" 2 3 +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>; +16166: +16166: template, +16166: typename _Pred = std::equal_to<_Key>, +16166: typename _Alloc = std::allocator >, +16166: typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>> +16166: using __umap_hashtable = _Hashtable<_Key, std::pair, +16166: _Alloc, __detail::_Select1st, +16166: _Pred, _Hash, +16166: __detail::_Mod_range_hashing, +16166: __detail::_Default_ranged_hash, +16166: __detail::_Prime_rehash_policy, _Tr>; +16166: +16166: +16166: template +16166: using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>; +16166: +16166: template, +16166: typename _Pred = std::equal_to<_Key>, +16166: typename _Alloc = std::allocator >, +16166: typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>> +16166: using __ummap_hashtable = _Hashtable<_Key, std::pair, +16166: _Alloc, __detail::_Select1st, +16166: _Pred, _Hash, +16166: __detail::_Mod_range_hashing, +16166: __detail::_Default_ranged_hash, +16166: __detail::_Prime_rehash_policy, _Tr>; +16166: +16166: template +16166: class unordered_multimap; +16166: # 105 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template, +16166: typename _Pred = equal_to<_Key>, +16166: typename _Alloc = allocator>> +16166: class unordered_map +16166: { +16166: typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; +16166: _Hashtable _M_h; +16166: +16166: public: +16166: +16166: +16166: +16166: typedef typename _Hashtable::key_type key_type; +16166: typedef typename _Hashtable::value_type value_type; +16166: typedef typename _Hashtable::mapped_type mapped_type; +16166: typedef typename _Hashtable::hasher hasher; +16166: typedef typename _Hashtable::key_equal key_equal; +16166: typedef typename _Hashtable::allocator_type allocator_type; +16166: +16166: +16166: +16166: +16166: typedef typename _Hashtable::pointer pointer; +16166: typedef typename _Hashtable::const_pointer const_pointer; +16166: typedef typename _Hashtable::reference reference; +16166: typedef typename _Hashtable::const_reference const_reference; +16166: typedef typename _Hashtable::iterator iterator; +16166: typedef typename _Hashtable::const_iterator const_iterator; +16166: typedef typename _Hashtable::local_iterator local_iterator; +16166: typedef typename _Hashtable::const_local_iterator const_local_iterator; +16166: typedef typename _Hashtable::size_type size_type; +16166: typedef typename _Hashtable::difference_type difference_type; +16166: +16166: +16166: +16166: using node_type = typename _Hashtable::node_type; +16166: using insert_return_type = typename _Hashtable::insert_return_type; +16166: +16166: +16166: +16166: +16166: +16166: unordered_map() = default; +16166: # 157 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: explicit +16166: unordered_map(size_type __n, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__n, __hf, __eql, __a) +16166: { } +16166: # 178 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: unordered_map(_InputIterator __first, _InputIterator __last, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__first, __last, __n, __hf, __eql, __a) +16166: { } +16166: +16166: +16166: unordered_map(const unordered_map&) = default; +16166: +16166: +16166: unordered_map(unordered_map&&) = default; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: unordered_map(const allocator_type& __a) +16166: : _M_h(__a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_map(const unordered_map& __umap, +16166: const allocator_type& __a) +16166: : _M_h(__umap._M_h, __a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_map(unordered_map&& __umap, +16166: const allocator_type& __a) +16166: noexcept( noexcept(_Hashtable(std::move(__umap._M_h), __a)) ) +16166: : _M_h(std::move(__umap._M_h), __a) +16166: { } +16166: # 234 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: unordered_map(initializer_list __l, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__l, __n, __hf, __eql, __a) +16166: { } +16166: +16166: unordered_map(size_type __n, const allocator_type& __a) +16166: : unordered_map(__n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_map(size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_map(__n, __hf, key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_map(_InputIterator __first, _InputIterator __last, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_map(_InputIterator __first, _InputIterator __last, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_map(__first, __last, __n, __hf, key_equal(), __a) +16166: { } +16166: +16166: unordered_map(initializer_list __l, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_map(__l, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_map(initializer_list __l, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_map(__l, __n, __hf, key_equal(), __a) +16166: { } +16166: +16166: +16166: unordered_map& +16166: operator=(const unordered_map&) = default; +16166: +16166: +16166: unordered_map& +16166: operator=(unordered_map&&) = default; +16166: # 296 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: unordered_map& +16166: operator=(initializer_list __l) +16166: { +16166: _M_h = __l; +16166: return *this; +16166: } +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return _M_h.get_allocator(); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_h.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_h.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_h.max_size(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: begin() noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: const_iterator +16166: cbegin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() noexcept +16166: { return _M_h.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return _M_h.end(); } +16166: +16166: const_iterator +16166: cend() const noexcept +16166: { return _M_h.end(); } +16166: # 393 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: std::pair +16166: emplace(_Args&&... __args) +16166: { return _M_h.emplace(std::forward<_Args>(__args)...); } +16166: # 424 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_h.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __key) +16166: { return _M_h.extract(__key); } +16166: +16166: +16166: insert_return_type +16166: insert(node_type&& __nh) +16166: { return _M_h._M_reinsert_node(std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator, node_type&& __nh) +16166: { return _M_h._M_reinsert_node(std::move(__nh)).position; } +16166: # 477 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: pair +16166: try_emplace(const key_type& __k, _Args&&... __args) +16166: { +16166: return _M_h.try_emplace(cend(), __k, std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: template +16166: pair +16166: try_emplace(key_type&& __k, _Args&&... __args) +16166: { +16166: return _M_h.try_emplace(cend(), std::move(__k), +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 521 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: iterator +16166: try_emplace(const_iterator __hint, const key_type& __k, +16166: _Args&&... __args) +16166: { +16166: return _M_h.try_emplace(__hint, __k, +16166: std::forward<_Args>(__args)...).first; +16166: } +16166: +16166: +16166: template +16166: iterator +16166: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) +16166: { +16166: return _M_h.try_emplace(__hint, std::move(__k), +16166: std::forward<_Args>(__args)...).first; +16166: } +16166: # 558 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: std::pair +16166: insert(const value_type& __x) +16166: { return _M_h.insert(__x); } +16166: +16166: +16166: +16166: std::pair +16166: insert(value_type&& __x) +16166: { return _M_h.insert(std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, +16166: pair> +16166: insert(_Pair&& __x) +16166: { return _M_h.emplace(std::forward<_Pair>(__x)); } +16166: # 597 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: insert(const_iterator __hint, const value_type& __x) +16166: { return _M_h.insert(__hint, __x); } +16166: +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, value_type&& __x) +16166: { return _M_h.insert(__hint, std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, iterator> +16166: insert(const_iterator __hint, _Pair&& __x) +16166: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } +16166: # 622 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_h.insert(__first, __last); } +16166: # 634 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: insert(initializer_list __l) +16166: { _M_h.insert(__l); } +16166: # 660 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: pair +16166: insert_or_assign(const key_type& __k, _Obj&& __obj) +16166: { +16166: auto __ret = _M_h.try_emplace(cend(), __k, +16166: std::forward<_Obj>(__obj)); +16166: if (!__ret.second) +16166: __ret.first->second = std::forward<_Obj>(__obj); +16166: return __ret; +16166: } +16166: +16166: +16166: template +16166: pair +16166: insert_or_assign(key_type&& __k, _Obj&& __obj) +16166: { +16166: auto __ret = _M_h.try_emplace(cend(), std::move(__k), +16166: std::forward<_Obj>(__obj)); +16166: if (!__ret.second) +16166: __ret.first->second = std::forward<_Obj>(__obj); +16166: return __ret; +16166: } +16166: # 709 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: iterator +16166: insert_or_assign(const_iterator __hint, const key_type& __k, +16166: _Obj&& __obj) +16166: { +16166: auto __ret = _M_h.try_emplace(__hint, __k, std::forward<_Obj>(__obj)); +16166: if (!__ret.second) +16166: __ret.first->second = std::forward<_Obj>(__obj); +16166: return __ret.first; +16166: } +16166: +16166: +16166: template +16166: iterator +16166: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) +16166: { +16166: auto __ret = _M_h.try_emplace(__hint, std::move(__k), +16166: std::forward<_Obj>(__obj)); +16166: if (!__ret.second) +16166: __ret.first->second = std::forward<_Obj>(__obj); +16166: return __ret.first; +16166: } +16166: # 747 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_h.erase(__position); } +16166: +16166: +16166: iterator +16166: erase(iterator __position) +16166: { return _M_h.erase(__position); } +16166: # 769 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_h.erase(__x); } +16166: # 787 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_h.erase(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_h.clear(); } +16166: # 811 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: swap(unordered_map& __x) +16166: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +16166: { _M_h.swap(__x._M_h); } +16166: +16166: +16166: template +16166: friend class std::_Hash_merge_helper; +16166: +16166: template +16166: void +16166: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Hash_merge_helper; +16166: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Hash_merge_helper; +16166: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: hasher +16166: hash_function() const +16166: { return _M_h.hash_function(); } +16166: +16166: +16166: +16166: key_equal +16166: key_eq() const +16166: { return _M_h.key_eq(); } +16166: # 875 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_h.find(__x); } +16166: # 886 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_h.find(__x); } +16166: # 908 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_h.count(__x); } +16166: # 948 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_h.equal_range(__x); } +16166: # 960 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_h.equal_range(__x); } +16166: # 986 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: mapped_type& +16166: operator[](const key_type& __k) +16166: { return _M_h[__k]; } +16166: +16166: mapped_type& +16166: operator[](key_type&& __k) +16166: { return _M_h[std::move(__k)]; } +16166: # 1003 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: mapped_type& +16166: at(const key_type& __k) +16166: { return _M_h.at(__k); } +16166: +16166: const mapped_type& +16166: at(const key_type& __k) const +16166: { return _M_h.at(__k); } +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket_count() const noexcept +16166: { return _M_h.bucket_count(); } +16166: +16166: +16166: size_type +16166: max_bucket_count() const noexcept +16166: { return _M_h.max_bucket_count(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket_size(size_type __n) const +16166: { return _M_h.bucket_size(__n); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket(const key_type& __key) const +16166: { return _M_h.bucket(__key); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: local_iterator +16166: begin(size_type __n) +16166: { return _M_h.begin(__n); } +16166: # 1059 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: const_local_iterator +16166: begin(size_type __n) const +16166: { return _M_h.begin(__n); } +16166: +16166: const_local_iterator +16166: cbegin(size_type __n) const +16166: { return _M_h.cbegin(__n); } +16166: # 1074 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: local_iterator +16166: end(size_type __n) +16166: { return _M_h.end(__n); } +16166: # 1085 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: const_local_iterator +16166: end(size_type __n) const +16166: { return _M_h.end(__n); } +16166: +16166: const_local_iterator +16166: cend(size_type __n) const +16166: { return _M_h.cend(__n); } +16166: +16166: +16166: +16166: +16166: +16166: float +16166: load_factor() const noexcept +16166: { return _M_h.load_factor(); } +16166: +16166: +16166: +16166: float +16166: max_load_factor() const noexcept +16166: { return _M_h.max_load_factor(); } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: max_load_factor(float __z) +16166: { _M_h.max_load_factor(__z); } +16166: # 1122 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: rehash(size_type __n) +16166: { _M_h.rehash(__n); } +16166: # 1133 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: reserve(size_type __n) +16166: { _M_h.reserve(__n); } +16166: +16166: template +16166: friend bool +16166: operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, +16166: const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&); +16166: }; +16166: +16166: +16166: +16166: template>, +16166: typename _Pred = equal_to<__iter_key_t<_InputIterator>>, +16166: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_map(_InputIterator, _InputIterator, +16166: typename unordered_map::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +16166: -> unordered_map<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, +16166: _Hash, _Pred, _Allocator>; +16166: +16166: template, +16166: typename _Pred = equal_to<_Key>, +16166: typename _Allocator = allocator>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_map(initializer_list>, +16166: typename unordered_map::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +16166: -> unordered_map<_Key, _Tp, _Hash, _Pred, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_map(_InputIterator, _InputIterator, +16166: typename unordered_map::size_type, _Allocator) +16166: -> unordered_map<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, +16166: hash<__iter_key_t<_InputIterator>>, +16166: equal_to<__iter_key_t<_InputIterator>>, +16166: _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_map(_InputIterator, _InputIterator, _Allocator) +16166: -> unordered_map<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, +16166: hash<__iter_key_t<_InputIterator>>, +16166: equal_to<__iter_key_t<_InputIterator>>, +16166: _Allocator>; +16166: +16166: template, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_map(_InputIterator, _InputIterator, +16166: typename unordered_map::size_type, +16166: _Hash, _Allocator) +16166: -> unordered_map<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, _Hash, +16166: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +16166: +16166: template> +16166: unordered_map(initializer_list>, +16166: typename unordered_map::size_type, +16166: _Allocator) +16166: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +16166: +16166: template> +16166: unordered_map(initializer_list>, _Allocator) +16166: -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_map(initializer_list>, +16166: typename unordered_map::size_type, +16166: _Hash, _Allocator) +16166: -> unordered_map<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; +16166: # 1251 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template, +16166: typename _Pred = equal_to<_Key>, +16166: typename _Alloc = allocator>> +16166: class unordered_multimap +16166: { +16166: typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; +16166: _Hashtable _M_h; +16166: +16166: public: +16166: +16166: +16166: +16166: typedef typename _Hashtable::key_type key_type; +16166: typedef typename _Hashtable::value_type value_type; +16166: typedef typename _Hashtable::mapped_type mapped_type; +16166: typedef typename _Hashtable::hasher hasher; +16166: typedef typename _Hashtable::key_equal key_equal; +16166: typedef typename _Hashtable::allocator_type allocator_type; +16166: +16166: +16166: +16166: +16166: typedef typename _Hashtable::pointer pointer; +16166: typedef typename _Hashtable::const_pointer const_pointer; +16166: typedef typename _Hashtable::reference reference; +16166: typedef typename _Hashtable::const_reference const_reference; +16166: typedef typename _Hashtable::iterator iterator; +16166: typedef typename _Hashtable::const_iterator const_iterator; +16166: typedef typename _Hashtable::local_iterator local_iterator; +16166: typedef typename _Hashtable::const_local_iterator const_local_iterator; +16166: typedef typename _Hashtable::size_type size_type; +16166: typedef typename _Hashtable::difference_type difference_type; +16166: +16166: +16166: +16166: using node_type = typename _Hashtable::node_type; +16166: +16166: +16166: +16166: +16166: +16166: unordered_multimap() = default; +16166: # 1302 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: explicit +16166: unordered_multimap(size_type __n, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__n, __hf, __eql, __a) +16166: { } +16166: # 1323 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: unordered_multimap(_InputIterator __first, _InputIterator __last, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__first, __last, __n, __hf, __eql, __a) +16166: { } +16166: +16166: +16166: unordered_multimap(const unordered_multimap&) = default; +16166: +16166: +16166: unordered_multimap(unordered_multimap&&) = default; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: unordered_multimap(const allocator_type& __a) +16166: : _M_h(__a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_multimap(const unordered_multimap& __ummap, +16166: const allocator_type& __a) +16166: : _M_h(__ummap._M_h, __a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_multimap(unordered_multimap&& __ummap, +16166: const allocator_type& __a) +16166: noexcept( noexcept(_Hashtable(std::move(__ummap._M_h), __a)) ) +16166: : _M_h(std::move(__ummap._M_h), __a) +16166: { } +16166: # 1379 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: unordered_multimap(initializer_list __l, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__l, __n, __hf, __eql, __a) +16166: { } +16166: +16166: unordered_multimap(size_type __n, const allocator_type& __a) +16166: : unordered_multimap(__n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_multimap(size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_multimap(__n, __hf, key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_multimap(_InputIterator __first, _InputIterator __last, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_multimap(_InputIterator __first, _InputIterator __last, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) +16166: { } +16166: +16166: unordered_multimap(initializer_list __l, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_multimap(__l, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_multimap(initializer_list __l, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_multimap(__l, __n, __hf, key_equal(), __a) +16166: { } +16166: +16166: +16166: unordered_multimap& +16166: operator=(const unordered_multimap&) = default; +16166: +16166: +16166: unordered_multimap& +16166: operator=(unordered_multimap&&) = default; +16166: # 1441 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: unordered_multimap& +16166: operator=(initializer_list __l) +16166: { +16166: _M_h = __l; +16166: return *this; +16166: } +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return _M_h.get_allocator(); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_h.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_h.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_h.max_size(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: begin() noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: const_iterator +16166: cbegin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() noexcept +16166: { return _M_h.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return _M_h.end(); } +16166: +16166: const_iterator +16166: cend() const noexcept +16166: { return _M_h.end(); } +16166: # 1533 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: iterator +16166: emplace(_Args&&... __args) +16166: { return _M_h.emplace(std::forward<_Args>(__args)...); } +16166: # 1560 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +16166: # 1575 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: insert(const value_type& __x) +16166: { return _M_h.insert(__x); } +16166: +16166: iterator +16166: insert(value_type&& __x) +16166: { return _M_h.insert(std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, iterator> +16166: insert(_Pair&& __x) +16166: { return _M_h.emplace(std::forward<_Pair>(__x)); } +16166: # 1609 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: insert(const_iterator __hint, const value_type& __x) +16166: { return _M_h.insert(__hint, __x); } +16166: +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, value_type&& __x) +16166: { return _M_h.insert(__hint, std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, iterator> +16166: insert(const_iterator __hint, _Pair&& __x) +16166: { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } +16166: # 1634 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_h.insert(__first, __last); } +16166: # 1647 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: insert(initializer_list __l) +16166: { _M_h.insert(__l); } +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_h.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __key) +16166: { return _M_h.extract(__key); } +16166: +16166: +16166: iterator +16166: insert(node_type&& __nh) +16166: { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, node_type&& __nh) +16166: { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } +16166: # 1690 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_h.erase(__position); } +16166: +16166: +16166: iterator +16166: erase(iterator __position) +16166: { return _M_h.erase(__position); } +16166: # 1711 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_h.erase(__x); } +16166: # 1730 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_h.erase(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_h.clear(); } +16166: # 1754 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: swap(unordered_multimap& __x) +16166: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +16166: { _M_h.swap(__x._M_h); } +16166: +16166: +16166: template +16166: friend class std::_Hash_merge_helper; +16166: +16166: template +16166: void +16166: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper +16166: = _Hash_merge_helper; +16166: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper +16166: = _Hash_merge_helper; +16166: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: hasher +16166: hash_function() const +16166: { return _M_h.hash_function(); } +16166: +16166: +16166: +16166: key_equal +16166: key_eq() const +16166: { return _M_h.key_eq(); } +16166: # 1820 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_h.find(__x); } +16166: # 1831 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_h.find(__x); } +16166: # 1849 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_h.count(__x); } +16166: # 1887 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_h.equal_range(__x); } +16166: # 1899 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_h.equal_range(__x); } +16166: # 1915 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: size_type +16166: bucket_count() const noexcept +16166: { return _M_h.bucket_count(); } +16166: +16166: +16166: size_type +16166: max_bucket_count() const noexcept +16166: { return _M_h.max_bucket_count(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket_size(size_type __n) const +16166: { return _M_h.bucket_size(__n); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket(const key_type& __key) const +16166: { return _M_h.bucket(__key); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: local_iterator +16166: begin(size_type __n) +16166: { return _M_h.begin(__n); } +16166: # 1959 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: const_local_iterator +16166: begin(size_type __n) const +16166: { return _M_h.begin(__n); } +16166: +16166: const_local_iterator +16166: cbegin(size_type __n) const +16166: { return _M_h.cbegin(__n); } +16166: # 1974 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: local_iterator +16166: end(size_type __n) +16166: { return _M_h.end(__n); } +16166: # 1985 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: const_local_iterator +16166: end(size_type __n) const +16166: { return _M_h.end(__n); } +16166: +16166: const_local_iterator +16166: cend(size_type __n) const +16166: { return _M_h.cend(__n); } +16166: +16166: +16166: +16166: +16166: +16166: float +16166: load_factor() const noexcept +16166: { return _M_h.load_factor(); } +16166: +16166: +16166: +16166: float +16166: max_load_factor() const noexcept +16166: { return _M_h.max_load_factor(); } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: max_load_factor(float __z) +16166: { _M_h.max_load_factor(__z); } +16166: # 2022 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: rehash(size_type __n) +16166: { _M_h.rehash(__n); } +16166: # 2033 "/usr/include/c++/14/bits/unordered_map.h" 3 +16166: void +16166: reserve(size_type __n) +16166: { _M_h.reserve(__n); } +16166: +16166: template +16166: friend bool +16166: operator==(const unordered_multimap<_Key1, _Tp1, +16166: _Hash1, _Pred1, _Alloc1>&, +16166: const unordered_multimap<_Key1, _Tp1, +16166: _Hash1, _Pred1, _Alloc1>&); +16166: }; +16166: +16166: +16166: +16166: template>, +16166: typename _Pred = equal_to<__iter_key_t<_InputIterator>>, +16166: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multimap(_InputIterator, _InputIterator, +16166: unordered_multimap::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), +16166: _Allocator = _Allocator()) +16166: -> unordered_multimap<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, _Hash, _Pred, +16166: _Allocator>; +16166: +16166: template, +16166: typename _Pred = equal_to<_Key>, +16166: typename _Allocator = allocator>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multimap(initializer_list>, +16166: unordered_multimap::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), +16166: _Allocator = _Allocator()) +16166: -> unordered_multimap<_Key, _Tp, _Hash, _Pred, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multimap(_InputIterator, _InputIterator, +16166: unordered_multimap::size_type, _Allocator) +16166: -> unordered_multimap<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, +16166: hash<__iter_key_t<_InputIterator>>, +16166: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multimap(_InputIterator, _InputIterator, _Allocator) +16166: -> unordered_multimap<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, +16166: hash<__iter_key_t<_InputIterator>>, +16166: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +16166: +16166: template, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multimap(_InputIterator, _InputIterator, +16166: unordered_multimap::size_type, _Hash, +16166: _Allocator) +16166: -> unordered_multimap<__iter_key_t<_InputIterator>, +16166: __iter_val_t<_InputIterator>, _Hash, +16166: equal_to<__iter_key_t<_InputIterator>>, _Allocator>; +16166: +16166: template> +16166: unordered_multimap(initializer_list>, +16166: unordered_multimap::size_type, +16166: _Allocator) +16166: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +16166: +16166: template> +16166: unordered_multimap(initializer_list>, _Allocator) +16166: -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multimap(initializer_list>, +16166: unordered_multimap::size_type, +16166: _Hash, _Allocator) +16166: -> unordered_multimap<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +16166: unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: template +16166: inline void +16166: swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +16166: unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: template +16166: inline bool +16166: operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +16166: { return __x._M_h._M_equal(__y._M_h); } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: inline bool +16166: operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +16166: { return __x._M_h._M_equal(__y._M_h); } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hash_merge_helper< +16166: std::unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>, +16166: _Hash2, _Eq2> +16166: { +16166: private: +16166: template +16166: using unordered_map = std::unordered_map<_Tp...>; +16166: template +16166: using unordered_multimap = std::unordered_multimap<_Tp...>; +16166: +16166: friend unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +16166: { return __map._M_h; } +16166: +16166: static auto& +16166: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +16166: { return __map._M_h; } +16166: }; +16166: +16166: +16166: template +16166: struct _Hash_merge_helper< +16166: std::unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>, +16166: _Hash2, _Eq2> +16166: { +16166: private: +16166: template +16166: using unordered_map = std::unordered_map<_Tp...>; +16166: template +16166: using unordered_multimap = std::unordered_multimap<_Tp...>; +16166: +16166: friend unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +16166: { return __map._M_h; } +16166: +16166: static auto& +16166: _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) +16166: { return __map._M_h; } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 42 "/usr/include/c++/14/unordered_map" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/erase_if.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/erase_if.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/erase_if.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std +16166: { +16166: +16166: +16166: namespace __detail +16166: { +16166: template +16166: typename _Container::size_type +16166: __erase_nodes_if(_Container& __cont, _UnsafeContainer& __ucont, +16166: _Predicate __pred) +16166: { +16166: typename _Container::size_type __num = 0; +16166: for (auto __iter = __ucont.begin(), __last = __ucont.end(); +16166: __iter != __last;) +16166: { +16166: if (__pred(*__iter)) +16166: { +16166: __iter = __cont.erase(__iter); +16166: ++__num; +16166: } +16166: else +16166: ++__iter; +16166: } +16166: return __num; +16166: } +16166: } +16166: +16166: +16166: } +16166: # 44 "/usr/include/c++/14/unordered_map" 2 3 +16166: # 56 "/usr/include/c++/14/unordered_map" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 57 "/usr/include/c++/14/unordered_map" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr +16166: { +16166: template, +16166: typename _Pred = std::equal_to<_Key>> +16166: using unordered_map +16166: = std::unordered_map<_Key, _Tp, _Hash, _Pred, +16166: polymorphic_allocator>>; +16166: template, +16166: typename _Pred = std::equal_to<_Key>> +16166: using unordered_multimap +16166: = std::unordered_multimap<_Key, _Tp, _Hash, _Pred, +16166: polymorphic_allocator>>; +16166: } +16166: +16166: } +16166: # 64 "/usr/include/c++/14/functional" 2 3 +16166: # 1 "/usr/include/c++/14/vector" 1 3 +16166: # 58 "/usr/include/c++/14/vector" 3 +16166: +16166: # 59 "/usr/include/c++/14/vector" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_vector.h" 1 3 +16166: # 77 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: struct _Vector_base +16166: { +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_Tp>::other _Tp_alloc_type; +16166: typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer +16166: pointer; +16166: +16166: struct _Vector_impl_data +16166: { +16166: pointer _M_start; +16166: pointer _M_finish; +16166: pointer _M_end_of_storage; +16166: +16166: +16166: _Vector_impl_data() noexcept +16166: : _M_start(), _M_finish(), _M_end_of_storage() +16166: { } +16166: +16166: +16166: +16166: _Vector_impl_data(_Vector_impl_data&& __x) noexcept +16166: : _M_start(__x._M_start), _M_finish(__x._M_finish), +16166: _M_end_of_storage(__x._M_end_of_storage) +16166: { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } +16166: +16166: +16166: +16166: void +16166: _M_copy_data(_Vector_impl_data const& __x) noexcept +16166: { +16166: _M_start = __x._M_start; +16166: _M_finish = __x._M_finish; +16166: _M_end_of_storage = __x._M_end_of_storage; +16166: } +16166: +16166: +16166: void +16166: _M_swap_data(_Vector_impl_data& __x) noexcept +16166: { +16166: +16166: +16166: _Vector_impl_data __tmp; +16166: __tmp._M_copy_data(*this); +16166: _M_copy_data(__x); +16166: __x._M_copy_data(__tmp); +16166: } +16166: }; +16166: +16166: struct _Vector_impl +16166: : public _Tp_alloc_type, public _Vector_impl_data +16166: { +16166: +16166: _Vector_impl() noexcept(is_nothrow_default_constructible<_Tp_alloc_type>::value) +16166: +16166: +16166: +16166: +16166: : _Tp_alloc_type() +16166: { } +16166: +16166: +16166: _Vector_impl(_Tp_alloc_type const& __a) noexcept +16166: : _Tp_alloc_type(__a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: _Vector_impl(_Vector_impl&& __x) noexcept +16166: : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) +16166: { } +16166: +16166: +16166: _Vector_impl(_Tp_alloc_type&& __a) noexcept +16166: : _Tp_alloc_type(std::move(__a)) +16166: { } +16166: +16166: +16166: _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept +16166: : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) +16166: { } +16166: # 293 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: }; +16166: +16166: public: +16166: typedef _Alloc allocator_type; +16166: +16166: +16166: _Tp_alloc_type& +16166: _M_get_Tp_allocator() noexcept +16166: { return this->_M_impl; } +16166: +16166: +16166: const _Tp_alloc_type& +16166: _M_get_Tp_allocator() const noexcept +16166: { return this->_M_impl; } +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_get_Tp_allocator()); } +16166: +16166: +16166: _Vector_base() = default; +16166: +16166: +16166: +16166: +16166: +16166: _Vector_base(const allocator_type& __a) noexcept +16166: : _M_impl(__a) { } +16166: +16166: +16166: +16166: +16166: _Vector_base(size_t __n) +16166: : _M_impl() +16166: { _M_create_storage(__n); } +16166: +16166: +16166: +16166: _Vector_base(size_t __n, const allocator_type& __a) +16166: : _M_impl(__a) +16166: { _M_create_storage(__n); } +16166: +16166: +16166: _Vector_base(_Vector_base&&) = default; +16166: +16166: +16166: +16166: +16166: _Vector_base(_Tp_alloc_type&& __a) noexcept +16166: : _M_impl(std::move(__a)) { } +16166: +16166: +16166: _Vector_base(_Vector_base&& __x, const allocator_type& __a) +16166: : _M_impl(__a) +16166: { +16166: if (__x.get_allocator() == __a) +16166: this->_M_impl._M_swap_data(__x._M_impl); +16166: else +16166: { +16166: size_t __n = __x._M_impl._M_finish - __x._M_impl._M_start; +16166: _M_create_storage(__n); +16166: } +16166: } +16166: +16166: +16166: +16166: _Vector_base(const allocator_type& __a, _Vector_base&& __x) +16166: : _M_impl(_Tp_alloc_type(__a), std::move(__x._M_impl)) +16166: { } +16166: +16166: +16166: +16166: ~_Vector_base() noexcept +16166: { +16166: _M_deallocate(_M_impl._M_start, +16166: _M_impl._M_end_of_storage - _M_impl._M_start); +16166: } +16166: +16166: public: +16166: _Vector_impl _M_impl; +16166: +16166: +16166: pointer +16166: _M_allocate(size_t __n) +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; +16166: return __n != 0 ? _Tr::allocate(_M_impl, __n) : pointer(); +16166: } +16166: +16166: +16166: void +16166: _M_deallocate(pointer __p, size_t __n) +16166: { +16166: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tr; +16166: if (__p) +16166: _Tr::deallocate(_M_impl, __p, __n); +16166: } +16166: +16166: protected: +16166: +16166: +16166: void +16166: _M_create_storage(size_t __n) +16166: { +16166: this->_M_impl._M_start = this->_M_allocate(__n); +16166: this->_M_impl._M_finish = this->_M_impl._M_start; +16166: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; +16166: } +16166: }; +16166: # 427 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template > +16166: class vector : protected _Vector_base<_Tp, _Alloc> +16166: { +16166: # 440 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: static_assert(is_same::type, _Tp>::value, +16166: "std::vector must have a non-const, non-volatile value_type"); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef _Vector_base<_Tp, _Alloc> _Base; +16166: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; +16166: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; +16166: +16166: public: +16166: typedef _Tp value_type; +16166: typedef typename _Base::pointer pointer; +16166: typedef typename _Alloc_traits::const_pointer const_pointer; +16166: typedef typename _Alloc_traits::reference reference; +16166: typedef typename _Alloc_traits::const_reference const_reference; +16166: typedef __gnu_cxx::__normal_iterator iterator; +16166: typedef __gnu_cxx::__normal_iterator +16166: const_iterator; +16166: typedef std::reverse_iterator const_reverse_iterator; +16166: typedef std::reverse_iterator reverse_iterator; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef _Alloc allocator_type; +16166: +16166: private: +16166: +16166: static constexpr bool +16166: _S_nothrow_relocate(true_type) +16166: { +16166: return noexcept(std::__relocate_a(std::declval(), +16166: std::declval(), +16166: std::declval(), +16166: std::declval<_Tp_alloc_type&>())); +16166: } +16166: +16166: static constexpr bool +16166: _S_nothrow_relocate(false_type) +16166: { return false; } +16166: +16166: static constexpr bool +16166: _S_use_relocate() +16166: { +16166: +16166: +16166: +16166: return _S_nothrow_relocate(__is_move_insertable<_Tp_alloc_type>{}); +16166: } +16166: +16166: static pointer +16166: _S_do_relocate(pointer __first, pointer __last, pointer __result, +16166: _Tp_alloc_type& __alloc, true_type) noexcept +16166: { +16166: return std::__relocate_a(__first, __last, __result, __alloc); +16166: } +16166: +16166: static pointer +16166: _S_do_relocate(pointer, pointer, pointer __result, +16166: _Tp_alloc_type&, false_type) noexcept +16166: { return __result; } +16166: +16166: static pointer +16166: _S_relocate(pointer __first, pointer __last, pointer __result, +16166: _Tp_alloc_type& __alloc) noexcept +16166: { +16166: +16166: +16166: return std::__relocate_a(__first, __last, __result, __alloc); +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: protected: +16166: using _Base::_M_allocate; +16166: using _Base::_M_deallocate; +16166: using _Base::_M_impl; +16166: using _Base::_M_get_Tp_allocator; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: vector() = default; +16166: # 540 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: explicit +16166: +16166: vector(const allocator_type& __a) noexcept +16166: : _Base(__a) { } +16166: # 554 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: explicit +16166: +16166: vector(size_type __n, const allocator_type& __a = allocator_type()) +16166: : _Base(_S_check_init_len(__n, __a), __a) +16166: { _M_default_initialize(__n); } +16166: # 568 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: vector(size_type __n, const value_type& __value, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(_S_check_init_len(__n, __a), __a) +16166: { _M_fill_initialize(__n, __value); } +16166: # 600 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: vector(const vector& __x) +16166: : _Base(__x.size(), +16166: _Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator())) +16166: { +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_copy_a(__x.begin(), __x.end(), +16166: this->_M_impl._M_start, +16166: _M_get_Tp_allocator()); +16166: } +16166: # 620 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: vector(vector&&) noexcept = default; +16166: +16166: +16166: +16166: vector(const vector& __x, const __type_identity_t& __a) +16166: : _Base(__x.size(), __a) +16166: { +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_copy_a(__x.begin(), __x.end(), +16166: this->_M_impl._M_start, +16166: _M_get_Tp_allocator()); +16166: } +16166: +16166: private: +16166: +16166: vector(vector&& __rv, const allocator_type& __m, true_type) noexcept +16166: : _Base(__m, std::move(__rv)) +16166: { } +16166: +16166: +16166: vector(vector&& __rv, const allocator_type& __m, false_type) +16166: : _Base(__m) +16166: { +16166: if (__rv.get_allocator() == __m) +16166: this->_M_impl._M_swap_data(__rv._M_impl); +16166: else if (!__rv.empty()) +16166: { +16166: this->_M_create_storage(__rv.size()); +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_move_a(__rv.begin(), __rv.end(), +16166: this->_M_impl._M_start, +16166: _M_get_Tp_allocator()); +16166: __rv.clear(); +16166: } +16166: } +16166: +16166: public: +16166: +16166: +16166: vector(vector&& __rv, const __type_identity_t& __m) +16166: noexcept( noexcept( +16166: vector(std::declval(), std::declval(), +16166: std::declval())) ) +16166: : vector(std::move(__rv), __m, typename _Alloc_traits::is_always_equal{}) +16166: { } +16166: # 677 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: vector(initializer_list __l, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(__a) +16166: { +16166: _M_range_initialize(__l.begin(), __l.end(), +16166: random_access_iterator_tag()); +16166: } +16166: # 704 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template> +16166: +16166: vector(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(__a) +16166: { +16166: _M_range_initialize(__first, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: # 732 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: ~vector() noexcept +16166: { +16166: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: ; +16166: } +16166: # 749 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: vector& +16166: operator=(const vector& __x); +16166: # 764 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: vector& +16166: operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) +16166: { +16166: constexpr bool __move_storage = +16166: _Alloc_traits::_S_propagate_on_move_assign() +16166: || _Alloc_traits::_S_always_equal(); +16166: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); +16166: return *this; +16166: } +16166: # 786 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: vector& +16166: operator=(initializer_list __l) +16166: { +16166: this->_M_assign_aux(__l.begin(), __l.end(), +16166: random_access_iterator_tag()); +16166: return *this; +16166: } +16166: # 806 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: assign(size_type __n, const value_type& __val) +16166: { _M_fill_assign(__n, __val); } +16166: # 824 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template> +16166: +16166: void +16166: assign(_InputIterator __first, _InputIterator __last) +16166: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +16166: # 853 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: assign(initializer_list __l) +16166: { +16166: this->_M_assign_aux(__l.begin(), __l.end(), +16166: random_access_iterator_tag()); +16166: } +16166: +16166: +16166: +16166: using _Base::get_allocator; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: begin() noexcept +16166: { return iterator(this->_M_impl._M_start); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: begin() const noexcept +16166: { return const_iterator(this->_M_impl._M_start); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: end() noexcept +16166: { return iterator(this->_M_impl._M_finish); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: end() const noexcept +16166: { return const_iterator(this->_M_impl._M_finish); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return reverse_iterator(end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rend() noexcept +16166: { return reverse_iterator(begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cbegin() const noexcept +16166: { return const_iterator(this->_M_impl._M_start); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cend() const noexcept +16166: { return const_iterator(this->_M_impl._M_finish); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: size() const noexcept +16166: { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: max_size() const noexcept +16166: { return _S_max_size(_M_get_Tp_allocator()); } +16166: # 1011 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: resize(size_type __new_size) +16166: { +16166: if (__new_size > size()) +16166: _M_default_append(__new_size - size()); +16166: else if (__new_size < size()) +16166: _M_erase_at_end(this->_M_impl._M_start + __new_size); +16166: } +16166: # 1032 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: resize(size_type __new_size, const value_type& __x) +16166: { +16166: if (__new_size > size()) +16166: _M_fill_insert(end(), __new_size - size(), __x); +16166: else if (__new_size < size()) +16166: _M_erase_at_end(this->_M_impl._M_start + __new_size); +16166: } +16166: # 1066 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: shrink_to_fit() +16166: { _M_shrink_to_fit(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: capacity() const noexcept +16166: { +16166: return size_type(this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_start); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: bool +16166: empty() const noexcept +16166: { return begin() == end(); } +16166: # 1110 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: reserve(size_type __n); +16166: # 1126 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: [[__nodiscard__]] +16166: reference +16166: operator[](size_type __n) noexcept +16166: { +16166: ; +16166: return *(this->_M_impl._M_start + __n); +16166: } +16166: # 1145 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: [[__nodiscard__]] +16166: const_reference +16166: operator[](size_type __n) const noexcept +16166: { +16166: ; +16166: return *(this->_M_impl._M_start + __n); +16166: } +16166: +16166: protected: +16166: +16166: +16166: void +16166: _M_range_check(size_type __n) const +16166: { +16166: if (__n >= this->size()) +16166: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") +16166: +16166: , +16166: __n, this->size()); +16166: } +16166: +16166: public: +16166: # 1178 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: [[__nodiscard__]] +16166: reference +16166: at(size_type __n) +16166: { +16166: _M_range_check(__n); +16166: return (*this)[__n]; +16166: } +16166: # 1197 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: [[__nodiscard__]] +16166: const_reference +16166: at(size_type __n) const +16166: { +16166: _M_range_check(__n); +16166: return (*this)[__n]; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: front() noexcept +16166: { +16166: ; +16166: return *begin(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: front() const noexcept +16166: { +16166: ; +16166: return *begin(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: back() noexcept +16166: { +16166: ; +16166: return *(end() - 1); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: back() const noexcept +16166: { +16166: ; +16166: return *(end() - 1); +16166: } +16166: # 1260 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: [[__nodiscard__]] +16166: _Tp* +16166: data() noexcept +16166: { return _M_data_ptr(this->_M_impl._M_start); } +16166: +16166: [[__nodiscard__]] +16166: const _Tp* +16166: data() const noexcept +16166: { return _M_data_ptr(this->_M_impl._M_start); } +16166: # 1281 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: push_back(const value_type& __x) +16166: { +16166: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +16166: { +16166: ; +16166: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +16166: __x); +16166: ++this->_M_impl._M_finish; +16166: ; +16166: } +16166: else +16166: _M_realloc_append(__x); +16166: } +16166: +16166: +16166: +16166: void +16166: push_back(value_type&& __x) +16166: { emplace_back(std::move(__x)); } +16166: +16166: template +16166: +16166: +16166: reference +16166: +16166: +16166: +16166: emplace_back(_Args&&... __args); +16166: # 1322 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: pop_back() noexcept +16166: { +16166: ; +16166: --this->_M_impl._M_finish; +16166: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); +16166: ; +16166: } +16166: # 1345 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template +16166: +16166: iterator +16166: emplace(const_iterator __position, _Args&&... __args) +16166: { return _M_emplace_aux(__position, std::forward<_Args>(__args)...); } +16166: # 1362 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: iterator +16166: insert(const_iterator __position, const value_type& __x); +16166: # 1393 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: iterator +16166: insert(const_iterator __position, value_type&& __x) +16166: { return _M_insert_rval(__position, std::move(__x)); } +16166: # 1411 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: iterator +16166: insert(const_iterator __position, initializer_list __l) +16166: { +16166: auto __offset = __position - cbegin(); +16166: _M_range_insert(begin() + __offset, __l.begin(), __l.end(), +16166: std::random_access_iterator_tag()); +16166: return begin() + __offset; +16166: } +16166: # 1437 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: iterator +16166: insert(const_iterator __position, size_type __n, const value_type& __x) +16166: { +16166: difference_type __offset = __position - cbegin(); +16166: _M_fill_insert(begin() + __offset, __n, __x); +16166: return begin() + __offset; +16166: } +16166: # 1480 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template> +16166: +16166: iterator +16166: insert(const_iterator __position, _InputIterator __first, +16166: _InputIterator __last) +16166: { +16166: difference_type __offset = __position - cbegin(); +16166: _M_range_insert(begin() + __offset, __first, __last, +16166: std::__iterator_category(__first)); +16166: return begin() + __offset; +16166: } +16166: # 1533 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: iterator +16166: +16166: erase(const_iterator __position) +16166: { return _M_erase(begin() + (__position - cbegin())); } +16166: # 1561 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: iterator +16166: +16166: erase(const_iterator __first, const_iterator __last) +16166: { +16166: const auto __beg = begin(); +16166: const auto __cbeg = cbegin(); +16166: return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); +16166: } +16166: # 1586 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: +16166: void +16166: swap(vector& __x) noexcept +16166: { +16166: +16166: 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) +16166: ; +16166: +16166: this->_M_impl._M_swap_data(__x._M_impl); +16166: _Alloc_traits::_S_on_swap(_M_get_Tp_allocator(), +16166: __x._M_get_Tp_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_erase_at_end(this->_M_impl._M_start); } +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: pointer +16166: _M_allocate_and_copy(size_type __n, +16166: _ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: pointer __result = this->_M_allocate(__n); +16166: try +16166: { +16166: std::__uninitialized_copy_a(__first, __last, __result, +16166: _M_get_Tp_allocator()); +16166: return __result; +16166: } +16166: catch(...) +16166: { +16166: _M_deallocate(__result, __n); +16166: throw; +16166: } +16166: } +16166: # 1666 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template +16166: +16166: void +16166: _M_range_initialize(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag) +16166: { +16166: try { +16166: for (; __first != __last; ++__first) +16166: +16166: emplace_back(*__first); +16166: +16166: +16166: +16166: } catch(...) { +16166: clear(); +16166: throw; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: void +16166: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag) +16166: { +16166: const size_type __n = std::distance(__first, __last); +16166: this->_M_impl._M_start +16166: = this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator())); +16166: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_copy_a(__first, __last, +16166: this->_M_impl._M_start, +16166: _M_get_Tp_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: _M_fill_initialize(size_type __n, const value_type& __value) +16166: { +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value, +16166: _M_get_Tp_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: _M_default_initialize(size_type __n) +16166: { +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_default_n_a(this->_M_impl._M_start, __n, +16166: _M_get_Tp_allocator()); +16166: } +16166: # 1732 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template +16166: +16166: void +16166: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) +16166: { _M_fill_assign(__n, __val); } +16166: +16166: +16166: template +16166: +16166: void +16166: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, +16166: __false_type) +16166: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +16166: +16166: +16166: template +16166: +16166: void +16166: _M_assign_aux(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag); +16166: +16166: +16166: template +16166: +16166: void +16166: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag); +16166: +16166: +16166: +16166: +16166: void +16166: _M_fill_assign(size_type __n, const value_type& __val); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, +16166: __true_type) +16166: { _M_fill_insert(__pos, __n, __val); } +16166: +16166: +16166: template +16166: +16166: void +16166: _M_insert_dispatch(iterator __pos, _InputIterator __first, +16166: _InputIterator __last, __false_type) +16166: { +16166: _M_range_insert(__pos, __first, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: +16166: template +16166: +16166: void +16166: _M_range_insert(iterator __pos, _InputIterator __first, +16166: _InputIterator __last, std::input_iterator_tag); +16166: +16166: +16166: template +16166: +16166: void +16166: _M_range_insert(iterator __pos, _ForwardIterator __first, +16166: _ForwardIterator __last, std::forward_iterator_tag); +16166: +16166: +16166: +16166: +16166: void +16166: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); +16166: +16166: +16166: +16166: +16166: void +16166: _M_default_append(size_type __n); +16166: +16166: +16166: bool +16166: _M_shrink_to_fit(); +16166: # 1834 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: struct _Temporary_value +16166: { +16166: template +16166: explicit +16166: _Temporary_value(vector* __vec, _Args&&... __args) : _M_this(__vec) +16166: { +16166: _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(), +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: ~_Temporary_value() +16166: { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } +16166: +16166: value_type& +16166: _M_val() noexcept { return _M_storage._M_val; } +16166: +16166: private: +16166: _Tp* +16166: _M_ptr() noexcept { return std::__addressof(_M_storage._M_val); } +16166: +16166: union _Storage +16166: { +16166: constexpr _Storage() : _M_byte() { } +16166: ~_Storage() { } +16166: _Storage& operator=(const _Storage&) = delete; +16166: unsigned char _M_byte; +16166: _Tp _M_val; +16166: }; +16166: +16166: vector* _M_this; +16166: _Storage _M_storage; +16166: }; +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: _M_insert_aux(iterator __position, _Arg&& __arg); +16166: +16166: template +16166: +16166: void +16166: _M_realloc_insert(iterator __position, _Args&&... __args); +16166: +16166: template +16166: +16166: void +16166: _M_realloc_append(_Args&&... __args); +16166: +16166: +16166: +16166: iterator +16166: _M_insert_rval(const_iterator __position, value_type&& __v); +16166: +16166: +16166: template +16166: +16166: iterator +16166: _M_emplace_aux(const_iterator __position, _Args&&... __args); +16166: +16166: +16166: +16166: iterator +16166: _M_emplace_aux(const_iterator __position, value_type&& __v) +16166: { return _M_insert_rval(__position, std::move(__v)); } +16166: +16166: +16166: +16166: +16166: size_type +16166: _M_check_len(size_type __n, const char* __s) const +16166: { +16166: if (max_size() - size() < __n) +16166: __throw_length_error((__s)); +16166: +16166: const size_type __len = size() + (std::max)(size(), __n); +16166: return (__len < size() || __len > max_size()) ? max_size() : __len; +16166: } +16166: +16166: +16166: static size_type +16166: _S_check_init_len(size_type __n, const allocator_type& __a) +16166: { +16166: if (__n > _S_max_size(_Tp_alloc_type(__a))) +16166: __throw_length_error( +16166: ("cannot create std::vector larger than max_size()")); +16166: return __n; +16166: } +16166: +16166: static size_type +16166: _S_max_size(const _Tp_alloc_type& __a) noexcept +16166: { +16166: +16166: +16166: +16166: const size_t __diffmax +16166: = __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); +16166: const size_t __allocmax = _Alloc_traits::max_size(__a); +16166: return (std::min)(__diffmax, __allocmax); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: _M_erase_at_end(pointer __pos) noexcept +16166: { +16166: if (size_type __n = this->_M_impl._M_finish - __pos) +16166: { +16166: std::_Destroy(__pos, this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish = __pos; +16166: ; +16166: } +16166: } +16166: +16166: +16166: iterator +16166: _M_erase(iterator __position); +16166: +16166: +16166: iterator +16166: _M_erase(iterator __first, iterator __last); +16166: +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: void +16166: _M_move_assign(vector&& __x, true_type) noexcept +16166: { +16166: vector __tmp(get_allocator()); +16166: this->_M_impl._M_swap_data(__x._M_impl); +16166: __tmp._M_impl._M_swap_data(__x._M_impl); +16166: std::__alloc_on_move(_M_get_Tp_allocator(), __x._M_get_Tp_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: _M_move_assign(vector&& __x, false_type) +16166: { +16166: if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator()) +16166: _M_move_assign(std::move(__x), true_type()); +16166: else +16166: { +16166: +16166: +16166: this->_M_assign_aux(std::make_move_iterator(__x.begin()), +16166: std::make_move_iterator(__x.end()), +16166: std::random_access_iterator_tag()); +16166: __x.clear(); +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: _Up* +16166: _M_data_ptr(_Up* __ptr) const noexcept +16166: { return __ptr; } +16166: +16166: +16166: template +16166: +16166: typename std::pointer_traits<_Ptr>::element_type* +16166: _M_data_ptr(_Ptr __ptr) const +16166: { return empty() ? nullptr : std::__to_address(__ptr); } +16166: # 2025 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: }; +16166: +16166: +16166: template::value_type, +16166: typename _Allocator = allocator<_ValT>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireAllocator<_Allocator>> +16166: vector(_InputIterator, _InputIterator, _Allocator = _Allocator()) +16166: -> vector<_ValT, _Allocator>; +16166: # 2047 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +16166: { return (__x.size() == __y.size() +16166: && std::equal(__x.begin(), __x.end(), __y.begin())); } +16166: # 2087 "/usr/include/c++/14/bits/stl_vector.h" 3 +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +16166: { return std::lexicographical_compare(__x.begin(), __x.end(), +16166: __y.begin(), __y.end()); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: +16166: inline void +16166: swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: +16166: namespace __detail::__variant +16166: { +16166: template struct _Never_valueless_alt; +16166: +16166: +16166: +16166: template +16166: struct _Never_valueless_alt> +16166: : std::is_nothrow_move_assignable> +16166: { }; +16166: } +16166: +16166: +16166: +16166: } +16166: # 67 "/usr/include/c++/14/vector" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_bvector.h" 1 3 +16166: # 68 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: typedef unsigned long _Bit_type; +16166: enum { _S_word_bit = int(8 * sizeof(_Bit_type)) }; +16166: +16166: __attribute__((__nonnull__)) +16166: +16166: void +16166: __fill_bvector_n(_Bit_type*, size_t, bool) noexcept; +16166: +16166: +16166: +16166: struct _Bit_reference +16166: { +16166: _Bit_type * _M_p; +16166: _Bit_type _M_mask; +16166: +16166: +16166: _Bit_reference(_Bit_type * __x, _Bit_type __y) +16166: : _M_p(__x), _M_mask(__y) { } +16166: +16166: +16166: _Bit_reference() noexcept : _M_p(0), _M_mask(0) { } +16166: +16166: +16166: _Bit_reference(const _Bit_reference&) = default; +16166: +16166: +16166: [[__nodiscard__]] +16166: operator bool() const noexcept +16166: { return !!(*_M_p & _M_mask); } +16166: +16166: +16166: _Bit_reference& +16166: operator=(bool __x) noexcept +16166: { +16166: if (__x) +16166: *_M_p |= _M_mask; +16166: else +16166: *_M_p &= ~_M_mask; +16166: return *this; +16166: } +16166: # 125 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: +16166: _Bit_reference& +16166: operator=(const _Bit_reference& __x) noexcept +16166: { return *this = bool(__x); } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: operator==(const _Bit_reference& __x) const +16166: { return bool(*this) == bool(__x); } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: operator<(const _Bit_reference& __x) const +16166: { return !bool(*this) && bool(__x); } +16166: +16166: +16166: void +16166: flip() noexcept +16166: { *_M_p ^= _M_mask; } +16166: +16166: +16166: +16166: friend void +16166: swap(_Bit_reference __x, _Bit_reference __y) noexcept +16166: { +16166: bool __tmp = __x; +16166: __x = __y; +16166: __y = __tmp; +16166: } +16166: +16166: +16166: friend void +16166: swap(_Bit_reference __x, bool& __y) noexcept +16166: { +16166: bool __tmp = __x; +16166: __x = __y; +16166: __y = __tmp; +16166: } +16166: +16166: +16166: friend void +16166: swap(bool& __x, _Bit_reference __y) noexcept +16166: { +16166: bool __tmp = __x; +16166: __x = __y; +16166: __y = __tmp; +16166: } +16166: +16166: }; +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: struct _Bit_iterator_base +16166: : public std::iterator +16166: { +16166: _Bit_type * _M_p; +16166: unsigned int _M_offset; +16166: +16166: inline __attribute__((__always_inline__)) +16166: void +16166: _M_assume_normalized() const +16166: { +16166: +16166: unsigned int __ofst = _M_offset; +16166: __attribute__ ((__assume__ (__ofst < unsigned(_S_word_bit)))); +16166: +16166: } +16166: +16166: +16166: _Bit_iterator_base(_Bit_type * __x, unsigned int __y) +16166: : _M_p(__x), _M_offset(__y) { } +16166: +16166: +16166: void +16166: _M_bump_up() +16166: { +16166: _M_assume_normalized(); +16166: if (_M_offset++ == int(_S_word_bit) - 1) +16166: { +16166: _M_offset = 0; +16166: ++_M_p; +16166: } +16166: } +16166: +16166: +16166: void +16166: _M_bump_down() +16166: { +16166: _M_assume_normalized(); +16166: if (_M_offset-- == 0) +16166: { +16166: _M_offset = int(_S_word_bit) - 1; +16166: --_M_p; +16166: } +16166: } +16166: +16166: +16166: void +16166: _M_incr(ptrdiff_t __i) +16166: { +16166: _M_assume_normalized(); +16166: difference_type __n = __i + _M_offset; +16166: _M_p += __n / int(_S_word_bit); +16166: __n = __n % int(_S_word_bit); +16166: if (__n < 0) +16166: { +16166: __n += int(_S_word_bit); +16166: --_M_p; +16166: } +16166: _M_offset = static_cast(__n); +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +16166: { +16166: __x._M_assume_normalized(); +16166: __y._M_assume_normalized(); +16166: return __x._M_p == __y._M_p && __x._M_offset == __y._M_offset; +16166: } +16166: # 260 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: [[__nodiscard__]] +16166: friend bool +16166: operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +16166: { +16166: __x._M_assume_normalized(); +16166: __y._M_assume_normalized(); +16166: return __x._M_p < __y._M_p +16166: || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +16166: { return !(__x == __y); } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +16166: { return __y < __x; } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +16166: { return !(__y < __x); } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: friend ptrdiff_t +16166: operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) +16166: { +16166: __x._M_assume_normalized(); +16166: __y._M_assume_normalized(); +16166: return (int(_S_word_bit) * (__x._M_p - __y._M_p) +16166: + __x._M_offset - __y._M_offset); +16166: } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: struct _Bit_iterator : public _Bit_iterator_base +16166: { +16166: typedef _Bit_reference reference; +16166: +16166: +16166: +16166: typedef _Bit_reference* pointer; +16166: +16166: typedef _Bit_iterator iterator; +16166: +16166: +16166: _Bit_iterator() : _Bit_iterator_base(0, 0) { } +16166: +16166: +16166: _Bit_iterator(_Bit_type * __x, unsigned int __y) +16166: : _Bit_iterator_base(__x, __y) { } +16166: +16166: +16166: iterator +16166: _M_const_cast() const +16166: { return *this; } +16166: +16166: [[__nodiscard__]] +16166: reference +16166: operator*() const +16166: { +16166: _M_assume_normalized(); +16166: return reference(_M_p, 1UL << _M_offset); +16166: } +16166: +16166: +16166: iterator& +16166: operator++() +16166: { +16166: _M_bump_up(); +16166: return *this; +16166: } +16166: +16166: +16166: iterator +16166: operator++(int) +16166: { +16166: iterator __tmp = *this; +16166: _M_bump_up(); +16166: return __tmp; +16166: } +16166: +16166: +16166: iterator& +16166: operator--() +16166: { +16166: _M_bump_down(); +16166: return *this; +16166: } +16166: +16166: +16166: iterator +16166: operator--(int) +16166: { +16166: iterator __tmp = *this; +16166: _M_bump_down(); +16166: return __tmp; +16166: } +16166: +16166: +16166: iterator& +16166: operator+=(difference_type __i) +16166: { +16166: _M_incr(__i); +16166: return *this; +16166: } +16166: +16166: +16166: iterator& +16166: operator-=(difference_type __i) +16166: { +16166: *this += -__i; +16166: return *this; +16166: } +16166: +16166: [[__nodiscard__]] +16166: reference +16166: operator[](difference_type __i) const +16166: { return *(*this + __i); } +16166: +16166: [[__nodiscard__]] +16166: friend iterator +16166: operator+(const iterator& __x, difference_type __n) +16166: { +16166: iterator __tmp = __x; +16166: __tmp += __n; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend iterator +16166: operator+(difference_type __n, const iterator& __x) +16166: { return __x + __n; } +16166: +16166: [[__nodiscard__]] +16166: friend iterator +16166: operator-(const iterator& __x, difference_type __n) +16166: { +16166: iterator __tmp = __x; +16166: __tmp -= __n; +16166: return __tmp; +16166: } +16166: }; +16166: +16166: struct _Bit_const_iterator : public _Bit_iterator_base +16166: { +16166: typedef bool reference; +16166: typedef bool const_reference; +16166: +16166: +16166: +16166: typedef const bool* pointer; +16166: +16166: typedef _Bit_const_iterator const_iterator; +16166: +16166: +16166: _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } +16166: +16166: +16166: _Bit_const_iterator(_Bit_type * __x, unsigned int __y) +16166: : _Bit_iterator_base(__x, __y) { } +16166: +16166: +16166: _Bit_const_iterator(const _Bit_iterator& __x) +16166: : _Bit_iterator_base(__x._M_p, __x._M_offset) { } +16166: +16166: +16166: _Bit_iterator +16166: _M_const_cast() const +16166: { return _Bit_iterator(_M_p, _M_offset); } +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: operator*() const +16166: { +16166: _M_assume_normalized(); +16166: return _Bit_reference(_M_p, 1UL << _M_offset); +16166: } +16166: +16166: +16166: const_iterator& +16166: operator++() +16166: { +16166: _M_bump_up(); +16166: return *this; +16166: } +16166: +16166: +16166: const_iterator +16166: operator++(int) +16166: { +16166: const_iterator __tmp = *this; +16166: _M_bump_up(); +16166: return __tmp; +16166: } +16166: +16166: +16166: const_iterator& +16166: operator--() +16166: { +16166: _M_bump_down(); +16166: return *this; +16166: } +16166: +16166: +16166: const_iterator +16166: operator--(int) +16166: { +16166: const_iterator __tmp = *this; +16166: _M_bump_down(); +16166: return __tmp; +16166: } +16166: +16166: +16166: const_iterator& +16166: operator+=(difference_type __i) +16166: { +16166: _M_incr(__i); +16166: return *this; +16166: } +16166: +16166: +16166: const_iterator& +16166: operator-=(difference_type __i) +16166: { +16166: *this += -__i; +16166: return *this; +16166: } +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: operator[](difference_type __i) const +16166: { return *(*this + __i); } +16166: +16166: [[__nodiscard__]] +16166: friend const_iterator +16166: operator+(const const_iterator& __x, difference_type __n) +16166: { +16166: const_iterator __tmp = __x; +16166: __tmp += __n; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend const_iterator +16166: operator-(const const_iterator& __x, difference_type __n) +16166: { +16166: const_iterator __tmp = __x; +16166: __tmp -= __n; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend const_iterator +16166: operator+(difference_type __n, const const_iterator& __x) +16166: { return __x + __n; } +16166: }; +16166: +16166: template +16166: struct _Bvector_base +16166: { +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_Bit_type>::other _Bit_alloc_type; +16166: typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> +16166: _Bit_alloc_traits; +16166: typedef typename _Bit_alloc_traits::pointer _Bit_pointer; +16166: +16166: struct _Bvector_impl_data +16166: { +16166: +16166: _Bit_iterator _M_start; +16166: # 547 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: _Bit_iterator _M_finish; +16166: _Bit_pointer _M_end_of_storage; +16166: +16166: +16166: _Bvector_impl_data() noexcept +16166: : _M_start(), _M_finish(), _M_end_of_storage() +16166: { } +16166: +16166: +16166: _Bvector_impl_data(const _Bvector_impl_data&) = default; +16166: +16166: _Bvector_impl_data& +16166: operator=(const _Bvector_impl_data&) = default; +16166: +16166: +16166: _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept +16166: : _Bvector_impl_data(__x) +16166: { __x._M_reset(); } +16166: +16166: +16166: void +16166: _M_move_data(_Bvector_impl_data&& __x) noexcept +16166: { +16166: *this = __x; +16166: __x._M_reset(); +16166: } +16166: +16166: +16166: +16166: void +16166: _M_reset() noexcept +16166: { *this = _Bvector_impl_data(); } +16166: +16166: +16166: void +16166: _M_swap_data(_Bvector_impl_data& __x) noexcept +16166: { +16166: +16166: +16166: std::swap(*this, __x); +16166: } +16166: }; +16166: +16166: struct _Bvector_impl +16166: : public _Bit_alloc_type, public _Bvector_impl_data +16166: { +16166: +16166: _Bvector_impl() noexcept(is_nothrow_default_constructible<_Bit_alloc_type>::value) +16166: +16166: +16166: +16166: +16166: : _Bit_alloc_type() +16166: { } +16166: +16166: +16166: _Bvector_impl(const _Bit_alloc_type& __a) noexcept +16166: : _Bit_alloc_type(__a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: _Bvector_impl(_Bvector_impl&& __x) noexcept +16166: : _Bit_alloc_type(std::move(__x)), _Bvector_impl_data(std::move(__x)) +16166: { } +16166: +16166: +16166: _Bvector_impl(_Bit_alloc_type&& __a, _Bvector_impl&& __x) noexcept +16166: : _Bit_alloc_type(std::move(__a)), _Bvector_impl_data(std::move(__x)) +16166: { } +16166: +16166: +16166: +16166: _Bit_type* +16166: _M_end_addr() const noexcept +16166: { +16166: if (this->_M_end_of_storage) +16166: return std::__addressof(this->_M_end_of_storage[-1]) + 1; +16166: return 0; +16166: } +16166: }; +16166: +16166: public: +16166: typedef _Alloc allocator_type; +16166: +16166: +16166: _Bit_alloc_type& +16166: _M_get_Bit_allocator() noexcept +16166: { return this->_M_impl; } +16166: +16166: +16166: const _Bit_alloc_type& +16166: _M_get_Bit_allocator() const noexcept +16166: { return this->_M_impl; } +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_get_Bit_allocator()); } +16166: +16166: +16166: _Bvector_base() = default; +16166: +16166: +16166: +16166: +16166: +16166: _Bvector_base(const allocator_type& __a) +16166: : _M_impl(_Bit_alloc_type(__a)) { } +16166: +16166: +16166: _Bvector_base(_Bvector_base&&) = default; +16166: +16166: +16166: _Bvector_base(_Bvector_base&& __x, const allocator_type& __a) noexcept +16166: : _M_impl(_Bit_alloc_type(__a), std::move(__x._M_impl)) +16166: { } +16166: +16166: +16166: +16166: ~_Bvector_base() +16166: { this->_M_deallocate(); } +16166: +16166: protected: +16166: _Bvector_impl _M_impl; +16166: +16166: +16166: _Bit_pointer +16166: _M_allocate(size_t __n) +16166: { +16166: _Bit_pointer __p = _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); +16166: # 688 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: return __p; +16166: } +16166: +16166: +16166: void +16166: _M_deallocate() +16166: { +16166: if (_M_impl._M_start._M_p) +16166: { +16166: const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; +16166: _Bit_alloc_traits::deallocate(_M_impl, +16166: _M_impl._M_end_of_storage - __n, +16166: __n); +16166: _M_impl._M_reset(); +16166: } +16166: } +16166: +16166: +16166: +16166: void +16166: _M_move_data(_Bvector_base&& __x) noexcept +16166: { _M_impl._M_move_data(std::move(__x._M_impl)); } +16166: +16166: +16166: constexpr +16166: static size_t +16166: _S_nword(size_t __n) +16166: { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } +16166: }; +16166: # 739 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: template +16166: class vector : protected _Bvector_base<_Alloc> +16166: { +16166: typedef _Bvector_base<_Alloc> _Base; +16166: typedef typename _Base::_Bit_pointer _Bit_pointer; +16166: typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; +16166: +16166: +16166: friend struct std::hash; +16166: +16166: +16166: public: +16166: typedef bool value_type; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef _Bit_reference reference; +16166: typedef bool const_reference; +16166: typedef _Bit_reference* pointer; +16166: typedef const bool* const_pointer; +16166: typedef _Bit_iterator iterator; +16166: typedef _Bit_const_iterator const_iterator; +16166: typedef std::reverse_iterator const_reverse_iterator; +16166: typedef std::reverse_iterator reverse_iterator; +16166: typedef _Alloc allocator_type; +16166: +16166: +16166: allocator_type +16166: get_allocator() const +16166: { return _Base::get_allocator(); } +16166: +16166: protected: +16166: using _Base::_M_allocate; +16166: using _Base::_M_deallocate; +16166: using _Base::_S_nword; +16166: using _Base::_M_get_Bit_allocator; +16166: +16166: public: +16166: +16166: vector() = default; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: vector(const allocator_type& __a) +16166: : _Base(__a) { } +16166: +16166: +16166: +16166: explicit +16166: vector(size_type __n, const allocator_type& __a = allocator_type()) +16166: : vector(__n, false, __a) +16166: { } +16166: +16166: +16166: vector(size_type __n, const bool& __value, +16166: const allocator_type& __a = allocator_type()) +16166: +16166: +16166: +16166: +16166: +16166: : _Base(__a) +16166: { +16166: _M_initialize(__n); +16166: _M_initialize_value(__value); +16166: } +16166: +16166: +16166: vector(const vector& __x) +16166: : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) +16166: { +16166: const_iterator __xbegin = __x.begin(), __xend = __x.end(); +16166: _M_initialize(__x.size()); +16166: _M_copy_aligned(__xbegin, __xend, begin()); +16166: } +16166: +16166: +16166: vector(vector&&) = default; +16166: +16166: private: +16166: +16166: vector(vector&& __x, const allocator_type& __a, true_type) noexcept +16166: : _Base(std::move(__x), __a) +16166: { } +16166: +16166: +16166: vector(vector&& __x, const allocator_type& __a, false_type) +16166: : _Base(__a) +16166: { +16166: if (__x.get_allocator() == __a) +16166: this->_M_move_data(std::move(__x)); +16166: else +16166: { +16166: _M_initialize(__x.size()); +16166: _M_copy_aligned(__x.begin(), __x.end(), begin()); +16166: __x.clear(); +16166: } +16166: } +16166: +16166: public: +16166: +16166: vector(vector&& __x, const __type_identity_t& __a) +16166: noexcept(_Bit_alloc_traits::_S_always_equal()) +16166: : vector(std::move(__x), __a, +16166: typename _Bit_alloc_traits::is_always_equal{}) +16166: { } +16166: +16166: +16166: vector(const vector& __x, const __type_identity_t& __a) +16166: : _Base(__a) +16166: { +16166: _M_initialize(__x.size()); +16166: _M_copy_aligned(__x.begin(), __x.end(), begin()); +16166: } +16166: +16166: +16166: vector(initializer_list __l, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(__a) +16166: { +16166: _M_initialize_range(__l.begin(), __l.end(), +16166: random_access_iterator_tag()); +16166: } +16166: +16166: +16166: +16166: template> +16166: +16166: vector(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(__a) +16166: { +16166: _M_initialize_range(__first, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: # 889 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: +16166: ~vector() noexcept { } +16166: +16166: +16166: vector& +16166: operator=(const vector& __x) +16166: { +16166: if (&__x == this) +16166: return *this; +16166: +16166: if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) +16166: { +16166: if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) +16166: { +16166: this->_M_deallocate(); +16166: std::__alloc_on_copy(_M_get_Bit_allocator(), +16166: __x._M_get_Bit_allocator()); +16166: _M_initialize(__x.size()); +16166: } +16166: else +16166: std::__alloc_on_copy(_M_get_Bit_allocator(), +16166: __x._M_get_Bit_allocator()); +16166: } +16166: +16166: if (__x.size() > capacity()) +16166: { +16166: this->_M_deallocate(); +16166: _M_initialize(__x.size()); +16166: } +16166: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), +16166: begin()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: vector& +16166: operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) +16166: { +16166: if (_Bit_alloc_traits::_S_propagate_on_move_assign() +16166: || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) +16166: { +16166: this->_M_deallocate(); +16166: this->_M_move_data(std::move(__x)); +16166: std::__alloc_on_move(_M_get_Bit_allocator(), +16166: __x._M_get_Bit_allocator()); +16166: } +16166: else +16166: { +16166: if (__x.size() > capacity()) +16166: { +16166: this->_M_deallocate(); +16166: _M_initialize(__x.size()); +16166: } +16166: this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), +16166: begin()); +16166: __x.clear(); +16166: } +16166: return *this; +16166: } +16166: +16166: +16166: vector& +16166: operator=(initializer_list __l) +16166: { +16166: this->assign(__l.begin(), __l.end()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: assign(size_type __n, const bool& __x) +16166: { _M_fill_assign(__n, __x); } +16166: +16166: +16166: template> +16166: +16166: void +16166: assign(_InputIterator __first, _InputIterator __last) +16166: { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +16166: # 987 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: +16166: void +16166: assign(initializer_list __l) +16166: { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: begin() noexcept +16166: { return iterator(this->_M_impl._M_start._M_p, 0); } +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: begin() const noexcept +16166: { return const_iterator(this->_M_impl._M_start._M_p, 0); } +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: end() noexcept +16166: { return this->_M_impl._M_finish; } +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: end() const noexcept +16166: { return this->_M_impl._M_finish; } +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return reverse_iterator(end()); } +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rend() noexcept +16166: { return reverse_iterator(begin()); } +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cbegin() const noexcept +16166: { return const_iterator(this->_M_impl._M_start._M_p, 0); } +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cend() const noexcept +16166: { return this->_M_impl._M_finish; } +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: size() const noexcept +16166: { return size_type(end() - begin()); } +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: max_size() const noexcept +16166: { +16166: const size_type __isize = +16166: __gnu_cxx::__numeric_traits::__max +16166: - int(_S_word_bit) + 1; +16166: const size_type __asize +16166: = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); +16166: return (__asize <= __isize / int(_S_word_bit) +16166: ? __asize * int(_S_word_bit) : __isize); +16166: } +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: capacity() const noexcept +16166: { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) +16166: - begin()); } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: empty() const noexcept +16166: { return begin() == end(); } +16166: +16166: [[__nodiscard__]] +16166: reference +16166: operator[](size_type __n) +16166: { return begin()[__n]; } +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: operator[](size_type __n) const +16166: { return begin()[__n]; } +16166: +16166: protected: +16166: +16166: void +16166: _M_range_check(size_type __n) const +16166: { +16166: if (__n >= this->size()) +16166: __throw_out_of_range_fmt(("vector::_M_range_check: __n " "(which is %zu) >= this->size() " "(which is %zu)") +16166: +16166: , +16166: __n, this->size()); +16166: } +16166: +16166: public: +16166: [[__nodiscard__]] +16166: reference +16166: at(size_type __n) +16166: { +16166: _M_range_check(__n); +16166: return (*this)[__n]; +16166: } +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: at(size_type __n) const +16166: { +16166: _M_range_check(__n); +16166: return (*this)[__n]; +16166: } +16166: +16166: +16166: void +16166: reserve(size_type __n) +16166: { +16166: if (__n > max_size()) +16166: __throw_length_error(("vector::reserve")); +16166: if (capacity() < __n) +16166: _M_reallocate(__n); +16166: } +16166: +16166: [[__nodiscard__]] +16166: reference +16166: front() +16166: { return *begin(); } +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: front() const +16166: { return *begin(); } +16166: +16166: [[__nodiscard__]] +16166: reference +16166: back() +16166: { return *(end() - 1); } +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: back() const +16166: { return *(end() - 1); } +16166: +16166: +16166: void +16166: push_back(bool __x) +16166: { +16166: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) +16166: *this->_M_impl._M_finish++ = __x; +16166: else +16166: _M_insert_aux(end(), __x); +16166: } +16166: +16166: +16166: void +16166: swap(vector& __x) noexcept +16166: { +16166: +16166: 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) +16166: ; +16166: +16166: this->_M_impl._M_swap_data(__x._M_impl); +16166: _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), +16166: __x._M_get_Bit_allocator()); +16166: } +16166: +16166: +16166: +16166: static void +16166: swap(reference __x, reference __y) noexcept +16166: { +16166: bool __tmp = __x; +16166: __x = __y; +16166: __y = __tmp; +16166: } +16166: +16166: +16166: iterator +16166: +16166: insert(const_iterator __position, const bool& __x) +16166: +16166: +16166: +16166: { +16166: const difference_type __n = __position - begin(); +16166: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() +16166: && __position == end()) +16166: *this->_M_impl._M_finish++ = __x; +16166: else +16166: _M_insert_aux(__position._M_const_cast(), __x); +16166: return begin() + __n; +16166: } +16166: +16166: +16166: __attribute__ ((__deprecated__ ("use '" "insert(position, false)" "' instead"))) +16166: iterator +16166: insert(const_iterator __position) +16166: { return this->insert(__position._M_const_cast(), false); } +16166: +16166: +16166: +16166: template> +16166: +16166: iterator +16166: insert(const_iterator __position, +16166: _InputIterator __first, _InputIterator __last) +16166: { +16166: difference_type __offset = __position - cbegin(); +16166: _M_insert_range(__position._M_const_cast(), +16166: __first, __last, +16166: std::__iterator_category(__first)); +16166: return begin() + __offset; +16166: } +16166: # 1237 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: +16166: iterator +16166: insert(const_iterator __position, size_type __n, const bool& __x) +16166: { +16166: difference_type __offset = __position - cbegin(); +16166: _M_fill_insert(__position._M_const_cast(), __n, __x); +16166: return begin() + __offset; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: insert(const_iterator __p, initializer_list __l) +16166: { return this->insert(__p, __l.begin(), __l.end()); } +16166: +16166: +16166: +16166: void +16166: pop_back() +16166: { --this->_M_impl._M_finish; } +16166: +16166: +16166: iterator +16166: +16166: erase(const_iterator __position) +16166: +16166: +16166: +16166: { return _M_erase(__position._M_const_cast()); } +16166: +16166: +16166: iterator +16166: +16166: erase(const_iterator __first, const_iterator __last) +16166: +16166: +16166: +16166: { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } +16166: +16166: +16166: void +16166: resize(size_type __new_size, bool __x = bool()) +16166: { +16166: if (__new_size < size()) +16166: _M_erase_at_end(begin() + difference_type(__new_size)); +16166: else +16166: insert(end(), __new_size - size(), __x); +16166: } +16166: +16166: +16166: +16166: void +16166: shrink_to_fit() +16166: { _M_shrink_to_fit(); } +16166: +16166: +16166: +16166: void +16166: flip() noexcept +16166: { +16166: _Bit_type * const __end = this->_M_impl._M_end_addr(); +16166: for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) +16166: *__p = ~*__p; +16166: } +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_erase_at_end(begin()); } +16166: +16166: +16166: template +16166: +16166: +16166: reference +16166: +16166: +16166: +16166: emplace_back(_Args&&... __args) +16166: { +16166: push_back(bool(std::forward<_Args>(__args)...)); +16166: +16166: return back(); +16166: +16166: } +16166: +16166: template +16166: +16166: iterator +16166: emplace(const_iterator __pos, _Args&&... __args) +16166: { return insert(__pos, bool(std::forward<_Args>(__args)...)); } +16166: +16166: +16166: protected: +16166: +16166: +16166: iterator +16166: _M_copy_aligned(const_iterator __first, const_iterator __last, +16166: iterator __result) +16166: { +16166: _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); +16166: return std::copy(const_iterator(__last._M_p, 0), __last, +16166: iterator(__q, 0)); +16166: } +16166: +16166: +16166: void +16166: _M_initialize(size_type __n) +16166: { +16166: if (__n) +16166: { +16166: _Bit_pointer __q = this->_M_allocate(__n); +16166: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); +16166: iterator __start = iterator(std::__addressof(*__q), 0); +16166: this->_M_impl._M_start = __start; +16166: this->_M_impl._M_finish = __start + difference_type(__n); +16166: } +16166: } +16166: +16166: +16166: void +16166: _M_initialize_value(bool __x) noexcept +16166: { +16166: if (_Bit_type* __p = this->_M_impl._M_start._M_p) +16166: __fill_bvector_n(__p, this->_M_impl._M_end_addr() - __p, __x); +16166: } +16166: +16166: +16166: void +16166: _M_reallocate(size_type __n); +16166: +16166: +16166: +16166: bool +16166: _M_shrink_to_fit(); +16166: # 1398 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: template +16166: +16166: void +16166: _M_initialize_range(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag) +16166: { +16166: for (; __first != __last; ++__first) +16166: push_back(*__first); +16166: } +16166: +16166: template +16166: +16166: void +16166: _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag) +16166: { +16166: const size_type __n = std::distance(__first, __last); +16166: _M_initialize(__n); +16166: std::copy(__first, __last, begin()); +16166: } +16166: # 1434 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: +16166: void +16166: _M_fill_assign(size_t __n, bool __x) +16166: { +16166: if (__n > size()) +16166: { +16166: _M_initialize_value(__x); +16166: insert(end(), __n - size(), __x); +16166: } +16166: else +16166: { +16166: _M_erase_at_end(begin() + __n); +16166: _M_initialize_value(__x); +16166: } +16166: } +16166: +16166: template +16166: +16166: void +16166: _M_assign_aux(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag) +16166: { +16166: iterator __cur = begin(); +16166: for (; __first != __last && __cur != end(); ++__cur, (void)++__first) +16166: *__cur = *__first; +16166: if (__first == __last) +16166: _M_erase_at_end(__cur); +16166: else +16166: insert(end(), __first, __last); +16166: } +16166: +16166: template +16166: +16166: void +16166: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag) +16166: { +16166: const size_type __len = std::distance(__first, __last); +16166: if (__len < size()) +16166: _M_erase_at_end(std::copy(__first, __last, begin())); +16166: else +16166: { +16166: _ForwardIterator __mid = __first; +16166: std::advance(__mid, size()); +16166: std::copy(__first, __mid, begin()); +16166: insert(end(), __mid, __last); +16166: } +16166: } +16166: # 1501 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: +16166: void +16166: _M_fill_insert(iterator __position, size_type __n, bool __x); +16166: +16166: template +16166: +16166: void +16166: _M_insert_range(iterator __pos, _InputIterator __first, +16166: _InputIterator __last, std::input_iterator_tag) +16166: { +16166: for (; __first != __last; ++__first) +16166: { +16166: __pos = insert(__pos, *__first); +16166: ++__pos; +16166: } +16166: } +16166: +16166: template +16166: +16166: void +16166: _M_insert_range(iterator __position, _ForwardIterator __first, +16166: _ForwardIterator __last, std::forward_iterator_tag); +16166: +16166: +16166: void +16166: _M_insert_aux(iterator __position, bool __x); +16166: +16166: +16166: size_type +16166: _M_check_len(size_type __n, const char* __s) const +16166: { +16166: if (max_size() - size() < __n) +16166: __throw_length_error((__s)); +16166: +16166: const size_type __len = size() + std::max(size(), __n); +16166: return (__len < size() || __len > max_size()) ? max_size() : __len; +16166: } +16166: +16166: +16166: void +16166: _M_erase_at_end(iterator __pos) +16166: { this->_M_impl._M_finish = __pos; } +16166: +16166: +16166: iterator +16166: _M_erase(iterator __pos); +16166: +16166: +16166: iterator +16166: _M_erase(iterator __first, iterator __last); +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void data() = delete; +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: inline void +16166: __fill_bvector(_Bit_type* __v, unsigned int __first, unsigned int __last, +16166: bool __x) noexcept +16166: { +16166: const _Bit_type __fmask = ~0ul << __first; +16166: const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); +16166: const _Bit_type __mask = __fmask & __lmask; +16166: +16166: if (__x) +16166: *__v |= __mask; +16166: else +16166: *__v &= ~__mask; +16166: } +16166: +16166: +16166: __attribute__((__nonnull__)) +16166: +16166: inline void +16166: __fill_bvector_n(_Bit_type* __p, size_t __n, bool __x) noexcept +16166: { +16166: # 1597 "/usr/include/c++/14/bits/stl_bvector.h" 3 +16166: __builtin_memset(__p, __x ? ~0 : 0, __n * sizeof(_Bit_type)); +16166: } +16166: +16166: +16166: +16166: inline void +16166: __fill_a1(std::_Bit_iterator __first, +16166: std::_Bit_iterator __last, const bool& __x) +16166: { +16166: if (__first._M_p != __last._M_p) +16166: { +16166: _Bit_type* __first_p = __first._M_p; +16166: if (__first._M_offset != 0) +16166: __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); +16166: +16166: __fill_bvector_n(__first_p, __last._M_p - __first_p, __x); +16166: +16166: if (__last._M_offset != 0) +16166: __fill_bvector(__last._M_p, 0, __last._M_offset, __x); +16166: } +16166: else if (__first._M_offset != __last._M_offset) +16166: __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: struct hash> +16166: : public __hash_base> +16166: { +16166: size_t +16166: operator()(const std::vector&) const noexcept; +16166: }; +16166: +16166: +16166: +16166: } +16166: # 68 "/usr/include/c++/14/vector" 2 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/vector.tcc" 1 3 +16166: # 59 "/usr/include/c++/14/bits/vector.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: reserve(size_type __n) +16166: { +16166: if (__n > this->max_size()) +16166: __throw_length_error(("vector::reserve")); +16166: if (this->capacity() < __n) +16166: { +16166: const size_type __old_size = size(); +16166: pointer __tmp; +16166: +16166: if constexpr (_S_use_relocate()) +16166: { +16166: __tmp = this->_M_allocate(__n); +16166: _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, +16166: __tmp, _M_get_Tp_allocator()); +16166: } +16166: else +16166: +16166: { +16166: __tmp = _M_allocate_and_copy(__n, +16166: std::__make_move_if_noexcept_iterator(this->_M_impl._M_start), +16166: std::__make_move_if_noexcept_iterator(this->_M_impl._M_finish)); +16166: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: } +16166: ; +16166: _M_deallocate(this->_M_impl._M_start, +16166: this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_start); +16166: this->_M_impl._M_start = __tmp; +16166: this->_M_impl._M_finish = __tmp + __old_size; +16166: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; +16166: } +16166: } +16166: +16166: +16166: template +16166: template +16166: +16166: +16166: typename vector<_Tp, _Alloc>::reference +16166: +16166: +16166: +16166: vector<_Tp, _Alloc>:: +16166: emplace_back(_Args&&... __args) +16166: { +16166: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +16166: { +16166: ; +16166: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +16166: std::forward<_Args>(__args)...); +16166: ++this->_M_impl._M_finish; +16166: ; +16166: } +16166: else +16166: _M_realloc_append(std::forward<_Args>(__args)...); +16166: +16166: return back(); +16166: +16166: } +16166: +16166: +16166: template +16166: +16166: typename vector<_Tp, _Alloc>::iterator +16166: vector<_Tp, _Alloc>:: +16166: +16166: insert(const_iterator __position, const value_type& __x) +16166: +16166: +16166: +16166: { +16166: const size_type __n = __position - begin(); +16166: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__position != const_iterator())) std::__glibcxx_assert_fail(); } while (false); +16166: if (!(__position != const_iterator())) +16166: __builtin_unreachable(); +16166: +16166: if (__position == end()) +16166: { +16166: ; +16166: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +16166: __x); +16166: ++this->_M_impl._M_finish; +16166: ; +16166: } +16166: else +16166: { +16166: +16166: const auto __pos = begin() + (__position - cbegin()); +16166: +16166: +16166: _Temporary_value __x_copy(this, __x); +16166: _M_insert_aux(__pos, std::move(__x_copy._M_val())); +16166: +16166: +16166: +16166: } +16166: } +16166: else +16166: +16166: _M_realloc_insert(begin() + (__position - cbegin()), __x); +16166: +16166: +16166: +16166: +16166: return iterator(this->_M_impl._M_start + __n); +16166: } +16166: +16166: template +16166: +16166: typename vector<_Tp, _Alloc>::iterator +16166: vector<_Tp, _Alloc>:: +16166: _M_erase(iterator __position) +16166: { +16166: if (__position + 1 != end()) +16166: std::move(__position + 1, end(), __position); +16166: --this->_M_impl._M_finish; +16166: _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); +16166: ; +16166: return __position; +16166: } +16166: +16166: template +16166: +16166: typename vector<_Tp, _Alloc>::iterator +16166: vector<_Tp, _Alloc>:: +16166: _M_erase(iterator __first, iterator __last) +16166: { +16166: if (__first != __last) +16166: { +16166: if (__last != end()) +16166: std::move(__last, end(), __first); +16166: _M_erase_at_end(__first.base() + (end() - __last)); +16166: } +16166: return __first; +16166: } +16166: +16166: template +16166: +16166: vector<_Tp, _Alloc>& +16166: vector<_Tp, _Alloc>:: +16166: operator=(const vector<_Tp, _Alloc>& __x) +16166: { +16166: if (std::__addressof(__x) != this) +16166: { +16166: ; +16166: +16166: if (_Alloc_traits::_S_propagate_on_copy_assign()) +16166: { +16166: if (!_Alloc_traits::_S_always_equal() +16166: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) +16166: { +16166: +16166: this->clear(); +16166: _M_deallocate(this->_M_impl._M_start, +16166: this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_start); +16166: this->_M_impl._M_start = nullptr; +16166: this->_M_impl._M_finish = nullptr; +16166: this->_M_impl._M_end_of_storage = nullptr; +16166: } +16166: std::__alloc_on_copy(_M_get_Tp_allocator(), +16166: __x._M_get_Tp_allocator()); +16166: } +16166: +16166: const size_type __xlen = __x.size(); +16166: if (__xlen > capacity()) +16166: { +16166: pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(), +16166: __x.end()); +16166: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: _M_deallocate(this->_M_impl._M_start, +16166: this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_start); +16166: this->_M_impl._M_start = __tmp; +16166: this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen; +16166: } +16166: else if (size() >= __xlen) +16166: { +16166: std::_Destroy(std::copy(__x.begin(), __x.end(), begin()), +16166: end(), _M_get_Tp_allocator()); +16166: } +16166: else +16166: { +16166: std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(), +16166: this->_M_impl._M_start); +16166: std::__uninitialized_copy_a(__x._M_impl._M_start + size(), +16166: __x._M_impl._M_finish, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: } +16166: this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_fill_assign(size_t __n, const value_type& __val) +16166: { +16166: const size_type __sz = size(); +16166: if (__n > capacity()) +16166: { +16166: if (__n <= __sz) +16166: __builtin_unreachable(); +16166: vector __tmp(__n, __val, _M_get_Tp_allocator()); +16166: __tmp._M_impl._M_swap_data(this->_M_impl); +16166: } +16166: else if (__n > __sz) +16166: { +16166: std::fill(begin(), end(), __val); +16166: const size_type __add = __n - __sz; +16166: ; +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_fill_n_a(this->_M_impl._M_finish, +16166: __add, __val, _M_get_Tp_allocator()); +16166: ; +16166: } +16166: else +16166: _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); +16166: } +16166: +16166: template +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_assign_aux(_InputIterator __first, _InputIterator __last, +16166: std::input_iterator_tag) +16166: { +16166: pointer __cur(this->_M_impl._M_start); +16166: for (; __first != __last && __cur != this->_M_impl._M_finish; +16166: ++__cur, (void)++__first) +16166: *__cur = *__first; +16166: if (__first == __last) +16166: _M_erase_at_end(__cur); +16166: else +16166: _M_range_insert(end(), __first, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: template +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, +16166: std::forward_iterator_tag) +16166: { +16166: const size_type __sz = size(); +16166: const size_type __len = std::distance(__first, __last); +16166: +16166: if (__len > capacity()) +16166: { +16166: if (__len <= __sz) +16166: __builtin_unreachable(); +16166: +16166: _S_check_init_len(__len, _M_get_Tp_allocator()); +16166: pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); +16166: std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: ; +16166: _M_deallocate(this->_M_impl._M_start, +16166: this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_start); +16166: this->_M_impl._M_start = __tmp; +16166: this->_M_impl._M_finish = this->_M_impl._M_start + __len; +16166: this->_M_impl._M_end_of_storage = this->_M_impl._M_finish; +16166: } +16166: else if (__sz >= __len) +16166: _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start)); +16166: else +16166: { +16166: _ForwardIterator __mid = __first; +16166: std::advance(__mid, __sz); +16166: std::copy(__first, __mid, this->_M_impl._M_start); +16166: const size_type __attribute__((__unused__)) __n = __len - __sz; +16166: ; +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_copy_a(__mid, __last, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: ; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: auto +16166: vector<_Tp, _Alloc>:: +16166: _M_insert_rval(const_iterator __position, value_type&& __v) -> iterator +16166: { +16166: const auto __n = __position - cbegin(); +16166: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +16166: if (__position == cend()) +16166: { +16166: ; +16166: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +16166: std::move(__v)); +16166: ++this->_M_impl._M_finish; +16166: ; +16166: } +16166: else +16166: _M_insert_aux(begin() + __n, std::move(__v)); +16166: else +16166: _M_realloc_insert(begin() + __n, std::move(__v)); +16166: +16166: return iterator(this->_M_impl._M_start + __n); +16166: } +16166: +16166: template +16166: template +16166: +16166: auto +16166: vector<_Tp, _Alloc>:: +16166: _M_emplace_aux(const_iterator __position, _Args&&... __args) +16166: -> iterator +16166: { +16166: const auto __n = __position - cbegin(); +16166: if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) +16166: if (__position == cend()) +16166: { +16166: ; +16166: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +16166: std::forward<_Args>(__args)...); +16166: ++this->_M_impl._M_finish; +16166: ; +16166: } +16166: else +16166: { +16166: +16166: +16166: +16166: _Temporary_value __tmp(this, std::forward<_Args>(__args)...); +16166: _M_insert_aux(begin() + __n, std::move(__tmp._M_val())); +16166: } +16166: else +16166: _M_realloc_insert(begin() + __n, std::forward<_Args>(__args)...); +16166: +16166: return iterator(this->_M_impl._M_start + __n); +16166: } +16166: +16166: template +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_insert_aux(iterator __position, _Arg&& __arg) +16166: +16166: +16166: +16166: +16166: +16166: +16166: { +16166: ; +16166: _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, +16166: std::move(*(this->_M_impl._M_finish - 1))); +16166: ++this->_M_impl._M_finish; +16166: ; +16166: +16166: +16166: +16166: std::move_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1) +16166: +16166: ; +16166: +16166: +16166: +16166: *__position = std::forward<_Arg>(__arg); +16166: +16166: } +16166: +16166: +16166: template +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_realloc_insert(iterator __position, _Args&&... __args) +16166: +16166: +16166: +16166: +16166: +16166: +16166: { +16166: const size_type __len = _M_check_len(1u, "vector::_M_realloc_insert"); +16166: if (__len <= 0) +16166: __builtin_unreachable (); +16166: pointer __old_start = this->_M_impl._M_start; +16166: pointer __old_finish = this->_M_impl._M_finish; +16166: const size_type __elems_before = __position - begin(); +16166: pointer __new_start(this->_M_allocate(__len)); +16166: pointer __new_finish(__new_start); +16166: +16166: +16166: struct _Guard +16166: { +16166: pointer _M_storage; +16166: size_type _M_len; +16166: _Tp_alloc_type& _M_alloc; +16166: +16166: +16166: _Guard(pointer __s, size_type __l, _Tp_alloc_type& __a) +16166: : _M_storage(__s), _M_len(__l), _M_alloc(__a) +16166: { } +16166: +16166: +16166: ~_Guard() +16166: { +16166: if (_M_storage) +16166: __gnu_cxx::__alloc_traits<_Tp_alloc_type>:: +16166: deallocate(_M_alloc, _M_storage, _M_len); +16166: } +16166: +16166: private: +16166: _Guard(const _Guard&); +16166: }; +16166: +16166: { +16166: _Guard __guard(__new_start, __len, _M_impl); +16166: # 505 "/usr/include/c++/14/bits/vector.tcc" 3 +16166: _Alloc_traits::construct(this->_M_impl, +16166: std::__to_address(__new_start + __elems_before), +16166: std::forward<_Args>(__args)...); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if constexpr (_S_use_relocate()) +16166: { +16166: +16166: __new_finish = _S_relocate(__old_start, __position.base(), +16166: __new_start, _M_get_Tp_allocator()); +16166: ++__new_finish; +16166: __new_finish = _S_relocate(__position.base(), __old_finish, +16166: __new_finish, _M_get_Tp_allocator()); +16166: } +16166: else +16166: +16166: { +16166: +16166: struct _Guard_elts +16166: { +16166: pointer _M_first, _M_last; +16166: _Tp_alloc_type& _M_alloc; +16166: +16166: +16166: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) +16166: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) +16166: { } +16166: +16166: +16166: ~_Guard_elts() +16166: { std::_Destroy(_M_first, _M_last, _M_alloc); } +16166: +16166: private: +16166: _Guard_elts(const _Guard_elts&); +16166: }; +16166: +16166: +16166: _Guard_elts __guard_elts(__new_start + __elems_before, _M_impl); +16166: +16166: __new_finish = std::__uninitialized_move_if_noexcept_a( +16166: __old_start, __position.base(), +16166: __new_start, _M_get_Tp_allocator()); +16166: +16166: ++__new_finish; +16166: +16166: __guard_elts._M_first = __new_start; +16166: +16166: __new_finish = std::__uninitialized_move_if_noexcept_a( +16166: __position.base(), __old_finish, +16166: __new_finish, _M_get_Tp_allocator()); +16166: +16166: +16166: __guard_elts._M_first = __old_start; +16166: __guard_elts._M_last = __old_finish; +16166: } +16166: __guard._M_storage = __old_start; +16166: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; +16166: } +16166: +16166: +16166: +16166: this->_M_impl._M_start = __new_start; +16166: this->_M_impl._M_finish = __new_finish; +16166: this->_M_impl._M_end_of_storage = __new_start + __len; +16166: } +16166: +16166: +16166: template +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_realloc_append(_Args&&... __args) +16166: +16166: +16166: +16166: +16166: +16166: +16166: { +16166: const size_type __len = _M_check_len(1u, "vector::_M_realloc_append"); +16166: if (__len <= 0) +16166: __builtin_unreachable (); +16166: pointer __old_start = this->_M_impl._M_start; +16166: pointer __old_finish = this->_M_impl._M_finish; +16166: const size_type __elems = end() - begin(); +16166: pointer __new_start(this->_M_allocate(__len)); +16166: pointer __new_finish(__new_start); +16166: +16166: +16166: struct _Guard +16166: { +16166: pointer _M_storage; +16166: size_type _M_len; +16166: _Tp_alloc_type& _M_alloc; +16166: +16166: +16166: _Guard(pointer __s, size_type __l, _Tp_alloc_type& __a) +16166: : _M_storage(__s), _M_len(__l), _M_alloc(__a) +16166: { } +16166: +16166: +16166: ~_Guard() +16166: { +16166: if (_M_storage) +16166: __gnu_cxx::__alloc_traits<_Tp_alloc_type>:: +16166: deallocate(_M_alloc, _M_storage, _M_len); +16166: } +16166: +16166: private: +16166: _Guard(const _Guard&); +16166: }; +16166: +16166: { +16166: _Guard __guard(__new_start, __len, _M_impl); +16166: # 634 "/usr/include/c++/14/bits/vector.tcc" 3 +16166: _Alloc_traits::construct(this->_M_impl, +16166: std::__to_address(__new_start + __elems), +16166: std::forward<_Args>(__args)...); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if constexpr (_S_use_relocate()) +16166: { +16166: +16166: __new_finish = _S_relocate(__old_start, __old_finish, +16166: __new_start, _M_get_Tp_allocator()); +16166: ++__new_finish; +16166: } +16166: else +16166: +16166: { +16166: +16166: struct _Guard_elts +16166: { +16166: pointer _M_first, _M_last; +16166: _Tp_alloc_type& _M_alloc; +16166: +16166: +16166: _Guard_elts(pointer __elt, _Tp_alloc_type& __a) +16166: : _M_first(__elt), _M_last(__elt + 1), _M_alloc(__a) +16166: { } +16166: +16166: +16166: ~_Guard_elts() +16166: { std::_Destroy(_M_first, _M_last, _M_alloc); } +16166: +16166: private: +16166: _Guard_elts(const _Guard_elts&); +16166: }; +16166: +16166: +16166: _Guard_elts __guard_elts(__new_start + __elems, _M_impl); +16166: +16166: __new_finish = std::__uninitialized_move_if_noexcept_a( +16166: __old_start, __old_finish, +16166: __new_start, _M_get_Tp_allocator()); +16166: +16166: ++__new_finish; +16166: +16166: +16166: __guard_elts._M_first = __old_start; +16166: __guard_elts._M_last = __old_finish; +16166: } +16166: __guard._M_storage = __old_start; +16166: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; +16166: } +16166: +16166: +16166: +16166: this->_M_impl._M_start = __new_start; +16166: this->_M_impl._M_finish = __new_finish; +16166: this->_M_impl._M_end_of_storage = __new_start + __len; +16166: } +16166: +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_fill_insert(iterator __position, size_type __n, const value_type& __x) +16166: { +16166: if (__n != 0) +16166: { +16166: if (size_type(this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_finish) >= __n) +16166: { +16166: +16166: +16166: +16166: _Temporary_value __tmp(this, __x); +16166: value_type& __x_copy = __tmp._M_val(); +16166: +16166: const size_type __elems_after = end() - __position; +16166: pointer __old_finish(this->_M_impl._M_finish); +16166: if (__elems_after > __n) +16166: { +16166: ; +16166: std::__uninitialized_move_a(__old_finish - __n, +16166: __old_finish, +16166: __old_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish += __n; +16166: ; +16166: std::move_backward(__position.base(), __old_finish - __n, __old_finish) +16166: ; +16166: std::fill(__position.base(), __position.base() + __n, +16166: __x_copy); +16166: } +16166: else +16166: { +16166: ; +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_fill_n_a(__old_finish, +16166: __n - __elems_after, +16166: __x_copy, +16166: _M_get_Tp_allocator()); +16166: ; +16166: std::__uninitialized_move_a(__position.base(), __old_finish, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish += __elems_after; +16166: ; +16166: std::fill(__position.base(), __old_finish, __x_copy); +16166: } +16166: } +16166: else +16166: { +16166: +16166: +16166: pointer __old_start = this->_M_impl._M_start; +16166: pointer __old_finish = this->_M_impl._M_finish; +16166: const pointer __pos = __position.base(); +16166: +16166: const size_type __len = +16166: _M_check_len(__n, "vector::_M_fill_insert"); +16166: const size_type __elems_before = __pos - __old_start; +16166: pointer __new_start(this->_M_allocate(__len)); +16166: pointer __new_finish(__new_start); +16166: try +16166: { +16166: +16166: std::__uninitialized_fill_n_a(__new_start + __elems_before, +16166: __n, __x, +16166: _M_get_Tp_allocator()); +16166: __new_finish = pointer(); +16166: +16166: __new_finish +16166: = std::__uninitialized_move_if_noexcept_a +16166: (__old_start, __pos, __new_start, _M_get_Tp_allocator()); +16166: +16166: __new_finish += __n; +16166: +16166: __new_finish +16166: = std::__uninitialized_move_if_noexcept_a +16166: (__pos, __old_finish, __new_finish, _M_get_Tp_allocator()); +16166: } +16166: catch(...) +16166: { +16166: if (!__new_finish) +16166: std::_Destroy(__new_start + __elems_before, +16166: __new_start + __elems_before + __n, +16166: _M_get_Tp_allocator()); +16166: else +16166: std::_Destroy(__new_start, __new_finish, +16166: _M_get_Tp_allocator()); +16166: _M_deallocate(__new_start, __len); +16166: throw; +16166: } +16166: std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); +16166: ; +16166: _M_deallocate(__old_start, +16166: this->_M_impl._M_end_of_storage - __old_start); +16166: this->_M_impl._M_start = __new_start; +16166: this->_M_impl._M_finish = __new_finish; +16166: this->_M_impl._M_end_of_storage = __new_start + __len; +16166: } +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_default_append(size_type __n) +16166: { +16166: if (__n != 0) +16166: { +16166: const size_type __size = size(); +16166: size_type __navail = size_type(this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_finish); +16166: +16166: if (__size > max_size() || __navail > max_size() - __size) +16166: __builtin_unreachable(); +16166: +16166: if (__navail >= __n) +16166: { +16166: ; +16166: this->_M_impl._M_finish = +16166: std::__uninitialized_default_n_a(this->_M_impl._M_finish, +16166: __n, _M_get_Tp_allocator()); +16166: ; +16166: } +16166: else +16166: { +16166: +16166: +16166: pointer __old_start = this->_M_impl._M_start; +16166: pointer __old_finish = this->_M_impl._M_finish; +16166: +16166: const size_type __len = +16166: _M_check_len(__n, "vector::_M_default_append"); +16166: pointer __new_start(this->_M_allocate(__len)); +16166: +16166: +16166: struct _Guard +16166: { +16166: pointer _M_storage; +16166: size_type _M_len; +16166: _Tp_alloc_type& _M_alloc; +16166: +16166: +16166: _Guard(pointer __s, size_type __l, _Tp_alloc_type& __a) +16166: : _M_storage(__s), _M_len(__l), _M_alloc(__a) +16166: { } +16166: +16166: +16166: ~_Guard() +16166: { +16166: if (_M_storage) +16166: __gnu_cxx::__alloc_traits<_Tp_alloc_type>:: +16166: deallocate(_M_alloc, _M_storage, _M_len); +16166: } +16166: +16166: private: +16166: _Guard(const _Guard&); +16166: }; +16166: +16166: { +16166: _Guard __guard(__new_start, __len, _M_impl); +16166: +16166: std::__uninitialized_default_n_a(__new_start + __size, __n, +16166: _M_get_Tp_allocator()); +16166: +16166: if constexpr (_S_use_relocate()) +16166: { +16166: _S_relocate(__old_start, __old_finish, +16166: __new_start, _M_get_Tp_allocator()); +16166: } +16166: else +16166: { +16166: +16166: struct _Guard_elts +16166: { +16166: pointer _M_first, _M_last; +16166: _Tp_alloc_type& _M_alloc; +16166: +16166: +16166: _Guard_elts(pointer __first, size_type __n, +16166: _Tp_alloc_type& __a) +16166: : _M_first(__first), _M_last(__first + __n), _M_alloc(__a) +16166: { } +16166: +16166: +16166: ~_Guard_elts() +16166: { std::_Destroy(_M_first, _M_last, _M_alloc); } +16166: +16166: private: +16166: _Guard_elts(const _Guard_elts&); +16166: }; +16166: _Guard_elts __guard_elts(__new_start + __size, __n, _M_impl); +16166: +16166: std::__uninitialized_move_if_noexcept_a( +16166: __old_start, __old_finish, __new_start, +16166: _M_get_Tp_allocator()); +16166: +16166: __guard_elts._M_first = __old_start; +16166: __guard_elts._M_last = __old_finish; +16166: } +16166: ; +16166: __guard._M_storage = __old_start; +16166: __guard._M_len = this->_M_impl._M_end_of_storage - __old_start; +16166: } +16166: +16166: +16166: +16166: this->_M_impl._M_start = __new_start; +16166: this->_M_impl._M_finish = __new_start + __size + __n; +16166: this->_M_impl._M_end_of_storage = __new_start + __len; +16166: } +16166: } +16166: } +16166: +16166: template +16166: +16166: bool +16166: vector<_Tp, _Alloc>:: +16166: _M_shrink_to_fit() +16166: { +16166: if (capacity() == size()) +16166: return false; +16166: ; +16166: return std::__shrink_to_fit_aux::_S_do_it(*this); +16166: } +16166: +16166: +16166: template +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_range_insert(iterator __pos, _InputIterator __first, +16166: _InputIterator __last, std::input_iterator_tag) +16166: { +16166: if (__pos == end()) +16166: { +16166: for (; __first != __last; ++__first) +16166: insert(end(), *__first); +16166: } +16166: else if (__first != __last) +16166: { +16166: vector __tmp(__first, __last, _M_get_Tp_allocator()); +16166: insert(__pos, +16166: std::make_move_iterator(__tmp.begin()), +16166: std::make_move_iterator(__tmp.end())); +16166: } +16166: } +16166: +16166: template +16166: template +16166: +16166: void +16166: vector<_Tp, _Alloc>:: +16166: _M_range_insert(iterator __position, _ForwardIterator __first, +16166: _ForwardIterator __last, std::forward_iterator_tag) +16166: { +16166: if (__first != __last) +16166: { +16166: const size_type __n = std::distance(__first, __last); +16166: if (size_type(this->_M_impl._M_end_of_storage +16166: - this->_M_impl._M_finish) >= __n) +16166: { +16166: const size_type __elems_after = end() - __position; +16166: pointer __old_finish(this->_M_impl._M_finish); +16166: if (__elems_after > __n) +16166: { +16166: ; +16166: std::__uninitialized_move_a(this->_M_impl._M_finish - __n, +16166: this->_M_impl._M_finish, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish += __n; +16166: ; +16166: std::move_backward(__position.base(), __old_finish - __n, __old_finish) +16166: ; +16166: std::copy(__first, __last, __position); +16166: } +16166: else +16166: { +16166: _ForwardIterator __mid = __first; +16166: std::advance(__mid, __elems_after); +16166: ; +16166: std::__uninitialized_copy_a(__mid, __last, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish += __n - __elems_after; +16166: ; +16166: std::__uninitialized_move_a(__position.base(), +16166: __old_finish, +16166: this->_M_impl._M_finish, +16166: _M_get_Tp_allocator()); +16166: this->_M_impl._M_finish += __elems_after; +16166: ; +16166: std::copy(__first, __mid, __position); +16166: } +16166: } +16166: else +16166: { +16166: +16166: +16166: +16166: pointer __old_start = this->_M_impl._M_start; +16166: pointer __old_finish = this->_M_impl._M_finish; +16166: +16166: const size_type __len = +16166: _M_check_len(__n, "vector::_M_range_insert"); +16166: +16166: +16166: +16166: +16166: +16166: pointer __new_start(this->_M_allocate(__len)); +16166: pointer __new_finish(__new_start); +16166: try +16166: { +16166: __new_finish +16166: = std::__uninitialized_move_if_noexcept_a +16166: (__old_start, __position.base(), +16166: __new_start, _M_get_Tp_allocator()); +16166: __new_finish +16166: = std::__uninitialized_copy_a(__first, __last, +16166: __new_finish, +16166: _M_get_Tp_allocator()); +16166: __new_finish +16166: = std::__uninitialized_move_if_noexcept_a +16166: (__position.base(), __old_finish, +16166: __new_finish, _M_get_Tp_allocator()); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__new_start, __new_finish, +16166: _M_get_Tp_allocator()); +16166: _M_deallocate(__new_start, __len); +16166: throw; +16166: } +16166: std::_Destroy(__old_start, __old_finish, +16166: _M_get_Tp_allocator()); +16166: ; +16166: _M_deallocate(__old_start, +16166: this->_M_impl._M_end_of_storage - __old_start); +16166: this->_M_impl._M_start = __new_start; +16166: this->_M_impl._M_finish = __new_finish; +16166: this->_M_impl._M_end_of_storage = __new_start + __len; +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: vector:: +16166: _M_reallocate(size_type __n) +16166: { +16166: _Bit_pointer __q = this->_M_allocate(__n); +16166: iterator __start(std::__addressof(*__q), 0); +16166: iterator __finish(_M_copy_aligned(begin(), end(), __start)); +16166: this->_M_deallocate(); +16166: this->_M_impl._M_start = __start; +16166: this->_M_impl._M_finish = __finish; +16166: this->_M_impl._M_end_of_storage = __q + _S_nword(__n); +16166: } +16166: +16166: template +16166: +16166: void +16166: vector:: +16166: _M_fill_insert(iterator __position, size_type __n, bool __x) +16166: { +16166: if (__n == 0) +16166: return; +16166: if (capacity() - size() >= __n) +16166: { +16166: std::copy_backward(__position, end(), +16166: this->_M_impl._M_finish + difference_type(__n)); +16166: std::fill(__position, __position + difference_type(__n), __x); +16166: this->_M_impl._M_finish += difference_type(__n); +16166: } +16166: else +16166: { +16166: const size_type __len = +16166: _M_check_len(__n, "vector::_M_fill_insert"); +16166: _Bit_pointer __q = this->_M_allocate(__len); +16166: iterator __start(std::__addressof(*__q), 0); +16166: iterator __i = _M_copy_aligned(begin(), __position, __start); +16166: std::fill(__i, __i + difference_type(__n), __x); +16166: iterator __finish = std::copy(__position, end(), +16166: __i + difference_type(__n)); +16166: this->_M_deallocate(); +16166: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); +16166: this->_M_impl._M_start = __start; +16166: this->_M_impl._M_finish = __finish; +16166: } +16166: } +16166: +16166: template +16166: template +16166: +16166: void +16166: vector:: +16166: _M_insert_range(iterator __position, _ForwardIterator __first, +16166: _ForwardIterator __last, std::forward_iterator_tag) +16166: { +16166: if (__first != __last) +16166: { +16166: size_type __n = std::distance(__first, __last); +16166: if (capacity() - size() >= __n) +16166: { +16166: std::copy_backward(__position, end(), +16166: this->_M_impl._M_finish +16166: + difference_type(__n)); +16166: std::copy(__first, __last, __position); +16166: this->_M_impl._M_finish += difference_type(__n); +16166: } +16166: else +16166: { +16166: const size_type __len = +16166: _M_check_len(__n, "vector::_M_insert_range"); +16166: const iterator __begin = begin(), __end = end(); +16166: _Bit_pointer __q = this->_M_allocate(__len); +16166: iterator __start(std::__addressof(*__q), 0); +16166: iterator __i = _M_copy_aligned(__begin, __position, __start); +16166: __i = std::copy(__first, __last, __i); +16166: iterator __finish = std::copy(__position, __end, __i); +16166: this->_M_deallocate(); +16166: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); +16166: this->_M_impl._M_start = __start; +16166: this->_M_impl._M_finish = __finish; +16166: } +16166: } +16166: } +16166: +16166: template +16166: +16166: void +16166: vector:: +16166: _M_insert_aux(iterator __position, bool __x) +16166: { +16166: if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) +16166: { +16166: std::copy_backward(__position, this->_M_impl._M_finish, +16166: this->_M_impl._M_finish + 1); +16166: *__position = __x; +16166: ++this->_M_impl._M_finish; +16166: } +16166: else +16166: { +16166: const size_type __len = +16166: _M_check_len(size_type(1), "vector::_M_insert_aux"); +16166: _Bit_pointer __q = this->_M_allocate(__len); +16166: iterator __start(std::__addressof(*__q), 0); +16166: iterator __i = _M_copy_aligned(begin(), __position, __start); +16166: *__i++ = __x; +16166: iterator __finish = std::copy(__position, end(), __i); +16166: this->_M_deallocate(); +16166: this->_M_impl._M_end_of_storage = __q + _S_nword(__len); +16166: this->_M_impl._M_start = __start; +16166: this->_M_impl._M_finish = __finish; +16166: } +16166: } +16166: +16166: template +16166: +16166: typename vector::iterator +16166: vector:: +16166: _M_erase(iterator __position) +16166: { +16166: if (__position + 1 != end()) +16166: std::copy(__position + 1, end(), __position); +16166: --this->_M_impl._M_finish; +16166: return __position; +16166: } +16166: +16166: template +16166: +16166: typename vector::iterator +16166: vector:: +16166: _M_erase(iterator __first, iterator __last) +16166: { +16166: if (__first != __last) +16166: _M_erase_at_end(std::copy(__last, end(), __first)); +16166: return __first; +16166: } +16166: +16166: +16166: template +16166: +16166: bool +16166: vector:: +16166: _M_shrink_to_fit() +16166: { +16166: if (capacity() - size() < int(_S_word_bit)) +16166: return false; +16166: try +16166: { +16166: if (size_type __n = size()) +16166: _M_reallocate(__n); +16166: else +16166: { +16166: this->_M_deallocate(); +16166: this->_M_impl._M_reset(); +16166: } +16166: return true; +16166: } +16166: catch(...) +16166: { return false; } +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: size_t +16166: hash>:: +16166: operator()(const std::vector& __b) const noexcept +16166: { +16166: size_t __hash = 0; +16166: const size_t __words = __b.size() / _S_word_bit; +16166: if (__words) +16166: { +16166: const size_t __clength = __words * sizeof(_Bit_type); +16166: __hash = std::_Hash_impl::hash(__b._M_impl._M_start._M_p, __clength); +16166: } +16166: +16166: const size_t __extrabits = __b.size() % _S_word_bit; +16166: if (__extrabits) +16166: { +16166: _Bit_type __hiword = *__b._M_impl._M_finish._M_p; +16166: __hiword &= ~((~static_cast<_Bit_type>(0)) << __extrabits); +16166: +16166: const size_t __clength +16166: = (__extrabits + 8 - 1) / 8; +16166: if (__words) +16166: __hash = std::_Hash_impl::hash(&__hiword, __clength, __hash); +16166: else +16166: __hash = std::_Hash_impl::hash(&__hiword, __clength); +16166: } +16166: +16166: return __hash; +16166: } +16166: +16166: +16166: } +16166: # 73 "/usr/include/c++/14/vector" 2 3 +16166: # 84 "/usr/include/c++/14/vector" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 85 "/usr/include/c++/14/vector" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr { +16166: template +16166: using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 65 "/usr/include/c++/14/functional" 2 3 +16166: # 1 "/usr/include/c++/14/array" 1 3 +16166: # 32 "/usr/include/c++/14/array" 3 +16166: +16166: # 33 "/usr/include/c++/14/array" 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/compare" 1 3 +16166: # 33 "/usr/include/c++/14/compare" 3 +16166: +16166: # 34 "/usr/include/c++/14/compare" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 37 "/usr/include/c++/14/compare" 2 3 +16166: # 39 "/usr/include/c++/14/array" 2 3 +16166: # 52 "/usr/include/c++/14/array" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 53 "/usr/include/c++/14/array" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: struct __array_traits +16166: { +16166: using _Type = _Tp[_Nm]; +16166: using _Is_swappable = __is_swappable<_Tp>; +16166: using _Is_nothrow_swappable = __is_nothrow_swappable<_Tp>; +16166: }; +16166: +16166: template +16166: struct __array_traits<_Tp, 0> +16166: { +16166: +16166: struct _Type +16166: { +16166: +16166: __attribute__((__always_inline__,__noreturn__)) +16166: _Tp& operator[](size_t) const noexcept { __builtin_trap(); } +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: constexpr explicit operator _Tp*() const noexcept { return nullptr; } +16166: }; +16166: +16166: using _Is_swappable = true_type; +16166: using _Is_nothrow_swappable = true_type; +16166: }; +16166: # 99 "/usr/include/c++/14/array" 3 +16166: template +16166: struct array +16166: { +16166: typedef _Tp value_type; +16166: typedef value_type* pointer; +16166: typedef const value_type* const_pointer; +16166: typedef value_type& reference; +16166: typedef const value_type& const_reference; +16166: typedef value_type* iterator; +16166: typedef const value_type* const_iterator; +16166: typedef std::size_t size_type; +16166: typedef std::ptrdiff_t difference_type; +16166: typedef std::reverse_iterator reverse_iterator; +16166: typedef std::reverse_iterator const_reverse_iterator; +16166: +16166: +16166: typename __array_traits<_Tp, _Nm>::_Type _M_elems; +16166: +16166: +16166: +16166: +16166: void +16166: fill(const value_type& __u) +16166: { std::fill_n(begin(), size(), __u); } +16166: +16166: void +16166: swap(array& __other) +16166: noexcept(__array_traits<_Tp, _Nm>::_Is_nothrow_swappable::value) +16166: { std::swap_ranges(begin(), end(), __other.begin()); } +16166: +16166: +16166: [[__gnu__::__const__, __nodiscard__]] +16166: constexpr iterator +16166: begin() noexcept +16166: { return iterator(data()); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_iterator +16166: begin() const noexcept +16166: { return const_iterator(data()); } +16166: +16166: [[__gnu__::__const__, __nodiscard__]] +16166: constexpr iterator +16166: end() noexcept +16166: { return iterator(data() + _Nm); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_iterator +16166: end() const noexcept +16166: { return const_iterator(data() + _Nm); } +16166: +16166: [[__gnu__::__const__, __nodiscard__]] +16166: constexpr reverse_iterator +16166: rbegin() noexcept +16166: { return reverse_iterator(end()); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: [[__gnu__::__const__, __nodiscard__]] +16166: constexpr reverse_iterator +16166: rend() noexcept +16166: { return reverse_iterator(begin()); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_iterator +16166: cbegin() const noexcept +16166: { return const_iterator(data()); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_iterator +16166: cend() const noexcept +16166: { return const_iterator(data() + _Nm); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_reverse_iterator +16166: crbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_reverse_iterator +16166: crend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: +16166: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +16166: constexpr size_type +16166: size() const noexcept { return _Nm; } +16166: +16166: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +16166: constexpr size_type +16166: max_size() const noexcept { return _Nm; } +16166: +16166: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +16166: constexpr bool +16166: empty() const noexcept { return size() == 0; } +16166: +16166: +16166: [[__nodiscard__]] +16166: constexpr reference +16166: operator[](size_type __n) noexcept +16166: { +16166: ; +16166: return _M_elems[__n]; +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_reference +16166: operator[](size_type __n) const noexcept +16166: { +16166: +16166: ; +16166: +16166: return _M_elems[__n]; +16166: } +16166: +16166: constexpr reference +16166: at(size_type __n) +16166: { +16166: if (__n >= _Nm) +16166: std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") +16166: , +16166: __n, _Nm); +16166: return _M_elems[__n]; +16166: } +16166: +16166: constexpr const_reference +16166: at(size_type __n) const +16166: { +16166: +16166: +16166: return __n < _Nm ? _M_elems[__n] +16166: : (std::__throw_out_of_range_fmt(("array::at: __n (which is %zu) " ">= _Nm (which is %zu)") +16166: , +16166: __n, _Nm), +16166: _M_elems[__n]); +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr reference +16166: front() noexcept +16166: { +16166: ; +16166: return _M_elems[(size_type)0]; +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_reference +16166: front() const noexcept +16166: { +16166: +16166: ; +16166: +16166: return _M_elems[(size_type)0]; +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr reference +16166: back() noexcept +16166: { +16166: ; +16166: return _M_elems[_Nm - 1]; +16166: } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_reference +16166: back() const noexcept +16166: { +16166: +16166: ; +16166: +16166: return _M_elems[_Nm - 1]; +16166: } +16166: +16166: [[__nodiscard__, __gnu__::__const__, __gnu__::__always_inline__]] +16166: constexpr pointer +16166: data() noexcept +16166: { return static_cast(_M_elems); } +16166: +16166: [[__nodiscard__]] +16166: constexpr const_pointer +16166: data() const noexcept +16166: { return static_cast(_M_elems); } +16166: }; +16166: +16166: +16166: template +16166: array(_Tp, _Up...) +16166: -> array && ...), _Tp>, +16166: 1 + sizeof...(_Up)>; +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: +16166: inline bool +16166: operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +16166: { return std::__equal_aux1(__one.begin(), __one.end(), __two.begin()); } +16166: # 328 "/usr/include/c++/14/array" 3 +16166: template +16166: [[__nodiscard__]] +16166: +16166: inline bool +16166: operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +16166: { return !(__one == __two); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: +16166: inline bool +16166: operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) +16166: { +16166: return std::lexicographical_compare(__a.begin(), __a.end(), +16166: __b.begin(), __b.end()); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: +16166: inline bool +16166: operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +16166: { return __two < __one; } +16166: +16166: template +16166: [[__nodiscard__]] +16166: +16166: inline bool +16166: operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +16166: { return !(__one > __two); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: +16166: inline bool +16166: operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) +16166: { return !(__one < __two); } +16166: +16166: +16166: +16166: template +16166: +16166: inline +16166: +16166: +16166: __enable_if_t<__array_traits<_Tp, _Nm>::_Is_swappable::value> +16166: +16166: +16166: +16166: swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) +16166: noexcept(noexcept(__one.swap(__two))) +16166: { __one.swap(__two); } +16166: +16166: +16166: template +16166: __enable_if_t::_Is_swappable::value> +16166: swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: constexpr _Tp& +16166: get(array<_Tp, _Nm>& __arr) noexcept +16166: { +16166: static_assert(_Int < _Nm, "array index is within bounds"); +16166: return __arr._M_elems[_Int]; +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: constexpr _Tp&& +16166: get(array<_Tp, _Nm>&& __arr) noexcept +16166: { +16166: static_assert(_Int < _Nm, "array index is within bounds"); +16166: return std::move(std::get<_Int>(__arr)); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: constexpr const _Tp& +16166: get(const array<_Tp, _Nm>& __arr) noexcept +16166: { +16166: static_assert(_Int < _Nm, "array index is within bounds"); +16166: return __arr._M_elems[_Int]; +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: constexpr const _Tp&& +16166: get(const array<_Tp, _Nm>&& __arr) noexcept +16166: { +16166: static_assert(_Int < _Nm, "array index is within bounds"); +16166: return std::move(std::get<_Int>(__arr)); +16166: } +16166: # 490 "/usr/include/c++/14/array" 3 +16166: template +16166: struct tuple_size> +16166: : public integral_constant { }; +16166: +16166: +16166: template +16166: struct tuple_element<_Ind, array<_Tp, _Nm>> +16166: { +16166: static_assert(_Ind < _Nm, "array index is in range"); +16166: using type = _Tp; +16166: }; +16166: +16166: +16166: template +16166: inline constexpr size_t tuple_size_v> = _Nm; +16166: +16166: template +16166: inline constexpr size_t tuple_size_v> = _Nm; +16166: +16166: +16166: template +16166: struct __is_tuple_like_impl> : true_type +16166: { }; +16166: +16166: +16166: } +16166: # 66 "/usr/include/c++/14/functional" 2 3 +16166: # 88 "/usr/include/c++/14/functional" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 89 "/usr/include/c++/14/functional" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: template struct _Placeholder { }; +16166: # 115 "/usr/include/c++/14/functional" 3 +16166: template +16166: inline invoke_result_t<_Callable, _Args...> +16166: invoke(_Callable&& __fn, _Args&&... __args) +16166: noexcept(is_nothrow_invocable_v<_Callable, _Args...>) +16166: { +16166: return std::__invoke(std::forward<_Callable>(__fn), +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 148 "/usr/include/c++/14/functional" 3 +16166: template::value> +16166: class _Mem_fn_base +16166: : public _Mem_fn_traits<_MemFunPtr>::__maybe_type +16166: { +16166: using _Traits = _Mem_fn_traits<_MemFunPtr>; +16166: +16166: using _Arity = typename _Traits::__arity; +16166: using _Varargs = typename _Traits::__vararg; +16166: +16166: template +16166: friend struct _Bind_check_arity; +16166: +16166: _MemFunPtr _M_pmf; +16166: +16166: public: +16166: +16166: using result_type = typename _Traits::__result_type; +16166: +16166: explicit constexpr +16166: _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { } +16166: +16166: template +16166: +16166: auto +16166: operator()(_Args&&... __args) const +16166: noexcept(noexcept( +16166: std::__invoke(_M_pmf, std::forward<_Args>(__args)...))) +16166: -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...)) +16166: { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); } +16166: }; +16166: +16166: +16166: template +16166: class _Mem_fn_base<_MemObjPtr, false> +16166: { +16166: using _Arity = integral_constant; +16166: using _Varargs = false_type; +16166: +16166: template +16166: friend struct _Bind_check_arity; +16166: +16166: _MemObjPtr _M_pm; +16166: +16166: public: +16166: explicit constexpr +16166: _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { } +16166: +16166: template +16166: +16166: auto +16166: operator()(_Tp&& __obj) const +16166: noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))) +16166: -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj))) +16166: { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); } +16166: }; +16166: +16166: template +16166: struct _Mem_fn; +16166: +16166: template +16166: struct _Mem_fn<_Res _Class::*> +16166: : _Mem_fn_base<_Res _Class::*> +16166: { +16166: using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base; +16166: }; +16166: # 241 "/usr/include/c++/14/functional" 3 +16166: template +16166: +16166: inline _Mem_fn<_Tp _Class::*> +16166: mem_fn(_Tp _Class::* __pm) noexcept +16166: { +16166: return _Mem_fn<_Tp _Class::*>(__pm); +16166: } +16166: # 260 "/usr/include/c++/14/functional" 3 +16166: template +16166: struct is_bind_expression +16166: : public false_type { }; +16166: # 272 "/usr/include/c++/14/functional" 3 +16166: template +16166: struct is_placeholder +16166: : public integral_constant +16166: { }; +16166: +16166: +16166: template inline constexpr bool is_bind_expression_v +16166: = is_bind_expression<_Tp>::value; +16166: template inline constexpr int is_placeholder_v +16166: = is_placeholder<_Tp>::value; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace placeholders +16166: { +16166: # 301 "/usr/include/c++/14/functional" 3 +16166: inline const _Placeholder<1> _1; +16166: inline const _Placeholder<2> _2; +16166: inline const _Placeholder<3> _3; +16166: inline const _Placeholder<4> _4; +16166: inline const _Placeholder<5> _5; +16166: inline const _Placeholder<6> _6; +16166: inline const _Placeholder<7> _7; +16166: inline const _Placeholder<8> _8; +16166: inline const _Placeholder<9> _9; +16166: inline const _Placeholder<10> _10; +16166: inline const _Placeholder<11> _11; +16166: inline const _Placeholder<12> _12; +16166: inline const _Placeholder<13> _13; +16166: inline const _Placeholder<14> _14; +16166: inline const _Placeholder<15> _15; +16166: inline const _Placeholder<16> _16; +16166: inline const _Placeholder<17> _17; +16166: inline const _Placeholder<18> _18; +16166: inline const _Placeholder<19> _19; +16166: inline const _Placeholder<20> _20; +16166: inline const _Placeholder<21> _21; +16166: inline const _Placeholder<22> _22; +16166: inline const _Placeholder<23> _23; +16166: inline const _Placeholder<24> _24; +16166: inline const _Placeholder<25> _25; +16166: inline const _Placeholder<26> _26; +16166: inline const _Placeholder<27> _27; +16166: inline const _Placeholder<28> _28; +16166: inline const _Placeholder<29> _29; +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_placeholder<_Placeholder<_Num> > +16166: : public integral_constant +16166: { }; +16166: +16166: template +16166: struct is_placeholder > +16166: : public integral_constant +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: using _Safe_tuple_element_t +16166: = typename enable_if<(__i < tuple_size<_Tuple>::value), +16166: tuple_element<__i, _Tuple>>::type::type; +16166: # 369 "/usr/include/c++/14/functional" 3 +16166: template::value, +16166: bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> +16166: class _Mu; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class _Mu, false, false> +16166: { +16166: public: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _Tp& +16166: operator()(_CVRef& __arg, _Tuple&) const volatile +16166: { return __arg.get(); } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class _Mu<_Arg, true, false> +16166: { +16166: public: +16166: template +16166: +16166: auto +16166: operator()(_CVArg& __arg, +16166: tuple<_Args...>& __tuple) const volatile +16166: -> decltype(__arg(declval<_Args>()...)) +16166: { +16166: +16166: typedef typename _Build_index_tuple::__type +16166: _Indexes; +16166: return this->__call(__arg, __tuple, _Indexes()); +16166: } +16166: +16166: private: +16166: +16166: +16166: template +16166: +16166: auto +16166: __call(_CVArg& __arg, tuple<_Args...>& __tuple, +16166: const _Index_tuple<_Indexes...>&) const volatile +16166: -> decltype(__arg(declval<_Args>()...)) +16166: { +16166: return __arg(std::get<_Indexes>(std::move(__tuple))...); +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class _Mu<_Arg, false, true> +16166: { +16166: public: +16166: template +16166: +16166: _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&& +16166: operator()(const volatile _Arg&, _Tuple& __tuple) const volatile +16166: { +16166: return +16166: ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple)); +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class _Mu<_Arg, false, false> +16166: { +16166: public: +16166: template +16166: +16166: _CVArg&& +16166: operator()(_CVArg&& __arg, _Tuple&) const volatile +16166: { return std::forward<_CVArg>(__arg); } +16166: }; +16166: +16166: +16166: template +16166: inline auto +16166: __volget(volatile tuple<_Tp...>& __tuple) +16166: -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile& +16166: { return std::get<_Ind>(const_cast&>(__tuple)); } +16166: +16166: +16166: template +16166: inline auto +16166: __volget(const volatile tuple<_Tp...>& __tuple) +16166: -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile& +16166: { return std::get<_Ind>(const_cast&>(__tuple)); } +16166: # 494 "/usr/include/c++/14/functional" 3 +16166: template +16166: class _Bind; +16166: +16166: template +16166: class _Bind<_Functor(_Bound_args...)> +16166: : public _Weak_result_type<_Functor> +16166: { +16166: typedef typename _Build_index_tuple::__type +16166: _Bound_indexes; +16166: +16166: _Functor _M_f; +16166: tuple<_Bound_args...> _M_bound_args; +16166: +16166: +16166: template +16166: +16166: _Result +16166: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) +16166: { +16166: return std::__invoke(_M_f, +16166: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... +16166: ); +16166: } +16166: +16166: +16166: template +16166: +16166: _Result +16166: __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const +16166: { +16166: return std::__invoke(_M_f, +16166: _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... +16166: ); +16166: } +16166: +16166: +16166: +16166: template +16166: _Result +16166: __call_v(tuple<_Args...>&& __args, +16166: _Index_tuple<_Indexes...>) volatile +16166: { +16166: return std::__invoke(_M_f, +16166: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... +16166: ); +16166: } +16166: +16166: +16166: template +16166: _Result +16166: __call_c_v(tuple<_Args...>&& __args, +16166: _Index_tuple<_Indexes...>) const volatile +16166: { +16166: return std::__invoke(_M_f, +16166: _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... +16166: ); +16166: } +16166: +16166: +16166: template +16166: using _Mu_type = decltype( +16166: _Mu::type>()( +16166: std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) ); +16166: +16166: template +16166: using _Res_type_impl +16166: = __invoke_result_t<_Fn&, _Mu_type<_BArgs, _CallArgs>&&...>; +16166: +16166: template +16166: using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>; +16166: +16166: template +16166: using __dependent = typename +16166: enable_if::value+1), _Functor>::type; +16166: +16166: template class __cv_quals> +16166: using _Res_type_cv = _Res_type_impl< +16166: typename __cv_quals<__dependent<_CallArgs>>::type, +16166: _CallArgs, +16166: typename __cv_quals<_Bound_args>::type...>; +16166: +16166: public: +16166: template +16166: explicit +16166: _Bind(const _Functor& __f, _Args&&... __args) +16166: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: explicit +16166: _Bind(_Functor&& __f, _Args&&... __args) +16166: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: _Bind(const _Bind&) = default; +16166: _Bind(_Bind&&) = default; +16166: +16166: +16166: template>> +16166: +16166: _Result +16166: operator()(_Args&&... __args) +16166: { +16166: return this->__call<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: +16166: template, add_const>> +16166: +16166: _Result +16166: operator()(_Args&&... __args) const +16166: { +16166: return this->__call_c<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: +16166: +16166: template, add_volatile>> +16166: [[deprecated("std::bind does not support volatile in C++17")]] +16166: _Result +16166: operator()(_Args&&... __args) volatile +16166: { +16166: return this->__call_v<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: +16166: template, add_cv>> +16166: [[deprecated("std::bind does not support volatile in C++17")]] +16166: _Result +16166: operator()(_Args&&... __args) const volatile +16166: { +16166: return this->__call_c_v<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: }; +16166: +16166: +16166: template +16166: class _Bind_result; +16166: +16166: template +16166: class _Bind_result<_Result, _Functor(_Bound_args...)> +16166: { +16166: typedef typename _Build_index_tuple::__type +16166: _Bound_indexes; +16166: +16166: _Functor _M_f; +16166: tuple<_Bound_args...> _M_bound_args; +16166: +16166: +16166: template +16166: +16166: _Res +16166: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) +16166: { +16166: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +16166: (std::get<_Indexes>(_M_bound_args), __args)...); +16166: } +16166: +16166: +16166: template +16166: +16166: _Res +16166: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const +16166: { +16166: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +16166: (std::get<_Indexes>(_M_bound_args), __args)...); +16166: } +16166: +16166: +16166: +16166: template +16166: _Res +16166: __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile +16166: { +16166: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +16166: (__volget<_Indexes>(_M_bound_args), __args)...); +16166: } +16166: +16166: +16166: template +16166: _Res +16166: __call(tuple<_Args...>&& __args, +16166: _Index_tuple<_Indexes...>) const volatile +16166: { +16166: return std::__invoke_r<_Res>(_M_f, _Mu<_Bound_args>() +16166: (__volget<_Indexes>(_M_bound_args), __args)...); +16166: } +16166: +16166: +16166: public: +16166: typedef _Result result_type; +16166: +16166: template +16166: explicit +16166: _Bind_result(const _Functor& __f, _Args&&... __args) +16166: : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: explicit +16166: _Bind_result(_Functor&& __f, _Args&&... __args) +16166: : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: _Bind_result(const _Bind_result&) = default; +16166: _Bind_result(_Bind_result&&) = default; +16166: +16166: +16166: template +16166: +16166: result_type +16166: operator()(_Args&&... __args) +16166: { +16166: return this->__call<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: +16166: template +16166: +16166: result_type +16166: operator()(_Args&&... __args) const +16166: { +16166: return this->__call<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: +16166: +16166: template +16166: [[deprecated("std::bind does not support volatile in C++17")]] +16166: result_type +16166: operator()(_Args&&... __args) volatile +16166: { +16166: return this->__call<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: +16166: template +16166: [[deprecated("std::bind does not support volatile in C++17")]] +16166: result_type +16166: operator()(_Args&&... __args) const volatile +16166: { +16166: return this->__call<_Result>( +16166: std::forward_as_tuple(std::forward<_Args>(__args)...), +16166: _Bound_indexes()); +16166: } +16166: +16166: +16166: +16166: +16166: }; +16166: # 771 "/usr/include/c++/14/functional" 3 +16166: template +16166: struct is_bind_expression<_Bind<_Signature> > +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_bind_expression > +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_bind_expression > +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_bind_expression> +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_bind_expression<_Bind_result<_Result, _Signature>> +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_bind_expression> +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_bind_expression> +16166: : public true_type { }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct is_bind_expression> +16166: : public true_type { }; +16166: +16166: template +16166: struct _Bind_check_arity { }; +16166: +16166: template +16166: struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...> +16166: { +16166: static_assert(sizeof...(_BoundArgs) == sizeof...(_Args), +16166: "Wrong number of arguments for function"); +16166: }; +16166: +16166: template +16166: struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...> +16166: { +16166: static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args), +16166: "Wrong number of arguments for function"); +16166: }; +16166: +16166: template +16166: struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...> +16166: { +16166: using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity; +16166: using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs; +16166: static_assert(_Varargs::value +16166: ? sizeof...(_BoundArgs) >= _Arity::value + 1 +16166: : sizeof...(_BoundArgs) == _Arity::value + 1, +16166: "Wrong number of arguments for pointer-to-member"); +16166: }; +16166: +16166: +16166: +16166: +16166: template::type> +16166: using __is_socketlike = __or_, is_enum<_Tp2>>; +16166: +16166: template +16166: struct _Bind_helper +16166: : _Bind_check_arity::type, _BoundArgs...> +16166: { +16166: typedef typename decay<_Func>::type __func_type; +16166: typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct _Bind_helper +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline typename +16166: _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type +16166: bind(_Func&& __f, _BoundArgs&&... __args) +16166: { +16166: typedef _Bind_helper __helper_type; +16166: return typename __helper_type::type(std::forward<_Func>(__f), +16166: std::forward<_BoundArgs>(__args)...); +16166: } +16166: +16166: template +16166: struct _Bindres_helper +16166: : _Bind_check_arity::type, _BoundArgs...> +16166: { +16166: typedef typename decay<_Func>::type __functor_type; +16166: typedef _Bind_result<_Result, +16166: __functor_type(typename decay<_BoundArgs>::type...)> +16166: type; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline +16166: typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type +16166: bind(_Func&& __f, _BoundArgs&&... __args) +16166: { +16166: typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; +16166: return typename __helper_type::type(std::forward<_Func>(__f), +16166: std::forward<_BoundArgs>(__args)...); +16166: } +16166: # 1121 "/usr/include/c++/14/functional" 3 +16166: template +16166: class _Not_fn +16166: { +16166: template +16166: using __inv_res_t = typename __invoke_result<_Fn2, _Args...>::type; +16166: +16166: template +16166: static decltype(!std::declval<_Tp>()) +16166: _S_not() noexcept(noexcept(!std::declval<_Tp>())); +16166: +16166: public: +16166: template +16166: constexpr +16166: _Not_fn(_Fn2&& __fn, int) +16166: : _M_fn(std::forward<_Fn2>(__fn)) { } +16166: +16166: _Not_fn(const _Not_fn& __fn) = default; +16166: _Not_fn(_Not_fn&& __fn) = default; +16166: ~_Not_fn() = default; +16166: # 1161 "/usr/include/c++/14/functional" 3 +16166: template::value>> decltype(_S_not<__inv_res_t<_Fn &, _Args...>>()) operator()(_Args&&... __args) & noexcept(__is_nothrow_invocable<_Fn &, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn &, _Args...>>())) { return !std::__invoke(std::forward< _Fn & >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) & = delete; +16166: template::value>> decltype(_S_not<__inv_res_t<_Fn const &, _Args...>>()) operator()(_Args&&... __args) const & noexcept(__is_nothrow_invocable<_Fn const &, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn const &, _Args...>>())) { return !std::__invoke(std::forward< _Fn const & >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) const & = delete; +16166: template::value>> decltype(_S_not<__inv_res_t<_Fn &&, _Args...>>()) operator()(_Args&&... __args) && noexcept(__is_nothrow_invocable<_Fn &&, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn && >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) && = delete; +16166: template::value>> decltype(_S_not<__inv_res_t<_Fn const &&, _Args...>>()) operator()(_Args&&... __args) const && noexcept(__is_nothrow_invocable<_Fn const &&, _Args...>::value && noexcept(_S_not<__inv_res_t<_Fn const &&, _Args...>>())) { return !std::__invoke(std::forward< _Fn const && >(_M_fn), std::forward<_Args>(__args)...); } template::value>> void operator()(_Args&&... __args) const && = delete; +16166: +16166: +16166: private: +16166: _Fn _M_fn; +16166: }; +16166: +16166: template +16166: struct __is_byte_like : false_type { }; +16166: +16166: template +16166: struct __is_byte_like<_Tp, equal_to<_Tp>> +16166: : __bool_constant::value> { }; +16166: +16166: template +16166: struct __is_byte_like<_Tp, equal_to> +16166: : __bool_constant::value> { }; +16166: +16166: +16166: +16166: enum class byte : unsigned char; +16166: +16166: template<> +16166: struct __is_byte_like> +16166: : true_type { }; +16166: +16166: template<> +16166: struct __is_byte_like> +16166: : true_type { }; +16166: # 1209 "/usr/include/c++/14/functional" 3 +16166: template +16166: +16166: inline auto +16166: not_fn(_Fn&& __fn) +16166: noexcept(std::is_nothrow_constructible, _Fn&&>::value) +16166: { +16166: return _Not_fn>{std::forward<_Fn>(__fn), 0}; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: class default_searcher +16166: { +16166: public: +16166: +16166: default_searcher(_ForwardIterator1 __pat_first, +16166: _ForwardIterator1 __pat_last, +16166: _BinaryPredicate __pred = _BinaryPredicate()) +16166: : _M_m(__pat_first, __pat_last, std::move(__pred)) +16166: { } +16166: +16166: template +16166: +16166: pair<_ForwardIterator2, _ForwardIterator2> +16166: operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const +16166: { +16166: _ForwardIterator2 __first_ret = +16166: std::search(__first, __last, std::get<0>(_M_m), std::get<1>(_M_m), +16166: std::get<2>(_M_m)); +16166: auto __ret = std::make_pair(__first_ret, __first_ret); +16166: if (__ret.first != __last) +16166: std::advance(__ret.second, std::distance(std::get<0>(_M_m), +16166: std::get<1>(_M_m))); +16166: return __ret; +16166: } +16166: +16166: private: +16166: tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m; +16166: }; +16166: +16166: +16166: +16166: template +16166: struct __boyer_moore_map_base +16166: { +16166: template +16166: __boyer_moore_map_base(_RAIter __pat, size_t __patlen, +16166: _Hash&& __hf, _Pred&& __pred) +16166: : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) } +16166: { +16166: if (__patlen > 0) +16166: for (__diff_type __i = 0; __i < __patlen - 1; ++__i) +16166: _M_bad_char[__pat[__i]] = __patlen - 1 - __i; +16166: } +16166: +16166: using __diff_type = _Tp; +16166: +16166: __diff_type +16166: _M_lookup(_Key __key, __diff_type __not_found) const +16166: { +16166: auto __iter = _M_bad_char.find(__key); +16166: if (__iter == _M_bad_char.end()) +16166: return __not_found; +16166: return __iter->second; +16166: } +16166: +16166: _Pred +16166: _M_pred() const { return _M_bad_char.key_eq(); } +16166: +16166: std::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char; +16166: }; +16166: +16166: template +16166: struct __boyer_moore_array_base +16166: { +16166: template +16166: __boyer_moore_array_base(_RAIter __pat, size_t __patlen, +16166: _Unused&&, _Pred&& __pred) +16166: : _M_bad_char{ array<_Tp, _Len>{}, std::move(__pred) } +16166: { +16166: std::get<0>(_M_bad_char).fill(__patlen); +16166: if (__patlen > 0) +16166: for (__diff_type __i = 0; __i < __patlen - 1; ++__i) +16166: { +16166: auto __ch = __pat[__i]; +16166: using _UCh = make_unsigned_t; +16166: auto __uch = static_cast<_UCh>(__ch); +16166: std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i; +16166: } +16166: } +16166: +16166: using __diff_type = _Tp; +16166: +16166: template +16166: __diff_type +16166: _M_lookup(_Key __key, __diff_type __not_found) const +16166: { +16166: auto __ukey = static_cast>(__key); +16166: if (__ukey >= _Len) +16166: return __not_found; +16166: return std::get<0>(_M_bad_char)[__ukey]; +16166: } +16166: +16166: const _Pred& +16166: _M_pred() const { return std::get<1>(_M_bad_char); } +16166: +16166: tuple, _Pred> _M_bad_char; +16166: }; +16166: +16166: +16166: +16166: template::value_type, +16166: typename _Diff = typename iterator_traits<_RAIter>::difference_type> +16166: using __boyer_moore_base_t +16166: = __conditional_t<__is_byte_like<_Val, _Pred>::value, +16166: __boyer_moore_array_base<_Diff, 256, _Pred>, +16166: __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>; +16166: +16166: template::value_type>, +16166: typename _BinaryPredicate = equal_to<>> +16166: class boyer_moore_searcher +16166: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> +16166: { +16166: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; +16166: using typename _Base::__diff_type; +16166: +16166: public: +16166: boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, +16166: _Hash __hf = _Hash(), +16166: _BinaryPredicate __pred = _BinaryPredicate()); +16166: +16166: template +16166: pair<_RandomAccessIterator2, _RandomAccessIterator2> +16166: operator()(_RandomAccessIterator2 __first, +16166: _RandomAccessIterator2 __last) const; +16166: +16166: private: +16166: bool +16166: _M_is_prefix(_RAIter __word, __diff_type __len, +16166: __diff_type __pos) +16166: { +16166: const auto& __pred = this->_M_pred(); +16166: __diff_type __suffixlen = __len - __pos; +16166: for (__diff_type __i = 0; __i < __suffixlen; ++__i) +16166: if (!__pred(__word[__i], __word[__pos + __i])) +16166: return false; +16166: return true; +16166: } +16166: +16166: __diff_type +16166: _M_suffix_length(_RAIter __word, __diff_type __len, +16166: __diff_type __pos) +16166: { +16166: const auto& __pred = this->_M_pred(); +16166: __diff_type __i = 0; +16166: while (__pred(__word[__pos - __i], __word[__len - 1 - __i]) +16166: && __i < __pos) +16166: { +16166: ++__i; +16166: } +16166: return __i; +16166: } +16166: +16166: template +16166: __diff_type +16166: _M_bad_char_shift(_Tp __c) const +16166: { return this->_M_lookup(__c, _M_pat_end - _M_pat); } +16166: +16166: _RAIter _M_pat; +16166: _RAIter _M_pat_end; +16166: std::vector<__diff_type> _M_good_suffix; +16166: }; +16166: +16166: template::value_type>, +16166: typename _BinaryPredicate = equal_to<>> +16166: class boyer_moore_horspool_searcher +16166: : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> +16166: { +16166: using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; +16166: using typename _Base::__diff_type; +16166: +16166: public: +16166: boyer_moore_horspool_searcher(_RAIter __pat, +16166: _RAIter __pat_end, +16166: _Hash __hf = _Hash(), +16166: _BinaryPredicate __pred +16166: = _BinaryPredicate()) +16166: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), +16166: _M_pat(__pat), _M_pat_end(__pat_end) +16166: { } +16166: +16166: template +16166: pair<_RandomAccessIterator2, _RandomAccessIterator2> +16166: operator()(_RandomAccessIterator2 __first, +16166: _RandomAccessIterator2 __last) const +16166: { +16166: const auto& __pred = this->_M_pred(); +16166: auto __patlen = _M_pat_end - _M_pat; +16166: if (__patlen == 0) +16166: return std::make_pair(__first, __first); +16166: auto __len = __last - __first; +16166: while (__len >= __patlen) +16166: { +16166: for (auto __scan = __patlen - 1; +16166: __pred(__first[__scan], _M_pat[__scan]); --__scan) +16166: if (__scan == 0) +16166: return std::make_pair(__first, __first + __patlen); +16166: auto __shift = _M_bad_char_shift(__first[__patlen - 1]); +16166: __len -= __shift; +16166: __first += __shift; +16166: } +16166: return std::make_pair(__last, __last); +16166: } +16166: +16166: private: +16166: template +16166: __diff_type +16166: _M_bad_char_shift(_Tp __c) const +16166: { return this->_M_lookup(__c, _M_pat_end - _M_pat); } +16166: +16166: _RAIter _M_pat; +16166: _RAIter _M_pat_end; +16166: }; +16166: +16166: template +16166: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: +16166: boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end, +16166: _Hash __hf, _BinaryPredicate __pred) +16166: : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), +16166: _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat) +16166: { +16166: auto __patlen = __pat_end - __pat; +16166: if (__patlen == 0) +16166: return; +16166: __diff_type __last_prefix = __patlen - 1; +16166: for (__diff_type __p = __patlen - 1; __p >= 0; --__p) +16166: { +16166: if (_M_is_prefix(__pat, __patlen, __p + 1)) +16166: __last_prefix = __p + 1; +16166: _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p); +16166: } +16166: for (__diff_type __p = 0; __p < __patlen - 1; ++__p) +16166: { +16166: auto __slen = _M_suffix_length(__pat, __patlen, __p); +16166: auto __pos = __patlen - 1 - __slen; +16166: if (!__pred(__pat[__p - __slen], __pat[__pos])) +16166: _M_good_suffix[__pos] = __patlen - 1 - __p + __slen; +16166: } +16166: } +16166: +16166: template +16166: template +16166: pair<_RandomAccessIterator2, _RandomAccessIterator2> +16166: boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: +16166: operator()(_RandomAccessIterator2 __first, +16166: _RandomAccessIterator2 __last) const +16166: { +16166: auto __patlen = _M_pat_end - _M_pat; +16166: if (__patlen == 0) +16166: return std::make_pair(__first, __first); +16166: const auto& __pred = this->_M_pred(); +16166: __diff_type __i = __patlen - 1; +16166: auto __stringlen = __last - __first; +16166: while (__i < __stringlen) +16166: { +16166: __diff_type __j = __patlen - 1; +16166: while (__j >= 0 && __pred(__first[__i], _M_pat[__j])) +16166: { +16166: --__i; +16166: --__j; +16166: } +16166: if (__j < 0) +16166: { +16166: const auto __match = __first + __i + 1; +16166: return std::make_pair(__match, __match + __patlen); +16166: } +16166: __i += std::max(_M_bad_char_shift(__first[__i]), +16166: _M_good_suffix[__j]); +16166: } +16166: return std::make_pair(__last, __last); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/usr/include/c++/14/memory" 1 3 +16166: # 47 "/usr/include/c++/14/memory" 3 +16166: +16166: # 48 "/usr/include/c++/14/memory" 3 +16166: # 66 "/usr/include/c++/14/memory" 3 +16166: # 1 "/usr/include/c++/14/bits/stl_tempbuf.h" 1 3 +16166: # 65 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: namespace __detail +16166: { +16166: template +16166: inline void +16166: __return_temporary_buffer(_Tp* __p, +16166: size_t __len __attribute__((__unused__))) +16166: { +16166: +16166: ::operator delete(__p, __len * sizeof(_Tp)); +16166: +16166: +16166: +16166: } +16166: } +16166: # 101 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +16166: template +16166: [[__deprecated__]] +16166: pair<_Tp*, ptrdiff_t> +16166: get_temporary_buffer(ptrdiff_t __len) noexcept +16166: { +16166: const ptrdiff_t __max = +16166: __gnu_cxx::__numeric_traits::__max / sizeof(_Tp); +16166: if (__len > __max) +16166: __len = __max; +16166: +16166: while (__len > 0) +16166: { +16166: _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), +16166: std::nothrow)); +16166: if (__tmp != 0) +16166: return std::pair<_Tp*, ptrdiff_t>(__tmp, __len); +16166: __len = __len == 1 ? 0 : ((__len + 1) / 2); +16166: } +16166: return std::pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0); +16166: } +16166: # 129 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +16166: template +16166: inline void +16166: return_temporary_buffer(_Tp* __p) +16166: { ::operator delete(__p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class _Temporary_buffer +16166: { +16166: +16166: +16166: +16166: public: +16166: typedef _Tp value_type; +16166: typedef value_type* pointer; +16166: typedef pointer iterator; +16166: typedef ptrdiff_t size_type; +16166: +16166: protected: +16166: size_type _M_original_len; +16166: size_type _M_len; +16166: pointer _M_buffer; +16166: +16166: public: +16166: +16166: size_type +16166: size() const +16166: { return _M_len; } +16166: +16166: +16166: size_type +16166: requested_size() const +16166: { return _M_original_len; } +16166: +16166: +16166: iterator +16166: begin() +16166: { return _M_buffer; } +16166: +16166: +16166: iterator +16166: end() +16166: { return _M_buffer + _M_len; } +16166: +16166: +16166: +16166: +16166: +16166: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len); +16166: +16166: ~_Temporary_buffer() +16166: { +16166: std::_Destroy(_M_buffer, _M_buffer + _M_len); +16166: std::__detail::__return_temporary_buffer(_M_buffer, _M_len); +16166: } +16166: +16166: private: +16166: +16166: _Temporary_buffer(const _Temporary_buffer&); +16166: +16166: void +16166: operator=(const _Temporary_buffer&); +16166: }; +16166: +16166: +16166: template +16166: struct __uninitialized_construct_buf_dispatch +16166: { +16166: template +16166: static void +16166: __ucr(_Pointer __first, _Pointer __last, +16166: _ForwardIterator __seed) +16166: { +16166: if (__first == __last) +16166: return; +16166: +16166: _Pointer __cur = __first; +16166: try +16166: { +16166: std::_Construct(std::__addressof(*__first), +16166: std::move(*__seed)); +16166: _Pointer __prev = __cur; +16166: ++__cur; +16166: for(; __cur != __last; ++__cur, ++__prev) +16166: std::_Construct(std::__addressof(*__cur), +16166: std::move(*__prev)); +16166: *__seed = std::move(*__prev); +16166: } +16166: catch(...) +16166: { +16166: std::_Destroy(__first, __cur); +16166: throw; +16166: } +16166: } +16166: }; +16166: +16166: template<> +16166: struct __uninitialized_construct_buf_dispatch +16166: { +16166: template +16166: static void +16166: __ucr(_Pointer, _Pointer, _ForwardIterator) { } +16166: }; +16166: # 247 "/usr/include/c++/14/bits/stl_tempbuf.h" 3 +16166: template +16166: inline void +16166: __uninitialized_construct_buf(_Pointer __first, _Pointer __last, +16166: _ForwardIterator __seed) +16166: { +16166: typedef typename std::iterator_traits<_Pointer>::value_type +16166: _ValueType; +16166: +16166: std::__uninitialized_construct_buf_dispatch< +16166: __has_trivial_constructor(_ValueType)>:: +16166: __ucr(__first, __last, __seed); +16166: } +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: template +16166: _Temporary_buffer<_ForwardIterator, _Tp>:: +16166: _Temporary_buffer(_ForwardIterator __seed, size_type __original_len) +16166: : _M_original_len(__original_len), _M_len(0), _M_buffer(0) +16166: { +16166: std::pair __p( +16166: std::get_temporary_buffer(_M_original_len)); +16166: +16166: if (__p.first) +16166: { +16166: try +16166: { +16166: std::__uninitialized_construct_buf(__p.first, __p.first + __p.second, +16166: __seed); +16166: _M_buffer = __p.first; +16166: _M_len = __p.second; +16166: } +16166: catch(...) +16166: { +16166: std::__detail::__return_temporary_buffer(__p.first, __p.second); +16166: throw; +16166: } +16166: } +16166: } +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: } +16166: # 67 "/usr/include/c++/14/memory" 2 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_raw_storage_iter.h" 1 3 +16166: # 59 "/usr/include/c++/14/bits/stl_raw_storage_iter.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: # 64 "/usr/include/c++/14/bits/stl_raw_storage_iter.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class [[__deprecated__]] raw_storage_iterator +16166: : public iterator +16166: { +16166: protected: +16166: _OutputIterator _M_iter; +16166: +16166: public: +16166: explicit +16166: raw_storage_iterator(_OutputIterator __x) +16166: : _M_iter(__x) {} +16166: +16166: raw_storage_iterator& +16166: operator*() { return *this; } +16166: +16166: raw_storage_iterator& +16166: operator=(const _Tp& __element) +16166: { +16166: std::_Construct(std::__addressof(*_M_iter), __element); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: raw_storage_iterator& +16166: operator=(_Tp&& __element) +16166: { +16166: std::_Construct(std::__addressof(*_M_iter), std::move(__element)); +16166: return *this; +16166: } +16166: +16166: +16166: raw_storage_iterator& +16166: operator++() +16166: { +16166: ++_M_iter; +16166: return *this; +16166: } +16166: +16166: raw_storage_iterator +16166: operator++(int) +16166: { +16166: raw_storage_iterator __tmp = *this; +16166: ++_M_iter; +16166: return __tmp; +16166: } +16166: +16166: +16166: +16166: _OutputIterator base() const { return _M_iter; } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: } +16166: # 71 "/usr/include/c++/14/memory" 2 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/align.h" 1 3 +16166: # 36 "/usr/include/c++/14/bits/align.h" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 37 "/usr/include/c++/14/bits/align.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 60 "/usr/include/c++/14/bits/align.h" 3 +16166: inline void* +16166: align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept +16166: { +16166: if (__space < __size) +16166: return nullptr; +16166: const auto __intptr = reinterpret_cast(__ptr); +16166: const auto __aligned = (__intptr - 1u + __align) & -__align; +16166: const auto __diff = __aligned - __intptr; +16166: if (__diff > (__space - __size)) +16166: return nullptr; +16166: else +16166: { +16166: __space -= __diff; +16166: return __ptr = reinterpret_cast(__aligned); +16166: } +16166: } +16166: # 106 "/usr/include/c++/14/bits/align.h" 3 +16166: +16166: } +16166: # 75 "/usr/include/c++/14/memory" 2 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/unique_ptr.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 57 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: template class auto_ptr; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct default_delete +16166: { +16166: +16166: constexpr default_delete() noexcept = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template>> +16166: +16166: default_delete(const default_delete<_Up>&) noexcept { } +16166: +16166: +16166: +16166: void +16166: operator()(_Tp* __ptr) const +16166: { +16166: static_assert(!is_void<_Tp>::value, +16166: "can't delete pointer to incomplete type"); +16166: static_assert(sizeof(_Tp)>0, +16166: "can't delete pointer to incomplete type"); +16166: delete __ptr; +16166: } +16166: }; +16166: # 105 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template +16166: struct default_delete<_Tp[]> +16166: { +16166: public: +16166: +16166: constexpr default_delete() noexcept = default; +16166: # 121 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template>> +16166: +16166: default_delete(const default_delete<_Up[]>&) noexcept { } +16166: +16166: +16166: template +16166: +16166: typename enable_if::value>::type +16166: operator()(_Up* __ptr) const +16166: { +16166: static_assert(sizeof(_Tp)>0, +16166: "can't delete pointer to incomplete type"); +16166: delete [] __ptr; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: class __uniq_ptr_impl +16166: { +16166: template +16166: struct _Ptr +16166: { +16166: using type = _Up*; +16166: }; +16166: +16166: template +16166: struct +16166: _Ptr<_Up, _Ep, __void_t::type::pointer>> +16166: { +16166: using type = typename remove_reference<_Ep>::type::pointer; +16166: }; +16166: +16166: public: +16166: using _DeleterConstraint = enable_if< +16166: __and_<__not_>, +16166: is_default_constructible<_Dp>>::value>; +16166: +16166: using pointer = typename _Ptr<_Tp, _Dp>::type; +16166: +16166: static_assert( !is_rvalue_reference<_Dp>::value, +16166: "unique_ptr's deleter type must be a function object type" +16166: " or an lvalue reference type" ); +16166: +16166: __uniq_ptr_impl() = default; +16166: +16166: __uniq_ptr_impl(pointer __p) : _M_t() { _M_ptr() = __p; } +16166: +16166: template +16166: +16166: __uniq_ptr_impl(pointer __p, _Del&& __d) +16166: : _M_t(__p, std::forward<_Del>(__d)) { } +16166: +16166: +16166: __uniq_ptr_impl(__uniq_ptr_impl&& __u) noexcept +16166: : _M_t(std::move(__u._M_t)) +16166: { __u._M_ptr() = nullptr; } +16166: +16166: +16166: __uniq_ptr_impl& operator=(__uniq_ptr_impl&& __u) noexcept +16166: { +16166: reset(__u.release()); +16166: _M_deleter() = std::forward<_Dp>(__u._M_deleter()); +16166: return *this; +16166: } +16166: +16166: +16166: pointer& _M_ptr() noexcept { return std::get<0>(_M_t); } +16166: +16166: pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } +16166: +16166: _Dp& _M_deleter() noexcept { return std::get<1>(_M_t); } +16166: +16166: const _Dp& _M_deleter() const noexcept { return std::get<1>(_M_t); } +16166: +16166: +16166: void reset(pointer __p) noexcept +16166: { +16166: const pointer __old_p = _M_ptr(); +16166: _M_ptr() = __p; +16166: if (__old_p) +16166: _M_deleter()(__old_p); +16166: } +16166: +16166: +16166: pointer release() noexcept +16166: { +16166: pointer __p = _M_ptr(); +16166: _M_ptr() = nullptr; +16166: return __p; +16166: } +16166: +16166: +16166: void +16166: swap(__uniq_ptr_impl& __rhs) noexcept +16166: { +16166: using std::swap; +16166: swap(this->_M_ptr(), __rhs._M_ptr()); +16166: swap(this->_M_deleter(), __rhs._M_deleter()); +16166: } +16166: +16166: private: +16166: tuple _M_t; +16166: }; +16166: +16166: +16166: template ::value, +16166: bool = is_move_assignable<_Dp>::value> +16166: struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp> +16166: { +16166: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +16166: __uniq_ptr_data(__uniq_ptr_data&&) = default; +16166: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; +16166: }; +16166: +16166: template +16166: struct __uniq_ptr_data<_Tp, _Dp, true, false> : __uniq_ptr_impl<_Tp, _Dp> +16166: { +16166: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +16166: __uniq_ptr_data(__uniq_ptr_data&&) = default; +16166: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; +16166: }; +16166: +16166: template +16166: struct __uniq_ptr_data<_Tp, _Dp, false, true> : __uniq_ptr_impl<_Tp, _Dp> +16166: { +16166: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +16166: __uniq_ptr_data(__uniq_ptr_data&&) = delete; +16166: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = default; +16166: }; +16166: +16166: template +16166: struct __uniq_ptr_data<_Tp, _Dp, false, false> : __uniq_ptr_impl<_Tp, _Dp> +16166: { +16166: using __uniq_ptr_impl<_Tp, _Dp>::__uniq_ptr_impl; +16166: __uniq_ptr_data(__uniq_ptr_data&&) = delete; +16166: __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template > +16166: class unique_ptr +16166: { +16166: template +16166: using _DeleterConstraint = +16166: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; +16166: +16166: __uniq_ptr_data<_Tp, _Dp> _M_t; +16166: +16166: public: +16166: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; +16166: using element_type = _Tp; +16166: using deleter_type = _Dp; +16166: +16166: private: +16166: +16166: +16166: template +16166: using __safe_conversion_up = __and_< +16166: is_convertible::pointer, pointer>, +16166: __not_> +16166: >; +16166: +16166: public: +16166: +16166: +16166: +16166: template> +16166: constexpr unique_ptr() noexcept +16166: : _M_t() +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: +16166: explicit +16166: unique_ptr(pointer __p) noexcept +16166: : _M_t(__p) +16166: { } +16166: # 322 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template>> +16166: +16166: unique_ptr(pointer __p, const deleter_type& __d) noexcept +16166: : _M_t(__p, __d) { } +16166: # 335 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template>> +16166: +16166: unique_ptr(pointer __p, +16166: __enable_if_t::value, +16166: _Del&&> __d) noexcept +16166: : _M_t(__p, std::move(__d)) +16166: { } +16166: +16166: template::type> +16166: +16166: unique_ptr(pointer, +16166: __enable_if_t::value, +16166: _DelUnref&&>) = delete; +16166: +16166: +16166: template> +16166: constexpr unique_ptr(nullptr_t) noexcept +16166: : _M_t() +16166: { } +16166: +16166: +16166: +16166: +16166: unique_ptr(unique_ptr&&) = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template, +16166: __conditional_t::value, +16166: is_same<_Ep, _Dp>, +16166: is_convertible<_Ep, _Dp>>>> +16166: +16166: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept +16166: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) +16166: { } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: template, +16166: is_same<_Dp, default_delete<_Tp>>>> +16166: unique_ptr(auto_ptr<_Up>&& __u) noexcept; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~unique_ptr() noexcept +16166: { +16166: static_assert(__is_invocable::value, +16166: "unique_ptr's deleter must be invocable with a pointer"); +16166: auto& __ptr = _M_t._M_ptr(); +16166: if (__ptr != nullptr) +16166: get_deleter()(std::move(__ptr)); +16166: __ptr = pointer(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: unique_ptr& operator=(unique_ptr&&) = default; +16166: # 418 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template +16166: +16166: typename enable_if< __and_< +16166: __safe_conversion_up<_Up, _Ep>, +16166: is_assignable +16166: >::value, +16166: unique_ptr&>::type +16166: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept +16166: { +16166: reset(__u.release()); +16166: get_deleter() = std::forward<_Ep>(__u.get_deleter()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: unique_ptr& +16166: operator=(nullptr_t) noexcept +16166: { +16166: reset(); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: typename add_lvalue_reference::type +16166: operator*() const noexcept(noexcept(*std::declval())) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) std::__glibcxx_assert_fail(); } while (false); +16166: return *get(); +16166: } +16166: +16166: +16166: +16166: pointer +16166: operator->() const noexcept +16166: { +16166: ; +16166: return get(); +16166: } +16166: +16166: +16166: +16166: pointer +16166: get() const noexcept +16166: { return _M_t._M_ptr(); } +16166: +16166: +16166: +16166: deleter_type& +16166: get_deleter() noexcept +16166: { return _M_t._M_deleter(); } +16166: +16166: +16166: +16166: const deleter_type& +16166: get_deleter() const noexcept +16166: { return _M_t._M_deleter(); } +16166: +16166: +16166: +16166: explicit operator bool() const noexcept +16166: { return get() == pointer() ? false : true; } +16166: +16166: +16166: +16166: +16166: +16166: pointer +16166: release() noexcept +16166: { return _M_t.release(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: reset(pointer __p = pointer()) noexcept +16166: { +16166: static_assert(__is_invocable::value, +16166: "unique_ptr's deleter must be invocable with a pointer"); +16166: _M_t.reset(std::move(__p)); +16166: } +16166: +16166: +16166: +16166: void +16166: swap(unique_ptr& __u) noexcept +16166: { +16166: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); +16166: _M_t.swap(__u._M_t); +16166: } +16166: +16166: +16166: unique_ptr(const unique_ptr&) = delete; +16166: unique_ptr& operator=(const unique_ptr&) = delete; +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: # 537 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template +16166: class unique_ptr<_Tp[], _Dp> +16166: { +16166: template +16166: using _DeleterConstraint = +16166: typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; +16166: +16166: __uniq_ptr_data<_Tp, _Dp> _M_t; +16166: +16166: +16166: template +16166: using __is_derived_Tp +16166: = __and_< is_base_of<_Tp, _Up>, +16166: __not_, __remove_cv_t<_Up>>> >; +16166: +16166: public: +16166: using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; +16166: using element_type = _Tp; +16166: using deleter_type = _Dp; +16166: +16166: +16166: +16166: template, +16166: typename _UP_pointer = typename _UPtr::pointer, +16166: typename _UP_element_type = typename _UPtr::element_type> +16166: using __safe_conversion_up = __and_< +16166: is_array<_Up>, +16166: is_same, +16166: is_same<_UP_pointer, _UP_element_type*>, +16166: is_convertible<_UP_element_type(*)[], element_type(*)[]> +16166: >; +16166: +16166: +16166: template +16166: using __safe_conversion_raw = __and_< +16166: __or_<__or_, +16166: is_same<_Up, nullptr_t>>, +16166: __and_, +16166: is_same, +16166: is_convertible< +16166: typename remove_pointer<_Up>::type(*)[], +16166: element_type(*)[]> +16166: > +16166: > +16166: >; +16166: +16166: +16166: +16166: +16166: template> +16166: constexpr unique_ptr() noexcept +16166: : _M_t() +16166: { } +16166: # 599 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template, +16166: typename = typename enable_if< +16166: __safe_conversion_raw<_Up>::value, bool>::type> +16166: +16166: explicit +16166: unique_ptr(_Up __p) noexcept +16166: : _M_t(__p) +16166: { } +16166: # 618 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template, +16166: is_copy_constructible<_Del>>> +16166: +16166: unique_ptr(_Up __p, const deleter_type& __d) noexcept +16166: : _M_t(__p, __d) { } +16166: # 633 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template, +16166: is_move_constructible<_Del>>> +16166: +16166: unique_ptr(_Up __p, +16166: __enable_if_t::value, +16166: _Del&&> __d) noexcept +16166: : _M_t(std::move(__p), std::move(__d)) +16166: { } +16166: +16166: template::type, +16166: typename = _Require<__safe_conversion_raw<_Up>>> +16166: unique_ptr(_Up, +16166: __enable_if_t::value, +16166: _DelUnref&&>) = delete; +16166: +16166: +16166: unique_ptr(unique_ptr&&) = default; +16166: +16166: +16166: template> +16166: constexpr unique_ptr(nullptr_t) noexcept +16166: : _M_t() +16166: { } +16166: +16166: template, +16166: __conditional_t::value, +16166: is_same<_Ep, _Dp>, +16166: is_convertible<_Ep, _Dp>>>> +16166: +16166: unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept +16166: : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: ~unique_ptr() +16166: { +16166: auto& __ptr = _M_t._M_ptr(); +16166: if (__ptr != nullptr) +16166: get_deleter()(__ptr); +16166: __ptr = pointer(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: unique_ptr& +16166: operator=(unique_ptr&&) = default; +16166: # 697 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template +16166: +16166: typename +16166: enable_if<__and_<__safe_conversion_up<_Up, _Ep>, +16166: is_assignable +16166: >::value, +16166: unique_ptr&>::type +16166: operator=(unique_ptr<_Up, _Ep>&& __u) noexcept +16166: { +16166: reset(__u.release()); +16166: get_deleter() = std::forward<_Ep>(__u.get_deleter()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: unique_ptr& +16166: operator=(nullptr_t) noexcept +16166: { +16166: reset(); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: typename std::add_lvalue_reference::type +16166: operator[](size_t __i) const +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(get() != pointer())) std::__glibcxx_assert_fail(); } while (false); +16166: return get()[__i]; +16166: } +16166: +16166: +16166: +16166: pointer +16166: get() const noexcept +16166: { return _M_t._M_ptr(); } +16166: +16166: +16166: +16166: deleter_type& +16166: get_deleter() noexcept +16166: { return _M_t._M_deleter(); } +16166: +16166: +16166: +16166: const deleter_type& +16166: get_deleter() const noexcept +16166: { return _M_t._M_deleter(); } +16166: +16166: +16166: +16166: explicit operator bool() const noexcept +16166: { return get() == pointer() ? false : true; } +16166: +16166: +16166: +16166: +16166: +16166: pointer +16166: release() noexcept +16166: { return _M_t.release(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template , +16166: __and_, +16166: is_pointer<_Up>, +16166: is_convertible< +16166: typename remove_pointer<_Up>::type(*)[], +16166: element_type(*)[] +16166: > +16166: > +16166: > +16166: >> +16166: +16166: void +16166: reset(_Up __p) noexcept +16166: { _M_t.reset(std::move(__p)); } +16166: +16166: +16166: void reset(nullptr_t = nullptr) noexcept +16166: { reset(pointer()); } +16166: +16166: +16166: +16166: void +16166: swap(unique_ptr& __u) noexcept +16166: { +16166: static_assert(__is_swappable<_Dp>::value, "deleter must be swappable"); +16166: _M_t.swap(__u._M_t); +16166: } +16166: +16166: +16166: unique_ptr(const unique_ptr&) = delete; +16166: unique_ptr& operator=(const unique_ptr&) = delete; +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline +16166: +16166: +16166: +16166: typename enable_if<__is_swappable<_Dp>::value>::type +16166: +16166: +16166: +16166: swap(unique_ptr<_Tp, _Dp>& __x, +16166: unique_ptr<_Tp, _Dp>& __y) noexcept +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: typename enable_if::value>::type +16166: swap(unique_ptr<_Tp, _Dp>&, +16166: unique_ptr<_Tp, _Dp>&) = delete; +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const unique_ptr<_Tp, _Dp>& __x, +16166: const unique_ptr<_Up, _Ep>& __y) +16166: { return __x.get() == __y.get(); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept +16166: { return !__x; } +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept +16166: { return !__x; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const unique_ptr<_Tp, _Dp>& __x, +16166: const unique_ptr<_Up, _Ep>& __y) +16166: { return __x.get() != __y.get(); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept +16166: { return (bool)__x; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept +16166: { return (bool)__x; } +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const unique_ptr<_Tp, _Dp>& __x, +16166: const unique_ptr<_Up, _Ep>& __y) +16166: { +16166: typedef typename +16166: std::common_type::pointer, +16166: typename unique_ptr<_Up, _Ep>::pointer>::type _CT; +16166: return std::less<_CT>()(__x.get(), __y.get()); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +16166: { +16166: return std::less::pointer>()(__x.get(), +16166: nullptr); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +16166: { +16166: return std::less::pointer>()(nullptr, +16166: __x.get()); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const unique_ptr<_Tp, _Dp>& __x, +16166: const unique_ptr<_Up, _Ep>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +16166: { return !(nullptr < __x); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +16166: { return !(__x < nullptr); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const unique_ptr<_Tp, _Dp>& __x, +16166: const unique_ptr<_Up, _Ep>& __y) +16166: { return (__y < __x); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +16166: { +16166: return std::less::pointer>()(nullptr, +16166: __x.get()); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +16166: { +16166: return std::less::pointer>()(__x.get(), +16166: nullptr); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const unique_ptr<_Tp, _Dp>& __x, +16166: const unique_ptr<_Up, _Ep>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) +16166: { return !(__x < nullptr); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>=(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) +16166: { return !(nullptr < __x); } +16166: # 1015 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template::__enable_hash_call> +16166: struct __uniq_ptr_hash +16166: +16166: : private __poison_hash<_Ptr> +16166: +16166: { +16166: size_t +16166: operator()(const _Up& __u) const +16166: noexcept(noexcept(std::declval>()(std::declval<_Ptr>()))) +16166: { return hash<_Ptr>()(__u.get()); } +16166: }; +16166: +16166: template +16166: struct __uniq_ptr_hash<_Up, _Ptr, false> +16166: : private __poison_hash<_Ptr> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct hash> +16166: : public __hash_base>, +16166: public __uniq_ptr_hash> +16166: { }; +16166: +16166: +16166: +16166: namespace __detail +16166: { +16166: template +16166: struct _MakeUniq +16166: { typedef unique_ptr<_Tp> __single_object; }; +16166: +16166: template +16166: struct _MakeUniq<_Tp[]> +16166: { typedef unique_ptr<_Tp[]> __array; }; +16166: +16166: template +16166: struct _MakeUniq<_Tp[_Bound]> +16166: { struct __invalid_type { }; }; +16166: +16166: template +16166: using __unique_ptr_t = typename _MakeUniq<_Tp>::__single_object; +16166: template +16166: using __unique_ptr_array_t = typename _MakeUniq<_Tp>::__array; +16166: template +16166: using __invalid_make_unique_t = typename _MakeUniq<_Tp>::__invalid_type; +16166: } +16166: # 1073 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template +16166: +16166: inline __detail::__unique_ptr_t<_Tp> +16166: make_unique(_Args&&... __args) +16166: { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); } +16166: # 1088 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template +16166: +16166: inline __detail::__unique_ptr_array_t<_Tp> +16166: make_unique(size_t __num) +16166: { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: __detail::__invalid_make_unique_t<_Tp> +16166: make_unique(_Args&&...) = delete; +16166: # 1159 "/usr/include/c++/14/bits/unique_ptr.h" 3 +16166: template +16166: static constexpr bool __is_unique_ptr = false; +16166: template +16166: static constexpr bool __is_unique_ptr> = true; +16166: +16166: +16166: +16166: +16166: +16166: namespace __detail::__variant +16166: { +16166: template struct _Never_valueless_alt; +16166: +16166: +16166: +16166: template +16166: struct _Never_valueless_alt> +16166: : std::true_type +16166: { }; +16166: } +16166: +16166: +16166: +16166: } +16166: # 79 "/usr/include/c++/14/memory" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/shared_ptr.h" 1 3 +16166: # 52 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: # 1 "/usr/include/c++/14/iosfwd" 1 3 +16166: # 36 "/usr/include/c++/14/iosfwd" 3 +16166: +16166: # 37 "/usr/include/c++/14/iosfwd" 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stringfwd.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/stringfwd.h" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/stringfwd.h" 3 +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct char_traits; +16166: +16166: template<> struct char_traits; +16166: +16166: template<> struct char_traits; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> struct char_traits; +16166: template<> struct char_traits; +16166: +16166: +16166: namespace __cxx11 { +16166: +16166: template, +16166: typename _Alloc = allocator<_CharT> > +16166: class basic_string; +16166: +16166: } +16166: +16166: +16166: typedef basic_string string; +16166: +16166: +16166: typedef basic_string wstring; +16166: # 89 "/usr/include/c++/14/bits/stringfwd.h" 3 +16166: typedef basic_string u16string; +16166: +16166: +16166: typedef basic_string u32string; +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 42 "/usr/include/c++/14/iosfwd" 2 3 +16166: # 1 "/usr/include/c++/14/bits/postypes.h" 1 3 +16166: # 38 "/usr/include/c++/14/bits/postypes.h" 3 +16166: +16166: # 39 "/usr/include/c++/14/bits/postypes.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/cwchar" 1 3 +16166: # 39 "/usr/include/c++/14/cwchar" 3 +16166: +16166: # 40 "/usr/include/c++/14/cwchar" 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/wchar.h" 1 3 4 +16166: # 27 "/usr/include/wchar.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +16166: # 28 "/usr/include/wchar.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +16166: # 52 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/long-double.h" 1 3 4 +16166: # 25 "/usr/include/arm-linux-gnueabihf/bits/floatn-common.h" 2 3 4 +16166: # 53 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 2 3 4 +16166: # 31 "/usr/include/wchar.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 36 "/usr/include/wchar.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 1 3 4 +16166: # 40 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 3 4 +16166: typedef __builtin_va_list __gnuc_va_list; +16166: # 39 "/usr/include/wchar.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: typedef __gnuc_va_list va_list; +16166: # 52 "/usr/include/wchar.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 1 3 4 +16166: # 20 "/usr/include/arm-linux-gnueabihf/bits/types/wint_t.h" 3 4 +16166: typedef unsigned int wint_t; +16166: # 53 "/usr/include/wchar.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 1 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 1 3 4 +16166: # 13 "/usr/include/arm-linux-gnueabihf/bits/types/__mbstate_t.h" 3 4 +16166: typedef struct +16166: { +16166: int __count; +16166: union +16166: { +16166: unsigned int __wch; +16166: char __wchb[4]; +16166: } __value; +16166: } __mbstate_t; +16166: # 5 "/usr/include/arm-linux-gnueabihf/bits/types/mbstate_t.h" 2 3 4 +16166: +16166: typedef __mbstate_t mbstate_t; +16166: # 54 "/usr/include/wchar.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__FILE.h" 1 3 4 +16166: +16166: +16166: +16166: struct _IO_FILE; +16166: typedef struct _IO_FILE __FILE; +16166: # 55 "/usr/include/wchar.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/FILE.h" 1 3 4 +16166: +16166: +16166: +16166: struct _IO_FILE; +16166: +16166: +16166: typedef struct _IO_FILE FILE; +16166: # 58 "/usr/include/wchar.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 1 3 4 +16166: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/__locale_t.h" 3 4 +16166: struct __locale_struct +16166: { +16166: +16166: struct __locale_data *__locales[13]; +16166: +16166: +16166: const unsigned short int *__ctype_b; +16166: const int *__ctype_tolower; +16166: const int *__ctype_toupper; +16166: +16166: +16166: const char *__names[13]; +16166: }; +16166: +16166: typedef struct __locale_struct *__locale_t; +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/locale_t.h" 2 3 4 +16166: +16166: typedef __locale_t locale_t; +16166: # 61 "/usr/include/wchar.h" 2 3 4 +16166: # 90 "/usr/include/wchar.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: struct tm; +16166: +16166: +16166: +16166: extern wchar_t *wcscpy (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern wchar_t *wcsncpy (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern size_t wcslcpy (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); +16166: +16166: +16166: +16166: extern size_t wcslcat (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); +16166: +16166: +16166: +16166: extern wchar_t *wcscat (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern wchar_t *wcsncat (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); +16166: +16166: +16166: extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, +16166: size_t __n) noexcept (true); +16166: +16166: +16166: +16166: extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, +16166: locale_t __loc) noexcept (true); +16166: +16166: extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, +16166: size_t __n, locale_t __loc) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) noexcept (true); +16166: +16166: +16166: +16166: extern size_t wcsxfrm (wchar_t *__restrict __s1, +16166: const wchar_t *__restrict __s2, size_t __n) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, +16166: locale_t __loc) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, +16166: size_t __n, locale_t __loc) noexcept (true); +16166: +16166: +16166: extern wchar_t *wcsdup (const wchar_t *__s) noexcept (true) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +16166: +16166: +16166: +16166: +16166: extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) +16166: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); +16166: extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) +16166: noexcept (true) __asm ("wcschr") __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) +16166: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); +16166: extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) +16166: noexcept (true) __asm ("wcsrchr") __attribute__ ((__pure__)); +16166: # 206 "/usr/include/wchar.h" 3 4 +16166: extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) +16166: noexcept (true) __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) +16166: noexcept (true) __attribute__ ((__pure__)); +16166: +16166: +16166: extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) +16166: noexcept (true) __attribute__ ((__pure__)); +16166: +16166: +16166: extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) +16166: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); +16166: extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, +16166: const wchar_t *__accept) +16166: noexcept (true) __asm ("wcspbrk") __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) +16166: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); +16166: extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, +16166: const wchar_t *__needle) +16166: noexcept (true) __asm ("wcsstr") __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wchar_t *wcstok (wchar_t *__restrict __s, +16166: const wchar_t *__restrict __delim, +16166: wchar_t **__restrict __ptr) noexcept (true); +16166: +16166: +16166: extern size_t wcslen (const wchar_t *__s) noexcept (true) __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) +16166: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); +16166: extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, +16166: const wchar_t *__needle) +16166: noexcept (true) __asm ("wcswcs") __attribute__ ((__pure__)); +16166: # 265 "/usr/include/wchar.h" 3 4 +16166: extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) +16166: noexcept (true) __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) +16166: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); +16166: extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, +16166: size_t __n) +16166: noexcept (true) __asm ("wmemchr") __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) +16166: noexcept (true) __attribute__ ((__pure__)); +16166: +16166: +16166: extern wchar_t *wmemcpy (wchar_t *__restrict __s1, +16166: const wchar_t *__restrict __s2, size_t __n) noexcept (true); +16166: +16166: +16166: +16166: extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) +16166: noexcept (true); +16166: +16166: +16166: extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern wchar_t *wmempcpy (wchar_t *__restrict __s1, +16166: const wchar_t *__restrict __s2, size_t __n) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t btowc (int __c) noexcept (true); +16166: +16166: +16166: +16166: extern int wctob (wint_t __c) noexcept (true); +16166: +16166: +16166: +16166: extern int mbsinit (const mbstate_t *__ps) noexcept (true) __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: extern size_t mbrtowc (wchar_t *__restrict __pwc, +16166: const char *__restrict __s, size_t __n, +16166: mbstate_t *__restrict __p) noexcept (true); +16166: +16166: +16166: extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, +16166: mbstate_t *__restrict __ps) noexcept (true); +16166: +16166: +16166: extern size_t __mbrlen (const char *__restrict __s, size_t __n, +16166: mbstate_t *__restrict __ps) noexcept (true); +16166: extern size_t mbrlen (const char *__restrict __s, size_t __n, +16166: mbstate_t *__restrict __ps) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t __btowc_alias (int __c) __asm ("btowc"); +16166: extern __inline __attribute__ ((__gnu_inline__)) wint_t +16166: __attribute__ ((__leaf__)) btowc (int __c) noexcept (true) +16166: { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' +16166: ? (wint_t) __c : __btowc_alias (__c)); } +16166: +16166: extern int __wctob_alias (wint_t __c) __asm ("wctob"); +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: __attribute__ ((__leaf__)) wctob (wint_t __wc) noexcept (true) +16166: { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' +16166: ? (int) __wc : __wctob_alias (__wc)); } +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) size_t +16166: __attribute__ ((__leaf__)) mbrlen (const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) noexcept (true) +16166: +16166: { return (__ps != __null +16166: ? mbrtowc (__null, __s, __n, __ps) : __mbrlen (__s, __n, __null)); } +16166: +16166: +16166: +16166: +16166: extern size_t mbsrtowcs (wchar_t *__restrict __dst, +16166: const char **__restrict __src, size_t __len, +16166: mbstate_t *__restrict __ps) noexcept (true); +16166: +16166: +16166: +16166: extern size_t wcsrtombs (char *__restrict __dst, +16166: const wchar_t **__restrict __src, size_t __len, +16166: mbstate_t *__restrict __ps) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern size_t mbsnrtowcs (wchar_t *__restrict __dst, +16166: const char **__restrict __src, size_t __nmc, +16166: size_t __len, mbstate_t *__restrict __ps) noexcept (true); +16166: +16166: +16166: +16166: extern size_t wcsnrtombs (char *__restrict __dst, +16166: const wchar_t **__restrict __src, +16166: size_t __nwc, size_t __len, +16166: mbstate_t *__restrict __ps) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int wcwidth (wchar_t __c) noexcept (true); +16166: +16166: +16166: +16166: extern int wcswidth (const wchar_t *__s, size_t __n) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern double wcstod (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr) noexcept (true); +16166: +16166: +16166: +16166: extern float wcstof (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr) noexcept (true); +16166: extern long double wcstold (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr) noexcept (true); +16166: # 422 "/usr/include/wchar.h" 3 4 +16166: extern _Float32 wcstof32 (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 wcstof64 (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr) noexcept (true); +16166: # 437 "/usr/include/wchar.h" 3 4 +16166: extern _Float32x wcstof32x (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr) noexcept (true); +16166: # 455 "/usr/include/wchar.h" 3 4 +16166: extern long int wcstol (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, int __base) noexcept (true); +16166: +16166: +16166: +16166: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, int __base) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: __extension__ +16166: extern long long int wcstoll (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, int __base) +16166: noexcept (true); +16166: +16166: +16166: +16166: __extension__ +16166: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: int __base) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: __extension__ +16166: extern long long int wcstoq (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, int __base) +16166: noexcept (true); +16166: +16166: +16166: +16166: __extension__ +16166: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: int __base) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int wcstol (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstol") +16166: +16166: ; +16166: extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoul") +16166: +16166: +16166: ; +16166: __extension__ +16166: extern long long int wcstoll (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") +16166: +16166: +16166: ; +16166: __extension__ +16166: extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") +16166: +16166: +16166: ; +16166: +16166: __extension__ +16166: extern long long int wcstoq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoll") +16166: +16166: ; +16166: __extension__ +16166: extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoull") +16166: +16166: +16166: ; +16166: # 561 "/usr/include/wchar.h" 3 4 +16166: extern long int wcstol_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, int __base, +16166: locale_t __loc) noexcept (true); +16166: +16166: extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: int __base, locale_t __loc) noexcept (true); +16166: +16166: __extension__ +16166: extern long long int wcstoll_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: int __base, locale_t __loc) noexcept (true); +16166: +16166: __extension__ +16166: extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: int __base, locale_t __loc) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: 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") +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: ; +16166: __extension__ +16166: 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") +16166: +16166: +16166: +16166: ; +16166: __extension__ +16166: 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") +16166: +16166: +16166: +16166: ; +16166: # 630 "/usr/include/wchar.h" 3 4 +16166: extern double wcstod_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, locale_t __loc) +16166: noexcept (true); +16166: +16166: extern float wcstof_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, locale_t __loc) +16166: noexcept (true); +16166: +16166: extern long double wcstold_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: locale_t __loc) noexcept (true); +16166: # 649 "/usr/include/wchar.h" 3 4 +16166: extern _Float32 wcstof32_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: locale_t __loc) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 wcstof64_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: locale_t __loc) noexcept (true); +16166: # 667 "/usr/include/wchar.h" 3 4 +16166: extern _Float32x wcstof32x_l (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, +16166: locale_t __loc) noexcept (true); +16166: # 689 "/usr/include/wchar.h" 3 4 +16166: extern wchar_t *wcpcpy (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src) noexcept (true); +16166: +16166: +16166: +16166: extern wchar_t *wcpncpy (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, size_t __n) +16166: noexcept (true); +16166: # 718 "/usr/include/wchar.h" 3 4 +16166: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) +16166: __attribute__ ((__malloc__)) ; +16166: +16166: +16166: +16166: +16166: +16166: extern int fwide (__FILE *__fp, int __mode) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fwprintf (__FILE *__restrict __stream, +16166: const wchar_t *__restrict __format, ...) +16166: ; +16166: +16166: +16166: +16166: +16166: extern int wprintf (const wchar_t *__restrict __format, ...) +16166: ; +16166: +16166: extern int swprintf (wchar_t *__restrict __s, size_t __n, +16166: const wchar_t *__restrict __format, ...) +16166: noexcept (true) ; +16166: +16166: +16166: +16166: +16166: +16166: extern int vfwprintf (__FILE *__restrict __s, +16166: const wchar_t *__restrict __format, +16166: __gnuc_va_list __arg) +16166: ; +16166: +16166: +16166: +16166: +16166: extern int vwprintf (const wchar_t *__restrict __format, +16166: __gnuc_va_list __arg) +16166: ; +16166: +16166: +16166: extern int vswprintf (wchar_t *__restrict __s, size_t __n, +16166: const wchar_t *__restrict __format, +16166: __gnuc_va_list __arg) +16166: noexcept (true) ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fwscanf (__FILE *__restrict __stream, +16166: const wchar_t *__restrict __format, ...) +16166: ; +16166: +16166: +16166: +16166: +16166: extern int wscanf (const wchar_t *__restrict __format, ...) +16166: ; +16166: +16166: extern int swscanf (const wchar_t *__restrict __s, +16166: const wchar_t *__restrict __format, ...) +16166: noexcept (true) ; +16166: # 795 "/usr/include/wchar.h" 3 4 +16166: extern int fwscanf (__FILE *__restrict __stream, const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_fwscanf") +16166: +16166: +16166: ; +16166: extern int wscanf (const wchar_t *__restrict __format, ...) __asm__ ("" "__isoc23_wscanf") +16166: +16166: ; +16166: extern int swscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_swscanf") +16166: +16166: +16166: ; +16166: # 851 "/usr/include/wchar.h" 3 4 +16166: extern int vfwscanf (__FILE *__restrict __s, +16166: const wchar_t *__restrict __format, +16166: __gnuc_va_list __arg) +16166: ; +16166: +16166: +16166: +16166: +16166: extern int vwscanf (const wchar_t *__restrict __format, +16166: __gnuc_va_list __arg) +16166: ; +16166: +16166: extern int vswscanf (const wchar_t *__restrict __s, +16166: const wchar_t *__restrict __format, +16166: __gnuc_va_list __arg) +16166: noexcept (true) ; +16166: # 875 "/usr/include/wchar.h" 3 4 +16166: extern int vfwscanf (__FILE *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfwscanf") +16166: +16166: +16166: ; +16166: extern int vwscanf (const wchar_t *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vwscanf") +16166: +16166: ; +16166: extern int vswscanf (const wchar_t *__restrict __s, const wchar_t *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vswscanf") +16166: +16166: +16166: ; +16166: # 935 "/usr/include/wchar.h" 3 4 +16166: extern wint_t fgetwc (__FILE *__stream); +16166: extern wint_t getwc (__FILE *__stream); +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t getwchar (void); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t fputwc (wchar_t __wc, __FILE *__stream); +16166: extern wint_t putwc (wchar_t __wc, __FILE *__stream); +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t putwchar (wchar_t __wc); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, +16166: __FILE *__restrict __stream); +16166: +16166: +16166: +16166: +16166: +16166: extern int fputws (const wchar_t *__restrict __ws, +16166: __FILE *__restrict __stream); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t ungetwc (wint_t __wc, __FILE *__stream); +16166: # 990 "/usr/include/wchar.h" 3 4 +16166: extern wint_t getwc_unlocked (__FILE *__stream); +16166: extern wint_t getwchar_unlocked (void); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t fgetwc_unlocked (__FILE *__stream); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); +16166: # 1016 "/usr/include/wchar.h" 3 4 +16166: extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); +16166: extern wint_t putwchar_unlocked (wchar_t __wc); +16166: # 1026 "/usr/include/wchar.h" 3 4 +16166: extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, +16166: __FILE *__restrict __stream); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fputws_unlocked (const wchar_t *__restrict __ws, +16166: __FILE *__restrict __stream); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, +16166: const wchar_t *__restrict __format, +16166: const struct tm *__restrict __tp) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, +16166: const wchar_t *__restrict __format, +16166: const struct tm *__restrict __tp, +16166: locale_t __loc) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/wchar2-decl.h" 3 4 +16166: extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, +16166: const wchar_t *__restrict __s2, size_t __n, +16166: size_t __ns1) noexcept (true); +16166: extern wchar_t *__wmemcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmemcpy") +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: __attribute__((__warning__ ("wmemcpy called with length bigger than size of destination " "buffer"))) +16166: ; +16166: +16166: extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, +16166: size_t __n, size_t __ns1) noexcept (true); +16166: extern wchar_t *__wmemmove_alias (wchar_t *__s1, const wchar_t *__s2, size_t __n) noexcept (true) __asm__ ("" "wmemmove") +16166: +16166: ; +16166: extern wchar_t *__wmemmove_chk_warn (wchar_t *__s1, const wchar_t *__s2, size_t __n, size_t __ns1) noexcept (true) __asm__ ("" "__wmemmove_chk") +16166: +16166: +16166: __attribute__((__warning__ ("wmemmove called with length bigger than size of destination " "buffer"))) +16166: ; +16166: +16166: +16166: +16166: +16166: extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, +16166: const wchar_t *__restrict __s2, size_t __n, +16166: size_t __ns1) noexcept (true); +16166: extern wchar_t *__wmempcpy_alias (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) __asm__ ("" "wmempcpy") +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: __attribute__((__warning__ ("wmempcpy called with length bigger than size of destination " "buffer"))) +16166: ; +16166: +16166: +16166: +16166: +16166: extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, +16166: size_t __ns) noexcept (true); +16166: extern wchar_t *__wmemset_alias (wchar_t *__s, wchar_t __c, size_t __n) noexcept (true) __asm__ ("" "wmemset") +16166: ; +16166: extern wchar_t *__wmemset_chk_warn (wchar_t *__s, wchar_t __c, size_t __n, size_t __ns) noexcept (true) __asm__ ("" "__wmemset_chk") +16166: +16166: +16166: __attribute__((__warning__ ("wmemset called with length bigger than size of destination " "buffer"))) +16166: ; +16166: +16166: extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, +16166: size_t __n) noexcept (true); +16166: extern wchar_t *__wcscpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscpy") +16166: +16166: ; +16166: +16166: extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, +16166: size_t __destlen) noexcept (true); +16166: extern wchar_t *__wcpcpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcpcpy") +16166: +16166: ; +16166: +16166: extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, size_t __n, +16166: size_t __destlen) noexcept (true); +16166: extern wchar_t *__wcsncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncpy") +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: __attribute__((__warning__ ("wcsncpy called with length bigger than size of destination " "buffer"))) +16166: ; +16166: +16166: extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, size_t __n, +16166: size_t __destlen) noexcept (true); +16166: +16166: extern wchar_t *__wcpncpy_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcpncpy") +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: __attribute__((__warning__ ("wcpncpy called with length bigger than size of destination " "buffer"))) +16166: ; +16166: +16166: extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, +16166: size_t __destlen) noexcept (true); +16166: extern wchar_t *__wcscat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src) noexcept (true) __asm__ ("" "wcscat") +16166: +16166: ; +16166: +16166: extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, +16166: const wchar_t *__restrict __src, +16166: size_t __n, size_t __destlen) noexcept (true); +16166: extern wchar_t *__wcsncat_alias (wchar_t *__restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) __asm__ ("" "wcsncat") +16166: +16166: +16166: ; +16166: +16166: extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, +16166: int __flag, size_t __s_len, +16166: const wchar_t *__restrict __format, ...) +16166: noexcept (true) ; +16166: extern int __swprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) __asm__ ("" "swprintf") +16166: +16166: +16166: ; +16166: +16166: extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, +16166: int __flag, size_t __s_len, +16166: const wchar_t *__restrict __format, +16166: __gnuc_va_list __arg) +16166: noexcept (true) ; +16166: extern int __vswprintf_alias (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) __asm__ ("" "vswprintf") +16166: +16166: +16166: ; +16166: +16166: +16166: +16166: +16166: extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, +16166: const wchar_t *__restrict __format, ...); +16166: extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, +16166: ...); +16166: extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, +16166: const wchar_t *__restrict __format, +16166: __gnuc_va_list __ap); +16166: extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, +16166: __gnuc_va_list __ap); +16166: +16166: +16166: +16166: extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, +16166: __FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); +16166: extern wchar_t *__fgetws_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws") +16166: +16166: __attribute__ ((__warn_unused_result__)); +16166: extern wchar_t *__fgetws_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws called with bigger size than length " "of destination buffer"))) +16166: ; +16166: +16166: +16166: +16166: extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, +16166: int __n, __FILE *__restrict __stream) +16166: __attribute__ ((__warn_unused_result__)); +16166: extern wchar_t *__fgetws_unlocked_alias (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) __asm__ ("" "fgetws_unlocked") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)); +16166: extern wchar_t *__fgetws_unlocked_chk_warn (wchar_t *__restrict __s, size_t __size, int __n, __FILE *__restrict __stream) __asm__ ("" "__fgetws_unlocked_chk") +16166: +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgetws_unlocked called with bigger size than length " "of destination buffer"))) +16166: ; +16166: +16166: +16166: +16166: extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, +16166: mbstate_t *__restrict __p, +16166: size_t __buflen) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: extern size_t __wcrtomb_alias (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcrtomb") +16166: +16166: __attribute__ ((__warn_unused_result__)); +16166: +16166: extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, +16166: const char **__restrict __src, +16166: size_t __len, mbstate_t *__restrict __ps, +16166: size_t __dstlen) noexcept (true); +16166: extern size_t __mbsrtowcs_alias (wchar_t *__restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "mbsrtowcs") +16166: +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: +16166: __attribute__((__warning__ ("mbsrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) +16166: ; +16166: +16166: extern size_t __wcsrtombs_chk (char *__restrict __dst, +16166: const wchar_t **__restrict __src, +16166: size_t __len, mbstate_t *__restrict __ps, +16166: size_t __dstlen) noexcept (true); +16166: extern size_t __wcsrtombs_alias (char *__restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) __asm__ ("" "wcsrtombs") +16166: +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: +16166: __attribute__((__warning__ ("wcsrtombs called with dst buffer smaller than len"))); +16166: +16166: +16166: +16166: extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, +16166: const char **__restrict __src, size_t __nmc, +16166: size_t __len, mbstate_t *__restrict __ps, +16166: size_t __dstlen) noexcept (true); +16166: 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") +16166: +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: +16166: __attribute__((__warning__ ("mbsnrtowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) +16166: ; +16166: +16166: extern size_t __wcsnrtombs_chk (char *__restrict __dst, +16166: const wchar_t **__restrict __src, +16166: size_t __nwc, size_t __len, +16166: mbstate_t *__restrict __ps, size_t __dstlen) +16166: noexcept (true); +16166: 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") +16166: +16166: +16166: +16166: ; +16166: 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") +16166: +16166: +16166: +16166: +16166: +16166: __attribute__((__warning__ ("wcsnrtombs called with dst buffer smaller than len"))); +16166: +16166: +16166: +16166: +16166: extern size_t __wcslcpy_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, +16166: size_t __destlen) noexcept (true); +16166: extern size_t __wcslcpy_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcpy") +16166: +16166: ; +16166: +16166: extern size_t __wcslcat_chk (wchar_t *__dest, const wchar_t *__src, size_t __n, +16166: size_t __destlen) noexcept (true); +16166: extern size_t __wcslcat_alias (wchar_t *__dest, const wchar_t *__src, size_t __n) noexcept (true) __asm__ ("" "wcslcat") +16166: +16166: ; +16166: # 1060 "/usr/include/wchar.h" 2 3 4 +16166: # 1070 "/usr/include/wchar.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wmemcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_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_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wmemmove (wchar_t * __s1, const wchar_t *__s2, size_t __n) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_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_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmemmove_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmemmove_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wmempcpy (wchar_t * __restrict __s1, const wchar_t *__restrict __s2, size_t __n) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__s1, 0)) && (__builtin_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_object_size (__s1, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s1, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t)))) ? __wmempcpy_chk_warn (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))) : __wmempcpy_chk (__s1, __s2, __n, (__builtin_object_size (__s1, 0)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wmemset (wchar_t * __s, wchar_t __c, size_t __n) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__s, 0)) && (__builtin_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_object_size (__s, 0))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_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_object_size (__s, 0)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__s, 0)) / (sizeof (wchar_t)))) ? __wmemset_chk_warn (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))) : __wmemset_chk (__s, __c, __n, (__builtin_object_size (__s, 0)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wcscpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__dest, 2 > 1); +16166: if (__sz != (size_t) -1) +16166: return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); +16166: return __wcscpy_alias (__dest, __src); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wcpcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__dest, 2 > 1); +16166: if (__sz != (size_t) -1) +16166: return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); +16166: return __wcpcpy_alias (__dest, __src); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wcsncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 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_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcsncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcsncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wcpncpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__dest, 2 > 1)) && (__builtin_object_size (__dest, 2 > 1)) == (unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__n)) <= ((__builtin_object_size (__dest, 2 > 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_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__n)) <= (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t)))) ? __wcpncpy_chk_warn (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))) : __wcpncpy_chk (__dest, __src, __n, (__builtin_object_size (__dest, 2 > 1)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wcscat (wchar_t * __restrict __dest, const wchar_t *__restrict __src) noexcept (true) +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__dest, 2 > 1); +16166: if (__sz != (size_t) -1) +16166: return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); +16166: return __wcscat_alias (__dest, __src); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) wchar_t * +16166: __attribute__ ((__leaf__)) wcsncat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__dest, 2 > 1); +16166: if (__sz != (size_t) -1) +16166: return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); +16166: return __wcsncat_alias (__dest, __src, __n); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) wcslcpy (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +16166: && (!__builtin_constant_p (__n +16166: > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)) +16166: || __n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))) +16166: return __wcslcpy_chk (__dest, __src, __n, +16166: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); +16166: return __wcslcpy_alias (__dest, __src, __n); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) wcslcat (wchar_t * __restrict __dest, const wchar_t *__restrict __src, size_t __n) noexcept (true) +16166: +16166: { +16166: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +16166: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1) +16166: / sizeof (wchar_t)) +16166: || __n > __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t))) +16166: return __wcslcat_chk (__dest, __src, __n, +16166: __builtin_object_size (__dest, 2 > 1) / sizeof (wchar_t)); +16166: return __wcslcat_alias (__dest, __src, __n); +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...) noexcept (true) +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__s, 2 > 1); +16166: if (__sz != (size_t) -1 || 2 > 1) +16166: return __swprintf_chk (__s, __n, 2 - 1, +16166: __sz / sizeof (wchar_t), __fmt, __builtin_va_arg_pack ()); +16166: return __swprintf_alias (__s, __n, __fmt, __builtin_va_arg_pack ()); +16166: } +16166: # 205 "/usr/include/arm-linux-gnueabihf/bits/wchar2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__s, 2 > 1); +16166: if (__sz != (size_t) -1 || 2 > 1) +16166: return __vswprintf_chk (__s, __n, 2 - 1, +16166: __sz / sizeof (wchar_t), __fmt, __ap); +16166: return __vswprintf_alias (__s, __n, __fmt, __ap); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: wprintf (const wchar_t *__restrict __fmt, ...) +16166: { +16166: return __wprintf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) +16166: { +16166: return __fwprintf_chk (__stream, 2 - 1, __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) +16166: { +16166: return __vwprintf_chk (2 - 1, __fmt, __ap); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: vfwprintf (__FILE *__restrict __stream, +16166: const wchar_t *__restrict __fmt, __gnuc_va_list __ap) +16166: { +16166: return __vfwprintf_chk (__stream, 2 - 1, __fmt, __ap); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * +16166: fgetws (wchar_t * __restrict __s, int __n, +16166: __FILE *__restrict __stream) +16166: +16166: +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__s, 2 > 1); +16166: 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))))))) +16166: return __fgetws_alias (__s, __n, __stream); +16166: +16166: 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))))) +16166: return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); +16166: +16166: return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) wchar_t * +16166: fgetws_unlocked (wchar_t * __restrict __s, +16166: int __n, __FILE *__restrict __stream) +16166: +16166: +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__s, 2 > 1); +16166: 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))))))) +16166: return __fgetws_unlocked_alias (__s, __n, __stream); +16166: +16166: 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))))) +16166: return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, +16166: __stream); +16166: +16166: return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t +16166: __attribute__ ((__leaf__)) wcrtomb (char * __restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps) noexcept (true) +16166: +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 +16166: && 16 > __builtin_object_size (__s, 2 > 1)) +16166: return __wcrtomb_chk (__s, __wchar, __ps, __builtin_object_size (__s, 2 > 1)); +16166: return __wcrtomb_alias (__s, __wchar, __ps); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) mbsrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsrtowcs_chk (__dst, __src, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) wcsrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsrtombs_chk (__dst, __src, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) mbsnrtowcs (wchar_t * __restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) +16166: +16166: ; +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) wcsnrtombs (char * __restrict __dst, const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)) : __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __builtin_object_size (__dst, 2 > 1)))) +16166: +16166: ; +16166: } +16166: # 1071 "/usr/include/wchar.h" 2 3 4 +16166: +16166: +16166: } +16166: # 45 "/usr/include/c++/14/cwchar" 2 3 +16166: # 62 "/usr/include/c++/14/cwchar" 3 +16166: namespace std +16166: { +16166: using ::mbstate_t; +16166: } +16166: # 135 "/usr/include/c++/14/cwchar" 3 +16166: extern "C++" +16166: { +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: using ::wint_t; +16166: +16166: using ::btowc; +16166: using ::fgetwc; +16166: using ::fgetws; +16166: using ::fputwc; +16166: using ::fputws; +16166: using ::fwide; +16166: using ::fwprintf; +16166: using ::fwscanf; +16166: using ::getwc; +16166: using ::getwchar; +16166: using ::mbrlen; +16166: using ::mbrtowc; +16166: using ::mbsinit; +16166: using ::mbsrtowcs; +16166: using ::putwc; +16166: using ::putwchar; +16166: +16166: using ::swprintf; +16166: +16166: using ::swscanf; +16166: using ::ungetwc; +16166: using ::vfwprintf; +16166: +16166: using ::vfwscanf; +16166: +16166: +16166: using ::vswprintf; +16166: +16166: +16166: using ::vswscanf; +16166: +16166: using ::vwprintf; +16166: +16166: using ::vwscanf; +16166: +16166: using ::wcrtomb; +16166: using ::wcscat; +16166: using ::wcscmp; +16166: using ::wcscoll; +16166: using ::wcscpy; +16166: using ::wcscspn; +16166: using ::wcsftime; +16166: using ::wcslen; +16166: using ::wcsncat; +16166: using ::wcsncmp; +16166: using ::wcsncpy; +16166: using ::wcsrtombs; +16166: using ::wcsspn; +16166: using ::wcstod; +16166: +16166: using ::wcstof; +16166: +16166: using ::wcstok; +16166: using ::wcstol; +16166: using ::wcstoul; +16166: using ::wcsxfrm; +16166: using ::wctob; +16166: using ::wmemcmp; +16166: using ::wmemcpy; +16166: using ::wmemmove; +16166: using ::wmemset; +16166: using ::wprintf; +16166: using ::wscanf; +16166: using ::wcschr; +16166: using ::wcspbrk; +16166: using ::wcsrchr; +16166: using ::wcsstr; +16166: using ::wmemchr; +16166: # 234 "/usr/include/c++/14/cwchar" 3 +16166: +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace __gnu_cxx +16166: { +16166: +16166: +16166: +16166: +16166: +16166: using ::wcstold; +16166: # 260 "/usr/include/c++/14/cwchar" 3 +16166: using ::wcstoll; +16166: using ::wcstoull; +16166: +16166: } +16166: +16166: namespace std +16166: { +16166: using ::__gnu_cxx::wcstold; +16166: using ::__gnu_cxx::wcstoll; +16166: using ::__gnu_cxx::wcstoull; +16166: } +16166: # 280 "/usr/include/c++/14/cwchar" 3 +16166: namespace std +16166: { +16166: +16166: using std::wcstof; +16166: +16166: +16166: using std::vfwscanf; +16166: +16166: +16166: using std::vswscanf; +16166: +16166: +16166: using std::vwscanf; +16166: +16166: +16166: +16166: using std::wcstold; +16166: using std::wcstoll; +16166: using std::wcstoull; +16166: +16166: } +16166: # 41 "/usr/include/c++/14/bits/postypes.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 62 "/usr/include/c++/14/bits/postypes.h" 3 +16166: typedef long long int streamoff; +16166: +16166: +16166: +16166: +16166: +16166: typedef ptrdiff_t streamsize; +16166: # 81 "/usr/include/c++/14/bits/postypes.h" 3 +16166: template +16166: class fpos +16166: { +16166: private: +16166: streamoff _M_off; +16166: _StateT _M_state; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: fpos() +16166: : _M_off(0), _M_state() { } +16166: # 103 "/usr/include/c++/14/bits/postypes.h" 3 +16166: fpos(streamoff __off) +16166: : _M_off(__off), _M_state() { } +16166: +16166: +16166: fpos(const fpos&) = default; +16166: fpos& operator=(const fpos&) = default; +16166: ~fpos() = default; +16166: +16166: +16166: +16166: operator streamoff() const { return _M_off; } +16166: +16166: +16166: void +16166: state(_StateT __st) +16166: { _M_state = __st; } +16166: +16166: +16166: _StateT +16166: state() const +16166: { return _M_state; } +16166: +16166: +16166: +16166: +16166: +16166: fpos& +16166: operator+=(streamoff __off) +16166: { +16166: _M_off += __off; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: fpos& +16166: operator-=(streamoff __off) +16166: { +16166: _M_off -= __off; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: fpos +16166: operator+(streamoff __off) const +16166: { +16166: fpos __pos(*this); +16166: __pos += __off; +16166: return __pos; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: fpos +16166: operator-(streamoff __off) const +16166: { +16166: fpos __pos(*this); +16166: __pos -= __off; +16166: return __pos; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: streamoff +16166: operator-(const fpos& __other) const +16166: { return _M_off - __other._M_off; } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) +16166: { return streamoff(__lhs) == streamoff(__rhs); } +16166: +16166: template +16166: inline bool +16166: operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) +16166: { return streamoff(__lhs) != streamoff(__rhs); } +16166: +16166: +16166: +16166: +16166: +16166: typedef fpos streampos; +16166: +16166: typedef fpos wstreampos; +16166: # 215 "/usr/include/c++/14/bits/postypes.h" 3 +16166: typedef fpos u16streampos; +16166: +16166: typedef fpos u32streampos; +16166: +16166: +16166: +16166: } +16166: # 43 "/usr/include/c++/14/iosfwd" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 76 "/usr/include/c++/14/iosfwd" 3 +16166: class ios_base; +16166: +16166: template > +16166: class basic_ios; +16166: +16166: template > +16166: class basic_streambuf; +16166: +16166: template > +16166: class basic_istream; +16166: +16166: template > +16166: class basic_ostream; +16166: +16166: template > +16166: class basic_iostream; +16166: +16166: +16166: namespace __cxx11 { +16166: +16166: template, +16166: typename _Alloc = allocator<_CharT> > +16166: class basic_stringbuf; +16166: +16166: template, +16166: typename _Alloc = allocator<_CharT> > +16166: class basic_istringstream; +16166: +16166: template, +16166: typename _Alloc = allocator<_CharT> > +16166: class basic_ostringstream; +16166: +16166: template, +16166: typename _Alloc = allocator<_CharT> > +16166: class basic_stringstream; +16166: +16166: } +16166: +16166: template > +16166: class basic_filebuf; +16166: +16166: template > +16166: class basic_ifstream; +16166: +16166: template > +16166: class basic_ofstream; +16166: +16166: template > +16166: class basic_fstream; +16166: +16166: template > +16166: class istreambuf_iterator; +16166: +16166: template > +16166: class ostreambuf_iterator; +16166: +16166: +16166: +16166: typedef basic_ios ios; +16166: +16166: +16166: typedef basic_streambuf streambuf; +16166: +16166: +16166: typedef basic_istream istream; +16166: +16166: +16166: typedef basic_ostream ostream; +16166: +16166: +16166: typedef basic_iostream iostream; +16166: +16166: +16166: typedef basic_stringbuf stringbuf; +16166: +16166: +16166: typedef basic_istringstream istringstream; +16166: +16166: +16166: typedef basic_ostringstream ostringstream; +16166: +16166: +16166: typedef basic_stringstream stringstream; +16166: +16166: +16166: typedef basic_filebuf filebuf; +16166: +16166: +16166: typedef basic_ifstream ifstream; +16166: +16166: +16166: typedef basic_ofstream ofstream; +16166: +16166: +16166: typedef basic_fstream fstream; +16166: +16166: +16166: +16166: typedef basic_ios wios; +16166: +16166: +16166: typedef basic_streambuf wstreambuf; +16166: +16166: +16166: typedef basic_istream wistream; +16166: +16166: +16166: typedef basic_ostream wostream; +16166: +16166: +16166: typedef basic_iostream wiostream; +16166: +16166: +16166: typedef basic_stringbuf wstringbuf; +16166: +16166: +16166: typedef basic_istringstream wistringstream; +16166: +16166: +16166: typedef basic_ostringstream wostringstream; +16166: +16166: +16166: typedef basic_stringstream wstringstream; +16166: +16166: +16166: typedef basic_filebuf wfilebuf; +16166: +16166: +16166: typedef basic_ifstream wifstream; +16166: +16166: +16166: typedef basic_ofstream wofstream; +16166: +16166: +16166: typedef basic_fstream wfstream; +16166: # 255 "/usr/include/c++/14/iosfwd" 3 +16166: +16166: } +16166: # 53 "/usr/include/c++/14/bits/shared_ptr.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/shared_ptr_base.h" 1 3 +16166: # 53 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: # 1 "/usr/include/c++/14/bits/allocated_ptr.h" 1 3 +16166: # 40 "/usr/include/c++/14/bits/allocated_ptr.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: struct __allocated_ptr +16166: { +16166: using pointer = typename allocator_traits<_Alloc>::pointer; +16166: using value_type = typename allocator_traits<_Alloc>::value_type; +16166: +16166: +16166: __allocated_ptr(_Alloc& __a, pointer __ptr) noexcept +16166: : _M_alloc(std::__addressof(__a)), _M_ptr(__ptr) +16166: { } +16166: +16166: +16166: template>> +16166: __allocated_ptr(_Alloc& __a, _Ptr __ptr) +16166: : _M_alloc(std::__addressof(__a)), +16166: _M_ptr(pointer_traits::pointer_to(*__ptr)) +16166: { } +16166: +16166: +16166: __allocated_ptr(__allocated_ptr&& __gd) noexcept +16166: : _M_alloc(__gd._M_alloc), _M_ptr(__gd._M_ptr) +16166: { __gd._M_ptr = nullptr; } +16166: +16166: +16166: ~__allocated_ptr() +16166: { +16166: if (_M_ptr != nullptr) +16166: std::allocator_traits<_Alloc>::deallocate(*_M_alloc, _M_ptr, 1); +16166: } +16166: +16166: +16166: __allocated_ptr& +16166: operator=(std::nullptr_t) noexcept +16166: { +16166: _M_ptr = nullptr; +16166: return *this; +16166: } +16166: +16166: +16166: value_type* get() { return std::__to_address(_M_ptr); } +16166: +16166: private: +16166: _Alloc* _M_alloc; +16166: pointer _M_ptr; +16166: }; +16166: +16166: +16166: template +16166: __allocated_ptr<_Alloc> +16166: __allocate_guarded(_Alloc& __a) +16166: { +16166: return { __a, std::allocator_traits<_Alloc>::allocate(__a, 1) }; +16166: } +16166: +16166: +16166: +16166: } +16166: # 54 "/usr/include/c++/14/bits/shared_ptr_base.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/ext/atomicity.h" 1 3 +16166: # 32 "/usr/include/c++/14/ext/atomicity.h" 3 +16166: +16166: # 33 "/usr/include/c++/14/ext/atomicity.h" 3 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 1 3 +16166: # 30 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 3 +16166: #pragma GCC visibility push(default) +16166: # 157 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 3 +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 1 3 +16166: # 35 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +16166: # 1 "/usr/include/pthread.h" 1 3 4 +16166: # 22 "/usr/include/pthread.h" 3 4 +16166: # 1 "/usr/include/sched.h" 1 3 4 +16166: # 29 "/usr/include/sched.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 30 "/usr/include/sched.h" 2 3 4 +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/time_t.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __time64_t time_t; +16166: # 32 "/usr/include/sched.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 1 3 4 +16166: # 35 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/endianness.h" 1 3 4 +16166: # 36 "/usr/include/arm-linux-gnueabihf/bits/endian.h" 2 3 4 +16166: # 7 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: struct timespec +16166: { +16166: +16166: __time64_t tv_sec; +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timespec.h" 3 4 +16166: long int tv_nsec; +16166: int: 32; +16166: +16166: +16166: }; +16166: # 33 "/usr/include/sched.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: typedef __pid_t pid_t; +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 1 3 4 +16166: # 80 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_sched_param.h" 3 4 +16166: struct sched_param +16166: { +16166: int sched_priority; +16166: }; +16166: # 81 "/usr/include/arm-linux-gnueabihf/bits/sched.h" 2 3 4 +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: extern int clone (int (*__fn) (void *__arg), void *__child_stack, +16166: int __flags, void *__arg, ...) noexcept (true); +16166: +16166: +16166: extern int unshare (int __flags) noexcept (true); +16166: +16166: +16166: extern int sched_getcpu (void) noexcept (true); +16166: +16166: +16166: extern int getcpu (unsigned int *, unsigned int *) noexcept (true); +16166: +16166: +16166: extern int setns (int __fd, int __nstype) noexcept (true); +16166: +16166: +16166: } +16166: # 44 "/usr/include/sched.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 1 3 4 +16166: # 32 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 +16166: typedef unsigned long int __cpu_mask; +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef struct +16166: { +16166: __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; +16166: } cpu_set_t; +16166: # 115 "/usr/include/arm-linux-gnueabihf/bits/cpu-set.h" 3 4 +16166: extern "C" { +16166: +16166: extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) +16166: noexcept (true); +16166: extern cpu_set_t *__sched_cpualloc (size_t __count) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: extern void __sched_cpufree (cpu_set_t *__set) noexcept (true); +16166: +16166: } +16166: # 45 "/usr/include/sched.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C" { +16166: +16166: +16166: extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) +16166: noexcept (true); +16166: +16166: +16166: extern int sched_getparam (__pid_t __pid, struct sched_param *__param) noexcept (true); +16166: +16166: +16166: extern int sched_setscheduler (__pid_t __pid, int __policy, +16166: const struct sched_param *__param) noexcept (true); +16166: +16166: +16166: extern int sched_getscheduler (__pid_t __pid) noexcept (true); +16166: +16166: +16166: extern int sched_yield (void) noexcept (true); +16166: +16166: +16166: extern int sched_get_priority_max (int __algorithm) noexcept (true); +16166: +16166: +16166: extern int sched_get_priority_min (int __algorithm) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) noexcept (true) __asm__ ("" "__sched_rr_get_interval64") +16166: +16166: ; +16166: # 130 "/usr/include/sched.h" 3 4 +16166: extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, +16166: const cpu_set_t *__cpuset) noexcept (true); +16166: +16166: +16166: extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, +16166: cpu_set_t *__cpuset) noexcept (true); +16166: +16166: +16166: } +16166: # 23 "/usr/include/pthread.h" 2 3 4 +16166: # 1 "/usr/include/time.h" 1 3 4 +16166: # 29 "/usr/include/time.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 30 "/usr/include/time.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/time.h" 1 3 4 +16166: # 73 "/usr/include/arm-linux-gnueabihf/bits/time.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 1 3 4 +16166: # 22 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_timeval.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct timeval +16166: { +16166: +16166: __time64_t tv_sec; +16166: __suseconds64_t tv_usec; +16166: +16166: +16166: +16166: +16166: }; +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 2 3 4 +16166: +16166: +16166: +16166: struct timex +16166: { +16166: +16166: unsigned int modes; +16166: int :32; +16166: long long offset; +16166: long long freq; +16166: long long maxerror; +16166: long long esterror; +16166: int status; +16166: int :32; +16166: long long constant; +16166: long long precision; +16166: long long tolerance; +16166: struct timeval time; +16166: long long tick; +16166: long long ppsfreq; +16166: long long jitter; +16166: int shift; +16166: int :32; +16166: long long stabil; +16166: long long jitcnt; +16166: long long calcnt; +16166: long long errcnt; +16166: long long stbcnt; +16166: +16166: int tai; +16166: +16166: int :32; int :32; int :32; int :32; +16166: int :32; int :32; int :32; int :32; +16166: int :32; int :32; int :32; +16166: # 85 "/usr/include/arm-linux-gnueabihf/bits/timex.h" 3 4 +16166: }; +16166: # 74 "/usr/include/arm-linux-gnueabihf/bits/time.h" 2 3 4 +16166: +16166: extern "C" { +16166: +16166: +16166: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) noexcept (true) __asm__ ("" "__clock_adjtime64") +16166: +16166: __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 34 "/usr/include/time.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clock_t.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __clock_t clock_t; +16166: # 38 "/usr/include/time.h" 2 3 4 +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_tm.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct tm +16166: { +16166: int tm_sec; +16166: int tm_min; +16166: int tm_hour; +16166: int tm_mday; +16166: int tm_mon; +16166: int tm_year; +16166: int tm_wday; +16166: int tm_yday; +16166: int tm_isdst; +16166: +16166: +16166: long int tm_gmtoff; +16166: const char *tm_zone; +16166: +16166: +16166: +16166: +16166: }; +16166: # 40 "/usr/include/time.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/clockid_t.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __clockid_t clockid_t; +16166: # 47 "/usr/include/time.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/timer_t.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __timer_t timer_t; +16166: # 48 "/usr/include/time.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_itimerspec.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct itimerspec +16166: { +16166: struct timespec it_interval; +16166: struct timespec it_value; +16166: }; +16166: # 49 "/usr/include/time.h" 2 3 4 +16166: struct sigevent; +16166: # 68 "/usr/include/time.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: extern clock_t clock (void) noexcept (true); +16166: # 85 "/usr/include/time.h" 3 4 +16166: extern time_t time (time_t *__timer) noexcept (true) __asm__ ("" "__time64"); +16166: extern double difftime (time_t __time1, time_t __time0) noexcept (true) __asm__ ("" "__difftime64") +16166: ; +16166: extern time_t mktime (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); +16166: # 99 "/usr/include/time.h" 3 4 +16166: extern size_t strftime (char *__restrict __s, size_t __maxsize, +16166: const char *__restrict __format, +16166: const struct tm *__restrict __tp) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3, 4))); +16166: +16166: +16166: +16166: +16166: extern char *strptime (const char *__restrict __s, +16166: const char *__restrict __fmt, struct tm *__tp) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern size_t strftime_l (char *__restrict __s, size_t __maxsize, +16166: const char *__restrict __format, +16166: const struct tm *__restrict __tp, +16166: locale_t __loc) noexcept (true); +16166: +16166: +16166: +16166: extern char *strptime_l (const char *__restrict __s, +16166: const char *__restrict __fmt, struct tm *__tp, +16166: locale_t __loc) noexcept (true); +16166: # 140 "/usr/include/time.h" 3 4 +16166: extern struct tm*gmtime (const time_t *__timer) noexcept (true) __asm__ ("" "__gmtime64"); +16166: extern struct tm *localtime (const time_t *__timer) noexcept (true) __asm__ ("" "__localtime64") +16166: ; +16166: # 163 "/usr/include/time.h" 3 4 +16166: extern struct tm*gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__gmtime64_r") +16166: +16166: ; +16166: +16166: extern struct tm*localtime_r (const time_t *__restrict __t, struct tm *__restrict __tp) noexcept (true) __asm__ ("" "__localtime64_r") +16166: +16166: ; +16166: # 179 "/usr/include/time.h" 3 4 +16166: extern char *asctime (const struct tm *__tp) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *ctime (const time_t *__timer) noexcept (true) __asm__ ("" "__ctime64"); +16166: # 197 "/usr/include/time.h" 3 4 +16166: extern char *asctime_r (const struct tm *__restrict __tp, +16166: char *__restrict __buf) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) noexcept (true) __asm__ ("" "__ctime64_r") +16166: ; +16166: # 217 "/usr/include/time.h" 3 4 +16166: extern char *__tzname[2]; +16166: extern int __daylight; +16166: extern long int __timezone; +16166: +16166: +16166: +16166: +16166: extern char *tzname[2]; +16166: +16166: +16166: +16166: extern void tzset (void) noexcept (true); +16166: +16166: +16166: +16166: extern int daylight; +16166: extern long int timezone; +16166: # 249 "/usr/include/time.h" 3 4 +16166: extern time_t timegm (struct tm *__tp) noexcept (true) __asm__ ("" "__timegm64"); +16166: # 266 "/usr/include/time.h" 3 4 +16166: extern time_t timelocal (struct tm *__tp) noexcept (true) __asm__ ("" "__mktime64"); +16166: +16166: +16166: +16166: +16166: extern int dysize (int __year) noexcept (true) __attribute__ ((__const__)); +16166: # 296 "/usr/include/time.h" 3 4 +16166: extern int nanosleep (const struct timespec *__requested_time, struct timespec *__remaining) __asm__ ("" "__nanosleep64") +16166: +16166: ; +16166: extern int clock_getres (clockid_t __clock_id, struct timespec *__res) noexcept (true) __asm__ ("" "__clock_getres64") +16166: +16166: ; +16166: extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_gettime64") +16166: +16166: __attribute__ ((__nonnull__ (2))); +16166: extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) noexcept (true) __asm__ ("" "__clock_settime64") +16166: +16166: __attribute__ ((__nonnull__ (2))); +16166: # 328 "/usr/include/time.h" 3 4 +16166: extern int clock_nanosleep (clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem) __asm__ ("" "__clock_nanosleep_time64") +16166: +16166: +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int timer_create (clockid_t __clock_id, +16166: struct sigevent *__restrict __evp, +16166: timer_t *__restrict __timerid) noexcept (true); +16166: +16166: +16166: extern int timer_delete (timer_t __timerid) noexcept (true); +16166: # 361 "/usr/include/time.h" 3 4 +16166: extern int timer_settime (timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) noexcept (true) __asm__ ("" "__timer_settime64") +16166: +16166: +16166: ; +16166: +16166: extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) noexcept (true) __asm__ ("" "__timer_gettime64") +16166: +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int timer_getoverrun (timer_t __timerid) noexcept (true); +16166: # 387 "/usr/include/time.h" 3 4 +16166: extern int timespec_get (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_get64") +16166: __attribute__ ((__nonnull__ (1))); +16166: # 403 "/usr/include/time.h" 3 4 +16166: extern int timespec_getres (struct timespec *__ts, int __base) noexcept (true) __asm__ ("" "__timespec_getres64") +16166: +16166: ; +16166: # 425 "/usr/include/time.h" 3 4 +16166: extern int getdate_err; +16166: # 434 "/usr/include/time.h" 3 4 +16166: extern struct tm *getdate (const char *__string); +16166: # 448 "/usr/include/time.h" 3 4 +16166: extern int getdate_r (const char *__restrict __string, +16166: struct tm *__restrict __resbufp); +16166: +16166: +16166: } +16166: # 24 "/usr/include/pthread.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 1 3 4 +16166: # 44 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes-arch.h" 2 3 4 +16166: # 45 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 1 3 4 +16166: # 25 "/usr/include/arm-linux-gnueabihf/bits/atomic_wide_counter.h" 3 4 +16166: typedef union +16166: { +16166: __extension__ unsigned long long int __value64; +16166: struct +16166: { +16166: unsigned int __low; +16166: unsigned int __high; +16166: } __value32; +16166: } __atomic_wide_counter; +16166: # 47 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: typedef struct __pthread_internal_list +16166: { +16166: struct __pthread_internal_list *__prev; +16166: struct __pthread_internal_list *__next; +16166: } __pthread_list_t; +16166: +16166: typedef struct __pthread_internal_slist +16166: { +16166: struct __pthread_internal_slist *__next; +16166: } __pthread_slist_t; +16166: # 76 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 +16166: struct __pthread_mutex_s +16166: { +16166: int __lock ; +16166: unsigned int __count; +16166: int __owner; +16166: # 58 "/usr/include/arm-linux-gnueabihf/bits/struct_mutex.h" 3 4 +16166: int __kind; +16166: +16166: unsigned int __nusers; +16166: +16166: +16166: +16166: +16166: +16166: +16166: __extension__ union +16166: { +16166: int __spins; +16166: __pthread_slist_t __list; +16166: }; +16166: +16166: +16166: }; +16166: # 77 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +16166: # 89 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 1 3 4 +16166: # 29 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 +16166: struct __pthread_rwlock_arch_t +16166: { +16166: unsigned int __readers; +16166: unsigned int __writers; +16166: unsigned int __wrphase_futex; +16166: unsigned int __writers_futex; +16166: unsigned int __pad3; +16166: unsigned int __pad4; +16166: # 45 "/usr/include/arm-linux-gnueabihf/bits/struct_rwlock.h" 3 4 +16166: unsigned char __flags; +16166: unsigned char __shared; +16166: unsigned char __pad1; +16166: unsigned char __pad2; +16166: +16166: int __cur_writer; +16166: }; +16166: # 90 "/usr/include/arm-linux-gnueabihf/bits/thread-shared-types.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: struct __pthread_cond_s +16166: { +16166: __atomic_wide_counter __wseq; +16166: __atomic_wide_counter __g1_start; +16166: unsigned int __g_refs[2] ; +16166: unsigned int __g_size[2]; +16166: unsigned int __g1_orig_size; +16166: unsigned int __wrefs; +16166: unsigned int __g_signals[2]; +16166: }; +16166: +16166: typedef unsigned int __tss_t; +16166: typedef unsigned long int __thrd_t; +16166: +16166: typedef struct +16166: { +16166: int __data ; +16166: } __once_flag; +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/pthreadtypes.h" 2 3 4 +16166: +16166: +16166: +16166: typedef unsigned long int pthread_t; +16166: +16166: +16166: +16166: +16166: typedef union +16166: { +16166: char __size[4]; +16166: int __align; +16166: } pthread_mutexattr_t; +16166: +16166: +16166: +16166: +16166: typedef union +16166: { +16166: char __size[4]; +16166: int __align; +16166: } pthread_condattr_t; +16166: +16166: +16166: +16166: typedef unsigned int pthread_key_t; +16166: +16166: +16166: +16166: typedef int pthread_once_t; +16166: +16166: +16166: union pthread_attr_t +16166: { +16166: char __size[36]; +16166: long int __align; +16166: }; +16166: +16166: typedef union pthread_attr_t pthread_attr_t; +16166: +16166: +16166: +16166: +16166: typedef union +16166: { +16166: struct __pthread_mutex_s __data; +16166: char __size[24]; +16166: long int __align; +16166: } pthread_mutex_t; +16166: +16166: +16166: typedef union +16166: { +16166: struct __pthread_cond_s __data; +16166: char __size[48]; +16166: __extension__ long long int __align; +16166: } pthread_cond_t; +16166: +16166: +16166: +16166: +16166: +16166: typedef union +16166: { +16166: struct __pthread_rwlock_arch_t __data; +16166: char __size[32]; +16166: long int __align; +16166: } pthread_rwlock_t; +16166: +16166: typedef union +16166: { +16166: char __size[8]; +16166: long int __align; +16166: } pthread_rwlockattr_t; +16166: +16166: +16166: +16166: +16166: +16166: typedef volatile int pthread_spinlock_t; +16166: +16166: +16166: +16166: +16166: typedef union +16166: { +16166: char __size[20]; +16166: long int __align; +16166: } pthread_barrier_t; +16166: +16166: typedef union +16166: { +16166: char __size[4]; +16166: int __align; +16166: } pthread_barrierattr_t; +16166: # 27 "/usr/include/pthread.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 1 3 4 +16166: # 33 "/usr/include/arm-linux-gnueabihf/bits/setjmp.h" 3 4 +16166: typedef int __jmp_buf[64] __attribute__((__aligned__ (8))); +16166: # 28 "/usr/include/pthread.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 29 "/usr/include/pthread.h" 2 3 4 +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__sigset_t.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: typedef struct +16166: { +16166: unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; +16166: } __sigset_t; +16166: # 31 "/usr/include/pthread.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 1 3 4 +16166: # 26 "/usr/include/arm-linux-gnueabihf/bits/types/struct___jmp_buf_tag.h" 3 4 +16166: struct __jmp_buf_tag +16166: { +16166: +16166: +16166: +16166: +16166: __jmp_buf __jmpbuf; +16166: int __mask_was_saved; +16166: __sigset_t __saved_mask; +16166: }; +16166: # 32 "/usr/include/pthread.h" 2 3 4 +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/pthread_stack_min-dynamic.h" 3 4 +16166: extern "C" { +16166: extern long int __sysconf (int __name) noexcept (true); +16166: } +16166: # 34 "/usr/include/pthread.h" 2 3 4 +16166: +16166: +16166: +16166: enum +16166: { +16166: PTHREAD_CREATE_JOINABLE, +16166: +16166: PTHREAD_CREATE_DETACHED +16166: +16166: }; +16166: +16166: +16166: +16166: enum +16166: { +16166: PTHREAD_MUTEX_TIMED_NP, +16166: PTHREAD_MUTEX_RECURSIVE_NP, +16166: PTHREAD_MUTEX_ERRORCHECK_NP, +16166: PTHREAD_MUTEX_ADAPTIVE_NP +16166: +16166: , +16166: PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, +16166: PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, +16166: PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, +16166: PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL +16166: +16166: +16166: +16166: , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: enum +16166: { +16166: PTHREAD_MUTEX_STALLED, +16166: PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, +16166: PTHREAD_MUTEX_ROBUST, +16166: PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: enum +16166: { +16166: PTHREAD_PRIO_NONE, +16166: PTHREAD_PRIO_INHERIT, +16166: PTHREAD_PRIO_PROTECT +16166: }; +16166: # 104 "/usr/include/pthread.h" 3 4 +16166: enum +16166: { +16166: PTHREAD_RWLOCK_PREFER_READER_NP, +16166: PTHREAD_RWLOCK_PREFER_WRITER_NP, +16166: PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, +16166: PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP +16166: }; +16166: # 124 "/usr/include/pthread.h" 3 4 +16166: enum +16166: { +16166: PTHREAD_INHERIT_SCHED, +16166: +16166: PTHREAD_EXPLICIT_SCHED +16166: +16166: }; +16166: +16166: +16166: +16166: enum +16166: { +16166: PTHREAD_SCOPE_SYSTEM, +16166: +16166: PTHREAD_SCOPE_PROCESS +16166: +16166: }; +16166: +16166: +16166: +16166: enum +16166: { +16166: PTHREAD_PROCESS_PRIVATE, +16166: +16166: PTHREAD_PROCESS_SHARED +16166: +16166: }; +16166: # 159 "/usr/include/pthread.h" 3 4 +16166: struct _pthread_cleanup_buffer +16166: { +16166: void (*__routine) (void *); +16166: void *__arg; +16166: int __canceltype; +16166: struct _pthread_cleanup_buffer *__prev; +16166: }; +16166: +16166: +16166: enum +16166: { +16166: PTHREAD_CANCEL_ENABLE, +16166: +16166: PTHREAD_CANCEL_DISABLE +16166: +16166: }; +16166: enum +16166: { +16166: PTHREAD_CANCEL_DEFERRED, +16166: +16166: PTHREAD_CANCEL_ASYNCHRONOUS +16166: +16166: }; +16166: # 197 "/usr/include/pthread.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: extern int pthread_create (pthread_t *__restrict __newthread, +16166: const pthread_attr_t *__restrict __attr, +16166: void *(*__start_routine) (void *), +16166: void *__restrict __arg) noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: +16166: +16166: +16166: extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_join (pthread_t __th, void **__thread_return); +16166: +16166: +16166: +16166: +16166: extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) noexcept (true); +16166: # 248 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, const struct timespec *__abstime) __asm__ ("" "__pthread_timedjoin_np64") +16166: +16166: +16166: ; +16166: +16166: extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, clockid_t __clockid, const struct timespec *__abstime) __asm__ ("" "__pthread_clockjoin_np64") +16166: +16166: +16166: +16166: ; +16166: # 269 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_detach (pthread_t __th) noexcept (true); +16166: +16166: +16166: +16166: extern pthread_t pthread_self (void) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) +16166: noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_attr_init (pthread_attr_t *__attr) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_attr_destroy (pthread_attr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, +16166: int *__detachstate) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, +16166: int __detachstate) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, +16166: size_t *__guardsize) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_attr_setguardsize (pthread_attr_t *__attr, +16166: size_t __guardsize) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, +16166: struct sched_param *__restrict __param) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, +16166: const struct sched_param *__restrict +16166: __param) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict +16166: __attr, int *__restrict __policy) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict +16166: __attr, int *__restrict __inherit) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, +16166: int __inherit) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, +16166: int *__restrict __scope) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict +16166: __attr, void **__restrict __stackaddr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, +16166: void *__stackaddr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); +16166: +16166: +16166: extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict +16166: __attr, size_t *__restrict __stacksize) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern int pthread_attr_setstacksize (pthread_attr_t *__attr, +16166: size_t __stacksize) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, +16166: void **__restrict __stackaddr, +16166: size_t *__restrict __stacksize) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))); +16166: +16166: +16166: +16166: +16166: extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, +16166: size_t __stacksize) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, +16166: size_t __cpusetsize, +16166: const cpu_set_t *__cpuset) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: +16166: extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, +16166: size_t __cpusetsize, +16166: cpu_set_t *__cpuset) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: extern int pthread_getattr_default_np (pthread_attr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, +16166: const __sigset_t *sigmask); +16166: +16166: +16166: +16166: +16166: extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, +16166: __sigset_t *sigmask); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_setattr_default_np (const pthread_attr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_setschedparam (pthread_t __target_thread, int __policy, +16166: const struct sched_param *__param) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: +16166: +16166: extern int pthread_getschedparam (pthread_t __target_thread, +16166: int *__restrict __policy, +16166: struct sched_param *__restrict __param) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +16166: +16166: +16166: extern int pthread_setschedprio (pthread_t __target_thread, int __prio) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int pthread_getname_np (pthread_t __target_thread, char *__buf, +16166: size_t __buflen) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: extern int pthread_setname_np (pthread_t __target_thread, const char *__name) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_getconcurrency (void) noexcept (true); +16166: +16166: +16166: extern int pthread_setconcurrency (int __level) noexcept (true); +16166: +16166: +16166: +16166: extern int pthread_yield (void) noexcept (true); +16166: +16166: extern int pthread_yield (void) noexcept (true) __asm__ ("" "sched_yield") +16166: __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, +16166: const cpu_set_t *__cpuset) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: +16166: +16166: extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, +16166: cpu_set_t *__cpuset) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: # 509 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_once (pthread_once_t *__once_control, +16166: void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); +16166: # 521 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_setcancelstate (int __state, int *__oldstate); +16166: +16166: +16166: +16166: extern int pthread_setcanceltype (int __type, int *__oldtype); +16166: +16166: +16166: extern int pthread_cancel (pthread_t __th); +16166: +16166: +16166: +16166: +16166: extern void pthread_testcancel (void); +16166: +16166: +16166: +16166: +16166: struct __cancel_jmp_buf_tag +16166: { +16166: __jmp_buf __cancel_jmp_buf; +16166: int __mask_was_saved; +16166: }; +16166: +16166: typedef struct +16166: { +16166: struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; +16166: void *__pad[4]; +16166: } __pthread_unwind_buf_t __attribute__ ((__aligned__)); +16166: # 557 "/usr/include/pthread.h" 3 4 +16166: struct __pthread_cleanup_frame +16166: { +16166: void (*__cancel_routine) (void *); +16166: void *__cancel_arg; +16166: int __do_it; +16166: int __cancel_type; +16166: }; +16166: +16166: +16166: +16166: +16166: class __pthread_cleanup_class +16166: { +16166: void (*__cancel_routine) (void *); +16166: void *__cancel_arg; +16166: int __do_it; +16166: int __cancel_type; +16166: +16166: public: +16166: __pthread_cleanup_class (void (*__fct) (void *), void *__arg) +16166: : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { } +16166: ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); } +16166: void __setdoit (int __newval) { __do_it = __newval; } +16166: void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, +16166: &__cancel_type); } +16166: void __restore () const { pthread_setcanceltype (__cancel_type, 0); } +16166: }; +16166: # 766 "/usr/include/pthread.h" 3 4 +16166: extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) noexcept (true) __asm__ ("" "__sigsetjmp") +16166: +16166: +16166: __attribute__ ((__returns_twice__)); +16166: # 781 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_mutex_init (pthread_mutex_t *__mutex, +16166: const pthread_mutexattr_t *__mutexattr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutex_lock (pthread_mutex_t *__mutex) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 805 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_timedlock64") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 2))); +16166: # 823 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_mutex_clocklock64") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_mutex_getprioceiling (const pthread_mutex_t * +16166: __restrict __mutex, +16166: int *__restrict __prioceiling) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, +16166: int __prioceiling, +16166: int *__restrict __old_ceiling) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: +16166: +16166: extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutex_consistent_np (pthread_mutex_t *) noexcept (true) __asm__ ("" "pthread_mutex_consistent") +16166: __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) +16166: ; +16166: # 874 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * +16166: __restrict __attr, +16166: int *__restrict __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, +16166: int __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict +16166: __attr, int *__restrict __kind) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * +16166: __restrict __attr, +16166: int *__restrict __protocol) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, +16166: int __protocol) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * +16166: __restrict __attr, +16166: int *__restrict __prioceiling) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, +16166: int __prioceiling) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, +16166: int *__robustness) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) noexcept (true) __asm__ ("" "pthread_mutexattr_getrobust") +16166: +16166: __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, +16166: int __robustness) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) noexcept (true) __asm__ ("" "pthread_mutexattr_setrobust") +16166: +16166: __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) +16166: ; +16166: # 967 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, +16166: const pthread_rwlockattr_t *__restrict +16166: __attr) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 991 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedrdlock64") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 2))); +16166: # 1010 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockrdlock64") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 1038 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_timedwrlock64") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 2))); +16166: # 1058 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) noexcept (true) __asm__ ("" "__pthread_rwlock_clockwrlock64") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * +16166: __restrict __attr, +16166: int *__restrict __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, +16166: int __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * +16166: __restrict __attr, +16166: int *__restrict __pref) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, +16166: int __pref) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_cond_init (pthread_cond_t *__restrict __cond, +16166: const pthread_condattr_t *__restrict __cond_attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_cond_destroy (pthread_cond_t *__cond) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_cond_signal (pthread_cond_t *__cond) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_cond_broadcast (pthread_cond_t *__cond) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, +16166: pthread_mutex_t *__restrict __mutex) +16166: __attribute__ ((__nonnull__ (1, 2))); +16166: # 1151 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __asm__ ("" "__pthread_cond_timedwait64") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 2, 3))); +16166: # 1178 "/usr/include/pthread.h" 3 4 +16166: 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") +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 2, 4))); +16166: # 1194 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_condattr_init (pthread_condattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_condattr_destroy (pthread_condattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_condattr_getpshared (const pthread_condattr_t * +16166: __restrict __attr, +16166: int *__restrict __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, +16166: int __pshared) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_condattr_getclock (const pthread_condattr_t * +16166: __restrict __attr, +16166: __clockid_t *__restrict __clock_id) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_condattr_setclock (pthread_condattr_t *__attr, +16166: __clockid_t __clock_id) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 1230 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_spin_destroy (pthread_spinlock_t *__lock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_spin_lock (pthread_spinlock_t *__lock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_spin_trylock (pthread_spinlock_t *__lock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_spin_unlock (pthread_spinlock_t *__lock) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, +16166: const pthread_barrierattr_t *__restrict +16166: __attr, unsigned int __count) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_barrier_wait (pthread_barrier_t *__barrier) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * +16166: __restrict __attr, +16166: int *__restrict __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, +16166: int __pshared) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 1297 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_key_create (pthread_key_t *__key, +16166: void (*__destr_function) (void *)) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int pthread_key_delete (pthread_key_t __key) noexcept (true); +16166: +16166: +16166: extern void *pthread_getspecific (pthread_key_t __key) noexcept (true); +16166: +16166: +16166: extern int pthread_setspecific (pthread_key_t __key, +16166: const void *__pointer) +16166: noexcept (true) __attribute__ ((__access__ (__none__, 2))); +16166: +16166: +16166: +16166: +16166: extern int pthread_getcpuclockid (pthread_t __thread_id, +16166: __clockid_t *__clock_id) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: # 1332 "/usr/include/pthread.h" 3 4 +16166: extern int pthread_atfork (void (*__prepare) (void), +16166: void (*__parent) (void), +16166: void (*__child) (void)) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: __attribute__ ((__leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) noexcept (true) +16166: { +16166: return __thread1 == __thread2; +16166: } +16166: +16166: +16166: } +16166: # 36 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 2 3 +16166: # 47 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +16166: typedef pthread_t __gthread_t; +16166: typedef pthread_key_t __gthread_key_t; +16166: typedef pthread_once_t __gthread_once_t; +16166: typedef pthread_mutex_t __gthread_mutex_t; +16166: +16166: +16166: +16166: typedef pthread_mutex_t __gthread_recursive_mutex_t; +16166: typedef pthread_cond_t __gthread_cond_t; +16166: typedef struct timespec __gthread_time_t; +16166: # 108 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 312 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +16166: static inline int +16166: __gthread_active_p (void) +16166: { +16166: return 1; +16166: } +16166: # 672 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +16166: static inline int +16166: __gthread_create (__gthread_t *__threadid, void *(*__func) (void*), +16166: void *__args) +16166: { +16166: return pthread_create (__threadid, __null, __func, __args); +16166: } +16166: +16166: static inline int +16166: __gthread_join (__gthread_t __threadid, void **__value_ptr) +16166: { +16166: return pthread_join (__threadid, __value_ptr); +16166: } +16166: +16166: static inline int +16166: __gthread_detach (__gthread_t __threadid) +16166: { +16166: return pthread_detach (__threadid); +16166: } +16166: +16166: static inline int +16166: __gthread_equal (__gthread_t __t1, __gthread_t __t2) +16166: { +16166: return pthread_equal (__t1, __t2); +16166: } +16166: +16166: static inline __gthread_t +16166: __gthread_self (void) +16166: { +16166: return pthread_self (); +16166: } +16166: +16166: static inline int +16166: __gthread_yield (void) +16166: { +16166: return sched_yield (); +16166: } +16166: +16166: static inline int +16166: __gthread_once (__gthread_once_t *__once, void (*__func) (void)) +16166: { +16166: if (__gthread_active_p ()) +16166: return pthread_once (__once, __func); +16166: else +16166: return -1; +16166: } +16166: +16166: static inline int +16166: __gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +16166: { +16166: return pthread_key_create (__key, __dtor); +16166: } +16166: +16166: static inline int +16166: __gthread_key_delete (__gthread_key_t __key) +16166: { +16166: return pthread_key_delete (__key); +16166: } +16166: +16166: static inline void * +16166: __gthread_getspecific (__gthread_key_t __key) +16166: { +16166: return pthread_getspecific (__key); +16166: } +16166: +16166: static inline int +16166: __gthread_setspecific (__gthread_key_t __key, const void *__ptr) +16166: { +16166: return pthread_setspecific (__key, __ptr); +16166: } +16166: +16166: static inline void +16166: __gthread_mutex_init_function (__gthread_mutex_t *__mutex) +16166: { +16166: if (__gthread_active_p ()) +16166: pthread_mutex_init (__mutex, __null); +16166: } +16166: +16166: static inline int +16166: __gthread_mutex_destroy (__gthread_mutex_t *__mutex) +16166: { +16166: if (__gthread_active_p ()) +16166: return pthread_mutex_destroy (__mutex); +16166: else +16166: return 0; +16166: } +16166: +16166: static inline int +16166: __gthread_mutex_lock (__gthread_mutex_t *__mutex) +16166: { +16166: if (__gthread_active_p ()) +16166: return pthread_mutex_lock (__mutex); +16166: else +16166: return 0; +16166: } +16166: +16166: static inline int +16166: __gthread_mutex_trylock (__gthread_mutex_t *__mutex) +16166: { +16166: if (__gthread_active_p ()) +16166: return pthread_mutex_trylock (__mutex); +16166: else +16166: return 0; +16166: } +16166: +16166: +16166: static inline int +16166: __gthread_mutex_timedlock (__gthread_mutex_t *__mutex, +16166: const __gthread_time_t *__abs_timeout) +16166: { +16166: if (__gthread_active_p ()) +16166: return pthread_mutex_timedlock (__mutex, __abs_timeout); +16166: else +16166: return 0; +16166: } +16166: +16166: +16166: static inline int +16166: __gthread_mutex_unlock (__gthread_mutex_t *__mutex) +16166: { +16166: if (__gthread_active_p ()) +16166: return pthread_mutex_unlock (__mutex); +16166: else +16166: return 0; +16166: } +16166: # 821 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +16166: static inline int +16166: __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +16166: { +16166: return __gthread_mutex_lock (__mutex); +16166: } +16166: +16166: static inline int +16166: __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +16166: { +16166: return __gthread_mutex_trylock (__mutex); +16166: } +16166: +16166: +16166: static inline int +16166: __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, +16166: const __gthread_time_t *__abs_timeout) +16166: { +16166: return __gthread_mutex_timedlock (__mutex, __abs_timeout); +16166: } +16166: +16166: +16166: static inline int +16166: __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +16166: { +16166: return __gthread_mutex_unlock (__mutex); +16166: } +16166: +16166: static inline int +16166: __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +16166: { +16166: return __gthread_mutex_destroy (__mutex); +16166: } +16166: # 863 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr-default.h" 3 +16166: static inline int +16166: __gthread_cond_broadcast (__gthread_cond_t *__cond) +16166: { +16166: return pthread_cond_broadcast (__cond); +16166: } +16166: +16166: static inline int +16166: __gthread_cond_signal (__gthread_cond_t *__cond) +16166: { +16166: return pthread_cond_signal (__cond); +16166: } +16166: +16166: static inline int +16166: __gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +16166: { +16166: return pthread_cond_wait (__cond, __mutex); +16166: } +16166: +16166: static inline int +16166: __gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, +16166: const __gthread_time_t *__abs_timeout) +16166: { +16166: return pthread_cond_timedwait (__cond, __mutex, __abs_timeout); +16166: } +16166: +16166: static inline int +16166: __gthread_cond_wait_recursive (__gthread_cond_t *__cond, +16166: __gthread_recursive_mutex_t *__mutex) +16166: { +16166: return __gthread_cond_wait (__cond, __mutex); +16166: } +16166: +16166: static inline int +16166: __gthread_cond_destroy (__gthread_cond_t* __cond) +16166: { +16166: return pthread_cond_destroy (__cond); +16166: } +16166: # 158 "/usr/include/arm-linux-gnueabihf/c++/14/bits/gthr.h" 2 3 +16166: +16166: +16166: #pragma GCC visibility pop +16166: # 36 "/usr/include/c++/14/ext/atomicity.h" 2 3 +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/atomic_word.h" 1 3 +16166: # 32 "/usr/include/arm-linux-gnueabihf/c++/14/bits/atomic_word.h" 3 +16166: typedef int _Atomic_word; +16166: # 37 "/usr/include/c++/14/ext/atomicity.h" 2 3 +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/sys/single_threaded.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: extern char __libc_single_threaded; +16166: +16166: } +16166: # 39 "/usr/include/c++/14/ext/atomicity.h" 2 3 +16166: +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: inline bool +16166: __is_single_threaded() noexcept +16166: { +16166: +16166: +16166: +16166: return ::__libc_single_threaded; +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline _Atomic_word +16166: __attribute__((__always_inline__)) +16166: __exchange_and_add(volatile _Atomic_word* __mem, int __val) +16166: { return __atomic_fetch_add(__mem, __val, 4); } +16166: +16166: inline void +16166: __attribute__((__always_inline__)) +16166: __atomic_add(volatile _Atomic_word* __mem, int __val) +16166: { __atomic_fetch_add(__mem, __val, 4); } +16166: # 80 "/usr/include/c++/14/ext/atomicity.h" 3 +16166: inline _Atomic_word +16166: __attribute__((__always_inline__)) +16166: __exchange_and_add_single(_Atomic_word* __mem, int __val) +16166: { +16166: _Atomic_word __result = *__mem; +16166: *__mem += __val; +16166: return __result; +16166: } +16166: +16166: inline void +16166: __attribute__((__always_inline__)) +16166: __atomic_add_single(_Atomic_word* __mem, int __val) +16166: { *__mem += __val; } +16166: +16166: inline _Atomic_word +16166: __attribute__ ((__always_inline__)) +16166: __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) +16166: { +16166: if (__is_single_threaded()) +16166: return __exchange_and_add_single(__mem, __val); +16166: else +16166: return __exchange_and_add(__mem, __val); +16166: } +16166: +16166: inline void +16166: __attribute__ ((__always_inline__)) +16166: __atomic_add_dispatch(_Atomic_word* __mem, int __val) +16166: { +16166: if (__is_single_threaded()) +16166: __atomic_add_single(__mem, __val); +16166: else +16166: __atomic_add(__mem, __val); +16166: } +16166: +16166: +16166: } +16166: # 62 "/usr/include/c++/14/bits/shared_ptr_base.h" 2 3 +16166: # 1 "/usr/include/c++/14/ext/concurrence.h" 1 3 +16166: # 32 "/usr/include/c++/14/ext/concurrence.h" 3 +16166: +16166: # 33 "/usr/include/c++/14/ext/concurrence.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/exception" 1 3 +16166: # 33 "/usr/include/c++/14/exception" 3 +16166: +16166: # 34 "/usr/include/c++/14/exception" 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 40 "/usr/include/c++/14/exception" 2 3 +16166: +16166: extern "C++" { +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: # 54 "/usr/include/c++/14/exception" 3 +16166: class bad_exception : public exception +16166: { +16166: public: +16166: bad_exception() noexcept { } +16166: +16166: +16166: +16166: virtual ~bad_exception() noexcept; +16166: +16166: +16166: virtual const char* +16166: what() const noexcept; +16166: }; +16166: +16166: +16166: typedef void (*terminate_handler) (); +16166: +16166: +16166: terminate_handler set_terminate(terminate_handler) noexcept; +16166: +16166: +16166: +16166: terminate_handler get_terminate() noexcept; +16166: +16166: +16166: +16166: +16166: void terminate() noexcept __attribute__ ((__noreturn__,__cold__)); +16166: +16166: +16166: +16166: typedef void (*__attribute__ ((__deprecated__)) unexpected_handler) (); +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((__deprecated__)) +16166: unexpected_handler set_unexpected(unexpected_handler) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((__deprecated__)) +16166: unexpected_handler get_unexpected() noexcept; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((__deprecated__)) +16166: void unexpected() __attribute__ ((__noreturn__,__cold__)); +16166: # 124 "/usr/include/c++/14/exception" 3 +16166: __attribute__ ((__deprecated__ ("use '" "std::uncaught_exceptions()" "' instead"))) +16166: bool uncaught_exception() noexcept __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: int uncaught_exceptions() noexcept __attribute__ ((__pure__)); +16166: +16166: +16166: +16166: } +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 158 "/usr/include/c++/14/exception" 3 +16166: void __verbose_terminate_handler(); +16166: +16166: +16166: } +16166: +16166: } +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/exception_ptr.h" 1 3 +16166: # 36 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: # 1 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 1 3 +16166: # 34 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 3 +16166: +16166: # 35 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 3 +16166: +16166: #pragma GCC visibility push(default) +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 39 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 2 3 +16166: # 50 "/usr/include/c++/14/bits/cxxabi_init_exception.h" 3 +16166: namespace std +16166: { +16166: class type_info; +16166: } +16166: +16166: namespace __cxxabiv1 +16166: { +16166: struct __cxa_refcounted_exception; +16166: +16166: extern "C" +16166: { +16166: +16166: void* +16166: __cxa_allocate_exception(size_t) noexcept; +16166: +16166: void +16166: __cxa_free_exception(void*) noexcept; +16166: +16166: +16166: __cxa_refcounted_exception* +16166: __cxa_init_primary_exception(void *__object, std::type_info *__tinfo, +16166: void ( *__dest) (void *)) +16166: noexcept; +16166: +16166: } +16166: } +16166: +16166: +16166: +16166: #pragma GCC visibility pop +16166: # 37 "/usr/include/c++/14/bits/exception_ptr.h" 2 3 +16166: # 50 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: extern "C++" { +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: class type_info; +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace __exception_ptr +16166: { +16166: class exception_ptr; +16166: } +16166: +16166: using __exception_ptr::exception_ptr; +16166: # 75 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: exception_ptr current_exception() noexcept; +16166: +16166: template +16166: exception_ptr make_exception_ptr(_Ex) noexcept; +16166: +16166: +16166: void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); +16166: +16166: namespace __exception_ptr +16166: { +16166: using std::rethrow_exception; +16166: # 97 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: class exception_ptr +16166: { +16166: void* _M_exception_object; +16166: +16166: explicit exception_ptr(void* __e) noexcept; +16166: +16166: void _M_addref() noexcept; +16166: void _M_release() noexcept; +16166: +16166: void *_M_get() const noexcept __attribute__ ((__pure__)); +16166: +16166: friend exception_ptr std::current_exception() noexcept; +16166: friend void std::rethrow_exception(exception_ptr); +16166: template +16166: friend exception_ptr std::make_exception_ptr(_Ex) noexcept; +16166: +16166: public: +16166: exception_ptr() noexcept; +16166: +16166: exception_ptr(const exception_ptr&) noexcept; +16166: +16166: +16166: exception_ptr(nullptr_t) noexcept +16166: : _M_exception_object(nullptr) +16166: { } +16166: +16166: exception_ptr(exception_ptr&& __o) noexcept +16166: : _M_exception_object(__o._M_exception_object) +16166: { __o._M_exception_object = nullptr; } +16166: # 135 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: exception_ptr& +16166: operator=(const exception_ptr&) noexcept; +16166: +16166: +16166: exception_ptr& +16166: operator=(exception_ptr&& __o) noexcept +16166: { +16166: exception_ptr(static_cast(__o)).swap(*this); +16166: return *this; +16166: } +16166: +16166: +16166: ~exception_ptr() noexcept; +16166: +16166: void +16166: swap(exception_ptr&) noexcept; +16166: # 161 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: explicit operator bool() const noexcept +16166: { return _M_exception_object; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const exception_ptr& __x, const exception_ptr& __y) +16166: noexcept +16166: { return __x._M_exception_object == __y._M_exception_object; } +16166: +16166: friend bool +16166: operator!=(const exception_ptr& __x, const exception_ptr& __y) +16166: noexcept +16166: { return __x._M_exception_object != __y._M_exception_object; } +16166: +16166: +16166: const class std::type_info* +16166: __cxa_exception_type() const noexcept +16166: __attribute__ ((__pure__)); +16166: }; +16166: +16166: +16166: inline +16166: exception_ptr::exception_ptr() noexcept +16166: : _M_exception_object(0) +16166: { } +16166: +16166: +16166: inline +16166: exception_ptr::exception_ptr(const exception_ptr& __other) +16166: noexcept +16166: : _M_exception_object(__other._M_exception_object) +16166: { +16166: if (_M_exception_object) +16166: _M_addref(); +16166: } +16166: +16166: +16166: inline +16166: exception_ptr::~exception_ptr() noexcept +16166: { +16166: if (_M_exception_object) +16166: _M_release(); +16166: } +16166: +16166: +16166: inline exception_ptr& +16166: exception_ptr::operator=(const exception_ptr& __other) noexcept +16166: { +16166: exception_ptr(__other).swap(*this); +16166: return *this; +16166: } +16166: +16166: +16166: inline void +16166: exception_ptr::swap(exception_ptr &__other) noexcept +16166: { +16166: void *__tmp = _M_exception_object; +16166: _M_exception_object = __other._M_exception_object; +16166: __other._M_exception_object = __tmp; +16166: } +16166: +16166: +16166: inline void +16166: swap(exception_ptr& __lhs, exception_ptr& __rhs) +16166: { __lhs.swap(__rhs); } +16166: +16166: +16166: template +16166: +16166: inline void +16166: __dest_thunk(void* __x) +16166: { static_cast<_Ex*>(__x)->~_Ex(); } +16166: +16166: +16166: } +16166: +16166: using __exception_ptr::swap; +16166: +16166: +16166: +16166: template +16166: exception_ptr +16166: make_exception_ptr(_Ex __ex) noexcept +16166: { +16166: +16166: using _Ex2 = typename decay<_Ex>::type; +16166: void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); +16166: (void) __cxxabiv1::__cxa_init_primary_exception( +16166: __e, const_cast(&typeid(_Ex)), +16166: __exception_ptr::__dest_thunk<_Ex2>); +16166: try +16166: { +16166: ::new (__e) _Ex2(__ex); +16166: return exception_ptr(__e); +16166: } +16166: catch(...) +16166: { +16166: __cxxabiv1::__cxa_free_exception(__e); +16166: return current_exception(); +16166: } +16166: # 276 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: } +16166: # 290 "/usr/include/c++/14/bits/exception_ptr.h" 3 +16166: } +16166: +16166: } +16166: # 167 "/usr/include/c++/14/exception" 2 3 +16166: # 1 "/usr/include/c++/14/bits/nested_exception.h" 1 3 +16166: # 40 "/usr/include/c++/14/bits/nested_exception.h" 3 +16166: extern "C++" { +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: # 59 "/usr/include/c++/14/bits/nested_exception.h" 3 +16166: class nested_exception +16166: { +16166: exception_ptr _M_ptr; +16166: +16166: public: +16166: +16166: nested_exception() noexcept : _M_ptr(current_exception()) { } +16166: +16166: nested_exception(const nested_exception&) noexcept = default; +16166: +16166: nested_exception& operator=(const nested_exception&) noexcept = default; +16166: +16166: virtual ~nested_exception() noexcept; +16166: +16166: +16166: [[noreturn]] +16166: void +16166: rethrow_nested() const +16166: { +16166: if (_M_ptr) +16166: rethrow_exception(_M_ptr); +16166: std::terminate(); +16166: } +16166: +16166: +16166: exception_ptr +16166: nested_ptr() const noexcept +16166: { return _M_ptr; } +16166: }; +16166: +16166: +16166: +16166: template +16166: struct _Nested_exception : public _Except, public nested_exception +16166: { +16166: explicit _Nested_exception(const _Except& __ex) +16166: : _Except(__ex) +16166: { } +16166: +16166: explicit _Nested_exception(_Except&& __ex) +16166: : _Except(static_cast<_Except&&>(__ex)) +16166: { } +16166: }; +16166: # 145 "/usr/include/c++/14/bits/nested_exception.h" 3 +16166: template +16166: [[noreturn]] +16166: inline void +16166: throw_with_nested(_Tp&& __t) +16166: { +16166: using _Up = typename decay<_Tp>::type; +16166: using _CopyConstructible +16166: = __and_, is_move_constructible<_Up>>; +16166: static_assert(_CopyConstructible::value, +16166: "throw_with_nested argument must be CopyConstructible"); +16166: +16166: +16166: if constexpr (is_class_v<_Up>) +16166: if constexpr (!is_final_v<_Up>) +16166: if constexpr (!is_base_of_v) +16166: throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; +16166: throw std::forward<_Tp>(__t); +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 203 "/usr/include/c++/14/bits/nested_exception.h" 3 +16166: template +16166: +16166: +16166: +16166: inline void +16166: rethrow_if_nested(const _Ex& __ex) +16166: { +16166: const _Ex* __ptr = __builtin_addressof(__ex); +16166: # 223 "/usr/include/c++/14/bits/nested_exception.h" 3 +16166: if constexpr (!is_polymorphic_v<_Ex>) +16166: return; +16166: else if constexpr (is_base_of_v +16166: && !is_convertible_v<_Ex*, nested_exception*>) +16166: return; +16166: +16166: +16166: +16166: +16166: else if (auto __ne_ptr = dynamic_cast(__ptr)) +16166: __ne_ptr->rethrow_nested(); +16166: +16166: } +16166: +16166: +16166: } +16166: +16166: } +16166: # 168 "/usr/include/c++/14/exception" 2 3 +16166: # 35 "/usr/include/c++/14/ext/concurrence.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; +16166: +16166: +16166: +16166: inline const _Lock_policy __default_lock_policy = +16166: +16166: +16166: +16166: _S_atomic; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class __concurrence_lock_error : public std::exception +16166: { +16166: public: +16166: virtual char const* +16166: what() const throw() +16166: { return "__gnu_cxx::__concurrence_lock_error"; } +16166: }; +16166: +16166: class __concurrence_unlock_error : public std::exception +16166: { +16166: public: +16166: virtual char const* +16166: what() const throw() +16166: { return "__gnu_cxx::__concurrence_unlock_error"; } +16166: }; +16166: +16166: class __concurrence_broadcast_error : public std::exception +16166: { +16166: public: +16166: virtual char const* +16166: what() const throw() +16166: { return "__gnu_cxx::__concurrence_broadcast_error"; } +16166: }; +16166: +16166: class __concurrence_wait_error : public std::exception +16166: { +16166: public: +16166: virtual char const* +16166: what() const throw() +16166: { return "__gnu_cxx::__concurrence_wait_error"; } +16166: }; +16166: +16166: +16166: inline void +16166: __throw_concurrence_lock_error() +16166: { (throw (__concurrence_lock_error())); } +16166: +16166: inline void +16166: __throw_concurrence_unlock_error() +16166: { (throw (__concurrence_unlock_error())); } +16166: +16166: +16166: inline void +16166: __throw_concurrence_broadcast_error() +16166: { (throw (__concurrence_broadcast_error())); } +16166: +16166: inline void +16166: __throw_concurrence_wait_error() +16166: { (throw (__concurrence_wait_error())); } +16166: +16166: +16166: class __mutex +16166: { +16166: private: +16166: +16166: __gthread_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } }; +16166: +16166: +16166: +16166: +16166: __mutex(const __mutex&); +16166: __mutex& operator=(const __mutex&); +16166: +16166: public: +16166: __mutex() +16166: { +16166: +16166: +16166: +16166: +16166: } +16166: # 144 "/usr/include/c++/14/ext/concurrence.h" 3 +16166: void lock() +16166: { +16166: +16166: if (__gthread_active_p()) +16166: { +16166: if (__gthread_mutex_lock(&_M_mutex) != 0) +16166: __throw_concurrence_lock_error(); +16166: } +16166: +16166: } +16166: +16166: void unlock() +16166: { +16166: +16166: if (__gthread_active_p()) +16166: { +16166: if (__gthread_mutex_unlock(&_M_mutex) != 0) +16166: __throw_concurrence_unlock_error(); +16166: } +16166: +16166: } +16166: +16166: __gthread_mutex_t* gthread_mutex(void) +16166: { return &_M_mutex; } +16166: }; +16166: +16166: class __recursive_mutex +16166: { +16166: private: +16166: +16166: __gthread_recursive_mutex_t _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; +16166: +16166: +16166: +16166: +16166: __recursive_mutex(const __recursive_mutex&); +16166: __recursive_mutex& operator=(const __recursive_mutex&); +16166: +16166: public: +16166: __recursive_mutex() +16166: { +16166: +16166: +16166: +16166: +16166: } +16166: # 199 "/usr/include/c++/14/ext/concurrence.h" 3 +16166: void lock() +16166: { +16166: +16166: if (__gthread_active_p()) +16166: { +16166: if (__gthread_recursive_mutex_lock(&_M_mutex) != 0) +16166: __throw_concurrence_lock_error(); +16166: } +16166: +16166: } +16166: +16166: void unlock() +16166: { +16166: +16166: if (__gthread_active_p()) +16166: { +16166: if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0) +16166: __throw_concurrence_unlock_error(); +16166: } +16166: +16166: } +16166: +16166: __gthread_recursive_mutex_t* gthread_recursive_mutex(void) +16166: { return &_M_mutex; } +16166: }; +16166: +16166: +16166: +16166: +16166: class __scoped_lock +16166: { +16166: public: +16166: typedef __mutex __mutex_type; +16166: +16166: private: +16166: __mutex_type& _M_device; +16166: +16166: __scoped_lock(const __scoped_lock&); +16166: __scoped_lock& operator=(const __scoped_lock&); +16166: +16166: public: +16166: explicit __scoped_lock(__mutex_type& __name) : _M_device(__name) +16166: { _M_device.lock(); } +16166: +16166: ~__scoped_lock() throw() +16166: { _M_device.unlock(); } +16166: }; +16166: +16166: +16166: class __cond +16166: { +16166: private: +16166: +16166: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; +16166: +16166: +16166: +16166: +16166: __cond(const __cond&); +16166: __cond& operator=(const __cond&); +16166: +16166: public: +16166: __cond() +16166: { +16166: +16166: +16166: +16166: +16166: } +16166: # 277 "/usr/include/c++/14/ext/concurrence.h" 3 +16166: void broadcast() +16166: { +16166: +16166: if (__gthread_active_p()) +16166: { +16166: if (__gthread_cond_broadcast(&_M_cond) != 0) +16166: __throw_concurrence_broadcast_error(); +16166: } +16166: +16166: } +16166: +16166: void wait(__mutex *mutex) +16166: { +16166: +16166: { +16166: if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0) +16166: __throw_concurrence_wait_error(); +16166: } +16166: +16166: } +16166: +16166: void wait_recursive(__recursive_mutex *mutex) +16166: { +16166: +16166: { +16166: if (__gthread_cond_wait_recursive(&_M_cond, +16166: mutex->gthread_recursive_mutex()) +16166: != 0) +16166: __throw_concurrence_wait_error(); +16166: } +16166: +16166: } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 63 "/usr/include/c++/14/bits/shared_ptr_base.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: # 75 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: template class auto_ptr; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: +16166: +16166: class bad_weak_ptr : public std::exception +16166: { +16166: public: +16166: virtual char const* what() const noexcept; +16166: +16166: virtual ~bad_weak_ptr() noexcept; +16166: }; +16166: +16166: +16166: inline void +16166: __throw_bad_weak_ptr() +16166: { (throw (bad_weak_ptr())); } +16166: +16166: using __gnu_cxx::_Lock_policy; +16166: using __gnu_cxx::__default_lock_policy; +16166: using __gnu_cxx::_S_single; +16166: using __gnu_cxx::_S_mutex; +16166: using __gnu_cxx::_S_atomic; +16166: +16166: +16166: template<_Lock_policy _Lp> +16166: class _Mutex_base +16166: { +16166: protected: +16166: +16166: enum { _S_need_barriers = 0 }; +16166: }; +16166: +16166: template<> +16166: class _Mutex_base<_S_mutex> +16166: : public __gnu_cxx::__mutex +16166: { +16166: protected: +16166: +16166: +16166: +16166: enum { _S_need_barriers = 1 }; +16166: }; +16166: +16166: template<_Lock_policy _Lp = __default_lock_policy> +16166: class _Sp_counted_base +16166: : public _Mutex_base<_Lp> +16166: { +16166: public: +16166: _Sp_counted_base() noexcept +16166: : _M_use_count(1), _M_weak_count(1) { } +16166: +16166: virtual +16166: ~_Sp_counted_base() noexcept +16166: { } +16166: +16166: +16166: +16166: virtual void +16166: _M_dispose() noexcept = 0; +16166: +16166: +16166: virtual void +16166: _M_destroy() noexcept +16166: { delete this; } +16166: +16166: virtual void* +16166: _M_get_deleter(const std::type_info&) noexcept = 0; +16166: +16166: +16166: void +16166: _M_add_ref_copy() +16166: { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } +16166: +16166: +16166: void +16166: _M_add_ref_lock() +16166: { +16166: if (!_M_add_ref_lock_nothrow()) +16166: __throw_bad_weak_ptr(); +16166: } +16166: +16166: +16166: bool +16166: _M_add_ref_lock_nothrow() noexcept; +16166: +16166: +16166: void +16166: _M_release() noexcept; +16166: +16166: +16166: void +16166: _M_release_last_use() noexcept +16166: { +16166: ; +16166: _M_dispose(); +16166: +16166: +16166: +16166: +16166: if (_Mutex_base<_Lp>::_S_need_barriers) +16166: { +16166: __atomic_thread_fence (4); +16166: } +16166: +16166: +16166: ; +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, +16166: -1) == 1) +16166: { +16166: ; +16166: _M_destroy(); +16166: } +16166: } +16166: +16166: +16166: __attribute__((__noinline__)) +16166: void +16166: _M_release_last_use_cold() noexcept +16166: { _M_release_last_use(); } +16166: +16166: +16166: void +16166: _M_weak_add_ref() noexcept +16166: { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } +16166: +16166: +16166: void +16166: _M_weak_release() noexcept +16166: { +16166: +16166: ; +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) +16166: { +16166: ; +16166: if (_Mutex_base<_Lp>::_S_need_barriers) +16166: { +16166: +16166: +16166: __atomic_thread_fence (4); +16166: } +16166: _M_destroy(); +16166: } +16166: } +16166: +16166: long +16166: _M_get_use_count() const noexcept +16166: { +16166: +16166: +16166: return __atomic_load_n(&_M_use_count, 0); +16166: } +16166: +16166: private: +16166: _Sp_counted_base(_Sp_counted_base const&) = delete; +16166: _Sp_counted_base& operator=(_Sp_counted_base const&) = delete; +16166: +16166: _Atomic_word _M_use_count; +16166: _Atomic_word _M_weak_count; +16166: }; +16166: +16166: template<> +16166: inline bool +16166: _Sp_counted_base<_S_single>:: +16166: _M_add_ref_lock_nothrow() noexcept +16166: { +16166: if (_M_use_count == 0) +16166: return false; +16166: ++_M_use_count; +16166: return true; +16166: } +16166: +16166: template<> +16166: inline bool +16166: _Sp_counted_base<_S_mutex>:: +16166: _M_add_ref_lock_nothrow() noexcept +16166: { +16166: __gnu_cxx::__scoped_lock sentry(*this); +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) +16166: { +16166: _M_use_count = 0; +16166: return false; +16166: } +16166: return true; +16166: } +16166: +16166: template<> +16166: inline bool +16166: _Sp_counted_base<_S_atomic>:: +16166: _M_add_ref_lock_nothrow() noexcept +16166: { +16166: +16166: _Atomic_word __count = _M_get_use_count(); +16166: do +16166: { +16166: if (__count == 0) +16166: return false; +16166: +16166: +16166: } +16166: while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, +16166: true, 4, +16166: 0)); +16166: return true; +16166: } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_base<_S_single>::_M_add_ref_copy() +16166: { ++_M_use_count; } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_base<_S_single>::_M_release() noexcept +16166: { +16166: if (--_M_use_count == 0) +16166: { +16166: _M_dispose(); +16166: if (--_M_weak_count == 0) +16166: _M_destroy(); +16166: } +16166: } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_base<_S_mutex>::_M_release() noexcept +16166: { +16166: +16166: ; +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) +16166: { +16166: _M_release_last_use(); +16166: } +16166: } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_base<_S_atomic>::_M_release() noexcept +16166: { +16166: ; +16166: +16166: constexpr bool __lock_free +16166: = __atomic_always_lock_free(sizeof(long long), 0) +16166: && __atomic_always_lock_free(sizeof(_Atomic_word), 0); +16166: constexpr bool __double_word +16166: = sizeof(long long) == 2 * sizeof(_Atomic_word); +16166: +16166: +16166: constexpr bool __aligned = __alignof(long long) <= alignof(void*); +16166: if constexpr (__lock_free && __double_word && __aligned) +16166: { +16166: constexpr int __wordbits = 8 * sizeof(_Atomic_word); +16166: constexpr int __shiftbits = __double_word ? __wordbits : 0; +16166: constexpr long long __unique_ref = 1LL + (1LL << __shiftbits); +16166: auto __both_counts = reinterpret_cast(&_M_use_count); +16166: +16166: ; +16166: if (__atomic_load_n(__both_counts, 2) == __unique_ref) +16166: { +16166: +16166: +16166: +16166: +16166: _M_weak_count = _M_use_count = 0; +16166: ; +16166: ; +16166: _M_dispose(); +16166: _M_destroy(); +16166: return; +16166: } +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) +16166: [[__unlikely__]] +16166: { +16166: _M_release_last_use_cold(); +16166: return; +16166: } +16166: } +16166: else +16166: +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) +16166: { +16166: _M_release_last_use(); +16166: } +16166: } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept +16166: { ++_M_weak_count; } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_base<_S_single>::_M_weak_release() noexcept +16166: { +16166: if (--_M_weak_count == 0) +16166: _M_destroy(); +16166: } +16166: +16166: template<> +16166: inline long +16166: _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept +16166: { return _M_use_count; } +16166: +16166: +16166: +16166: template +16166: class __shared_ptr; +16166: +16166: template +16166: class __weak_ptr; +16166: +16166: template +16166: class __enable_shared_from_this; +16166: +16166: template +16166: class shared_ptr; +16166: +16166: template +16166: class weak_ptr; +16166: +16166: template +16166: struct owner_less; +16166: +16166: template +16166: class enable_shared_from_this; +16166: +16166: template<_Lock_policy _Lp = __default_lock_policy> +16166: class __weak_count; +16166: +16166: template<_Lock_policy _Lp = __default_lock_policy> +16166: class __shared_count; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class _Sp_counted_ptr final : public _Sp_counted_base<_Lp> +16166: { +16166: public: +16166: explicit +16166: _Sp_counted_ptr(_Ptr __p) noexcept +16166: : _M_ptr(__p) { } +16166: +16166: virtual void +16166: _M_dispose() noexcept +16166: { delete _M_ptr; } +16166: +16166: virtual void +16166: _M_destroy() noexcept +16166: { delete this; } +16166: +16166: virtual void* +16166: _M_get_deleter(const std::type_info&) noexcept +16166: { return nullptr; } +16166: +16166: _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; +16166: _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; +16166: +16166: private: +16166: _Ptr _M_ptr; +16166: }; +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_ptr::_M_dispose() noexcept { } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_ptr::_M_dispose() noexcept { } +16166: +16166: template<> +16166: inline void +16166: _Sp_counted_ptr::_M_dispose() noexcept { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Sp_ebo_helper; +16166: +16166: +16166: template +16166: struct _Sp_ebo_helper<_Nm, _Tp, true> : private _Tp +16166: { +16166: explicit _Sp_ebo_helper(const _Tp& __tp) : _Tp(__tp) { } +16166: explicit _Sp_ebo_helper(_Tp&& __tp) : _Tp(std::move(__tp)) { } +16166: +16166: static _Tp& +16166: _S_get(_Sp_ebo_helper& __eboh) { return static_cast<_Tp&>(__eboh); } +16166: }; +16166: +16166: +16166: template +16166: struct _Sp_ebo_helper<_Nm, _Tp, false> +16166: { +16166: explicit _Sp_ebo_helper(const _Tp& __tp) : _M_tp(__tp) { } +16166: explicit _Sp_ebo_helper(_Tp&& __tp) : _M_tp(std::move(__tp)) { } +16166: +16166: static _Tp& +16166: _S_get(_Sp_ebo_helper& __eboh) +16166: { return __eboh._M_tp; } +16166: +16166: private: +16166: _Tp _M_tp; +16166: }; +16166: +16166: +16166: template +16166: class _Sp_counted_deleter final : public _Sp_counted_base<_Lp> +16166: { +16166: class _Impl : _Sp_ebo_helper<0, _Deleter>, _Sp_ebo_helper<1, _Alloc> +16166: { +16166: typedef _Sp_ebo_helper<0, _Deleter> _Del_base; +16166: typedef _Sp_ebo_helper<1, _Alloc> _Alloc_base; +16166: +16166: public: +16166: _Impl(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept +16166: : _Del_base(std::move(__d)), _Alloc_base(__a), _M_ptr(__p) +16166: { } +16166: +16166: _Deleter& _M_del() noexcept { return _Del_base::_S_get(*this); } +16166: _Alloc& _M_alloc() noexcept { return _Alloc_base::_S_get(*this); } +16166: +16166: _Ptr _M_ptr; +16166: }; +16166: +16166: public: +16166: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_deleter>; +16166: +16166: +16166: _Sp_counted_deleter(_Ptr __p, _Deleter __d) noexcept +16166: : _M_impl(__p, std::move(__d), _Alloc()) { } +16166: +16166: +16166: _Sp_counted_deleter(_Ptr __p, _Deleter __d, const _Alloc& __a) noexcept +16166: : _M_impl(__p, std::move(__d), __a) { } +16166: +16166: ~_Sp_counted_deleter() noexcept { } +16166: +16166: virtual void +16166: _M_dispose() noexcept +16166: { _M_impl._M_del()(_M_impl._M_ptr); } +16166: +16166: virtual void +16166: _M_destroy() noexcept +16166: { +16166: __allocator_type __a(_M_impl._M_alloc()); +16166: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; +16166: this->~_Sp_counted_deleter(); +16166: } +16166: +16166: virtual void* +16166: _M_get_deleter(const type_info& __ti [[__gnu__::__unused__]]) noexcept +16166: { +16166: +16166: +16166: +16166: return __ti == typeid(_Deleter) +16166: ? std::__addressof(_M_impl._M_del()) +16166: : nullptr; +16166: +16166: +16166: +16166: } +16166: +16166: private: +16166: +16166: +16166: +16166: _Impl _M_impl; +16166: }; +16166: +16166: +16166: +16166: struct _Sp_make_shared_tag +16166: { +16166: private: +16166: template +16166: friend class _Sp_counted_ptr_inplace; +16166: +16166: static const type_info& +16166: _S_ti() noexcept __attribute__ ((__visibility__ ("default"))) +16166: { +16166: alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; +16166: return reinterpret_cast(__tag); +16166: } +16166: +16166: static bool _S_eq(const type_info&) noexcept; +16166: }; +16166: +16166: template +16166: struct _Sp_alloc_shared_tag +16166: { +16166: const _Alloc& _M_a; +16166: }; +16166: +16166: template +16166: class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> +16166: { +16166: class _Impl : _Sp_ebo_helper<0, _Alloc> +16166: { +16166: typedef _Sp_ebo_helper<0, _Alloc> _A_base; +16166: +16166: public: +16166: explicit _Impl(_Alloc __a) noexcept : _A_base(__a) { } +16166: +16166: _Alloc& _M_alloc() noexcept { return _A_base::_S_get(*this); } +16166: +16166: __gnu_cxx::__aligned_buffer<_Tp> _M_storage; +16166: }; +16166: +16166: public: +16166: using __allocator_type = __alloc_rebind<_Alloc, _Sp_counted_ptr_inplace>; +16166: +16166: +16166: template +16166: _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args) +16166: : _M_impl(__a) +16166: { +16166: +16166: +16166: allocator_traits<_Alloc>::construct(__a, _M_ptr(), +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: ~_Sp_counted_ptr_inplace() noexcept { } +16166: +16166: virtual void +16166: _M_dispose() noexcept +16166: { +16166: allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr()); +16166: } +16166: +16166: +16166: virtual void +16166: _M_destroy() noexcept +16166: { +16166: __allocator_type __a(_M_impl._M_alloc()); +16166: __allocated_ptr<__allocator_type> __guard_ptr{ __a, this }; +16166: this->~_Sp_counted_ptr_inplace(); +16166: } +16166: +16166: private: +16166: friend class __shared_count<_Lp>; +16166: +16166: +16166: +16166: virtual void* +16166: _M_get_deleter(const std::type_info& __ti) noexcept override +16166: { +16166: auto __ptr = const_cast::type*>(_M_ptr()); +16166: +16166: +16166: +16166: +16166: if (&__ti == &_Sp_make_shared_tag::_S_ti() +16166: || +16166: +16166: __ti == typeid(_Sp_make_shared_tag) +16166: +16166: +16166: +16166: ) +16166: return __ptr; +16166: return nullptr; +16166: } +16166: +16166: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } +16166: +16166: _Impl _M_impl; +16166: }; +16166: # 884 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: struct __sp_array_delete +16166: { +16166: template +16166: void operator()(_Yp* __p) const { delete[] __p; } +16166: }; +16166: +16166: template<_Lock_policy _Lp> +16166: class __shared_count +16166: { +16166: +16166: template +16166: struct __not_alloc_shared_tag { using type = void; }; +16166: +16166: template +16166: struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: public: +16166: constexpr __shared_count() noexcept : _M_pi(0) +16166: { } +16166: +16166: template +16166: explicit +16166: __shared_count(_Ptr __p) : _M_pi(0) +16166: { +16166: try +16166: { +16166: _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p); +16166: } +16166: catch(...) +16166: { +16166: delete __p; +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: __shared_count(_Ptr __p, false_type) +16166: : __shared_count(__p) +16166: { } +16166: +16166: template +16166: __shared_count(_Ptr __p, true_type) +16166: : __shared_count(__p, __sp_array_delete{}, allocator()) +16166: { } +16166: +16166: template::type> +16166: __shared_count(_Ptr __p, _Deleter __d) +16166: : __shared_count(__p, std::move(__d), allocator()) +16166: { } +16166: +16166: template::type> +16166: __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) +16166: { +16166: typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; +16166: try +16166: { +16166: typename _Sp_cd_type::__allocator_type __a2(__a); +16166: auto __guard = std::__allocate_guarded(__a2); +16166: _Sp_cd_type* __mem = __guard.get(); +16166: ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a)); +16166: _M_pi = __mem; +16166: __guard = nullptr; +16166: } +16166: catch(...) +16166: { +16166: __d(__p); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, +16166: _Args&&... __args) +16166: { +16166: typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; +16166: typename _Sp_cp_type::__allocator_type __a2(__a._M_a); +16166: auto __guard = std::__allocate_guarded(__a2); +16166: _Sp_cp_type* __mem = __guard.get(); +16166: auto __pi = ::new (__mem) +16166: _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); +16166: __guard = nullptr; +16166: _M_pi = __pi; +16166: __p = __pi->_M_ptr(); +16166: } +16166: # 1022 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: template +16166: explicit +16166: __shared_count(std::auto_ptr<_Tp>&& __r); +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: template +16166: explicit +16166: __shared_count(std::unique_ptr<_Tp, _Del>&& __r) : _M_pi(0) +16166: { +16166: +16166: +16166: if (__r.get() == nullptr) +16166: return; +16166: +16166: using _Ptr = typename unique_ptr<_Tp, _Del>::pointer; +16166: using _Del2 = __conditional_t::value, +16166: reference_wrapper::type>, +16166: _Del>; +16166: using _Sp_cd_type +16166: = _Sp_counted_deleter<_Ptr, _Del2, allocator, _Lp>; +16166: using _Alloc = allocator<_Sp_cd_type>; +16166: using _Alloc_traits = allocator_traits<_Alloc>; +16166: _Alloc __a; +16166: _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1); +16166: +16166: +16166: +16166: _Alloc_traits::construct(__a, __mem, __r.release(), +16166: std::forward<_Del>(__r.get_deleter())); +16166: _M_pi = __mem; +16166: } +16166: +16166: +16166: explicit __shared_count(const __weak_count<_Lp>& __r); +16166: +16166: +16166: explicit +16166: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept; +16166: +16166: ~__shared_count() noexcept +16166: { +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_release(); +16166: } +16166: +16166: __shared_count(const __shared_count& __r) noexcept +16166: : _M_pi(__r._M_pi) +16166: { +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_add_ref_copy(); +16166: } +16166: +16166: __shared_count& +16166: operator=(const __shared_count& __r) noexcept +16166: { +16166: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +16166: if (__tmp != _M_pi) +16166: { +16166: if (__tmp != nullptr) +16166: __tmp->_M_add_ref_copy(); +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_release(); +16166: _M_pi = __tmp; +16166: } +16166: return *this; +16166: } +16166: +16166: void +16166: _M_swap(__shared_count& __r) noexcept +16166: { +16166: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +16166: __r._M_pi = _M_pi; +16166: _M_pi = __tmp; +16166: } +16166: +16166: long +16166: _M_get_use_count() const noexcept +16166: { return _M_pi ? _M_pi->_M_get_use_count() : 0; } +16166: +16166: bool +16166: _M_unique() const noexcept +16166: { return this->_M_get_use_count() == 1; } +16166: +16166: void* +16166: _M_get_deleter(const std::type_info& __ti) const noexcept +16166: { return _M_pi ? _M_pi->_M_get_deleter(__ti) : nullptr; } +16166: +16166: bool +16166: _M_less(const __shared_count& __rhs) const noexcept +16166: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +16166: +16166: bool +16166: _M_less(const __weak_count<_Lp>& __rhs) const noexcept +16166: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +16166: +16166: +16166: friend inline bool +16166: operator==(const __shared_count& __a, const __shared_count& __b) noexcept +16166: { return __a._M_pi == __b._M_pi; } +16166: +16166: private: +16166: friend class __weak_count<_Lp>; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: _Sp_counted_base<_Lp>* _M_pi; +16166: }; +16166: +16166: +16166: template<_Lock_policy _Lp> +16166: class __weak_count +16166: { +16166: public: +16166: constexpr __weak_count() noexcept : _M_pi(nullptr) +16166: { } +16166: +16166: __weak_count(const __shared_count<_Lp>& __r) noexcept +16166: : _M_pi(__r._M_pi) +16166: { +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_weak_add_ref(); +16166: } +16166: +16166: __weak_count(const __weak_count& __r) noexcept +16166: : _M_pi(__r._M_pi) +16166: { +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_weak_add_ref(); +16166: } +16166: +16166: __weak_count(__weak_count&& __r) noexcept +16166: : _M_pi(__r._M_pi) +16166: { __r._M_pi = nullptr; } +16166: +16166: ~__weak_count() noexcept +16166: { +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_weak_release(); +16166: } +16166: +16166: __weak_count& +16166: operator=(const __shared_count<_Lp>& __r) noexcept +16166: { +16166: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +16166: if (__tmp != nullptr) +16166: __tmp->_M_weak_add_ref(); +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_weak_release(); +16166: _M_pi = __tmp; +16166: return *this; +16166: } +16166: +16166: __weak_count& +16166: operator=(const __weak_count& __r) noexcept +16166: { +16166: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +16166: if (__tmp != nullptr) +16166: __tmp->_M_weak_add_ref(); +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_weak_release(); +16166: _M_pi = __tmp; +16166: return *this; +16166: } +16166: +16166: __weak_count& +16166: operator=(__weak_count&& __r) noexcept +16166: { +16166: if (_M_pi != nullptr) +16166: _M_pi->_M_weak_release(); +16166: _M_pi = __r._M_pi; +16166: __r._M_pi = nullptr; +16166: return *this; +16166: } +16166: +16166: void +16166: _M_swap(__weak_count& __r) noexcept +16166: { +16166: _Sp_counted_base<_Lp>* __tmp = __r._M_pi; +16166: __r._M_pi = _M_pi; +16166: _M_pi = __tmp; +16166: } +16166: +16166: long +16166: _M_get_use_count() const noexcept +16166: { return _M_pi != nullptr ? _M_pi->_M_get_use_count() : 0; } +16166: +16166: bool +16166: _M_less(const __weak_count& __rhs) const noexcept +16166: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +16166: +16166: bool +16166: _M_less(const __shared_count<_Lp>& __rhs) const noexcept +16166: { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } +16166: +16166: +16166: friend inline bool +16166: operator==(const __weak_count& __a, const __weak_count& __b) noexcept +16166: { return __a._M_pi == __b._M_pi; } +16166: +16166: private: +16166: friend class __shared_count<_Lp>; +16166: +16166: +16166: +16166: +16166: _Sp_counted_base<_Lp>* _M_pi; +16166: }; +16166: +16166: +16166: template<_Lock_policy _Lp> +16166: inline +16166: __shared_count<_Lp>::__shared_count(const __weak_count<_Lp>& __r) +16166: : _M_pi(__r._M_pi) +16166: { +16166: if (_M_pi == nullptr || !_M_pi->_M_add_ref_lock_nothrow()) +16166: __throw_bad_weak_ptr(); +16166: } +16166: +16166: +16166: template<_Lock_policy _Lp> +16166: inline +16166: __shared_count<_Lp>:: +16166: __shared_count(const __weak_count<_Lp>& __r, std::nothrow_t) noexcept +16166: : _M_pi(__r._M_pi) +16166: { +16166: if (_M_pi && !_M_pi->_M_add_ref_lock_nothrow()) +16166: _M_pi = nullptr; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __sp_compatible_with +16166: : false_type +16166: { }; +16166: +16166: template +16166: struct __sp_compatible_with<_Yp*, _Tp*> +16166: : is_convertible<_Yp*, _Tp*>::type +16166: { }; +16166: +16166: template +16166: struct __sp_compatible_with<_Up(*)[_Nm], _Up(*)[]> +16166: : true_type +16166: { }; +16166: +16166: template +16166: struct __sp_compatible_with<_Up(*)[_Nm], const _Up(*)[]> +16166: : true_type +16166: { }; +16166: +16166: template +16166: struct __sp_compatible_with<_Up(*)[_Nm], volatile _Up(*)[]> +16166: : true_type +16166: { }; +16166: +16166: template +16166: struct __sp_compatible_with<_Up(*)[_Nm], const volatile _Up(*)[]> +16166: : true_type +16166: { }; +16166: +16166: +16166: template +16166: struct __sp_is_constructible_arrN +16166: : false_type +16166: { }; +16166: +16166: template +16166: struct __sp_is_constructible_arrN<_Up, _Nm, _Yp, __void_t<_Yp[_Nm]>> +16166: : is_convertible<_Yp(*)[_Nm], _Up(*)[_Nm]>::type +16166: { }; +16166: +16166: +16166: template +16166: struct __sp_is_constructible_arr +16166: : false_type +16166: { }; +16166: +16166: template +16166: struct __sp_is_constructible_arr<_Up, _Yp, __void_t<_Yp[]>> +16166: : is_convertible<_Yp(*)[], _Up(*)[]>::type +16166: { }; +16166: +16166: +16166: template +16166: struct __sp_is_constructible; +16166: +16166: +16166: template +16166: struct __sp_is_constructible<_Up[_Nm], _Yp> +16166: : __sp_is_constructible_arrN<_Up, _Nm, _Yp>::type +16166: { }; +16166: +16166: +16166: template +16166: struct __sp_is_constructible<_Up[], _Yp> +16166: : __sp_is_constructible_arr<_Up, _Yp>::type +16166: { }; +16166: +16166: +16166: template +16166: struct __sp_is_constructible +16166: : is_convertible<_Yp*, _Tp*>::type +16166: { }; +16166: +16166: +16166: +16166: template::value, bool = is_void<_Tp>::value> +16166: class __shared_ptr_access +16166: { +16166: public: +16166: using element_type = _Tp; +16166: +16166: element_type& +16166: operator*() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) std::__glibcxx_assert_fail(); } while (false); +16166: return *_M_get(); +16166: } +16166: +16166: element_type* +16166: operator->() const noexcept +16166: { +16166: ; +16166: return _M_get(); +16166: } +16166: +16166: private: +16166: element_type* +16166: _M_get() const noexcept +16166: { return static_cast*>(this)->get(); } +16166: }; +16166: +16166: +16166: template +16166: class __shared_ptr_access<_Tp, _Lp, false, true> +16166: { +16166: public: +16166: using element_type = _Tp; +16166: +16166: element_type* +16166: operator->() const noexcept +16166: { +16166: auto __ptr = static_cast*>(this)->get(); +16166: ; +16166: return __ptr; +16166: } +16166: }; +16166: +16166: +16166: template +16166: class __shared_ptr_access<_Tp, _Lp, true, false> +16166: { +16166: public: +16166: using element_type = typename remove_extent<_Tp>::type; +16166: # 1408 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: element_type& +16166: operator[](ptrdiff_t __i) const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_get() != nullptr)) std::__glibcxx_assert_fail(); } while (false); +16166: do { if (std::__is_constant_evaluated() && !bool(!extent<_Tp>::value || __i < extent<_Tp>::value)) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_get()[__i]; +16166: } +16166: +16166: private: +16166: element_type* +16166: _M_get() const noexcept +16166: { return static_cast*>(this)->get(); } +16166: }; +16166: +16166: template +16166: class __shared_ptr +16166: : public __shared_ptr_access<_Tp, _Lp> +16166: { +16166: public: +16166: using element_type = typename remove_extent<_Tp>::type; +16166: +16166: private: +16166: +16166: template +16166: using _SafeConv +16166: = typename enable_if<__sp_is_constructible<_Tp, _Yp>::value>::type; +16166: +16166: +16166: template +16166: using _Compatible = typename +16166: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; +16166: +16166: +16166: template +16166: using _Assignable = _Compatible<_Yp, __shared_ptr&>; +16166: +16166: +16166: template::pointer> +16166: using _UniqCompatible = __enable_if_t<__and_< +16166: __sp_compatible_with<_Yp*, _Tp*>, +16166: is_convertible<_Ptr, element_type*>, +16166: is_move_constructible<_Del> +16166: >::value, _Res>; +16166: +16166: +16166: template +16166: using _UniqAssignable = _UniqCompatible<_Yp, _Del, __shared_ptr&>; +16166: +16166: public: +16166: +16166: +16166: using weak_type = __weak_ptr<_Tp, _Lp>; +16166: +16166: +16166: constexpr __shared_ptr() noexcept +16166: : _M_ptr(0), _M_refcount() +16166: { } +16166: +16166: template> +16166: explicit +16166: __shared_ptr(_Yp* __p) +16166: : _M_ptr(__p), _M_refcount(__p, typename is_array<_Tp>::type()) +16166: { +16166: static_assert( !is_void<_Yp>::value, "incomplete type" ); +16166: static_assert( sizeof(_Yp) > 0, "incomplete type" ); +16166: _M_enable_shared_from_this_with(__p); +16166: } +16166: +16166: template> +16166: __shared_ptr(_Yp* __p, _Deleter __d) +16166: : _M_ptr(__p), _M_refcount(__p, std::move(__d)) +16166: { +16166: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, +16166: "deleter expression d(p) is well-formed"); +16166: _M_enable_shared_from_this_with(__p); +16166: } +16166: +16166: template> +16166: __shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) +16166: : _M_ptr(__p), _M_refcount(__p, std::move(__d), std::move(__a)) +16166: { +16166: static_assert(__is_invocable<_Deleter&, _Yp*&>::value, +16166: "deleter expression d(p) is well-formed"); +16166: _M_enable_shared_from_this_with(__p); +16166: } +16166: +16166: template +16166: __shared_ptr(nullptr_t __p, _Deleter __d) +16166: : _M_ptr(0), _M_refcount(__p, std::move(__d)) +16166: { } +16166: +16166: template +16166: __shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) +16166: : _M_ptr(0), _M_refcount(__p, std::move(__d), std::move(__a)) +16166: { } +16166: +16166: +16166: template +16166: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r, +16166: element_type* __p) noexcept +16166: : _M_ptr(__p), _M_refcount(__r._M_refcount) +16166: { } +16166: +16166: +16166: template +16166: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r, +16166: element_type* __p) noexcept +16166: : _M_ptr(__p), _M_refcount() +16166: { +16166: _M_refcount._M_swap(__r._M_refcount); +16166: __r._M_ptr = nullptr; +16166: } +16166: +16166: __shared_ptr(const __shared_ptr&) noexcept = default; +16166: __shared_ptr& operator=(const __shared_ptr&) noexcept = default; +16166: ~__shared_ptr() = default; +16166: +16166: template> +16166: __shared_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept +16166: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) +16166: { } +16166: +16166: __shared_ptr(__shared_ptr&& __r) noexcept +16166: : _M_ptr(__r._M_ptr), _M_refcount() +16166: { +16166: _M_refcount._M_swap(__r._M_refcount); +16166: __r._M_ptr = nullptr; +16166: } +16166: +16166: template> +16166: __shared_ptr(__shared_ptr<_Yp, _Lp>&& __r) noexcept +16166: : _M_ptr(__r._M_ptr), _M_refcount() +16166: { +16166: _M_refcount._M_swap(__r._M_refcount); +16166: __r._M_ptr = nullptr; +16166: } +16166: +16166: template> +16166: explicit __shared_ptr(const __weak_ptr<_Yp, _Lp>& __r) +16166: : _M_refcount(__r._M_refcount) +16166: { +16166: +16166: +16166: _M_ptr = __r._M_ptr; +16166: } +16166: +16166: +16166: template> +16166: __shared_ptr(unique_ptr<_Yp, _Del>&& __r) +16166: : _M_ptr(__r.get()), _M_refcount() +16166: { +16166: auto __raw = __to_address(__r.get()); +16166: _M_refcount = __shared_count<_Lp>(std::move(__r)); +16166: _M_enable_shared_from_this_with(__raw); +16166: } +16166: # 1586 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: template> +16166: __shared_ptr(auto_ptr<_Yp>&& __r); +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } +16166: +16166: template +16166: _Assignable<_Yp> +16166: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept +16166: { +16166: _M_ptr = __r._M_ptr; +16166: _M_refcount = __r._M_refcount; +16166: return *this; +16166: } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: template +16166: _Assignable<_Yp> +16166: operator=(auto_ptr<_Yp>&& __r) +16166: { +16166: __shared_ptr(std::move(__r)).swap(*this); +16166: return *this; +16166: } +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: __shared_ptr& +16166: operator=(__shared_ptr&& __r) noexcept +16166: { +16166: __shared_ptr(std::move(__r)).swap(*this); +16166: return *this; +16166: } +16166: +16166: template +16166: _Assignable<_Yp> +16166: operator=(__shared_ptr<_Yp, _Lp>&& __r) noexcept +16166: { +16166: __shared_ptr(std::move(__r)).swap(*this); +16166: return *this; +16166: } +16166: +16166: template +16166: _UniqAssignable<_Yp, _Del> +16166: operator=(unique_ptr<_Yp, _Del>&& __r) +16166: { +16166: __shared_ptr(std::move(__r)).swap(*this); +16166: return *this; +16166: } +16166: +16166: void +16166: reset() noexcept +16166: { __shared_ptr().swap(*this); } +16166: +16166: template +16166: _SafeConv<_Yp> +16166: reset(_Yp* __p) +16166: { +16166: +16166: do { if (std::__is_constant_evaluated() && !bool(__p == nullptr || __p != _M_ptr)) std::__glibcxx_assert_fail(); } while (false); +16166: __shared_ptr(__p).swap(*this); +16166: } +16166: +16166: template +16166: _SafeConv<_Yp> +16166: reset(_Yp* __p, _Deleter __d) +16166: { __shared_ptr(__p, std::move(__d)).swap(*this); } +16166: +16166: template +16166: _SafeConv<_Yp> +16166: reset(_Yp* __p, _Deleter __d, _Alloc __a) +16166: { __shared_ptr(__p, std::move(__d), std::move(__a)).swap(*this); } +16166: +16166: +16166: element_type* +16166: get() const noexcept +16166: { return _M_ptr; } +16166: +16166: +16166: explicit operator bool() const noexcept +16166: { return _M_ptr != nullptr; } +16166: +16166: +16166: bool +16166: unique() const noexcept +16166: { return _M_refcount._M_unique(); } +16166: +16166: +16166: long +16166: use_count() const noexcept +16166: { return _M_refcount._M_get_use_count(); } +16166: +16166: +16166: void +16166: swap(__shared_ptr<_Tp, _Lp>& __other) noexcept +16166: { +16166: std::swap(_M_ptr, __other._M_ptr); +16166: _M_refcount._M_swap(__other._M_refcount); +16166: } +16166: # 1698 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: template +16166: bool +16166: owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const noexcept +16166: { return _M_refcount._M_less(__rhs._M_refcount); } +16166: +16166: template +16166: bool +16166: owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept +16166: { return _M_refcount._M_less(__rhs._M_refcount); } +16166: +16166: +16166: protected: +16166: +16166: template +16166: __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) +16166: : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) +16166: { _M_enable_shared_from_this_with(_M_ptr); } +16166: +16166: template +16166: friend __shared_ptr<_Tp1, _Lp1> +16166: __allocate_shared(const _Alloc& __a, _Args&&... __args); +16166: # 1732 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: __shared_ptr(const __weak_ptr<_Tp, _Lp>& __r, std::nothrow_t) noexcept +16166: : _M_refcount(__r._M_refcount, std::nothrow) +16166: { +16166: _M_ptr = _M_refcount._M_get_use_count() ? __r._M_ptr : nullptr; +16166: } +16166: +16166: friend class __weak_ptr<_Tp, _Lp>; +16166: +16166: private: +16166: +16166: template +16166: using __esft_base_t = decltype(__enable_shared_from_this_base( +16166: std::declval&>(), +16166: std::declval<_Yp*>())); +16166: +16166: +16166: template +16166: struct __has_esft_base +16166: : false_type { }; +16166: +16166: template +16166: struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> +16166: : __not_> { }; +16166: +16166: template::type> +16166: typename enable_if<__has_esft_base<_Yp2>::value>::type +16166: _M_enable_shared_from_this_with(_Yp* __p) noexcept +16166: { +16166: if (auto __base = __enable_shared_from_this_base(_M_refcount, __p)) +16166: __base->_M_weak_assign(const_cast<_Yp2*>(__p), _M_refcount); +16166: } +16166: +16166: template::type> +16166: typename enable_if::value>::type +16166: _M_enable_shared_from_this_with(_Yp*) noexcept +16166: { } +16166: +16166: void* +16166: _M_get_deleter(const std::type_info& __ti) const noexcept +16166: { return _M_refcount._M_get_deleter(__ti); } +16166: +16166: template friend class __shared_ptr; +16166: template friend class __weak_ptr; +16166: +16166: template +16166: friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; +16166: +16166: template +16166: friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; +16166: # 1789 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: element_type* _M_ptr; +16166: __shared_count<_Lp> _M_refcount; +16166: }; +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator==(const __shared_ptr<_Tp1, _Lp>& __a, +16166: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +16166: { return __a.get() == __b.get(); } +16166: +16166: template +16166: inline bool +16166: operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +16166: { return !__a; } +16166: # 1821 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: template +16166: inline bool +16166: operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +16166: { return !__a; } +16166: +16166: template +16166: inline bool +16166: operator!=(const __shared_ptr<_Tp1, _Lp>& __a, +16166: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +16166: { return __a.get() != __b.get(); } +16166: +16166: template +16166: inline bool +16166: operator!=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +16166: { return (bool)__a; } +16166: +16166: template +16166: inline bool +16166: operator!=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +16166: { return (bool)__a; } +16166: +16166: template +16166: inline bool +16166: operator<(const __shared_ptr<_Tp, _Lp>& __a, +16166: const __shared_ptr<_Up, _Lp>& __b) noexcept +16166: { +16166: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; +16166: using _Up_elt = typename __shared_ptr<_Up, _Lp>::element_type; +16166: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; +16166: return less<_Vp>()(__a.get(), __b.get()); +16166: } +16166: +16166: template +16166: inline bool +16166: operator<(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +16166: { +16166: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; +16166: return less<_Tp_elt*>()(__a.get(), nullptr); +16166: } +16166: +16166: template +16166: inline bool +16166: operator<(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +16166: { +16166: using _Tp_elt = typename __shared_ptr<_Tp, _Lp>::element_type; +16166: return less<_Tp_elt*>()(nullptr, __a.get()); +16166: } +16166: +16166: template +16166: inline bool +16166: operator<=(const __shared_ptr<_Tp1, _Lp>& __a, +16166: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +16166: { return !(__b < __a); } +16166: +16166: template +16166: inline bool +16166: operator<=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +16166: { return !(nullptr < __a); } +16166: +16166: template +16166: inline bool +16166: operator<=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +16166: { return !(__a < nullptr); } +16166: +16166: template +16166: inline bool +16166: operator>(const __shared_ptr<_Tp1, _Lp>& __a, +16166: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +16166: { return (__b < __a); } +16166: +16166: template +16166: inline bool +16166: operator>(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +16166: { return nullptr < __a; } +16166: +16166: template +16166: inline bool +16166: operator>(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +16166: { return __a < nullptr; } +16166: +16166: template +16166: inline bool +16166: operator>=(const __shared_ptr<_Tp1, _Lp>& __a, +16166: const __shared_ptr<_Tp2, _Lp>& __b) noexcept +16166: { return !(__a < __b); } +16166: +16166: template +16166: inline bool +16166: operator>=(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept +16166: { return !(__a < nullptr); } +16166: +16166: template +16166: inline bool +16166: operator>=(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept +16166: { return !(nullptr < __a); } +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) noexcept +16166: { __a.swap(__b); } +16166: # 1931 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: template +16166: inline __shared_ptr<_Tp, _Lp> +16166: static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +16166: { +16166: using _Sp = __shared_ptr<_Tp, _Lp>; +16166: return _Sp(__r, static_cast(__r.get())); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline __shared_ptr<_Tp, _Lp> +16166: const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +16166: { +16166: using _Sp = __shared_ptr<_Tp, _Lp>; +16166: return _Sp(__r, const_cast(__r.get())); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline __shared_ptr<_Tp, _Lp> +16166: dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +16166: { +16166: using _Sp = __shared_ptr<_Tp, _Lp>; +16166: if (auto* __p = dynamic_cast(__r.get())) +16166: return _Sp(__r, __p); +16166: return _Sp(); +16166: } +16166: +16166: +16166: template +16166: inline __shared_ptr<_Tp, _Lp> +16166: reinterpret_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) noexcept +16166: { +16166: using _Sp = __shared_ptr<_Tp, _Lp>; +16166: return _Sp(__r, reinterpret_cast(__r.get())); +16166: } +16166: +16166: +16166: template +16166: class __weak_ptr +16166: { +16166: template +16166: using _Compatible = typename +16166: enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type; +16166: +16166: +16166: template +16166: using _Assignable = _Compatible<_Yp, __weak_ptr&>; +16166: +16166: public: +16166: using element_type = typename remove_extent<_Tp>::type; +16166: +16166: constexpr __weak_ptr() noexcept +16166: : _M_ptr(nullptr), _M_refcount() +16166: { } +16166: +16166: __weak_ptr(const __weak_ptr&) noexcept = default; +16166: +16166: ~__weak_ptr() = default; +16166: # 2013 "/usr/include/c++/14/bits/shared_ptr_base.h" 3 +16166: template> +16166: __weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept +16166: : _M_refcount(__r._M_refcount) +16166: { _M_ptr = __r.lock().get(); } +16166: +16166: template> +16166: __weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept +16166: : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) +16166: { } +16166: +16166: __weak_ptr(__weak_ptr&& __r) noexcept +16166: : _M_ptr(__r._M_ptr), _M_refcount(std::move(__r._M_refcount)) +16166: { __r._M_ptr = nullptr; } +16166: +16166: template> +16166: __weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept +16166: : _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount)) +16166: { __r._M_ptr = nullptr; } +16166: +16166: __weak_ptr& +16166: operator=(const __weak_ptr& __r) noexcept = default; +16166: +16166: template +16166: _Assignable<_Yp> +16166: operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept +16166: { +16166: _M_ptr = __r.lock().get(); +16166: _M_refcount = __r._M_refcount; +16166: return *this; +16166: } +16166: +16166: template +16166: _Assignable<_Yp> +16166: operator=(const __shared_ptr<_Yp, _Lp>& __r) noexcept +16166: { +16166: _M_ptr = __r._M_ptr; +16166: _M_refcount = __r._M_refcount; +16166: return *this; +16166: } +16166: +16166: __weak_ptr& +16166: operator=(__weak_ptr&& __r) noexcept +16166: { +16166: __weak_ptr(std::move(__r)).swap(*this); +16166: return *this; +16166: } +16166: +16166: template +16166: _Assignable<_Yp> +16166: operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept +16166: { +16166: _M_ptr = __r.lock().get(); +16166: _M_refcount = std::move(__r._M_refcount); +16166: __r._M_ptr = nullptr; +16166: return *this; +16166: } +16166: +16166: __shared_ptr<_Tp, _Lp> +16166: lock() const noexcept +16166: { return __shared_ptr(*this, std::nothrow); } +16166: +16166: long +16166: use_count() const noexcept +16166: { return _M_refcount._M_get_use_count(); } +16166: +16166: bool +16166: expired() const noexcept +16166: { return _M_refcount._M_get_use_count() == 0; } +16166: +16166: template +16166: bool +16166: owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const noexcept +16166: { return _M_refcount._M_less(__rhs._M_refcount); } +16166: +16166: template +16166: bool +16166: owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const noexcept +16166: { return _M_refcount._M_less(__rhs._M_refcount); } +16166: +16166: void +16166: reset() noexcept +16166: { __weak_ptr().swap(*this); } +16166: +16166: void +16166: swap(__weak_ptr& __s) noexcept +16166: { +16166: std::swap(_M_ptr, __s._M_ptr); +16166: _M_refcount._M_swap(__s._M_refcount); +16166: } +16166: +16166: private: +16166: +16166: void +16166: _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) noexcept +16166: { +16166: if (use_count() == 0) +16166: { +16166: _M_ptr = __ptr; +16166: _M_refcount = __refcount; +16166: } +16166: } +16166: +16166: template friend class __shared_ptr; +16166: template friend class __weak_ptr; +16166: friend class __enable_shared_from_this<_Tp, _Lp>; +16166: friend class enable_shared_from_this<_Tp>; +16166: +16166: +16166: +16166: +16166: element_type* _M_ptr; +16166: __weak_count<_Lp> _M_refcount; +16166: }; +16166: +16166: +16166: template +16166: inline void +16166: swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) noexcept +16166: { __a.swap(__b); } +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: template +16166: struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> +16166: { +16166: bool +16166: operator()(const _Tp& __lhs, const _Tp& __rhs) const noexcept +16166: { return __lhs.owner_before(__rhs); } +16166: +16166: bool +16166: operator()(const _Tp& __lhs, const _Tp1& __rhs) const noexcept +16166: { return __lhs.owner_before(__rhs); } +16166: +16166: bool +16166: operator()(const _Tp1& __lhs, const _Tp& __rhs) const noexcept +16166: { return __lhs.owner_before(__rhs); } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: template<> +16166: struct _Sp_owner_less +16166: { +16166: template +16166: auto +16166: operator()(const _Tp& __lhs, const _Up& __rhs) const noexcept +16166: -> decltype(__lhs.owner_before(__rhs)) +16166: { return __lhs.owner_before(__rhs); } +16166: +16166: using is_transparent = void; +16166: }; +16166: +16166: template +16166: struct owner_less<__shared_ptr<_Tp, _Lp>> +16166: : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> +16166: { }; +16166: +16166: template +16166: struct owner_less<__weak_ptr<_Tp, _Lp>> +16166: : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> +16166: { }; +16166: +16166: +16166: template +16166: class __enable_shared_from_this +16166: { +16166: protected: +16166: constexpr __enable_shared_from_this() noexcept { } +16166: +16166: __enable_shared_from_this(const __enable_shared_from_this&) noexcept { } +16166: +16166: __enable_shared_from_this& +16166: operator=(const __enable_shared_from_this&) noexcept +16166: { return *this; } +16166: +16166: ~__enable_shared_from_this() { } +16166: +16166: public: +16166: __shared_ptr<_Tp, _Lp> +16166: shared_from_this() +16166: { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } +16166: +16166: __shared_ptr +16166: shared_from_this() const +16166: { return __shared_ptr(this->_M_weak_this); } +16166: +16166: +16166: __weak_ptr<_Tp, _Lp> +16166: weak_from_this() noexcept +16166: { return this->_M_weak_this; } +16166: +16166: __weak_ptr +16166: weak_from_this() const noexcept +16166: { return this->_M_weak_this; } +16166: +16166: +16166: private: +16166: template +16166: void +16166: _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept +16166: { _M_weak_this._M_assign(__p, __n); } +16166: +16166: friend const __enable_shared_from_this* +16166: __enable_shared_from_this_base(const __shared_count<_Lp>&, +16166: const __enable_shared_from_this* __p) +16166: { return __p; } +16166: +16166: template +16166: friend class __shared_ptr; +16166: +16166: mutable __weak_ptr<_Tp, _Lp> _M_weak_this; +16166: }; +16166: +16166: template +16166: inline __shared_ptr<_Tp, _Lp> +16166: __allocate_shared(const _Alloc& __a, _Args&&... __args) +16166: { +16166: static_assert(!is_array<_Tp>::value, "make_shared not supported"); +16166: +16166: return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: template +16166: inline __shared_ptr<_Tp, _Lp> +16166: __make_shared(_Args&&... __args) +16166: { +16166: typedef typename std::remove_const<_Tp>::type _Tp_nc; +16166: return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(), +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: template +16166: struct hash<__shared_ptr<_Tp, _Lp>> +16166: : public __hash_base> +16166: { +16166: size_t +16166: operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept +16166: { +16166: return hash::element_type*>()( +16166: __s.get()); +16166: } +16166: }; +16166: +16166: +16166: } +16166: # 54 "/usr/include/c++/14/bits/shared_ptr.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 68 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: inline std::basic_ostream<_Ch, _Tr>& +16166: operator<<(std::basic_ostream<_Ch, _Tr>& __os, +16166: const __shared_ptr<_Tp, _Lp>& __p) +16166: { +16166: __os << __p.get(); +16166: return __os; +16166: } +16166: +16166: template +16166: inline _Del* +16166: get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept +16166: { +16166: +16166: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline _Del* +16166: get_deleter(const shared_ptr<_Tp>& __p) noexcept +16166: { +16166: +16166: return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +16166: +16166: +16166: +16166: } +16166: # 111 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: using _NonArray = __enable_if_t::value, _Tp>; +16166: # 174 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: class shared_ptr : public __shared_ptr<_Tp> +16166: { +16166: template +16166: using _Constructible = typename enable_if< +16166: is_constructible<__shared_ptr<_Tp>, _Args...>::value +16166: >::type; +16166: +16166: template +16166: using _Assignable = typename enable_if< +16166: is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& +16166: >::type; +16166: +16166: public: +16166: +16166: +16166: using element_type = typename __shared_ptr<_Tp>::element_type; +16166: +16166: +16166: +16166: +16166: using weak_type = weak_ptr<_Tp>; +16166: +16166: +16166: +16166: +16166: +16166: constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } +16166: +16166: shared_ptr(const shared_ptr&) noexcept = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: explicit +16166: shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } +16166: # 228 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template> +16166: shared_ptr(_Yp* __p, _Deleter __d) +16166: : __shared_ptr<_Tp>(__p, std::move(__d)) { } +16166: # 246 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: shared_ptr(nullptr_t __p, _Deleter __d) +16166: : __shared_ptr<_Tp>(__p, std::move(__d)) { } +16166: # 265 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template> +16166: shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) +16166: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } +16166: # 285 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) +16166: : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } +16166: # 309 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept +16166: : __shared_ptr<_Tp>(__r, __p) { } +16166: # 348 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template&>> +16166: shared_ptr(const shared_ptr<_Yp>& __r) noexcept +16166: : __shared_ptr<_Tp>(__r) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: shared_ptr(shared_ptr&& __r) noexcept +16166: : __shared_ptr<_Tp>(std::move(__r)) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template>> +16166: shared_ptr(shared_ptr<_Yp>&& __r) noexcept +16166: : __shared_ptr<_Tp>(std::move(__r)) { } +16166: # 378 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template&>> +16166: explicit shared_ptr(const weak_ptr<_Yp>& __r) +16166: : __shared_ptr<_Tp>(__r) { } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: template>> +16166: shared_ptr(auto_ptr<_Yp>&& __r); +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: template>> +16166: shared_ptr(unique_ptr<_Yp, _Del>&& __r) +16166: : __shared_ptr<_Tp>(std::move(__r)) { } +16166: # 411 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } +16166: +16166: shared_ptr& operator=(const shared_ptr&) noexcept = default; +16166: +16166: template +16166: _Assignable&> +16166: operator=(const shared_ptr<_Yp>& __r) noexcept +16166: { +16166: this->__shared_ptr<_Tp>::operator=(__r); +16166: return *this; +16166: } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: template +16166: _Assignable> +16166: operator=(auto_ptr<_Yp>&& __r) +16166: { +16166: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +16166: return *this; +16166: } +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: shared_ptr& +16166: operator=(shared_ptr&& __r) noexcept +16166: { +16166: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +16166: return *this; +16166: } +16166: +16166: template +16166: _Assignable> +16166: operator=(shared_ptr<_Yp>&& __r) noexcept +16166: { +16166: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +16166: return *this; +16166: } +16166: +16166: template +16166: _Assignable> +16166: operator=(unique_ptr<_Yp, _Del>&& __r) +16166: { +16166: this->__shared_ptr<_Tp>::operator=(std::move(__r)); +16166: return *this; +16166: } +16166: +16166: private: +16166: +16166: template +16166: shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) +16166: : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: friend shared_ptr<_NonArray<_Yp>> +16166: allocate_shared(const _Alloc&, _Args&&...); +16166: +16166: template +16166: friend shared_ptr<_NonArray<_Yp>> +16166: make_shared(_Args&&...); +16166: # 534 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) noexcept +16166: : __shared_ptr<_Tp>(__r, std::nothrow) { } +16166: +16166: friend class weak_ptr<_Tp>; +16166: }; +16166: +16166: +16166: template +16166: shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>; +16166: template +16166: shared_ptr(unique_ptr<_Tp, _Del>) -> shared_ptr<_Tp>; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +16166: { return __a.get() == __b.get(); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +16166: { return !__a; } +16166: # 579 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +16166: { return !__a; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +16166: { return __a.get() != __b.get(); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +16166: { return (bool)__a; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +16166: { return (bool)__a; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +16166: { +16166: using _Tp_elt = typename shared_ptr<_Tp>::element_type; +16166: using _Up_elt = typename shared_ptr<_Up>::element_type; +16166: using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; +16166: return less<_Vp>()(__a.get(), __b.get()); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +16166: { +16166: using _Tp_elt = typename shared_ptr<_Tp>::element_type; +16166: return less<_Tp_elt*>()(__a.get(), nullptr); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +16166: { +16166: using _Tp_elt = typename shared_ptr<_Tp>::element_type; +16166: return less<_Tp_elt*>()(nullptr, __a.get()); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +16166: { return !(__b < __a); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +16166: { return !(nullptr < __a); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +16166: { return !(__a < nullptr); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +16166: { return (__b < __a); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +16166: { return nullptr < __a; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +16166: { return __a < nullptr; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept +16166: { return !(__a < __b); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept +16166: { return !(__a < nullptr); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] inline bool +16166: operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept +16166: { return !(nullptr < __a); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept +16166: { __a.swap(__b); } +16166: +16166: +16166: +16166: +16166: template +16166: inline shared_ptr<_Tp> +16166: static_pointer_cast(const shared_ptr<_Up>& __r) noexcept +16166: { +16166: using _Sp = shared_ptr<_Tp>; +16166: return _Sp(__r, static_cast(__r.get())); +16166: } +16166: +16166: +16166: template +16166: inline shared_ptr<_Tp> +16166: const_pointer_cast(const shared_ptr<_Up>& __r) noexcept +16166: { +16166: using _Sp = shared_ptr<_Tp>; +16166: return _Sp(__r, const_cast(__r.get())); +16166: } +16166: +16166: +16166: template +16166: inline shared_ptr<_Tp> +16166: dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept +16166: { +16166: using _Sp = shared_ptr<_Tp>; +16166: if (auto* __p = dynamic_cast(__r.get())) +16166: return _Sp(__r, __p); +16166: return _Sp(); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: inline shared_ptr<_Tp> +16166: reinterpret_pointer_cast(const shared_ptr<_Up>& __r) noexcept +16166: { +16166: using _Sp = shared_ptr<_Tp>; +16166: return _Sp(__r, reinterpret_cast(__r.get())); +16166: } +16166: # 809 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: class weak_ptr : public __weak_ptr<_Tp> +16166: { +16166: template +16166: using _Constructible = typename enable_if< +16166: is_constructible<__weak_ptr<_Tp>, _Arg>::value +16166: >::type; +16166: +16166: template +16166: using _Assignable = typename enable_if< +16166: is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& +16166: >::type; +16166: +16166: public: +16166: constexpr weak_ptr() noexcept = default; +16166: +16166: template&>> +16166: weak_ptr(const shared_ptr<_Yp>& __r) noexcept +16166: : __weak_ptr<_Tp>(__r) { } +16166: +16166: weak_ptr(const weak_ptr&) noexcept = default; +16166: +16166: template&>> +16166: weak_ptr(const weak_ptr<_Yp>& __r) noexcept +16166: : __weak_ptr<_Tp>(__r) { } +16166: +16166: weak_ptr(weak_ptr&&) noexcept = default; +16166: +16166: template>> +16166: weak_ptr(weak_ptr<_Yp>&& __r) noexcept +16166: : __weak_ptr<_Tp>(std::move(__r)) { } +16166: +16166: weak_ptr& +16166: operator=(const weak_ptr& __r) noexcept = default; +16166: +16166: template +16166: _Assignable&> +16166: operator=(const weak_ptr<_Yp>& __r) noexcept +16166: { +16166: this->__weak_ptr<_Tp>::operator=(__r); +16166: return *this; +16166: } +16166: +16166: template +16166: _Assignable&> +16166: operator=(const shared_ptr<_Yp>& __r) noexcept +16166: { +16166: this->__weak_ptr<_Tp>::operator=(__r); +16166: return *this; +16166: } +16166: +16166: weak_ptr& +16166: operator=(weak_ptr&& __r) noexcept = default; +16166: +16166: template +16166: _Assignable> +16166: operator=(weak_ptr<_Yp>&& __r) noexcept +16166: { +16166: this->__weak_ptr<_Tp>::operator=(std::move(__r)); +16166: return *this; +16166: } +16166: +16166: shared_ptr<_Tp> +16166: lock() const noexcept +16166: { return shared_ptr<_Tp>(*this, std::nothrow); } +16166: }; +16166: +16166: +16166: template +16166: weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept +16166: { __a.swap(__b); } +16166: +16166: +16166: +16166: template +16166: struct owner_less; +16166: +16166: +16166: template<> +16166: struct owner_less : _Sp_owner_less +16166: { }; +16166: +16166: +16166: template +16166: struct owner_less> +16166: : public _Sp_owner_less, weak_ptr<_Tp>> +16166: { }; +16166: +16166: +16166: template +16166: struct owner_less> +16166: : public _Sp_owner_less, shared_ptr<_Tp>> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class enable_shared_from_this +16166: { +16166: protected: +16166: constexpr enable_shared_from_this() noexcept { } +16166: +16166: enable_shared_from_this(const enable_shared_from_this&) noexcept { } +16166: +16166: enable_shared_from_this& +16166: operator=(const enable_shared_from_this&) noexcept +16166: { return *this; } +16166: +16166: ~enable_shared_from_this() { } +16166: +16166: public: +16166: shared_ptr<_Tp> +16166: shared_from_this() +16166: { return shared_ptr<_Tp>(this->_M_weak_this); } +16166: +16166: shared_ptr +16166: shared_from_this() const +16166: { return shared_ptr(this->_M_weak_this); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: weak_ptr<_Tp> +16166: weak_from_this() noexcept +16166: { return this->_M_weak_this; } +16166: +16166: weak_ptr +16166: weak_from_this() const noexcept +16166: { return this->_M_weak_this; } +16166: +16166: +16166: +16166: private: +16166: template +16166: void +16166: _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept +16166: { _M_weak_this._M_assign(__p, __n); } +16166: +16166: +16166: friend const enable_shared_from_this* +16166: __enable_shared_from_this_base(const __shared_count<>&, +16166: const enable_shared_from_this* __p) +16166: { return __p; } +16166: +16166: template +16166: friend class __shared_ptr; +16166: +16166: mutable weak_ptr<_Tp> _M_weak_this; +16166: }; +16166: # 986 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: inline shared_ptr<_NonArray<_Tp>> +16166: allocate_shared(const _Alloc& __a, _Args&&... __args) +16166: { +16166: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 1001 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: inline shared_ptr<_NonArray<_Tp>> +16166: make_shared(_Args&&... __args) +16166: { +16166: using _Alloc = allocator; +16166: _Alloc __a; +16166: return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 1150 "/usr/include/c++/14/bits/shared_ptr.h" 3 +16166: template +16166: struct hash> +16166: : public __hash_base> +16166: { +16166: size_t +16166: operator()(const shared_ptr<_Tp>& __s) const noexcept +16166: { +16166: return std::hash::element_type*>()(__s.get()); +16166: } +16166: }; +16166: +16166: +16166: template +16166: static constexpr bool __is_shared_ptr = false; +16166: template +16166: static constexpr bool __is_shared_ptr> = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace __detail::__variant +16166: { +16166: template struct _Never_valueless_alt; +16166: +16166: +16166: +16166: template +16166: struct _Never_valueless_alt> +16166: : std::true_type +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct _Never_valueless_alt> +16166: : std::true_type +16166: { }; +16166: } +16166: +16166: +16166: +16166: } +16166: # 81 "/usr/include/c++/14/memory" 2 3 +16166: # 1 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 1 3 +16166: # 62 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 74 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: struct _Sp_locker +16166: { +16166: _Sp_locker(const _Sp_locker&) = delete; +16166: _Sp_locker& operator=(const _Sp_locker&) = delete; +16166: +16166: +16166: explicit +16166: _Sp_locker(const void*) noexcept; +16166: _Sp_locker(const void*, const void*) noexcept; +16166: ~_Sp_locker(); +16166: +16166: private: +16166: unsigned char _M_key1; +16166: unsigned char _M_key2; +16166: +16166: +16166: +16166: }; +16166: # 101 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: template +16166: +16166: inline bool +16166: atomic_is_lock_free(const __shared_ptr<_Tp, _Lp>*) +16166: { +16166: +16166: return __gthread_active_p() == 0; +16166: +16166: +16166: +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: atomic_is_lock_free(const shared_ptr<_Tp>* __p) +16166: { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } +16166: # 130 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: template +16166: +16166: inline shared_ptr<_Tp> +16166: atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order) +16166: { +16166: _Sp_locker __lock{__p}; +16166: return *__p; +16166: } +16166: +16166: template +16166: +16166: inline shared_ptr<_Tp> +16166: atomic_load(const shared_ptr<_Tp>* __p) +16166: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } +16166: +16166: template +16166: +16166: inline __shared_ptr<_Tp, _Lp> +16166: atomic_load_explicit(const __shared_ptr<_Tp, _Lp>* __p, memory_order) +16166: { +16166: _Sp_locker __lock{__p}; +16166: return *__p; +16166: } +16166: +16166: template +16166: +16166: inline __shared_ptr<_Tp, _Lp> +16166: atomic_load(const __shared_ptr<_Tp, _Lp>* __p) +16166: { return std::atomic_load_explicit(__p, memory_order_seq_cst); } +16166: # 170 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: template +16166: +16166: inline void +16166: atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, +16166: memory_order) +16166: { +16166: _Sp_locker __lock{__p}; +16166: __p->swap(__r); +16166: } +16166: +16166: template +16166: +16166: inline void +16166: atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) +16166: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } +16166: +16166: template +16166: +16166: inline void +16166: atomic_store_explicit(__shared_ptr<_Tp, _Lp>* __p, +16166: __shared_ptr<_Tp, _Lp> __r, +16166: memory_order) +16166: { +16166: _Sp_locker __lock{__p}; +16166: __p->swap(__r); +16166: } +16166: +16166: template +16166: +16166: inline void +16166: atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) +16166: { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); } +16166: # 211 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: template +16166: +16166: inline shared_ptr<_Tp> +16166: atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, +16166: memory_order) +16166: { +16166: _Sp_locker __lock{__p}; +16166: __p->swap(__r); +16166: return __r; +16166: } +16166: +16166: template +16166: +16166: inline shared_ptr<_Tp> +16166: atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) +16166: { +16166: return std::atomic_exchange_explicit(__p, std::move(__r), +16166: memory_order_seq_cst); +16166: } +16166: +16166: template +16166: +16166: inline __shared_ptr<_Tp, _Lp> +16166: atomic_exchange_explicit(__shared_ptr<_Tp, _Lp>* __p, +16166: __shared_ptr<_Tp, _Lp> __r, +16166: memory_order) +16166: { +16166: _Sp_locker __lock{__p}; +16166: __p->swap(__r); +16166: return __r; +16166: } +16166: +16166: template +16166: +16166: inline __shared_ptr<_Tp, _Lp> +16166: atomic_exchange(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r) +16166: { +16166: return std::atomic_exchange_explicit(__p, std::move(__r), +16166: memory_order_seq_cst); +16166: } +16166: # 264 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: template +16166: +16166: bool +16166: atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, +16166: shared_ptr<_Tp>* __v, +16166: shared_ptr<_Tp> __w, +16166: memory_order, +16166: memory_order) +16166: { +16166: shared_ptr<_Tp> __x; +16166: _Sp_locker __lock{__p, __v}; +16166: owner_less> __less; +16166: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) +16166: { +16166: __x = std::move(*__p); +16166: *__p = std::move(__w); +16166: return true; +16166: } +16166: __x = std::move(*__v); +16166: *__v = *__p; +16166: return false; +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, +16166: shared_ptr<_Tp> __w) +16166: { +16166: return std::atomic_compare_exchange_strong_explicit(__p, __v, +16166: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, +16166: shared_ptr<_Tp>* __v, +16166: shared_ptr<_Tp> __w, +16166: memory_order __success, +16166: memory_order __failure) +16166: { +16166: return std::atomic_compare_exchange_strong_explicit(__p, __v, +16166: std::move(__w), __success, __failure); +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, +16166: shared_ptr<_Tp> __w) +16166: { +16166: return std::atomic_compare_exchange_weak_explicit(__p, __v, +16166: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +16166: } +16166: +16166: template +16166: +16166: bool +16166: atomic_compare_exchange_strong_explicit(__shared_ptr<_Tp, _Lp>* __p, +16166: __shared_ptr<_Tp, _Lp>* __v, +16166: __shared_ptr<_Tp, _Lp> __w, +16166: memory_order, +16166: memory_order) +16166: { +16166: __shared_ptr<_Tp, _Lp> __x; +16166: _Sp_locker __lock{__p, __v}; +16166: owner_less<__shared_ptr<_Tp, _Lp>> __less; +16166: if (*__p == *__v && !__less(*__p, *__v) && !__less(*__v, *__p)) +16166: { +16166: __x = std::move(*__p); +16166: *__p = std::move(__w); +16166: return true; +16166: } +16166: __x = std::move(*__v); +16166: *__v = *__p; +16166: return false; +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: atomic_compare_exchange_strong(__shared_ptr<_Tp, _Lp>* __p, +16166: __shared_ptr<_Tp, _Lp>* __v, +16166: __shared_ptr<_Tp, _Lp> __w) +16166: { +16166: return std::atomic_compare_exchange_strong_explicit(__p, __v, +16166: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: atomic_compare_exchange_weak_explicit(__shared_ptr<_Tp, _Lp>* __p, +16166: __shared_ptr<_Tp, _Lp>* __v, +16166: __shared_ptr<_Tp, _Lp> __w, +16166: memory_order __success, +16166: memory_order __failure) +16166: { +16166: return std::atomic_compare_exchange_strong_explicit(__p, __v, +16166: std::move(__w), __success, __failure); +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: atomic_compare_exchange_weak(__shared_ptr<_Tp, _Lp>* __p, +16166: __shared_ptr<_Tp, _Lp>* __v, +16166: __shared_ptr<_Tp, _Lp> __w) +16166: { +16166: return std::atomic_compare_exchange_weak_explicit(__p, __v, +16166: std::move(__w), memory_order_seq_cst, memory_order_seq_cst); +16166: } +16166: # 867 "/usr/include/c++/14/bits/shared_ptr_atomic.h" 3 +16166: +16166: } +16166: # 82 "/usr/include/c++/14/memory" 2 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/backward/auto_ptr.h" 1 3 +16166: # 36 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 47 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: template +16166: struct auto_ptr_ref +16166: { +16166: _Tp1* _M_ptr; +16166: +16166: explicit +16166: auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } +16166: } __attribute__ ((__deprecated__)); +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: # 92 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: template +16166: class auto_ptr +16166: { +16166: private: +16166: _Tp* _M_ptr; +16166: +16166: public: +16166: +16166: typedef _Tp element_type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } +16166: # 118 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: auto_ptr(auto_ptr& __a) throw() : _M_ptr(__a.release()) { } +16166: # 130 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: template +16166: auto_ptr(auto_ptr<_Tp1>& __a) throw() : _M_ptr(__a.release()) { } +16166: # 141 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: auto_ptr& +16166: operator=(auto_ptr& __a) throw() +16166: { +16166: reset(__a.release()); +16166: return *this; +16166: } +16166: # 158 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: template +16166: auto_ptr& +16166: operator=(auto_ptr<_Tp1>& __a) throw() +16166: { +16166: reset(__a.release()); +16166: return *this; +16166: } +16166: # 176 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: ~auto_ptr() { delete _M_ptr; } +16166: # 186 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: element_type& +16166: operator*() const throw() +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) std::__glibcxx_assert_fail(); } while (false); +16166: return *_M_ptr; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: element_type* +16166: operator->() const throw() +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_ptr != 0)) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_ptr; +16166: } +16166: # 216 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: element_type* +16166: get() const throw() { return _M_ptr; } +16166: # 230 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: element_type* +16166: release() throw() +16166: { +16166: element_type* __tmp = _M_ptr; +16166: _M_ptr = 0; +16166: return __tmp; +16166: } +16166: # 245 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: void +16166: reset(element_type* __p = 0) throw() +16166: { +16166: if (__p != _M_ptr) +16166: { +16166: delete _M_ptr; +16166: _M_ptr = __p; +16166: } +16166: } +16166: # 270 "/usr/include/c++/14/backward/auto_ptr.h" 3 +16166: auto_ptr(auto_ptr_ref __ref) throw() +16166: : _M_ptr(__ref._M_ptr) { } +16166: +16166: auto_ptr& +16166: operator=(auto_ptr_ref __ref) throw() +16166: { +16166: if (__ref._M_ptr != this->get()) +16166: { +16166: delete _M_ptr; +16166: _M_ptr = __ref._M_ptr; +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: operator auto_ptr_ref<_Tp1>() throw() +16166: { return auto_ptr_ref<_Tp1>(this->release()); } +16166: +16166: template +16166: operator auto_ptr<_Tp1>() throw() +16166: { return auto_ptr<_Tp1>(this->release()); } +16166: } __attribute__ ((__deprecated__ ("use '" "std::unique_ptr" "' instead"))); +16166: +16166: +16166: +16166: template<> +16166: class auto_ptr +16166: { +16166: public: +16166: typedef void element_type; +16166: } __attribute__ ((__deprecated__)); +16166: +16166: +16166: +16166: template<_Lock_policy _Lp> +16166: template +16166: inline +16166: __shared_count<_Lp>::__shared_count(std::auto_ptr<_Tp>&& __r) +16166: : _M_pi(new _Sp_counted_ptr<_Tp*, _Lp>(__r.get())) +16166: { __r.release(); } +16166: +16166: template +16166: template +16166: inline +16166: __shared_ptr<_Tp, _Lp>::__shared_ptr(std::auto_ptr<_Tp1>&& __r) +16166: : _M_ptr(__r.get()), _M_refcount() +16166: { +16166: +16166: static_assert( sizeof(_Tp1) > 0, "incomplete type" ); +16166: _Tp1* __tmp = __r.get(); +16166: _M_refcount = __shared_count<_Lp>(std::move(__r)); +16166: _M_enable_shared_from_this_with(__tmp); +16166: } +16166: +16166: template +16166: template +16166: inline +16166: shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Tp1>&& __r) +16166: : __shared_ptr<_Tp>(std::move(__r)) { } +16166: +16166: +16166: template +16166: template +16166: inline +16166: unique_ptr<_Tp, _Dp>::unique_ptr(auto_ptr<_Up>&& __u) noexcept +16166: : _M_t(__u.release(), deleter_type()) { } +16166: +16166: +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: } +16166: # 87 "/usr/include/c++/14/memory" 2 3 +16166: # 115 "/usr/include/c++/14/memory" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 116 "/usr/include/c++/14/memory" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 136 "/usr/include/c++/14/memory" 3 +16166: enum class pointer_safety { relaxed, preferred, strict }; +16166: +16166: +16166: inline void +16166: declare_reachable(void*) { } +16166: +16166: +16166: template +16166: inline _Tp* +16166: undeclare_reachable(_Tp* __p) { return __p; } +16166: +16166: +16166: inline void +16166: declare_no_pointers(char*, size_t) { } +16166: +16166: +16166: inline void +16166: undeclare_no_pointers(char*, size_t) { } +16166: +16166: +16166: inline pointer_safety +16166: get_pointer_safety() noexcept { return pointer_safety::relaxed; } +16166: +16166: +16166: +16166: } +16166: # 171 "/usr/include/c++/14/memory" 3 +16166: # 1 "/usr/include/c++/14/pstl/glue_memory_defs.h" 1 3 +16166: # 13 "/usr/include/c++/14/pstl/glue_memory_defs.h" 3 +16166: # 1 "/usr/include/c++/14/pstl/execution_defs.h" 1 3 +16166: # 15 "/usr/include/c++/14/pstl/execution_defs.h" 3 +16166: namespace __pstl +16166: { +16166: namespace execution +16166: { +16166: inline namespace v1 +16166: { +16166: +16166: +16166: class sequenced_policy +16166: { +16166: }; +16166: +16166: +16166: class parallel_policy +16166: { +16166: }; +16166: +16166: +16166: class parallel_unsequenced_policy +16166: { +16166: }; +16166: +16166: class unsequenced_policy +16166: { +16166: }; +16166: +16166: +16166: inline constexpr sequenced_policy seq{}; +16166: inline constexpr parallel_policy par{}; +16166: inline constexpr parallel_unsequenced_policy par_unseq{}; +16166: inline constexpr unsequenced_policy unseq{}; +16166: +16166: +16166: template +16166: struct is_execution_policy : std::false_type +16166: { +16166: }; +16166: +16166: template <> +16166: struct is_execution_policy<__pstl::execution::sequenced_policy> : std::true_type +16166: { +16166: }; +16166: template <> +16166: struct is_execution_policy<__pstl::execution::parallel_policy> : std::true_type +16166: { +16166: }; +16166: template <> +16166: struct is_execution_policy<__pstl::execution::parallel_unsequenced_policy> : std::true_type +16166: { +16166: }; +16166: template <> +16166: struct is_execution_policy<__pstl::execution::unsequenced_policy> : std::true_type +16166: { +16166: }; +16166: +16166: +16166: template +16166: constexpr bool is_execution_policy_v = __pstl::execution::is_execution_policy<_Tp>::value; +16166: +16166: +16166: } +16166: } +16166: +16166: namespace __internal +16166: { +16166: template +16166: +16166: using __enable_if_execution_policy = +16166: typename std::enable_if<__pstl::execution::is_execution_policy>::value, +16166: _Tp>::type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __serial_tag; +16166: template +16166: struct __parallel_tag; +16166: +16166: } +16166: +16166: } +16166: # 14 "/usr/include/c++/14/pstl/glue_memory_defs.h" 2 3 +16166: +16166: namespace std +16166: { +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: uninitialized_copy(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: uninitialized_copy_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: uninitialized_move(_ExecutionPolicy&& __exec, _InputIterator __first, _InputIterator __last, _ForwardIterator __result); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: uninitialized_move_n(_ExecutionPolicy&& __exec, _InputIterator __first, _Size __n, _ForwardIterator __result); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: uninitialized_fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: uninitialized_fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, const _Tp& __value); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: destroy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: destroy_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: uninitialized_default_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: uninitialized_default_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: uninitialized_value_construct(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: uninitialized_value_construct_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n); +16166: +16166: } +16166: # 172 "/usr/include/c++/14/memory" 2 3 +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/usr/include/c++/14/string" 1 3 +16166: # 36 "/usr/include/c++/14/string" 3 +16166: +16166: # 37 "/usr/include/c++/14/string" 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/char_traits.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: # 46 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: # 1 "/usr/include/c++/14/cwchar" 1 3 +16166: # 39 "/usr/include/c++/14/cwchar" 3 +16166: +16166: # 40 "/usr/include/c++/14/cwchar" 3 +16166: # 47 "/usr/include/c++/14/bits/char_traits.h" 2 3 +16166: # 64 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: # 68 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wstringop-overflow" +16166: #pragma GCC diagnostic ignored "-Wstringop-overread" +16166: #pragma GCC diagnostic ignored "-Warray-bounds" +16166: # 83 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: template +16166: struct _Char_types +16166: { +16166: typedef unsigned long int_type; +16166: +16166: typedef std::streampos pos_type; +16166: typedef std::streamoff off_type; +16166: typedef std::mbstate_t state_type; +16166: +16166: }; +16166: # 110 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: template +16166: struct char_traits +16166: { +16166: typedef _CharT char_type; +16166: typedef typename _Char_types<_CharT>::int_type int_type; +16166: +16166: typedef typename _Char_types<_CharT>::pos_type pos_type; +16166: typedef typename _Char_types<_CharT>::off_type off_type; +16166: typedef typename _Char_types<_CharT>::state_type state_type; +16166: +16166: +16166: +16166: +16166: +16166: static constexpr void +16166: assign(char_type& __c1, const char_type& __c2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: __c1 = __c2; +16166: } +16166: +16166: static constexpr bool +16166: eq(const char_type& __c1, const char_type& __c2) +16166: { return __c1 == __c2; } +16166: +16166: static constexpr bool +16166: lt(const char_type& __c1, const char_type& __c2) +16166: { return __c1 < __c2; } +16166: +16166: static constexpr int +16166: compare(const char_type* __s1, const char_type* __s2, std::size_t __n); +16166: +16166: static constexpr std::size_t +16166: length(const char_type* __s); +16166: +16166: static constexpr const char_type* +16166: find(const char_type* __s, std::size_t __n, const char_type& __a); +16166: +16166: static char_type* +16166: move(char_type* __s1, const char_type* __s2, std::size_t __n); +16166: +16166: static char_type* +16166: copy(char_type* __s1, const char_type* __s2, std::size_t __n); +16166: +16166: static char_type* +16166: assign(char_type* __s, std::size_t __n, char_type __a); +16166: +16166: static constexpr char_type +16166: to_char_type(const int_type& __c) +16166: { return static_cast(__c); } +16166: +16166: static constexpr int_type +16166: to_int_type(const char_type& __c) +16166: { return static_cast(__c); } +16166: +16166: static constexpr bool +16166: eq_int_type(const int_type& __c1, const int_type& __c2) +16166: { return __c1 == __c2; } +16166: +16166: +16166: static constexpr int_type +16166: eof() +16166: { return static_cast(-1); } +16166: +16166: static constexpr int_type +16166: not_eof(const int_type& __c) +16166: { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } +16166: +16166: }; +16166: +16166: template +16166: constexpr int +16166: char_traits<_CharT>:: +16166: compare(const char_type* __s1, const char_type* __s2, std::size_t __n) +16166: { +16166: for (std::size_t __i = 0; __i < __n; ++__i) +16166: if (lt(__s1[__i], __s2[__i])) +16166: return -1; +16166: else if (lt(__s2[__i], __s1[__i])) +16166: return 1; +16166: return 0; +16166: } +16166: +16166: template +16166: constexpr std::size_t +16166: char_traits<_CharT>:: +16166: length(const char_type* __p) +16166: { +16166: std::size_t __i = 0; +16166: while (!eq(__p[__i], char_type())) +16166: ++__i; +16166: return __i; +16166: } +16166: +16166: template +16166: constexpr const typename char_traits<_CharT>::char_type* +16166: char_traits<_CharT>:: +16166: find(const char_type* __s, std::size_t __n, const char_type& __a) +16166: { +16166: for (std::size_t __i = 0; __i < __n; ++__i) +16166: if (eq(__s[__i], __a)) +16166: return __s + __i; +16166: return 0; +16166: } +16166: +16166: template +16166: +16166: typename char_traits<_CharT>::char_type* +16166: char_traits<_CharT>:: +16166: move(char_type* __s1, const char_type* __s2, std::size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: # 246 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: __builtin_memmove(__s1, __s2, __n * sizeof(char_type)); +16166: return __s1; +16166: } +16166: +16166: template +16166: +16166: typename char_traits<_CharT>::char_type* +16166: char_traits<_CharT>:: +16166: copy(char_type* __s1, const char_type* __s2, std::size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: # 266 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: __builtin_memcpy(__s1, __s2, __n * sizeof(char_type)); +16166: return __s1; +16166: } +16166: +16166: template +16166: +16166: typename char_traits<_CharT>::char_type* +16166: char_traits<_CharT>:: +16166: assign(char_type* __s, std::size_t __n, char_type __a) +16166: { +16166: # 285 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: if constexpr (sizeof(_CharT) == 1 && __is_trivial(_CharT)) +16166: { +16166: if (__n) +16166: { +16166: unsigned char __c; +16166: __builtin_memcpy(&__c, __builtin_addressof(__a), 1); +16166: __builtin_memset(__s, __c, __n); +16166: } +16166: } +16166: else +16166: { +16166: for (std::size_t __i = 0; __i < __n; ++__i) +16166: __s[__i] = __a; +16166: } +16166: return __s; +16166: } +16166: +16166: +16166: } +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 322 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: template +16166: struct char_traits : public __gnu_cxx::char_traits<_CharT> +16166: { }; +16166: +16166: +16166: +16166: template<> +16166: struct char_traits +16166: { +16166: typedef char char_type; +16166: typedef int int_type; +16166: +16166: typedef streampos pos_type; +16166: typedef streamoff off_type; +16166: typedef mbstate_t state_type; +16166: +16166: +16166: +16166: +16166: +16166: static constexpr void +16166: assign(char_type& __c1, const char_type& __c2) noexcept +16166: { +16166: +16166: +16166: +16166: +16166: +16166: __c1 = __c2; +16166: } +16166: +16166: static constexpr bool +16166: eq(const char_type& __c1, const char_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: static constexpr bool +16166: lt(const char_type& __c1, const char_type& __c2) noexcept +16166: { +16166: +16166: return (static_cast(__c1) +16166: < static_cast(__c2)); +16166: } +16166: +16166: static constexpr int +16166: compare(const char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return 0; +16166: +16166: if (std::__is_constant_evaluated()) +16166: { +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: if (lt(__s1[__i], __s2[__i])) +16166: return -1; +16166: else if (lt(__s2[__i], __s1[__i])) +16166: return 1; +16166: return 0; +16166: } +16166: +16166: return __builtin_memcmp(__s1, __s2, __n); +16166: } +16166: +16166: static constexpr size_t +16166: length(const char_type* __s) +16166: { +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __gnu_cxx::char_traits::length(__s); +16166: +16166: return __builtin_strlen(__s); +16166: } +16166: +16166: static constexpr const char_type* +16166: find(const char_type* __s, size_t __n, const char_type& __a) +16166: { +16166: if (__n == 0) +16166: return 0; +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __gnu_cxx::char_traits::find(__s, __n, __a); +16166: +16166: return static_cast(__builtin_memchr(__s, __a, __n)); +16166: } +16166: +16166: static char_type* +16166: move(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return static_cast(__builtin_memmove(__s1, __s2, __n)); +16166: } +16166: +16166: static char_type* +16166: copy(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return static_cast(__builtin_memcpy(__s1, __s2, __n)); +16166: } +16166: +16166: static char_type* +16166: assign(char_type* __s, size_t __n, char_type __a) +16166: { +16166: if (__n == 0) +16166: return __s; +16166: +16166: +16166: +16166: +16166: return static_cast(__builtin_memset(__s, __a, __n)); +16166: } +16166: +16166: static constexpr char_type +16166: to_char_type(const int_type& __c) noexcept +16166: { return static_cast(__c); } +16166: +16166: +16166: +16166: static constexpr int_type +16166: to_int_type(const char_type& __c) noexcept +16166: { return static_cast(static_cast(__c)); } +16166: +16166: static constexpr bool +16166: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: +16166: static constexpr int_type +16166: eof() noexcept +16166: { return static_cast(-1); } +16166: +16166: static constexpr int_type +16166: not_eof(const int_type& __c) noexcept +16166: { return (__c == eof()) ? 0 : __c; } +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: template<> +16166: struct char_traits +16166: { +16166: typedef wchar_t char_type; +16166: typedef wint_t int_type; +16166: +16166: typedef streamoff off_type; +16166: typedef wstreampos pos_type; +16166: typedef mbstate_t state_type; +16166: +16166: +16166: +16166: +16166: +16166: static constexpr void +16166: assign(char_type& __c1, const char_type& __c2) noexcept +16166: { +16166: +16166: +16166: +16166: +16166: +16166: __c1 = __c2; +16166: } +16166: +16166: static constexpr bool +16166: eq(const char_type& __c1, const char_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: static constexpr bool +16166: lt(const char_type& __c1, const char_type& __c2) noexcept +16166: { return __c1 < __c2; } +16166: +16166: static constexpr int +16166: compare(const char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return 0; +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __gnu_cxx::char_traits::compare(__s1, __s2, __n); +16166: +16166: return wmemcmp(__s1, __s2, __n); +16166: } +16166: +16166: static constexpr size_t +16166: length(const char_type* __s) +16166: { +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __gnu_cxx::char_traits::length(__s); +16166: +16166: return wcslen(__s); +16166: } +16166: +16166: static constexpr const char_type* +16166: find(const char_type* __s, size_t __n, const char_type& __a) +16166: { +16166: if (__n == 0) +16166: return 0; +16166: +16166: if (std::__is_constant_evaluated()) +16166: return __gnu_cxx::char_traits::find(__s, __n, __a); +16166: +16166: return wmemchr(__s, __a, __n); +16166: } +16166: +16166: static char_type* +16166: move(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return wmemmove(__s1, __s2, __n); +16166: } +16166: +16166: static char_type* +16166: copy(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return wmemcpy(__s1, __s2, __n); +16166: } +16166: +16166: static char_type* +16166: assign(char_type* __s, size_t __n, char_type __a) +16166: { +16166: if (__n == 0) +16166: return __s; +16166: +16166: +16166: +16166: +16166: return wmemset(__s, __a, __n); +16166: } +16166: +16166: static constexpr char_type +16166: to_char_type(const int_type& __c) noexcept +16166: { return char_type(__c); } +16166: +16166: static constexpr int_type +16166: to_int_type(const char_type& __c) noexcept +16166: { return int_type(__c); } +16166: +16166: static constexpr bool +16166: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: +16166: static constexpr int_type +16166: eof() noexcept +16166: { return static_cast((0xffffffffu)); } +16166: +16166: static constexpr int_type +16166: not_eof(const int_type& __c) noexcept +16166: { return eq_int_type(__c, eof()) ? 0 : __c; } +16166: +16166: }; +16166: # 732 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: +16166: } +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template<> +16166: struct char_traits +16166: { +16166: typedef char16_t char_type; +16166: +16166: typedef short unsigned int int_type; +16166: +16166: +16166: +16166: +16166: typedef streamoff off_type; +16166: typedef u16streampos pos_type; +16166: typedef mbstate_t state_type; +16166: +16166: +16166: +16166: +16166: +16166: static constexpr void +16166: assign(char_type& __c1, const char_type& __c2) noexcept +16166: { +16166: +16166: +16166: +16166: +16166: +16166: __c1 = __c2; +16166: } +16166: +16166: static constexpr bool +16166: eq(const char_type& __c1, const char_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: static constexpr bool +16166: lt(const char_type& __c1, const char_type& __c2) noexcept +16166: { return __c1 < __c2; } +16166: +16166: static constexpr int +16166: compare(const char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: if (lt(__s1[__i], __s2[__i])) +16166: return -1; +16166: else if (lt(__s2[__i], __s1[__i])) +16166: return 1; +16166: return 0; +16166: } +16166: +16166: static constexpr size_t +16166: length(const char_type* __s) +16166: { +16166: size_t __i = 0; +16166: while (!eq(__s[__i], char_type())) +16166: ++__i; +16166: return __i; +16166: } +16166: +16166: static constexpr const char_type* +16166: find(const char_type* __s, size_t __n, const char_type& __a) +16166: { +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: if (eq(__s[__i], __a)) +16166: return __s + __i; +16166: return 0; +16166: } +16166: +16166: static char_type* +16166: move(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return (static_cast +16166: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); +16166: } +16166: +16166: static char_type* +16166: copy(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return (static_cast +16166: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); +16166: } +16166: +16166: static char_type* +16166: assign(char_type* __s, size_t __n, char_type __a) +16166: { +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: assign(__s[__i], __a); +16166: return __s; +16166: } +16166: +16166: static constexpr char_type +16166: to_char_type(const int_type& __c) noexcept +16166: { return char_type(__c); } +16166: +16166: static constexpr bool +16166: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: +16166: static constexpr int_type +16166: to_int_type(const char_type& __c) noexcept +16166: { return __c == eof() ? int_type(0xfffd) : int_type(__c); } +16166: +16166: static constexpr int_type +16166: eof() noexcept +16166: { return static_cast(-1); } +16166: +16166: static constexpr int_type +16166: not_eof(const int_type& __c) noexcept +16166: { return eq_int_type(__c, eof()) ? 0 : __c; } +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: template<> +16166: struct char_traits +16166: { +16166: typedef char32_t char_type; +16166: +16166: typedef unsigned int int_type; +16166: +16166: +16166: +16166: +16166: typedef streamoff off_type; +16166: typedef u32streampos pos_type; +16166: typedef mbstate_t state_type; +16166: +16166: +16166: +16166: +16166: +16166: static constexpr void +16166: assign(char_type& __c1, const char_type& __c2) noexcept +16166: { +16166: +16166: +16166: +16166: +16166: +16166: __c1 = __c2; +16166: } +16166: +16166: static constexpr bool +16166: eq(const char_type& __c1, const char_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: static constexpr bool +16166: lt(const char_type& __c1, const char_type& __c2) noexcept +16166: { return __c1 < __c2; } +16166: +16166: static constexpr int +16166: compare(const char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: if (lt(__s1[__i], __s2[__i])) +16166: return -1; +16166: else if (lt(__s2[__i], __s1[__i])) +16166: return 1; +16166: return 0; +16166: } +16166: +16166: static constexpr size_t +16166: length(const char_type* __s) +16166: { +16166: size_t __i = 0; +16166: while (!eq(__s[__i], char_type())) +16166: ++__i; +16166: return __i; +16166: } +16166: +16166: static constexpr const char_type* +16166: find(const char_type* __s, size_t __n, const char_type& __a) +16166: { +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: if (eq(__s[__i], __a)) +16166: return __s + __i; +16166: return 0; +16166: } +16166: +16166: static char_type* +16166: move(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return (static_cast +16166: (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); +16166: } +16166: +16166: static char_type* +16166: copy(char_type* __s1, const char_type* __s2, size_t __n) +16166: { +16166: if (__n == 0) +16166: return __s1; +16166: +16166: +16166: +16166: +16166: return (static_cast +16166: (__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); +16166: } +16166: +16166: static char_type* +16166: assign(char_type* __s, size_t __n, char_type __a) +16166: { +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: assign(__s[__i], __a); +16166: return __s; +16166: } +16166: +16166: static constexpr char_type +16166: to_char_type(const int_type& __c) noexcept +16166: { return char_type(__c); } +16166: +16166: static constexpr int_type +16166: to_int_type(const char_type& __c) noexcept +16166: { return int_type(__c); } +16166: +16166: static constexpr bool +16166: eq_int_type(const int_type& __c1, const int_type& __c2) noexcept +16166: { return __c1 == __c2; } +16166: +16166: +16166: static constexpr int_type +16166: eof() noexcept +16166: { return static_cast(-1); } +16166: +16166: static constexpr int_type +16166: not_eof(const int_type& __c) noexcept +16166: { return eq_int_type(__c, eof()) ? 0 : __c; } +16166: +16166: }; +16166: # 1010 "/usr/include/c++/14/bits/char_traits.h" 3 +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: } +16166: # 43 "/usr/include/c++/14/string" 2 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/localefwd.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/localefwd.h" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/localefwd.h" 3 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 1 3 +16166: # 39 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +16166: +16166: # 40 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/clocale" 1 3 +16166: # 39 "/usr/include/c++/14/clocale" 3 +16166: +16166: # 40 "/usr/include/c++/14/clocale" 3 +16166: +16166: +16166: # 1 "/usr/include/locale.h" 1 3 4 +16166: # 28 "/usr/include/locale.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 29 "/usr/include/locale.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/locale.h" 1 3 4 +16166: # 30 "/usr/include/locale.h" 2 3 4 +16166: +16166: extern "C" { +16166: # 51 "/usr/include/locale.h" 3 4 +16166: struct lconv +16166: { +16166: +16166: +16166: char *decimal_point; +16166: char *thousands_sep; +16166: +16166: +16166: +16166: +16166: +16166: char *grouping; +16166: +16166: +16166: +16166: +16166: +16166: char *int_curr_symbol; +16166: char *currency_symbol; +16166: char *mon_decimal_point; +16166: char *mon_thousands_sep; +16166: char *mon_grouping; +16166: char *positive_sign; +16166: char *negative_sign; +16166: char int_frac_digits; +16166: char frac_digits; +16166: +16166: char p_cs_precedes; +16166: +16166: char p_sep_by_space; +16166: +16166: char n_cs_precedes; +16166: +16166: char n_sep_by_space; +16166: +16166: +16166: +16166: +16166: +16166: +16166: char p_sign_posn; +16166: char n_sign_posn; +16166: +16166: +16166: char int_p_cs_precedes; +16166: +16166: char int_p_sep_by_space; +16166: +16166: char int_n_cs_precedes; +16166: +16166: char int_n_sep_by_space; +16166: +16166: +16166: +16166: +16166: +16166: +16166: char int_p_sign_posn; +16166: char int_n_sign_posn; +16166: # 118 "/usr/include/locale.h" 3 4 +16166: }; +16166: +16166: +16166: +16166: extern char *setlocale (int __category, const char *__locale) noexcept (true); +16166: +16166: +16166: extern struct lconv *localeconv (void) noexcept (true); +16166: # 141 "/usr/include/locale.h" 3 4 +16166: extern locale_t newlocale (int __category_mask, const char *__locale, +16166: locale_t __base) noexcept (true); +16166: # 176 "/usr/include/locale.h" 3 4 +16166: extern locale_t duplocale (locale_t __dataset) noexcept (true); +16166: +16166: +16166: +16166: extern void freelocale (locale_t __dataset) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern locale_t uselocale (locale_t __dataset) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 43 "/usr/include/c++/14/clocale" 2 3 +16166: # 51 "/usr/include/c++/14/clocale" 3 +16166: namespace std +16166: { +16166: using ::lconv; +16166: using ::setlocale; +16166: using ::localeconv; +16166: } +16166: # 42 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: extern "C" __typeof(uselocale) __uselocale; +16166: +16166: +16166: } +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: typedef __locale_t __c_locale; +16166: # 73 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +16166: inline int +16166: __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), +16166: char* __out, +16166: const int __size __attribute__ ((__unused__)), +16166: const char* __fmt, ...) +16166: { +16166: +16166: __c_locale __old = __gnu_cxx::__uselocale(__cloc); +16166: # 93 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++locale.h" 3 +16166: __builtin_va_list __args; +16166: __builtin_va_start(__args, __fmt); +16166: +16166: +16166: const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +16166: +16166: +16166: +16166: +16166: __builtin_va_end(__args); +16166: +16166: +16166: __gnu_cxx::__uselocale(__old); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: return __ret; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 41 "/usr/include/c++/14/bits/localefwd.h" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/cctype" 1 3 +16166: # 39 "/usr/include/c++/14/cctype" 3 +16166: +16166: # 40 "/usr/include/c++/14/cctype" 3 +16166: +16166: +16166: # 1 "/usr/include/ctype.h" 1 3 4 +16166: # 28 "/usr/include/ctype.h" 3 4 +16166: extern "C" { +16166: # 46 "/usr/include/ctype.h" 3 4 +16166: enum +16166: { +16166: _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)), +16166: _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)), +16166: _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)), +16166: _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)), +16166: _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)), +16166: _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)), +16166: _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)), +16166: _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)), +16166: _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)), +16166: _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)), +16166: _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)), +16166: _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) +16166: }; +16166: # 79 "/usr/include/ctype.h" 3 4 +16166: extern const unsigned short int **__ctype_b_loc (void) +16166: noexcept (true) __attribute__ ((__const__)); +16166: extern const __int32_t **__ctype_tolower_loc (void) +16166: noexcept (true) __attribute__ ((__const__)); +16166: extern const __int32_t **__ctype_toupper_loc (void) +16166: noexcept (true) __attribute__ ((__const__)); +16166: # 108 "/usr/include/ctype.h" 3 4 +16166: extern int isalnum (int) noexcept (true); +16166: extern int isalpha (int) noexcept (true); +16166: extern int iscntrl (int) noexcept (true); +16166: extern int isdigit (int) noexcept (true); +16166: extern int islower (int) noexcept (true); +16166: extern int isgraph (int) noexcept (true); +16166: extern int isprint (int) noexcept (true); +16166: extern int ispunct (int) noexcept (true); +16166: extern int isspace (int) noexcept (true); +16166: extern int isupper (int) noexcept (true); +16166: extern int isxdigit (int) noexcept (true); +16166: +16166: +16166: +16166: extern int tolower (int __c) noexcept (true); +16166: +16166: +16166: extern int toupper (int __c) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int isblank (int) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int isctype (int __c, int __mask) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int isascii (int __c) noexcept (true); +16166: +16166: +16166: +16166: extern int toascii (int __c) noexcept (true); +16166: +16166: +16166: +16166: extern int _toupper (int) noexcept (true); +16166: extern int _tolower (int) noexcept (true); +16166: # 251 "/usr/include/ctype.h" 3 4 +16166: extern int isalnum_l (int, locale_t) noexcept (true); +16166: extern int isalpha_l (int, locale_t) noexcept (true); +16166: extern int iscntrl_l (int, locale_t) noexcept (true); +16166: extern int isdigit_l (int, locale_t) noexcept (true); +16166: extern int islower_l (int, locale_t) noexcept (true); +16166: extern int isgraph_l (int, locale_t) noexcept (true); +16166: extern int isprint_l (int, locale_t) noexcept (true); +16166: extern int ispunct_l (int, locale_t) noexcept (true); +16166: extern int isspace_l (int, locale_t) noexcept (true); +16166: extern int isupper_l (int, locale_t) noexcept (true); +16166: extern int isxdigit_l (int, locale_t) noexcept (true); +16166: +16166: extern int isblank_l (int, locale_t) noexcept (true); +16166: +16166: +16166: +16166: extern int __tolower_l (int __c, locale_t __l) noexcept (true); +16166: extern int tolower_l (int __c, locale_t __l) noexcept (true); +16166: +16166: +16166: extern int __toupper_l (int __c, locale_t __l) noexcept (true); +16166: extern int toupper_l (int __c, locale_t __l) noexcept (true); +16166: # 327 "/usr/include/ctype.h" 3 4 +16166: } +16166: # 43 "/usr/include/c++/14/cctype" 2 3 +16166: # 62 "/usr/include/c++/14/cctype" 3 +16166: namespace std +16166: { +16166: using ::isalnum; +16166: using ::isalpha; +16166: using ::iscntrl; +16166: using ::isdigit; +16166: using ::isgraph; +16166: using ::islower; +16166: using ::isprint; +16166: using ::ispunct; +16166: using ::isspace; +16166: using ::isupper; +16166: using ::isxdigit; +16166: using ::tolower; +16166: using ::toupper; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std +16166: { +16166: using ::isblank; +16166: } +16166: # 43 "/usr/include/c++/14/bits/localefwd.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 55 "/usr/include/c++/14/bits/localefwd.h" 3 +16166: class locale; +16166: +16166: template +16166: bool +16166: has_facet(const locale&) throw(); +16166: +16166: template +16166: const _Facet& +16166: use_facet(const locale&); +16166: +16166: +16166: template +16166: bool +16166: isspace(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: isprint(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: iscntrl(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: isupper(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: islower(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: isalpha(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: isdigit(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: ispunct(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: isxdigit(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: isalnum(_CharT, const locale&); +16166: +16166: template +16166: bool +16166: isgraph(_CharT, const locale&); +16166: +16166: +16166: template +16166: bool +16166: isblank(_CharT, const locale&); +16166: +16166: +16166: template +16166: _CharT +16166: toupper(_CharT, const locale&); +16166: +16166: template +16166: _CharT +16166: tolower(_CharT, const locale&); +16166: +16166: +16166: struct ctype_base; +16166: template +16166: class ctype; +16166: template<> class ctype; +16166: +16166: template<> class ctype; +16166: +16166: template +16166: class ctype_byname; +16166: +16166: +16166: class codecvt_base; +16166: template +16166: class codecvt; +16166: template<> class codecvt; +16166: +16166: template<> class codecvt; +16166: +16166: +16166: template<> class codecvt; +16166: template<> class codecvt; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class codecvt_byname; +16166: +16166: +16166: +16166: template > +16166: class num_get; +16166: template > +16166: class num_put; +16166: +16166: namespace __cxx11 { +16166: template class numpunct; +16166: template class numpunct_byname; +16166: } +16166: +16166: namespace __cxx11 { +16166: +16166: template +16166: class collate; +16166: template +16166: class collate_byname; +16166: } +16166: +16166: +16166: class time_base; +16166: namespace __cxx11 { +16166: template > +16166: class time_get; +16166: template > +16166: class time_get_byname; +16166: } +16166: template > +16166: class time_put; +16166: template > +16166: class time_put_byname; +16166: +16166: +16166: class money_base; +16166: namespace __cxx11 { +16166: template > +16166: class money_get; +16166: template > +16166: class money_put; +16166: } +16166: namespace __cxx11 { +16166: template +16166: class moneypunct; +16166: template +16166: class moneypunct_byname; +16166: } +16166: +16166: +16166: struct messages_base; +16166: namespace __cxx11 { +16166: template +16166: class messages; +16166: template +16166: class messages_byname; +16166: } +16166: +16166: +16166: } +16166: # 46 "/usr/include/c++/14/string" 2 3 +16166: # 1 "/usr/include/c++/14/bits/ostream_insert.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/ostream_insert.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/ostream_insert.h" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/cxxabi_forced.h" 1 3 +16166: # 34 "/usr/include/c++/14/bits/cxxabi_forced.h" 3 +16166: +16166: # 35 "/usr/include/c++/14/bits/cxxabi_forced.h" 3 +16166: +16166: #pragma GCC visibility push(default) +16166: +16166: +16166: namespace __cxxabiv1 +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class __forced_unwind +16166: { +16166: virtual ~__forced_unwind() throw(); +16166: +16166: +16166: virtual void __pure_dummy() = 0; +16166: }; +16166: } +16166: +16166: +16166: #pragma GCC visibility pop +16166: # 37 "/usr/include/c++/14/bits/ostream_insert.h" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: inline void +16166: __ostream_write(basic_ostream<_CharT, _Traits>& __out, +16166: const _CharT* __s, streamsize __n) +16166: { +16166: typedef basic_ostream<_CharT, _Traits> __ostream_type; +16166: typedef typename __ostream_type::ios_base __ios_base; +16166: +16166: const streamsize __put = __out.rdbuf()->sputn(__s, __n); +16166: if (__put != __n) +16166: __out.setstate(__ios_base::badbit); +16166: } +16166: +16166: template +16166: inline void +16166: __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) +16166: { +16166: typedef basic_ostream<_CharT, _Traits> __ostream_type; +16166: typedef typename __ostream_type::ios_base __ios_base; +16166: +16166: const _CharT __c = __out.fill(); +16166: for (; __n > 0; --__n) +16166: { +16166: const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); +16166: if (_Traits::eq_int_type(__put, _Traits::eof())) +16166: { +16166: __out.setstate(__ios_base::badbit); +16166: break; +16166: } +16166: } +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: __ostream_insert(basic_ostream<_CharT, _Traits>& __out, +16166: const _CharT* __s, streamsize __n) +16166: { +16166: typedef basic_ostream<_CharT, _Traits> __ostream_type; +16166: typedef typename __ostream_type::ios_base __ios_base; +16166: +16166: typename __ostream_type::sentry __cerb(__out); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: const streamsize __w = __out.width(); +16166: if (__w > __n) +16166: { +16166: const bool __left = ((__out.flags() +16166: & __ios_base::adjustfield) +16166: == __ios_base::left); +16166: if (!__left) +16166: __ostream_fill(__out, __w - __n); +16166: if (__out.good()) +16166: __ostream_write(__out, __s, __n); +16166: if (__left && __out.good()) +16166: __ostream_fill(__out, __w - __n); +16166: } +16166: else +16166: __ostream_write(__out, __s, __n); +16166: __out.width(0); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: __out._M_setstate(__ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { __out._M_setstate(__ios_base::badbit); } +16166: } +16166: return __out; +16166: } +16166: +16166: +16166: +16166: +16166: extern template ostream& __ostream_insert(ostream&, const char*, streamsize); +16166: +16166: +16166: extern template wostream& __ostream_insert(wostream&, const wchar_t*, +16166: streamsize); +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 47 "/usr/include/c++/14/string" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/basic_string.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: # 47 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: # 1 "/usr/include/c++/14/string_view" 1 3 +16166: # 36 "/usr/include/c++/14/string_view" 3 +16166: +16166: # 37 "/usr/include/c++/14/string_view" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 45 "/usr/include/c++/14/string_view" 2 3 +16166: # 64 "/usr/include/c++/14/string_view" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: constexpr size_t +16166: __sv_check(size_t __size, size_t __pos, const char* __s) +16166: { +16166: if (__pos > __size) +16166: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > __size " "(which is %zu)") +16166: , __s, __pos, __size); +16166: return __pos; +16166: } +16166: +16166: +16166: +16166: constexpr size_t +16166: __sv_limit(size_t __size, size_t __pos, size_t __off) noexcept +16166: { +16166: const bool __testoff = __off < __size - __pos; +16166: return __testoff ? __off : __size - __pos; +16166: } +16166: # 105 "/usr/include/c++/14/string_view" 3 +16166: template> +16166: class basic_string_view +16166: { +16166: static_assert(!is_array_v<_CharT>); +16166: static_assert(is_trivial_v<_CharT> && is_standard_layout_v<_CharT>); +16166: static_assert(is_same_v<_CharT, typename _Traits::char_type>); +16166: +16166: public: +16166: +16166: +16166: using traits_type = _Traits; +16166: using value_type = _CharT; +16166: using pointer = value_type*; +16166: using const_pointer = const value_type*; +16166: using reference = value_type&; +16166: using const_reference = const value_type&; +16166: using const_iterator = const value_type*; +16166: using iterator = const_iterator; +16166: using const_reverse_iterator = std::reverse_iterator; +16166: using reverse_iterator = const_reverse_iterator; +16166: using size_type = size_t; +16166: using difference_type = ptrdiff_t; +16166: static constexpr size_type npos = size_type(-1); +16166: +16166: +16166: +16166: constexpr +16166: basic_string_view() noexcept +16166: : _M_len{0}, _M_str{nullptr} +16166: { } +16166: +16166: constexpr basic_string_view(const basic_string_view&) noexcept = default; +16166: +16166: [[__gnu__::__nonnull__]] +16166: constexpr +16166: basic_string_view(const _CharT* __str) noexcept +16166: : _M_len{traits_type::length(__str)}, +16166: _M_str{__str} +16166: { } +16166: +16166: constexpr +16166: basic_string_view(const _CharT* __str, size_type __len) noexcept +16166: : _M_len{__len}, _M_str{__str} +16166: { } +16166: # 180 "/usr/include/c++/14/string_view" 3 +16166: constexpr basic_string_view& +16166: operator=(const basic_string_view&) noexcept = default; +16166: +16166: +16166: +16166: [[nodiscard]] +16166: constexpr const_iterator +16166: begin() const noexcept +16166: { return this->_M_str; } +16166: +16166: [[nodiscard]] +16166: constexpr const_iterator +16166: end() const noexcept +16166: { return this->_M_str + this->_M_len; } +16166: +16166: [[nodiscard]] +16166: constexpr const_iterator +16166: cbegin() const noexcept +16166: { return this->_M_str; } +16166: +16166: [[nodiscard]] +16166: constexpr const_iterator +16166: cend() const noexcept +16166: { return this->_M_str + this->_M_len; } +16166: +16166: [[nodiscard]] +16166: constexpr const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(this->end()); } +16166: +16166: [[nodiscard]] +16166: constexpr const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(this->begin()); } +16166: +16166: [[nodiscard]] +16166: constexpr const_reverse_iterator +16166: crbegin() const noexcept +16166: { return const_reverse_iterator(this->end()); } +16166: +16166: [[nodiscard]] +16166: constexpr const_reverse_iterator +16166: crend() const noexcept +16166: { return const_reverse_iterator(this->begin()); } +16166: +16166: +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: size() const noexcept +16166: { return this->_M_len; } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: length() const noexcept +16166: { return _M_len; } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: max_size() const noexcept +16166: { +16166: return (npos - sizeof(size_type) - sizeof(void*)) +16166: / sizeof(value_type) / 4; +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr bool +16166: empty() const noexcept +16166: { return this->_M_len == 0; } +16166: +16166: +16166: +16166: [[nodiscard]] +16166: constexpr const_reference +16166: operator[](size_type __pos) const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos < this->_M_len)) std::__glibcxx_assert_fail(); } while (false); +16166: return *(this->_M_str + __pos); +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr const_reference +16166: at(size_type __pos) const +16166: { +16166: if (__pos >= _M_len) +16166: __throw_out_of_range_fmt(("basic_string_view::at: __pos " "(which is %zu) >= this->size() " "(which is %zu)") +16166: +16166: , __pos, this->size()); +16166: return *(this->_M_str + __pos); +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr const_reference +16166: front() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(this->_M_len > 0)) std::__glibcxx_assert_fail(); } while (false); +16166: return *this->_M_str; +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr const_reference +16166: back() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(this->_M_len > 0)) std::__glibcxx_assert_fail(); } while (false); +16166: return *(this->_M_str + this->_M_len - 1); +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr const_pointer +16166: data() const noexcept +16166: { return this->_M_str; } +16166: +16166: +16166: +16166: constexpr void +16166: remove_prefix(size_type __n) noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(this->_M_len >= __n)) std::__glibcxx_assert_fail(); } while (false); +16166: this->_M_str += __n; +16166: this->_M_len -= __n; +16166: } +16166: +16166: constexpr void +16166: remove_suffix(size_type __n) noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(this->_M_len >= __n)) std::__glibcxx_assert_fail(); } while (false); +16166: this->_M_len -= __n; +16166: } +16166: +16166: constexpr void +16166: swap(basic_string_view& __sv) noexcept +16166: { +16166: auto __tmp = *this; +16166: *this = __sv; +16166: __sv = __tmp; +16166: } +16166: +16166: +16166: +16166: +16166: size_type +16166: copy(_CharT* __str, size_type __n, size_type __pos = 0) const +16166: { +16166: ; +16166: __pos = std::__sv_check(size(), __pos, "basic_string_view::copy"); +16166: const size_type __rlen = std::min(__n, _M_len - __pos); +16166: +16166: +16166: traits_type::copy(__str, data() + __pos, __rlen); +16166: return __rlen; +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr basic_string_view +16166: substr(size_type __pos = 0, size_type __n = npos) const noexcept(false) +16166: { +16166: __pos = std::__sv_check(size(), __pos, "basic_string_view::substr"); +16166: const size_type __rlen = std::min(__n, _M_len - __pos); +16166: return basic_string_view{_M_str + __pos, __rlen}; +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr int +16166: compare(basic_string_view __str) const noexcept +16166: { +16166: const size_type __rlen = std::min(this->_M_len, __str._M_len); +16166: int __ret = traits_type::compare(this->_M_str, __str._M_str, __rlen); +16166: if (__ret == 0) +16166: __ret = _S_compare(this->_M_len, __str._M_len); +16166: return __ret; +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr int +16166: compare(size_type __pos1, size_type __n1, basic_string_view __str) const +16166: { return this->substr(__pos1, __n1).compare(__str); } +16166: +16166: [[nodiscard]] +16166: constexpr int +16166: compare(size_type __pos1, size_type __n1, +16166: basic_string_view __str, size_type __pos2, size_type __n2) const +16166: { +16166: return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); +16166: } +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr int +16166: compare(const _CharT* __str) const noexcept +16166: { return this->compare(basic_string_view{__str}); } +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr int +16166: compare(size_type __pos1, size_type __n1, const _CharT* __str) const +16166: { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } +16166: +16166: [[nodiscard]] +16166: constexpr int +16166: compare(size_type __pos1, size_type __n1, +16166: const _CharT* __str, size_type __n2) const noexcept(false) +16166: { +16166: return this->substr(__pos1, __n1) +16166: .compare(basic_string_view(__str, __n2)); +16166: } +16166: # 445 "/usr/include/c++/14/string_view" 3 +16166: [[nodiscard]] +16166: constexpr size_type +16166: find(basic_string_view __str, size_type __pos = 0) const noexcept +16166: { return this->find(__str._M_str, __pos, __str._M_len); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find(_CharT __c, size_type __pos = 0) const noexcept; +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr size_type +16166: find(const _CharT* __str, size_type __pos = 0) const noexcept +16166: { return this->find(__str, __pos, traits_type::length(__str)); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: rfind(basic_string_view __str, size_type __pos = npos) const noexcept +16166: { return this->rfind(__str._M_str, __pos, __str._M_len); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: rfind(_CharT __c, size_type __pos = npos) const noexcept; +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr size_type +16166: rfind(const _CharT* __str, size_type __pos = npos) const noexcept +16166: { return this->rfind(__str, __pos, traits_type::length(__str)); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept +16166: { return this->find_first_of(__str._M_str, __pos, __str._M_len); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_first_of(_CharT __c, size_type __pos = 0) const noexcept +16166: { return this->find(__c, __pos); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_first_of(const _CharT* __str, size_type __pos, +16166: size_type __n) const noexcept; +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr size_type +16166: find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept +16166: { return this->find_first_of(__str, __pos, traits_type::length(__str)); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_last_of(basic_string_view __str, +16166: size_type __pos = npos) const noexcept +16166: { return this->find_last_of(__str._M_str, __pos, __str._M_len); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_last_of(_CharT __c, size_type __pos=npos) const noexcept +16166: { return this->rfind(__c, __pos); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_last_of(const _CharT* __str, size_type __pos, +16166: size_type __n) const noexcept; +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr size_type +16166: find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept +16166: { return this->find_last_of(__str, __pos, traits_type::length(__str)); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_first_not_of(basic_string_view __str, +16166: size_type __pos = 0) const noexcept +16166: { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_first_not_of(const _CharT* __str, +16166: size_type __pos, size_type __n) const noexcept; +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr size_type +16166: find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept +16166: { +16166: return this->find_first_not_of(__str, __pos, +16166: traits_type::length(__str)); +16166: } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_last_not_of(basic_string_view __str, +16166: size_type __pos = npos) const noexcept +16166: { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; +16166: +16166: [[nodiscard]] +16166: constexpr size_type +16166: find_last_not_of(const _CharT* __str, +16166: size_type __pos, size_type __n) const noexcept; +16166: +16166: [[nodiscard, __gnu__::__nonnull__]] +16166: constexpr size_type +16166: find_last_not_of(const _CharT* __str, +16166: size_type __pos = npos) const noexcept +16166: { +16166: return this->find_last_not_of(__str, __pos, +16166: traits_type::length(__str)); +16166: } +16166: +16166: private: +16166: +16166: static constexpr int +16166: _S_compare(size_type __n1, size_type __n2) noexcept +16166: { +16166: using __limits = __gnu_cxx::__int_traits; +16166: const difference_type __diff = __n1 - __n2; +16166: if (__diff > __limits::__max) +16166: return __limits::__max; +16166: if (__diff < __limits::__min) +16166: return __limits::__min; +16166: return static_cast(__diff); +16166: } +16166: +16166: size_t _M_len; +16166: const _CharT* _M_str; +16166: }; +16166: # 623 "/usr/include/c++/14/string_view" 3 +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator==(basic_string_view<_CharT, _Traits> __x, +16166: __type_identity_t> __y) +16166: noexcept +16166: { return __x.size() == __y.size() && __x.compare(__y) == 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator==(basic_string_view<_CharT, _Traits> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.size() == __y.size() && __x.compare(__y) == 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator==(__type_identity_t> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.size() == __y.size() && __x.compare(__y) == 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator!=(basic_string_view<_CharT, _Traits> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return !(__x == __y); } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator!=(basic_string_view<_CharT, _Traits> __x, +16166: __type_identity_t> __y) +16166: noexcept +16166: { return !(__x == __y); } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator!=(__type_identity_t> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return !(__x == __y); } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator< (basic_string_view<_CharT, _Traits> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) < 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator< (basic_string_view<_CharT, _Traits> __x, +16166: __type_identity_t> __y) +16166: noexcept +16166: { return __x.compare(__y) < 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator< (__type_identity_t> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) < 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator> (basic_string_view<_CharT, _Traits> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) > 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator> (basic_string_view<_CharT, _Traits> __x, +16166: __type_identity_t> __y) +16166: noexcept +16166: { return __x.compare(__y) > 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator> (__type_identity_t> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) > 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator<=(basic_string_view<_CharT, _Traits> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) <= 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator<=(basic_string_view<_CharT, _Traits> __x, +16166: __type_identity_t> __y) +16166: noexcept +16166: { return __x.compare(__y) <= 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator<=(__type_identity_t> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) <= 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator>=(basic_string_view<_CharT, _Traits> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) >= 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator>=(basic_string_view<_CharT, _Traits> __x, +16166: __type_identity_t> __y) +16166: noexcept +16166: { return __x.compare(__y) >= 0; } +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr bool +16166: operator>=(__type_identity_t> __x, +16166: basic_string_view<_CharT, _Traits> __y) noexcept +16166: { return __x.compare(__y) >= 0; } +16166: +16166: +16166: +16166: +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __os, +16166: basic_string_view<_CharT,_Traits> __str) +16166: { return __ostream_insert(__os, __str.data(), __str.size()); } +16166: +16166: +16166: +16166: +16166: using string_view = basic_string_view; +16166: using wstring_view = basic_string_view; +16166: +16166: +16166: +16166: using u16string_view = basic_string_view; +16166: using u32string_view = basic_string_view; +16166: +16166: +16166: +16166: template +16166: struct hash; +16166: +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: [[nodiscard]] +16166: size_t +16166: operator()(const string_view& __str) const noexcept +16166: { return std::_Hash_impl::hash(__str.data(), __str.length()); } +16166: }; +16166: +16166: template<> +16166: struct __is_fast_hash> : std::false_type +16166: { }; +16166: +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: [[nodiscard]] +16166: size_t +16166: operator()(const wstring_view& __s) const noexcept +16166: { return std::_Hash_impl::hash(__s.data(), +16166: __s.length() * sizeof(wchar_t)); } +16166: }; +16166: +16166: template<> +16166: struct __is_fast_hash> : std::false_type +16166: { }; +16166: # 825 "/usr/include/c++/14/string_view" 3 +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: [[nodiscard]] +16166: size_t +16166: operator()(const u16string_view& __s) const noexcept +16166: { return std::_Hash_impl::hash(__s.data(), +16166: __s.length() * sizeof(char16_t)); } +16166: }; +16166: +16166: template<> +16166: struct __is_fast_hash> : std::false_type +16166: { }; +16166: +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: [[nodiscard]] +16166: size_t +16166: operator()(const u32string_view& __s) const noexcept +16166: { return std::_Hash_impl::hash(__s.data(), +16166: __s.length() * sizeof(char32_t)); } +16166: }; +16166: +16166: template<> +16166: struct __is_fast_hash> : std::false_type +16166: { }; +16166: +16166: inline namespace literals +16166: { +16166: inline namespace string_view_literals +16166: { +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wliteral-suffix" +16166: inline constexpr basic_string_view +16166: operator""sv(const char* __str, size_t __len) noexcept +16166: { return basic_string_view{__str, __len}; } +16166: +16166: inline constexpr basic_string_view +16166: operator""sv(const wchar_t* __str, size_t __len) noexcept +16166: { return basic_string_view{__str, __len}; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline constexpr basic_string_view +16166: operator""sv(const char16_t* __str, size_t __len) noexcept +16166: { return basic_string_view{__str, __len}; } +16166: +16166: inline constexpr basic_string_view +16166: operator""sv(const char32_t* __str, size_t __len) noexcept +16166: { return basic_string_view{__str, __len}; } +16166: +16166: #pragma GCC diagnostic pop +16166: } +16166: } +16166: # 901 "/usr/include/c++/14/string_view" 3 +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/string_view.tcc" 1 3 +16166: # 37 "/usr/include/c++/14/bits/string_view.tcc" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/string_view.tcc" 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find(const _CharT* __str, size_type __pos, size_type __n) const noexcept +16166: { +16166: ; +16166: +16166: if (__n == 0) +16166: return __pos <= _M_len ? __pos : npos; +16166: if (__pos >= _M_len) +16166: return npos; +16166: +16166: const _CharT __elem0 = __str[0]; +16166: const _CharT* __first = _M_str + __pos; +16166: const _CharT* const __last = _M_str + _M_len; +16166: size_type __len = _M_len - __pos; +16166: +16166: while (__len >= __n) +16166: { +16166: +16166: __first = traits_type::find(__first, __len - __n + 1, __elem0); +16166: if (!__first) +16166: return npos; +16166: +16166: +16166: +16166: if (traits_type::compare(__first, __str, __n) == 0) +16166: return __first - _M_str; +16166: __len = __last - ++__first; +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find(_CharT __c, size_type __pos) const noexcept +16166: { +16166: size_type __ret = npos; +16166: if (__pos < this->_M_len) +16166: { +16166: const size_type __n = this->_M_len - __pos; +16166: const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c); +16166: if (__p) +16166: __ret = __p - this->_M_str; +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept +16166: { +16166: ; +16166: +16166: if (__n <= this->_M_len) +16166: { +16166: __pos = std::min(size_type(this->_M_len - __n), __pos); +16166: do +16166: { +16166: if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0) +16166: return __pos; +16166: } +16166: while (__pos-- > 0); +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: rfind(_CharT __c, size_type __pos) const noexcept +16166: { +16166: size_type __size = this->_M_len; +16166: if (__size > 0) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: for (++__size; __size-- > 0; ) +16166: if (traits_type::eq(this->_M_str[__size], __c)) +16166: return __size; +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find_first_of(const _CharT* __str, size_type __pos, +16166: size_type __n) const noexcept +16166: { +16166: ; +16166: for (; __n && __pos < this->_M_len; ++__pos) +16166: { +16166: const _CharT* __p = traits_type::find(__str, __n, +16166: this->_M_str[__pos]); +16166: if (__p) +16166: return __pos; +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find_last_of(const _CharT* __str, size_type __pos, +16166: size_type __n) const noexcept +16166: { +16166: ; +16166: size_type __size = this->size(); +16166: if (__size && __n) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: do +16166: { +16166: if (traits_type::find(__str, __n, this->_M_str[__size])) +16166: return __size; +16166: } +16166: while (__size-- != 0); +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find_first_not_of(const _CharT* __str, size_type __pos, +16166: size_type __n) const noexcept +16166: { +16166: ; +16166: for (; __pos < this->_M_len; ++__pos) +16166: if (!traits_type::find(__str, __n, this->_M_str[__pos])) +16166: return __pos; +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find_first_not_of(_CharT __c, size_type __pos) const noexcept +16166: { +16166: for (; __pos < this->_M_len; ++__pos) +16166: if (!traits_type::eq(this->_M_str[__pos], __c)) +16166: return __pos; +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find_last_not_of(const _CharT* __str, size_type __pos, +16166: size_type __n) const noexcept +16166: { +16166: ; +16166: size_type __size = this->_M_len; +16166: if (__size) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: do +16166: { +16166: if (!traits_type::find(__str, __n, this->_M_str[__size])) +16166: return __size; +16166: } +16166: while (__size--); +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: constexpr typename basic_string_view<_CharT, _Traits>::size_type +16166: basic_string_view<_CharT, _Traits>:: +16166: find_last_not_of(_CharT __c, size_type __pos) const noexcept +16166: { +16166: size_type __size = this->_M_len; +16166: if (__size) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: do +16166: { +16166: if (!traits_type::eq(this->_M_str[__size], __c)) +16166: return __size; +16166: } +16166: while (__size--); +16166: } +16166: return npos; +16166: } +16166: +16166: +16166: } +16166: # 905 "/usr/include/c++/14/string_view" 2 3 +16166: # 48 "/usr/include/c++/14/bits/basic_string.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 55 "/usr/include/c++/14/bits/basic_string.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace __cxx11 { +16166: # 85 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: class basic_string +16166: { +16166: +16166: +16166: +16166: +16166: +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_CharT>::other _Char_alloc_type; +16166: +16166: +16166: typedef __gnu_cxx::__alloc_traits<_Char_alloc_type> _Alloc_traits; +16166: +16166: +16166: public: +16166: typedef _Traits traits_type; +16166: typedef typename _Traits::char_type value_type; +16166: typedef _Char_alloc_type allocator_type; +16166: typedef typename _Alloc_traits::size_type size_type; +16166: typedef typename _Alloc_traits::difference_type difference_type; +16166: typedef typename _Alloc_traits::reference reference; +16166: typedef typename _Alloc_traits::const_reference const_reference; +16166: typedef typename _Alloc_traits::pointer pointer; +16166: typedef typename _Alloc_traits::const_pointer const_pointer; +16166: typedef __gnu_cxx::__normal_iterator iterator; +16166: typedef __gnu_cxx::__normal_iterator +16166: const_iterator; +16166: typedef std::reverse_iterator const_reverse_iterator; +16166: typedef std::reverse_iterator reverse_iterator; +16166: +16166: +16166: static const size_type npos = static_cast(-1); +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: typedef const_iterator __const_iterator; +16166: +16166: +16166: private: +16166: static pointer +16166: _S_allocate(_Char_alloc_type& __a, size_type __n) +16166: { +16166: pointer __p = _Alloc_traits::allocate(__a, __n); +16166: # 141 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: return __p; +16166: } +16166: +16166: +16166: +16166: typedef basic_string_view<_CharT, _Traits> __sv_type; +16166: +16166: template +16166: using _If_sv = enable_if_t< +16166: __and_, +16166: __not_>, +16166: __not_>>::value, +16166: _Res>; +16166: +16166: +16166: +16166: static __sv_type +16166: _S_to_string_view(__sv_type __svt) noexcept +16166: { return __svt; } +16166: +16166: +16166: +16166: +16166: +16166: struct __sv_wrapper +16166: { +16166: explicit +16166: __sv_wrapper(__sv_type __sv) noexcept : _M_sv(__sv) { } +16166: +16166: __sv_type _M_sv; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: basic_string(__sv_wrapper __svw, const _Alloc& __a) +16166: : basic_string(__svw._M_sv.data(), __svw._M_sv.size(), __a) { } +16166: +16166: +16166: +16166: struct _Alloc_hider : allocator_type +16166: { +16166: +16166: +16166: +16166: +16166: +16166: _Alloc_hider(pointer __dat, const _Alloc& __a) +16166: : allocator_type(__a), _M_p(__dat) { } +16166: +16166: +16166: _Alloc_hider(pointer __dat, _Alloc&& __a = _Alloc()) +16166: : allocator_type(std::move(__a)), _M_p(__dat) { } +16166: +16166: +16166: pointer _M_p; +16166: }; +16166: +16166: _Alloc_hider _M_dataplus; +16166: size_type _M_string_length; +16166: +16166: enum { _S_local_capacity = 15 / sizeof(_CharT) }; +16166: +16166: union +16166: { +16166: _CharT _M_local_buf[_S_local_capacity + 1]; +16166: size_type _M_allocated_capacity; +16166: }; +16166: +16166: +16166: void +16166: _M_data(pointer __p) +16166: { _M_dataplus._M_p = __p; } +16166: +16166: +16166: void +16166: _M_length(size_type __length) +16166: { _M_string_length = __length; } +16166: +16166: +16166: pointer +16166: _M_data() const +16166: { return _M_dataplus._M_p; } +16166: +16166: +16166: pointer +16166: _M_local_data() +16166: { +16166: +16166: return std::pointer_traits::pointer_to(*_M_local_buf); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: const_pointer +16166: _M_local_data() const +16166: { +16166: +16166: return std::pointer_traits::pointer_to(*_M_local_buf); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: void +16166: _M_capacity(size_type __capacity) +16166: { _M_allocated_capacity = __capacity; } +16166: +16166: +16166: void +16166: _M_set_length(size_type __n) +16166: { +16166: _M_length(__n); +16166: traits_type::assign(_M_data()[__n], _CharT()); +16166: } +16166: +16166: +16166: bool +16166: _M_is_local() const +16166: { +16166: if (_M_data() == _M_local_data()) +16166: { +16166: if (_M_string_length > _S_local_capacity) +16166: __builtin_unreachable(); +16166: return true; +16166: } +16166: return false; +16166: } +16166: +16166: +16166: +16166: pointer +16166: _M_create(size_type&, size_type); +16166: +16166: +16166: void +16166: _M_dispose() +16166: { +16166: if (!_M_is_local()) +16166: _M_destroy(_M_allocated_capacity); +16166: } +16166: +16166: +16166: void +16166: _M_destroy(size_type __size) throw() +16166: { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); } +16166: # 321 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: void +16166: _M_construct(_InIterator __beg, _InIterator __end, +16166: std::input_iterator_tag); +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: _M_construct(_FwdIterator __beg, _FwdIterator __end, +16166: std::forward_iterator_tag); +16166: +16166: +16166: void +16166: _M_construct(size_type __req, _CharT __c); +16166: +16166: +16166: allocator_type& +16166: _M_get_allocator() +16166: { return _M_dataplus; } +16166: +16166: +16166: const allocator_type& +16166: _M_get_allocator() const +16166: { return _M_dataplus; } +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: constexpr +16166: void +16166: _M_init_local_buf() noexcept +16166: { +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: __attribute__((__always_inline__)) +16166: constexpr +16166: pointer +16166: _M_use_local_data() noexcept +16166: { +16166: +16166: +16166: +16166: return _M_local_data(); +16166: } +16166: +16166: private: +16166: # 389 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: size_type +16166: _M_check(size_type __pos, const char* __s) const +16166: { +16166: if (__pos > this->size()) +16166: __throw_out_of_range_fmt(("%s: __pos (which is %zu) > " "this->size() (which is %zu)") +16166: , +16166: __s, __pos, this->size()); +16166: return __pos; +16166: } +16166: +16166: +16166: void +16166: _M_check_length(size_type __n1, size_type __n2, const char* __s) const +16166: { +16166: if (this->max_size() - (this->size() - __n1) < __n2) +16166: __throw_length_error((__s)); +16166: } +16166: +16166: +16166: +16166: +16166: size_type +16166: _M_limit(size_type __pos, size_type __off) const noexcept +16166: { +16166: const bool __testoff = __off < this->size() - __pos; +16166: return __testoff ? __off : this->size() - __pos; +16166: } +16166: +16166: +16166: bool +16166: _M_disjunct(const _CharT* __s) const noexcept +16166: { +16166: return (less()(__s, _M_data()) +16166: || less()(_M_data() + this->size(), __s)); +16166: } +16166: +16166: +16166: +16166: +16166: static void +16166: _S_copy(_CharT* __d, const _CharT* __s, size_type __n) +16166: { +16166: if (__n == 1) +16166: traits_type::assign(*__d, *__s); +16166: else +16166: traits_type::copy(__d, __s, __n); +16166: } +16166: +16166: +16166: static void +16166: _S_move(_CharT* __d, const _CharT* __s, size_type __n) +16166: { +16166: if (__n == 1) +16166: traits_type::assign(*__d, *__s); +16166: else +16166: traits_type::move(__d, __s, __n); +16166: } +16166: +16166: +16166: static void +16166: _S_assign(_CharT* __d, size_type __n, _CharT __c) +16166: { +16166: if (__n == 1) +16166: traits_type::assign(*__d, __c); +16166: else +16166: traits_type::assign(__d, __n, __c); +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: static void +16166: _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) +16166: { +16166: for (; __k1 != __k2; ++__k1, (void)++__p) +16166: traits_type::assign(*__p, *__k1); +16166: } +16166: +16166: +16166: static void +16166: _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) noexcept +16166: { _S_copy_chars(__p, __k1.base(), __k2.base()); } +16166: +16166: +16166: static void +16166: _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) +16166: noexcept +16166: { _S_copy_chars(__p, __k1.base(), __k2.base()); } +16166: +16166: +16166: static void +16166: _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) noexcept +16166: { _S_copy(__p, __k1, __k2 - __k1); } +16166: +16166: +16166: static void +16166: _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) +16166: noexcept +16166: { _S_copy(__p, __k1, __k2 - __k1); } +16166: +16166: +16166: static int +16166: _S_compare(size_type __n1, size_type __n2) noexcept +16166: { +16166: const difference_type __d = difference_type(__n1 - __n2); +16166: +16166: if (__d > __gnu_cxx::__numeric_traits::__max) +16166: return __gnu_cxx::__numeric_traits::__max; +16166: else if (__d < __gnu_cxx::__numeric_traits::__min) +16166: return __gnu_cxx::__numeric_traits::__min; +16166: else +16166: return int(__d); +16166: } +16166: +16166: +16166: void +16166: _M_assign(const basic_string&); +16166: +16166: +16166: void +16166: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, +16166: size_type __len2); +16166: +16166: +16166: void +16166: _M_erase(size_type __pos, size_type __n); +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string() +16166: noexcept(is_nothrow_default_constructible<_Alloc>::value) +16166: : _M_dataplus(_M_local_data()) +16166: { +16166: _M_init_local_buf(); +16166: _M_set_length(0); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: basic_string(const _Alloc& __a) noexcept +16166: : _M_dataplus(_M_local_data(), __a) +16166: { +16166: _M_init_local_buf(); +16166: _M_set_length(0); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string(const basic_string& __str) +16166: : _M_dataplus(_M_local_data(), +16166: _Alloc_traits::_S_select_on_copy(__str._M_get_allocator())) +16166: { +16166: _M_construct(__str._M_data(), __str._M_data() + __str.length(), +16166: std::forward_iterator_tag()); +16166: } +16166: # 568 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string(const basic_string& __str, size_type __pos, +16166: const _Alloc& __a = _Alloc()) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { +16166: const _CharT* __start = __str._M_data() +16166: + __str._M_check(__pos, "basic_string::basic_string"); +16166: _M_construct(__start, __start + __str._M_limit(__pos, npos), +16166: std::forward_iterator_tag()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string(const basic_string& __str, size_type __pos, +16166: size_type __n) +16166: : _M_dataplus(_M_local_data()) +16166: { +16166: const _CharT* __start = __str._M_data() +16166: + __str._M_check(__pos, "basic_string::basic_string"); +16166: _M_construct(__start, __start + __str._M_limit(__pos, __n), +16166: std::forward_iterator_tag()); +16166: } +16166: # 603 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string(const basic_string& __str, size_type __pos, +16166: size_type __n, const _Alloc& __a) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { +16166: const _CharT* __start +16166: = __str._M_data() + __str._M_check(__pos, "string::string"); +16166: _M_construct(__start, __start + __str._M_limit(__pos, __n), +16166: std::forward_iterator_tag()); +16166: } +16166: # 623 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string(const _CharT* __s, size_type __n, +16166: const _Alloc& __a = _Alloc()) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { +16166: +16166: if (__s == 0 && __n > 0) +16166: std::__throw_logic_error(("basic_string: " "construction from null is not valid") +16166: ); +16166: _M_construct(__s, __s + __n, std::forward_iterator_tag()); +16166: } +16166: # 643 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template> +16166: +16166: +16166: basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { +16166: +16166: if (__s == 0) +16166: std::__throw_logic_error(("basic_string: " "construction from null is not valid") +16166: ); +16166: const _CharT* __end = __s + traits_type::length(__s); +16166: _M_construct(__s, __end, forward_iterator_tag()); +16166: } +16166: # 666 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template> +16166: +16166: +16166: basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { _M_construct(__n, __c); } +16166: # 681 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string(basic_string&& __str) noexcept +16166: : _M_dataplus(_M_local_data(), std::move(__str._M_get_allocator())) +16166: { +16166: if (__str._M_is_local()) +16166: { +16166: _M_init_local_buf(); +16166: traits_type::copy(_M_local_buf, __str._M_local_buf, +16166: __str.length() + 1); +16166: } +16166: else +16166: { +16166: _M_data(__str._M_data()); +16166: _M_capacity(__str._M_allocated_capacity); +16166: } +16166: +16166: +16166: +16166: +16166: _M_length(__str.length()); +16166: __str._M_data(__str._M_use_local_data()); +16166: __str._M_set_length(0); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc()) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { _M_construct(__l.begin(), __l.end(), std::forward_iterator_tag()); } +16166: +16166: +16166: basic_string(const basic_string& __str, const _Alloc& __a) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); } +16166: +16166: +16166: basic_string(basic_string&& __str, const _Alloc& __a) +16166: noexcept(_Alloc_traits::_S_always_equal()) +16166: : _M_dataplus(_M_local_data(), __a) +16166: { +16166: if (__str._M_is_local()) +16166: { +16166: _M_init_local_buf(); +16166: traits_type::copy(_M_local_buf, __str._M_local_buf, +16166: __str.length() + 1); +16166: _M_length(__str.length()); +16166: __str._M_set_length(0); +16166: } +16166: else if (_Alloc_traits::_S_always_equal() +16166: || __str.get_allocator() == __a) +16166: { +16166: _M_data(__str._M_data()); +16166: _M_length(__str.length()); +16166: _M_capacity(__str._M_allocated_capacity); +16166: __str._M_data(__str._M_use_local_data()); +16166: __str._M_set_length(0); +16166: } +16166: else +16166: _M_construct(__str.begin(), __str.end(), std::forward_iterator_tag()); +16166: } +16166: # 759 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template> +16166: +16166: +16166: +16166: +16166: basic_string(_InputIterator __beg, _InputIterator __end, +16166: const _Alloc& __a = _Alloc()) +16166: : _M_dataplus(_M_local_data(), __a), _M_string_length(0) +16166: { +16166: +16166: _M_construct(__beg, __end, std::__iterator_category(__beg)); +16166: +16166: +16166: +16166: +16166: } +16166: # 785 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template>> +16166: +16166: basic_string(const _Tp& __t, size_type __pos, size_type __n, +16166: const _Alloc& __a = _Alloc()) +16166: : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: +16166: explicit +16166: basic_string(const _Tp& __t, const _Alloc& __a = _Alloc()) +16166: : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~basic_string() +16166: { _M_dispose(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: operator=(const basic_string& __str) +16166: { +16166: return this->assign(__str); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: operator=(const _CharT* __s) +16166: { return this->assign(__s); } +16166: # 838 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: operator=(_CharT __c) +16166: { +16166: this->assign(1, __c); +16166: return *this; +16166: } +16166: # 856 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: operator=(basic_string&& __str) +16166: noexcept(_Alloc_traits::_S_nothrow_move()) +16166: { +16166: const bool __equal_allocs = _Alloc_traits::_S_always_equal() +16166: || _M_get_allocator() == __str._M_get_allocator(); +16166: if (!_M_is_local() && _Alloc_traits::_S_propagate_on_move_assign() +16166: && !__equal_allocs) +16166: { +16166: +16166: _M_destroy(_M_allocated_capacity); +16166: _M_data(_M_local_data()); +16166: _M_set_length(0); +16166: } +16166: +16166: std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); +16166: +16166: if (__str._M_is_local()) +16166: { +16166: +16166: +16166: +16166: if (__builtin_expect(std::__addressof(__str) != this, true)) +16166: { +16166: if (__str.size()) +16166: this->_S_copy(_M_data(), __str._M_data(), __str.size()); +16166: _M_set_length(__str.size()); +16166: } +16166: } +16166: else if (_Alloc_traits::_S_propagate_on_move_assign() || __equal_allocs) +16166: { +16166: +16166: pointer __data = nullptr; +16166: size_type __capacity; +16166: if (!_M_is_local()) +16166: { +16166: if (__equal_allocs) +16166: { +16166: +16166: __data = _M_data(); +16166: __capacity = _M_allocated_capacity; +16166: } +16166: else +16166: _M_destroy(_M_allocated_capacity); +16166: } +16166: +16166: _M_data(__str._M_data()); +16166: _M_length(__str.length()); +16166: _M_capacity(__str._M_allocated_capacity); +16166: if (__data) +16166: { +16166: __str._M_data(__data); +16166: __str._M_capacity(__capacity); +16166: } +16166: else +16166: __str._M_data(__str._M_use_local_data()); +16166: } +16166: else +16166: _M_assign(__str); +16166: __str.clear(); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: operator=(initializer_list<_CharT> __l) +16166: { +16166: this->assign(__l.begin(), __l.size()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: operator=(const _Tp& __svt) +16166: { return this->assign(__svt); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: operator __sv_type() const noexcept +16166: { return __sv_type(data(), size()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: begin() noexcept +16166: { return iterator(_M_data()); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: begin() const noexcept +16166: { return const_iterator(_M_data()); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: end() noexcept +16166: { return iterator(_M_data() + this->size()); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: end() const noexcept +16166: { return const_iterator(_M_data() + this->size()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return reverse_iterator(this->end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(this->end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rend() noexcept +16166: { return reverse_iterator(this->begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(this->begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cbegin() const noexcept +16166: { return const_iterator(this->_M_data()); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cend() const noexcept +16166: { return const_iterator(this->_M_data() + this->size()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crbegin() const noexcept +16166: { return const_reverse_iterator(this->end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crend() const noexcept +16166: { return const_reverse_iterator(this->begin()); } +16166: +16166: +16166: public: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: size() const noexcept +16166: { return _M_string_length; } +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: length() const noexcept +16166: { return _M_string_length; } +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: max_size() const noexcept +16166: { return (_Alloc_traits::max_size(_M_get_allocator()) - 1) / 2; } +16166: # 1102 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: void +16166: resize(size_type __n, _CharT __c); +16166: # 1116 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: void +16166: resize(size_type __n) +16166: { this->resize(__n, _CharT()); } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: void +16166: shrink_to_fit() noexcept +16166: { reserve(); } +16166: #pragma GCC diagnostic pop +16166: # 1169 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: void +16166: __resize_and_overwrite(size_type __n, _Operation __op); +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: capacity() const noexcept +16166: { +16166: return _M_is_local() ? size_type(_S_local_capacity) +16166: : _M_allocated_capacity; +16166: } +16166: # 1203 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: void +16166: reserve(size_type __res_arg); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: reserve(); +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_set_length(0); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: bool +16166: empty() const noexcept +16166: { return this->size() == 0; } +16166: # 1245 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: const_reference +16166: operator[] (size_type __pos) const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_data()[__pos]; +16166: } +16166: # 1263 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: reference +16166: operator[](size_type __pos) +16166: { +16166: +16166: +16166: do { if (std::__is_constant_evaluated() && !bool(__pos <= size())) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: ; +16166: return _M_data()[__pos]; +16166: } +16166: # 1285 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: const_reference +16166: at(size_type __n) const +16166: { +16166: if (__n >= this->size()) +16166: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") +16166: +16166: , +16166: __n, this->size()); +16166: return _M_data()[__n]; +16166: } +16166: # 1307 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: reference +16166: at(size_type __n) +16166: { +16166: if (__n >= size()) +16166: __throw_out_of_range_fmt(("basic_string::at: __n " "(which is %zu) >= this->size() " "(which is %zu)") +16166: +16166: , +16166: __n, this->size()); +16166: return _M_data()[__n]; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: front() noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return operator[](0); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: front() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return operator[](0); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: back() noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return operator[](this->size() - 1); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: back() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +16166: return operator[](this->size() - 1); +16166: } +16166: # 1375 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: operator+=(const basic_string& __str) +16166: { return this->append(__str); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: operator+=(const _CharT* __s) +16166: { return this->append(__s); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: operator+=(_CharT __c) +16166: { +16166: this->push_back(__c); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: operator+=(initializer_list<_CharT> __l) +16166: { return this->append(__l.begin(), __l.size()); } +16166: # 1421 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: operator+=(const _Tp& __svt) +16166: { return this->append(__svt); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: append(const basic_string& __str) +16166: { return this->append(__str._M_data(), __str.size()); } +16166: # 1451 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: append(const basic_string& __str, size_type __pos, size_type __n = npos) +16166: { return this->append(__str._M_data() +16166: + __str._M_check(__pos, "basic_string::append"), +16166: __str._M_limit(__pos, __n)); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: append(const _CharT* __s, size_type __n) +16166: { +16166: ; +16166: _M_check_length(size_type(0), __n, "basic_string::append"); +16166: return _M_append(__s, __n); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: append(const _CharT* __s) +16166: { +16166: ; +16166: const size_type __n = traits_type::length(__s); +16166: _M_check_length(size_type(0), __n, "basic_string::append"); +16166: return _M_append(__s, __n); +16166: } +16166: # 1496 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: append(size_type __n, _CharT __c) +16166: { return _M_replace_aux(this->size(), size_type(0), __n, __c); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: append(initializer_list<_CharT> __l) +16166: { return this->append(__l.begin(), __l.size()); } +16166: # 1522 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template> +16166: +16166: +16166: +16166: +16166: basic_string& +16166: append(_InputIterator __first, _InputIterator __last) +16166: { return this->replace(end(), end(), __first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: append(const _Tp& __svt) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->append(__sv.data(), __sv.size()); +16166: } +16166: # 1554 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: append(const _Tp& __svt, size_type __pos, size_type __n = npos) +16166: { +16166: __sv_type __sv = __svt; +16166: return _M_append(__sv.data() +16166: + std::__sv_check(__sv.size(), __pos, "basic_string::append"), +16166: std::__sv_limit(__sv.size(), __pos, __n)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: push_back(_CharT __c) +16166: { +16166: const size_type __size = this->size(); +16166: if (__size + 1 > this->capacity()) +16166: this->_M_mutate(__size, size_type(0), 0, size_type(1)); +16166: traits_type::assign(this->_M_data()[__size], __c); +16166: this->_M_set_length(__size + 1); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_string& +16166: assign(const basic_string& __str) +16166: { +16166: +16166: if (_Alloc_traits::_S_propagate_on_copy_assign()) +16166: { +16166: if (!_Alloc_traits::_S_always_equal() && !_M_is_local() +16166: && _M_get_allocator() != __str._M_get_allocator()) +16166: { +16166: +16166: +16166: if (__str.size() <= _S_local_capacity) +16166: { +16166: _M_destroy(_M_allocated_capacity); +16166: _M_data(_M_use_local_data()); +16166: _M_set_length(0); +16166: } +16166: else +16166: { +16166: const auto __len = __str.size(); +16166: auto __alloc = __str._M_get_allocator(); +16166: +16166: auto __ptr = _S_allocate(__alloc, __len + 1); +16166: _M_destroy(_M_allocated_capacity); +16166: _M_data(__ptr); +16166: _M_capacity(__len); +16166: _M_set_length(__len); +16166: } +16166: } +16166: std::__alloc_on_copy(_M_get_allocator(), __str._M_get_allocator()); +16166: } +16166: +16166: this->_M_assign(__str); +16166: return *this; +16166: } +16166: # 1632 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: assign(basic_string&& __str) +16166: noexcept(_Alloc_traits::_S_nothrow_move()) +16166: { +16166: +16166: +16166: return *this = std::move(__str); +16166: } +16166: # 1656 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: assign(const basic_string& __str, size_type __pos, size_type __n = npos) +16166: { return _M_replace(size_type(0), this->size(), __str._M_data() +16166: + __str._M_check(__pos, "basic_string::assign"), +16166: __str._M_limit(__pos, __n)); } +16166: # 1673 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: assign(const _CharT* __s, size_type __n) +16166: { +16166: ; +16166: return _M_replace(size_type(0), this->size(), __s, __n); +16166: } +16166: # 1690 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: assign(const _CharT* __s) +16166: { +16166: ; +16166: return _M_replace(size_type(0), this->size(), __s, +16166: traits_type::length(__s)); +16166: } +16166: # 1708 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: assign(size_type __n, _CharT __c) +16166: { return _M_replace_aux(size_type(0), this->size(), __n, __c); } +16166: # 1722 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: template> +16166: +16166: basic_string& +16166: assign(_InputIterator __first, _InputIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: if constexpr (__is_one_of<_InputIterator, const_iterator, iterator, +16166: const _CharT*, _CharT*>::value) +16166: +16166: { +16166: ; +16166: return _M_replace(size_type(0), size(), +16166: std::__to_address(__first), __last - __first); +16166: } +16166: else +16166: return *this = basic_string(__first, __last, get_allocator()); +16166: } +16166: #pragma GCC diagnostic pop +16166: # 1759 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: assign(initializer_list<_CharT> __l) +16166: { +16166: +16166: +16166: const size_type __n = __l.size(); +16166: if (__n > capacity()) +16166: *this = basic_string(__l.begin(), __l.end(), get_allocator()); +16166: else +16166: { +16166: if (__n) +16166: _S_copy(_M_data(), __l.begin(), __n); +16166: _M_set_length(__n); +16166: } +16166: return *this; +16166: } +16166: # 1784 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: assign(const _Tp& __svt) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->assign(__sv.data(), __sv.size()); +16166: } +16166: # 1800 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: assign(const _Tp& __svt, size_type __pos, size_type __n = npos) +16166: { +16166: __sv_type __sv = __svt; +16166: return _M_replace(size_type(0), this->size(), +16166: __sv.data() +16166: + std::__sv_check(__sv.size(), __pos, "basic_string::assign"), +16166: std::__sv_limit(__sv.size(), __pos, __n)); +16166: } +16166: # 1829 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: iterator +16166: insert(const_iterator __p, size_type __n, _CharT __c) +16166: { +16166: ; +16166: const size_type __pos = __p - begin(); +16166: this->replace(__p, __p, __n, __c); +16166: return iterator(this->_M_data() + __pos); +16166: } +16166: # 1872 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template> +16166: +16166: iterator +16166: insert(const_iterator __p, _InputIterator __beg, _InputIterator __end) +16166: { +16166: ; +16166: const size_type __pos = __p - begin(); +16166: this->replace(__p, __p, __beg, __end); +16166: return iterator(this->_M_data() + __pos); +16166: } +16166: # 1909 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: iterator +16166: insert(const_iterator __p, initializer_list<_CharT> __l) +16166: { return this->insert(__p, __l.begin(), __l.end()); } +16166: # 1937 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: insert(size_type __pos1, const basic_string& __str) +16166: { return this->replace(__pos1, size_type(0), +16166: __str._M_data(), __str.size()); } +16166: # 1961 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: insert(size_type __pos1, const basic_string& __str, +16166: size_type __pos2, size_type __n = npos) +16166: { return this->replace(__pos1, size_type(0), __str._M_data() +16166: + __str._M_check(__pos2, "basic_string::insert"), +16166: __str._M_limit(__pos2, __n)); } +16166: # 1985 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: insert(size_type __pos, const _CharT* __s, size_type __n) +16166: { return this->replace(__pos, size_type(0), __s, __n); } +16166: # 2005 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: insert(size_type __pos, const _CharT* __s) +16166: { +16166: ; +16166: return this->replace(__pos, size_type(0), __s, +16166: traits_type::length(__s)); +16166: } +16166: # 2030 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: insert(size_type __pos, size_type __n, _CharT __c) +16166: { return _M_replace_aux(_M_check(__pos, "basic_string::insert"), +16166: size_type(0), __n, __c); } +16166: # 2049 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: iterator +16166: insert(__const_iterator __p, _CharT __c) +16166: { +16166: ; +16166: const size_type __pos = __p - begin(); +16166: _M_replace_aux(__pos, size_type(0), size_type(1), __c); +16166: return iterator(_M_data() + __pos); +16166: } +16166: # 2066 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: insert(size_type __pos, const _Tp& __svt) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->insert(__pos, __sv.data(), __sv.size()); +16166: } +16166: # 2083 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: insert(size_type __pos1, const _Tp& __svt, +16166: size_type __pos2, size_type __n = npos) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->replace(__pos1, size_type(0), +16166: __sv.data() +16166: + std::__sv_check(__sv.size(), __pos2, "basic_string::insert"), +16166: std::__sv_limit(__sv.size(), __pos2, __n)); +16166: } +16166: # 2112 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: erase(size_type __pos = 0, size_type __n = npos) +16166: { +16166: _M_check(__pos, "basic_string::erase"); +16166: if (__n == npos) +16166: this->_M_set_length(__pos); +16166: else if (__n != 0) +16166: this->_M_erase(__pos, _M_limit(__pos, __n)); +16166: return *this; +16166: } +16166: # 2132 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: iterator +16166: erase(__const_iterator __position) +16166: { +16166: +16166: ; +16166: const size_type __pos = __position - begin(); +16166: this->_M_erase(__pos, size_type(1)); +16166: return iterator(_M_data() + __pos); +16166: } +16166: # 2152 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: iterator +16166: erase(__const_iterator __first, __const_iterator __last) +16166: { +16166: +16166: ; +16166: const size_type __pos = __first - begin(); +16166: if (__last == end()) +16166: this->_M_set_length(__pos); +16166: else +16166: this->_M_erase(__pos, __last - __first); +16166: return iterator(this->_M_data() + __pos); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: pop_back() noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!empty())) std::__glibcxx_assert_fail(); } while (false); +16166: _M_erase(size() - 1, 1); +16166: } +16166: # 2198 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(size_type __pos, size_type __n, const basic_string& __str) +16166: { return this->replace(__pos, __n, __str._M_data(), __str.size()); } +16166: # 2221 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(size_type __pos1, size_type __n1, const basic_string& __str, +16166: size_type __pos2, size_type __n2 = npos) +16166: { return this->replace(__pos1, __n1, __str._M_data() +16166: + __str._M_check(__pos2, "basic_string::replace"), +16166: __str._M_limit(__pos2, __n2)); } +16166: # 2247 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(size_type __pos, size_type __n1, const _CharT* __s, +16166: size_type __n2) +16166: { +16166: ; +16166: return _M_replace(_M_check(__pos, "basic_string::replace"), +16166: _M_limit(__pos, __n1), __s, __n2); +16166: } +16166: # 2273 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(size_type __pos, size_type __n1, const _CharT* __s) +16166: { +16166: ; +16166: return this->replace(__pos, __n1, __s, traits_type::length(__s)); +16166: } +16166: # 2298 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) +16166: { return _M_replace_aux(_M_check(__pos, "basic_string::replace"), +16166: _M_limit(__pos, __n1), __n2, __c); } +16166: # 2317 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, +16166: const basic_string& __str) +16166: { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } +16166: # 2338 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, +16166: const _CharT* __s, size_type __n) +16166: { +16166: +16166: ; +16166: return this->replace(__i1 - begin(), __i2 - __i1, __s, __n); +16166: } +16166: # 2361 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, const _CharT* __s) +16166: { +16166: ; +16166: return this->replace(__i1, __i2, __s, traits_type::length(__s)); +16166: } +16166: # 2383 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, size_type __n, +16166: _CharT __c) +16166: { +16166: +16166: ; +16166: return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __c); +16166: } +16166: # 2409 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template> +16166: +16166: basic_string& +16166: replace(const_iterator __i1, const_iterator __i2, +16166: _InputIterator __k1, _InputIterator __k2) +16166: { +16166: +16166: ; +16166: ; +16166: return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, +16166: std::__false_type()); +16166: } +16166: # 2442 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, +16166: _CharT* __k1, _CharT* __k2) +16166: { +16166: +16166: ; +16166: ; +16166: return this->replace(__i1 - begin(), __i2 - __i1, +16166: __k1, __k2 - __k1); +16166: } +16166: +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, +16166: const _CharT* __k1, const _CharT* __k2) +16166: { +16166: +16166: ; +16166: ; +16166: return this->replace(__i1 - begin(), __i2 - __i1, +16166: __k1, __k2 - __k1); +16166: } +16166: +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, +16166: iterator __k1, iterator __k2) +16166: { +16166: +16166: ; +16166: ; +16166: return this->replace(__i1 - begin(), __i2 - __i1, +16166: __k1.base(), __k2 - __k1); +16166: } +16166: +16166: +16166: basic_string& +16166: replace(__const_iterator __i1, __const_iterator __i2, +16166: const_iterator __k1, const_iterator __k2) +16166: { +16166: +16166: ; +16166: ; +16166: return this->replace(__i1 - begin(), __i2 - __i1, +16166: __k1.base(), __k2 - __k1); +16166: } +16166: # 2505 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: basic_string& replace(const_iterator __i1, const_iterator __i2, +16166: initializer_list<_CharT> __l) +16166: { return this->replace(__i1, __i2, __l.begin(), __l.size()); } +16166: # 2519 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: replace(size_type __pos, size_type __n, const _Tp& __svt) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->replace(__pos, __n, __sv.data(), __sv.size()); +16166: } +16166: # 2537 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: replace(size_type __pos1, size_type __n1, const _Tp& __svt, +16166: size_type __pos2, size_type __n2 = npos) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->replace(__pos1, __n1, +16166: __sv.data() +16166: + std::__sv_check(__sv.size(), __pos2, "basic_string::replace"), +16166: std::__sv_limit(__sv.size(), __pos2, __n2)); +16166: } +16166: # 2559 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: _If_sv<_Tp, basic_string&> +16166: replace(const_iterator __i1, const_iterator __i2, const _Tp& __svt) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->replace(__i1 - begin(), __i2 - __i1, __sv); +16166: } +16166: +16166: +16166: private: +16166: template +16166: +16166: basic_string& +16166: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, +16166: _Integer __n, _Integer __val, __true_type) +16166: { return _M_replace_aux(__i1 - begin(), __i2 - __i1, __n, __val); } +16166: +16166: template +16166: +16166: basic_string& +16166: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, +16166: _InputIterator __k1, _InputIterator __k2, +16166: __false_type); +16166: +16166: +16166: basic_string& +16166: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, +16166: _CharT __c); +16166: +16166: __attribute__((__noinline__, __noclone__, __cold__)) void +16166: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, +16166: const size_type __len2, const size_type __how_much); +16166: +16166: +16166: basic_string& +16166: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, +16166: const size_type __len2); +16166: +16166: +16166: basic_string& +16166: _M_append(const _CharT* __s, size_type __n); +16166: +16166: public: +16166: # 2616 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: size_type +16166: copy(_CharT* __s, size_type __n, size_type __pos = 0) const; +16166: # 2627 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: +16166: void +16166: swap(basic_string& __s) noexcept; +16166: # 2638 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: const _CharT* +16166: c_str() const noexcept +16166: { return _M_data(); } +16166: # 2651 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: const _CharT* +16166: data() const noexcept +16166: { return _M_data(); } +16166: # 2663 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: _CharT* +16166: data() noexcept +16166: { return _M_data(); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return _M_get_allocator(); } +16166: # 2689 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept; +16166: # 2704 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find(const basic_string& __str, size_type __pos = 0) const +16166: noexcept +16166: { return this->find(__str.data(), __pos, __str.size()); } +16166: # 2717 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, size_type> +16166: find(const _Tp& __svt, size_type __pos = 0) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->find(__sv.data(), __pos, __sv.size()); +16166: } +16166: # 2738 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find(const _CharT* __s, size_type __pos = 0) const noexcept +16166: { +16166: ; +16166: return this->find(__s, __pos, traits_type::length(__s)); +16166: } +16166: # 2756 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find(_CharT __c, size_type __pos = 0) const noexcept; +16166: # 2770 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: rfind(const basic_string& __str, size_type __pos = npos) const +16166: noexcept +16166: { return this->rfind(__str.data(), __pos, __str.size()); } +16166: # 2783 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, size_type> +16166: rfind(const _Tp& __svt, size_type __pos = npos) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->rfind(__sv.data(), __pos, __sv.size()); +16166: } +16166: # 2806 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: rfind(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept; +16166: # 2821 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: rfind(const _CharT* __s, size_type __pos = npos) const +16166: { +16166: ; +16166: return this->rfind(__s, __pos, traits_type::length(__s)); +16166: } +16166: # 2839 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: rfind(_CharT __c, size_type __pos = npos) const noexcept; +16166: # 2854 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_of(const basic_string& __str, size_type __pos = 0) const +16166: noexcept +16166: { return this->find_first_of(__str.data(), __pos, __str.size()); } +16166: # 2868 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, size_type> +16166: find_first_of(const _Tp& __svt, size_type __pos = 0) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->find_first_of(__sv.data(), __pos, __sv.size()); +16166: } +16166: # 2891 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept; +16166: # 2906 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_of(const _CharT* __s, size_type __pos = 0) const +16166: noexcept +16166: { +16166: ; +16166: return this->find_first_of(__s, __pos, traits_type::length(__s)); +16166: } +16166: # 2927 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_of(_CharT __c, size_type __pos = 0) const noexcept +16166: { return this->find(__c, __pos); } +16166: # 2943 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_of(const basic_string& __str, size_type __pos = npos) const +16166: noexcept +16166: { return this->find_last_of(__str.data(), __pos, __str.size()); } +16166: # 2957 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, size_type> +16166: find_last_of(const _Tp& __svt, size_type __pos = npos) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->find_last_of(__sv.data(), __pos, __sv.size()); +16166: } +16166: # 2980 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept; +16166: # 2995 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_of(const _CharT* __s, size_type __pos = npos) const +16166: noexcept +16166: { +16166: ; +16166: return this->find_last_of(__s, __pos, traits_type::length(__s)); +16166: } +16166: # 3016 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_of(_CharT __c, size_type __pos = npos) const noexcept +16166: { return this->rfind(__c, __pos); } +16166: # 3031 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_not_of(const basic_string& __str, size_type __pos = 0) const +16166: noexcept +16166: { return this->find_first_not_of(__str.data(), __pos, __str.size()); } +16166: # 3045 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, size_type> +16166: find_first_not_of(const _Tp& __svt, size_type __pos = 0) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->find_first_not_of(__sv.data(), __pos, __sv.size()); +16166: } +16166: # 3068 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_not_of(const _CharT* __s, size_type __pos, +16166: size_type __n) const noexcept; +16166: # 3083 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_not_of(const _CharT* __s, size_type __pos = 0) const +16166: noexcept +16166: { +16166: ; +16166: return this->find_first_not_of(__s, __pos, traits_type::length(__s)); +16166: } +16166: # 3102 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_first_not_of(_CharT __c, size_type __pos = 0) const +16166: noexcept; +16166: # 3118 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_not_of(const basic_string& __str, size_type __pos = npos) const +16166: noexcept +16166: { return this->find_last_not_of(__str.data(), __pos, __str.size()); } +16166: # 3132 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, size_type> +16166: find_last_not_of(const _Tp& __svt, size_type __pos = npos) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return this->find_last_not_of(__sv.data(), __pos, __sv.size()); +16166: } +16166: # 3155 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_not_of(const _CharT* __s, size_type __pos, +16166: size_type __n) const noexcept; +16166: # 3170 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_not_of(const _CharT* __s, size_type __pos = npos) const +16166: noexcept +16166: { +16166: ; +16166: return this->find_last_not_of(__s, __pos, traits_type::length(__s)); +16166: } +16166: # 3189 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: size_type +16166: find_last_not_of(_CharT __c, size_type __pos = npos) const +16166: noexcept; +16166: # 3206 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: basic_string +16166: substr(size_type __pos = 0, size_type __n = npos) const +16166: { return basic_string(*this, +16166: _M_check(__pos, "basic_string::substr"), __n); } +16166: # 3226 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: int +16166: compare(const basic_string& __str) const +16166: { +16166: const size_type __size = this->size(); +16166: const size_type __osize = __str.size(); +16166: const size_type __len = std::min(__size, __osize); +16166: +16166: int __r = traits_type::compare(_M_data(), __str.data(), __len); +16166: if (!__r) +16166: __r = _S_compare(__size, __osize); +16166: return __r; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, int> +16166: compare(const _Tp& __svt) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: const size_type __size = this->size(); +16166: const size_type __osize = __sv.size(); +16166: const size_type __len = std::min(__size, __osize); +16166: +16166: int __r = traits_type::compare(_M_data(), __sv.data(), __len); +16166: if (!__r) +16166: __r = _S_compare(__size, __osize); +16166: return __r; +16166: } +16166: # 3271 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, int> +16166: compare(size_type __pos, size_type __n, const _Tp& __svt) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return __sv_type(*this).substr(__pos, __n).compare(__sv); +16166: } +16166: # 3291 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _If_sv<_Tp, int> +16166: compare(size_type __pos1, size_type __n1, const _Tp& __svt, +16166: size_type __pos2, size_type __n2 = npos) const +16166: noexcept(is_same<_Tp, __sv_type>::value) +16166: { +16166: __sv_type __sv = __svt; +16166: return __sv_type(*this) +16166: .substr(__pos1, __n1).compare(__sv.substr(__pos2, __n2)); +16166: } +16166: # 3323 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: int +16166: compare(size_type __pos, size_type __n, const basic_string& __str) const +16166: { +16166: _M_check(__pos, "basic_string::compare"); +16166: __n = _M_limit(__pos, __n); +16166: const size_type __osize = __str.size(); +16166: const size_type __len = std::min(__n, __osize); +16166: int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len); +16166: if (!__r) +16166: __r = _S_compare(__n, __osize); +16166: return __r; +16166: } +16166: # 3360 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: int +16166: compare(size_type __pos1, size_type __n1, const basic_string& __str, +16166: size_type __pos2, size_type __n2 = npos) const +16166: { +16166: _M_check(__pos1, "basic_string::compare"); +16166: __str._M_check(__pos2, "basic_string::compare"); +16166: __n1 = _M_limit(__pos1, __n1); +16166: __n2 = __str._M_limit(__pos2, __n2); +16166: const size_type __len = std::min(__n1, __n2); +16166: int __r = traits_type::compare(_M_data() + __pos1, +16166: __str.data() + __pos2, __len); +16166: if (!__r) +16166: __r = _S_compare(__n1, __n2); +16166: return __r; +16166: } +16166: # 3391 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: int +16166: compare(const _CharT* __s) const noexcept +16166: { +16166: ; +16166: const size_type __size = this->size(); +16166: const size_type __osize = traits_type::length(__s); +16166: const size_type __len = std::min(__size, __osize); +16166: int __r = traits_type::compare(_M_data(), __s, __len); +16166: if (!__r) +16166: __r = _S_compare(__size, __osize); +16166: return __r; +16166: } +16166: # 3426 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: int +16166: compare(size_type __pos, size_type __n1, const _CharT* __s) const +16166: { +16166: ; +16166: _M_check(__pos, "basic_string::compare"); +16166: __n1 = _M_limit(__pos, __n1); +16166: const size_type __osize = traits_type::length(__s); +16166: const size_type __len = std::min(__n1, __osize); +16166: int __r = traits_type::compare(_M_data() + __pos, __s, __len); +16166: if (!__r) +16166: __r = _S_compare(__n1, __osize); +16166: return __r; +16166: } +16166: # 3465 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: int +16166: compare(size_type __pos, size_type __n1, const _CharT* __s, +16166: size_type __n2) const +16166: { +16166: ; +16166: _M_check(__pos, "basic_string::compare"); +16166: __n1 = _M_limit(__pos, __n1); +16166: const size_type __len = std::min(__n1, __n2); +16166: int __r = traits_type::compare(_M_data() + __pos, __s, __len); +16166: if (!__r) +16166: __r = _S_compare(__n1, __n2); +16166: return __r; +16166: } +16166: # 3530 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template friend class basic_stringbuf; +16166: }; +16166: } +16166: +16166: } +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: namespace __cxx11 { +16166: template::value_type, +16166: typename _Allocator = allocator<_CharT>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireAllocator<_Allocator>> +16166: basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator()) +16166: -> basic_string<_CharT, char_traits<_CharT>, _Allocator>; +16166: +16166: +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: basic_string(basic_string_view<_CharT, _Traits>, const _Allocator& = _Allocator()) +16166: -> basic_string<_CharT, _Traits, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: basic_string(basic_string_view<_CharT, _Traits>, +16166: typename basic_string<_CharT, _Traits, _Allocator>::size_type, +16166: typename basic_string<_CharT, _Traits, _Allocator>::size_type, +16166: const _Allocator& = _Allocator()) +16166: -> basic_string<_CharT, _Traits, _Allocator>; +16166: } +16166: +16166: +16166: template +16166: +16166: inline _Str +16166: __str_concat(typename _Str::value_type const* __lhs, +16166: typename _Str::size_type __lhs_len, +16166: typename _Str::value_type const* __rhs, +16166: typename _Str::size_type __rhs_len, +16166: typename _Str::allocator_type const& __a) +16166: { +16166: typedef typename _Str::allocator_type allocator_type; +16166: typedef __gnu_cxx::__alloc_traits _Alloc_traits; +16166: _Str __str(_Alloc_traits::_S_select_on_copy(__a)); +16166: __str.reserve(__lhs_len + __rhs_len); +16166: __str.append(__lhs, __lhs_len); +16166: __str.append(__rhs, __rhs_len); +16166: return __str; +16166: } +16166: # 3595 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { +16166: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +16166: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), +16166: __rhs.c_str(), __rhs.size(), +16166: __lhs.get_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT,_Traits,_Alloc> +16166: operator+(const _CharT* __lhs, +16166: const basic_string<_CharT,_Traits,_Alloc>& __rhs) +16166: { +16166: ; +16166: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +16166: return std::__str_concat<_Str>(__lhs, _Traits::length(__lhs), +16166: __rhs.c_str(), __rhs.size(), +16166: __rhs.get_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT,_Traits,_Alloc> +16166: operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs) +16166: { +16166: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +16166: return std::__str_concat<_Str>(__builtin_addressof(__lhs), 1, +16166: __rhs.c_str(), __rhs.size(), +16166: __rhs.get_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const _CharT* __rhs) +16166: { +16166: ; +16166: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +16166: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), +16166: __rhs, _Traits::length(__rhs), +16166: __lhs.get_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs) +16166: { +16166: typedef basic_string<_CharT, _Traits, _Alloc> _Str; +16166: return std::__str_concat<_Str>(__lhs.c_str(), __lhs.size(), +16166: __builtin_addressof(__rhs), 1, +16166: __lhs.get_allocator()); +16166: } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { return std::move(__lhs.append(__rhs)); } +16166: +16166: template +16166: +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +16166: { return std::move(__rhs.insert(0, __lhs)); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +16166: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +16166: { +16166: +16166: using _Alloc_traits = allocator_traits<_Alloc>; +16166: bool __use_rhs = false; +16166: if constexpr (typename _Alloc_traits::is_always_equal{}) +16166: __use_rhs = true; +16166: else if (__lhs.get_allocator() == __rhs.get_allocator()) +16166: __use_rhs = true; +16166: if (__use_rhs) +16166: +16166: { +16166: const auto __size = __lhs.size() + __rhs.size(); +16166: if (__size > __lhs.capacity() && __size <= __rhs.capacity()) +16166: return std::move(__rhs.insert(0, __lhs)); +16166: } +16166: return std::move(__lhs.append(__rhs)); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(const _CharT* __lhs, +16166: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +16166: { return std::move(__rhs.insert(0, __lhs)); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(_CharT __lhs, +16166: basic_string<_CharT, _Traits, _Alloc>&& __rhs) +16166: { return std::move(__rhs.insert(0, 1, __lhs)); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +16166: const _CharT* __rhs) +16166: { return std::move(__lhs.append(__rhs)); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline basic_string<_CharT, _Traits, _Alloc> +16166: operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs, +16166: _CharT __rhs) +16166: { return std::move(__lhs.append(1, __rhs)); } +16166: # 3752 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: noexcept +16166: { +16166: return __lhs.size() == __rhs.size() +16166: && !_Traits::compare(__lhs.data(), __rhs.data(), __lhs.size()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const _CharT* __rhs) +16166: { +16166: return __lhs.size() == _Traits::length(__rhs) +16166: && !_Traits::compare(__lhs.data(), __rhs, __lhs.size()); +16166: } +16166: # 3816 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const _CharT* __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { return __rhs == __lhs; } +16166: # 3830 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: noexcept +16166: { return !(__lhs == __rhs); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const _CharT* __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { return !(__rhs == __lhs); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const _CharT* __rhs) +16166: { return !(__lhs == __rhs); } +16166: # 3871 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: noexcept +16166: { return __lhs.compare(__rhs) < 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const _CharT* __rhs) +16166: { return __lhs.compare(__rhs) < 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const _CharT* __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { return __rhs.compare(__lhs) > 0; } +16166: # 3912 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: noexcept +16166: { return __lhs.compare(__rhs) > 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const _CharT* __rhs) +16166: { return __lhs.compare(__rhs) > 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const _CharT* __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { return __rhs.compare(__lhs) < 0; } +16166: # 3953 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: noexcept +16166: { return __lhs.compare(__rhs) <= 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const _CharT* __rhs) +16166: { return __lhs.compare(__rhs) <= 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const _CharT* __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { return __rhs.compare(__lhs) >= 0; } +16166: # 3994 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: noexcept +16166: { return __lhs.compare(__rhs) >= 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: const _CharT* __rhs) +16166: { return __lhs.compare(__rhs) >= 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const _CharT* __lhs, +16166: const basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: { return __rhs.compare(__lhs) <= 0; } +16166: # 4036 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: +16166: inline void +16166: swap(basic_string<_CharT, _Traits, _Alloc>& __lhs, +16166: basic_string<_CharT, _Traits, _Alloc>& __rhs) +16166: noexcept(noexcept(__lhs.swap(__rhs))) +16166: { __lhs.swap(__rhs); } +16166: # 4057 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: operator>>(basic_istream<_CharT, _Traits>& __is, +16166: basic_string<_CharT, _Traits, _Alloc>& __str); +16166: +16166: template<> +16166: basic_istream& +16166: operator>>(basic_istream& __is, basic_string& __str); +16166: # 4075 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __os, +16166: const basic_string<_CharT, _Traits, _Alloc>& __str) +16166: { +16166: +16166: +16166: return __ostream_insert(__os, __str.data(), __str.size()); +16166: } +16166: # 4098 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: getline(basic_istream<_CharT, _Traits>& __is, +16166: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); +16166: # 4115 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: inline basic_istream<_CharT, _Traits>& +16166: getline(basic_istream<_CharT, _Traits>& __is, +16166: basic_string<_CharT, _Traits, _Alloc>& __str) +16166: { return std::getline(__is, __str, __is.widen('\n')); } +16166: +16166: +16166: +16166: template +16166: inline basic_istream<_CharT, _Traits>& +16166: getline(basic_istream<_CharT, _Traits>&& __is, +16166: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) +16166: { return std::getline(__is, __str, __delim); } +16166: +16166: +16166: template +16166: inline basic_istream<_CharT, _Traits>& +16166: getline(basic_istream<_CharT, _Traits>&& __is, +16166: basic_string<_CharT, _Traits, _Alloc>& __str) +16166: { return std::getline(__is, __str); } +16166: +16166: +16166: template<> +16166: basic_istream& +16166: getline(basic_istream& __in, basic_string& __str, +16166: char __delim); +16166: +16166: +16166: template<> +16166: basic_istream& +16166: getline(basic_istream& __in, basic_string& __str, +16166: wchar_t __delim); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/ext/string_conversions.h" 1 3 +16166: # 32 "/usr/include/c++/14/ext/string_conversions.h" 3 +16166: +16166: # 33 "/usr/include/c++/14/ext/string_conversions.h" 3 +16166: # 43 "/usr/include/c++/14/ext/string_conversions.h" 3 +16166: # 1 "/usr/include/c++/14/cstdlib" 1 3 +16166: # 39 "/usr/include/c++/14/cstdlib" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdlib" 3 +16166: # 79 "/usr/include/c++/14/cstdlib" 3 +16166: # 1 "/usr/include/stdlib.h" 1 3 4 +16166: # 26 "/usr/include/stdlib.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +16166: # 27 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 33 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitflags.h" 1 3 4 +16166: # 41 "/usr/include/stdlib.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/waitstatus.h" 1 3 4 +16166: # 42 "/usr/include/stdlib.h" 2 3 4 +16166: # 56 "/usr/include/stdlib.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +16166: # 57 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: typedef struct +16166: { +16166: int quot; +16166: int rem; +16166: } div_t; +16166: +16166: +16166: +16166: typedef struct +16166: { +16166: long int quot; +16166: long int rem; +16166: } ldiv_t; +16166: +16166: +16166: +16166: +16166: +16166: __extension__ typedef struct +16166: { +16166: long long int quot; +16166: long long int rem; +16166: } lldiv_t; +16166: # 98 "/usr/include/stdlib.h" 3 4 +16166: extern size_t __ctype_get_mb_cur_max (void) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern double atof (const char *__nptr) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: extern int atoi (const char *__nptr) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: extern long int atol (const char *__nptr) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: __extension__ extern long long int atoll (const char *__nptr) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern double strtod (const char *__restrict __nptr, +16166: char **__restrict __endptr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern float strtof (const char *__restrict __nptr, +16166: char **__restrict __endptr) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: extern long double strtold (const char *__restrict __nptr, +16166: char **__restrict __endptr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 141 "/usr/include/stdlib.h" 3 4 +16166: extern _Float32 strtof32 (const char *__restrict __nptr, +16166: char **__restrict __endptr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern _Float64 strtof64 (const char *__restrict __nptr, +16166: char **__restrict __endptr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 159 "/usr/include/stdlib.h" 3 4 +16166: extern _Float32x strtof32x (const char *__restrict __nptr, +16166: char **__restrict __endptr) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 177 "/usr/include/stdlib.h" 3 4 +16166: extern long int strtol (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: extern unsigned long int strtoul (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: __extension__ +16166: extern long long int strtoq (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: __extension__ +16166: extern unsigned long long int strtouq (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: __extension__ +16166: extern long long int strtoll (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: __extension__ +16166: extern unsigned long long int strtoull (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtol") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoul") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: +16166: __extension__ +16166: extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: __extension__ +16166: extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: +16166: __extension__ +16166: extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoll") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: __extension__ +16166: extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoull") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: # 278 "/usr/include/stdlib.h" 3 4 +16166: extern int strfromd (char *__dest, size_t __size, const char *__format, +16166: double __f) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: +16166: extern int strfromf (char *__dest, size_t __size, const char *__format, +16166: float __f) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: +16166: extern int strfroml (char *__dest, size_t __size, const char *__format, +16166: long double __f) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: # 298 "/usr/include/stdlib.h" 3 4 +16166: extern int strfromf32 (char *__dest, size_t __size, const char * __format, +16166: _Float32 __f) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: +16166: +16166: +16166: extern int strfromf64 (char *__dest, size_t __size, const char * __format, +16166: _Float64 __f) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: # 316 "/usr/include/stdlib.h" 3 4 +16166: extern int strfromf32x (char *__dest, size_t __size, const char * __format, +16166: _Float32x __f) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))); +16166: # 340 "/usr/include/stdlib.h" 3 4 +16166: extern long int strtol_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base, +16166: locale_t __loc) noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +16166: +16166: extern unsigned long int strtoul_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, +16166: int __base, locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +16166: +16166: __extension__ +16166: extern long long int strtoll_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base, +16166: locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +16166: +16166: __extension__ +16166: extern unsigned long long int strtoull_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, +16166: int __base, locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 4))); +16166: +16166: +16166: +16166: +16166: +16166: extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtol_l") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 4))); +16166: extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoul_l") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 4))); +16166: __extension__ +16166: extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) noexcept (true) __asm__ ("" "__isoc23_strtoll_l") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 4))); +16166: __extension__ +16166: 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") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 4))); +16166: # 415 "/usr/include/stdlib.h" 3 4 +16166: extern double strtod_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: extern float strtof_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: extern long double strtold_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, +16166: locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: # 436 "/usr/include/stdlib.h" 3 4 +16166: extern _Float32 strtof32_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, +16166: locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: +16166: +16166: +16166: extern _Float64 strtof64_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, +16166: locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: # 457 "/usr/include/stdlib.h" 3 4 +16166: extern _Float32x strtof32x_l (const char *__restrict __nptr, +16166: char **__restrict __endptr, +16166: locale_t __loc) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 3))); +16166: # 480 "/usr/include/stdlib.h" 3 4 +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: __attribute__ ((__leaf__)) atoi (const char *__nptr) noexcept (true) +16166: { +16166: return (int) strtol (__nptr, (char **) __null, 10); +16166: } +16166: extern __inline __attribute__ ((__gnu_inline__)) long int +16166: __attribute__ ((__leaf__)) atol (const char *__nptr) noexcept (true) +16166: { +16166: return strtol (__nptr, (char **) __null, 10); +16166: } +16166: +16166: +16166: __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int +16166: __attribute__ ((__leaf__)) atoll (const char *__nptr) noexcept (true) +16166: { +16166: return strtoll (__nptr, (char **) __null, 10); +16166: } +16166: # 505 "/usr/include/stdlib.h" 3 4 +16166: extern char *l64a (long int __n) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: extern long int a64l (const char *__s) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/sys/types.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: typedef __u_char u_char; +16166: typedef __u_short u_short; +16166: typedef __u_int u_int; +16166: typedef __u_long u_long; +16166: typedef __quad_t quad_t; +16166: typedef __u_quad_t u_quad_t; +16166: typedef __fsid_t fsid_t; +16166: +16166: +16166: typedef __loff_t loff_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __ino64_t ino_t; +16166: +16166: +16166: +16166: +16166: typedef __ino64_t ino64_t; +16166: +16166: +16166: +16166: +16166: typedef __dev_t dev_t; +16166: +16166: +16166: +16166: +16166: typedef __gid_t gid_t; +16166: +16166: +16166: +16166: +16166: typedef __mode_t mode_t; +16166: +16166: +16166: +16166: +16166: typedef __nlink_t nlink_t; +16166: +16166: +16166: +16166: +16166: typedef __uid_t uid_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __off64_t off_t; +16166: +16166: +16166: +16166: +16166: typedef __off64_t off64_t; +16166: # 103 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +16166: typedef __id_t id_t; +16166: +16166: +16166: +16166: +16166: typedef __ssize_t ssize_t; +16166: +16166: +16166: +16166: +16166: +16166: typedef __daddr_t daddr_t; +16166: typedef __caddr_t caddr_t; +16166: +16166: +16166: +16166: +16166: +16166: typedef __key_t key_t; +16166: # 134 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +16166: typedef __useconds_t useconds_t; +16166: +16166: +16166: +16166: typedef __suseconds_t suseconds_t; +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 145 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 +16166: +16166: +16166: +16166: typedef unsigned long int ulong; +16166: typedef unsigned short int ushort; +16166: typedef unsigned int uint; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __uint8_t u_int8_t; +16166: typedef __uint16_t u_int16_t; +16166: typedef __uint32_t u_int32_t; +16166: typedef __uint64_t u_int64_t; +16166: +16166: +16166: typedef int register_t __attribute__ ((__mode__ (__word__))); +16166: # 176 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +16166: # 1 "/usr/include/endian.h" 1 3 4 +16166: # 35 "/usr/include/endian.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 1 3 4 +16166: # 33 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 +16166: static __inline __uint16_t +16166: __bswap_16 (__uint16_t __bsx) +16166: { +16166: +16166: return __builtin_bswap16 (__bsx); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: static __inline __uint32_t +16166: __bswap_32 (__uint32_t __bsx) +16166: { +16166: +16166: return __builtin_bswap32 (__bsx); +16166: +16166: +16166: +16166: } +16166: # 69 "/usr/include/arm-linux-gnueabihf/bits/byteswap.h" 3 4 +16166: __extension__ static __inline __uint64_t +16166: __bswap_64 (__uint64_t __bsx) +16166: { +16166: +16166: return __builtin_bswap64 (__bsx); +16166: +16166: +16166: +16166: } +16166: # 36 "/usr/include/endian.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 1 3 4 +16166: # 32 "/usr/include/arm-linux-gnueabihf/bits/uintn-identity.h" 3 4 +16166: static __inline __uint16_t +16166: __uint16_identity (__uint16_t __x) +16166: { +16166: return __x; +16166: } +16166: +16166: static __inline __uint32_t +16166: __uint32_identity (__uint32_t __x) +16166: { +16166: return __x; +16166: } +16166: +16166: static __inline __uint64_t +16166: __uint64_identity (__uint64_t __x) +16166: { +16166: return __x; +16166: } +16166: # 37 "/usr/include/endian.h" 2 3 4 +16166: # 177 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/sys/select.h" 1 3 4 +16166: # 30 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/select.h" 1 3 4 +16166: # 31 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/sigset_t.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __sigset_t sigset_t; +16166: # 34 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 +16166: # 49 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +16166: typedef long int __fd_mask; +16166: # 59 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +16166: typedef struct +16166: { +16166: +16166: +16166: +16166: __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; +16166: +16166: +16166: +16166: +16166: +16166: } fd_set; +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __fd_mask fd_mask; +16166: # 91 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +16166: extern "C" { +16166: # 108 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +16166: extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) __asm__ ("" "__select64") +16166: +16166: +16166: +16166: +16166: ; +16166: # 134 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +16166: 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") +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: # 150 "/usr/include/arm-linux-gnueabihf/sys/select.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/select-decl.h" 3 4 +16166: extern long int __fdelt_chk (long int __d); +16166: extern long int __fdelt_warn (long int __d) +16166: __attribute__((__warning__ ("bit outside of fd_set selected"))); +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/select2.h" 2 3 4 +16166: # 151 "/usr/include/arm-linux-gnueabihf/sys/select.h" 2 3 4 +16166: +16166: +16166: } +16166: # 180 "/usr/include/arm-linux-gnueabihf/sys/types.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: typedef __blksize_t blksize_t; +16166: # 205 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +16166: typedef __blkcnt64_t blkcnt_t; +16166: +16166: +16166: +16166: typedef __fsblkcnt64_t fsblkcnt_t; +16166: +16166: +16166: +16166: typedef __fsfilcnt64_t fsfilcnt_t; +16166: +16166: +16166: +16166: +16166: +16166: typedef __blkcnt64_t blkcnt64_t; +16166: typedef __fsblkcnt64_t fsblkcnt64_t; +16166: typedef __fsfilcnt64_t fsfilcnt64_t; +16166: # 230 "/usr/include/arm-linux-gnueabihf/sys/types.h" 3 4 +16166: } +16166: # 515 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int random (void) noexcept (true); +16166: +16166: +16166: extern void srandom (unsigned int __seed) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern char *initstate (unsigned int __seed, char *__statebuf, +16166: size_t __statelen) noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern char *setstate (char *__statebuf) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct random_data +16166: { +16166: int32_t *fptr; +16166: int32_t *rptr; +16166: int32_t *state; +16166: int rand_type; +16166: int rand_deg; +16166: int rand_sep; +16166: int32_t *end_ptr; +16166: }; +16166: +16166: extern int random_r (struct random_data *__restrict __buf, +16166: int32_t *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern int srandom_r (unsigned int __seed, struct random_data *__buf) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, +16166: size_t __statelen, +16166: struct random_data *__restrict __buf) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 4))); +16166: +16166: extern int setstate_r (char *__restrict __statebuf, +16166: struct random_data *__restrict __buf) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: extern int rand (void) noexcept (true); +16166: +16166: extern void srand (unsigned int __seed) noexcept (true); +16166: +16166: +16166: +16166: extern int rand_r (unsigned int *__seed) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double drand48 (void) noexcept (true); +16166: extern double erand48 (unsigned short int __xsubi[3]) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern long int lrand48 (void) noexcept (true); +16166: extern long int nrand48 (unsigned short int __xsubi[3]) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern long int mrand48 (void) noexcept (true); +16166: extern long int jrand48 (unsigned short int __xsubi[3]) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern void srand48 (long int __seedval) noexcept (true); +16166: extern unsigned short int *seed48 (unsigned short int __seed16v[3]) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: extern void lcong48 (unsigned short int __param[7]) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: struct drand48_data +16166: { +16166: unsigned short int __x[3]; +16166: unsigned short int __old_x[3]; +16166: unsigned short int __c; +16166: unsigned short int __init; +16166: __extension__ unsigned long long int __a; +16166: +16166: }; +16166: +16166: +16166: extern int drand48_r (struct drand48_data *__restrict __buffer, +16166: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: extern int erand48_r (unsigned short int __xsubi[3], +16166: struct drand48_data *__restrict __buffer, +16166: double *__restrict __result) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int lrand48_r (struct drand48_data *__restrict __buffer, +16166: long int *__restrict __result) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: extern int nrand48_r (unsigned short int __xsubi[3], +16166: struct drand48_data *__restrict __buffer, +16166: long int *__restrict __result) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int mrand48_r (struct drand48_data *__restrict __buffer, +16166: long int *__restrict __result) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: extern int jrand48_r (unsigned short int __xsubi[3], +16166: struct drand48_data *__restrict __buffer, +16166: long int *__restrict __result) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int srand48_r (long int __seedval, struct drand48_data *__buffer) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: extern int seed48_r (unsigned short int __seed16v[3], +16166: struct drand48_data *__buffer) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern int lcong48_r (unsigned short int __param[7], +16166: struct drand48_data *__buffer) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern __uint32_t arc4random (void) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: extern void arc4random_buf (void *__buf, size_t __size) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +16166: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: extern void *calloc (size_t __nmemb, size_t __size) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern void *realloc (void *__ptr, size_t __size) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); +16166: +16166: +16166: extern void free (void *__ptr) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__alloc_size__ (2, 3))) +16166: __attribute__ ((__malloc__ (__builtin_free, 1))); +16166: +16166: +16166: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) +16166: noexcept (true) __attribute__ ((__malloc__ (reallocarray, 1))); +16166: +16166: +16166: +16166: # 1 "/usr/include/alloca.h" 1 3 4 +16166: # 24 "/usr/include/alloca.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 25 "/usr/include/alloca.h" 2 3 4 +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: extern void *alloca (size_t __size) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 707 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +16166: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern void *aligned_alloc (size_t __alignment, size_t __size) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) +16166: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern void abort (void) noexcept (true) __attribute__ ((__noreturn__)); +16166: +16166: +16166: +16166: extern int atexit (void (*__func) (void)) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern "C++" int at_quick_exit (void (*__func) (void)) +16166: noexcept (true) __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1))); +16166: # 749 "/usr/include/stdlib.h" 3 4 +16166: extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern void exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); +16166: +16166: +16166: +16166: +16166: +16166: extern void quick_exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); +16166: +16166: +16166: +16166: +16166: +16166: extern void _Exit (int __status) noexcept (true) __attribute__ ((__noreturn__)); +16166: +16166: +16166: +16166: +16166: extern char *getenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern char *secure_getenv (const char *__name) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int putenv (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern int setenv (const char *__name, const char *__value, int __replace) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: extern int unsetenv (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int clearenv (void) noexcept (true); +16166: # 814 "/usr/include/stdlib.h" 3 4 +16166: extern char *mktemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 830 "/usr/include/stdlib.h" 3 4 +16166: extern int mkstemp (char *__template) __asm__ ("" "mkstemp64") +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: # 852 "/usr/include/stdlib.h" 3 4 +16166: extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64") +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int mkstemps64 (char *__template, int __suffixlen) +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: # 870 "/usr/include/stdlib.h" 3 4 +16166: extern char *mkdtemp (char *__template) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: # 884 "/usr/include/stdlib.h" 3 4 +16166: extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64") +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: # 905 "/usr/include/stdlib.h" 3 4 +16166: extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64") +16166: +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int mkostemps64 (char *__template, int __suffixlen, int __flags) +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: # 923 "/usr/include/stdlib.h" 3 4 +16166: extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern char *canonicalize_file_name (const char *__name) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) +16166: __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); +16166: # 940 "/usr/include/stdlib.h" 3 4 +16166: extern char *realpath (const char *__restrict __name, +16166: char *__restrict __resolved) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef int (*__compar_fn_t) (const void *, const void *); +16166: +16166: +16166: typedef __compar_fn_t comparison_fn_t; +16166: +16166: +16166: +16166: typedef int (*__compar_d_fn_t) (const void *, const void *, void *); +16166: +16166: +16166: +16166: +16166: extern void *bsearch (const void *__key, const void *__base, +16166: size_t __nmemb, size_t __size, __compar_fn_t __compar) +16166: __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 1 3 4 +16166: # 19 "/usr/include/arm-linux-gnueabihf/bits/stdlib-bsearch.h" 3 4 +16166: extern __inline __attribute__ ((__gnu_inline__)) void * +16166: bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, +16166: __compar_fn_t __compar) +16166: { +16166: size_t __l, __u, __idx; +16166: const void *__p; +16166: int __comparison; +16166: +16166: __l = 0; +16166: __u = __nmemb; +16166: while (__l < __u) +16166: { +16166: __idx = (__l + __u) / 2; +16166: __p = (const void *) (((const char *) __base) + (__idx * __size)); +16166: __comparison = (*__compar) (__key, __p); +16166: if (__comparison < 0) +16166: __u = __idx; +16166: else if (__comparison > 0) +16166: __l = __idx + 1; +16166: else +16166: { +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wcast-qual" +16166: +16166: return (void *) __p; +16166: +16166: #pragma GCC diagnostic pop +16166: +16166: } +16166: } +16166: +16166: return __null; +16166: } +16166: # 966 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: extern void qsort (void *__base, size_t __nmemb, size_t __size, +16166: __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); +16166: +16166: extern void qsort_r (void *__base, size_t __nmemb, size_t __size, +16166: __compar_d_fn_t __compar, void *__arg) +16166: __attribute__ ((__nonnull__ (1, 4))); +16166: +16166: +16166: +16166: +16166: extern int abs (int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +16166: extern long int labs (long int __x) noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: __extension__ extern long long int llabs (long long int __x) +16166: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern div_t div (int __numer, int __denom) +16166: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +16166: extern ldiv_t ldiv (long int __numer, long int __denom) +16166: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: __extension__ extern lldiv_t lldiv (long long int __numer, +16166: long long int __denom) +16166: noexcept (true) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); +16166: # 1012 "/usr/include/stdlib.h" 3 4 +16166: extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, +16166: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, +16166: int *__restrict __sign) noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern char *gcvt (double __value, int __ndigit, char *__buf) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern char *qecvt (long double __value, int __ndigit, +16166: int *__restrict __decpt, int *__restrict __sign) +16166: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +16166: extern char *qfcvt (long double __value, int __ndigit, +16166: int *__restrict __decpt, int *__restrict __sign) +16166: noexcept (true) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); +16166: extern char *qgcvt (long double __value, int __ndigit, char *__buf) +16166: noexcept (true) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, +16166: int *__restrict __sign, char *__restrict __buf, +16166: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +16166: extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, +16166: int *__restrict __sign, char *__restrict __buf, +16166: size_t __len) noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +16166: +16166: extern int qecvt_r (long double __value, int __ndigit, +16166: int *__restrict __decpt, int *__restrict __sign, +16166: char *__restrict __buf, size_t __len) +16166: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +16166: extern int qfcvt_r (long double __value, int __ndigit, +16166: int *__restrict __decpt, int *__restrict __sign, +16166: char *__restrict __buf, size_t __len) +16166: noexcept (true) __attribute__ ((__nonnull__ (3, 4, 5))); +16166: +16166: +16166: +16166: +16166: +16166: extern int mblen (const char *__s, size_t __n) noexcept (true); +16166: +16166: +16166: extern int mbtowc (wchar_t *__restrict __pwc, +16166: const char *__restrict __s, size_t __n) noexcept (true); +16166: +16166: +16166: extern int wctomb (char *__s, wchar_t __wchar) noexcept (true); +16166: +16166: +16166: +16166: extern size_t mbstowcs (wchar_t *__restrict __pwcs, +16166: const char *__restrict __s, size_t __n) noexcept (true) +16166: __attribute__ ((__access__ (__read_only__, 2))); +16166: +16166: extern size_t wcstombs (char *__restrict __s, +16166: const wchar_t *__restrict __pwcs, size_t __n) +16166: noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1, 3))) +16166: __attribute__ ((__access__ (__read_only__, 2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int rpmatch (const char *__response) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: # 1099 "/usr/include/stdlib.h" 3 4 +16166: extern int getsubopt (char **__restrict __optionp, +16166: char *const *__restrict __tokens, +16166: char **__restrict __valuep) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int grantpt (int __fd) noexcept (true); +16166: +16166: +16166: +16166: extern int unlockpt (int __fd) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern char *ptsname (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int ptsname_r (int __fd, char *__buf, size_t __buflen) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: +16166: +16166: extern int getpt (void); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int getloadavg (double __loadavg[], int __nelem) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 1155 "/usr/include/stdlib.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/stdlib-float.h" 3 4 +16166: extern __inline __attribute__ ((__gnu_inline__)) double +16166: __attribute__ ((__leaf__)) atof (const char *__nptr) noexcept (true) +16166: { +16166: return strtod (__nptr, (char **) __null); +16166: } +16166: # 1156 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/stdlib.h" 3 4 +16166: extern char *__realpath_chk (const char *__restrict __name, +16166: char *__restrict __resolved, +16166: size_t __resolvedlen) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) noexcept (true) __asm__ ("" "realpath") +16166: +16166: __attribute__ ((__warn_unused_result__)); +16166: extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) noexcept (true) __asm__ ("" "__realpath_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) +16166: __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) +16166: ; +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +16166: __attribute__ ((__leaf__)) realpath (const char *__restrict __name, char * __restrict __resolved) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__resolved, 2 > 1); +16166: +16166: if (__sz == (size_t) -1) +16166: return __realpath_alias (__name, __resolved); +16166: +16166: +16166: +16166: +16166: +16166: return __realpath_chk (__name, __resolved, __sz); +16166: } +16166: +16166: +16166: extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, +16166: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ptsname_r") +16166: +16166: __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ptsname_r_chk") +16166: +16166: +16166: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) +16166: ; +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) ptsname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: extern int __wctomb_alias (char *__s, wchar_t __wchar) noexcept (true) __asm__ ("" "wctomb") +16166: __attribute__ ((__warn_unused_result__)); +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int +16166: __attribute__ ((__leaf__)) wctomb (char * __s, wchar_t __wchar) noexcept (true) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 +16166: && 16 > __builtin_object_size (__s, 2 > 1)) +16166: return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); +16166: return __wctomb_alias (__s, __wchar); +16166: } +16166: +16166: +16166: extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, +16166: const char *__restrict __src, +16166: size_t __len, size_t __dstlen) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +16166: extern size_t __mbstowcs_nulldst (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") +16166: +16166: +16166: +16166: __attribute__ ((__access__ (__read_only__, 2))); +16166: extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "mbstowcs") +16166: +16166: +16166: +16166: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +16166: 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") +16166: +16166: +16166: +16166: __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) +16166: ; +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) mbstowcs (wchar_t * __restrict __dst, const char *__restrict __src, size_t __len) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: if (__builtin_constant_p (__dst == __null) && __dst == __null) +16166: return __mbstowcs_nulldst (__dst, __src, __len); +16166: else +16166: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) +16166: ; +16166: } +16166: +16166: extern size_t __wcstombs_chk (char *__restrict __dst, +16166: const wchar_t *__restrict __src, +16166: size_t __len, size_t __dstlen) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +16166: extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) __asm__ ("" "wcstombs") +16166: +16166: +16166: +16166: __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); +16166: 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") +16166: +16166: +16166: +16166: __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) wcstombs (char * __restrict __dst, const wchar_t *__restrict __src, size_t __len) noexcept (true) +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 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_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)))) +16166: +16166: ; +16166: } +16166: # 1160 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +16166: # 1163 "/usr/include/stdlib.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: } +16166: # 80 "/usr/include/c++/14/cstdlib" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/std_abs.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/std_abs.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/std_abs.h" 3 +16166: # 46 "/usr/include/c++/14/bits/std_abs.h" 3 +16166: extern "C++" +16166: { +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: using ::abs; +16166: +16166: +16166: inline long +16166: abs(long __i) { return __builtin_labs(__i); } +16166: +16166: +16166: +16166: inline long long +16166: abs(long long __x) { return __builtin_llabs (__x); } +16166: # 70 "/usr/include/c++/14/bits/std_abs.h" 3 +16166: inline constexpr double +16166: abs(double __x) +16166: { return __builtin_fabs(__x); } +16166: +16166: inline constexpr float +16166: abs(float __x) +16166: { return __builtin_fabsf(__x); } +16166: +16166: inline constexpr long double +16166: abs(long double __x) +16166: { return __builtin_fabsl(__x); } +16166: # 150 "/usr/include/c++/14/bits/std_abs.h" 3 +16166: +16166: } +16166: } +16166: # 82 "/usr/include/c++/14/cstdlib" 2 3 +16166: # 125 "/usr/include/c++/14/cstdlib" 3 +16166: extern "C++" +16166: { +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: using ::div_t; +16166: using ::ldiv_t; +16166: +16166: using ::abort; +16166: +16166: using ::aligned_alloc; +16166: +16166: using ::atexit; +16166: +16166: +16166: using ::at_quick_exit; +16166: +16166: +16166: using ::atof; +16166: using ::atoi; +16166: using ::atol; +16166: using ::bsearch; +16166: using ::calloc; +16166: using ::div; +16166: using ::exit; +16166: using ::free; +16166: using ::getenv; +16166: using ::labs; +16166: using ::ldiv; +16166: using ::malloc; +16166: +16166: using ::mblen; +16166: using ::mbstowcs; +16166: using ::mbtowc; +16166: +16166: using ::qsort; +16166: +16166: +16166: using ::quick_exit; +16166: +16166: +16166: using ::rand; +16166: using ::realloc; +16166: using ::srand; +16166: using ::strtod; +16166: using ::strtol; +16166: using ::strtoul; +16166: using ::system; +16166: +16166: using ::wcstombs; +16166: using ::wctomb; +16166: +16166: +16166: +16166: inline ldiv_t +16166: div(long __i, long __j) noexcept { return ldiv(__i, __j); } +16166: +16166: +16166: +16166: +16166: } +16166: # 199 "/usr/include/c++/14/cstdlib" 3 +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: using ::lldiv_t; +16166: +16166: +16166: +16166: +16166: +16166: using ::_Exit; +16166: +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: using ::llabs; +16166: +16166: inline lldiv_t +16166: div(long long __n, long long __d) +16166: { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } +16166: +16166: using ::lldiv; +16166: #pragma GCC diagnostic pop +16166: # 234 "/usr/include/c++/14/cstdlib" 3 +16166: using ::atoll; +16166: using ::strtoll; +16166: using ::strtoull; +16166: +16166: using ::strtof; +16166: using ::strtold; +16166: +16166: +16166: } +16166: +16166: namespace std +16166: { +16166: +16166: using ::__gnu_cxx::lldiv_t; +16166: +16166: using ::__gnu_cxx::_Exit; +16166: +16166: using ::__gnu_cxx::llabs; +16166: using ::__gnu_cxx::div; +16166: using ::__gnu_cxx::lldiv; +16166: +16166: using ::__gnu_cxx::atoll; +16166: using ::__gnu_cxx::strtof; +16166: using ::__gnu_cxx::strtoll; +16166: using ::__gnu_cxx::strtoull; +16166: using ::__gnu_cxx::strtold; +16166: } +16166: # 278 "/usr/include/c++/14/cstdlib" 3 +16166: } +16166: # 44 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +16166: # 1 "/usr/include/c++/14/cwchar" 1 3 +16166: # 39 "/usr/include/c++/14/cwchar" 3 +16166: +16166: # 40 "/usr/include/c++/14/cwchar" 3 +16166: # 45 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +16166: # 1 "/usr/include/c++/14/cstdio" 1 3 +16166: # 39 "/usr/include/c++/14/cstdio" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdio" 3 +16166: +16166: +16166: # 1 "/usr/include/stdio.h" 1 3 4 +16166: # 28 "/usr/include/stdio.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +16166: # 29 "/usr/include/stdio.h" 2 3 4 +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 35 "/usr/include/stdio.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 1 3 4 +16166: # 38 "/usr/include/stdio.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 1 3 4 +16166: # 10 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos_t.h" 3 4 +16166: typedef struct _G_fpos_t +16166: { +16166: __off_t __pos; +16166: __mbstate_t __state; +16166: } __fpos_t; +16166: # 41 "/usr/include/stdio.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 1 3 4 +16166: # 10 "/usr/include/arm-linux-gnueabihf/bits/types/__fpos64_t.h" 3 4 +16166: typedef struct _G_fpos64_t +16166: { +16166: __off64_t __pos; +16166: __mbstate_t __state; +16166: } __fpos64_t; +16166: # 42 "/usr/include/stdio.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 1 3 4 +16166: # 35 "/usr/include/arm-linux-gnueabihf/bits/types/struct_FILE.h" 3 4 +16166: struct _IO_FILE; +16166: struct _IO_marker; +16166: struct _IO_codecvt; +16166: struct _IO_wide_data; +16166: +16166: +16166: +16166: +16166: typedef void _IO_lock_t; +16166: +16166: +16166: +16166: +16166: +16166: struct _IO_FILE +16166: { +16166: int _flags; +16166: +16166: +16166: char *_IO_read_ptr; +16166: char *_IO_read_end; +16166: char *_IO_read_base; +16166: char *_IO_write_base; +16166: char *_IO_write_ptr; +16166: char *_IO_write_end; +16166: char *_IO_buf_base; +16166: char *_IO_buf_end; +16166: +16166: +16166: char *_IO_save_base; +16166: char *_IO_backup_base; +16166: char *_IO_save_end; +16166: +16166: struct _IO_marker *_markers; +16166: +16166: struct _IO_FILE *_chain; +16166: +16166: int _fileno; +16166: int _flags2; +16166: __off_t _old_offset; +16166: +16166: +16166: unsigned short _cur_column; +16166: signed char _vtable_offset; +16166: char _shortbuf[1]; +16166: +16166: _IO_lock_t *_lock; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __off64_t _offset; +16166: +16166: struct _IO_codecvt *_codecvt; +16166: struct _IO_wide_data *_wide_data; +16166: struct _IO_FILE *_freeres_list; +16166: void *_freeres_buf; +16166: struct _IO_FILE **_prevchain; +16166: int _mode; +16166: +16166: char _unused2[15 * sizeof (int) - 5 * sizeof (void *)]; +16166: }; +16166: # 45 "/usr/include/stdio.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/types/cookie_io_functions_t.h" 3 4 +16166: typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, +16166: size_t __nbytes); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, +16166: size_t __nbytes); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); +16166: +16166: +16166: typedef int cookie_close_function_t (void *__cookie); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef struct _IO_cookie_io_functions_t +16166: { +16166: cookie_read_function_t *read; +16166: cookie_write_function_t *write; +16166: cookie_seek_function_t *seek; +16166: cookie_close_function_t *close; +16166: } cookie_io_functions_t; +16166: # 48 "/usr/include/stdio.h" 2 3 4 +16166: # 87 "/usr/include/stdio.h" 3 4 +16166: typedef __fpos64_t fpos_t; +16166: +16166: +16166: typedef __fpos64_t fpos64_t; +16166: # 129 "/usr/include/stdio.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio_lim.h" 1 3 4 +16166: # 130 "/usr/include/stdio.h" 2 3 4 +16166: # 149 "/usr/include/stdio.h" 3 4 +16166: extern FILE *stdin; +16166: extern FILE *stdout; +16166: extern FILE *stderr; +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int remove (const char *__filename) noexcept (true); +16166: +16166: extern int rename (const char *__old, const char *__new) noexcept (true); +16166: +16166: +16166: +16166: extern int renameat (int __oldfd, const char *__old, int __newfd, +16166: const char *__new) noexcept (true); +16166: # 176 "/usr/include/stdio.h" 3 4 +16166: extern int renameat2 (int __oldfd, const char *__old, int __newfd, +16166: const char *__new, unsigned int __flags) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: # 198 "/usr/include/stdio.h" 3 4 +16166: extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern FILE *tmpfile64 (void) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern char *tmpnam (char[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern char *tmpnam_r (char __s[20]) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: # 228 "/usr/include/stdio.h" 3 4 +16166: extern char *tempnam (const char *__dir, const char *__pfx) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fflush (FILE *__stream); +16166: # 245 "/usr/include/stdio.h" 3 4 +16166: extern int fflush_unlocked (FILE *__stream); +16166: # 255 "/usr/include/stdio.h" 3 4 +16166: extern int fcloseall (void); +16166: # 276 "/usr/include/stdio.h" 3 4 +16166: extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __asm__ ("" "fopen64") +16166: +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern FILE *fopen64 (const char *__restrict __filename, +16166: const char *__restrict __modes) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: extern FILE *freopen64 (const char *__restrict __filename, +16166: const char *__restrict __modes, +16166: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); +16166: +16166: +16166: +16166: +16166: extern FILE *fdopen (int __fd, const char *__modes) noexcept (true) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern FILE *fopencookie (void *__restrict __magic_cookie, +16166: const char *__restrict __modes, +16166: cookie_io_functions_t __io_funcs) noexcept (true) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) noexcept (true) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) noexcept (true) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); +16166: +16166: +16166: +16166: +16166: +16166: extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) noexcept (true) +16166: __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, +16166: int __modes, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, +16166: size_t __size) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern void setlinebuf (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fprintf (FILE *__restrict __stream, +16166: const char *__restrict __format, ...) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern int printf (const char *__restrict __format, ...); +16166: +16166: extern int sprintf (char *__restrict __s, +16166: const char *__restrict __format, ...) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, +16166: __gnuc_va_list __arg) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); +16166: +16166: extern int vsprintf (char *__restrict __s, const char *__restrict __format, +16166: __gnuc_va_list __arg) noexcept (true); +16166: +16166: +16166: +16166: extern int snprintf (char *__restrict __s, size_t __maxlen, +16166: const char *__restrict __format, ...) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); +16166: +16166: extern int vsnprintf (char *__restrict __s, size_t __maxlen, +16166: const char *__restrict __format, __gnuc_va_list __arg) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); +16166: +16166: +16166: +16166: +16166: +16166: extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, +16166: __gnuc_va_list __arg) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); +16166: extern int __asprintf (char **__restrict __ptr, +16166: const char *__restrict __fmt, ...) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); +16166: extern int asprintf (char **__restrict __ptr, +16166: const char *__restrict __fmt, ...) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int vdprintf (int __fd, const char *__restrict __fmt, +16166: __gnuc_va_list __arg) +16166: __attribute__ ((__format__ (__printf__, 2, 0))); +16166: extern int dprintf (int __fd, const char *__restrict __fmt, ...) +16166: __attribute__ ((__format__ (__printf__, 2, 3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fscanf (FILE *__restrict __stream, +16166: const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); +16166: +16166: extern int sscanf (const char *__restrict __s, +16166: const char *__restrict __format, ...) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +16166: # 438 "/usr/include/stdio.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc23_fscanf") +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc23_scanf") +16166: __attribute__ ((__warn_unused_result__)); +16166: extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) noexcept (true) __asm__ ("" "__isoc23_sscanf") +16166: +16166: ; +16166: # 490 "/usr/include/stdio.h" 3 4 +16166: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, +16166: __gnuc_va_list __arg) +16166: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) +16166: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: extern int vsscanf (const char *__restrict __s, +16166: const char *__restrict __format, __gnuc_va_list __arg) +16166: noexcept (true) __attribute__ ((__format__ (__scanf__, 2, 0))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfscanf") +16166: +16166: +16166: +16166: __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vscanf") +16166: +16166: __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); +16166: extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) noexcept (true) __asm__ ("" "__isoc23_vsscanf") +16166: +16166: +16166: +16166: __attribute__ ((__format__ (__scanf__, 2, 0))); +16166: # 575 "/usr/include/stdio.h" 3 4 +16166: extern int fgetc (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: extern int getc (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern int getchar (void); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int getc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: extern int getchar_unlocked (void); +16166: # 600 "/usr/include/stdio.h" 3 4 +16166: extern int fgetc_unlocked (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: # 611 "/usr/include/stdio.h" 3 4 +16166: extern int fputc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +16166: extern int putc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: extern int putchar (int __c); +16166: # 627 "/usr/include/stdio.h" 3 4 +16166: extern int fputc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int putc_unlocked (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +16166: extern int putchar_unlocked (int __c); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int getw (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int putw (int __w, FILE *__stream) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) __attribute__ ((__nonnull__ (3))); +16166: # 677 "/usr/include/stdio.h" 3 4 +16166: extern char *fgets_unlocked (char *__restrict __s, int __n, +16166: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))) __attribute__ ((__nonnull__ (3))); +16166: # 689 "/usr/include/stdio.h" 3 4 +16166: extern __ssize_t __getdelim (char **__restrict __lineptr, +16166: size_t *__restrict __n, int __delimiter, +16166: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); +16166: extern __ssize_t getdelim (char **__restrict __lineptr, +16166: size_t *__restrict __n, int __delimiter, +16166: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))); +16166: +16166: +16166: extern __ssize_t getline (char **__restrict __lineptr, +16166: size_t *__restrict __n, +16166: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fputs (const char *__restrict __s, FILE *__restrict __stream) +16166: __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: extern int puts (const char *__s); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int ungetc (int __c, FILE *__stream) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern size_t fread (void *__restrict __ptr, size_t __size, +16166: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__nonnull__ (4))); +16166: +16166: +16166: +16166: +16166: extern size_t fwrite (const void *__restrict __ptr, size_t __size, +16166: size_t __n, FILE *__restrict __s) __attribute__ ((__nonnull__ (4))); +16166: # 745 "/usr/include/stdio.h" 3 4 +16166: extern int fputs_unlocked (const char *__restrict __s, +16166: FILE *__restrict __stream) __attribute__ ((__nonnull__ (2))); +16166: # 756 "/usr/include/stdio.h" 3 4 +16166: extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, +16166: size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__nonnull__ (4))); +16166: extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, +16166: size_t __n, FILE *__restrict __stream) +16166: __attribute__ ((__nonnull__ (4))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fseek (FILE *__stream, long int __off, int __whence) +16166: __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern void rewind (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: # 802 "/usr/include/stdio.h" 3 4 +16166: extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64") +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64") +16166: __attribute__ ((__nonnull__ (1))); +16166: # 828 "/usr/include/stdio.h" 3 4 +16166: extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64") +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: extern int fsetpos (FILE *__stream, const fpos_t *__pos) __asm__ ("" "fsetpos64") +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) +16166: __attribute__ ((__nonnull__ (1))); +16166: extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) +16166: __attribute__ ((__nonnull__ (1))); +16166: extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern void clearerr (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: extern int feof (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: extern int ferror (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern void clearerr_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: extern int feof_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: extern int ferror_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern void perror (const char *__s) __attribute__ ((__cold__)); +16166: +16166: +16166: +16166: +16166: extern int fileno (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern int fileno_unlocked (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: # 887 "/usr/include/stdio.h" 3 4 +16166: extern int pclose (FILE *__stream) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern FILE *popen (const char *__command, const char *__modes) +16166: __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *ctermid (char *__s) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1))); +16166: +16166: +16166: +16166: +16166: +16166: extern char *cuserid (char *__s) +16166: __attribute__ ((__access__ (__write_only__, 1))); +16166: +16166: +16166: +16166: +16166: struct obstack; +16166: +16166: +16166: extern int obstack_printf (struct obstack *__restrict __obstack, +16166: const char *__restrict __format, ...) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 3))); +16166: extern int obstack_vprintf (struct obstack *__restrict __obstack, +16166: const char *__restrict __format, +16166: __gnuc_va_list __args) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 2, 0))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern void flockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int ftrylockfile (FILE *__stream) noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern void funlockfile (FILE *__stream) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: # 949 "/usr/include/stdio.h" 3 4 +16166: extern int __uflow (FILE *); +16166: extern int __overflow (FILE *, int); +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 1 3 4 +16166: # 26 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 3 4 +16166: extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, +16166: const char *__restrict __format, ...) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1, 3))); +16166: extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, +16166: const char *__restrict __format, +16166: __gnuc_va_list __ap) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1, 3))); +16166: +16166: +16166: +16166: extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, +16166: size_t __slen, const char *__restrict __format, +16166: ...) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, +16166: size_t __slen, const char *__restrict __format, +16166: __gnuc_va_list __ap) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: extern int __fprintf_chk (FILE *__restrict __stream, int __flag, +16166: const char *__restrict __format, ...) +16166: __attribute__ ((__nonnull__ (1))); +16166: extern int __printf_chk (int __flag, const char *__restrict __format, ...); +16166: extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, +16166: const char *__restrict __format, +16166: __gnuc_va_list __ap) __attribute__ ((__nonnull__ (1))); +16166: extern int __vprintf_chk (int __flag, const char *__restrict __format, +16166: __gnuc_va_list __ap); +16166: +16166: +16166: extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, +16166: ...) __attribute__ ((__format__ (__printf__, 3, 4))); +16166: extern int __vdprintf_chk (int __fd, int __flag, +16166: const char *__restrict __fmt, __gnuc_va_list __arg) +16166: __attribute__ ((__format__ (__printf__, 3, 0))); +16166: +16166: +16166: +16166: +16166: extern int __asprintf_chk (char **__restrict __ptr, int __flag, +16166: const char *__restrict __fmt, ...) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); +16166: extern int __vasprintf_chk (char **__restrict __ptr, int __flag, +16166: const char *__restrict __fmt, __gnuc_va_list __arg) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); +16166: extern int __obstack_printf_chk (struct obstack *__restrict __obstack, +16166: int __flag, const char *__restrict __format, +16166: ...) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 4))); +16166: extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, +16166: int __flag, +16166: const char *__restrict __format, +16166: __gnuc_va_list __args) +16166: noexcept (true) __attribute__ ((__format__ (__printf__, 3, 0))); +16166: # 96 "/usr/include/arm-linux-gnueabihf/bits/stdio2-decl.h" 3 4 +16166: extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) +16166: ; +16166: +16166: extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, +16166: FILE *__restrict __stream) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); +16166: +16166: extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)); +16166: extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) +16166: ; +16166: +16166: extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, +16166: size_t __size, size_t __n, +16166: FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); +16166: +16166: +16166: extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) +16166: ; +16166: +16166: +16166: extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, +16166: int __n, FILE *__restrict __stream) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__nonnull__ (4))); +16166: +16166: +16166: +16166: +16166: extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)); +16166: 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") +16166: +16166: +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) +16166: ; +16166: +16166: extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, +16166: size_t __size, size_t __n, +16166: FILE *__restrict __stream) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (5))); +16166: # 955 "/usr/include/stdio.h" 2 3 4 +16166: # 966 "/usr/include/stdio.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 1 3 4 +16166: # 46 "/usr/include/arm-linux-gnueabihf/bits/stdio.h" 3 4 +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: getchar (void) +16166: { +16166: return getc (stdin); +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: fgetc_unlocked (FILE *__fp) +16166: { +16166: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: getc_unlocked (FILE *__fp) +16166: { +16166: return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: getchar_unlocked (void) +16166: { +16166: return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: putchar (int __c) +16166: { +16166: return putc (__c, stdout); +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: fputc_unlocked (int __c, FILE *__stream) +16166: { +16166: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: putc_unlocked (int __c, FILE *__stream) +16166: { +16166: return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: putchar_unlocked (int __c) +16166: { +16166: return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) __ssize_t +16166: getline (char **__lineptr, size_t *__n, FILE *__stream) +16166: { +16166: return __getdelim (__lineptr, __n, '\n', __stream); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: __attribute__ ((__leaf__)) feof_unlocked (FILE *__stream) noexcept (true) +16166: { +16166: return (((__stream)->_flags & 0x0010) != 0); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__gnu_inline__)) int +16166: __attribute__ ((__leaf__)) ferror_unlocked (FILE *__stream) noexcept (true) +16166: { +16166: return (((__stream)->_flags & 0x0020) != 0); +16166: } +16166: # 967 "/usr/include/stdio.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) noexcept (true) +16166: { +16166: return __builtin___sprintf_chk (__s, 2 - 1, +16166: __builtin_object_size (__s, 2 > 1), __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: # 54 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) vsprintf (char * __restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +16166: +16166: { +16166: return __builtin___vsprintf_chk (__s, 2 - 1, +16166: __builtin_object_size (__s, 2 > 1), __fmt, __ap); +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) noexcept (true) +16166: +16166: { +16166: return __builtin___snprintf_chk (__s, __n, 2 - 1, +16166: __builtin_object_size (__s, 2 > 1), __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: # 92 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) vsnprintf (char * __restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return __builtin___vsnprintf_chk (__s, __n, 2 - 1, +16166: __builtin_object_size (__s, 2 > 1), __fmt, __ap); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int +16166: fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) +16166: { +16166: return __fprintf_chk (__stream, 2 - 1, __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: printf (const char *__restrict __fmt, ...) +16166: { +16166: return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); +16166: } +16166: # 151 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: vprintf (const char * __restrict __fmt, +16166: __gnuc_va_list __ap) +16166: { +16166: +16166: return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); +16166: +16166: +16166: +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) int +16166: vfprintf (FILE *__restrict __stream, +16166: const char *__restrict __fmt, __gnuc_va_list __ap) +16166: { +16166: return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: dprintf (int __fd, const char *__restrict __fmt, ...) +16166: { +16166: return __dprintf_chk (__fd, 2 - 1, __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: # 194 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) +16166: { +16166: return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) +16166: { +16166: return __asprintf_chk (__ptr, 2 - 1, __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) noexcept (true) +16166: +16166: { +16166: return __asprintf_chk (__ptr, 2 - 1, __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) noexcept (true) +16166: +16166: { +16166: return __obstack_printf_chk (__obstack, 2 - 1, __fmt, +16166: __builtin_va_arg_pack ()); +16166: } +16166: # 271 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +16166: +16166: { +16166: return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) noexcept (true) +16166: +16166: { +16166: return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, +16166: __ap); +16166: } +16166: # 303 "/usr/include/arm-linux-gnueabihf/bits/stdio2.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) +16166: __attribute__ ((__nonnull__ (3))) char * +16166: fgets (char * __restrict __s, int __n, +16166: FILE *__restrict __stream) +16166: +16166: +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__s, 2 > 1); +16166: 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))))))) +16166: return __fgets_alias (__s, __n, __stream); +16166: +16166: 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))))) +16166: return __fgets_chk_warn (__s, __sz, __n, __stream); +16166: +16166: return __fgets_chk (__s, __sz, __n, __stream); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t +16166: fread (void * __restrict __ptr, +16166: size_t __size, size_t __n, FILE *__restrict __stream) +16166: +16166: +16166: +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__ptr, 0); +16166: 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)))))) +16166: return __fread_alias (__ptr, __size, __n, __stream); +16166: +16166: 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)))) +16166: return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); +16166: +16166: return __fread_chk (__ptr, __sz, __size, __n, __stream); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) +16166: __attribute__ ((__nonnull__ (3))) char * +16166: fgets_unlocked (char * __restrict __s, +16166: int __n, FILE *__restrict __stream) +16166: +16166: +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__s, 2 > 1); +16166: 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))))))) +16166: return __fgets_unlocked_alias (__s, __n, __stream); +16166: +16166: 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))))) +16166: return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); +16166: +16166: return __fgets_unlocked_chk (__s, __sz, __n, __stream); +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__nonnull__ (4))) size_t +16166: fread_unlocked (void * __restrict __ptr, +16166: size_t __size, size_t __n, FILE *__restrict __stream) +16166: +16166: +16166: +16166: +16166: { +16166: size_t __sz = __builtin_object_size (__ptr, 0); +16166: 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)))))) +16166: { +16166: +16166: if (__builtin_constant_p (__size) +16166: && __builtin_constant_p (__n) +16166: && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) +16166: && __size * __n <= 8) +16166: { +16166: size_t __cnt = __size * __n; +16166: char *__cptr = (char *) __ptr; +16166: if (__cnt == 0) +16166: return 0; +16166: +16166: for (; __cnt > 0; --__cnt) +16166: { +16166: int __c = getc_unlocked (__stream); +16166: if (__c == (-1)) +16166: break; +16166: *__cptr++ = __c; +16166: } +16166: return (__cptr - (char *) __ptr) / __size; +16166: } +16166: +16166: return __fread_unlocked_alias (__ptr, __size, __n, __stream); +16166: } +16166: +16166: 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)))) +16166: return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); +16166: +16166: return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); +16166: +16166: } +16166: # 971 "/usr/include/stdio.h" 2 3 4 +16166: +16166: +16166: } +16166: # 43 "/usr/include/c++/14/cstdio" 2 3 +16166: # 96 "/usr/include/c++/14/cstdio" 3 +16166: namespace std +16166: { +16166: using ::FILE; +16166: using ::fpos_t; +16166: +16166: using ::clearerr; +16166: using ::fclose; +16166: using ::feof; +16166: using ::ferror; +16166: using ::fflush; +16166: using ::fgetc; +16166: using ::fgetpos; +16166: using ::fgets; +16166: using ::fopen; +16166: using ::fprintf; +16166: using ::fputc; +16166: using ::fputs; +16166: using ::fread; +16166: using ::freopen; +16166: using ::fscanf; +16166: using ::fseek; +16166: using ::fsetpos; +16166: using ::ftell; +16166: using ::fwrite; +16166: using ::getc; +16166: using ::getchar; +16166: +16166: +16166: +16166: +16166: using ::perror; +16166: using ::printf; +16166: using ::putc; +16166: using ::putchar; +16166: using ::puts; +16166: using ::remove; +16166: using ::rename; +16166: using ::rewind; +16166: using ::scanf; +16166: using ::setbuf; +16166: using ::setvbuf; +16166: using ::sprintf; +16166: using ::sscanf; +16166: using ::tmpfile; +16166: +16166: using ::tmpnam; +16166: +16166: using ::ungetc; +16166: using ::vfprintf; +16166: using ::vprintf; +16166: using ::vsprintf; +16166: } +16166: # 157 "/usr/include/c++/14/cstdio" 3 +16166: namespace __gnu_cxx +16166: { +16166: # 175 "/usr/include/c++/14/cstdio" 3 +16166: using ::snprintf; +16166: using ::vfscanf; +16166: using ::vscanf; +16166: using ::vsnprintf; +16166: using ::vsscanf; +16166: +16166: } +16166: +16166: namespace std +16166: { +16166: using ::__gnu_cxx::snprintf; +16166: using ::__gnu_cxx::vfscanf; +16166: using ::__gnu_cxx::vscanf; +16166: using ::__gnu_cxx::vsnprintf; +16166: using ::__gnu_cxx::vsscanf; +16166: } +16166: # 46 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +16166: # 1 "/usr/include/c++/14/cerrno" 1 3 +16166: # 39 "/usr/include/c++/14/cerrno" 3 +16166: +16166: # 40 "/usr/include/c++/14/cerrno" 3 +16166: +16166: +16166: # 1 "/usr/include/errno.h" 1 3 4 +16166: # 28 "/usr/include/errno.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 1 3 4 +16166: # 26 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 3 4 +16166: # 1 "/usr/include/linux/errno.h" 1 3 4 +16166: # 1 "/usr/lib/linux/uapi/arm/asm/errno.h" 1 3 4 +16166: # 1 "/usr/include/asm-generic/errno.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 +16166: # 6 "/usr/include/asm-generic/errno.h" 2 3 4 +16166: # 2 "/usr/lib/linux/uapi/arm/asm/errno.h" 2 3 4 +16166: # 2 "/usr/include/linux/errno.h" 2 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/errno.h" 2 3 4 +16166: # 29 "/usr/include/errno.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: extern "C" { +16166: +16166: +16166: extern int *__errno_location (void) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *program_invocation_name; +16166: extern char *program_invocation_short_name; +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 1 3 4 +16166: # 22 "/usr/include/arm-linux-gnueabihf/bits/types/error_t.h" 3 4 +16166: typedef int error_t; +16166: # 49 "/usr/include/errno.h" 2 3 4 +16166: +16166: +16166: +16166: } +16166: # 43 "/usr/include/c++/14/cerrno" 2 3 +16166: # 47 "/usr/include/c++/14/ext/string_conversions.h" 2 3 +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: _Ret +16166: __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...), +16166: const char* __name, const _CharT* __str, std::size_t* __idx, +16166: _Base... __base) +16166: { +16166: _Ret __ret; +16166: +16166: _CharT* __endptr; +16166: +16166: struct _Save_errno { +16166: _Save_errno() : _M_errno((*__errno_location ())) { (*__errno_location ()) = 0; } +16166: ~_Save_errno() { if ((*__errno_location ()) == 0) (*__errno_location ()) = _M_errno; } +16166: int _M_errno; +16166: } const __save_errno; +16166: +16166: struct _Range_chk { +16166: static bool +16166: _S_chk(_TRet, std::false_type) { return false; } +16166: +16166: static bool +16166: _S_chk(_TRet __val, std::true_type) +16166: { +16166: return __val < _TRet(__numeric_traits::__min) +16166: || __val > _TRet(__numeric_traits::__max); +16166: } +16166: }; +16166: +16166: const _TRet __tmp = __convf(__str, &__endptr, __base...); +16166: +16166: if (__endptr == __str) +16166: std::__throw_invalid_argument(__name); +16166: else if ((*__errno_location ()) == 34 +16166: || _Range_chk::_S_chk(__tmp, std::is_same<_Ret, int>{})) +16166: std::__throw_out_of_range(__name); +16166: else +16166: __ret = __tmp; +16166: +16166: if (__idx) +16166: *__idx = __endptr - __str; +16166: +16166: return __ret; +16166: } +16166: +16166: +16166: template +16166: _String +16166: __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*, +16166: __builtin_va_list), std::size_t __n, +16166: const _CharT* __fmt, ...) +16166: { +16166: +16166: +16166: _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * __n)); +16166: +16166: __builtin_va_list __args; +16166: __builtin_va_start(__args, __fmt); +16166: +16166: const int __len = __convf(__s, __n, __fmt, __args); +16166: +16166: __builtin_va_end(__args); +16166: +16166: return _String(__s, __s + __len); +16166: } +16166: +16166: +16166: } +16166: # 4155 "/usr/include/c++/14/bits/basic_string.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/charconv.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/charconv.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/charconv.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace __detail +16166: { +16166: +16166: +16166: template +16166: constexpr bool __integer_to_chars_is_unsigned +16166: = ! __gnu_cxx::__int_traits<_Tp>::__is_signed; +16166: +16166: +16166: +16166: template +16166: constexpr unsigned +16166: __to_chars_len(_Tp __value, int __base = 10) noexcept +16166: { +16166: +16166: static_assert(__integer_to_chars_is_unsigned<_Tp>, "implementation bug"); +16166: +16166: +16166: unsigned __n = 1; +16166: const unsigned __b2 = __base * __base; +16166: const unsigned __b3 = __b2 * __base; +16166: const unsigned long __b4 = __b3 * __base; +16166: for (;;) +16166: { +16166: if (__value < (unsigned)__base) return __n; +16166: if (__value < __b2) return __n + 1; +16166: if (__value < __b3) return __n + 2; +16166: if (__value < __b4) return __n + 3; +16166: __value /= __b4; +16166: __n += 4; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: __to_chars_10_impl(char* __first, unsigned __len, _Tp __val) noexcept +16166: { +16166: +16166: static_assert(__integer_to_chars_is_unsigned<_Tp>, "implementation bug"); +16166: +16166: +16166: constexpr char __digits[201] = +16166: "0001020304050607080910111213141516171819" +16166: "2021222324252627282930313233343536373839" +16166: "4041424344454647484950515253545556575859" +16166: "6061626364656667686970717273747576777879" +16166: "8081828384858687888990919293949596979899"; +16166: unsigned __pos = __len - 1; +16166: while (__val >= 100) +16166: { +16166: auto const __num = (__val % 100) * 2; +16166: __val /= 100; +16166: __first[__pos] = __digits[__num + 1]; +16166: __first[__pos - 1] = __digits[__num]; +16166: __pos -= 2; +16166: } +16166: if (__val >= 10) +16166: { +16166: auto const __num = __val * 2; +16166: __first[1] = __digits[__num + 1]; +16166: __first[0] = __digits[__num]; +16166: } +16166: else +16166: __first[0] = '0' + __val; +16166: } +16166: +16166: } +16166: +16166: } +16166: # 4156 "/usr/include/c++/14/bits/basic_string.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace __cxx11 { +16166: +16166: +16166: inline int +16166: stoi(const string& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), +16166: __idx, __base); } +16166: +16166: inline long +16166: stol(const string& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(), +16166: __idx, __base); } +16166: +16166: inline unsigned long +16166: stoul(const string& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(), +16166: __idx, __base); } +16166: +16166: +16166: inline long long +16166: stoll(const string& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(), +16166: __idx, __base); } +16166: +16166: inline unsigned long long +16166: stoull(const string& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(), +16166: __idx, __base); } +16166: # 4198 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: inline double +16166: stod(const string& __str, size_t* __idx = 0) +16166: { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); } +16166: +16166: +16166: +16166: inline float +16166: stof(const string& __str, size_t* __idx = 0) +16166: { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); } +16166: # 4226 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: inline long double +16166: stold(const string& __str, size_t* __idx = 0) +16166: { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } +16166: # 4238 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(int __val) +16166: +16166: noexcept +16166: +16166: { +16166: const bool __neg = __val < 0; +16166: const unsigned __uval = __neg ? (unsigned)~__val + 1u : __val; +16166: const auto __len = __detail::__to_chars_len(__uval); +16166: string __str; +16166: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { +16166: __p[0] = '-'; +16166: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); +16166: return __n; +16166: }); +16166: return __str; +16166: } +16166: +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(unsigned __val) +16166: +16166: noexcept +16166: +16166: { +16166: const auto __len = __detail::__to_chars_len(__val); +16166: string __str; +16166: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { +16166: __detail::__to_chars_10_impl(__p, __n, __val); +16166: return __n; +16166: }); +16166: return __str; +16166: } +16166: +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(long __val) +16166: +16166: noexcept +16166: +16166: { +16166: const bool __neg = __val < 0; +16166: const unsigned long __uval = __neg ? (unsigned long)~__val + 1ul : __val; +16166: const auto __len = __detail::__to_chars_len(__uval); +16166: string __str; +16166: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { +16166: __p[0] = '-'; +16166: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); +16166: return __n; +16166: }); +16166: return __str; +16166: } +16166: +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(unsigned long __val) +16166: +16166: noexcept +16166: +16166: { +16166: const auto __len = __detail::__to_chars_len(__val); +16166: string __str; +16166: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { +16166: __detail::__to_chars_10_impl(__p, __n, __val); +16166: return __n; +16166: }); +16166: return __str; +16166: } +16166: +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(long long __val) +16166: { +16166: const bool __neg = __val < 0; +16166: const unsigned long long __uval +16166: = __neg ? (unsigned long long)~__val + 1ull : __val; +16166: const auto __len = __detail::__to_chars_len(__uval); +16166: string __str; +16166: __str.__resize_and_overwrite(__neg + __len, [=](char* __p, size_t __n) { +16166: __p[0] = '-'; +16166: __detail::__to_chars_10_impl(__p + (int)__neg, __len, __uval); +16166: return __n; +16166: }); +16166: return __str; +16166: } +16166: +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(unsigned long long __val) +16166: { +16166: const auto __len = __detail::__to_chars_len(__val); +16166: string __str; +16166: __str.__resize_and_overwrite(__len, [__val](char* __p, size_t __n) { +16166: __detail::__to_chars_10_impl(__p, __n, __val); +16166: return __n; +16166: }); +16166: return __str; +16166: } +16166: # 4399 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(float __val) +16166: { +16166: const int __n = +16166: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; +16166: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, +16166: "%f", __val); +16166: } +16166: +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(double __val) +16166: { +16166: const int __n = +16166: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; +16166: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, +16166: "%f", __val); +16166: } +16166: +16166: [[__nodiscard__]] +16166: inline string +16166: to_string(long double __val) +16166: { +16166: const int __n = +16166: __gnu_cxx::__numeric_traits::__max_exponent10 + 20; +16166: return __gnu_cxx::__to_xstring(&std::vsnprintf, __n, +16166: "%Lf", __val); +16166: } +16166: +16166: +16166: +16166: inline int +16166: stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), +16166: __idx, __base); } +16166: +16166: inline long +16166: stol(const wstring& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(), +16166: __idx, __base); } +16166: +16166: inline unsigned long +16166: stoul(const wstring& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(), +16166: __idx, __base); } +16166: +16166: inline long long +16166: stoll(const wstring& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(), +16166: __idx, __base); } +16166: +16166: inline unsigned long long +16166: stoull(const wstring& __str, size_t* __idx = 0, int __base = 10) +16166: { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(), +16166: __idx, __base); } +16166: +16166: +16166: inline float +16166: stof(const wstring& __str, size_t* __idx = 0) +16166: { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); } +16166: +16166: inline double +16166: stod(const wstring& __str, size_t* __idx = 0) +16166: { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); } +16166: +16166: inline long double +16166: stold(const wstring& __str, size_t* __idx = 0) +16166: { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } +16166: +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: +16166: inline void +16166: __to_wstring_numeric(const char* __s, int __len, wchar_t* __wout) +16166: { +16166: +16166: +16166: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' +16166: && wchar_t('.') == L'.' && wchar_t('e') == L'e') +16166: { +16166: for (int __i = 0; __i < __len; ++__i) +16166: __wout[__i] = (wchar_t) __s[__i]; +16166: } +16166: else +16166: { +16166: wchar_t __wc[256]; +16166: for (int __i = '0'; __i <= '9'; ++__i) +16166: __wc[__i] = L'0' + __i; +16166: __wc['.'] = L'.'; +16166: __wc['+'] = L'+'; +16166: __wc['-'] = L'-'; +16166: __wc['a'] = L'a'; +16166: __wc['b'] = L'b'; +16166: __wc['c'] = L'c'; +16166: __wc['d'] = L'd'; +16166: __wc['e'] = L'e'; +16166: __wc['f'] = L'f'; +16166: __wc['n'] = L'n'; +16166: __wc['p'] = L'p'; +16166: __wc['x'] = L'x'; +16166: __wc['A'] = L'A'; +16166: __wc['B'] = L'B'; +16166: __wc['C'] = L'C'; +16166: __wc['D'] = L'D'; +16166: __wc['E'] = L'E'; +16166: __wc['F'] = L'F'; +16166: __wc['N'] = L'N'; +16166: __wc['P'] = L'P'; +16166: __wc['X'] = L'X'; +16166: +16166: for (int __i = 0; __i < __len; ++__i) +16166: __wout[__i] = __wc[(int)__s[__i]]; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: inline wstring +16166: +16166: __to_wstring_numeric(string_view __s) +16166: +16166: +16166: +16166: { +16166: if constexpr (wchar_t('0') == L'0' && wchar_t('-') == L'-' +16166: && wchar_t('.') == L'.' && wchar_t('e') == L'e') +16166: return wstring(__s.data(), __s.data() + __s.size()); +16166: else +16166: { +16166: wstring __ws; +16166: auto __f = __s.data(); +16166: __ws.__resize_and_overwrite(__s.size(), +16166: [__f] (wchar_t* __to, int __n) { +16166: std::__to_wstring_numeric(__f, __n, __to); +16166: return __n; +16166: }); +16166: return __ws; +16166: } +16166: } +16166: #pragma GCC diagnostic pop +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(int __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(unsigned __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(long __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(unsigned long __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(long long __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(unsigned long long __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(float __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(double __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: [[__nodiscard__]] +16166: inline wstring +16166: to_wstring(long double __val) +16166: { return std::__to_wstring_numeric(std::to_string(__val)); } +16166: +16166: +16166: +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: template, _Alloc>> +16166: struct __str_hash_base +16166: : public __hash_base +16166: { +16166: [[__nodiscard__]] +16166: size_t +16166: operator()(const _StrT& __s) const noexcept +16166: { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(_CharT)); } +16166: }; +16166: +16166: +16166: +16166: template +16166: struct hash, _Alloc>> +16166: : public __str_hash_base +16166: { }; +16166: +16166: +16166: template +16166: struct hash, _Alloc>> +16166: : public __str_hash_base +16166: { }; +16166: +16166: template +16166: struct __is_fast_hash, +16166: _Alloc>>> +16166: : std::false_type +16166: { }; +16166: # 4649 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: template +16166: struct hash, _Alloc>> +16166: : public __str_hash_base +16166: { }; +16166: +16166: +16166: template +16166: struct hash, _Alloc>> +16166: : public __str_hash_base +16166: { }; +16166: +16166: +16166: +16166: template<> struct __is_fast_hash> : std::false_type { }; +16166: template<> struct __is_fast_hash> : std::false_type { }; +16166: template<> struct __is_fast_hash> : std::false_type { }; +16166: template<> struct __is_fast_hash> : std::false_type { }; +16166: # 4678 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: inline namespace literals +16166: { +16166: inline namespace string_literals +16166: { +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wliteral-suffix" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: inline basic_string +16166: operator""s(const char* __str, size_t __len) +16166: { return basic_string{__str, __len}; } +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: inline basic_string +16166: operator""s(const wchar_t* __str, size_t __len) +16166: { return basic_string{__str, __len}; } +16166: # 4708 "/usr/include/c++/14/bits/basic_string.h" 3 +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: inline basic_string +16166: operator""s(const char16_t* __str, size_t __len) +16166: { return basic_string{__str, __len}; } +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: inline basic_string +16166: operator""s(const char32_t* __str, size_t __len) +16166: { return basic_string{__str, __len}; } +16166: +16166: +16166: #pragma GCC diagnostic pop +16166: } +16166: } +16166: +16166: +16166: +16166: namespace __detail::__variant +16166: { +16166: template struct _Never_valueless_alt; +16166: +16166: +16166: +16166: template +16166: struct _Never_valueless_alt> +16166: : __and_< +16166: is_nothrow_move_constructible>, +16166: is_nothrow_move_assignable> +16166: >::type +16166: { }; +16166: } +16166: +16166: +16166: +16166: } +16166: # 55 "/usr/include/c++/14/string" 2 3 +16166: # 1 "/usr/include/c++/14/bits/basic_string.tcc" 1 3 +16166: # 42 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: +16166: # 43 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: const typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>::npos; +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: swap(basic_string& __s) noexcept +16166: { +16166: if (this == std::__addressof(__s)) +16166: return; +16166: +16166: _Alloc_traits::_S_on_swap(_M_get_allocator(), __s._M_get_allocator()); +16166: +16166: if (_M_is_local()) +16166: if (__s._M_is_local()) +16166: { +16166: if (length() && __s.length()) +16166: { +16166: _CharT __tmp_data[_S_local_capacity + 1]; +16166: traits_type::copy(__tmp_data, __s._M_local_buf, +16166: __s.length() + 1); +16166: traits_type::copy(__s._M_local_buf, _M_local_buf, +16166: length() + 1); +16166: traits_type::copy(_M_local_buf, __tmp_data, +16166: __s.length() + 1); +16166: } +16166: else if (__s.length()) +16166: { +16166: _M_init_local_buf(); +16166: traits_type::copy(_M_local_buf, __s._M_local_buf, +16166: __s.length() + 1); +16166: _M_length(__s.length()); +16166: __s._M_set_length(0); +16166: return; +16166: } +16166: else if (length()) +16166: { +16166: __s._M_init_local_buf(); +16166: traits_type::copy(__s._M_local_buf, _M_local_buf, +16166: length() + 1); +16166: __s._M_length(length()); +16166: _M_set_length(0); +16166: return; +16166: } +16166: } +16166: else +16166: { +16166: const size_type __tmp_capacity = __s._M_allocated_capacity; +16166: __s._M_init_local_buf(); +16166: traits_type::copy(__s._M_local_buf, _M_local_buf, +16166: length() + 1); +16166: _M_data(__s._M_data()); +16166: __s._M_data(__s._M_local_buf); +16166: _M_capacity(__tmp_capacity); +16166: } +16166: else +16166: { +16166: const size_type __tmp_capacity = _M_allocated_capacity; +16166: if (__s._M_is_local()) +16166: { +16166: _M_init_local_buf(); +16166: traits_type::copy(_M_local_buf, __s._M_local_buf, +16166: __s.length() + 1); +16166: __s._M_data(_M_data()); +16166: _M_data(_M_local_buf); +16166: } +16166: else +16166: { +16166: pointer __tmp_ptr = _M_data(); +16166: _M_data(__s._M_data()); +16166: __s._M_data(__tmp_ptr); +16166: _M_capacity(__s._M_allocated_capacity); +16166: } +16166: __s._M_capacity(__tmp_capacity); +16166: } +16166: +16166: const size_type __tmp_length = length(); +16166: _M_length(__s.length()); +16166: __s._M_length(__tmp_length); +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::pointer +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_create(size_type& __capacity, size_type __old_capacity) +16166: { +16166: +16166: +16166: if (__capacity > max_size()) +16166: std::__throw_length_error(("basic_string::_M_create")); +16166: +16166: +16166: +16166: +16166: if (__capacity > __old_capacity && __capacity < 2 * __old_capacity) +16166: { +16166: __capacity = 2 * __old_capacity; +16166: +16166: if (__capacity > max_size()) +16166: __capacity = max_size(); +16166: } +16166: +16166: +16166: +16166: return _S_allocate(_M_get_allocator(), __capacity + 1); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_construct(_InIterator __beg, _InIterator __end, +16166: std::input_iterator_tag) +16166: { +16166: size_type __len = 0; +16166: size_type __capacity = size_type(_S_local_capacity); +16166: +16166: _M_init_local_buf(); +16166: +16166: while (__beg != __end && __len < __capacity) +16166: { +16166: _M_local_buf[__len++] = *__beg; +16166: ++__beg; +16166: } +16166: +16166: struct _Guard +16166: { +16166: +16166: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } +16166: +16166: +16166: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } +16166: +16166: basic_string* _M_guarded; +16166: } __guard(this); +16166: +16166: while (__beg != __end) +16166: { +16166: if (__len == __capacity) +16166: { +16166: +16166: __capacity = __len + 1; +16166: pointer __another = _M_create(__capacity, __len); +16166: this->_S_copy(__another, _M_data(), __len); +16166: _M_dispose(); +16166: _M_data(__another); +16166: _M_capacity(__capacity); +16166: } +16166: traits_type::assign(_M_data()[__len++], *__beg); +16166: ++__beg; +16166: } +16166: +16166: __guard._M_guarded = 0; +16166: +16166: _M_set_length(__len); +16166: } +16166: +16166: template +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_construct(_InIterator __beg, _InIterator __end, +16166: std::forward_iterator_tag) +16166: { +16166: size_type __dnew = static_cast(std::distance(__beg, __end)); +16166: +16166: if (__dnew > size_type(_S_local_capacity)) +16166: { +16166: _M_data(_M_create(__dnew, size_type(0))); +16166: _M_capacity(__dnew); +16166: } +16166: else +16166: _M_init_local_buf(); +16166: +16166: +16166: struct _Guard +16166: { +16166: +16166: explicit _Guard(basic_string* __s) : _M_guarded(__s) { } +16166: +16166: +16166: ~_Guard() { if (_M_guarded) _M_guarded->_M_dispose(); } +16166: +16166: basic_string* _M_guarded; +16166: } __guard(this); +16166: +16166: this->_S_copy_chars(_M_data(), __beg, __end); +16166: +16166: __guard._M_guarded = 0; +16166: +16166: _M_set_length(__dnew); +16166: } +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_construct(size_type __n, _CharT __c) +16166: { +16166: if (__n > size_type(_S_local_capacity)) +16166: { +16166: _M_data(_M_create(__n, size_type(0))); +16166: _M_capacity(__n); +16166: } +16166: else +16166: _M_init_local_buf(); +16166: +16166: if (__n) +16166: this->_S_assign(_M_data(), __n, __c); +16166: +16166: _M_set_length(__n); +16166: } +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_assign(const basic_string& __str) +16166: { +16166: if (this != std::__addressof(__str)) +16166: { +16166: const size_type __rsize = __str.length(); +16166: const size_type __capacity = capacity(); +16166: +16166: if (__rsize > __capacity) +16166: { +16166: size_type __new_capacity = __rsize; +16166: pointer __tmp = _M_create(__new_capacity, __capacity); +16166: _M_dispose(); +16166: _M_data(__tmp); +16166: _M_capacity(__new_capacity); +16166: } +16166: +16166: if (__rsize) +16166: this->_S_copy(_M_data(), __str._M_data(), __rsize); +16166: +16166: _M_set_length(__rsize); +16166: } +16166: } +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: reserve(size_type __res) +16166: { +16166: const size_type __capacity = capacity(); +16166: +16166: +16166: +16166: +16166: if (__res <= __capacity) +16166: return; +16166: +16166: pointer __tmp = _M_create(__res, __capacity); +16166: this->_S_copy(__tmp, _M_data(), length() + 1); +16166: _M_dispose(); +16166: _M_data(__tmp); +16166: _M_capacity(__res); +16166: } +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_mutate(size_type __pos, size_type __len1, const _CharT* __s, +16166: size_type __len2) +16166: { +16166: const size_type __how_much = length() - __pos - __len1; +16166: +16166: size_type __new_capacity = length() + __len2 - __len1; +16166: pointer __r = _M_create(__new_capacity, capacity()); +16166: +16166: if (__pos) +16166: this->_S_copy(__r, _M_data(), __pos); +16166: if (__s && __len2) +16166: this->_S_copy(__r + __pos, __s, __len2); +16166: if (__how_much) +16166: this->_S_copy(__r + __pos + __len2, +16166: _M_data() + __pos + __len1, __how_much); +16166: +16166: _M_dispose(); +16166: _M_data(__r); +16166: _M_capacity(__new_capacity); +16166: } +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_erase(size_type __pos, size_type __n) +16166: { +16166: const size_type __how_much = length() - __pos - __n; +16166: +16166: if (__how_much && __n) +16166: this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); +16166: +16166: _M_set_length(length() - __n); +16166: } +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: reserve() +16166: { +16166: if (_M_is_local()) +16166: return; +16166: +16166: const size_type __length = length(); +16166: const size_type __capacity = _M_allocated_capacity; +16166: +16166: if (__length <= size_type(_S_local_capacity)) +16166: { +16166: _M_init_local_buf(); +16166: this->_S_copy(_M_local_buf, _M_data(), __length + 1); +16166: _M_destroy(__capacity); +16166: _M_data(_M_local_data()); +16166: } +16166: +16166: else if (__length < __capacity) +16166: try +16166: { +16166: pointer __tmp = _S_allocate(_M_get_allocator(), __length + 1); +16166: this->_S_copy(__tmp, _M_data(), __length + 1); +16166: _M_dispose(); +16166: _M_data(__tmp); +16166: _M_capacity(__length); +16166: } +16166: catch (const __cxxabiv1::__forced_unwind&) +16166: { throw; } +16166: catch (...) +16166: { } +16166: +16166: } +16166: +16166: template +16166: +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: resize(size_type __n, _CharT __c) +16166: { +16166: const size_type __size = this->size(); +16166: if (__size < __n) +16166: this->append(__n - __size, __c); +16166: else if (__n < __size) +16166: this->_M_set_length(__n); +16166: } +16166: +16166: template +16166: +16166: basic_string<_CharT, _Traits, _Alloc>& +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_append(const _CharT* __s, size_type __n) +16166: { +16166: const size_type __len = __n + this->size(); +16166: +16166: if (__len <= this->capacity()) +16166: { +16166: if (__n) +16166: this->_S_copy(this->_M_data() + this->size(), __s, __n); +16166: } +16166: else +16166: this->_M_mutate(this->size(), size_type(0), __s, __n); +16166: +16166: this->_M_set_length(__len); +16166: return *this; +16166: } +16166: +16166: template +16166: template +16166: +16166: basic_string<_CharT, _Traits, _Alloc>& +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_replace_dispatch(const_iterator __i1, const_iterator __i2, +16166: _InputIterator __k1, _InputIterator __k2, +16166: std::__false_type) +16166: { +16166: +16166: +16166: const basic_string __s(__k1, __k2, this->get_allocator()); +16166: const size_type __n1 = __i2 - __i1; +16166: return _M_replace(__i1 - begin(), __n1, __s._M_data(), +16166: __s.size()); +16166: } +16166: +16166: template +16166: +16166: basic_string<_CharT, _Traits, _Alloc>& +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2, +16166: _CharT __c) +16166: { +16166: _M_check_length(__n1, __n2, "basic_string::_M_replace_aux"); +16166: +16166: const size_type __old_size = this->size(); +16166: const size_type __new_size = __old_size + __n2 - __n1; +16166: +16166: if (__new_size <= this->capacity()) +16166: { +16166: pointer __p = this->_M_data() + __pos1; +16166: +16166: const size_type __how_much = __old_size - __pos1 - __n1; +16166: if (__how_much && __n1 != __n2) +16166: this->_S_move(__p + __n2, __p + __n1, __how_much); +16166: } +16166: else +16166: this->_M_mutate(__pos1, __n1, 0, __n2); +16166: +16166: if (__n2) +16166: this->_S_assign(this->_M_data() + __pos1, __n2, __c); +16166: +16166: this->_M_set_length(__new_size); +16166: return *this; +16166: } +16166: +16166: template +16166: __attribute__((__noinline__, __noclone__, __cold__)) void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_replace_cold(pointer __p, size_type __len1, const _CharT* __s, +16166: const size_type __len2, const size_type __how_much) +16166: { +16166: +16166: if (__len2 && __len2 <= __len1) +16166: this->_S_move(__p, __s, __len2); +16166: if (__how_much && __len1 != __len2) +16166: this->_S_move(__p + __len2, __p + __len1, __how_much); +16166: if (__len2 > __len1) +16166: { +16166: if (__s + __len2 <= __p + __len1) +16166: this->_S_move(__p, __s, __len2); +16166: else if (__s >= __p + __len1) +16166: { +16166: +16166: +16166: const size_type __poff = (__s - __p) + (__len2 - __len1); +16166: this->_S_copy(__p, __p + __poff, __len2); +16166: } +16166: else +16166: { +16166: const size_type __nleft = (__p + __len1) - __s; +16166: this->_S_move(__p, __s, __nleft); +16166: this->_S_copy(__p + __nleft, __p + __len2, __len2 - __nleft); +16166: } +16166: } +16166: } +16166: +16166: template +16166: +16166: basic_string<_CharT, _Traits, _Alloc>& +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: _M_replace(size_type __pos, size_type __len1, const _CharT* __s, +16166: const size_type __len2) +16166: { +16166: _M_check_length(__len1, __len2, "basic_string::_M_replace"); +16166: +16166: const size_type __old_size = this->size(); +16166: const size_type __new_size = __old_size + __len2 - __len1; +16166: +16166: if (__new_size <= this->capacity()) +16166: { +16166: pointer __p = this->_M_data() + __pos; +16166: +16166: const size_type __how_much = __old_size - __pos - __len1; +16166: # 537 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: if (__builtin_expect(_M_disjunct(__s), true)) +16166: { +16166: if (__how_much && __len1 != __len2) +16166: this->_S_move(__p + __len2, __p + __len1, __how_much); +16166: if (__len2) +16166: this->_S_copy(__p, __s, __len2); +16166: } +16166: else +16166: _M_replace_cold(__p, __len1, __s, __len2, __how_much); +16166: } +16166: else +16166: this->_M_mutate(__pos, __len1, __s, __len2); +16166: +16166: this->_M_set_length(__new_size); +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: copy(_CharT* __s, size_type __n, size_type __pos) const +16166: { +16166: _M_check(__pos, "basic_string::copy"); +16166: __n = _M_limit(__pos, __n); +16166: ; +16166: if (__n) +16166: _S_copy(__s, _M_data() + __pos, __n); +16166: +16166: return __n; +16166: } +16166: # 580 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: template +16166: template +16166: void +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: +16166: +16166: +16166: __resize_and_overwrite(const size_type __n, _Operation __op) +16166: +16166: { +16166: reserve(__n); +16166: _CharT* const __p = _M_data(); +16166: +16166: +16166: +16166: +16166: struct _Terminator { +16166: ~_Terminator() { _M_this->_M_set_length(_M_r); } +16166: basic_string* _M_this; +16166: size_type _M_r; +16166: }; +16166: _Terminator __term{this, 0}; +16166: auto __r = std::move(__op)(__p + 0, __n + 0); +16166: +16166: +16166: +16166: static_assert(__gnu_cxx::__is_integer_nonstrict::__value, +16166: "resize_and_overwrite operation must return an integer"); +16166: +16166: ; +16166: __term._M_r = size_type(__r); +16166: if (__term._M_r > __n) +16166: __builtin_unreachable(); +16166: } +16166: # 623 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept +16166: { +16166: ; +16166: const size_type __size = this->size(); +16166: +16166: if (__n == 0) +16166: return __pos <= __size ? __pos : npos; +16166: if (__pos >= __size) +16166: return npos; +16166: +16166: const _CharT __elem0 = __s[0]; +16166: const _CharT* const __data = data(); +16166: const _CharT* __first = __data + __pos; +16166: const _CharT* const __last = __data + __size; +16166: size_type __len = __size - __pos; +16166: +16166: while (__len >= __n) +16166: { +16166: +16166: __first = traits_type::find(__first, __len - __n + 1, __elem0); +16166: if (!__first) +16166: return npos; +16166: +16166: +16166: +16166: if (traits_type::compare(__first, __s, __n) == 0) +16166: return __first - __data; +16166: __len = __last - ++__first; +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find(_CharT __c, size_type __pos) const noexcept +16166: { +16166: size_type __ret = npos; +16166: const size_type __size = this->size(); +16166: if (__pos < __size) +16166: { +16166: const _CharT* __data = _M_data(); +16166: const size_type __n = __size - __pos; +16166: const _CharT* __p = traits_type::find(__data + __pos, __n, __c); +16166: if (__p) +16166: __ret = __p - __data; +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: rfind(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept +16166: { +16166: ; +16166: const size_type __size = this->size(); +16166: if (__n <= __size) +16166: { +16166: __pos = std::min(size_type(__size - __n), __pos); +16166: const _CharT* __data = _M_data(); +16166: do +16166: { +16166: if (traits_type::compare(__data + __pos, __s, __n) == 0) +16166: return __pos; +16166: } +16166: while (__pos-- > 0); +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: rfind(_CharT __c, size_type __pos) const noexcept +16166: { +16166: size_type __size = this->size(); +16166: if (__size) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: for (++__size; __size-- > 0; ) +16166: if (traits_type::eq(_M_data()[__size], __c)) +16166: return __size; +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find_first_of(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept +16166: { +16166: ; +16166: for (; __n && __pos < this->size(); ++__pos) +16166: { +16166: const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]); +16166: if (__p) +16166: return __pos; +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find_last_of(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept +16166: { +16166: ; +16166: size_type __size = this->size(); +16166: if (__size && __n) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: do +16166: { +16166: if (traits_type::find(__s, __n, _M_data()[__size])) +16166: return __size; +16166: } +16166: while (__size-- != 0); +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept +16166: { +16166: ; +16166: for (; __pos < this->size(); ++__pos) +16166: if (!traits_type::find(__s, __n, _M_data()[__pos])) +16166: return __pos; +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find_first_not_of(_CharT __c, size_type __pos) const noexcept +16166: { +16166: for (; __pos < this->size(); ++__pos) +16166: if (!traits_type::eq(_M_data()[__pos], __c)) +16166: return __pos; +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const +16166: noexcept +16166: { +16166: ; +16166: size_type __size = this->size(); +16166: if (__size) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: do +16166: { +16166: if (!traits_type::find(__s, __n, _M_data()[__size])) +16166: return __size; +16166: } +16166: while (__size--); +16166: } +16166: return npos; +16166: } +16166: +16166: template +16166: +16166: typename basic_string<_CharT, _Traits, _Alloc>::size_type +16166: basic_string<_CharT, _Traits, _Alloc>:: +16166: find_last_not_of(_CharT __c, size_type __pos) const noexcept +16166: { +16166: size_type __size = this->size(); +16166: if (__size) +16166: { +16166: if (--__size > __pos) +16166: __size = __pos; +16166: do +16166: { +16166: if (!traits_type::eq(_M_data()[__size], __c)) +16166: return __size; +16166: } +16166: while (__size--); +16166: } +16166: return npos; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: operator>>(basic_istream<_CharT, _Traits>& __in, +16166: basic_string<_CharT, _Traits, _Alloc>& __str) +16166: { +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +16166: typedef typename __istream_type::ios_base __ios_base; +16166: typedef typename __istream_type::int_type __int_type; +16166: typedef typename __string_type::size_type __size_type; +16166: typedef ctype<_CharT> __ctype_type; +16166: typedef typename __ctype_type::ctype_base __ctype_base; +16166: +16166: __size_type __extracted = 0; +16166: typename __ios_base::iostate __err = __ios_base::goodbit; +16166: typename __istream_type::sentry __cerb(__in, false); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: +16166: __str.erase(); +16166: _CharT __buf[128]; +16166: __size_type __len = 0; +16166: const streamsize __w = __in.width(); +16166: const __size_type __n = __w > 0 ? static_cast<__size_type>(__w) +16166: : __str.max_size(); +16166: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); +16166: const __int_type __eof = _Traits::eof(); +16166: __int_type __c = __in.rdbuf()->sgetc(); +16166: +16166: while (__extracted < __n +16166: && !_Traits::eq_int_type(__c, __eof) +16166: && !__ct.is(__ctype_base::space, +16166: _Traits::to_char_type(__c))) +16166: { +16166: if (__len == sizeof(__buf) / sizeof(_CharT)) +16166: { +16166: __str.append(__buf, sizeof(__buf) / sizeof(_CharT)); +16166: __len = 0; +16166: } +16166: __buf[__len++] = _Traits::to_char_type(__c); +16166: ++__extracted; +16166: __c = __in.rdbuf()->snextc(); +16166: } +16166: __str.append(__buf, __len); +16166: +16166: if (__extracted < __n && _Traits::eq_int_type(__c, __eof)) +16166: __err |= __ios_base::eofbit; +16166: __in.width(0); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: __in._M_setstate(__ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { +16166: +16166: +16166: +16166: __in._M_setstate(__ios_base::badbit); +16166: } +16166: } +16166: +16166: if (!__extracted) +16166: __err |= __ios_base::failbit; +16166: if (__err) +16166: __in.setstate(__err); +16166: return __in; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: getline(basic_istream<_CharT, _Traits>& __in, +16166: basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim) +16166: { +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +16166: typedef typename __istream_type::ios_base __ios_base; +16166: typedef typename __istream_type::int_type __int_type; +16166: typedef typename __string_type::size_type __size_type; +16166: +16166: __size_type __extracted = 0; +16166: const __size_type __n = __str.max_size(); +16166: typename __ios_base::iostate __err = __ios_base::goodbit; +16166: typename __istream_type::sentry __cerb(__in, true); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: __str.erase(); +16166: const __int_type __idelim = _Traits::to_int_type(__delim); +16166: const __int_type __eof = _Traits::eof(); +16166: __int_type __c = __in.rdbuf()->sgetc(); +16166: +16166: while (__extracted < __n +16166: && !_Traits::eq_int_type(__c, __eof) +16166: && !_Traits::eq_int_type(__c, __idelim)) +16166: { +16166: __str += _Traits::to_char_type(__c); +16166: ++__extracted; +16166: __c = __in.rdbuf()->snextc(); +16166: } +16166: +16166: if (_Traits::eq_int_type(__c, __eof)) +16166: __err |= __ios_base::eofbit; +16166: else if (_Traits::eq_int_type(__c, __idelim)) +16166: { +16166: ++__extracted; +16166: __in.rdbuf()->sbumpc(); +16166: } +16166: else +16166: __err |= __ios_base::failbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: __in._M_setstate(__ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { +16166: +16166: +16166: +16166: __in._M_setstate(__ios_base::badbit); +16166: } +16166: } +16166: if (!__extracted) +16166: __err |= __ios_base::failbit; +16166: if (__err) +16166: __in.setstate(__err); +16166: return __in; +16166: } +16166: # 977 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: extern template class basic_string; +16166: # 990 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: extern template +16166: basic_istream& +16166: operator>>(basic_istream&, string&); +16166: extern template +16166: basic_ostream& +16166: operator<<(basic_ostream&, const string&); +16166: extern template +16166: basic_istream& +16166: getline(basic_istream&, string&, char); +16166: extern template +16166: basic_istream& +16166: getline(basic_istream&, string&); +16166: +16166: +16166: +16166: extern template class basic_string; +16166: # 1016 "/usr/include/c++/14/bits/basic_string.tcc" 3 +16166: extern template +16166: basic_istream& +16166: operator>>(basic_istream&, wstring&); +16166: extern template +16166: basic_ostream& +16166: operator<<(basic_ostream&, const wstring&); +16166: extern template +16166: basic_istream& +16166: getline(basic_istream&, wstring&, wchar_t); +16166: extern template +16166: basic_istream& +16166: getline(basic_istream&, wstring&); +16166: +16166: +16166: +16166: +16166: } +16166: # 56 "/usr/include/c++/14/string" 2 3 +16166: # 65 "/usr/include/c++/14/string" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 66 "/usr/include/c++/14/string" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr { +16166: template> +16166: using basic_string = std::basic_string<_CharT, _Traits, +16166: polymorphic_allocator<_CharT>>; +16166: using string = basic_string; +16166: +16166: +16166: +16166: using u16string = basic_string; +16166: using u32string = basic_string; +16166: using wstring = basic_string; +16166: } +16166: +16166: } +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/usr/include/c++/14/unordered_set" 1 3 +16166: # 32 "/usr/include/c++/14/unordered_set" 3 +16166: +16166: # 33 "/usr/include/c++/14/unordered_set" 3 +16166: # 41 "/usr/include/c++/14/unordered_set" 3 +16166: # 1 "/usr/include/c++/14/bits/unordered_set.h" 1 3 +16166: # 38 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; +16166: +16166: template, +16166: typename _Pred = std::equal_to<_Value>, +16166: typename _Alloc = std::allocator<_Value>, +16166: typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> +16166: using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, +16166: __detail::_Identity, _Pred, _Hash, +16166: __detail::_Mod_range_hashing, +16166: __detail::_Default_ranged_hash, +16166: __detail::_Prime_rehash_policy, _Tr>; +16166: +16166: +16166: template +16166: using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; +16166: +16166: template, +16166: typename _Pred = std::equal_to<_Value>, +16166: typename _Alloc = std::allocator<_Value>, +16166: typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> +16166: using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, +16166: __detail::_Identity, +16166: _Pred, _Hash, +16166: __detail::_Mod_range_hashing, +16166: __detail::_Default_ranged_hash, +16166: __detail::_Prime_rehash_policy, _Tr>; +16166: +16166: template +16166: class unordered_multiset; +16166: # 100 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template, +16166: typename _Pred = equal_to<_Value>, +16166: typename _Alloc = allocator<_Value>> +16166: class unordered_set +16166: { +16166: typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; +16166: _Hashtable _M_h; +16166: +16166: public: +16166: +16166: +16166: +16166: typedef typename _Hashtable::key_type key_type; +16166: typedef typename _Hashtable::value_type value_type; +16166: typedef typename _Hashtable::hasher hasher; +16166: typedef typename _Hashtable::key_equal key_equal; +16166: typedef typename _Hashtable::allocator_type allocator_type; +16166: +16166: +16166: +16166: +16166: typedef typename _Hashtable::pointer pointer; +16166: typedef typename _Hashtable::const_pointer const_pointer; +16166: typedef typename _Hashtable::reference reference; +16166: typedef typename _Hashtable::const_reference const_reference; +16166: typedef typename _Hashtable::iterator iterator; +16166: typedef typename _Hashtable::const_iterator const_iterator; +16166: typedef typename _Hashtable::local_iterator local_iterator; +16166: typedef typename _Hashtable::const_local_iterator const_local_iterator; +16166: typedef typename _Hashtable::size_type size_type; +16166: typedef typename _Hashtable::difference_type difference_type; +16166: +16166: +16166: +16166: using node_type = typename _Hashtable::node_type; +16166: using insert_return_type = typename _Hashtable::insert_return_type; +16166: +16166: +16166: +16166: +16166: +16166: unordered_set() = default; +16166: # 151 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: explicit +16166: unordered_set(size_type __n, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__n, __hf, __eql, __a) +16166: { } +16166: # 172 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: unordered_set(_InputIterator __first, _InputIterator __last, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__first, __last, __n, __hf, __eql, __a) +16166: { } +16166: +16166: +16166: unordered_set(const unordered_set&) = default; +16166: +16166: +16166: unordered_set(unordered_set&&) = default; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: unordered_set(const allocator_type& __a) +16166: : _M_h(__a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_set(const unordered_set& __uset, +16166: const allocator_type& __a) +16166: : _M_h(__uset._M_h, __a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_set(unordered_set&& __uset, +16166: const allocator_type& __a) +16166: noexcept( noexcept(_Hashtable(std::move(__uset._M_h), __a)) ) +16166: : _M_h(std::move(__uset._M_h), __a) +16166: { } +16166: # 228 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: unordered_set(initializer_list __l, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__l, __n, __hf, __eql, __a) +16166: { } +16166: +16166: unordered_set(size_type __n, const allocator_type& __a) +16166: : unordered_set(__n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_set(size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_set(__n, __hf, key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_set(_InputIterator __first, _InputIterator __last, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_set(_InputIterator __first, _InputIterator __last, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_set(__first, __last, __n, __hf, key_equal(), __a) +16166: { } +16166: +16166: unordered_set(initializer_list __l, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_set(__l, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_set(initializer_list __l, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_set(__l, __n, __hf, key_equal(), __a) +16166: { } +16166: +16166: +16166: unordered_set& +16166: operator=(const unordered_set&) = default; +16166: +16166: +16166: unordered_set& +16166: operator=(unordered_set&&) = default; +16166: # 290 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: unordered_set& +16166: operator=(initializer_list __l) +16166: { +16166: _M_h = __l; +16166: return *this; +16166: } +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return _M_h.get_allocator(); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_h.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_h.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_h.max_size(); } +16166: # 326 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: begin() noexcept +16166: { return _M_h.begin(); } +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() noexcept +16166: { return _M_h.end(); } +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return _M_h.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cbegin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cend() const noexcept +16166: { return _M_h.end(); } +16166: # 382 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: std::pair +16166: emplace(_Args&&... __args) +16166: { return _M_h.emplace(std::forward<_Args>(__args)...); } +16166: # 408 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +16166: # 427 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: std::pair +16166: insert(const value_type& __x) +16166: { return _M_h.insert(__x); } +16166: +16166: std::pair +16166: insert(value_type&& __x) +16166: { return _M_h.insert(std::move(__x)); } +16166: # 456 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: insert(const_iterator __hint, const value_type& __x) +16166: { return _M_h.insert(__hint, __x); } +16166: +16166: iterator +16166: insert(const_iterator __hint, value_type&& __x) +16166: { return _M_h.insert(__hint, std::move(__x)); } +16166: # 474 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_h.insert(__first, __last); } +16166: # 486 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: insert(initializer_list __l) +16166: { _M_h.insert(__l); } +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_h.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __key) +16166: { return _M_h.extract(__key); } +16166: +16166: +16166: insert_return_type +16166: insert(node_type&& __nh) +16166: { return _M_h._M_reinsert_node(std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator, node_type&& __nh) +16166: { return _M_h._M_reinsert_node(std::move(__nh)).position; } +16166: # 529 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_h.erase(__position); } +16166: +16166: +16166: iterator +16166: erase(iterator __position) +16166: { return _M_h.erase(__position); } +16166: # 551 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_h.erase(__x); } +16166: # 569 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_h.erase(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_h.clear(); } +16166: # 592 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: swap(unordered_set& __x) +16166: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +16166: { _M_h.swap(__x._M_h); } +16166: +16166: +16166: template +16166: friend class std::_Hash_merge_helper; +16166: +16166: template +16166: void +16166: merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Hash_merge_helper; +16166: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Hash_merge_helper; +16166: _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: hasher +16166: hash_function() const +16166: { return _M_h.hash_function(); } +16166: +16166: +16166: +16166: key_equal +16166: key_eq() const +16166: { return _M_h.key_eq(); } +16166: # 656 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_h.find(__x); } +16166: # 668 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_h.find(__x); } +16166: # 691 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_h.count(__x); } +16166: # 732 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_h.equal_range(__x); } +16166: # 744 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_h.equal_range(__x); } +16166: # 760 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: size_type +16166: bucket_count() const noexcept +16166: { return _M_h.bucket_count(); } +16166: +16166: +16166: size_type +16166: max_bucket_count() const noexcept +16166: { return _M_h.max_bucket_count(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket_size(size_type __n) const +16166: { return _M_h.bucket_size(__n); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket(const key_type& __key) const +16166: { return _M_h.bucket(__key); } +16166: # 794 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: local_iterator +16166: begin(size_type __n) +16166: { return _M_h.begin(__n); } +16166: +16166: const_local_iterator +16166: begin(size_type __n) const +16166: { return _M_h.begin(__n); } +16166: +16166: const_local_iterator +16166: cbegin(size_type __n) const +16166: { return _M_h.cbegin(__n); } +16166: # 814 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: local_iterator +16166: end(size_type __n) +16166: { return _M_h.end(__n); } +16166: +16166: const_local_iterator +16166: end(size_type __n) const +16166: { return _M_h.end(__n); } +16166: +16166: const_local_iterator +16166: cend(size_type __n) const +16166: { return _M_h.cend(__n); } +16166: +16166: +16166: +16166: +16166: +16166: float +16166: load_factor() const noexcept +16166: { return _M_h.load_factor(); } +16166: +16166: +16166: +16166: float +16166: max_load_factor() const noexcept +16166: { return _M_h.max_load_factor(); } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: max_load_factor(float __z) +16166: { _M_h.max_load_factor(__z); } +16166: # 855 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: rehash(size_type __n) +16166: { _M_h.rehash(__n); } +16166: # 866 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: reserve(size_type __n) +16166: { _M_h.reserve(__n); } +16166: +16166: template +16166: friend bool +16166: operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, +16166: const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); +16166: }; +16166: +16166: +16166: +16166: template::value_type>, +16166: typename _Pred = +16166: equal_to::value_type>, +16166: typename _Allocator = +16166: allocator::value_type>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_set(_InputIterator, _InputIterator, +16166: unordered_set::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +16166: -> unordered_set::value_type, +16166: _Hash, _Pred, _Allocator>; +16166: +16166: template, +16166: typename _Pred = equal_to<_Tp>, +16166: typename _Allocator = allocator<_Tp>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_set(initializer_list<_Tp>, +16166: unordered_set::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) +16166: -> unordered_set<_Tp, _Hash, _Pred, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_set(_InputIterator, _InputIterator, +16166: unordered_set::size_type, _Allocator) +16166: -> unordered_set::value_type, +16166: hash< +16166: typename iterator_traits<_InputIterator>::value_type>, +16166: equal_to< +16166: typename iterator_traits<_InputIterator>::value_type>, +16166: _Allocator>; +16166: +16166: template, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_set(_InputIterator, _InputIterator, +16166: unordered_set::size_type, +16166: _Hash, _Allocator) +16166: -> unordered_set::value_type, +16166: _Hash, +16166: equal_to< +16166: typename iterator_traits<_InputIterator>::value_type>, +16166: _Allocator>; +16166: +16166: template> +16166: unordered_set(initializer_list<_Tp>, +16166: unordered_set::size_type, _Allocator) +16166: -> unordered_set<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_set(initializer_list<_Tp>, +16166: unordered_set::size_type, _Hash, _Allocator) +16166: -> unordered_set<_Tp, _Hash, equal_to<_Tp>, _Allocator>; +16166: # 968 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template, +16166: typename _Pred = equal_to<_Value>, +16166: typename _Alloc = allocator<_Value>> +16166: class unordered_multiset +16166: { +16166: typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; +16166: _Hashtable _M_h; +16166: +16166: public: +16166: +16166: +16166: +16166: typedef typename _Hashtable::key_type key_type; +16166: typedef typename _Hashtable::value_type value_type; +16166: typedef typename _Hashtable::hasher hasher; +16166: typedef typename _Hashtable::key_equal key_equal; +16166: typedef typename _Hashtable::allocator_type allocator_type; +16166: +16166: +16166: +16166: +16166: typedef typename _Hashtable::pointer pointer; +16166: typedef typename _Hashtable::const_pointer const_pointer; +16166: typedef typename _Hashtable::reference reference; +16166: typedef typename _Hashtable::const_reference const_reference; +16166: typedef typename _Hashtable::iterator iterator; +16166: typedef typename _Hashtable::const_iterator const_iterator; +16166: typedef typename _Hashtable::local_iterator local_iterator; +16166: typedef typename _Hashtable::const_local_iterator const_local_iterator; +16166: typedef typename _Hashtable::size_type size_type; +16166: typedef typename _Hashtable::difference_type difference_type; +16166: +16166: +16166: +16166: using node_type = typename _Hashtable::node_type; +16166: +16166: +16166: +16166: +16166: +16166: unordered_multiset() = default; +16166: # 1018 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: explicit +16166: unordered_multiset(size_type __n, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__n, __hf, __eql, __a) +16166: { } +16166: # 1039 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: unordered_multiset(_InputIterator __first, _InputIterator __last, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__first, __last, __n, __hf, __eql, __a) +16166: { } +16166: +16166: +16166: unordered_multiset(const unordered_multiset&) = default; +16166: +16166: +16166: unordered_multiset(unordered_multiset&&) = default; +16166: # 1065 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: unordered_multiset(initializer_list __l, +16166: size_type __n = 0, +16166: const hasher& __hf = hasher(), +16166: const key_equal& __eql = key_equal(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_h(__l, __n, __hf, __eql, __a) +16166: { } +16166: +16166: +16166: unordered_multiset& +16166: operator=(const unordered_multiset&) = default; +16166: +16166: +16166: unordered_multiset& +16166: operator=(unordered_multiset&&) = default; +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: unordered_multiset(const allocator_type& __a) +16166: : _M_h(__a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_multiset(const unordered_multiset& __umset, +16166: const allocator_type& __a) +16166: : _M_h(__umset._M_h, __a) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: unordered_multiset(unordered_multiset&& __umset, +16166: const allocator_type& __a) +16166: noexcept( noexcept(_Hashtable(std::move(__umset._M_h), __a)) ) +16166: : _M_h(std::move(__umset._M_h), __a) +16166: { } +16166: +16166: unordered_multiset(size_type __n, const allocator_type& __a) +16166: : unordered_multiset(__n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_multiset(size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_multiset(__n, __hf, key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_multiset(_InputIterator __first, _InputIterator __last, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: template +16166: unordered_multiset(_InputIterator __first, _InputIterator __last, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) +16166: { } +16166: +16166: unordered_multiset(initializer_list __l, +16166: size_type __n, +16166: const allocator_type& __a) +16166: : unordered_multiset(__l, __n, hasher(), key_equal(), __a) +16166: { } +16166: +16166: unordered_multiset(initializer_list __l, +16166: size_type __n, const hasher& __hf, +16166: const allocator_type& __a) +16166: : unordered_multiset(__l, __n, __hf, key_equal(), __a) +16166: { } +16166: # 1157 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: unordered_multiset& +16166: operator=(initializer_list __l) +16166: { +16166: _M_h = __l; +16166: return *this; +16166: } +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return _M_h.get_allocator(); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_h.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_h.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_h.max_size(); } +16166: # 1193 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: begin() noexcept +16166: { return _M_h.begin(); } +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() noexcept +16166: { return _M_h.end(); } +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return _M_h.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cbegin() const noexcept +16166: { return _M_h.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cend() const noexcept +16166: { return _M_h.end(); } +16166: # 1241 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: iterator +16166: emplace(_Args&&... __args) +16166: { return _M_h.emplace(std::forward<_Args>(__args)...); } +16166: # 1263 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } +16166: # 1276 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: insert(const value_type& __x) +16166: { return _M_h.insert(__x); } +16166: +16166: iterator +16166: insert(value_type&& __x) +16166: { return _M_h.insert(std::move(__x)); } +16166: # 1302 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: insert(const_iterator __hint, const value_type& __x) +16166: { return _M_h.insert(__hint, __x); } +16166: +16166: iterator +16166: insert(const_iterator __hint, value_type&& __x) +16166: { return _M_h.insert(__hint, std::move(__x)); } +16166: # 1319 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_h.insert(__first, __last); } +16166: # 1331 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: insert(initializer_list __l) +16166: { _M_h.insert(__l); } +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_h.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __key) +16166: { return _M_h.extract(__key); } +16166: +16166: +16166: iterator +16166: insert(node_type&& __nh) +16166: { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, node_type&& __nh) +16166: { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } +16166: # 1375 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_h.erase(__position); } +16166: +16166: +16166: iterator +16166: erase(iterator __position) +16166: { return _M_h.erase(__position); } +16166: # 1398 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_h.erase(__x); } +16166: # 1418 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_h.erase(__first, __last); } +16166: # 1429 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: clear() noexcept +16166: { _M_h.clear(); } +16166: # 1442 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: swap(unordered_multiset& __x) +16166: noexcept( noexcept(_M_h.swap(__x._M_h)) ) +16166: { _M_h.swap(__x._M_h); } +16166: +16166: +16166: template +16166: friend class std::_Hash_merge_helper; +16166: +16166: template +16166: void +16166: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper +16166: = _Hash_merge_helper; +16166: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) +16166: { +16166: using _Merge_helper +16166: = _Hash_merge_helper; +16166: _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: hasher +16166: hash_function() const +16166: { return _M_h.hash_function(); } +16166: +16166: +16166: +16166: key_equal +16166: key_eq() const +16166: { return _M_h.key_eq(); } +16166: # 1508 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_h.find(__x); } +16166: # 1520 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_h.find(__x); } +16166: # 1539 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_h.count(__x); } +16166: # 1577 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_h.equal_range(__x); } +16166: # 1589 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_h.equal_range(__x); } +16166: # 1605 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: size_type +16166: bucket_count() const noexcept +16166: { return _M_h.bucket_count(); } +16166: +16166: +16166: size_type +16166: max_bucket_count() const noexcept +16166: { return _M_h.max_bucket_count(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket_size(size_type __n) const +16166: { return _M_h.bucket_size(__n); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_type +16166: bucket(const key_type& __key) const +16166: { return _M_h.bucket(__key); } +16166: # 1639 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: local_iterator +16166: begin(size_type __n) +16166: { return _M_h.begin(__n); } +16166: +16166: const_local_iterator +16166: begin(size_type __n) const +16166: { return _M_h.begin(__n); } +16166: +16166: const_local_iterator +16166: cbegin(size_type __n) const +16166: { return _M_h.cbegin(__n); } +16166: # 1659 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: local_iterator +16166: end(size_type __n) +16166: { return _M_h.end(__n); } +16166: +16166: const_local_iterator +16166: end(size_type __n) const +16166: { return _M_h.end(__n); } +16166: +16166: const_local_iterator +16166: cend(size_type __n) const +16166: { return _M_h.cend(__n); } +16166: +16166: +16166: +16166: +16166: +16166: float +16166: load_factor() const noexcept +16166: { return _M_h.load_factor(); } +16166: +16166: +16166: +16166: float +16166: max_load_factor() const noexcept +16166: { return _M_h.max_load_factor(); } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: max_load_factor(float __z) +16166: { _M_h.max_load_factor(__z); } +16166: # 1700 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: rehash(size_type __n) +16166: { _M_h.rehash(__n); } +16166: # 1711 "/usr/include/c++/14/bits/unordered_set.h" 3 +16166: void +16166: reserve(size_type __n) +16166: { _M_h.reserve(__n); } +16166: +16166: template +16166: friend bool +16166: operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, +16166: const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); +16166: }; +16166: +16166: +16166: +16166: +16166: template::value_type>, +16166: typename _Pred = +16166: equal_to::value_type>, +16166: typename _Allocator = +16166: allocator::value_type>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multiset(_InputIterator, _InputIterator, +16166: unordered_multiset::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), +16166: _Allocator = _Allocator()) +16166: -> unordered_multiset::value_type, +16166: _Hash, _Pred, _Allocator>; +16166: +16166: template, +16166: typename _Pred = equal_to<_Tp>, +16166: typename _Allocator = allocator<_Tp>, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireNotAllocator<_Pred>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multiset(initializer_list<_Tp>, +16166: unordered_multiset::size_type = {}, +16166: _Hash = _Hash(), _Pred = _Pred(), +16166: _Allocator = _Allocator()) +16166: -> unordered_multiset<_Tp, _Hash, _Pred, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multiset(_InputIterator, _InputIterator, +16166: unordered_multiset::size_type, _Allocator) +16166: -> unordered_multiset::value_type, +16166: hash::value_type>, +16166: equal_to::value_type>, +16166: _Allocator>; +16166: +16166: template, +16166: typename = _RequireNotAllocatorOrIntegral<_Hash>, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multiset(_InputIterator, _InputIterator, +16166: unordered_multiset::size_type, +16166: _Hash, _Allocator) +16166: -> unordered_multiset::value_type, +16166: _Hash, +16166: equal_to< +16166: typename +16166: iterator_traits<_InputIterator>::value_type>, +16166: _Allocator>; +16166: +16166: template> +16166: unordered_multiset(initializer_list<_Tp>, +16166: unordered_multiset::size_type, _Allocator) +16166: -> unordered_multiset<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: unordered_multiset(initializer_list<_Tp>, +16166: unordered_multiset::size_type, _Hash, _Allocator) +16166: -> unordered_multiset<_Tp, _Hash, equal_to<_Tp>, _Allocator>; +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, +16166: unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: template +16166: inline void +16166: swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, +16166: unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: template +16166: inline bool +16166: operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) +16166: { return __x._M_h._M_equal(__y._M_h); } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: inline bool +16166: operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) +16166: { return __x._M_h._M_equal(__y._M_h); } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, +16166: const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Hash_merge_helper< +16166: std::unordered_set<_Val, _Hash1, _Eq1, _Alloc>, _Hash2, _Eq2> +16166: { +16166: private: +16166: template +16166: using unordered_set = std::unordered_set<_Tp...>; +16166: template +16166: using unordered_multiset = std::unordered_multiset<_Tp...>; +16166: +16166: friend unordered_set<_Val, _Hash1, _Eq1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) +16166: { return __set._M_h; } +16166: +16166: static auto& +16166: _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) +16166: { return __set._M_h; } +16166: }; +16166: +16166: +16166: template +16166: struct _Hash_merge_helper< +16166: std::unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>, +16166: _Hash2, _Eq2> +16166: { +16166: private: +16166: template +16166: using unordered_set = std::unordered_set<_Tp...>; +16166: template +16166: using unordered_multiset = std::unordered_multiset<_Tp...>; +16166: +16166: friend unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) +16166: { return __set._M_h; } +16166: +16166: static auto& +16166: _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) +16166: { return __set._M_h; } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 42 "/usr/include/c++/14/unordered_set" 2 3 +16166: # 54 "/usr/include/c++/14/unordered_set" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 55 "/usr/include/c++/14/unordered_set" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr +16166: { +16166: template, +16166: typename _Pred = std::equal_to<_Key>> +16166: using unordered_set +16166: = std::unordered_set<_Key, _Hash, _Pred, +16166: polymorphic_allocator<_Key>>; +16166: template, +16166: typename _Pred = std::equal_to<_Key>> +16166: using unordered_multiset +16166: = std::unordered_multiset<_Key, _Hash, _Pred, +16166: polymorphic_allocator<_Key>>; +16166: } +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/optional" 1 3 +16166: # 33 "/usr/include/c++/14/optional" 3 +16166: +16166: # 34 "/usr/include/c++/14/optional" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 38 "/usr/include/c++/14/optional" 2 3 +16166: # 58 "/usr/include/c++/14/optional" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class optional; +16166: +16166: +16166: struct nullopt_t +16166: { +16166: +16166: +16166: +16166: +16166: +16166: enum class _Construct { _Token }; +16166: +16166: +16166: explicit constexpr nullopt_t(_Construct) noexcept { } +16166: }; +16166: +16166: +16166: inline constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token }; +16166: +16166: template struct _Optional_func { _Fn& _M_f; }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class bad_optional_access : public exception +16166: { +16166: public: +16166: bad_optional_access() = default; +16166: virtual ~bad_optional_access() = default; +16166: +16166: const char* what() const noexcept override +16166: { return "bad optional access"; } +16166: }; +16166: +16166: +16166: [[__noreturn__]] inline void +16166: __throw_bad_optional_access() +16166: { (throw (bad_optional_access())); } +16166: +16166: +16166: +16166: template +16166: struct _Optional_payload_base +16166: { +16166: using _Stored_type = remove_const_t<_Tp>; +16166: +16166: _Optional_payload_base() = default; +16166: ~_Optional_payload_base() = default; +16166: +16166: template +16166: constexpr +16166: _Optional_payload_base(in_place_t __tag, _Args&&... __args) +16166: : _M_payload(__tag, std::forward<_Args>(__args)...), +16166: _M_engaged(true) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Optional_payload_base(std::initializer_list<_Up> __il, +16166: _Args&&... __args) +16166: : _M_payload(__il, std::forward<_Args>(__args)...), +16166: _M_engaged(true) +16166: { } +16166: +16166: +16166: +16166: constexpr +16166: _Optional_payload_base(bool , +16166: const _Optional_payload_base& __other) +16166: { +16166: if (__other._M_engaged) +16166: this->_M_construct(__other._M_get()); +16166: } +16166: +16166: +16166: +16166: constexpr +16166: _Optional_payload_base(bool , +16166: _Optional_payload_base&& __other) +16166: { +16166: if (__other._M_engaged) +16166: this->_M_construct(std::move(__other._M_get())); +16166: } +16166: +16166: +16166: +16166: _Optional_payload_base(const _Optional_payload_base&) = default; +16166: +16166: +16166: +16166: _Optional_payload_base(_Optional_payload_base&&) = default; +16166: +16166: _Optional_payload_base& +16166: operator=(const _Optional_payload_base&) = default; +16166: +16166: _Optional_payload_base& +16166: operator=(_Optional_payload_base&&) = default; +16166: +16166: +16166: constexpr void +16166: _M_copy_assign(const _Optional_payload_base& __other) +16166: { +16166: if (this->_M_engaged && __other._M_engaged) +16166: this->_M_get() = __other._M_get(); +16166: else +16166: { +16166: if (__other._M_engaged) +16166: this->_M_construct(__other._M_get()); +16166: else +16166: this->_M_reset(); +16166: } +16166: } +16166: +16166: +16166: constexpr void +16166: _M_move_assign(_Optional_payload_base&& __other) +16166: noexcept(__and_v, +16166: is_nothrow_move_assignable<_Tp>>) +16166: { +16166: if (this->_M_engaged && __other._M_engaged) +16166: this->_M_get() = std::move(__other._M_get()); +16166: else +16166: { +16166: if (__other._M_engaged) +16166: this->_M_construct(std::move(__other._M_get())); +16166: else +16166: this->_M_reset(); +16166: } +16166: } +16166: +16166: struct _Empty_byte { }; +16166: +16166: template> +16166: union _Storage +16166: { +16166: constexpr _Storage() noexcept : _M_empty() { } +16166: +16166: template +16166: constexpr +16166: _Storage(in_place_t, _Args&&... __args) +16166: : _M_value(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Storage(std::initializer_list<_Vp> __il, _Args&&... __args) +16166: : _M_value(__il, std::forward<_Args>(__args)...) +16166: { } +16166: # 228 "/usr/include/c++/14/optional" 3 +16166: _Empty_byte _M_empty; +16166: _Up _M_value; +16166: }; +16166: +16166: template +16166: union _Storage<_Up, false> +16166: { +16166: constexpr _Storage() noexcept : _M_empty() { } +16166: +16166: template +16166: constexpr +16166: _Storage(in_place_t, _Args&&... __args) +16166: : _M_value(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Storage(std::initializer_list<_Vp> __il, _Args&&... __args) +16166: : _M_value(__il, std::forward<_Args>(__args)...) +16166: { } +16166: # 259 "/usr/include/c++/14/optional" 3 +16166: ~_Storage() { } +16166: +16166: _Empty_byte _M_empty; +16166: _Up _M_value; +16166: }; +16166: +16166: _Storage<_Stored_type> _M_payload; +16166: +16166: bool _M_engaged = false; +16166: +16166: template +16166: constexpr void +16166: _M_construct(_Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Stored_type, _Args...>) +16166: { +16166: std::_Construct(std::__addressof(this->_M_payload._M_value), +16166: std::forward<_Args>(__args)...); +16166: this->_M_engaged = true; +16166: } +16166: +16166: constexpr void +16166: _M_destroy() noexcept +16166: { +16166: _M_engaged = false; +16166: _M_payload._M_value.~_Stored_type(); +16166: } +16166: # 301 "/usr/include/c++/14/optional" 3 +16166: constexpr _Tp& +16166: _M_get() noexcept +16166: { return this->_M_payload._M_value; } +16166: +16166: constexpr const _Tp& +16166: _M_get() const noexcept +16166: { return this->_M_payload._M_value; } +16166: +16166: +16166: constexpr void +16166: _M_reset() noexcept +16166: { +16166: if (this->_M_engaged) +16166: _M_destroy(); +16166: else +16166: this->_M_engaged = false; +16166: } +16166: }; +16166: +16166: +16166: template , +16166: bool = +16166: is_trivially_copy_assignable_v<_Tp> +16166: && is_trivially_copy_constructible_v<_Tp>, +16166: bool = +16166: is_trivially_move_assignable_v<_Tp> +16166: && is_trivially_move_constructible_v<_Tp>> +16166: struct _Optional_payload; +16166: +16166: +16166: template +16166: struct _Optional_payload<_Tp, true, true, true> +16166: : _Optional_payload_base<_Tp> +16166: { +16166: using _Optional_payload_base<_Tp>::_Optional_payload_base; +16166: +16166: _Optional_payload() = default; +16166: }; +16166: +16166: +16166: template +16166: struct _Optional_payload<_Tp, true, false, true> +16166: : _Optional_payload_base<_Tp> +16166: { +16166: using _Optional_payload_base<_Tp>::_Optional_payload_base; +16166: +16166: _Optional_payload() = default; +16166: ~_Optional_payload() = default; +16166: _Optional_payload(const _Optional_payload&) = default; +16166: _Optional_payload(_Optional_payload&&) = default; +16166: _Optional_payload& operator=(_Optional_payload&&) = default; +16166: +16166: +16166: constexpr +16166: _Optional_payload& +16166: operator=(const _Optional_payload& __other) +16166: { +16166: this->_M_copy_assign(__other); +16166: return *this; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Optional_payload<_Tp, true, true, false> +16166: : _Optional_payload_base<_Tp> +16166: { +16166: using _Optional_payload_base<_Tp>::_Optional_payload_base; +16166: +16166: _Optional_payload() = default; +16166: ~_Optional_payload() = default; +16166: _Optional_payload(const _Optional_payload&) = default; +16166: _Optional_payload(_Optional_payload&&) = default; +16166: _Optional_payload& operator=(const _Optional_payload&) = default; +16166: +16166: +16166: constexpr +16166: _Optional_payload& +16166: operator=(_Optional_payload&& __other) +16166: noexcept(__and_v, +16166: is_nothrow_move_assignable<_Tp>>) +16166: { +16166: this->_M_move_assign(std::move(__other)); +16166: return *this; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Optional_payload<_Tp, true, false, false> +16166: : _Optional_payload_base<_Tp> +16166: { +16166: using _Optional_payload_base<_Tp>::_Optional_payload_base; +16166: +16166: _Optional_payload() = default; +16166: ~_Optional_payload() = default; +16166: _Optional_payload(const _Optional_payload&) = default; +16166: _Optional_payload(_Optional_payload&&) = default; +16166: +16166: +16166: constexpr +16166: _Optional_payload& +16166: operator=(const _Optional_payload& __other) +16166: { +16166: this->_M_copy_assign(__other); +16166: return *this; +16166: } +16166: +16166: +16166: constexpr +16166: _Optional_payload& +16166: operator=(_Optional_payload&& __other) +16166: noexcept(__and_v, +16166: is_nothrow_move_assignable<_Tp>>) +16166: { +16166: this->_M_move_assign(std::move(__other)); +16166: return *this; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Optional_payload<_Tp, false, _Copy, _Move> +16166: : _Optional_payload<_Tp, true, false, false> +16166: { +16166: +16166: using _Optional_payload<_Tp, true, false, false>::_Optional_payload; +16166: _Optional_payload() = default; +16166: _Optional_payload(const _Optional_payload&) = default; +16166: _Optional_payload(_Optional_payload&&) = default; +16166: _Optional_payload& operator=(const _Optional_payload&) = default; +16166: _Optional_payload& operator=(_Optional_payload&&) = default; +16166: +16166: +16166: ~_Optional_payload() { this->_M_reset(); } +16166: }; +16166: +16166: +16166: +16166: template +16166: class _Optional_base_impl +16166: { +16166: protected: +16166: using _Stored_type = remove_const_t<_Tp>; +16166: +16166: +16166: +16166: template +16166: constexpr void +16166: _M_construct(_Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Stored_type, _Args...>) +16166: { +16166: static_cast<_Dp*>(this)->_M_payload._M_construct( +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: constexpr void +16166: _M_destruct() noexcept +16166: { static_cast<_Dp*>(this)->_M_payload._M_destroy(); } +16166: +16166: +16166: constexpr void +16166: _M_reset() noexcept +16166: { static_cast<_Dp*>(this)->_M_payload._M_reset(); } +16166: +16166: constexpr bool _M_is_engaged() const noexcept +16166: { return static_cast(this)->_M_payload._M_engaged; } +16166: +16166: +16166: constexpr _Tp& +16166: _M_get() noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(this->_M_is_engaged())) std::__glibcxx_assert_fail(); } while (false); +16166: return static_cast<_Dp*>(this)->_M_payload._M_get(); +16166: } +16166: +16166: constexpr const _Tp& +16166: _M_get() const noexcept +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(this->_M_is_engaged())) std::__glibcxx_assert_fail(); } while (false); +16166: return static_cast(this)->_M_payload._M_get(); +16166: } +16166: }; +16166: # 505 "/usr/include/c++/14/optional" 3 +16166: template, +16166: bool = is_trivially_move_constructible_v<_Tp>> +16166: struct _Optional_base +16166: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +16166: { +16166: +16166: constexpr _Optional_base() = default; +16166: +16166: +16166: template, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, _Args&&... __args) +16166: : _M_payload(in_place, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template&, +16166: _Args...>, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, +16166: initializer_list<_Up> __il, +16166: _Args&&... __args) +16166: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: +16166: constexpr +16166: _Optional_base(const _Optional_base& __other) +16166: : _M_payload(__other._M_payload._M_engaged, __other._M_payload) +16166: { } +16166: +16166: constexpr +16166: _Optional_base(_Optional_base&& __other) +16166: noexcept(is_nothrow_move_constructible_v<_Tp>) +16166: : _M_payload(__other._M_payload._M_engaged, +16166: std::move(__other._M_payload)) +16166: { } +16166: +16166: +16166: _Optional_base& operator=(const _Optional_base&) = default; +16166: _Optional_base& operator=(_Optional_base&&) = default; +16166: +16166: _Optional_payload<_Tp> _M_payload; +16166: }; +16166: +16166: template +16166: struct _Optional_base<_Tp, false, true> +16166: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +16166: { +16166: +16166: constexpr _Optional_base() = default; +16166: +16166: +16166: template, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, _Args&&... __args) +16166: : _M_payload(in_place, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template&, +16166: _Args...>, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, +16166: initializer_list<_Up> __il, +16166: _Args... __args) +16166: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: +16166: constexpr _Optional_base(const _Optional_base& __other) +16166: : _M_payload(__other._M_payload._M_engaged, __other._M_payload) +16166: { } +16166: +16166: constexpr _Optional_base(_Optional_base&& __other) = default; +16166: +16166: +16166: _Optional_base& operator=(const _Optional_base&) = default; +16166: _Optional_base& operator=(_Optional_base&&) = default; +16166: +16166: _Optional_payload<_Tp> _M_payload; +16166: }; +16166: +16166: template +16166: struct _Optional_base<_Tp, true, false> +16166: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +16166: { +16166: +16166: constexpr _Optional_base() = default; +16166: +16166: +16166: template, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, _Args&&... __args) +16166: : _M_payload(in_place, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template&, +16166: _Args...>, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, +16166: initializer_list<_Up> __il, +16166: _Args&&... __args) +16166: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: +16166: constexpr _Optional_base(const _Optional_base& __other) = default; +16166: +16166: constexpr +16166: _Optional_base(_Optional_base&& __other) +16166: noexcept(is_nothrow_move_constructible_v<_Tp>) +16166: : _M_payload(__other._M_payload._M_engaged, +16166: std::move(__other._M_payload)) +16166: { } +16166: +16166: +16166: _Optional_base& operator=(const _Optional_base&) = default; +16166: _Optional_base& operator=(_Optional_base&&) = default; +16166: +16166: _Optional_payload<_Tp> _M_payload; +16166: }; +16166: +16166: template +16166: struct _Optional_base<_Tp, true, true> +16166: : _Optional_base_impl<_Tp, _Optional_base<_Tp>> +16166: { +16166: +16166: constexpr _Optional_base() = default; +16166: +16166: +16166: template, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, _Args&&... __args) +16166: : _M_payload(in_place, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template&, +16166: _Args...>, bool> = false> +16166: constexpr explicit +16166: _Optional_base(in_place_t, +16166: initializer_list<_Up> __il, +16166: _Args&&... __args) +16166: : _M_payload(in_place, __il, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: +16166: constexpr _Optional_base(const _Optional_base& __other) = default; +16166: constexpr _Optional_base(_Optional_base&& __other) = default; +16166: +16166: +16166: _Optional_base& operator=(const _Optional_base&) = default; +16166: _Optional_base& operator=(_Optional_base&&) = default; +16166: +16166: _Optional_payload<_Tp> _M_payload; +16166: }; +16166: +16166: template +16166: class optional; +16166: +16166: template +16166: inline constexpr bool __is_optional_v = false; +16166: template +16166: inline constexpr bool __is_optional_v> = true; +16166: +16166: template +16166: using __converts_from_optional = +16166: __or_&>, +16166: is_constructible<_Tp, optional<_Up>&>, +16166: is_constructible<_Tp, const optional<_Up>&&>, +16166: is_constructible<_Tp, optional<_Up>&&>, +16166: is_convertible&, _Tp>, +16166: is_convertible&, _Tp>, +16166: is_convertible&&, _Tp>, +16166: is_convertible&&, _Tp>>; +16166: +16166: template +16166: using __assigns_from_optional = +16166: __or_&>, +16166: is_assignable<_Tp&, optional<_Up>&>, +16166: is_assignable<_Tp&, const optional<_Up>&&>, +16166: is_assignable<_Tp&, optional<_Up>&&>>; +16166: +16166: +16166: +16166: +16166: template +16166: class optional +16166: : private _Optional_base<_Tp>, +16166: private _Enable_copy_move< +16166: +16166: is_copy_constructible_v<_Tp>, +16166: +16166: __and_v, is_copy_assignable<_Tp>>, +16166: +16166: is_move_constructible_v<_Tp>, +16166: +16166: __and_v, is_move_assignable<_Tp>>, +16166: +16166: optional<_Tp>> +16166: { +16166: static_assert(!is_same_v, nullopt_t>); +16166: static_assert(!is_same_v, in_place_t>); +16166: static_assert(is_object_v<_Tp> && !is_array_v<_Tp>); +16166: +16166: private: +16166: using _Base = _Optional_base<_Tp>; +16166: +16166: +16166: template +16166: using __not_self = __not_>>; +16166: template +16166: using __not_tag = __not_>>; +16166: template +16166: using _Requires = enable_if_t<__and_v<_Cond...>, bool>; +16166: +16166: public: +16166: using value_type = _Tp; +16166: +16166: constexpr optional() noexcept { } +16166: +16166: constexpr optional(nullopt_t) noexcept { } +16166: +16166: +16166: template, __not_tag<_Up>, +16166: is_constructible<_Tp, _Up>, +16166: is_convertible<_Up, _Tp>> = true> +16166: constexpr +16166: optional(_Up&& __t) +16166: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +16166: : _Base(std::in_place, std::forward<_Up>(__t)) { } +16166: +16166: template, __not_tag<_Up>, +16166: is_constructible<_Tp, _Up>, +16166: __not_>> = false> +16166: explicit constexpr +16166: optional(_Up&& __t) +16166: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +16166: : _Base(std::in_place, std::forward<_Up>(__t)) { } +16166: +16166: template>, +16166: is_constructible<_Tp, const _Up&>, +16166: is_convertible, +16166: __not_<__converts_from_optional<_Tp, _Up>>> = true> +16166: constexpr +16166: optional(const optional<_Up>& __t) +16166: noexcept(is_nothrow_constructible_v<_Tp, const _Up&>) +16166: { +16166: if (__t) +16166: emplace(*__t); +16166: } +16166: +16166: template>, +16166: is_constructible<_Tp, const _Up&>, +16166: __not_>, +16166: __not_<__converts_from_optional<_Tp, _Up>>> = false> +16166: explicit constexpr +16166: optional(const optional<_Up>& __t) +16166: noexcept(is_nothrow_constructible_v<_Tp, const _Up&>) +16166: { +16166: if (__t) +16166: emplace(*__t); +16166: } +16166: +16166: template>, +16166: is_constructible<_Tp, _Up>, +16166: is_convertible<_Up, _Tp>, +16166: __not_<__converts_from_optional<_Tp, _Up>>> = true> +16166: constexpr +16166: optional(optional<_Up>&& __t) +16166: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +16166: { +16166: if (__t) +16166: emplace(std::move(*__t)); +16166: } +16166: +16166: template>, +16166: is_constructible<_Tp, _Up>, +16166: __not_>, +16166: __not_<__converts_from_optional<_Tp, _Up>>> = false> +16166: explicit constexpr +16166: optional(optional<_Up>&& __t) +16166: noexcept(is_nothrow_constructible_v<_Tp, _Up>) +16166: { +16166: if (__t) +16166: emplace(std::move(*__t)); +16166: } +16166: +16166: template> = false> +16166: explicit constexpr +16166: optional(in_place_t, _Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Tp, _Args...>) +16166: : _Base(std::in_place, std::forward<_Args>(__args)...) { } +16166: +16166: template&, +16166: _Args...>> = false> +16166: explicit constexpr +16166: optional(in_place_t, initializer_list<_Up> __il, _Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, +16166: _Args...>) +16166: : _Base(std::in_place, __il, std::forward<_Args>(__args)...) { } +16166: +16166: +16166: +16166: optional& +16166: operator=(nullopt_t) noexcept +16166: { +16166: this->_M_reset(); +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: enable_if_t<__and_v<__not_self<_Up>, +16166: __not_<__and_, +16166: is_same<_Tp, decay_t<_Up>>>>, +16166: is_constructible<_Tp, _Up>, +16166: is_assignable<_Tp&, _Up>>, +16166: optional&> +16166: operator=(_Up&& __u) +16166: noexcept(__and_v, +16166: is_nothrow_assignable<_Tp&, _Up>>) +16166: { +16166: if (this->_M_is_engaged()) +16166: this->_M_get() = std::forward<_Up>(__u); +16166: else +16166: this->_M_construct(std::forward<_Up>(__u)); +16166: +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: enable_if_t<__and_v<__not_>, +16166: is_constructible<_Tp, const _Up&>, +16166: is_assignable<_Tp&, const _Up&>, +16166: __not_<__converts_from_optional<_Tp, _Up>>, +16166: __not_<__assigns_from_optional<_Tp, _Up>>>, +16166: optional&> +16166: operator=(const optional<_Up>& __u) +16166: noexcept(__and_v, +16166: is_nothrow_assignable<_Tp&, const _Up&>>) +16166: { +16166: if (__u) +16166: { +16166: if (this->_M_is_engaged()) +16166: this->_M_get() = *__u; +16166: else +16166: this->_M_construct(*__u); +16166: } +16166: else +16166: { +16166: this->_M_reset(); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: enable_if_t<__and_v<__not_>, +16166: is_constructible<_Tp, _Up>, +16166: is_assignable<_Tp&, _Up>, +16166: __not_<__converts_from_optional<_Tp, _Up>>, +16166: __not_<__assigns_from_optional<_Tp, _Up>>>, +16166: optional&> +16166: operator=(optional<_Up>&& __u) +16166: noexcept(__and_v, +16166: is_nothrow_assignable<_Tp&, _Up>>) +16166: { +16166: if (__u) +16166: { +16166: if (this->_M_is_engaged()) +16166: this->_M_get() = std::move(*__u); +16166: else +16166: this->_M_construct(std::move(*__u)); +16166: } +16166: else +16166: { +16166: this->_M_reset(); +16166: } +16166: +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: enable_if_t, _Tp&> +16166: emplace(_Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Tp, _Args...>) +16166: { +16166: this->_M_reset(); +16166: this->_M_construct(std::forward<_Args>(__args)...); +16166: return this->_M_get(); +16166: } +16166: +16166: template +16166: +16166: enable_if_t&, _Args...>, +16166: _Tp&> +16166: emplace(initializer_list<_Up> __il, _Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, +16166: _Args...>) +16166: { +16166: this->_M_reset(); +16166: this->_M_construct(__il, std::forward<_Args>(__args)...); +16166: return this->_M_get(); +16166: } +16166: +16166: +16166: +16166: +16166: void +16166: swap(optional& __other) +16166: noexcept(is_nothrow_move_constructible_v<_Tp> +16166: && is_nothrow_swappable_v<_Tp>) +16166: { +16166: using std::swap; +16166: +16166: if (this->_M_is_engaged() && __other._M_is_engaged()) +16166: swap(this->_M_get(), __other._M_get()); +16166: else if (this->_M_is_engaged()) +16166: { +16166: __other._M_construct(std::move(this->_M_get())); +16166: this->_M_destruct(); +16166: } +16166: else if (__other._M_is_engaged()) +16166: { +16166: this->_M_construct(std::move(__other._M_get())); +16166: __other._M_destruct(); +16166: } +16166: } +16166: +16166: +16166: constexpr const _Tp* +16166: operator->() const noexcept +16166: { return std::__addressof(this->_M_get()); } +16166: +16166: constexpr _Tp* +16166: operator->() noexcept +16166: { return std::__addressof(this->_M_get()); } +16166: +16166: constexpr const _Tp& +16166: operator*() const& noexcept +16166: { return this->_M_get(); } +16166: +16166: constexpr _Tp& +16166: operator*()& noexcept +16166: { return this->_M_get(); } +16166: +16166: constexpr _Tp&& +16166: operator*()&& noexcept +16166: { return std::move(this->_M_get()); } +16166: +16166: constexpr const _Tp&& +16166: operator*() const&& noexcept +16166: { return std::move(this->_M_get()); } +16166: +16166: constexpr explicit operator bool() const noexcept +16166: { return this->_M_is_engaged(); } +16166: +16166: constexpr bool has_value() const noexcept +16166: { return this->_M_is_engaged(); } +16166: +16166: constexpr const _Tp& +16166: value() const& +16166: { +16166: if (this->_M_is_engaged()) +16166: return this->_M_get(); +16166: __throw_bad_optional_access(); +16166: } +16166: +16166: constexpr _Tp& +16166: value()& +16166: { +16166: if (this->_M_is_engaged()) +16166: return this->_M_get(); +16166: __throw_bad_optional_access(); +16166: } +16166: +16166: constexpr _Tp&& +16166: value()&& +16166: { +16166: if (this->_M_is_engaged()) +16166: return std::move(this->_M_get()); +16166: __throw_bad_optional_access(); +16166: } +16166: +16166: constexpr const _Tp&& +16166: value() const&& +16166: { +16166: if (this->_M_is_engaged()) +16166: return std::move(this->_M_get()); +16166: __throw_bad_optional_access(); +16166: } +16166: +16166: template +16166: constexpr _Tp +16166: value_or(_Up&& __u) const& +16166: { +16166: static_assert(is_copy_constructible_v<_Tp>); +16166: static_assert(is_convertible_v<_Up&&, _Tp>); +16166: +16166: if (this->_M_is_engaged()) +16166: return this->_M_get(); +16166: else +16166: return static_cast<_Tp>(std::forward<_Up>(__u)); +16166: } +16166: +16166: template +16166: constexpr _Tp +16166: value_or(_Up&& __u) && +16166: { +16166: static_assert(is_move_constructible_v<_Tp>); +16166: static_assert(is_convertible_v<_Up&&, _Tp>); +16166: +16166: if (this->_M_is_engaged()) +16166: return std::move(this->_M_get()); +16166: else +16166: return static_cast<_Tp>(std::forward<_Up>(__u)); +16166: } +16166: # 1180 "/usr/include/c++/14/optional" 3 +16166: void reset() noexcept { this->_M_reset(); } +16166: +16166: private: +16166: # 1193 "/usr/include/c++/14/optional" 3 +16166: }; +16166: +16166: template +16166: using __optional_relop_t = +16166: enable_if_t::value, bool>; +16166: +16166: template +16166: using __optional_eq_t = __optional_relop_t< +16166: decltype(std::declval() == std::declval()) +16166: >; +16166: +16166: template +16166: using __optional_ne_t = __optional_relop_t< +16166: decltype(std::declval() != std::declval()) +16166: >; +16166: +16166: template +16166: using __optional_lt_t = __optional_relop_t< +16166: decltype(std::declval() < std::declval()) +16166: >; +16166: +16166: template +16166: using __optional_gt_t = __optional_relop_t< +16166: decltype(std::declval() > std::declval()) +16166: >; +16166: +16166: template +16166: using __optional_le_t = __optional_relop_t< +16166: decltype(std::declval() <= std::declval()) +16166: >; +16166: +16166: template +16166: using __optional_ge_t = __optional_relop_t< +16166: decltype(std::declval() >= std::declval()) +16166: >; +16166: +16166: +16166: template +16166: constexpr auto +16166: operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +16166: -> __optional_eq_t<_Tp, _Up> +16166: { +16166: return static_cast(__lhs) == static_cast(__rhs) +16166: && (!__lhs || *__lhs == *__rhs); +16166: } +16166: +16166: template +16166: constexpr auto +16166: operator!=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +16166: -> __optional_ne_t<_Tp, _Up> +16166: { +16166: return static_cast(__lhs) != static_cast(__rhs) +16166: || (static_cast(__lhs) && *__lhs != *__rhs); +16166: } +16166: +16166: template +16166: constexpr auto +16166: operator<(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +16166: -> __optional_lt_t<_Tp, _Up> +16166: { +16166: return static_cast(__rhs) && (!__lhs || *__lhs < *__rhs); +16166: } +16166: +16166: template +16166: constexpr auto +16166: operator>(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +16166: -> __optional_gt_t<_Tp, _Up> +16166: { +16166: return static_cast(__lhs) && (!__rhs || *__lhs > *__rhs); +16166: } +16166: +16166: template +16166: constexpr auto +16166: operator<=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +16166: -> __optional_le_t<_Tp, _Up> +16166: { +16166: return !__lhs || (static_cast(__rhs) && *__lhs <= *__rhs); +16166: } +16166: +16166: template +16166: constexpr auto +16166: operator>=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) +16166: -> __optional_ge_t<_Tp, _Up> +16166: { +16166: return !__rhs || (static_cast(__lhs) && *__lhs >= *__rhs); +16166: } +16166: # 1290 "/usr/include/c++/14/optional" 3 +16166: template +16166: constexpr bool +16166: operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept +16166: { return !__lhs; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr bool +16166: operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept +16166: { return !__rhs; } +16166: +16166: template +16166: constexpr bool +16166: operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept +16166: { return static_cast(__lhs); } +16166: +16166: template +16166: constexpr bool +16166: operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept +16166: { return static_cast(__rhs); } +16166: +16166: template +16166: constexpr bool +16166: operator<(const optional<_Tp>& , nullopt_t) noexcept +16166: { return false; } +16166: +16166: template +16166: constexpr bool +16166: operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept +16166: { return static_cast(__rhs); } +16166: +16166: template +16166: constexpr bool +16166: operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept +16166: { return static_cast(__lhs); } +16166: +16166: template +16166: constexpr bool +16166: operator>(nullopt_t, const optional<_Tp>& ) noexcept +16166: { return false; } +16166: +16166: template +16166: constexpr bool +16166: operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept +16166: { return !__lhs; } +16166: +16166: template +16166: constexpr bool +16166: operator<=(nullopt_t, const optional<_Tp>& ) noexcept +16166: { return true; } +16166: +16166: template +16166: constexpr bool +16166: operator>=(const optional<_Tp>& , nullopt_t) noexcept +16166: { return true; } +16166: +16166: template +16166: constexpr bool +16166: operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept +16166: { return !__rhs; } +16166: +16166: +16166: +16166: template +16166: constexpr auto +16166: operator==(const optional<_Tp>& __lhs, const _Up& __rhs) +16166: -> __optional_eq_t<_Tp, _Up> +16166: { return __lhs && *__lhs == __rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator==(const _Up& __lhs, const optional<_Tp>& __rhs) +16166: -> __optional_eq_t<_Up, _Tp> +16166: { return __rhs && __lhs == *__rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator!=(const optional<_Tp>& __lhs, const _Up& __rhs) +16166: -> __optional_ne_t<_Tp, _Up> +16166: { return !__lhs || *__lhs != __rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator!=(const _Up& __lhs, const optional<_Tp>& __rhs) +16166: -> __optional_ne_t<_Up, _Tp> +16166: { return !__rhs || __lhs != *__rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator<(const optional<_Tp>& __lhs, const _Up& __rhs) +16166: -> __optional_lt_t<_Tp, _Up> +16166: { return !__lhs || *__lhs < __rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator<(const _Up& __lhs, const optional<_Tp>& __rhs) +16166: -> __optional_lt_t<_Up, _Tp> +16166: { return __rhs && __lhs < *__rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator>(const optional<_Tp>& __lhs, const _Up& __rhs) +16166: -> __optional_gt_t<_Tp, _Up> +16166: { return __lhs && *__lhs > __rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator>(const _Up& __lhs, const optional<_Tp>& __rhs) +16166: -> __optional_gt_t<_Up, _Tp> +16166: { return !__rhs || __lhs > *__rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator<=(const optional<_Tp>& __lhs, const _Up& __rhs) +16166: -> __optional_le_t<_Tp, _Up> +16166: { return !__lhs || *__lhs <= __rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator<=(const _Up& __lhs, const optional<_Tp>& __rhs) +16166: -> __optional_le_t<_Up, _Tp> +16166: { return __rhs && __lhs <= *__rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator>=(const optional<_Tp>& __lhs, const _Up& __rhs) +16166: -> __optional_ge_t<_Tp, _Up> +16166: { return __lhs && *__lhs >= __rhs; } +16166: +16166: template +16166: constexpr auto +16166: operator>=(const _Up& __lhs, const optional<_Tp>& __rhs) +16166: -> __optional_ge_t<_Up, _Tp> +16166: { return !__rhs || __lhs >= *__rhs; } +16166: # 1443 "/usr/include/c++/14/optional" 3 +16166: template +16166: +16166: inline enable_if_t && is_swappable_v<_Tp>> +16166: swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs) +16166: noexcept(noexcept(__lhs.swap(__rhs))) +16166: { __lhs.swap(__rhs); } +16166: +16166: template +16166: enable_if_t && is_swappable_v<_Tp>)> +16166: swap(optional<_Tp>&, optional<_Tp>&) = delete; +16166: +16166: template +16166: constexpr +16166: enable_if_t, _Tp>, +16166: optional>> +16166: make_optional(_Tp&& __t) +16166: noexcept(is_nothrow_constructible_v>, _Tp>) +16166: { return optional>{ std::forward<_Tp>(__t) }; } +16166: +16166: template +16166: constexpr +16166: enable_if_t, +16166: optional<_Tp>> +16166: make_optional(_Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Tp, _Args...>) +16166: { return optional<_Tp>{ in_place, std::forward<_Args>(__args)... }; } +16166: +16166: template +16166: constexpr +16166: enable_if_t&, _Args...>, +16166: optional<_Tp>> +16166: make_optional(initializer_list<_Up> __il, _Args&&... __args) +16166: noexcept(is_nothrow_constructible_v<_Tp, initializer_list<_Up>&, _Args...>) +16166: { return optional<_Tp>{ in_place, __il, std::forward<_Args>(__args)... }; } +16166: +16166: +16166: +16166: template, +16166: bool = __poison_hash<_Up>::__enable_hash_call> +16166: struct __optional_hash_call_base +16166: { +16166: size_t +16166: operator()(const optional<_Tp>& __t) const +16166: noexcept(noexcept(hash<_Up>{}(*__t))) +16166: { +16166: +16166: +16166: constexpr size_t __magic_disengaged_hash = static_cast(-3333); +16166: return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash; +16166: } +16166: }; +16166: +16166: template +16166: struct __optional_hash_call_base<_Tp, _Up, false> {}; +16166: +16166: template +16166: struct hash> +16166: : private __poison_hash>, +16166: public __optional_hash_call_base<_Tp> +16166: { +16166: using result_type [[__deprecated__]] = size_t; +16166: using argument_type [[__deprecated__]] = optional<_Tp>; +16166: }; +16166: +16166: template +16166: struct __is_fast_hash>> : __is_fast_hash> +16166: { }; +16166: +16166: +16166: +16166: +16166: template optional(_Tp) -> optional<_Tp>; +16166: +16166: +16166: +16166: } +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +16166: +16166: # 1 "/usr/include/c++/14/utility" 1 3 +16166: # 58 "/usr/include/c++/14/utility" 3 +16166: +16166: # 59 "/usr/include/c++/14/utility" 3 +16166: # 68 "/usr/include/c++/14/utility" 3 +16166: # 1 "/usr/include/c++/14/bits/stl_relops.h" 1 3 +16166: # 62 "/usr/include/c++/14/bits/stl_relops.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: namespace rel_ops +16166: { +16166: # 86 "/usr/include/c++/14/bits/stl_relops.h" 3 +16166: template +16166: inline bool +16166: operator!=(const _Tp& __x, const _Tp& __y) +16166: { return !(__x == __y); } +16166: # 99 "/usr/include/c++/14/bits/stl_relops.h" 3 +16166: template +16166: inline bool +16166: operator>(const _Tp& __x, const _Tp& __y) +16166: { return __y < __x; } +16166: # 112 "/usr/include/c++/14/bits/stl_relops.h" 3 +16166: template +16166: inline bool +16166: operator<=(const _Tp& __x, const _Tp& __y) +16166: { return !(__y < __x); } +16166: # 125 "/usr/include/c++/14/bits/stl_relops.h" 3 +16166: template +16166: inline bool +16166: operator>=(const _Tp& __x, const _Tp& __y) +16166: { return !(__x < __y); } +16166: } +16166: +16166: +16166: } +16166: # 69 "/usr/include/c++/14/utility" 2 3 +16166: # 96 "/usr/include/c++/14/utility" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 97 "/usr/include/c++/14/utility" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: +16166: inline _Tp +16166: exchange(_Tp& __obj, _Up&& __new_val) +16166: noexcept(__and_, +16166: is_nothrow_assignable<_Tp&, _Up>>::value) +16166: { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } +16166: +16166: +16166: +16166: template +16166: [[nodiscard]] +16166: constexpr add_const_t<_Tp>& +16166: as_const(_Tp& __t) noexcept +16166: { return __t; } +16166: +16166: template +16166: void as_const(const _Tp&&) = delete; +16166: # 230 "/usr/include/c++/14/utility" 3 +16166: +16166: } +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rocksdb_namespace.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" 1 +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" +16166: +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 1 +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 66 "/usr/include/assert.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: extern void __assert_fail (const char *__assertion, const char *__file, +16166: unsigned int __line, const char *__function) +16166: noexcept (true) __attribute__ ((__noreturn__)); +16166: +16166: +16166: extern void __assert_perror_fail (int __errnum, const char *__file, +16166: unsigned int __line, const char *__function) +16166: noexcept (true) __attribute__ ((__noreturn__)); +16166: +16166: +16166: +16166: +16166: extern void __assert (const char *__assertion, const char *__file, int __line) +16166: noexcept (true) __attribute__ ((__noreturn__)); +16166: +16166: +16166: } +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +16166: +16166: # 1 "/usr/include/c++/14/cstdio" 1 3 +16166: # 39 "/usr/include/c++/14/cstdio" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdio" 3 +16166: # 24 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +16166: # 1 "/usr/include/c++/14/cstring" 1 3 +16166: # 39 "/usr/include/c++/14/cstring" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstring" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 43 "/usr/include/c++/14/cstring" 2 3 +16166: # 1 "/usr/include/string.h" 1 3 4 +16166: # 26 "/usr/include/string.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +16166: # 27 "/usr/include/string.h" 2 3 4 +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 34 "/usr/include/string.h" 2 3 4 +16166: # 43 "/usr/include/string.h" 3 4 +16166: extern void *memcpy (void *__restrict __dest, const void *__restrict __src, +16166: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern void *memmove (void *__dest, const void *__src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: extern void *memccpy (void *__restrict __dest, const void *__restrict __src, +16166: int __c, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); +16166: +16166: +16166: +16166: +16166: extern void *memset (void *__s, int __c, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int memcmp (const void *__s1, const void *__s2, size_t __n) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: # 80 "/usr/include/string.h" 3 4 +16166: extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern "C++" +16166: { +16166: extern void *memchr (void *__s, int __c, size_t __n) +16166: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: extern const void *memchr (const void *__s, int __c, size_t __n) +16166: noexcept (true) __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) void * +16166: memchr (void *__s, int __c, size_t __n) noexcept (true) +16166: { +16166: return __builtin_memchr (__s, __c, __n); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const void * +16166: memchr (const void *__s, int __c, size_t __n) noexcept (true) +16166: { +16166: return __builtin_memchr (__s, __c, __n); +16166: } +16166: +16166: } +16166: # 115 "/usr/include/string.h" 3 4 +16166: extern "C++" void *rawmemchr (void *__s, int __c) +16166: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: extern "C++" const void *rawmemchr (const void *__s, int __c) +16166: noexcept (true) __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" void *memrchr (void *__s, int __c, size_t __n) +16166: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__access__ (__read_only__, 1, 3))); +16166: extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) +16166: noexcept (true) __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__access__ (__read_only__, 1, 3))); +16166: # 141 "/usr/include/string.h" 3 4 +16166: extern char *strcpy (char *__restrict __dest, const char *__restrict __src) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern char *strncpy (char *__restrict __dest, +16166: const char *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern char *strcat (char *__restrict __dest, const char *__restrict __src) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern char *strncat (char *__restrict __dest, const char *__restrict __src, +16166: size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int strcmp (const char *__s1, const char *__s2) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern int strncmp (const char *__s1, const char *__s2, size_t __n) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int strcoll (const char *__s1, const char *__s2) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: extern size_t strxfrm (char *__restrict __dest, +16166: const char *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); +16166: +16166: +16166: extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, +16166: locale_t __l) noexcept (true) __attribute__ ((__nonnull__ (2, 4))) +16166: __attribute__ ((__access__ (__write_only__, 1, 3))); +16166: +16166: +16166: +16166: +16166: +16166: extern char *strdup (const char *__s) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *strndup (const char *__string, size_t __n) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +16166: # 224 "/usr/include/string.h" 3 4 +16166: extern "C++" +16166: { +16166: extern char *strchr (char *__s, int __c) +16166: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: extern const char *strchr (const char *__s, int __c) +16166: noexcept (true) __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +16166: strchr (char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_strchr (__s, __c); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +16166: strchr (const char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_strchr (__s, __c); +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" +16166: { +16166: extern char *strrchr (char *__s, int __c) +16166: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: extern const char *strrchr (const char *__s, int __c) +16166: noexcept (true) __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +16166: strrchr (char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_strrchr (__s, __c); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +16166: strrchr (const char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_strrchr (__s, __c); +16166: } +16166: +16166: } +16166: # 281 "/usr/include/string.h" 3 4 +16166: extern "C++" char *strchrnul (char *__s, int __c) +16166: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: extern "C++" const char *strchrnul (const char *__s, int __c) +16166: noexcept (true) __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: # 293 "/usr/include/string.h" 3 4 +16166: extern size_t strcspn (const char *__s, const char *__reject) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern size_t strspn (const char *__s, const char *__accept) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern "C++" +16166: { +16166: extern char *strpbrk (char *__s, const char *__accept) +16166: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: extern const char *strpbrk (const char *__s, const char *__accept) +16166: noexcept (true) __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +16166: strpbrk (char *__s, const char *__accept) noexcept (true) +16166: { +16166: return __builtin_strpbrk (__s, __accept); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +16166: strpbrk (const char *__s, const char *__accept) noexcept (true) +16166: { +16166: return __builtin_strpbrk (__s, __accept); +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" +16166: { +16166: extern char *strstr (char *__haystack, const char *__needle) +16166: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: extern const char *strstr (const char *__haystack, const char *__needle) +16166: noexcept (true) __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +16166: strstr (char *__haystack, const char *__needle) noexcept (true) +16166: { +16166: return __builtin_strstr (__haystack, __needle); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +16166: strstr (const char *__haystack, const char *__needle) noexcept (true) +16166: { +16166: return __builtin_strstr (__haystack, __needle); +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *strtok (char *__restrict __s, const char *__restrict __delim) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern char *__strtok_r (char *__restrict __s, +16166: const char *__restrict __delim, +16166: char **__restrict __save_ptr) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +16166: +16166: extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, +16166: char **__restrict __save_ptr) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" char *strcasestr (char *__haystack, const char *__needle) +16166: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: extern "C++" const char *strcasestr (const char *__haystack, +16166: const char *__needle) +16166: noexcept (true) __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: # 389 "/usr/include/string.h" 3 4 +16166: extern void *memmem (const void *__haystack, size_t __haystacklen, +16166: const void *__needle, size_t __needlelen) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) +16166: __attribute__ ((__access__ (__read_only__, 1, 2))) +16166: __attribute__ ((__access__ (__read_only__, 3, 4))); +16166: +16166: +16166: +16166: extern void *__mempcpy (void *__restrict __dest, +16166: const void *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: extern void *mempcpy (void *__restrict __dest, +16166: const void *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern size_t strlen (const char *__s) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern size_t strnlen (const char *__string, size_t __maxlen) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern char *strerror (int __errnum) noexcept (true); +16166: # 444 "/usr/include/string.h" 3 4 +16166: extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: +16166: +16166: +16166: +16166: extern const char *strerrordesc_np (int __err) noexcept (true); +16166: +16166: extern const char *strerrorname_np (int __err) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern char *strerror_l (int __errnum, locale_t __l) noexcept (true); +16166: +16166: +16166: +16166: # 1 "/usr/include/strings.h" 1 3 4 +16166: # 23 "/usr/include/strings.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 24 "/usr/include/strings.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: extern int bcmp (const void *__s1, const void *__s2, size_t __n) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern void bcopy (const void *__src, void *__dest, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern void bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern "C++" +16166: { +16166: extern char *index (char *__s, int __c) +16166: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: extern const char *index (const char *__s, int __c) +16166: noexcept (true) __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +16166: index (char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_index (__s, __c); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +16166: index (const char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_index (__s, __c); +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" +16166: { +16166: extern char *rindex (char *__s, int __c) +16166: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: extern const char *rindex (const char *__s, int __c) +16166: noexcept (true) __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) char * +16166: rindex (char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_rindex (__s, __c); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) const char * +16166: rindex (const char *__s, int __c) noexcept (true) +16166: { +16166: return __builtin_rindex (__s, __c); +16166: } +16166: +16166: } +16166: # 104 "/usr/include/strings.h" 3 4 +16166: extern int ffs (int __i) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int ffsl (long int __l) noexcept (true) __attribute__ ((__const__)); +16166: __extension__ extern int ffsll (long long int __ll) +16166: noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern int strcasecmp (const char *__s1, const char *__s2) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); +16166: +16166: +16166: +16166: extern int strncasecmp_l (const char *__s1, const char *__s2, +16166: size_t __n, locale_t __loc) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 1 3 4 +16166: # 22 "/usr/include/arm-linux-gnueabihf/bits/strings_fortified.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +16166: __attribute__ ((__leaf__)) bcopy (const void *__src, void *__dest, size_t __len) noexcept (true) +16166: { +16166: (void) __builtin___memmove_chk (__dest, __src, __len, +16166: __builtin_object_size (__dest, 0)); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +16166: __attribute__ ((__leaf__)) bzero (void *__dest, size_t __len) noexcept (true) +16166: { +16166: (void) __builtin___memset_chk (__dest, '\0', __len, +16166: __builtin_object_size (__dest, 0)); +16166: } +16166: # 145 "/usr/include/strings.h" 2 3 4 +16166: # 463 "/usr/include/string.h" 2 3 4 +16166: +16166: +16166: +16166: extern void explicit_bzero (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: +16166: +16166: +16166: extern char *strsep (char **__restrict __stringp, +16166: const char *__restrict __delim) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern char *strsignal (int __sig) noexcept (true); +16166: +16166: +16166: +16166: extern const char *sigabbrev_np (int __sig) noexcept (true); +16166: +16166: +16166: extern const char *sigdescr_np (int __sig) noexcept (true); +16166: +16166: +16166: +16166: extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern char *__stpncpy (char *__restrict __dest, +16166: const char *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: extern char *stpncpy (char *__restrict __dest, +16166: const char *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern size_t strlcpy (char *__restrict __dest, +16166: const char *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3))); +16166: +16166: +16166: +16166: extern size_t strlcat (char *__restrict __dest, +16166: const char *__restrict __src, size_t __n) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3))); +16166: +16166: +16166: +16166: +16166: extern int strverscmp (const char *__s1, const char *__s2) +16166: noexcept (true) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: extern char *strfry (char *__string) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern void *memfrob (void *__s, size_t __n) noexcept (true) __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__access__ (__read_write__, 1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C++" char *basename (char *__filename) +16166: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); +16166: extern "C++" const char *basename (const char *__filename) +16166: noexcept (true) __asm ("basename") __attribute__ ((__nonnull__ (1))); +16166: # 548 "/usr/include/string.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 1 3 4 +16166: # 25 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +16166: __attribute__ ((__leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) +16166: +16166: { +16166: return __builtin___memcpy_chk (__dest, __src, __len, +16166: __builtin_object_size (__dest, 0)); +16166: } +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +16166: __attribute__ ((__leaf__)) memmove (void *__dest, const void *__src, size_t __len) noexcept (true) +16166: { +16166: return __builtin___memmove_chk (__dest, __src, __len, +16166: __builtin_object_size (__dest, 0)); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +16166: __attribute__ ((__leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) noexcept (true) +16166: +16166: { +16166: return __builtin___mempcpy_chk (__dest, __src, __len, +16166: __builtin_object_size (__dest, 0)); +16166: } +16166: # 56 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * +16166: __attribute__ ((__leaf__)) memset (void *__dest, int __ch, size_t __len) noexcept (true) +16166: { +16166: return __builtin___memset_chk (__dest, __ch, __len, +16166: __builtin_object_size (__dest, 0)); +16166: } +16166: +16166: +16166: +16166: +16166: void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void +16166: __attribute__ ((__leaf__)) explicit_bzero (void *__dest, size_t __len) noexcept (true) +16166: { +16166: __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +16166: __attribute__ ((__leaf__)) strcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) +16166: +16166: +16166: { +16166: return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +16166: __attribute__ ((__leaf__)) stpcpy (char * __restrict __dest, const char *__restrict __src) noexcept (true) +16166: +16166: +16166: { +16166: return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +16166: __attribute__ ((__leaf__)) strncpy (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) +16166: +16166: +16166: { +16166: return __builtin___strncpy_chk (__dest, __src, __len, +16166: __builtin_object_size (__dest, 2 > 1)); +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +16166: __attribute__ ((__leaf__)) stpncpy (char * __dest, const char *__src, size_t __n) noexcept (true) +16166: +16166: +16166: { +16166: return __builtin___stpncpy_chk (__dest, __src, __n, +16166: __builtin_object_size (__dest, 2 > 1)); +16166: } +16166: # 135 "/usr/include/arm-linux-gnueabihf/bits/string_fortified.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +16166: __attribute__ ((__leaf__)) strcat (char * __restrict __dest, const char *__restrict __src) noexcept (true) +16166: +16166: +16166: { +16166: return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * +16166: __attribute__ ((__leaf__)) strncat (char * __restrict __dest, const char *__restrict __src, size_t __len) noexcept (true) +16166: +16166: +16166: { +16166: return __builtin___strncat_chk (__dest, __src, __len, +16166: __builtin_object_size (__dest, 2 > 1)); +16166: } +16166: +16166: +16166: extern size_t __strlcpy_chk (char *__dest, const char *__src, size_t __n, +16166: size_t __destlen) noexcept (true); +16166: extern size_t __strlcpy_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcpy") +16166: +16166: ; +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) strlcpy (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) +16166: +16166: +16166: { +16166: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +16166: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1)) +16166: || __n > __builtin_object_size (__dest, 2 > 1))) +16166: return __strlcpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); +16166: return __strlcpy_alias (__dest, __src, __n); +16166: } +16166: +16166: extern size_t __strlcat_chk (char *__dest, const char *__src, size_t __n, +16166: size_t __destlen) noexcept (true); +16166: extern size_t __strlcat_alias (char *__dest, const char *__src, size_t __n) noexcept (true) __asm__ ("" "strlcat") +16166: +16166: ; +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) strlcat (char * __restrict __dest, const char *__restrict __src, size_t __n) noexcept (true) +16166: +16166: { +16166: if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 +16166: && (!__builtin_constant_p (__n > __builtin_object_size (__dest, 2 > 1)) +16166: || __n > __builtin_object_size (__dest, 2 > 1))) +16166: return __strlcat_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); +16166: return __strlcat_alias (__dest, __src, __n); +16166: } +16166: # 549 "/usr/include/string.h" 2 3 4 +16166: +16166: +16166: +16166: } +16166: # 44 "/usr/include/c++/14/cstring" 2 3 +16166: # 72 "/usr/include/c++/14/cstring" 3 +16166: extern "C++" +16166: { +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: using ::memchr; +16166: using ::memcmp; +16166: using ::memcpy; +16166: using ::memmove; +16166: using ::memset; +16166: using ::strcat; +16166: using ::strcmp; +16166: using ::strcoll; +16166: using ::strcpy; +16166: using ::strcspn; +16166: using ::strerror; +16166: using ::strlen; +16166: using ::strncat; +16166: using ::strncmp; +16166: using ::strncpy; +16166: using ::strspn; +16166: +16166: using ::strtok; +16166: +16166: using ::strxfrm; +16166: using ::strchr; +16166: using ::strpbrk; +16166: using ::strrchr; +16166: using ::strstr; +16166: # 125 "/usr/include/c++/14/cstring" 3 +16166: +16166: } +16166: } +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" +16166: +16166: +16166: +16166: +16166: +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" +16166: namespace rocksdb { +16166: +16166: class Cleanable { +16166: public: +16166: Cleanable(); +16166: +16166: Cleanable(Cleanable&) = delete; +16166: Cleanable& operator=(Cleanable&) = delete; +16166: +16166: +16166: ~Cleanable(); +16166: +16166: +16166: Cleanable(Cleanable&&) noexcept; +16166: Cleanable& operator=(Cleanable&&) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: +16166: using CleanupFunction = void (*)(void* arg1, void* arg2); +16166: +16166: +16166: void RegisterCleanup(CleanupFunction function, void* arg1, void* arg2); +16166: +16166: +16166: +16166: void DelegateCleanupsTo(Cleanable* other); +16166: +16166: +16166: inline void Reset() { +16166: DoCleanup(); +16166: cleanup_.function = nullptr; +16166: cleanup_.next = nullptr; +16166: } +16166: +16166: inline bool HasCleanups() { return cleanup_.function != nullptr; } +16166: +16166: protected: +16166: struct Cleanup { +16166: CleanupFunction function; +16166: void* arg1; +16166: void* arg2; +16166: Cleanup* next; +16166: }; +16166: Cleanup cleanup_; +16166: +16166: void RegisterCleanup(Cleanup* c); +16166: +16166: private: +16166: +16166: +16166: +16166: inline void DoCleanup() { +16166: if (cleanup_.function != nullptr) { +16166: (*cleanup_.function)(cleanup_.arg1, cleanup_.arg2); +16166: for (Cleanup* c = cleanup_.next; c != nullptr;) { +16166: (*c->function)(c->arg1, c->arg2); +16166: Cleanup* next = c->next; +16166: delete c; +16166: c = next; +16166: } +16166: } +16166: } +16166: }; +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cleanable.h" +16166: class SharedCleanablePtr { +16166: public: +16166: +16166: SharedCleanablePtr() {} +16166: +16166: SharedCleanablePtr(const SharedCleanablePtr& from); +16166: SharedCleanablePtr(SharedCleanablePtr&& from) noexcept; +16166: SharedCleanablePtr& operator=(const SharedCleanablePtr& from); +16166: SharedCleanablePtr& operator=(SharedCleanablePtr&& from) noexcept; +16166: +16166: ~SharedCleanablePtr(); +16166: +16166: +16166: void Allocate(); +16166: +16166: void Reset(); +16166: +16166: Cleanable& operator*(); +16166: Cleanable* operator->(); +16166: +16166: Cleanable* get(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: void RegisterCopyWith(Cleanable* target); +16166: +16166: +16166: +16166: +16166: void MoveAsCleanupTo(Cleanable* target); +16166: +16166: private: +16166: struct Impl; +16166: Impl* ptr_ = nullptr; +16166: }; +16166: +16166: } +16166: # 29 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class Slice { +16166: public: +16166: +16166: Slice() : data_(""), size_(0) {} +16166: +16166: +16166: Slice(const char* d, size_t n) : data_(d), size_(n) {} +16166: +16166: +16166: +16166: Slice(const std::string& s) : data_(s.data()), size_(s.size()) {} +16166: +16166: +16166: +16166: Slice(const std::string_view& sv) : data_(sv.data()), size_(sv.size()) {} +16166: +16166: +16166: +16166: Slice(const char* s) : data_(s) { size_ = (s == nullptr) ? 0 : strlen(s); } +16166: +16166: +16166: +16166: Slice(const struct SliceParts& parts, std::string* buf); +16166: +16166: +16166: const char* data() const { return data_; } +16166: +16166: +16166: size_t size() const { return size_; } +16166: +16166: +16166: bool empty() const { return size_ == 0; } +16166: +16166: +16166: +16166: char operator[](size_t n) const { +16166: +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: n < size() +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "n < size()" +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: return data_[n]; +16166: } +16166: +16166: +16166: void clear() { +16166: data_ = ""; +16166: size_ = 0; +16166: } +16166: +16166: +16166: void remove_prefix(size_t n) { +16166: +16166: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: n <= size() +16166: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "n <= size()" +16166: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 80 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: data_ += n; +16166: size_ -= n; +16166: } +16166: +16166: void remove_suffix(size_t n) { +16166: +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: n <= size() +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "n <= size()" +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: size_ -= n; +16166: } +16166: +16166: +16166: +16166: std::string ToString(bool hex = false) const; +16166: +16166: +16166: std::string_view ToStringView() const { +16166: return std::string_view(data_, size_); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool DecodeHex(std::string* result) const; +16166: +16166: +16166: +16166: +16166: +16166: int compare(const Slice& b) const; +16166: +16166: +16166: bool starts_with(const Slice& x) const { +16166: return ((size_ >= x.size_) && (memcmp(data_, x.data_, x.size_) == 0)); +16166: } +16166: +16166: bool ends_with(const Slice& x) const { +16166: return ((size_ >= x.size_) && +16166: (memcmp(data_ + size_ - x.size_, x.data_, x.size_) == 0)); +16166: } +16166: +16166: +16166: size_t difference_offset(const Slice& b) const; +16166: +16166: +16166: const char* data_; +16166: size_t size_; +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class PinnableSlice : public Slice, public Cleanable { +16166: public: +16166: PinnableSlice() { buf_ = &self_space_; } +16166: explicit PinnableSlice(std::string* buf) { buf_ = buf; } +16166: +16166: PinnableSlice(PinnableSlice&& other); +16166: PinnableSlice& operator=(PinnableSlice&& other); +16166: +16166: +16166: PinnableSlice(PinnableSlice&) = delete; +16166: PinnableSlice& operator=(PinnableSlice&) = delete; +16166: +16166: inline void PinSlice(const Slice& s, CleanupFunction f, void* arg1, +16166: void* arg2) { +16166: +16166: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: !pinned_ +16166: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "!pinned_" +16166: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 152 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: pinned_ = true; +16166: data_ = s.data(); +16166: size_ = s.size(); +16166: RegisterCleanup(f, arg1, arg2); +16166: +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: pinned_ +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "pinned_" +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: } +16166: +16166: inline void PinSlice(const Slice& s, Cleanable* cleanable) { +16166: +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: !pinned_ +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "!pinned_" +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: pinned_ = true; +16166: data_ = s.data(); +16166: size_ = s.size(); +16166: if (cleanable != nullptr) { +16166: cleanable->DelegateCleanupsTo(this); +16166: } +16166: +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: pinned_ +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "pinned_" +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: } +16166: +16166: inline void PinSelf(const Slice& slice) { +16166: +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: !pinned_ +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "!pinned_" +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: buf_->assign(slice.data(), slice.size()); +16166: data_ = buf_->data(); +16166: size_ = buf_->size(); +16166: +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: !pinned_ +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "!pinned_" +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: } +16166: +16166: inline void PinSelf() { +16166: +16166: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: !pinned_ +16166: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "!pinned_" +16166: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: data_ = buf_->data(); +16166: size_ = buf_->size(); +16166: +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: !pinned_ +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "!pinned_" +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: } +16166: +16166: void remove_suffix(size_t n) { +16166: +16166: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: n <= size() +16166: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "n <= size()" +16166: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 187 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: if (pinned_) { +16166: size_ -= n; +16166: } else { +16166: buf_->erase(size() - n, n); +16166: PinSelf(); +16166: } +16166: } +16166: +16166: void remove_prefix(size_t n) { +16166: +16166: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: n <= size() +16166: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "n <= size()" +16166: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 197 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: if (pinned_) { +16166: data_ += n; +16166: size_ -= n; +16166: } else { +16166: buf_->erase(0, n); +16166: PinSelf(); +16166: } +16166: } +16166: +16166: void Reset() { +16166: Cleanable::Reset(); +16166: pinned_ = false; +16166: size_ = 0; +16166: } +16166: +16166: inline std::string* GetSelf() { return buf_; } +16166: +16166: inline bool IsPinned() const { return pinned_; } +16166: +16166: private: +16166: friend class PinnableSlice4Test; +16166: std::string self_space_; +16166: std::string* buf_; +16166: bool pinned_ = false; +16166: }; +16166: +16166: +16166: +16166: struct SliceParts { +16166: SliceParts(const Slice* _parts, int _num_parts) +16166: : parts(_parts), num_parts(_num_parts) {} +16166: SliceParts() : parts(nullptr), num_parts(0) {} +16166: +16166: const Slice* parts; +16166: int num_parts; +16166: }; +16166: +16166: inline bool operator==(const Slice& x, const Slice& y) { +16166: return ((x.size() == y.size()) && +16166: (memcmp(x.data(), y.data(), x.size()) == 0)); +16166: } +16166: +16166: inline bool operator!=(const Slice& x, const Slice& y) { return !(x == y); } +16166: +16166: inline int Slice::compare(const Slice& b) const { +16166: +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: (static_cast ( +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: data_ != nullptr && b.data_ != nullptr +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: "data_ != nullptr && b.data_ != nullptr" +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice.h" +16166: ; +16166: const size_t min_len = (size_ < b.size_) ? size_ : b.size_; +16166: int r = memcmp(data_, b.data_, min_len); +16166: if (r == 0) { +16166: if (size_ < b.size_) +16166: r = -1; +16166: else if (size_ > b.size_) +16166: r = +1; +16166: } +16166: return r; +16166: } +16166: +16166: inline size_t Slice::difference_offset(const Slice& b) const { +16166: size_t off = 0; +16166: const size_t len = (size_ < b.size_) ? size_ : b.size_; +16166: for (; off < len; off++) { +16166: if (data_[off] != b.data_[off]) break; +16166: } +16166: return off; +16166: } +16166: +16166: } +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/status.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class Status { +16166: public: +16166: +16166: Status() +16166: : code_(kOk), +16166: subcode_(kNone), +16166: sev_(kNoError), +16166: retryable_(false), +16166: data_loss_(false), +16166: scope_(0), +16166: state_(nullptr) {} +16166: ~Status() { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: Status(const Status& s); +16166: Status& operator=(const Status& s); +16166: Status(Status&& s) noexcept; +16166: Status& operator=(Status&& s) noexcept; +16166: bool operator==(const Status& rhs) const; +16166: bool operator!=(const Status& rhs) const; +16166: +16166: +16166: +16166: +16166: inline void PermitUncheckedError() const { MarkChecked(); } +16166: +16166: inline void MustCheck() const { +16166: +16166: +16166: +16166: } +16166: +16166: enum Code : unsigned char { +16166: kOk = 0, +16166: kNotFound = 1, +16166: kCorruption = 2, +16166: kNotSupported = 3, +16166: kInvalidArgument = 4, +16166: kIOError = 5, +16166: kMergeInProgress = 6, +16166: kIncomplete = 7, +16166: kShutdownInProgress = 8, +16166: kTimedOut = 9, +16166: kAborted = 10, +16166: kBusy = 11, +16166: kExpired = 12, +16166: kTryAgain = 13, +16166: kCompactionTooLarge = 14, +16166: kColumnFamilyDropped = 15, +16166: kMaxCode +16166: }; +16166: +16166: Code code() const { +16166: MarkChecked(); +16166: return code_; +16166: } +16166: +16166: enum SubCode : unsigned char { +16166: kNone = 0, +16166: kMutexTimeout = 1, +16166: kLockTimeout = 2, +16166: kLockLimit = 3, +16166: kNoSpace = 4, +16166: kDeadlock = 5, +16166: kStaleFile = 6, +16166: kMemoryLimit = 7, +16166: kSpaceLimit = 8, +16166: kPathNotFound = 9, +16166: KMergeOperandsInsufficientCapacity = 10, +16166: kManualCompactionPaused = 11, +16166: kOverwritten = 12, +16166: kTxnNotPrepared = 13, +16166: kIOFenced = 14, +16166: kMergeOperatorFailed = 15, +16166: kMergeOperandThresholdExceeded = 16, +16166: kMaxSubCode +16166: }; +16166: +16166: SubCode subcode() const { +16166: MarkChecked(); +16166: return subcode_; +16166: } +16166: +16166: enum Severity : unsigned char { +16166: kNoError = 0, +16166: kSoftError = 1, +16166: kHardError = 2, +16166: kFatalError = 3, +16166: kUnrecoverableError = 4, +16166: kMaxSeverity +16166: }; +16166: +16166: Status(const Status& s, Severity sev); +16166: +16166: Status(Code _code, SubCode _subcode, Severity _sev, const Slice& msg) +16166: : Status(_code, _subcode, msg, "", _sev) {} +16166: +16166: static Status CopyAppendMessage(const Status& s, const Slice& delim, +16166: const Slice& msg); +16166: +16166: Severity severity() const { +16166: MarkChecked(); +16166: return sev_; +16166: } +16166: +16166: +16166: const char* getState() const { +16166: MarkChecked(); +16166: return state_.get(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: Status& UpdateIfOk(Status&& s) { +16166: if (code() == kOk) { +16166: *this = std::move(s); +16166: } else { +16166: +16166: s.PermitUncheckedError(); +16166: } +16166: MustCheck(); +16166: return *this; +16166: } +16166: +16166: Status& UpdateIfOk(const Status& s) { +16166: return UpdateIfOk(std::forward(Status(s))); +16166: } +16166: +16166: +16166: static Status OK() { return Status(); } +16166: +16166: +16166: +16166: +16166: +16166: static Status OkOverwritten() { return Status(kOk, kOverwritten); } +16166: +16166: +16166: +16166: +16166: +16166: static Status OkMergeOperandThresholdExceeded() { +16166: return Status(kOk, kMergeOperandThresholdExceeded); +16166: } +16166: +16166: +16166: static Status NotFound(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kNotFound, msg, msg2); +16166: } +16166: +16166: +16166: static Status NotFound(SubCode msg = kNone) { return Status(kNotFound, msg); } +16166: +16166: static Status NotFound(SubCode sc, const Slice& msg, +16166: const Slice& msg2 = Slice()) { +16166: return Status(kNotFound, sc, msg, msg2); +16166: } +16166: +16166: static Status Corruption(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kCorruption, msg, msg2); +16166: } +16166: static Status Corruption(SubCode msg = kNone) { +16166: return Status(kCorruption, msg); +16166: } +16166: +16166: static Status NotSupported(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kNotSupported, msg, msg2); +16166: } +16166: static Status NotSupported(SubCode msg = kNone) { +16166: return Status(kNotSupported, msg); +16166: } +16166: +16166: static Status InvalidArgument(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kInvalidArgument, msg, msg2); +16166: } +16166: static Status InvalidArgument(SubCode msg = kNone) { +16166: return Status(kInvalidArgument, msg); +16166: } +16166: +16166: static Status IOError(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kIOError, msg, msg2); +16166: } +16166: static Status IOError(SubCode msg = kNone) { return Status(kIOError, msg); } +16166: +16166: static Status MergeInProgress(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kMergeInProgress, msg, msg2); +16166: } +16166: static Status MergeInProgress(SubCode msg = kNone) { +16166: return Status(kMergeInProgress, msg); +16166: } +16166: +16166: static Status Incomplete(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kIncomplete, msg, msg2); +16166: } +16166: static Status Incomplete(SubCode msg = kNone) { +16166: return Status(kIncomplete, msg); +16166: } +16166: +16166: static Status ShutdownInProgress(SubCode msg = kNone) { +16166: return Status(kShutdownInProgress, msg); +16166: } +16166: static Status ShutdownInProgress(const Slice& msg, +16166: const Slice& msg2 = Slice()) { +16166: return Status(kShutdownInProgress, msg, msg2); +16166: } +16166: static Status Aborted(SubCode msg = kNone) { return Status(kAborted, msg); } +16166: static Status Aborted(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kAborted, msg, msg2); +16166: } +16166: +16166: static Status Busy(SubCode msg = kNone) { return Status(kBusy, msg); } +16166: static Status Busy(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kBusy, msg, msg2); +16166: } +16166: +16166: static Status TimedOut(SubCode msg = kNone) { return Status(kTimedOut, msg); } +16166: static Status TimedOut(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kTimedOut, msg, msg2); +16166: } +16166: +16166: static Status Expired(SubCode msg = kNone) { return Status(kExpired, msg); } +16166: static Status Expired(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kExpired, msg, msg2); +16166: } +16166: +16166: static Status TryAgain(SubCode msg = kNone) { return Status(kTryAgain, msg); } +16166: static Status TryAgain(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kTryAgain, msg, msg2); +16166: } +16166: +16166: static Status CompactionTooLarge(SubCode msg = kNone) { +16166: return Status(kCompactionTooLarge, msg); +16166: } +16166: static Status CompactionTooLarge(const Slice& msg, +16166: const Slice& msg2 = Slice()) { +16166: return Status(kCompactionTooLarge, msg, msg2); +16166: } +16166: +16166: static Status ColumnFamilyDropped(SubCode msg = kNone) { +16166: return Status(kColumnFamilyDropped, msg); +16166: } +16166: +16166: static Status ColumnFamilyDropped(const Slice& msg, +16166: const Slice& msg2 = Slice()) { +16166: return Status(kColumnFamilyDropped, msg, msg2); +16166: } +16166: +16166: static Status NoSpace() { return Status(kIOError, kNoSpace); } +16166: static Status NoSpace(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kIOError, kNoSpace, msg, msg2); +16166: } +16166: +16166: static Status MemoryLimit() { return Status(kAborted, kMemoryLimit); } +16166: static Status MemoryLimit(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kAborted, kMemoryLimit, msg, msg2); +16166: } +16166: +16166: static Status SpaceLimit() { return Status(kIOError, kSpaceLimit); } +16166: static Status SpaceLimit(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kIOError, kSpaceLimit, msg, msg2); +16166: } +16166: +16166: static Status PathNotFound() { return Status(kIOError, kPathNotFound); } +16166: static Status PathNotFound(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kIOError, kPathNotFound, msg, msg2); +16166: } +16166: +16166: static Status TxnNotPrepared() { +16166: return Status(kInvalidArgument, kTxnNotPrepared); +16166: } +16166: static Status TxnNotPrepared(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return Status(kInvalidArgument, kTxnNotPrepared, msg, msg2); +16166: } +16166: +16166: +16166: bool ok() const { +16166: MarkChecked(); +16166: return code() == kOk; +16166: } +16166: +16166: +16166: +16166: bool IsOkOverwritten() const { +16166: MarkChecked(); +16166: return code() == kOk && subcode() == kOverwritten; +16166: } +16166: +16166: +16166: +16166: bool IsOkMergeOperandThresholdExceeded() const { +16166: MarkChecked(); +16166: return code() == kOk && subcode() == kMergeOperandThresholdExceeded; +16166: } +16166: +16166: +16166: bool IsNotFound() const { +16166: MarkChecked(); +16166: return code() == kNotFound; +16166: } +16166: +16166: +16166: bool IsCorruption() const { +16166: MarkChecked(); +16166: return code() == kCorruption; +16166: } +16166: +16166: +16166: bool IsNotSupported() const { +16166: MarkChecked(); +16166: return code() == kNotSupported; +16166: } +16166: +16166: +16166: bool IsInvalidArgument() const { +16166: MarkChecked(); +16166: return code() == kInvalidArgument; +16166: } +16166: +16166: +16166: bool IsIOError() const { +16166: MarkChecked(); +16166: return code() == kIOError; +16166: } +16166: +16166: +16166: bool IsMergeInProgress() const { +16166: MarkChecked(); +16166: return code() == kMergeInProgress; +16166: } +16166: +16166: +16166: bool IsIncomplete() const { +16166: MarkChecked(); +16166: return code() == kIncomplete; +16166: } +16166: +16166: +16166: bool IsShutdownInProgress() const { +16166: MarkChecked(); +16166: return code() == kShutdownInProgress; +16166: } +16166: +16166: bool IsTimedOut() const { +16166: MarkChecked(); +16166: return code() == kTimedOut; +16166: } +16166: +16166: bool IsAborted() const { +16166: MarkChecked(); +16166: return code() == kAborted; +16166: } +16166: +16166: bool IsLockLimit() const { +16166: MarkChecked(); +16166: return code() == kAborted && subcode() == kLockLimit; +16166: } +16166: +16166: +16166: +16166: bool IsBusy() const { +16166: MarkChecked(); +16166: return code() == kBusy; +16166: } +16166: +16166: bool IsDeadlock() const { +16166: MarkChecked(); +16166: return code() == kBusy && subcode() == kDeadlock; +16166: } +16166: +16166: +16166: bool IsExpired() const { +16166: MarkChecked(); +16166: return code() == kExpired; +16166: } +16166: +16166: +16166: +16166: +16166: bool IsTryAgain() const { +16166: MarkChecked(); +16166: return code() == kTryAgain; +16166: } +16166: +16166: +16166: bool IsCompactionTooLarge() const { +16166: MarkChecked(); +16166: return code() == kCompactionTooLarge; +16166: } +16166: +16166: +16166: bool IsColumnFamilyDropped() const { +16166: MarkChecked(); +16166: return code() == kColumnFamilyDropped; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool IsNoSpace() const { +16166: MarkChecked(); +16166: return (code() == kIOError) && (subcode() == kNoSpace); +16166: } +16166: +16166: +16166: +16166: +16166: bool IsMemoryLimit() const { +16166: MarkChecked(); +16166: return (code() == kAborted) && (subcode() == kMemoryLimit); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: bool IsPathNotFound() const { +16166: MarkChecked(); +16166: return (code() == kIOError || code() == kNotFound) && +16166: (subcode() == kPathNotFound); +16166: } +16166: +16166: +16166: +16166: bool IsManualCompactionPaused() const { +16166: MarkChecked(); +16166: return (code() == kIncomplete) && (subcode() == kManualCompactionPaused); +16166: } +16166: +16166: +16166: bool IsTxnNotPrepared() const { +16166: MarkChecked(); +16166: return (code() == kInvalidArgument) && (subcode() == kTxnNotPrepared); +16166: } +16166: +16166: +16166: bool IsIOFenced() const { +16166: MarkChecked(); +16166: return (code() == kIOError) && (subcode() == kIOFenced); +16166: } +16166: +16166: +16166: +16166: std::string ToString() const; +16166: +16166: protected: +16166: Code code_; +16166: SubCode subcode_; +16166: Severity sev_; +16166: bool retryable_; +16166: bool data_loss_; +16166: unsigned char scope_; +16166: +16166: +16166: std::unique_ptr state_; +16166: +16166: +16166: +16166: +16166: explicit Status(Code _code, SubCode _subcode = kNone) +16166: : code_(_code), +16166: subcode_(_subcode), +16166: sev_(kNoError), +16166: retryable_(false), +16166: data_loss_(false), +16166: scope_(0) {} +16166: +16166: explicit Status(Code _code, SubCode _subcode, bool retryable, bool data_loss, +16166: unsigned char scope) +16166: : code_(_code), +16166: subcode_(_subcode), +16166: sev_(kNoError), +16166: retryable_(retryable), +16166: data_loss_(data_loss), +16166: scope_(scope) {} +16166: +16166: Status(Code _code, SubCode _subcode, const Slice& msg, const Slice& msg2, +16166: Severity sev = kNoError); +16166: Status(Code _code, const Slice& msg, const Slice& msg2) +16166: : Status(_code, kNone, msg, msg2) {} +16166: +16166: static std::unique_ptr CopyState(const char* s); +16166: +16166: inline void MarkChecked() const { +16166: +16166: +16166: +16166: } +16166: }; +16166: +16166: inline Status::Status(const Status& s) +16166: : code_(s.code_), +16166: subcode_(s.subcode_), +16166: sev_(s.sev_), +16166: retryable_(s.retryable_), +16166: data_loss_(s.data_loss_), +16166: scope_(s.scope_) { +16166: s.MarkChecked(); +16166: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +16166: } +16166: inline Status::Status(const Status& s, Severity sev) +16166: : code_(s.code_), +16166: subcode_(s.subcode_), +16166: sev_(sev), +16166: retryable_(s.retryable_), +16166: data_loss_(s.data_loss_), +16166: scope_(s.scope_) { +16166: s.MarkChecked(); +16166: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +16166: } +16166: inline Status& Status::operator=(const Status& s) { +16166: if (this != &s) { +16166: s.MarkChecked(); +16166: MustCheck(); +16166: code_ = s.code_; +16166: subcode_ = s.subcode_; +16166: sev_ = s.sev_; +16166: retryable_ = s.retryable_; +16166: data_loss_ = s.data_loss_; +16166: scope_ = s.scope_; +16166: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +16166: } +16166: return *this; +16166: } +16166: +16166: inline Status::Status(Status&& s) noexcept : Status() { +16166: s.MarkChecked(); +16166: *this = std::move(s); +16166: } +16166: +16166: inline Status& Status::operator=(Status&& s) noexcept { +16166: if (this != &s) { +16166: s.MarkChecked(); +16166: MustCheck(); +16166: code_ = std::move(s.code_); +16166: s.code_ = kOk; +16166: subcode_ = std::move(s.subcode_); +16166: s.subcode_ = kNone; +16166: sev_ = std::move(s.sev_); +16166: s.sev_ = kNoError; +16166: retryable_ = std::move(s.retryable_); +16166: s.retryable_ = false; +16166: data_loss_ = std::move(s.data_loss_); +16166: s.data_loss_ = false; +16166: scope_ = std::move(s.scope_); +16166: s.scope_ = 0; +16166: state_ = std::move(s.state_); +16166: } +16166: return *this; +16166: } +16166: +16166: inline bool Status::operator==(const Status& rhs) const { +16166: MarkChecked(); +16166: rhs.MarkChecked(); +16166: return (code_ == rhs.code_); +16166: } +16166: +16166: inline bool Status::operator!=(const Status& rhs) const { +16166: MarkChecked(); +16166: rhs.MarkChecked(); +16166: return !(*this == rhs); +16166: } +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" 2 +16166: +16166: namespace rocksdb { +16166: class Logger; +16166: class ObjectRegistry; +16166: class OptionTypeInfo; +16166: struct ColumnFamilyOptions; +16166: struct ConfigOptions; +16166: struct DBOptions; +16166: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: class Configurable { +16166: protected: +16166: friend class ConfigurableHelper; +16166: struct RegisteredOptions { +16166: +16166: std::string name; +16166: +16166: +16166: +16166: intptr_t opt_offset; +16166: +16166: const std::unordered_map* type_map; +16166: }; +16166: +16166: public: +16166: virtual ~Configurable() {} +16166: # 70 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: template +16166: const T* GetOptions() const { +16166: return GetOptions(T::kName()); +16166: } +16166: template +16166: T* GetOptions() { +16166: return GetOptions(T::kName()); +16166: } +16166: template +16166: const T* GetOptions(const std::string& name) const { +16166: return reinterpret_cast(GetOptionsPtr(name)); +16166: } +16166: template +16166: T* GetOptions(const std::string& name) { +16166: +16166: +16166: return reinterpret_cast(const_cast(GetOptionsPtr(name))); +16166: } +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: Status ConfigureFromMap( +16166: const ConfigOptions& config_options, +16166: const std::unordered_map& opt_map); +16166: Status ConfigureFromMap( +16166: const ConfigOptions& config_options, +16166: const std::unordered_map& opt_map, +16166: std::unordered_map* unused); +16166: # 137 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: Status ConfigureOption(const ConfigOptions& config_options, +16166: const std::string& name, const std::string& value); +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: Status ConfigureFromString(const ConfigOptions& config_options, +16166: const std::string& opts); +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: Status GetOptionString(const ConfigOptions& config_options, +16166: std::string* result) const; +16166: +16166: +16166: +16166: +16166: +16166: std::string ToString(const ConfigOptions& config_options) const { +16166: return ToString(config_options, ""); +16166: } +16166: std::string ToString(const ConfigOptions& config_options, +16166: const std::string& prefix) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status GetOptionNames(const ConfigOptions& config_options, +16166: std::unordered_set* result) const; +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: virtual Status GetOption(const ConfigOptions& config_options, +16166: const std::string& name, std::string* value) const; +16166: # 212 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: virtual bool AreEquivalent(const ConfigOptions& config_options, +16166: const Configurable* other, +16166: std::string* name) const; +16166: +16166: +16166: +16166: +16166: virtual std::string GetPrintableOptions() const { return ""; } +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: virtual Status PrepareOptions(const ConfigOptions& config_options); +16166: # 259 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: virtual Status ValidateOptions(const DBOptions& db_opts, +16166: const ColumnFamilyOptions& cf_opts) const; +16166: # 276 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: static Status GetOptionsMap( +16166: const std::string& opt_value, const std::string& default_id, +16166: std::string* id, std::unordered_map* options); +16166: +16166: protected: +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: virtual const void* GetOptionsPtr(const std::string& name) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status ParseStringOptions(const ConfigOptions& config_options, +16166: const std::string& opts_str); +16166: # 313 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: virtual Status ConfigureOptions( +16166: const ConfigOptions& config_options, +16166: const std::unordered_map& opts_map, +16166: std::unordered_map* unused); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status ParseOption(const ConfigOptions& config_options, +16166: const OptionTypeInfo& opt_info, +16166: const std::string& opt_name, +16166: const std::string& opt_value, void* opt_ptr); +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: virtual bool OptionsAreEqual(const ConfigOptions& config_options, +16166: const OptionTypeInfo& opt_info, +16166: const std::string& name, +16166: const void* const this_ptr, +16166: const void* const that_ptr, +16166: std::string* bad_name) const; +16166: +16166: +16166: virtual std::string SerializeOptions(const ConfigOptions& config_options, +16166: const std::string& header) const; +16166: +16166: +16166: virtual std::string GetOptionName(const std::string& long_name) const; +16166: # 375 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h" +16166: template +16166: void RegisterOptions( +16166: T* opt_ptr, +16166: const std::unordered_map* opt_map) { +16166: RegisterOptions(T::kName(), opt_ptr, opt_map); +16166: } +16166: void RegisterOptions( +16166: const std::string& name, void* opt_ptr, +16166: const std::unordered_map* opt_map); +16166: +16166: +16166: inline bool HasRegisteredOptions() const { return !options_.empty(); } +16166: +16166: private: +16166: +16166: +16166: +16166: std::vector options_; +16166: }; +16166: } +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: # 56 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +16166: class Customizable : public Configurable { +16166: public: +16166: ~Customizable() override {} +16166: +16166: +16166: virtual const char* Name() const = 0; +16166: +16166: +16166: +16166: +16166: virtual std::string GetId() const { +16166: std::string id = Name(); +16166: return id; +16166: } +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +16166: virtual bool IsInstanceOf(const std::string& name) const { +16166: if (name.empty()) { +16166: return false; +16166: } else if (name == Name()) { +16166: return true; +16166: } else { +16166: const char* nickname = NickName(); +16166: if (nickname != nullptr && name == nickname) { +16166: return true; +16166: } else { +16166: return false; +16166: } +16166: } +16166: } +16166: +16166: const void* GetOptionsPtr(const std::string& name) const override { +16166: const void* ptr = Configurable::GetOptionsPtr(name); +16166: if (ptr != nullptr) { +16166: return ptr; +16166: } else { +16166: const auto inner = Inner(); +16166: if (inner != nullptr) { +16166: return inner->GetOptionsPtr(name); +16166: } else { +16166: return nullptr; +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: const T* CheckedCast() const { +16166: if (IsInstanceOf(T::kClassName())) { +16166: return static_cast(this); +16166: } else { +16166: const auto inner = Inner(); +16166: if (inner != nullptr) { +16166: return inner->CheckedCast(); +16166: } else { +16166: return nullptr; +16166: } +16166: } +16166: } +16166: +16166: template +16166: T* CheckedCast() { +16166: if (IsInstanceOf(T::kClassName())) { +16166: return static_cast(this); +16166: } else { +16166: auto inner = const_cast(Inner()); +16166: if (inner != nullptr) { +16166: return inner->CheckedCast(); +16166: } else { +16166: return nullptr; +16166: } +16166: } +16166: } +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +16166: bool AreEquivalent(const ConfigOptions& config_options, +16166: const Configurable* other, +16166: std::string* mismatch) const override; +16166: +16166: +16166: Status GetOption(const ConfigOptions& config_options, const std::string& name, +16166: std::string* value) const override; +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +16166: static Status GetOptionsMap( +16166: const ConfigOptions& config_options, const Customizable* custom, +16166: const std::string& opt_value, std::string* id, +16166: std::unordered_map* options); +16166: # 195 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +16166: static Status ConfigureNewObject( +16166: const ConfigOptions& config_options, Customizable* object, +16166: const std::unordered_map& options); +16166: +16166: +16166: +16166: +16166: virtual const Customizable* Inner() const { return nullptr; } +16166: +16166: protected: +16166: # 217 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/customizable.h" +16166: std::string GenerateIndividualId() const; +16166: +16166: +16166: +16166: +16166: virtual const char* NickName() const { return ""; } +16166: +16166: std::string GetOptionName(const std::string& long_name) const override; +16166: std::string SerializeOptions(const ConfigOptions& options, +16166: const std::string& prefix) const override; +16166: }; +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: +16166: +16166: +16166: class CompareInterface { +16166: public: +16166: virtual ~CompareInterface() {} +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: virtual int Compare(const Slice& a, const Slice& b) const = 0; +16166: }; +16166: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: class Comparator : public Customizable, public CompareInterface { +16166: public: +16166: Comparator() : timestamp_size_(0) {} +16166: +16166: Comparator(size_t ts_sz) : timestamp_size_(ts_sz) {} +16166: +16166: Comparator(const Comparator& orig) : timestamp_size_(orig.timestamp_size_) {} +16166: +16166: Comparator& operator=(const Comparator& rhs) { +16166: if (this != &rhs) { +16166: timestamp_size_ = rhs.timestamp_size_; +16166: } +16166: return *this; +16166: } +16166: +16166: ~Comparator() override {} +16166: +16166: static Status CreateFromString(const ConfigOptions& opts, +16166: const std::string& id, +16166: const Comparator** comp); +16166: static const char* Type() { return "Comparator"; } +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: const char* Name() const override = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool Equal(const Slice& a, const Slice& b) const { +16166: return Compare(a, b) == 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void FindShortestSeparator(std::string* start, +16166: const Slice& limit) const = 0; +16166: +16166: +16166: +16166: +16166: virtual void FindShortSuccessor(std::string* key) const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool IsSameLengthImmediateSuccessor(const Slice& , +16166: const Slice& ) const { +16166: return false; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual bool CanKeysWithDifferentByteContentsBeEqual() const { return true; } +16166: +16166: +16166: +16166: virtual const Comparator* GetRootComparator() const { return this; } +16166: +16166: inline size_t timestamp_size() const { return timestamp_size_; } +16166: +16166: +16166: +16166: +16166: virtual Slice GetMaxTimestamp() const { +16166: if (timestamp_size_ == 0) { +16166: return Slice(); +16166: } +16166: +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +16166: (static_cast ( +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: false +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: "false" +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: ; +16166: return Slice(); +16166: } +16166: +16166: +16166: +16166: +16166: virtual Slice GetMinTimestamp() const { +16166: if (timestamp_size_ == 0) { +16166: return Slice(); +16166: } +16166: +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +16166: (static_cast ( +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: false +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: "false" +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: ; +16166: return Slice(); +16166: } +16166: +16166: +16166: virtual std::string TimestampToString(const Slice& ) const { +16166: return ""; +16166: } +16166: +16166: int CompareWithoutTimestamp(const Slice& a, const Slice& b) const { +16166: return CompareWithoutTimestamp(a, true, b, true); +16166: } +16166: # 163 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/comparator.h" +16166: virtual int CompareTimestamp(const Slice& , +16166: const Slice& ) const { +16166: return 0; +16166: } +16166: +16166: virtual int CompareWithoutTimestamp(const Slice& a, bool , +16166: const Slice& b, bool ) const { +16166: return Compare(a, b); +16166: } +16166: +16166: virtual bool EqualWithoutTimestamp(const Slice& a, const Slice& b) const { +16166: return 0 == +16166: CompareWithoutTimestamp(a, true, b, true); +16166: } +16166: +16166: private: +16166: size_t timestamp_size_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: const Comparator* BytewiseComparator(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: const Comparator* ReverseBytewiseComparator(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: const Comparator* BytewiseComparatorWithU64Ts(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: const Comparator* ReverseBytewiseComparatorWithU64Ts(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status DecodeU64Ts(const Slice& ts, uint64_t* int_ts); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Slice EncodeU64Ts(uint64_t ts, std::string* ts_buf); +16166: +16166: +16166: +16166: +16166: Slice MaxU64Ts(); +16166: +16166: +16166: +16166: +16166: Slice MinU64Ts(); +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" 1 +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: struct ConfigOptions; +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +16166: class SliceTransform : public Customizable { +16166: public: +16166: virtual ~SliceTransform(){} +16166: +16166: +16166: const char* Name() const override = 0; +16166: static const char* Type() { return "SliceTransform"; } +16166: +16166: +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& id, +16166: std::shared_ptr* result); +16166: +16166: +16166: +16166: std::string AsString() const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Slice Transform(const Slice& key) const = 0; +16166: # 71 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +16166: virtual bool InDomain(const Slice& key) const = 0; +16166: +16166: +16166: +16166: virtual bool InRange(const Slice& ) const { return false; } +16166: # 92 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +16166: virtual bool FullLengthEnabled(size_t* ) const { return false; } +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/slice_transform.h" +16166: virtual bool SameResultWhenAppended(const Slice& ) const { +16166: return false; +16166: } +16166: }; +16166: +16166: +16166: +16166: const SliceTransform* NewFixedPrefixTransform(size_t prefix_len); +16166: +16166: +16166: +16166: const SliceTransform* NewCappedPrefixTransform(size_t cap_len); +16166: +16166: +16166: const SliceTransform* NewNoopTransform(); +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/types.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/types.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: using ColumnFamilyId = uint32_t; +16166: +16166: +16166: using SequenceNumber = uint64_t; +16166: +16166: struct TableProperties; +16166: using TablePropertiesCollection = +16166: std::unordered_map>; +16166: +16166: const SequenceNumber kMinUnCommittedSeq = 1; +16166: +16166: enum class TableFileCreationReason { +16166: kFlush, +16166: kCompaction, +16166: kRecovery, +16166: kMisc, +16166: }; +16166: +16166: enum class BlobFileCreationReason { +16166: kFlush, +16166: kCompaction, +16166: kRecovery, +16166: }; +16166: +16166: +16166: +16166: enum FileType { +16166: kWalFile, +16166: kDBLockFile, +16166: kTableFile, +16166: kDescriptorFile, +16166: kCurrentFile, +16166: kTempFile, +16166: kInfoLogFile, +16166: kMetaDatabase, +16166: kIdentityFile, +16166: kOptionsFile, +16166: kBlobFile +16166: }; +16166: +16166: +16166: +16166: enum EntryType { +16166: kEntryPut, +16166: kEntryDelete, +16166: kEntrySingleDelete, +16166: kEntryMerge, +16166: kEntryRangeDeletion, +16166: kEntryBlobIndex, +16166: kEntryDeleteWithTimestamp, +16166: kEntryWideColumnEntity, +16166: kEntryTimedPut, +16166: kEntryOther, +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: struct ParsedEntryInfo { +16166: Slice user_key; +16166: Slice timestamp; +16166: SequenceNumber sequence; +16166: EntryType type; +16166: }; +16166: +16166: enum class WriteStallCause { +16166: +16166: +16166: +16166: kMemtableLimit, +16166: kL0FileCountLimit, +16166: kPendingCompactionBytes, +16166: kCFScopeWriteStallCauseEnumMax, +16166: +16166: +16166: +16166: +16166: +16166: kWriteBufferManagerLimit, +16166: kDBScopeWriteStallCauseEnumMax, +16166: +16166: +16166: +16166: kNone, +16166: }; +16166: +16166: enum class WriteStallCondition { +16166: kDelayed, +16166: kStopped, +16166: +16166: kNormal, +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: enum class Temperature : uint8_t { +16166: kUnknown = 0, +16166: kHot = 0x04, +16166: kWarm = 0x08, +16166: kCold = 0x0C, +16166: kLastTemperature, +16166: }; +16166: +16166: } +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 1 +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" +16166: +16166: # 1 "/usr/include/c++/14/algorithm" 1 3 +16166: # 58 "/usr/include/c++/14/algorithm" 3 +16166: +16166: # 59 "/usr/include/c++/14/algorithm" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_algo.h" 1 3 +16166: # 59 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: # 1 "/usr/include/c++/14/bits/algorithmfwd.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +16166: # 42 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +16166: +16166: # 42 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 195 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +16166: template +16166: +16166: bool +16166: all_of(_IIter, _IIter, _Predicate); +16166: +16166: template +16166: +16166: bool +16166: any_of(_IIter, _IIter, _Predicate); +16166: +16166: +16166: template +16166: +16166: bool +16166: binary_search(_FIter, _FIter, const _Tp&); +16166: +16166: template +16166: +16166: bool +16166: binary_search(_FIter, _FIter, const _Tp&, _Compare); +16166: +16166: +16166: template +16166: constexpr +16166: const _Tp& +16166: clamp(const _Tp&, const _Tp&, const _Tp&); +16166: +16166: template +16166: constexpr +16166: const _Tp& +16166: clamp(const _Tp&, const _Tp&, const _Tp&, _Compare); +16166: +16166: +16166: template +16166: +16166: _OIter +16166: copy(_IIter, _IIter, _OIter); +16166: +16166: template +16166: +16166: _BIter2 +16166: copy_backward(_BIter1, _BIter1, _BIter2); +16166: +16166: +16166: template +16166: +16166: _OIter +16166: copy_if(_IIter, _IIter, _OIter, _Predicate); +16166: +16166: template +16166: +16166: _OIter +16166: copy_n(_IIter, _Size, _OIter); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: pair<_FIter, _FIter> +16166: equal_range(_FIter, _FIter, const _Tp&); +16166: +16166: template +16166: +16166: pair<_FIter, _FIter> +16166: equal_range(_FIter, _FIter, const _Tp&, _Compare); +16166: +16166: template +16166: +16166: void +16166: fill(_FIter, _FIter, const _Tp&); +16166: +16166: template +16166: +16166: _OIter +16166: fill_n(_OIter, _Size, const _Tp&); +16166: +16166: +16166: +16166: template +16166: +16166: _FIter1 +16166: find_end(_FIter1, _FIter1, _FIter2, _FIter2); +16166: +16166: template +16166: +16166: _FIter1 +16166: find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _IIter +16166: find_if_not(_IIter, _IIter, _Predicate); +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: bool +16166: includes(_IIter1, _IIter1, _IIter2, _IIter2); +16166: +16166: template +16166: +16166: bool +16166: includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); +16166: +16166: template +16166: void +16166: inplace_merge(_BIter, _BIter, _BIter); +16166: +16166: template +16166: void +16166: inplace_merge(_BIter, _BIter, _BIter, _Compare); +16166: +16166: +16166: template +16166: +16166: bool +16166: is_heap(_RAIter, _RAIter); +16166: +16166: template +16166: +16166: bool +16166: is_heap(_RAIter, _RAIter, _Compare); +16166: +16166: template +16166: +16166: _RAIter +16166: is_heap_until(_RAIter, _RAIter); +16166: +16166: template +16166: +16166: _RAIter +16166: is_heap_until(_RAIter, _RAIter, _Compare); +16166: +16166: template +16166: +16166: bool +16166: is_partitioned(_IIter, _IIter, _Predicate); +16166: +16166: template +16166: +16166: bool +16166: is_permutation(_FIter1, _FIter1, _FIter2); +16166: +16166: template +16166: +16166: bool +16166: is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); +16166: +16166: template +16166: +16166: bool +16166: is_sorted(_FIter, _FIter); +16166: +16166: template +16166: +16166: bool +16166: is_sorted(_FIter, _FIter, _Compare); +16166: +16166: template +16166: +16166: _FIter +16166: is_sorted_until(_FIter, _FIter); +16166: +16166: template +16166: +16166: _FIter +16166: is_sorted_until(_FIter, _FIter, _Compare); +16166: +16166: +16166: template +16166: +16166: void +16166: iter_swap(_FIter1, _FIter2); +16166: +16166: template +16166: +16166: _FIter +16166: lower_bound(_FIter, _FIter, const _Tp&); +16166: +16166: template +16166: +16166: _FIter +16166: lower_bound(_FIter, _FIter, const _Tp&, _Compare); +16166: +16166: template +16166: +16166: void +16166: make_heap(_RAIter, _RAIter); +16166: +16166: template +16166: +16166: void +16166: make_heap(_RAIter, _RAIter, _Compare); +16166: +16166: template +16166: constexpr +16166: const _Tp& +16166: max(const _Tp&, const _Tp&); +16166: +16166: template +16166: constexpr +16166: const _Tp& +16166: max(const _Tp&, const _Tp&, _Compare); +16166: +16166: +16166: +16166: +16166: template +16166: constexpr +16166: const _Tp& +16166: min(const _Tp&, const _Tp&); +16166: +16166: template +16166: constexpr +16166: const _Tp& +16166: min(const _Tp&, const _Tp&, _Compare); +16166: +16166: +16166: +16166: +16166: template +16166: constexpr +16166: pair +16166: minmax(const _Tp&, const _Tp&); +16166: +16166: template +16166: constexpr +16166: pair +16166: minmax(const _Tp&, const _Tp&, _Compare); +16166: +16166: template +16166: constexpr +16166: pair<_FIter, _FIter> +16166: minmax_element(_FIter, _FIter); +16166: +16166: template +16166: constexpr +16166: pair<_FIter, _FIter> +16166: minmax_element(_FIter, _FIter, _Compare); +16166: +16166: template +16166: constexpr +16166: _Tp +16166: min(initializer_list<_Tp>); +16166: +16166: template +16166: constexpr +16166: _Tp +16166: min(initializer_list<_Tp>, _Compare); +16166: +16166: template +16166: constexpr +16166: _Tp +16166: max(initializer_list<_Tp>); +16166: +16166: template +16166: constexpr +16166: _Tp +16166: max(initializer_list<_Tp>, _Compare); +16166: +16166: template +16166: constexpr +16166: pair<_Tp, _Tp> +16166: minmax(initializer_list<_Tp>); +16166: +16166: template +16166: constexpr +16166: pair<_Tp, _Tp> +16166: minmax(initializer_list<_Tp>, _Compare); +16166: +16166: +16166: +16166: +16166: template +16166: +16166: bool +16166: next_permutation(_BIter, _BIter); +16166: +16166: template +16166: +16166: bool +16166: next_permutation(_BIter, _BIter, _Compare); +16166: +16166: +16166: template +16166: +16166: bool +16166: none_of(_IIter, _IIter, _Predicate); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _RAIter +16166: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); +16166: +16166: template +16166: +16166: _RAIter +16166: partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); +16166: +16166: +16166: +16166: +16166: template +16166: +16166: pair<_OIter1, _OIter2> +16166: partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); +16166: +16166: template +16166: +16166: _FIter +16166: partition_point(_FIter, _FIter, _Predicate); +16166: +16166: +16166: template +16166: +16166: void +16166: pop_heap(_RAIter, _RAIter); +16166: +16166: template +16166: +16166: void +16166: pop_heap(_RAIter, _RAIter, _Compare); +16166: +16166: template +16166: +16166: bool +16166: prev_permutation(_BIter, _BIter); +16166: +16166: template +16166: +16166: bool +16166: prev_permutation(_BIter, _BIter, _Compare); +16166: +16166: template +16166: +16166: void +16166: push_heap(_RAIter, _RAIter); +16166: +16166: template +16166: +16166: void +16166: push_heap(_RAIter, _RAIter, _Compare); +16166: +16166: +16166: +16166: template +16166: +16166: _FIter +16166: remove(_FIter, _FIter, const _Tp&); +16166: +16166: template +16166: +16166: _FIter +16166: remove_if(_FIter, _FIter, _Predicate); +16166: +16166: template +16166: +16166: _OIter +16166: remove_copy(_IIter, _IIter, _OIter, const _Tp&); +16166: +16166: template +16166: +16166: _OIter +16166: remove_copy_if(_IIter, _IIter, _OIter, _Predicate); +16166: +16166: +16166: +16166: template +16166: +16166: _OIter +16166: replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); +16166: +16166: template +16166: +16166: _OIter +16166: replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: reverse(_BIter, _BIter); +16166: +16166: template +16166: +16166: _OIter +16166: reverse_copy(_BIter, _BIter, _OIter); +16166: +16166: inline namespace _V2 { +16166: +16166: template +16166: +16166: _FIter +16166: rotate(_FIter, _FIter, _FIter); +16166: +16166: } +16166: +16166: template +16166: +16166: _OIter +16166: rotate_copy(_FIter, _FIter, _FIter, _OIter); +16166: # 622 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +16166: template +16166: void +16166: shuffle(_RAIter, _RAIter, _UGenerator&&); +16166: +16166: +16166: template +16166: +16166: void +16166: sort_heap(_RAIter, _RAIter); +16166: +16166: template +16166: +16166: void +16166: sort_heap(_RAIter, _RAIter, _Compare); +16166: +16166: +16166: template +16166: _BIter +16166: stable_partition(_BIter, _BIter, _Predicate); +16166: # 657 "/usr/include/c++/14/bits/algorithmfwd.h" 3 +16166: template +16166: +16166: _FIter2 +16166: swap_ranges(_FIter1, _FIter1, _FIter2); +16166: +16166: +16166: +16166: template +16166: +16166: _FIter +16166: unique(_FIter, _FIter); +16166: +16166: template +16166: +16166: _FIter +16166: unique(_FIter, _FIter, _BinaryPredicate); +16166: +16166: +16166: +16166: template +16166: +16166: _FIter +16166: upper_bound(_FIter, _FIter, const _Tp&); +16166: +16166: template +16166: +16166: _FIter +16166: upper_bound(_FIter, _FIter, const _Tp&, _Compare); +16166: +16166: +16166: +16166: template +16166: +16166: _FIter +16166: adjacent_find(_FIter, _FIter); +16166: +16166: template +16166: +16166: _FIter +16166: adjacent_find(_FIter, _FIter, _BinaryPredicate); +16166: +16166: template +16166: +16166: typename iterator_traits<_IIter>::difference_type +16166: count(_IIter, _IIter, const _Tp&); +16166: +16166: template +16166: +16166: typename iterator_traits<_IIter>::difference_type +16166: count_if(_IIter, _IIter, _Predicate); +16166: +16166: template +16166: +16166: bool +16166: equal(_IIter1, _IIter1, _IIter2); +16166: +16166: template +16166: +16166: bool +16166: equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); +16166: +16166: template +16166: +16166: _IIter +16166: find(_IIter, _IIter, const _Tp&); +16166: +16166: template +16166: +16166: _FIter1 +16166: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); +16166: +16166: template +16166: +16166: _FIter1 +16166: find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); +16166: +16166: template +16166: +16166: _IIter +16166: find_if(_IIter, _IIter, _Predicate); +16166: +16166: template +16166: +16166: _Funct +16166: for_each(_IIter, _IIter, _Funct); +16166: +16166: template +16166: +16166: void +16166: generate(_FIter, _FIter, _Generator); +16166: +16166: template +16166: +16166: _OIter +16166: generate_n(_OIter, _Size, _Generator); +16166: +16166: template +16166: +16166: bool +16166: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); +16166: +16166: template +16166: +16166: bool +16166: lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); +16166: +16166: template +16166: constexpr +16166: _FIter +16166: max_element(_FIter, _FIter); +16166: +16166: template +16166: constexpr +16166: _FIter +16166: max_element(_FIter, _FIter, _Compare); +16166: +16166: template +16166: +16166: _OIter +16166: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +16166: +16166: template +16166: +16166: _OIter +16166: merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +16166: +16166: template +16166: constexpr +16166: _FIter +16166: min_element(_FIter, _FIter); +16166: +16166: template +16166: constexpr +16166: _FIter +16166: min_element(_FIter, _FIter, _Compare); +16166: +16166: template +16166: +16166: pair<_IIter1, _IIter2> +16166: mismatch(_IIter1, _IIter1, _IIter2); +16166: +16166: template +16166: +16166: pair<_IIter1, _IIter2> +16166: mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); +16166: +16166: template +16166: +16166: void +16166: nth_element(_RAIter, _RAIter, _RAIter); +16166: +16166: template +16166: +16166: void +16166: nth_element(_RAIter, _RAIter, _RAIter, _Compare); +16166: +16166: template +16166: +16166: void +16166: partial_sort(_RAIter, _RAIter, _RAIter); +16166: +16166: template +16166: +16166: void +16166: partial_sort(_RAIter, _RAIter, _RAIter, _Compare); +16166: +16166: template +16166: +16166: _BIter +16166: partition(_BIter, _BIter, _Predicate); +16166: +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +16166: void +16166: random_shuffle(_RAIter, _RAIter); +16166: +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +16166: void +16166: random_shuffle(_RAIter, _RAIter, +16166: +16166: _Generator&&); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: replace(_FIter, _FIter, const _Tp&, const _Tp&); +16166: +16166: template +16166: +16166: void +16166: replace_if(_FIter, _FIter, _Predicate, const _Tp&); +16166: +16166: template +16166: +16166: _FIter1 +16166: search(_FIter1, _FIter1, _FIter2, _FIter2); +16166: +16166: template +16166: +16166: _FIter1 +16166: search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); +16166: +16166: template +16166: +16166: _FIter +16166: search_n(_FIter, _FIter, _Size, const _Tp&); +16166: +16166: template +16166: +16166: _FIter +16166: search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); +16166: +16166: template +16166: +16166: _OIter +16166: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +16166: +16166: template +16166: +16166: _OIter +16166: set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +16166: +16166: template +16166: +16166: _OIter +16166: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +16166: +16166: template +16166: +16166: _OIter +16166: set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +16166: +16166: template +16166: +16166: _OIter +16166: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +16166: +16166: template +16166: +16166: _OIter +16166: set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, +16166: _OIter, _Compare); +16166: +16166: template +16166: +16166: _OIter +16166: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); +16166: +16166: template +16166: +16166: _OIter +16166: set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); +16166: +16166: template +16166: +16166: void +16166: sort(_RAIter, _RAIter); +16166: +16166: template +16166: +16166: void +16166: sort(_RAIter, _RAIter, _Compare); +16166: +16166: template +16166: void +16166: stable_sort(_RAIter, _RAIter); +16166: +16166: template +16166: void +16166: stable_sort(_RAIter, _RAIter, _Compare); +16166: +16166: template +16166: +16166: _OIter +16166: transform(_IIter, _IIter, _OIter, _UnaryOperation); +16166: +16166: template +16166: +16166: _OIter +16166: transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); +16166: +16166: template +16166: +16166: _OIter +16166: unique_copy(_IIter, _IIter, _OIter); +16166: +16166: template +16166: +16166: _OIter +16166: unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); +16166: +16166: +16166: +16166: } +16166: # 60 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_heap.h" 1 3 +16166: # 63 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _Distance +16166: __is_heap_until(_RandomAccessIterator __first, _Distance __n, +16166: _Compare& __comp) +16166: { +16166: _Distance __parent = 0; +16166: for (_Distance __child = 1; __child < __n; ++__child) +16166: { +16166: if (__comp(__first + __parent, __first + __child)) +16166: return __child; +16166: if ((__child & 1) == 0) +16166: ++__parent; +16166: } +16166: return __n; +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: inline bool +16166: __is_heap(_RandomAccessIterator __first, _Distance __n) +16166: { +16166: __gnu_cxx::__ops::_Iter_less_iter __comp; +16166: return std::__is_heap_until(__first, __n, __comp) == __n; +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) +16166: { +16166: typedef __decltype(__comp) _Cmp; +16166: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +16166: return std::__is_heap_until(__first, __n, __cmp) == __n; +16166: } +16166: +16166: template +16166: +16166: inline bool +16166: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { return std::__is_heap(__first, std::distance(__first, __last)); } +16166: +16166: template +16166: +16166: inline bool +16166: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: return std::__is_heap(__first, std::move(__comp), +16166: std::distance(__first, __last)); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: __push_heap(_RandomAccessIterator __first, +16166: _Distance __holeIndex, _Distance __topIndex, _Tp __value, +16166: _Compare& __comp) +16166: { +16166: _Distance __parent = (__holeIndex - 1) / 2; +16166: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) +16166: { +16166: *(__first + __holeIndex) = std::move(*(__first + __parent)); +16166: __holeIndex = __parent; +16166: __parent = (__holeIndex - 1) / 2; +16166: } +16166: *(__first + __holeIndex) = std::move(__value); +16166: } +16166: # 159 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: typedef typename iterator_traits<_RandomAccessIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _DistanceType; +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: __gnu_cxx::__ops::_Iter_less_val __comp; +16166: _ValueType __value = std::move(*(__last - 1)); +16166: std::__push_heap(__first, _DistanceType((__last - __first) - 1), +16166: _DistanceType(0), std::move(__value), __comp); +16166: } +16166: # 195 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_RandomAccessIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _DistanceType; +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) +16166: __cmp(std::move(__comp)); +16166: _ValueType __value = std::move(*(__last - 1)); +16166: std::__push_heap(__first, _DistanceType((__last - __first) - 1), +16166: _DistanceType(0), std::move(__value), __cmp); +16166: } +16166: +16166: template +16166: +16166: void +16166: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, +16166: _Distance __len, _Tp __value, _Compare __comp) +16166: { +16166: const _Distance __topIndex = __holeIndex; +16166: _Distance __secondChild = __holeIndex; +16166: while (__secondChild < (__len - 1) / 2) +16166: { +16166: __secondChild = 2 * (__secondChild + 1); +16166: if (__comp(__first + __secondChild, +16166: __first + (__secondChild - 1))) +16166: __secondChild--; +16166: *(__first + __holeIndex) = std::move(*(__first + __secondChild)); +16166: __holeIndex = __secondChild; +16166: } +16166: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) +16166: { +16166: __secondChild = 2 * (__secondChild + 1); +16166: *(__first + __holeIndex) = std::move(*(__first + (__secondChild - 1))) +16166: ; +16166: __holeIndex = __secondChild - 1; +16166: } +16166: __decltype(__gnu_cxx::__ops::__iter_comp_val(std::move(__comp))) +16166: __cmp(std::move(__comp)); +16166: std::__push_heap(__first, __holeIndex, __topIndex, +16166: std::move(__value), __cmp); +16166: } +16166: +16166: template +16166: +16166: inline void +16166: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _RandomAccessIterator __result, _Compare& __comp) +16166: { +16166: typedef typename iterator_traits<_RandomAccessIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _DistanceType; +16166: +16166: _ValueType __value = std::move(*__result); +16166: *__result = std::move(*__first); +16166: std::__adjust_heap(__first, _DistanceType(0), +16166: _DistanceType(__last - __first), +16166: std::move(__value), __comp); +16166: } +16166: # 280 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: if (__last - __first > 1) +16166: { +16166: --__last; +16166: __gnu_cxx::__ops::_Iter_less_iter __comp; +16166: std::__pop_heap(__first, __last, __last, __comp); +16166: } +16166: } +16166: # 314 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: pop_heap(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: if (__last - __first > 1) +16166: { +16166: typedef __decltype(__comp) _Cmp; +16166: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +16166: --__last; +16166: std::__pop_heap(__first, __last, __last, __cmp); +16166: } +16166: } +16166: +16166: template +16166: +16166: void +16166: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare& __comp) +16166: { +16166: typedef typename iterator_traits<_RandomAccessIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _DistanceType; +16166: +16166: if (__last - __first < 2) +16166: return; +16166: +16166: const _DistanceType __len = __last - __first; +16166: _DistanceType __parent = (__len - 2) / 2; +16166: while (true) +16166: { +16166: _ValueType __value = std::move(*(__first + __parent)); +16166: std::__adjust_heap(__first, __parent, __len, std::move(__value), +16166: __comp); +16166: if (__parent == 0) +16166: return; +16166: __parent--; +16166: } +16166: } +16166: # 372 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: __gnu_cxx::__ops::_Iter_less_iter __comp; +16166: std::__make_heap(__first, __last, __comp); +16166: } +16166: # 399 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: typedef __decltype(__comp) _Cmp; +16166: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +16166: std::__make_heap(__first, __last, __cmp); +16166: } +16166: +16166: template +16166: +16166: void +16166: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare& __comp) +16166: { +16166: while (__last - __first > 1) +16166: { +16166: --__last; +16166: std::__pop_heap(__first, __last, __last, __comp); +16166: } +16166: } +16166: # 437 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: __gnu_cxx::__ops::_Iter_less_iter __comp; +16166: std::__sort_heap(__first, __last, __comp); +16166: } +16166: # 465 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: +16166: inline void +16166: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: typedef __decltype(__comp) _Cmp; +16166: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +16166: std::__sort_heap(__first, __last, __cmp); +16166: } +16166: # 494 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _RandomAccessIterator +16166: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: __gnu_cxx::__ops::_Iter_less_iter __comp; +16166: return __first + +16166: std::__is_heap_until(__first, std::distance(__first, __last), __comp); +16166: } +16166: # 523 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _RandomAccessIterator +16166: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: typedef __decltype(__comp) _Cmp; +16166: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +16166: return __first +16166: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); +16166: } +16166: # 548 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { return std::is_heap_until(__first, __last) == __last; } +16166: # 562 "/usr/include/c++/14/bits/stl_heap.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: const auto __dist = std::distance(__first, __last); +16166: typedef __decltype(__comp) _Cmp; +16166: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(std::move(__comp)); +16166: return std::__is_heap_until(__first, __dist, __cmp) == __dist; +16166: } +16166: +16166: +16166: +16166: } +16166: # 62 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/uniform_int_dist.h" 1 3 +16166: # 41 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 64 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +16166: namespace __detail +16166: { +16166: +16166: +16166: +16166: template +16166: constexpr bool +16166: _Power_of_2(_Tp __x) +16166: { +16166: return ((__x - 1) & __x) == 0; +16166: } +16166: } +16166: # 87 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +16166: template +16166: class uniform_int_distribution +16166: { +16166: static_assert(std::is_integral<_IntType>::value, +16166: "template argument must be an integral type"); +16166: +16166: public: +16166: +16166: typedef _IntType result_type; +16166: +16166: struct param_type +16166: { +16166: typedef uniform_int_distribution<_IntType> distribution_type; +16166: +16166: param_type() : param_type(0) { } +16166: +16166: explicit +16166: param_type(_IntType __a, +16166: _IntType __b = __gnu_cxx::__int_traits<_IntType>::__max) +16166: : _M_a(__a), _M_b(__b) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: result_type +16166: a() const +16166: { return _M_a; } +16166: +16166: result_type +16166: b() const +16166: { return _M_b; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: private: +16166: _IntType _M_a; +16166: _IntType _M_b; +16166: }; +16166: +16166: public: +16166: +16166: +16166: +16166: uniform_int_distribution() : uniform_int_distribution(0) { } +16166: +16166: +16166: +16166: +16166: explicit +16166: uniform_int_distribution(_IntType __a, +16166: _IntType __b +16166: = __gnu_cxx::__int_traits<_IntType>::__max) +16166: : _M_param(__a, __b) +16166: { } +16166: +16166: explicit +16166: uniform_int_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: reset() { } +16166: +16166: result_type +16166: a() const +16166: { return _M_param.a(); } +16166: +16166: result_type +16166: b() const +16166: { return _M_param.b(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return this->a(); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return this->b(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomBitGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomBitGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomBitGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomBitGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomBitGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const uniform_int_distribution& __d1, +16166: const uniform_int_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomBitGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: +16166: +16166: +16166: template +16166: static _Up +16166: _S_nd(_Urbg& __g, _Up __range) +16166: { +16166: using _Up_traits = __gnu_cxx::__int_traits<_Up>; +16166: using _Wp_traits = __gnu_cxx::__int_traits<_Wp>; +16166: static_assert(!_Up_traits::__is_signed, "U must be unsigned"); +16166: static_assert(!_Wp_traits::__is_signed, "W must be unsigned"); +16166: static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits), +16166: "W must be twice as wide as U"); +16166: +16166: +16166: +16166: +16166: _Wp __product = _Wp(__g()) * _Wp(__range); +16166: _Up __low = _Up(__product); +16166: if (__low < __range) +16166: { +16166: _Up __threshold = -__range % __range; +16166: while (__low < __threshold) +16166: { +16166: __product = _Wp(__g()) * _Wp(__range); +16166: __low = _Up(__product); +16166: } +16166: } +16166: return __product >> _Up_traits::__digits; +16166: } +16166: }; +16166: +16166: template +16166: template +16166: typename uniform_int_distribution<_IntType>::result_type +16166: uniform_int_distribution<_IntType>:: +16166: operator()(_UniformRandomBitGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; +16166: typedef typename make_unsigned::type __utype; +16166: typedef typename common_type<_Gresult_type, __utype>::type __uctype; +16166: +16166: constexpr __uctype __urngmin = _UniformRandomBitGenerator::min(); +16166: constexpr __uctype __urngmax = _UniformRandomBitGenerator::max(); +16166: static_assert( __urngmin < __urngmax, +16166: "Uniform random bit generator must define min() < max()"); +16166: constexpr __uctype __urngrange = __urngmax - __urngmin; +16166: +16166: const __uctype __urange +16166: = __uctype(__param.b()) - __uctype(__param.a()); +16166: +16166: __uctype __ret; +16166: if (__urngrange > __urange) +16166: { +16166: +16166: +16166: const __uctype __uerange = __urange + 1; +16166: # 323 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +16166: if constexpr (__urngrange == 0xffffffffU) +16166: { +16166: +16166: +16166: unsigned int __u32erange = __uerange; +16166: __ret = _S_nd(__urng, __u32erange); +16166: } +16166: else +16166: +16166: { +16166: +16166: const __uctype __scaling = __urngrange / __uerange; +16166: const __uctype __past = __uerange * __scaling; +16166: do +16166: __ret = __uctype(__urng()) - __urngmin; +16166: while (__ret >= __past); +16166: __ret /= __scaling; +16166: } +16166: } +16166: else if (__urngrange < __urange) +16166: { +16166: # 359 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +16166: __uctype __tmp; +16166: do +16166: { +16166: const __uctype __uerngrange = __urngrange + 1; +16166: __tmp = (__uerngrange * operator() +16166: (__urng, param_type(0, __urange / __uerngrange))); +16166: __ret = __tmp + (__uctype(__urng()) - __urngmin); +16166: } +16166: while (__ret > __urange || __ret < __tmp); +16166: } +16166: else +16166: __ret = __uctype(__urng()) - __urngmin; +16166: +16166: return __ret + __param.a(); +16166: } +16166: +16166: +16166: template +16166: template +16166: void +16166: uniform_int_distribution<_IntType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomBitGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; +16166: typedef typename make_unsigned::type __utype; +16166: typedef typename common_type<_Gresult_type, __utype>::type __uctype; +16166: +16166: static_assert( __urng.min() < __urng.max(), +16166: "Uniform random bit generator must define min() < max()"); +16166: +16166: constexpr __uctype __urngmin = __urng.min(); +16166: constexpr __uctype __urngmax = __urng.max(); +16166: constexpr __uctype __urngrange = __urngmax - __urngmin; +16166: const __uctype __urange +16166: = __uctype(__param.b()) - __uctype(__param.a()); +16166: +16166: __uctype __ret; +16166: +16166: if (__urngrange > __urange) +16166: { +16166: if (__detail::_Power_of_2(__urngrange + 1) +16166: && __detail::_Power_of_2(__urange + 1)) +16166: { +16166: while (__f != __t) +16166: { +16166: __ret = __uctype(__urng()) - __urngmin; +16166: *__f++ = (__ret & __urange) + __param.a(); +16166: } +16166: } +16166: else +16166: { +16166: +16166: const __uctype __uerange = __urange + 1; +16166: const __uctype __scaling = __urngrange / __uerange; +16166: const __uctype __past = __uerange * __scaling; +16166: while (__f != __t) +16166: { +16166: do +16166: __ret = __uctype(__urng()) - __urngmin; +16166: while (__ret >= __past); +16166: *__f++ = __ret / __scaling + __param.a(); +16166: } +16166: } +16166: } +16166: else if (__urngrange < __urange) +16166: { +16166: # 444 "/usr/include/c++/14/bits/uniform_int_dist.h" 3 +16166: __uctype __tmp; +16166: while (__f != __t) +16166: { +16166: do +16166: { +16166: constexpr __uctype __uerngrange = __urngrange + 1; +16166: __tmp = (__uerngrange * operator() +16166: (__urng, param_type(0, __urange / __uerngrange))); +16166: __ret = __tmp + (__uctype(__urng()) - __urngmin); +16166: } +16166: while (__ret > __urange || __ret < __tmp); +16166: *__f++ = __ret; +16166: } +16166: } +16166: else +16166: while (__f != __t) +16166: *__f++ = __uctype(__urng()) - __urngmin + __param.a(); +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 66 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cstdlib" 1 3 +16166: # 39 "/usr/include/c++/14/cstdlib" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdlib" 3 +16166: # 72 "/usr/include/c++/14/bits/stl_algo.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b, +16166: _Iterator __c, _Compare __comp) +16166: { +16166: if (__comp(__a, __b)) +16166: { +16166: if (__comp(__b, __c)) +16166: std::iter_swap(__result, __b); +16166: else if (__comp(__a, __c)) +16166: std::iter_swap(__result, __c); +16166: else +16166: std::iter_swap(__result, __a); +16166: } +16166: else if (__comp(__a, __c)) +16166: std::iter_swap(__result, __a); +16166: else if (__comp(__b, __c)) +16166: std::iter_swap(__result, __c); +16166: else +16166: std::iter_swap(__result, __b); +16166: } +16166: +16166: +16166: template +16166: +16166: inline _InputIterator +16166: __find_if_not(_InputIterator __first, _InputIterator __last, +16166: _Predicate __pred) +16166: { +16166: return std::__find_if(__first, __last, +16166: __gnu_cxx::__ops::__negate(__pred), +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _InputIterator +16166: __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) +16166: { +16166: for (; __len; --__len, (void) ++__first) +16166: if (!__pred(__first)) +16166: break; +16166: return __first; +16166: } +16166: # 148 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _ForwardIterator +16166: __search_n_aux(_ForwardIterator __first, _ForwardIterator __last, +16166: _Integer __count, _UnaryPredicate __unary_pred, +16166: std::forward_iterator_tag) +16166: { +16166: __first = std::__find_if(__first, __last, __unary_pred); +16166: while (__first != __last) +16166: { +16166: typename iterator_traits<_ForwardIterator>::difference_type +16166: __n = __count; +16166: _ForwardIterator __i = __first; +16166: ++__i; +16166: while (__i != __last && __n != 1 && __unary_pred(__i)) +16166: { +16166: ++__i; +16166: --__n; +16166: } +16166: if (__n == 1) +16166: return __first; +16166: if (__i == __last) +16166: return __last; +16166: __first = std::__find_if(++__i, __last, __unary_pred); +16166: } +16166: return __last; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _RandomAccessIter +16166: __search_n_aux(_RandomAccessIter __first, _RandomAccessIter __last, +16166: _Integer __count, _UnaryPredicate __unary_pred, +16166: std::random_access_iterator_tag) +16166: { +16166: typedef typename std::iterator_traits<_RandomAccessIter>::difference_type +16166: _DistanceType; +16166: +16166: _DistanceType __tailSize = __last - __first; +16166: _DistanceType __remainder = __count; +16166: +16166: while (__remainder <= __tailSize) +16166: { +16166: __first += __remainder; +16166: __tailSize -= __remainder; +16166: +16166: +16166: _RandomAccessIter __backTrack = __first; +16166: while (__unary_pred(--__backTrack)) +16166: { +16166: if (--__remainder == 0) +16166: return (__first - __count); +16166: } +16166: __remainder = __count + 1 - (__first - __backTrack); +16166: } +16166: return __last; +16166: } +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __search_n(_ForwardIterator __first, _ForwardIterator __last, +16166: _Integer __count, +16166: _UnaryPredicate __unary_pred) +16166: { +16166: if (__count <= 0) +16166: return __first; +16166: +16166: if (__count == 1) +16166: return std::__find_if(__first, __last, __unary_pred); +16166: +16166: return std::__search_n_aux(__first, __last, __count, __unary_pred, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: +16166: template +16166: +16166: _ForwardIterator1 +16166: __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +16166: forward_iterator_tag, forward_iterator_tag, +16166: _BinaryPredicate __comp) +16166: { +16166: if (__first2 == __last2) +16166: return __last1; +16166: +16166: _ForwardIterator1 __result = __last1; +16166: while (1) +16166: { +16166: _ForwardIterator1 __new_result +16166: = std::__search(__first1, __last1, __first2, __last2, __comp); +16166: if (__new_result == __last1) +16166: return __result; +16166: else +16166: { +16166: __result = __new_result; +16166: __first1 = __new_result; +16166: ++__first1; +16166: } +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: _BidirectionalIterator1 +16166: __find_end(_BidirectionalIterator1 __first1, +16166: _BidirectionalIterator1 __last1, +16166: _BidirectionalIterator2 __first2, +16166: _BidirectionalIterator2 __last2, +16166: bidirectional_iterator_tag, bidirectional_iterator_tag, +16166: _BinaryPredicate __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1; +16166: typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2; +16166: +16166: _RevIterator1 __rlast1(__first1); +16166: _RevIterator2 __rlast2(__first2); +16166: _RevIterator1 __rresult = std::__search(_RevIterator1(__last1), __rlast1, +16166: _RevIterator2(__last2), __rlast2, +16166: __comp); +16166: +16166: if (__rresult == __rlast1) +16166: return __last1; +16166: else +16166: { +16166: _BidirectionalIterator1 __result = __rresult.base(); +16166: std::advance(__result, -std::distance(__first2, __last2)); +16166: return __result; +16166: } +16166: } +16166: # 322 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator1 +16166: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__find_end(__first1, __last1, __first2, __last2, +16166: std::__iterator_category(__first1), +16166: std::__iterator_category(__first2), +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: # 371 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator1 +16166: find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +16166: _BinaryPredicate __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__find_end(__first1, __last1, __first2, __last2, +16166: std::__iterator_category(__first1), +16166: std::__iterator_category(__first2), +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: # 407 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: all_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) +16166: { return __last == std::find_if_not(__first, __last, __pred); } +16166: # 425 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: none_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) +16166: { return __last == std::find_if(__first, __last, __pred); } +16166: # 444 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: any_of(_InputIterator __first, _InputIterator __last, _Predicate __pred) +16166: { return !std::none_of(__first, __last, __pred); } +16166: # 460 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _InputIterator +16166: find_if_not(_InputIterator __first, _InputIterator __last, +16166: _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: return std::__find_if_not(__first, __last, +16166: __gnu_cxx::__ops::__pred_iter(__pred)); +16166: } +16166: # 485 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_partitioned(_InputIterator __first, _InputIterator __last, +16166: _Predicate __pred) +16166: { +16166: __first = std::find_if_not(__first, __last, __pred); +16166: if (__first == __last) +16166: return true; +16166: ++__first; +16166: return std::none_of(__first, __last, __pred); +16166: } +16166: # 507 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _ForwardIterator +16166: partition_point(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: typedef typename iterator_traits<_ForwardIterator>::difference_type +16166: _DistanceType; +16166: +16166: _DistanceType __len = std::distance(__first, __last); +16166: +16166: while (__len > 0) +16166: { +16166: _DistanceType __half = __len >> 1; +16166: _ForwardIterator __middle = __first; +16166: std::advance(__middle, __half); +16166: if (__pred(*__middle)) +16166: { +16166: __first = __middle; +16166: ++__first; +16166: __len = __len - __half - 1; +16166: } +16166: else +16166: __len = __half; +16166: } +16166: return __first; +16166: } +16166: +16166: +16166: template +16166: +16166: _OutputIterator +16166: __remove_copy_if(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _Predicate __pred) +16166: { +16166: for (; __first != __last; ++__first) +16166: if (!__pred(__first)) +16166: { +16166: *__result = *__first; +16166: ++__result; +16166: } +16166: return __result; +16166: } +16166: # 574 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: remove_copy(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, const _Tp& __value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__remove_copy_if(__first, __last, __result, +16166: __gnu_cxx::__ops::__iter_equals_val(__value)); +16166: } +16166: # 607 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: remove_copy_if(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__remove_copy_if(__first, __last, __result, +16166: __gnu_cxx::__ops::__pred_iter(__pred)); +16166: } +16166: # 642 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: copy_if(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: if (__pred(*__first)) +16166: { +16166: *__result = *__first; +16166: ++__result; +16166: } +16166: return __result; +16166: } +16166: +16166: template +16166: +16166: _OutputIterator +16166: __copy_n(_InputIterator __first, _Size __n, +16166: _OutputIterator __result, input_iterator_tag) +16166: { +16166: return std::__niter_wrap(__result, +16166: __copy_n_a(__first, __n, +16166: std::__niter_base(__result), true)); +16166: } +16166: +16166: template +16166: +16166: inline _OutputIterator +16166: __copy_n(_RandomAccessIterator __first, _Size __n, +16166: _OutputIterator __result, random_access_iterator_tag) +16166: { return std::copy(__first, __first + __n, __result); } +16166: # 698 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: copy_n(_InputIterator __first, _Size __n, _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: const auto __n2 = std::__size_to_integer(__n); +16166: if (__n2 <= 0) +16166: return __result; +16166: +16166: ; +16166: ; +16166: +16166: return std::__copy_n(__first, __n2, __result, +16166: std::__iterator_category(__first)); +16166: } +16166: # 734 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: pair<_OutputIterator1, _OutputIterator2> +16166: partition_copy(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator1 __out_true, _OutputIterator2 __out_false, +16166: _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: if (__pred(*__first)) +16166: { +16166: *__out_true = *__first; +16166: ++__out_true; +16166: } +16166: else +16166: { +16166: *__out_false = *__first; +16166: ++__out_false; +16166: } +16166: +16166: return pair<_OutputIterator1, _OutputIterator2>(__out_true, __out_false); +16166: } +16166: # 785 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: remove(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__remove_if(__first, __last, +16166: __gnu_cxx::__ops::__iter_equals_val(__value)); +16166: } +16166: # 819 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: remove_if(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__remove_if(__first, __last, +16166: __gnu_cxx::__ops::__pred_iter(__pred)); +16166: } +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __adjacent_find(_ForwardIterator __first, _ForwardIterator __last, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: if (__first == __last) +16166: return __last; +16166: _ForwardIterator __next = __first; +16166: while (++__next != __last) +16166: { +16166: if (__binary_pred(__first, __next)) +16166: return __first; +16166: __first = __next; +16166: } +16166: return __last; +16166: } +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __unique(_ForwardIterator __first, _ForwardIterator __last, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: +16166: __first = std::__adjacent_find(__first, __last, __binary_pred); +16166: if (__first == __last) +16166: return __last; +16166: +16166: +16166: _ForwardIterator __dest = __first; +16166: ++__first; +16166: while (++__first != __last) +16166: if (!__binary_pred(__dest, __first)) +16166: *++__dest = std::move(*__first); +16166: return ++__dest; +16166: } +16166: # 888 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: unique(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__unique(__first, __last, +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: # 919 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: unique(_ForwardIterator __first, _ForwardIterator __last, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__unique(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _OutputIterator +16166: __unique_copy(_ForwardIterator __first, _ForwardIterator __last, +16166: _OutputIterator __result, _BinaryPredicate __binary_pred, +16166: forward_iterator_tag, output_iterator_tag) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: _ForwardIterator __next = __first; +16166: *__result = *__first; +16166: while (++__next != __last) +16166: if (!__binary_pred(__first, __next)) +16166: { +16166: __first = __next; +16166: *++__result = *__first; +16166: } +16166: return ++__result; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _OutputIterator +16166: __unique_copy(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _BinaryPredicate __binary_pred, +16166: input_iterator_tag, output_iterator_tag) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: typename iterator_traits<_InputIterator>::value_type __value = *__first; +16166: __decltype(__gnu_cxx::__ops::__iter_comp_val(__binary_pred)) +16166: __rebound_pred +16166: = __gnu_cxx::__ops::__iter_comp_val(__binary_pred); +16166: *__result = __value; +16166: while (++__first != __last) +16166: if (!__rebound_pred(__first, __value)) +16166: { +16166: __value = *__first; +16166: *++__result = __value; +16166: } +16166: return ++__result; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __unique_copy(_InputIterator __first, _InputIterator __last, +16166: _ForwardIterator __result, _BinaryPredicate __binary_pred, +16166: input_iterator_tag, forward_iterator_tag) +16166: { +16166: +16166: +16166: +16166: +16166: *__result = *__first; +16166: while (++__first != __last) +16166: if (!__binary_pred(__result, __first)) +16166: *++__result = *__first; +16166: return ++__result; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, +16166: bidirectional_iterator_tag) +16166: { +16166: while (true) +16166: if (__first == __last || __first == --__last) +16166: return; +16166: else +16166: { +16166: std::iter_swap(__first, __last); +16166: ++__first; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: __reverse(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: random_access_iterator_tag) +16166: { +16166: if (__first == __last) +16166: return; +16166: --__last; +16166: while (__first < __last) +16166: { +16166: std::iter_swap(__first, __last); +16166: ++__first; +16166: --__last; +16166: } +16166: } +16166: # 1080 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline void +16166: reverse(_BidirectionalIterator __first, _BidirectionalIterator __last) +16166: { +16166: +16166: +16166: +16166: ; +16166: std::__reverse(__first, __last, std::__iterator_category(__first)); +16166: } +16166: # 1108 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: reverse_copy(_BidirectionalIterator __first, _BidirectionalIterator __last, +16166: _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: while (__first != __last) +16166: { +16166: --__last; +16166: *__result = *__last; +16166: ++__result; +16166: } +16166: return __result; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _EuclideanRingElement +16166: __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) +16166: { +16166: while (__n != 0) +16166: { +16166: _EuclideanRingElement __t = __m % __n; +16166: __m = __n; +16166: __n = __t; +16166: } +16166: return __m; +16166: } +16166: +16166: inline namespace _V2 { +16166: +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __rotate(_ForwardIterator __first, +16166: _ForwardIterator __middle, +16166: _ForwardIterator __last, +16166: forward_iterator_tag) +16166: { +16166: if (__first == __middle) +16166: return __last; +16166: else if (__last == __middle) +16166: return __first; +16166: +16166: _ForwardIterator __first2 = __middle; +16166: do +16166: { +16166: std::iter_swap(__first, __first2); +16166: ++__first; +16166: ++__first2; +16166: if (__first == __middle) +16166: __middle = __first2; +16166: } +16166: while (__first2 != __last); +16166: +16166: _ForwardIterator __ret = __first; +16166: +16166: __first2 = __middle; +16166: +16166: while (__first2 != __last) +16166: { +16166: std::iter_swap(__first, __first2); +16166: ++__first; +16166: ++__first2; +16166: if (__first == __middle) +16166: __middle = __first2; +16166: else if (__first2 == __last) +16166: __first2 = __middle; +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: template +16166: +16166: _BidirectionalIterator +16166: __rotate(_BidirectionalIterator __first, +16166: _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last, +16166: bidirectional_iterator_tag) +16166: { +16166: +16166: +16166: +16166: +16166: if (__first == __middle) +16166: return __last; +16166: else if (__last == __middle) +16166: return __first; +16166: +16166: std::__reverse(__first, __middle, bidirectional_iterator_tag()); +16166: std::__reverse(__middle, __last, bidirectional_iterator_tag()); +16166: +16166: while (__first != __middle && __middle != __last) +16166: { +16166: std::iter_swap(__first, --__last); +16166: ++__first; +16166: } +16166: +16166: if (__first == __middle) +16166: { +16166: std::__reverse(__middle, __last, bidirectional_iterator_tag()); +16166: return __last; +16166: } +16166: else +16166: { +16166: std::__reverse(__first, __middle, bidirectional_iterator_tag()); +16166: return __first; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: _RandomAccessIterator +16166: __rotate(_RandomAccessIterator __first, +16166: _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last, +16166: random_access_iterator_tag) +16166: { +16166: +16166: +16166: +16166: +16166: if (__first == __middle) +16166: return __last; +16166: else if (__last == __middle) +16166: return __first; +16166: +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _Distance; +16166: typedef typename iterator_traits<_RandomAccessIterator>::value_type +16166: _ValueType; +16166: +16166: +16166: typedef typename make_unsigned<_Distance>::type _UDistance; +16166: +16166: +16166: +16166: +16166: _Distance __n = __last - __first; +16166: _Distance __k = __middle - __first; +16166: +16166: if (__k == __n - __k) +16166: { +16166: std::swap_ranges(__first, __middle, __middle); +16166: return __middle; +16166: } +16166: +16166: _RandomAccessIterator __p = __first; +16166: _RandomAccessIterator __ret = __first + (__last - __middle); +16166: +16166: for (;;) +16166: { +16166: if (__k < __n - __k) +16166: { +16166: if (__is_pod(_ValueType) && __k == 1) +16166: { +16166: _ValueType __t = std::move(*__p); +16166: std::move(__p + 1, __p + __n, __p); +16166: *(__p + __n - 1) = std::move(__t); +16166: return __ret; +16166: } +16166: _RandomAccessIterator __q = __p + __k; +16166: for (_Distance __i = 0; __i < __n - __k; ++ __i) +16166: { +16166: std::iter_swap(__p, __q); +16166: ++__p; +16166: ++__q; +16166: } +16166: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); +16166: if (__n == 0) +16166: return __ret; +16166: std::swap(__n, __k); +16166: __k = __n - __k; +16166: } +16166: else +16166: { +16166: __k = __n - __k; +16166: if (__is_pod(_ValueType) && __k == 1) +16166: { +16166: _ValueType __t = std::move(*(__p + __n - 1)); +16166: std::move_backward(__p, __p + __n - 1, __p + __n); +16166: *__p = std::move(__t); +16166: return __ret; +16166: } +16166: _RandomAccessIterator __q = __p + __n; +16166: __p = __q - __k; +16166: for (_Distance __i = 0; __i < __n - __k; ++ __i) +16166: { +16166: --__p; +16166: --__q; +16166: std::iter_swap(__p, __q); +16166: } +16166: __n = static_cast<_UDistance>(__n) % static_cast<_UDistance>(__k); +16166: if (__n == 0) +16166: return __ret; +16166: std::swap(__n, __k); +16166: } +16166: } +16166: } +16166: # 1345 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _ForwardIterator +16166: rotate(_ForwardIterator __first, _ForwardIterator __middle, +16166: _ForwardIterator __last) +16166: { +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__rotate(__first, __middle, __last, +16166: std::__iterator_category(__first)); +16166: } +16166: +16166: } +16166: # 1383 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: rotate_copy(_ForwardIterator __first, _ForwardIterator __middle, +16166: _ForwardIterator __last, _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::copy(__first, __middle, +16166: std::copy(__middle, __last, __result)); +16166: } +16166: +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __partition(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred, forward_iterator_tag) +16166: { +16166: if (__first == __last) +16166: return __first; +16166: +16166: while (__pred(*__first)) +16166: if (++__first == __last) +16166: return __first; +16166: +16166: _ForwardIterator __next = __first; +16166: +16166: while (++__next != __last) +16166: if (__pred(*__next)) +16166: { +16166: std::iter_swap(__first, __next); +16166: ++__first; +16166: } +16166: +16166: return __first; +16166: } +16166: +16166: +16166: template +16166: +16166: _BidirectionalIterator +16166: __partition(_BidirectionalIterator __first, _BidirectionalIterator __last, +16166: _Predicate __pred, bidirectional_iterator_tag) +16166: { +16166: while (true) +16166: { +16166: while (true) +16166: if (__first == __last) +16166: return __first; +16166: else if (__pred(*__first)) +16166: ++__first; +16166: else +16166: break; +16166: --__last; +16166: while (true) +16166: if (__first == __last) +16166: return __first; +16166: else if (!bool(__pred(*__last))) +16166: --__last; +16166: else +16166: break; +16166: std::iter_swap(__first, __last); +16166: ++__first; +16166: } +16166: } +16166: # 1464 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: _ForwardIterator +16166: __stable_partition_adaptive(_ForwardIterator __first, +16166: _ForwardIterator __last, +16166: _Predicate __pred, _Distance __len, +16166: _Pointer __buffer, +16166: _Distance __buffer_size) +16166: { +16166: if (__len == 1) +16166: return __first; +16166: +16166: if (__len <= __buffer_size) +16166: { +16166: _ForwardIterator __result1 = __first; +16166: _Pointer __result2 = __buffer; +16166: +16166: +16166: +16166: +16166: *__result2 = std::move(*__first); +16166: ++__result2; +16166: ++__first; +16166: for (; __first != __last; ++__first) +16166: if (__pred(__first)) +16166: { +16166: *__result1 = std::move(*__first); +16166: ++__result1; +16166: } +16166: else +16166: { +16166: *__result2 = std::move(*__first); +16166: ++__result2; +16166: } +16166: +16166: std::move(__buffer, __result2, __result1); +16166: return __result1; +16166: } +16166: +16166: _ForwardIterator __middle = __first; +16166: std::advance(__middle, __len / 2); +16166: _ForwardIterator __left_split = +16166: std::__stable_partition_adaptive(__first, __middle, __pred, +16166: __len / 2, __buffer, +16166: __buffer_size); +16166: +16166: +16166: +16166: _Distance __right_len = __len - __len / 2; +16166: _ForwardIterator __right_split = +16166: std::__find_if_not_n(__middle, __right_len, __pred); +16166: +16166: if (__right_len) +16166: __right_split = +16166: std::__stable_partition_adaptive(__right_split, __last, __pred, +16166: __right_len, +16166: __buffer, __buffer_size); +16166: +16166: return std::rotate(__left_split, __middle, __right_split); +16166: } +16166: +16166: template +16166: _ForwardIterator +16166: __stable_partition(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred) +16166: { +16166: __first = std::__find_if_not(__first, __last, __pred); +16166: +16166: if (__first == __last) +16166: return __first; +16166: +16166: typedef typename iterator_traits<_ForwardIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_ForwardIterator>::difference_type +16166: _DistanceType; +16166: +16166: _Temporary_buffer<_ForwardIterator, _ValueType> +16166: __buf(__first, std::distance(__first, __last)); +16166: return +16166: std::__stable_partition_adaptive(__first, __last, __pred, +16166: _DistanceType(__buf.requested_size()), +16166: __buf.begin(), +16166: _DistanceType(__buf.size())); +16166: } +16166: # 1566 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: inline _ForwardIterator +16166: stable_partition(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__stable_partition(__first, __last, +16166: __gnu_cxx::__ops::__pred_iter(__pred)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: __heap_select(_RandomAccessIterator __first, +16166: _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: std::__make_heap(__first, __middle, __comp); +16166: for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) +16166: if (__comp(__i, __first)) +16166: std::__pop_heap(__first, __middle, __i, __comp); +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: _RandomAccessIterator +16166: __partial_sort_copy(_InputIterator __first, _InputIterator __last, +16166: _RandomAccessIterator __result_first, +16166: _RandomAccessIterator __result_last, +16166: _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_InputIterator>::value_type +16166: _InputValueType; +16166: typedef iterator_traits<_RandomAccessIterator> _RItTraits; +16166: typedef typename _RItTraits::difference_type _DistanceType; +16166: +16166: if (__result_first == __result_last) +16166: return __result_last; +16166: _RandomAccessIterator __result_real_last = __result_first; +16166: while (__first != __last && __result_real_last != __result_last) +16166: { +16166: *__result_real_last = *__first; +16166: ++__result_real_last; +16166: ++__first; +16166: } +16166: +16166: std::__make_heap(__result_first, __result_real_last, __comp); +16166: while (__first != __last) +16166: { +16166: if (__comp(__first, __result_first)) +16166: std::__adjust_heap(__result_first, _DistanceType(0), +16166: _DistanceType(__result_real_last +16166: - __result_first), +16166: _InputValueType(*__first), __comp); +16166: ++__first; +16166: } +16166: std::__sort_heap(__result_first, __result_real_last, __comp); +16166: return __result_real_last; +16166: } +16166: # 1659 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _RandomAccessIterator +16166: partial_sort_copy(_InputIterator __first, _InputIterator __last, +16166: _RandomAccessIterator __result_first, +16166: _RandomAccessIterator __result_last) +16166: { +16166: # 1674 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__partial_sort_copy(__first, __last, +16166: __result_first, __result_last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 1709 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _RandomAccessIterator +16166: partial_sort_copy(_InputIterator __first, _InputIterator __last, +16166: _RandomAccessIterator __result_first, +16166: _RandomAccessIterator __result_last, +16166: _Compare __comp) +16166: { +16166: # 1726 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__partial_sort_copy(__first, __last, +16166: __result_first, __result_last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: void +16166: __unguarded_linear_insert(_RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: typename iterator_traits<_RandomAccessIterator>::value_type +16166: __val = std::move(*__last); +16166: _RandomAccessIterator __next = __last; +16166: --__next; +16166: while (__comp(__val, __next)) +16166: { +16166: *__last = std::move(*__next); +16166: __last = __next; +16166: --__next; +16166: } +16166: *__last = std::move(__val); +16166: } +16166: +16166: +16166: template +16166: +16166: void +16166: __insertion_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: if (__first == __last) return; +16166: +16166: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +16166: { +16166: if (__comp(__i, __first)) +16166: { +16166: typename iterator_traits<_RandomAccessIterator>::value_type +16166: __val = std::move(*__i); +16166: std::move_backward(__first, __i, __i + 1); +16166: *__first = std::move(__val); +16166: } +16166: else +16166: std::__unguarded_linear_insert(__i, +16166: __gnu_cxx::__ops::__val_comp_iter(__comp)); +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: inline void +16166: __unguarded_insertion_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: for (_RandomAccessIterator __i = __first; __i != __last; ++__i) +16166: std::__unguarded_linear_insert(__i, +16166: __gnu_cxx::__ops::__val_comp_iter(__comp)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: enum { _S_threshold = 16 }; +16166: +16166: +16166: template +16166: +16166: void +16166: __final_insertion_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: if (__last - __first > int(_S_threshold)) +16166: { +16166: std::__insertion_sort(__first, __first + int(_S_threshold), __comp); +16166: std::__unguarded_insertion_sort(__first + int(_S_threshold), __last, +16166: __comp); +16166: } +16166: else +16166: std::__insertion_sort(__first, __last, __comp); +16166: } +16166: +16166: +16166: template +16166: +16166: _RandomAccessIterator +16166: __unguarded_partition(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, +16166: _RandomAccessIterator __pivot, _Compare __comp) +16166: { +16166: while (true) +16166: { +16166: while (__comp(__first, __pivot)) +16166: ++__first; +16166: --__last; +16166: while (__comp(__pivot, __last)) +16166: --__last; +16166: if (!(__first < __last)) +16166: return __first; +16166: std::iter_swap(__first, __last); +16166: ++__first; +16166: } +16166: } +16166: +16166: +16166: template +16166: +16166: inline _RandomAccessIterator +16166: __unguarded_partition_pivot(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: _RandomAccessIterator __mid = __first + (__last - __first) / 2; +16166: std::__move_median_to_first(__first, __first + 1, __mid, __last - 1, +16166: __comp); +16166: return std::__unguarded_partition(__first + 1, __last, __first, __comp); +16166: } +16166: +16166: template +16166: +16166: inline void +16166: __partial_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: std::__heap_select(__first, __middle, __last, __comp); +16166: std::__sort_heap(__first, __middle, __comp); +16166: } +16166: +16166: +16166: template +16166: +16166: void +16166: __introsort_loop(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, +16166: _Size __depth_limit, _Compare __comp) +16166: { +16166: while (__last - __first > int(_S_threshold)) +16166: { +16166: if (__depth_limit == 0) +16166: { +16166: std::__partial_sort(__first, __last, __last, __comp); +16166: return; +16166: } +16166: --__depth_limit; +16166: _RandomAccessIterator __cut = +16166: std::__unguarded_partition_pivot(__first, __last, __comp); +16166: std::__introsort_loop(__cut, __last, __depth_limit, __comp); +16166: __last = __cut; +16166: } +16166: } +16166: +16166: +16166: +16166: template +16166: +16166: inline void +16166: __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: if (__first != __last) +16166: { +16166: std::__introsort_loop(__first, __last, +16166: std::__lg(__last - __first) * 2, +16166: __comp); +16166: std::__final_insertion_sort(__first, __last, __comp); +16166: } +16166: } +16166: +16166: template +16166: +16166: void +16166: __introselect(_RandomAccessIterator __first, _RandomAccessIterator __nth, +16166: _RandomAccessIterator __last, _Size __depth_limit, +16166: _Compare __comp) +16166: { +16166: while (__last - __first > 3) +16166: { +16166: if (__depth_limit == 0) +16166: { +16166: std::__heap_select(__first, __nth + 1, __last, __comp); +16166: +16166: std::iter_swap(__first, __nth); +16166: return; +16166: } +16166: --__depth_limit; +16166: _RandomAccessIterator __cut = +16166: std::__unguarded_partition_pivot(__first, __last, __comp); +16166: if (__cut <= __nth) +16166: __first = __cut; +16166: else +16166: __last = __cut; +16166: } +16166: std::__insertion_sort(__first, __last, __comp); +16166: } +16166: # 1960 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: lower_bound(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__lower_bound(__first, __last, __val, +16166: __gnu_cxx::__ops::__iter_comp_val(__comp)); +16166: } +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __upper_bound(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val, _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::difference_type +16166: _DistanceType; +16166: +16166: _DistanceType __len = std::distance(__first, __last); +16166: +16166: while (__len > 0) +16166: { +16166: _DistanceType __half = __len >> 1; +16166: _ForwardIterator __middle = __first; +16166: std::advance(__middle, __half); +16166: if (__comp(__val, __middle)) +16166: __len = __half; +16166: else +16166: { +16166: __first = __middle; +16166: ++__first; +16166: __len = __len - __half - 1; +16166: } +16166: } +16166: return __first; +16166: } +16166: # 2016 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: upper_bound(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__upper_bound(__first, __last, __val, +16166: __gnu_cxx::__ops::__val_less_iter()); +16166: } +16166: # 2047 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: upper_bound(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__upper_bound(__first, __last, __val, +16166: __gnu_cxx::__ops::__val_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: +16166: pair<_ForwardIterator, _ForwardIterator> +16166: __equal_range(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val, +16166: _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it) +16166: { +16166: typedef typename iterator_traits<_ForwardIterator>::difference_type +16166: _DistanceType; +16166: +16166: _DistanceType __len = std::distance(__first, __last); +16166: +16166: while (__len > 0) +16166: { +16166: _DistanceType __half = __len >> 1; +16166: _ForwardIterator __middle = __first; +16166: std::advance(__middle, __half); +16166: if (__comp_it_val(__middle, __val)) +16166: { +16166: __first = __middle; +16166: ++__first; +16166: __len = __len - __half - 1; +16166: } +16166: else if (__comp_val_it(__val, __middle)) +16166: __len = __half; +16166: else +16166: { +16166: _ForwardIterator __left +16166: = std::__lower_bound(__first, __middle, __val, __comp_it_val); +16166: std::advance(__first, __len); +16166: _ForwardIterator __right +16166: = std::__upper_bound(++__middle, __first, __val, __comp_val_it); +16166: return pair<_ForwardIterator, _ForwardIterator>(__left, __right); +16166: } +16166: } +16166: return pair<_ForwardIterator, _ForwardIterator>(__first, __first); +16166: } +16166: # 2120 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline pair<_ForwardIterator, _ForwardIterator> +16166: equal_range(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__equal_range(__first, __last, __val, +16166: __gnu_cxx::__ops::__iter_less_val(), +16166: __gnu_cxx::__ops::__val_less_iter()); +16166: } +16166: # 2157 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline pair<_ForwardIterator, _ForwardIterator> +16166: equal_range(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: ; +16166: +16166: return std::__equal_range(__first, __last, __val, +16166: __gnu_cxx::__ops::__iter_comp_val(__comp), +16166: __gnu_cxx::__ops::__val_comp_iter(__comp)); +16166: } +16166: # 2191 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: binary_search(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: _ForwardIterator __i +16166: = std::__lower_bound(__first, __last, __val, +16166: __gnu_cxx::__ops::__iter_less_val()); +16166: return __i != __last && !(__val < *__i); +16166: } +16166: # 2225 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: binary_search(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __val, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: ; +16166: +16166: _ForwardIterator __i +16166: = std::__lower_bound(__first, __last, __val, +16166: __gnu_cxx::__ops::__iter_comp_val(__comp)); +16166: return __i != __last && !bool(__comp(__val, *__i)); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: { +16166: if (__comp(__first2, __first1)) +16166: { +16166: *__result = std::move(*__first2); +16166: ++__first2; +16166: } +16166: else +16166: { +16166: *__result = std::move(*__first1); +16166: ++__first1; +16166: } +16166: ++__result; +16166: } +16166: if (__first1 != __last1) +16166: std::move(__first1, __last1, __result); +16166: } +16166: +16166: +16166: template +16166: void +16166: __move_merge_adaptive_backward(_BidirectionalIterator1 __first1, +16166: _BidirectionalIterator1 __last1, +16166: _BidirectionalIterator2 __first2, +16166: _BidirectionalIterator2 __last2, +16166: _BidirectionalIterator3 __result, +16166: _Compare __comp) +16166: { +16166: if (__first1 == __last1) +16166: { +16166: std::move_backward(__first2, __last2, __result); +16166: return; +16166: } +16166: else if (__first2 == __last2) +16166: return; +16166: +16166: --__last1; +16166: --__last2; +16166: while (true) +16166: { +16166: if (__comp(__last2, __last1)) +16166: { +16166: *--__result = std::move(*__last1); +16166: if (__first1 == __last1) +16166: { +16166: std::move_backward(__first2, ++__last2, __result); +16166: return; +16166: } +16166: --__last1; +16166: } +16166: else +16166: { +16166: *--__result = std::move(*__last2); +16166: if (__first2 == __last2) +16166: return; +16166: --__last2; +16166: } +16166: } +16166: } +16166: +16166: +16166: template +16166: _BidirectionalIterator1 +16166: __rotate_adaptive(_BidirectionalIterator1 __first, +16166: _BidirectionalIterator1 __middle, +16166: _BidirectionalIterator1 __last, +16166: _Distance __len1, _Distance __len2, +16166: _BidirectionalIterator2 __buffer, +16166: _Distance __buffer_size) +16166: { +16166: _BidirectionalIterator2 __buffer_end; +16166: if (__len1 > __len2 && __len2 <= __buffer_size) +16166: { +16166: if (__len2) +16166: { +16166: __buffer_end = std::move(__middle, __last, __buffer); +16166: std::move_backward(__first, __middle, __last); +16166: return std::move(__buffer, __buffer_end, __first); +16166: } +16166: else +16166: return __first; +16166: } +16166: else if (__len1 <= __buffer_size) +16166: { +16166: if (__len1) +16166: { +16166: __buffer_end = std::move(__first, __middle, __buffer); +16166: std::move(__middle, __last, __first); +16166: return std::move_backward(__buffer, __buffer_end, __last); +16166: } +16166: else +16166: return __last; +16166: } +16166: else +16166: return std::rotate(__first, __middle, __last); +16166: } +16166: +16166: +16166: template +16166: void +16166: __merge_adaptive(_BidirectionalIterator __first, +16166: _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last, +16166: _Distance __len1, _Distance __len2, +16166: _Pointer __buffer, _Compare __comp) +16166: { +16166: if (__len1 <= __len2) +16166: { +16166: _Pointer __buffer_end = std::move(__first, __middle, __buffer); +16166: std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last, +16166: __first, __comp); +16166: } +16166: else +16166: { +16166: _Pointer __buffer_end = std::move(__middle, __last, __buffer); +16166: std::__move_merge_adaptive_backward(__first, __middle, __buffer, +16166: __buffer_end, __last, __comp); +16166: } +16166: } +16166: +16166: template +16166: void +16166: __merge_adaptive_resize(_BidirectionalIterator __first, +16166: _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last, +16166: _Distance __len1, _Distance __len2, +16166: _Pointer __buffer, _Distance __buffer_size, +16166: _Compare __comp) +16166: { +16166: if (__len1 <= __buffer_size || __len2 <= __buffer_size) +16166: std::__merge_adaptive(__first, __middle, __last, +16166: __len1, __len2, __buffer, __comp); +16166: else +16166: { +16166: _BidirectionalIterator __first_cut = __first; +16166: _BidirectionalIterator __second_cut = __middle; +16166: _Distance __len11 = 0; +16166: _Distance __len22 = 0; +16166: if (__len1 > __len2) +16166: { +16166: __len11 = __len1 / 2; +16166: std::advance(__first_cut, __len11); +16166: __second_cut +16166: = std::__lower_bound(__middle, __last, *__first_cut, +16166: __gnu_cxx::__ops::__iter_comp_val(__comp)); +16166: __len22 = std::distance(__middle, __second_cut); +16166: } +16166: else +16166: { +16166: __len22 = __len2 / 2; +16166: std::advance(__second_cut, __len22); +16166: __first_cut +16166: = std::__upper_bound(__first, __middle, *__second_cut, +16166: __gnu_cxx::__ops::__val_comp_iter(__comp)); +16166: __len11 = std::distance(__first, __first_cut); +16166: } +16166: +16166: _BidirectionalIterator __new_middle +16166: = std::__rotate_adaptive(__first_cut, __middle, __second_cut, +16166: _Distance(__len1 - __len11), __len22, +16166: __buffer, __buffer_size); +16166: std::__merge_adaptive_resize(__first, __first_cut, __new_middle, +16166: __len11, __len22, +16166: __buffer, __buffer_size, __comp); +16166: std::__merge_adaptive_resize(__new_middle, __second_cut, __last, +16166: _Distance(__len1 - __len11), +16166: _Distance(__len2 - __len22), +16166: __buffer, __buffer_size, __comp); +16166: } +16166: } +16166: +16166: +16166: template +16166: void +16166: __merge_without_buffer(_BidirectionalIterator __first, +16166: _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last, +16166: _Distance __len1, _Distance __len2, +16166: _Compare __comp) +16166: { +16166: if (__len1 == 0 || __len2 == 0) +16166: return; +16166: +16166: if (__len1 + __len2 == 2) +16166: { +16166: if (__comp(__middle, __first)) +16166: std::iter_swap(__first, __middle); +16166: return; +16166: } +16166: +16166: _BidirectionalIterator __first_cut = __first; +16166: _BidirectionalIterator __second_cut = __middle; +16166: _Distance __len11 = 0; +16166: _Distance __len22 = 0; +16166: if (__len1 > __len2) +16166: { +16166: __len11 = __len1 / 2; +16166: std::advance(__first_cut, __len11); +16166: __second_cut +16166: = std::__lower_bound(__middle, __last, *__first_cut, +16166: __gnu_cxx::__ops::__iter_comp_val(__comp)); +16166: __len22 = std::distance(__middle, __second_cut); +16166: } +16166: else +16166: { +16166: __len22 = __len2 / 2; +16166: std::advance(__second_cut, __len22); +16166: __first_cut +16166: = std::__upper_bound(__first, __middle, *__second_cut, +16166: __gnu_cxx::__ops::__val_comp_iter(__comp)); +16166: __len11 = std::distance(__first, __first_cut); +16166: } +16166: +16166: _BidirectionalIterator __new_middle +16166: = std::rotate(__first_cut, __middle, __second_cut); +16166: std::__merge_without_buffer(__first, __first_cut, __new_middle, +16166: __len11, __len22, __comp); +16166: std::__merge_without_buffer(__new_middle, __second_cut, __last, +16166: __len1 - __len11, __len2 - __len22, __comp); +16166: } +16166: +16166: template +16166: void +16166: __inplace_merge(_BidirectionalIterator __first, +16166: _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last, +16166: _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_BidirectionalIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_BidirectionalIterator>::difference_type +16166: _DistanceType; +16166: +16166: if (__first == __middle || __middle == __last) +16166: return; +16166: +16166: const _DistanceType __len1 = std::distance(__first, __middle); +16166: const _DistanceType __len2 = std::distance(__middle, __last); +16166: +16166: +16166: typedef _Temporary_buffer<_BidirectionalIterator, _ValueType> _TmpBuf; +16166: +16166: +16166: _TmpBuf __buf(__first, std::min(__len1, __len2)); +16166: +16166: if (__builtin_expect(__buf.size() == __buf.requested_size(), true)) +16166: std::__merge_adaptive +16166: (__first, __middle, __last, __len1, __len2, __buf.begin(), __comp); +16166: else if (__builtin_expect(__buf.begin() == 0, false)) +16166: std::__merge_without_buffer +16166: (__first, __middle, __last, __len1, __len2, __comp); +16166: else +16166: std::__merge_adaptive_resize +16166: (__first, __middle, __last, __len1, __len2, __buf.begin(), +16166: _DistanceType(__buf.size()), __comp); +16166: +16166: +16166: +16166: +16166: } +16166: # 2540 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: inline void +16166: inplace_merge(_BidirectionalIterator __first, +16166: _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: std::__inplace_merge(__first, __middle, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 2581 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: inline void +16166: inplace_merge(_BidirectionalIterator __first, +16166: _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: std::__inplace_merge(__first, __middle, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: +16166: +16166: template +16166: _OutputIterator +16166: __move_merge(_InputIterator __first1, _InputIterator __last1, +16166: _InputIterator __first2, _InputIterator __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: { +16166: if (__comp(__first2, __first1)) +16166: { +16166: *__result = std::move(*__first2); +16166: ++__first2; +16166: } +16166: else +16166: { +16166: *__result = std::move(*__first1); +16166: ++__first1; +16166: } +16166: ++__result; +16166: } +16166: return std::move(__first2, __last2, std::move(__first1, __last1, __result)) +16166: +16166: ; +16166: } +16166: +16166: template +16166: void +16166: __merge_sort_loop(_RandomAccessIterator1 __first, +16166: _RandomAccessIterator1 __last, +16166: _RandomAccessIterator2 __result, _Distance __step_size, +16166: _Compare __comp) +16166: { +16166: const _Distance __two_step = 2 * __step_size; +16166: +16166: while (__last - __first >= __two_step) +16166: { +16166: __result = std::__move_merge(__first, __first + __step_size, +16166: __first + __step_size, +16166: __first + __two_step, +16166: __result, __comp); +16166: __first += __two_step; +16166: } +16166: __step_size = std::min(_Distance(__last - __first), __step_size); +16166: +16166: std::__move_merge(__first, __first + __step_size, +16166: __first + __step_size, __last, __result, __comp); +16166: } +16166: +16166: template +16166: +16166: void +16166: __chunk_insertion_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, +16166: _Distance __chunk_size, _Compare __comp) +16166: { +16166: while (__last - __first >= __chunk_size) +16166: { +16166: std::__insertion_sort(__first, __first + __chunk_size, __comp); +16166: __first += __chunk_size; +16166: } +16166: std::__insertion_sort(__first, __last, __comp); +16166: } +16166: +16166: enum { _S_chunk_size = 7 }; +16166: +16166: template +16166: void +16166: __merge_sort_with_buffer(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, +16166: _Pointer __buffer, _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _Distance; +16166: +16166: const _Distance __len = __last - __first; +16166: const _Pointer __buffer_last = __buffer + __len; +16166: +16166: _Distance __step_size = _S_chunk_size; +16166: std::__chunk_insertion_sort(__first, __last, __step_size, __comp); +16166: +16166: while (__step_size < __len) +16166: { +16166: std::__merge_sort_loop(__first, __last, __buffer, +16166: __step_size, __comp); +16166: __step_size *= 2; +16166: std::__merge_sort_loop(__buffer, __buffer_last, __first, +16166: __step_size, __comp); +16166: __step_size *= 2; +16166: } +16166: } +16166: +16166: template +16166: void +16166: __stable_sort_adaptive(_RandomAccessIterator __first, +16166: _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last, +16166: _Pointer __buffer, _Compare __comp) +16166: { +16166: std::__merge_sort_with_buffer(__first, __middle, __buffer, __comp); +16166: std::__merge_sort_with_buffer(__middle, __last, __buffer, __comp); +16166: +16166: std::__merge_adaptive(__first, __middle, __last, +16166: __middle - __first, __last - __middle, +16166: __buffer, __comp); +16166: } +16166: +16166: template +16166: void +16166: __stable_sort_adaptive_resize(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, +16166: _Pointer __buffer, _Distance __buffer_size, +16166: _Compare __comp) +16166: { +16166: const _Distance __len = (__last - __first + 1) / 2; +16166: const _RandomAccessIterator __middle = __first + __len; +16166: if (__len > __buffer_size) +16166: { +16166: std::__stable_sort_adaptive_resize(__first, __middle, __buffer, +16166: __buffer_size, __comp); +16166: std::__stable_sort_adaptive_resize(__middle, __last, __buffer, +16166: __buffer_size, __comp); +16166: std::__merge_adaptive_resize(__first, __middle, __last, +16166: _Distance(__middle - __first), +16166: _Distance(__last - __middle), +16166: __buffer, __buffer_size, +16166: __comp); +16166: } +16166: else +16166: std::__stable_sort_adaptive(__first, __middle, __last, +16166: __buffer, __comp); +16166: } +16166: +16166: +16166: template +16166: void +16166: __inplace_stable_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: if (__last - __first < 15) +16166: { +16166: std::__insertion_sort(__first, __last, __comp); +16166: return; +16166: } +16166: _RandomAccessIterator __middle = __first + (__last - __first) / 2; +16166: std::__inplace_stable_sort(__first, __middle, __comp); +16166: std::__inplace_stable_sort(__middle, __last, __comp); +16166: std::__merge_without_buffer(__first, __middle, __last, +16166: __middle - __first, +16166: __last - __middle, +16166: __comp); +16166: } +16166: # 2767 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: bool +16166: __includes(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: { +16166: if (__comp(__first2, __first1)) +16166: return false; +16166: if (!__comp(__first1, __first2)) +16166: ++__first2; +16166: ++__first1; +16166: } +16166: +16166: return __first2 == __last2; +16166: } +16166: # 2805 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: includes(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__includes(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 2850 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: includes(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__includes(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: # 2886 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: bool +16166: __next_permutation(_BidirectionalIterator __first, +16166: _BidirectionalIterator __last, _Compare __comp) +16166: { +16166: if (__first == __last) +16166: return false; +16166: _BidirectionalIterator __i = __first; +16166: ++__i; +16166: if (__i == __last) +16166: return false; +16166: __i = __last; +16166: --__i; +16166: +16166: for(;;) +16166: { +16166: _BidirectionalIterator __ii = __i; +16166: --__i; +16166: if (__comp(__i, __ii)) +16166: { +16166: _BidirectionalIterator __j = __last; +16166: while (!__comp(__i, --__j)) +16166: {} +16166: std::iter_swap(__i, __j); +16166: std::__reverse(__ii, __last, +16166: std::__iterator_category(__first)); +16166: return true; +16166: } +16166: if (__i == __first) +16166: { +16166: std::__reverse(__first, __last, +16166: std::__iterator_category(__first)); +16166: return false; +16166: } +16166: } +16166: } +16166: # 2936 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline bool +16166: next_permutation(_BidirectionalIterator __first, +16166: _BidirectionalIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__next_permutation +16166: (__first, __last, __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 2969 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline bool +16166: next_permutation(_BidirectionalIterator __first, +16166: _BidirectionalIterator __last, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__next_permutation +16166: (__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: +16166: bool +16166: __prev_permutation(_BidirectionalIterator __first, +16166: _BidirectionalIterator __last, _Compare __comp) +16166: { +16166: if (__first == __last) +16166: return false; +16166: _BidirectionalIterator __i = __first; +16166: ++__i; +16166: if (__i == __last) +16166: return false; +16166: __i = __last; +16166: --__i; +16166: +16166: for(;;) +16166: { +16166: _BidirectionalIterator __ii = __i; +16166: --__i; +16166: if (__comp(__ii, __i)) +16166: { +16166: _BidirectionalIterator __j = __last; +16166: while (!__comp(--__j, __i)) +16166: {} +16166: std::iter_swap(__i, __j); +16166: std::__reverse(__ii, __last, +16166: std::__iterator_category(__first)); +16166: return true; +16166: } +16166: if (__i == __first) +16166: { +16166: std::__reverse(__first, __last, +16166: std::__iterator_category(__first)); +16166: return false; +16166: } +16166: } +16166: } +16166: # 3039 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline bool +16166: prev_permutation(_BidirectionalIterator __first, +16166: _BidirectionalIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__prev_permutation(__first, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 3072 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline bool +16166: prev_permutation(_BidirectionalIterator __first, +16166: _BidirectionalIterator __last, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__prev_permutation(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: +16166: _OutputIterator +16166: __replace_copy_if(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, +16166: _Predicate __pred, const _Tp& __new_value) +16166: { +16166: for (; __first != __last; ++__first, (void)++__result) +16166: if (__pred(__first)) +16166: *__result = __new_value; +16166: else +16166: *__result = *__first; +16166: return __result; +16166: } +16166: # 3124 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: replace_copy(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, +16166: const _Tp& __old_value, const _Tp& __new_value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__replace_copy_if(__first, __last, __result, +16166: __gnu_cxx::__ops::__iter_equals_val(__old_value), +16166: __new_value); +16166: } +16166: # 3159 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: replace_copy_if(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, +16166: _Predicate __pred, const _Tp& __new_value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__replace_copy_if(__first, __last, __result, +16166: __gnu_cxx::__ops::__pred_iter(__pred), +16166: __new_value); +16166: } +16166: # 3188 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_sorted(_ForwardIterator __first, _ForwardIterator __last) +16166: { return std::is_sorted_until(__first, __last) == __last; } +16166: # 3203 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_sorted(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { return std::is_sorted_until(__first, __last, __comp) == __last; } +16166: +16166: template +16166: +16166: _ForwardIterator +16166: __is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: if (__first == __last) +16166: return __last; +16166: +16166: _ForwardIterator __next = __first; +16166: for (++__next; __next != __last; __first = __next, (void)++__next) +16166: if (__comp(__next, __first)) +16166: return __next; +16166: return __next; +16166: } +16166: # 3234 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__is_sorted_until(__first, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 3259 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: is_sorted_until(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__is_sorted_until(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: # 3285 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline pair +16166: minmax(const _Tp& __a, const _Tp& __b) +16166: { +16166: +16166: +16166: +16166: return __b < __a ? pair(__b, __a) +16166: : pair(__a, __b); +16166: } +16166: # 3306 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline pair +16166: minmax(const _Tp& __a, const _Tp& __b, _Compare __comp) +16166: { +16166: return __comp(__b, __a) ? pair(__b, __a) +16166: : pair(__a, __b); +16166: } +16166: +16166: template +16166: constexpr +16166: pair<_ForwardIterator, _ForwardIterator> +16166: __minmax_element(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: _ForwardIterator __next = __first; +16166: if (__first == __last +16166: || ++__next == __last) +16166: return std::make_pair(__first, __first); +16166: +16166: _ForwardIterator __min{}, __max{}; +16166: if (__comp(__next, __first)) +16166: { +16166: __min = __next; +16166: __max = __first; +16166: } +16166: else +16166: { +16166: __min = __first; +16166: __max = __next; +16166: } +16166: +16166: __first = __next; +16166: ++__first; +16166: +16166: while (__first != __last) +16166: { +16166: __next = __first; +16166: if (++__next == __last) +16166: { +16166: if (__comp(__first, __min)) +16166: __min = __first; +16166: else if (!__comp(__first, __max)) +16166: __max = __first; +16166: break; +16166: } +16166: +16166: if (__comp(__next, __first)) +16166: { +16166: if (__comp(__next, __min)) +16166: __min = __next; +16166: if (!__comp(__first, __max)) +16166: __max = __first; +16166: } +16166: else +16166: { +16166: if (__comp(__first, __min)) +16166: __min = __first; +16166: if (!__comp(__next, __max)) +16166: __max = __next; +16166: } +16166: +16166: __first = __next; +16166: ++__first; +16166: } +16166: +16166: return std::make_pair(__min, __max); +16166: } +16166: # 3386 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline pair<_ForwardIterator, _ForwardIterator> +16166: minmax_element(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__minmax_element(__first, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 3414 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline pair<_ForwardIterator, _ForwardIterator> +16166: minmax_element(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__minmax_element(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline pair<_Tp, _Tp> +16166: minmax(initializer_list<_Tp> __l) +16166: { +16166: ; +16166: pair __p = +16166: std::__minmax_element(__l.begin(), __l.end(), +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: return std::make_pair(*__p.first, *__p.second); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline pair<_Tp, _Tp> +16166: minmax(initializer_list<_Tp> __l, _Compare __comp) +16166: { +16166: ; +16166: pair __p = +16166: std::__minmax_element(__l.begin(), __l.end(), +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: return std::make_pair(*__p.first, *__p.second); +16166: } +16166: # 3470 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _BinaryPredicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__is_permutation(__first1, __last1, __first2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred)); +16166: } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: template +16166: +16166: bool +16166: __is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +16166: _BinaryPredicate __pred) +16166: { +16166: using _Cat1 +16166: = typename iterator_traits<_ForwardIterator1>::iterator_category; +16166: using _Cat2 +16166: = typename iterator_traits<_ForwardIterator2>::iterator_category; +16166: using _It1_is_RA = is_same<_Cat1, random_access_iterator_tag>; +16166: using _It2_is_RA = is_same<_Cat2, random_access_iterator_tag>; +16166: constexpr bool __ra_iters = __and_<_It1_is_RA, _It2_is_RA>::value; +16166: if constexpr (__ra_iters) +16166: { +16166: if ((__last1 - __first1) != (__last2 - __first2)) +16166: return false; +16166: } +16166: +16166: +16166: +16166: for (; __first1 != __last1 && __first2 != __last2; +16166: ++__first1, (void)++__first2) +16166: if (!__pred(__first1, __first2)) +16166: break; +16166: +16166: if constexpr (__ra_iters) +16166: { +16166: if (__first1 == __last1) +16166: return true; +16166: } +16166: else +16166: { +16166: auto __d1 = std::distance(__first1, __last1); +16166: auto __d2 = std::distance(__first2, __last2); +16166: if (__d1 == 0 && __d2 == 0) +16166: return true; +16166: if (__d1 != __d2) +16166: return false; +16166: } +16166: +16166: for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan) +16166: { +16166: if (__scan != std::__find_if(__first1, __scan, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))) +16166: continue; +16166: +16166: auto __matches = std::__count_if(__first2, __last2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)); +16166: if (0 == __matches +16166: || std::__count_if(__scan, __last1, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)) +16166: != __matches) +16166: return false; +16166: } +16166: return true; +16166: } +16166: #pragma GCC diagnostic pop +16166: # 3566 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2) +16166: { +16166: ; +16166: ; +16166: +16166: return +16166: std::__is_permutation(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: # 3594 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: is_permutation(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, +16166: _BinaryPredicate __pred) +16166: { +16166: ; +16166: ; +16166: +16166: return std::__is_permutation(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__pred)); +16166: } +16166: # 3622 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[nodiscard]] constexpr const _Tp& +16166: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!(__hi < __lo))) std::__glibcxx_assert_fail(); } while (false); +16166: return std::min(std::max(__val, __lo), __hi); +16166: } +16166: # 3642 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[nodiscard]] constexpr const _Tp& +16166: clamp(const _Tp& __val, const _Tp& __lo, const _Tp& __hi, _Compare __comp) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(!__comp(__hi, __lo))) std::__glibcxx_assert_fail(); } while (false); +16166: return std::min(std::max(__val, __lo, __comp), __hi, __comp); +16166: } +16166: # 3672 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: pair<_IntType, _IntType> +16166: __gen_two_uniform_ints(_IntType __b0, _IntType __b1, +16166: _UniformRandomBitGenerator&& __g) +16166: { +16166: _IntType __x +16166: = uniform_int_distribution<_IntType>{0, (__b0 * __b1) - 1}(__g); +16166: return std::make_pair(__x / __b1, __x % __b1); +16166: } +16166: # 3694 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: void +16166: shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _UniformRandomNumberGenerator&& __g) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return; +16166: +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _DistanceType; +16166: +16166: typedef typename std::make_unsigned<_DistanceType>::type __ud_type; +16166: typedef typename std::uniform_int_distribution<__ud_type> __distr_type; +16166: typedef typename __distr_type::param_type __p_type; +16166: +16166: typedef typename remove_reference<_UniformRandomNumberGenerator>::type +16166: _Gen; +16166: typedef typename common_type::type +16166: __uc_type; +16166: +16166: const __uc_type __urngrange = __g.max() - __g.min(); +16166: const __uc_type __urange = __uc_type(__last - __first); +16166: +16166: if (__urngrange / __urange >= __urange) +16166: +16166: { +16166: _RandomAccessIterator __i = __first + 1; +16166: +16166: +16166: +16166: +16166: +16166: if ((__urange % 2) == 0) +16166: { +16166: __distr_type __d{0, 1}; +16166: std::iter_swap(__i++, __first + __d(__g)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: while (__i != __last) +16166: { +16166: const __uc_type __swap_range = __uc_type(__i - __first) + 1; +16166: +16166: const pair<__uc_type, __uc_type> __pospos = +16166: __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g); +16166: +16166: std::iter_swap(__i++, __first + __pospos.first); +16166: std::iter_swap(__i++, __first + __pospos.second); +16166: } +16166: +16166: return; +16166: } +16166: +16166: __distr_type __d; +16166: +16166: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +16166: std::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first))); +16166: } +16166: +16166: +16166: +16166: # 3777 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _Function +16166: for_each(_InputIterator __first, _InputIterator __last, _Function __f) +16166: { +16166: +16166: +16166: ; +16166: for (; __first != __last; ++__first) +16166: __f(*__first); +16166: return __f; +16166: } +16166: # 3803 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _InputIterator +16166: for_each_n(_InputIterator __first, _Size __n, _Function __f) +16166: { +16166: auto __n2 = std::__size_to_integer(__n); +16166: using _Cat = typename iterator_traits<_InputIterator>::iterator_category; +16166: if constexpr (is_base_of_v) +16166: { +16166: if (__n2 <= 0) +16166: return __first; +16166: auto __last = __first + __n2; +16166: std::for_each(__first, __last, std::move(__f)); +16166: return __last; +16166: } +16166: else +16166: { +16166: while (__n2-->0) +16166: { +16166: __f(*__first); +16166: ++__first; +16166: } +16166: return __first; +16166: } +16166: } +16166: # 3839 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _InputIterator +16166: find(_InputIterator __first, _InputIterator __last, +16166: const _Tp& __val) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: return std::__find_if(__first, __last, +16166: __gnu_cxx::__ops::__iter_equals_val(__val)); +16166: } +16166: # 3864 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _InputIterator +16166: find_if(_InputIterator __first, _InputIterator __last, +16166: _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__find_if(__first, __last, +16166: __gnu_cxx::__ops::__pred_iter(__pred)); +16166: } +16166: # 3896 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _InputIterator +16166: find_first_of(_InputIterator __first1, _InputIterator __last1, +16166: _ForwardIterator __first2, _ForwardIterator __last2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: for (; __first1 != __last1; ++__first1) +16166: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) +16166: if (*__first1 == *__iter) +16166: return __first1; +16166: return __last1; +16166: } +16166: # 3937 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: _InputIterator +16166: find_first_of(_InputIterator __first1, _InputIterator __last1, +16166: _ForwardIterator __first2, _ForwardIterator __last2, +16166: _BinaryPredicate __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: for (; __first1 != __last1; ++__first1) +16166: for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter) +16166: if (__comp(*__first1, *__iter)) +16166: return __first1; +16166: return __last1; +16166: } +16166: # 3970 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: adjacent_find(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__adjacent_find(__first, __last, +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: # 3996 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: adjacent_find(_ForwardIterator __first, _ForwardIterator __last, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__adjacent_find(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); +16166: } +16166: # 4022 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline typename iterator_traits<_InputIterator>::difference_type +16166: count(_InputIterator __first, _InputIterator __last, const _Tp& __value) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__count_if(__first, __last, +16166: __gnu_cxx::__ops::__iter_equals_val(__value)); +16166: } +16166: # 4046 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline typename iterator_traits<_InputIterator>::difference_type +16166: count_if(_InputIterator __first, _InputIterator __last, _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__count_if(__first, __last, +16166: __gnu_cxx::__ops::__pred_iter(__pred)); +16166: } +16166: # 4087 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator1 +16166: search(_ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__search(__first1, __last1, __first2, __last2, +16166: __gnu_cxx::__ops::__iter_equal_to_iter()); +16166: } +16166: # 4121 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: search_n(_ForwardIterator __first, _ForwardIterator __last, +16166: _Integer __count, const _Tp& __val) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__search_n(__first, __last, __count, +16166: __gnu_cxx::__ops::__iter_equals_val(__val)); +16166: } +16166: # 4155 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: search_n(_ForwardIterator __first, _ForwardIterator __last, +16166: _Integer __count, const _Tp& __val, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__search_n(__first, __last, __count, +16166: __gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val)); +16166: } +16166: # 4181 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline _ForwardIterator +16166: search(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Searcher& __searcher) +16166: { return __searcher(__first, __last).first; } +16166: # 4205 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: transform(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _UnaryOperation __unary_op) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first, (void)++__result) +16166: *__result = __unary_op(*__first); +16166: return __result; +16166: } +16166: # 4243 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: transform(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _OutputIterator __result, +16166: _BinaryOperation __binary_op) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result) +16166: *__result = __binary_op(*__first1, *__first2); +16166: return __result; +16166: } +16166: # 4277 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: void +16166: replace(_ForwardIterator __first, _ForwardIterator __last, +16166: const _Tp& __old_value, const _Tp& __new_value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: if (*__first == __old_value) +16166: *__first = __new_value; +16166: } +16166: # 4310 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: void +16166: replace_if(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred, const _Tp& __new_value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: if (__pred(*__first)) +16166: *__first = __new_value; +16166: } +16166: # 4342 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: void +16166: generate(_ForwardIterator __first, _ForwardIterator __last, +16166: _Generator __gen) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: *__first = __gen(); +16166: } +16166: # 4375 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: generate_n(_OutputIterator __first, _Size __n, _Generator __gen) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: typedef __decltype(std::__size_to_integer(__n)) _IntSize; +16166: for (_IntSize __niter = std::__size_to_integer(__n); +16166: __niter > 0; --__niter, (void) ++__first) +16166: *__first = __gen(); +16166: return __first; +16166: } +16166: # 4410 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: unique_copy(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return __result; +16166: return std::__unique_copy(__first, __last, __result, +16166: __gnu_cxx::__ops::__iter_equal_to_iter(), +16166: std::__iterator_category(__first), +16166: std::__iterator_category(__result)); +16166: } +16166: # 4450 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: unique_copy(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, +16166: _BinaryPredicate __binary_pred) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return __result; +16166: return std::__unique_copy(__first, __last, __result, +16166: __gnu_cxx::__ops::__iter_comp_iter(__binary_pred), +16166: std::__iterator_category(__first), +16166: std::__iterator_category(__result)); +16166: } +16166: # 4489 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +16166: inline void +16166: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first != __last) +16166: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +16166: { +16166: +16166: _RandomAccessIterator __j = __first +16166: + std::rand() % ((__i - __first) + 1); +16166: if (__i != __j) +16166: std::iter_swap(__i, __j); +16166: } +16166: } +16166: # 4528 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: __attribute__ ((__deprecated__ ("use '" "std::shuffle" "' instead"))) +16166: void +16166: random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: +16166: _RandomNumberGenerator&& __rand) +16166: +16166: +16166: +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return; +16166: for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) +16166: { +16166: _RandomAccessIterator __j = __first + __rand((__i - __first) + 1); +16166: if (__i != __j) +16166: std::iter_swap(__i, __j); +16166: } +16166: } +16166: # 4570 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _ForwardIterator +16166: partition(_ForwardIterator __first, _ForwardIterator __last, +16166: _Predicate __pred) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: return std::__partition(__first, __last, __pred, +16166: std::__iterator_category(__first)); +16166: } +16166: # 4605 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline void +16166: partial_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: std::__partial_sort(__first, __middle, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 4644 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline void +16166: partial_sort(_RandomAccessIterator __first, +16166: _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: std::__partial_sort(__first, __middle, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: # 4681 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline void +16166: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, +16166: _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: if (__first == __last || __nth == __last) +16166: return; +16166: +16166: std::__introselect(__first, __nth, __last, +16166: std::__lg(__last - __first) * 2, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 4721 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline void +16166: nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, +16166: _RandomAccessIterator __last, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: +16166: if (__first == __last || __nth == __last) +16166: return; +16166: +16166: std::__introselect(__first, __nth, __last, +16166: std::__lg(__last - __first) * 2, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: # 4759 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline void +16166: sort(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 4790 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline void +16166: sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: +16166: _OutputIterator +16166: __merge(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: { +16166: if (__comp(__first2, __first1)) +16166: { +16166: *__result = *__first2; +16166: ++__first2; +16166: } +16166: else +16166: { +16166: *__result = *__first1; +16166: ++__first1; +16166: } +16166: ++__result; +16166: } +16166: return std::copy(__first2, __last2, +16166: std::copy(__first1, __last1, __result)); +16166: } +16166: # 4853 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: merge(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__merge(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 4904 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: merge(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__merge(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: inline void +16166: __stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: typedef typename iterator_traits<_RandomAccessIterator>::value_type +16166: _ValueType; +16166: typedef typename iterator_traits<_RandomAccessIterator>::difference_type +16166: _DistanceType; +16166: +16166: if (__first == __last) +16166: return; +16166: +16166: +16166: typedef _Temporary_buffer<_RandomAccessIterator, _ValueType> _TmpBuf; +16166: +16166: +16166: _TmpBuf __buf(__first, (__last - __first + 1) / 2); +16166: +16166: if (__builtin_expect(__buf.requested_size() == __buf.size(), true)) +16166: std::__stable_sort_adaptive(__first, +16166: __first + _DistanceType(__buf.size()), +16166: __last, __buf.begin(), __comp); +16166: else if (__builtin_expect(__buf.begin() == 0, false)) +16166: std::__inplace_stable_sort(__first, __last, __comp); +16166: else +16166: std::__stable_sort_adaptive_resize(__first, __last, __buf.begin(), +16166: _DistanceType(__buf.size()), __comp); +16166: +16166: +16166: +16166: } +16166: # 4982 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: inline void +16166: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: std::__stable_sort(__first, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 5016 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: inline void +16166: stable_sort(_RandomAccessIterator __first, _RandomAccessIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: std::__stable_sort(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: +16166: _OutputIterator +16166: __set_union(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: { +16166: if (__comp(__first1, __first2)) +16166: { +16166: *__result = *__first1; +16166: ++__first1; +16166: } +16166: else if (__comp(__first2, __first1)) +16166: { +16166: *__result = *__first2; +16166: ++__first2; +16166: } +16166: else +16166: { +16166: *__result = *__first1; +16166: ++__first1; +16166: ++__first2; +16166: } +16166: ++__result; +16166: } +16166: return std::copy(__first2, __last2, +16166: std::copy(__first1, __last1, __result)); +16166: } +16166: # 5086 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_union(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_union(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 5137 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_union(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_union(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: +16166: _OutputIterator +16166: __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: if (__comp(__first1, __first2)) +16166: ++__first1; +16166: else if (__comp(__first2, __first1)) +16166: ++__first2; +16166: else +16166: { +16166: *__result = *__first1; +16166: ++__first1; +16166: ++__first2; +16166: ++__result; +16166: } +16166: return __result; +16166: } +16166: # 5210 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_intersection(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 5260 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_intersection(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: +16166: _OutputIterator +16166: __set_difference(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: if (__comp(__first1, __first2)) +16166: { +16166: *__result = *__first1; +16166: ++__first1; +16166: ++__result; +16166: } +16166: else if (__comp(__first2, __first1)) +16166: ++__first2; +16166: else +16166: { +16166: ++__first1; +16166: ++__first2; +16166: } +16166: return std::copy(__first1, __last1, __result); +16166: } +16166: # 5335 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_difference(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 5387 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_difference(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_difference(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: +16166: _OutputIterator +16166: __set_symmetric_difference(_InputIterator1 __first1, +16166: _InputIterator1 __last1, +16166: _InputIterator2 __first2, +16166: _InputIterator2 __last2, +16166: _OutputIterator __result, +16166: _Compare __comp) +16166: { +16166: while (__first1 != __last1 && __first2 != __last2) +16166: if (__comp(__first1, __first2)) +16166: { +16166: *__result = *__first1; +16166: ++__first1; +16166: ++__result; +16166: } +16166: else if (__comp(__first2, __first1)) +16166: { +16166: *__result = *__first2; +16166: ++__first2; +16166: ++__result; +16166: } +16166: else +16166: { +16166: ++__first1; +16166: ++__first2; +16166: } +16166: return std::copy(__first2, __last2, +16166: std::copy(__first1, __last1, __result)); +16166: } +16166: # 5468 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_symmetric_difference(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 5520 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _InputIterator2 __last2, +16166: _OutputIterator __result, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: ; +16166: ; +16166: +16166: return std::__set_symmetric_difference(__first1, __last1, +16166: __first2, __last2, __result, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: constexpr +16166: _ForwardIterator +16166: __min_element(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: if (__first == __last) +16166: return __first; +16166: _ForwardIterator __result = __first; +16166: while (++__first != __last) +16166: if (__comp(__first, __result)) +16166: __result = __first; +16166: return __result; +16166: } +16166: # 5574 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: _ForwardIterator +16166: inline min_element(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__min_element(__first, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 5599 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline _ForwardIterator +16166: min_element(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__min_element(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: constexpr +16166: _ForwardIterator +16166: __max_element(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: if (__first == __last) return __first; +16166: _ForwardIterator __result = __first; +16166: while (++__first != __last) +16166: if (__comp(__result, __first)) +16166: __result = __first; +16166: return __result; +16166: } +16166: # 5638 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline _ForwardIterator +16166: max_element(_ForwardIterator __first, _ForwardIterator __last) +16166: { +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__max_element(__first, __last, +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: # 5663 "/usr/include/c++/14/bits/stl_algo.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: inline _ForwardIterator +16166: max_element(_ForwardIterator __first, _ForwardIterator __last, +16166: _Compare __comp) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: ; +16166: +16166: return std::__max_element(__first, __last, +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: +16166: +16166: template +16166: constexpr +16166: inline _Tp +16166: min(initializer_list<_Tp> __l) +16166: { +16166: ; +16166: return *std::__min_element(__l.begin(), __l.end(), +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: +16166: template +16166: constexpr +16166: inline _Tp +16166: min(initializer_list<_Tp> __l, _Compare __comp) +16166: { +16166: ; +16166: return *std::__min_element(__l.begin(), __l.end(), +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: template +16166: constexpr +16166: inline _Tp +16166: max(initializer_list<_Tp> __l) +16166: { +16166: ; +16166: return *std::__max_element(__l.begin(), __l.end(), +16166: __gnu_cxx::__ops::__iter_less_iter()); +16166: } +16166: +16166: template +16166: constexpr +16166: inline _Tp +16166: max(initializer_list<_Tp> __l, _Compare __comp) +16166: { +16166: ; +16166: return *std::__max_element(__l.begin(), __l.end(), +16166: __gnu_cxx::__ops::__iter_comp_iter(__comp)); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: _RandomAccessIterator +16166: __sample(_InputIterator __first, _InputIterator __last, input_iterator_tag, +16166: _RandomAccessIterator __out, random_access_iterator_tag, +16166: _Size __n, _UniformRandomBitGenerator&& __g) +16166: { +16166: using __distrib_type = uniform_int_distribution<_Size>; +16166: using __param_type = typename __distrib_type::param_type; +16166: __distrib_type __d{}; +16166: _Size __sample_sz = 0; +16166: while (__first != __last && __sample_sz != __n) +16166: { +16166: __out[__sample_sz++] = *__first; +16166: ++__first; +16166: } +16166: for (auto __pop_sz = __sample_sz; __first != __last; +16166: ++__first, (void) ++__pop_sz) +16166: { +16166: const auto __k = __d(__g, __param_type{0, __pop_sz}); +16166: if (__k < __n) +16166: __out[__k] = *__first; +16166: } +16166: return __out + __sample_sz; +16166: } +16166: +16166: +16166: template +16166: _OutputIterator +16166: __sample(_ForwardIterator __first, _ForwardIterator __last, +16166: forward_iterator_tag, +16166: _OutputIterator __out, _Cat, +16166: _Size __n, _UniformRandomBitGenerator&& __g) +16166: { +16166: using __distrib_type = uniform_int_distribution<_Size>; +16166: using __param_type = typename __distrib_type::param_type; +16166: using _USize = make_unsigned_t<_Size>; +16166: using _Gen = remove_reference_t<_UniformRandomBitGenerator>; +16166: using __uc_type = common_type_t; +16166: +16166: if (__first == __last) +16166: return __out; +16166: +16166: __distrib_type __d{}; +16166: _Size __unsampled_sz = std::distance(__first, __last); +16166: __n = std::min(__n, __unsampled_sz); +16166: +16166: +16166: +16166: +16166: const __uc_type __urngrange = __g.max() - __g.min(); +16166: if (__urngrange / __uc_type(__unsampled_sz) >= __uc_type(__unsampled_sz)) +16166: +16166: +16166: { +16166: while (__n != 0 && __unsampled_sz >= 2) +16166: { +16166: const pair<_Size, _Size> __p = +16166: __gen_two_uniform_ints(__unsampled_sz, __unsampled_sz - 1, __g); +16166: +16166: --__unsampled_sz; +16166: if (__p.first < __n) +16166: { +16166: *__out++ = *__first; +16166: --__n; +16166: } +16166: +16166: ++__first; +16166: +16166: if (__n == 0) break; +16166: +16166: --__unsampled_sz; +16166: if (__p.second < __n) +16166: { +16166: *__out++ = *__first; +16166: --__n; +16166: } +16166: +16166: ++__first; +16166: } +16166: } +16166: +16166: +16166: +16166: for (; __n != 0; ++__first) +16166: if (__d(__g, __param_type{0, --__unsampled_sz}) < __n) +16166: { +16166: *__out++ = *__first; +16166: --__n; +16166: } +16166: return __out; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: _SampleIterator +16166: sample(_PopulationIterator __first, _PopulationIterator __last, +16166: _SampleIterator __out, _Distance __n, +16166: _UniformRandomBitGenerator&& __g) +16166: { +16166: using __pop_cat = typename +16166: std::iterator_traits<_PopulationIterator>::iterator_category; +16166: using __samp_cat = typename +16166: std::iterator_traits<_SampleIterator>::iterator_category; +16166: +16166: static_assert( +16166: __or_, +16166: is_convertible<__samp_cat, random_access_iterator_tag>>::value, +16166: "output range must use a RandomAccessIterator when input range" +16166: " does not meet the ForwardIterator requirements"); +16166: +16166: static_assert(is_integral<_Distance>::value, +16166: "sample size must be an integer type"); +16166: +16166: typename iterator_traits<_PopulationIterator>::difference_type __d = __n; +16166: return std:: +16166: __sample(__first, __last, __pop_cat{}, __out, __samp_cat{}, __d, +16166: std::forward<_UniformRandomBitGenerator>(__g)); +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 62 "/usr/include/c++/14/algorithm" 2 3 +16166: # 77 "/usr/include/c++/14/algorithm" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 78 "/usr/include/c++/14/algorithm" 2 3 +16166: # 86 "/usr/include/c++/14/algorithm" 3 +16166: # 1 "/usr/include/c++/14/pstl/glue_algorithm_defs.h" 1 3 +16166: # 17 "/usr/include/c++/14/pstl/glue_algorithm_defs.h" 3 +16166: namespace std +16166: { +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: any_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: all_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: none_of(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: for_each(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Function __f); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: for_each_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __n, _Function __f); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: find_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: find_if_not(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +16166: find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +16166: _ForwardIterator2 __s_last, _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +16166: find_end(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +16166: _ForwardIterator2 __s_last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +16166: find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __s_first, _ForwardIterator2 __s_last, _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +16166: find_first_of(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __s_first, _ForwardIterator2 __s_last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: adjacent_find(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, +16166: typename iterator_traits<_ForwardIterator>::difference_type> +16166: count(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, +16166: typename iterator_traits<_ForwardIterator>::difference_type> +16166: count_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Predicate __pred); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +16166: search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +16166: _ForwardIterator2 __s_last, _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator1> +16166: search(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __s_first, +16166: _ForwardIterator2 __s_last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count, +16166: const _Tp& __value, _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: search_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Size __count, +16166: const _Tp& __value); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: copy_n(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _Size __n, _ForwardIterator2 __result); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 result, +16166: _Predicate __pred); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: swap_ranges(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +16166: _UnaryOperation __op); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: transform(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator __result, _BinaryOperation __op); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: replace_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred, +16166: const _Tp& __new_value); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: replace(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __old_value, +16166: const _Tp& __new_value); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: replace_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _UnaryPredicate __pred, const _Tp& __new_value); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: replace_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +16166: const _Tp& __old_value, const _Tp& __new_value); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: fill(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: fill_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size __count, const _Tp& __value); +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: generate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Generator __g); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: generate_n(_ExecutionPolicy&& __exec, _ForwardIterator __first, _Size count, _Generator __g); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: remove_copy_if(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _Predicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: remove_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +16166: const _Tp& __value); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: remove_if(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: remove(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, const _Tp& __value); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: unique(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result, +16166: _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: unique_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __result); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: reverse(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: reverse_copy(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last, +16166: _ForwardIterator __d_first); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: rotate(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __middle, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: rotate_copy(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __middle, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: is_partitioned(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: partition(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _UnaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _BidirectionalIterator> +16166: stable_partition(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __last, +16166: _UnaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +16166: partition_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, +16166: _ForwardIterator1 __out_true, _ForwardIterator2 __out_false, _UnaryPredicate __pred); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: stable_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +16166: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2, _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +16166: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _BinaryPredicate __pred); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +16166: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator1, _ForwardIterator2>> +16166: mismatch(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _BinaryPredicate __p); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2, _BinaryPredicate __p); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2); +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: move(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, _ForwardIterator2 __d_first); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: partial_sort(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __middle, +16166: _RandomAccessIterator __last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +16166: partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, +16166: _RandomAccessIterator __d_first, _RandomAccessIterator __d_last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +16166: partial_sort_copy(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, +16166: _RandomAccessIterator __d_first, _RandomAccessIterator __d_last); +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: is_sorted_until(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: is_sorted(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth, +16166: _RandomAccessIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: nth_element(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __nth, +16166: _RandomAccessIterator __last); +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2, _ForwardIterator __d_first, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: merge(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2, _ForwardIterator __d_first); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, void> +16166: inplace_merge(_ExecutionPolicy&& __exec, _BidirectionalIterator __first, _BidirectionalIterator __middle, +16166: _BidirectionalIterator __last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: includes(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_union(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2, +16166: _ForwardIterator2 __last2, _ForwardIterator __result); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_intersection(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator result, +16166: _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: set_symmetric_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _ForwardIterator __result); +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +16166: is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _RandomAccessIterator> +16166: is_heap_until(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: is_heap(_ExecutionPolicy&& __exec, _RandomAccessIterator __first, _RandomAccessIterator __last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: min_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator> +16166: max_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>> +16166: minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, std::pair<_ForwardIterator, _ForwardIterator>> +16166: minmax_element(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2, _Compare __comp); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool> +16166: lexicographical_compare(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _ForwardIterator2 __last2); +16166: +16166: } +16166: # 87 "/usr/include/c++/14/algorithm" 2 3 +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 1 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +16166: +16166: +16166: # 1 "/usr/include/c++/14/thread" 1 3 +16166: # 32 "/usr/include/c++/14/thread" 3 +16166: +16166: # 33 "/usr/include/c++/14/thread" 3 +16166: # 45 "/usr/include/c++/14/thread" 3 +16166: # 1 "/usr/include/c++/14/bits/std_thread.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/std_thread.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/std_thread.h" 3 +16166: # 52 "/usr/include/c++/14/bits/std_thread.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 82 "/usr/include/c++/14/bits/std_thread.h" 3 +16166: class thread +16166: { +16166: public: +16166: +16166: using native_handle_type = __gthread_t; +16166: # 96 "/usr/include/c++/14/bits/std_thread.h" 3 +16166: class id +16166: { +16166: native_handle_type _M_thread; +16166: +16166: public: +16166: id() noexcept : _M_thread() { } +16166: +16166: explicit +16166: id(native_handle_type __id) : _M_thread(__id) { } +16166: +16166: private: +16166: friend class thread; +16166: friend struct hash; +16166: +16166: friend bool +16166: operator==(id __x, id __y) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator<(id __x, id __y) noexcept; +16166: +16166: +16166: template +16166: friend basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __out, id __id); +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: private: +16166: id _M_id; +16166: +16166: +16166: +16166: +16166: template +16166: using __not_same = __not_, thread>>; +16166: +16166: public: +16166: thread() noexcept = default; +16166: +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: +16166: +16166: static void +16166: _M_thread_deps_never_run() { +16166: +16166: +16166: +16166: +16166: } +16166: +16166: public: +16166: template>> +16166: explicit +16166: thread(_Callable&& __f, _Args&&... __args) +16166: { +16166: static_assert( __is_invocable::type, +16166: typename decay<_Args>::type...>::value, +16166: "std::thread arguments must be invocable after conversion to rvalues" +16166: ); +16166: +16166: using _Wrapper = _Call_wrapper<_Callable, _Args...>; +16166: +16166: +16166: _M_start_thread(_State_ptr(new _State_impl<_Wrapper>( +16166: std::forward<_Callable>(__f), std::forward<_Args>(__args)...)), +16166: _M_thread_deps_never_run); +16166: } +16166: +16166: +16166: ~thread() +16166: { +16166: if (joinable()) +16166: std::__terminate(); +16166: } +16166: +16166: thread(const thread&) = delete; +16166: +16166: thread(thread&& __t) noexcept +16166: { swap(__t); } +16166: +16166: thread& operator=(const thread&) = delete; +16166: +16166: thread& operator=(thread&& __t) noexcept +16166: { +16166: if (joinable()) +16166: std::__terminate(); +16166: swap(__t); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(thread& __t) noexcept +16166: { std::swap(_M_id, __t._M_id); } +16166: +16166: bool +16166: joinable() const noexcept +16166: { return !(_M_id == id()); } +16166: +16166: void +16166: join(); +16166: +16166: void +16166: detach(); +16166: +16166: id +16166: get_id() const noexcept +16166: { return _M_id; } +16166: +16166: +16166: +16166: native_handle_type +16166: native_handle() +16166: { return _M_id._M_thread; } +16166: +16166: +16166: static unsigned int +16166: hardware_concurrency() noexcept; +16166: +16166: +16166: +16166: private: +16166: +16166: +16166: +16166: struct _State +16166: { +16166: virtual ~_State(); +16166: virtual void _M_run() = 0; +16166: }; +16166: using _State_ptr = unique_ptr<_State>; +16166: +16166: private: +16166: template +16166: struct _State_impl : public _State +16166: { +16166: _Callable _M_func; +16166: +16166: template +16166: _State_impl(_Args&&... __args) +16166: : _M_func(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: void +16166: _M_run() { _M_func(); } +16166: }; +16166: +16166: void +16166: _M_start_thread(_State_ptr, void (*)()); +16166: # 278 "/usr/include/c++/14/bits/std_thread.h" 3 +16166: private: +16166: +16166: template +16166: struct _Invoker +16166: { +16166: template +16166: explicit +16166: _Invoker(_Args&&... __args) +16166: : _M_t(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: _Tuple _M_t; +16166: +16166: template +16166: struct __result; +16166: template +16166: struct __result> +16166: : __invoke_result<_Fn, _Args...> +16166: { }; +16166: +16166: template +16166: typename __result<_Tuple>::type +16166: _M_invoke(_Index_tuple<_Ind...>) +16166: { return std::__invoke(std::get<_Ind>(std::move(_M_t))...); } +16166: +16166: typename __result<_Tuple>::type +16166: operator()() +16166: { +16166: using _Indices +16166: = typename _Build_index_tuple::value>::__type; +16166: return _M_invoke(_Indices()); +16166: } +16166: }; +16166: +16166: public: +16166: +16166: template +16166: using _Call_wrapper = _Invoker::type...>>; +16166: +16166: +16166: }; +16166: # 327 "/usr/include/c++/14/bits/std_thread.h" 3 +16166: inline void +16166: swap(thread& __x, thread& __y) noexcept +16166: { __x.swap(__y); } +16166: +16166: +16166: inline bool +16166: operator==(thread::id __x, thread::id __y) noexcept +16166: { +16166: +16166: +16166: +16166: +16166: return __x._M_thread == __y._M_thread; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: size_t +16166: operator()(const thread::id& __id) const noexcept +16166: { return std::_Hash_impl::hash(__id._M_thread); } +16166: }; +16166: +16166: namespace this_thread +16166: { +16166: +16166: inline thread::id +16166: get_id() noexcept +16166: { +16166: +16166: +16166: +16166: return thread::id(pthread_self()); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: inline void +16166: yield() noexcept +16166: { +16166: +16166: __gthread_yield(); +16166: +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 46 "/usr/include/c++/14/thread" 2 3 +16166: # 1 "/usr/include/c++/14/bits/this_thread_sleep.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/chrono.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/chrono.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/chrono.h" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/ratio" 1 3 +16166: # 33 "/usr/include/c++/14/ratio" 3 +16166: +16166: # 34 "/usr/include/c++/14/ratio" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cstdint" 1 3 +16166: # 32 "/usr/include/c++/14/cstdint" 3 +16166: +16166: # 33 "/usr/include/c++/14/cstdint" 3 +16166: # 48 "/usr/include/c++/14/cstdint" 3 +16166: namespace std +16166: { +16166: +16166: using ::int8_t; +16166: using ::int16_t; +16166: using ::int32_t; +16166: using ::int64_t; +16166: +16166: using ::int_fast8_t; +16166: using ::int_fast16_t; +16166: using ::int_fast32_t; +16166: using ::int_fast64_t; +16166: +16166: using ::int_least8_t; +16166: using ::int_least16_t; +16166: using ::int_least32_t; +16166: using ::int_least64_t; +16166: +16166: using ::intmax_t; +16166: using ::intptr_t; +16166: +16166: using ::uint8_t; +16166: using ::uint16_t; +16166: using ::uint32_t; +16166: using ::uint64_t; +16166: +16166: using ::uint_fast8_t; +16166: using ::uint_fast16_t; +16166: using ::uint_fast32_t; +16166: using ::uint_fast64_t; +16166: +16166: using ::uint_least8_t; +16166: using ::uint_least16_t; +16166: using ::uint_least32_t; +16166: using ::uint_least64_t; +16166: +16166: using ::uintmax_t; +16166: using ::uintptr_t; +16166: # 142 "/usr/include/c++/14/cstdint" 3 +16166: } +16166: # 41 "/usr/include/c++/14/ratio" 2 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 44 "/usr/include/c++/14/ratio" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 59 "/usr/include/c++/14/ratio" 3 +16166: template +16166: struct __static_sign +16166: : integral_constant +16166: { }; +16166: +16166: template +16166: struct __static_abs +16166: : integral_constant::value> +16166: { }; +16166: +16166: template +16166: struct __static_gcd +16166: : __static_gcd<_Qn, (_Pn % _Qn)> +16166: { }; +16166: +16166: template +16166: struct __static_gcd<_Pn, 0> +16166: : integral_constant::value> +16166: { }; +16166: +16166: template +16166: struct __static_gcd<0, _Qn> +16166: : integral_constant::value> +16166: { }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __safe_multiply +16166: { +16166: private: +16166: static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); +16166: +16166: static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; +16166: static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; +16166: static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; +16166: static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; +16166: +16166: static_assert(__a1 == 0 || __b1 == 0, +16166: "overflow in multiplication"); +16166: static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), +16166: "overflow in multiplication"); +16166: static_assert(__b0 * __a0 <= 0x7fffffffffffffffLL, +16166: "overflow in multiplication"); +16166: static_assert((__a0 * __b1 + __b0 * __a1) * __c +16166: <= 0x7fffffffffffffffLL - __b0 * __a0, +16166: "overflow in multiplication"); +16166: +16166: public: +16166: static const intmax_t value = _Pn * _Qn; +16166: }; +16166: +16166: +16166: +16166: template +16166: struct __big_less +16166: : integral_constant +16166: { }; +16166: +16166: template +16166: struct __big_add +16166: { +16166: static constexpr uintmax_t __lo = __lo1 + __lo2; +16166: static constexpr uintmax_t __hi = (__hi1 + __hi2 + +16166: (__lo1 + __lo2 < __lo1)); +16166: }; +16166: +16166: +16166: template +16166: struct __big_sub +16166: { +16166: static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, +16166: "Internal library error"); +16166: static constexpr uintmax_t __lo = __lo1 - __lo2; +16166: static constexpr uintmax_t __hi = (__hi1 - __hi2 - +16166: (__lo1 < __lo2)); +16166: }; +16166: +16166: +16166: template +16166: struct __big_mul +16166: { +16166: private: +16166: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); +16166: static constexpr uintmax_t __x0 = __x % __c; +16166: static constexpr uintmax_t __x1 = __x / __c; +16166: static constexpr uintmax_t __y0 = __y % __c; +16166: static constexpr uintmax_t __y1 = __y / __c; +16166: static constexpr uintmax_t __x0y0 = __x0 * __y0; +16166: static constexpr uintmax_t __x0y1 = __x0 * __y1; +16166: static constexpr uintmax_t __x1y0 = __x1 * __y0; +16166: static constexpr uintmax_t __x1y1 = __x1 * __y1; +16166: static constexpr uintmax_t __mix = __x0y1 + __x1y0; +16166: static constexpr uintmax_t __mix_lo = __mix * __c; +16166: static constexpr uintmax_t __mix_hi +16166: = __mix / __c + ((__mix < __x0y1) ? __c : 0); +16166: typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; +16166: public: +16166: static constexpr uintmax_t __hi = _Res::__hi; +16166: static constexpr uintmax_t __lo = _Res::__lo; +16166: }; +16166: +16166: +16166: +16166: template +16166: struct __big_div_impl +16166: { +16166: private: +16166: static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), +16166: "Internal library error"); +16166: static_assert(__n1 < __d, "Internal library error"); +16166: static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); +16166: static constexpr uintmax_t __d1 = __d / __c; +16166: static constexpr uintmax_t __d0 = __d % __c; +16166: +16166: static constexpr uintmax_t __q1x = __n1 / __d1; +16166: static constexpr uintmax_t __r1x = __n1 % __d1; +16166: static constexpr uintmax_t __m = __q1x * __d0; +16166: static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; +16166: static constexpr uintmax_t __r1z = __r1y + __d; +16166: static constexpr uintmax_t __r1 +16166: = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) +16166: ? (__r1z + __d) : __r1z : __r1y) - __m; +16166: static constexpr uintmax_t __q1 +16166: = __q1x - ((__r1y < __m) +16166: ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); +16166: static constexpr uintmax_t __q0x = __r1 / __d1; +16166: static constexpr uintmax_t __r0x = __r1 % __d1; +16166: static constexpr uintmax_t __n = __q0x * __d0; +16166: static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; +16166: static constexpr uintmax_t __r0z = __r0y + __d; +16166: static constexpr uintmax_t __r0 +16166: = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) +16166: ? (__r0z + __d) : __r0z : __r0y) - __n; +16166: static constexpr uintmax_t __q0 +16166: = __q0x - ((__r0y < __n) ? ((__r0z >= __d) +16166: && (__r0z < __n)) ? 2 : 1 : 0); +16166: +16166: public: +16166: static constexpr uintmax_t __quot = __q1 * __c + __q0; +16166: static constexpr uintmax_t __rem = __r0; +16166: +16166: private: +16166: typedef __big_mul<__quot, __d> _Prod; +16166: typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; +16166: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, +16166: "Internal library error"); +16166: }; +16166: +16166: template +16166: struct __big_div +16166: { +16166: private: +16166: static_assert(__d != 0, "Internal library error"); +16166: static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), +16166: "This library calls __builtin_clzll on uintmax_t, which " +16166: "is unsafe on your platform. Please complain to " +16166: "http://gcc.gnu.org/bugzilla/"); +16166: static constexpr int __shift = __builtin_clzll(__d); +16166: static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; +16166: static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; +16166: static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; +16166: static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; +16166: static constexpr uintmax_t __new_d = __d * __c1; +16166: static constexpr uintmax_t __new_n0 = __n0 * __c1; +16166: static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; +16166: static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; +16166: static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; +16166: typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; +16166: +16166: public: +16166: static constexpr uintmax_t __quot_hi = __n1 / __d; +16166: static constexpr uintmax_t __quot_lo = _Res::__quot; +16166: static constexpr uintmax_t __rem = _Res::__rem / __c1; +16166: +16166: private: +16166: typedef __big_mul<__quot_lo, __d> _P0; +16166: typedef __big_mul<__quot_hi, __d> _P1; +16166: typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; +16166: +16166: static_assert(_P1::__hi == 0, "Internal library error"); +16166: static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); +16166: +16166: static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, +16166: "Internal library error"); +16166: static_assert(__rem < __d, "Internal library error"); +16166: }; +16166: # 268 "/usr/include/c++/14/ratio" 3 +16166: template +16166: struct ratio +16166: { +16166: static_assert(_Den != 0, "denominator cannot be zero"); +16166: static_assert(_Num >= -0x7fffffffffffffffLL && _Den >= -0x7fffffffffffffffLL, +16166: "out of range"); +16166: +16166: +16166: static constexpr intmax_t num = +16166: _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; +16166: +16166: static constexpr intmax_t den = +16166: __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; +16166: +16166: typedef ratio type; +16166: }; +16166: # 295 "/usr/include/c++/14/ratio" 3 +16166: template +16166: struct __is_ratio +16166: : std::false_type +16166: { }; +16166: +16166: template +16166: struct __is_ratio> +16166: : std::true_type +16166: { }; +16166: +16166: +16166: template +16166: constexpr bool __is_ratio_v = false; +16166: template +16166: constexpr bool __is_ratio_v> = true; +16166: +16166: +16166: template +16166: constexpr bool +16166: __are_both_ratios() noexcept +16166: { +16166: +16166: if constexpr (__is_ratio_v<_R1>) +16166: if constexpr (__is_ratio_v<_R2>) +16166: return true; +16166: return false; +16166: +16166: +16166: +16166: } +16166: +16166: template +16166: struct __ratio_multiply +16166: { +16166: static_assert(std::__are_both_ratios<_R1, _R2>(), +16166: "both template arguments must be a std::ratio"); +16166: +16166: private: +16166: static const intmax_t __gcd1 = +16166: __static_gcd<_R1::num, _R2::den>::value; +16166: static const intmax_t __gcd2 = +16166: __static_gcd<_R2::num, _R1::den>::value; +16166: +16166: public: +16166: typedef ratio< +16166: __safe_multiply<(_R1::num / __gcd1), +16166: (_R2::num / __gcd2)>::value, +16166: __safe_multiply<(_R1::den / __gcd2), +16166: (_R2::den / __gcd1)>::value> type; +16166: +16166: static constexpr intmax_t num = type::num; +16166: static constexpr intmax_t den = type::den; +16166: }; +16166: # 360 "/usr/include/c++/14/ratio" 3 +16166: template +16166: using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; +16166: +16166: +16166: +16166: template +16166: struct __ratio_divide +16166: { +16166: static_assert(_R2::num != 0, "division by 0"); +16166: +16166: typedef typename __ratio_multiply< +16166: _R1, +16166: ratio<_R2::den, _R2::num>>::type type; +16166: +16166: static constexpr intmax_t num = type::num; +16166: static constexpr intmax_t den = type::den; +16166: }; +16166: # 389 "/usr/include/c++/14/ratio" 3 +16166: template +16166: using ratio_divide = typename __ratio_divide<_R1, _R2>::type; +16166: +16166: +16166: template +16166: struct ratio_equal +16166: : integral_constant +16166: { +16166: static_assert(std::__are_both_ratios<_R1, _R2>(), +16166: "both template arguments must be a std::ratio"); +16166: }; +16166: +16166: +16166: template +16166: struct ratio_not_equal +16166: : integral_constant::value> +16166: { }; +16166: +16166: +16166: +16166: +16166: template, +16166: typename _Right = __big_mul<_R2::num,_R1::den> > +16166: struct __ratio_less_impl_1 +16166: : integral_constant::value> +16166: { }; +16166: +16166: template::value +16166: != __static_sign<_R2::num>::value)), +16166: bool = (__static_sign<_R1::num>::value == -1 +16166: && __static_sign<_R2::num>::value == -1)> +16166: struct __ratio_less_impl +16166: : __ratio_less_impl_1<_R1, _R2>::type +16166: { }; +16166: +16166: template +16166: struct __ratio_less_impl<_R1, _R2, true, false> +16166: : integral_constant +16166: { }; +16166: +16166: template +16166: struct __ratio_less_impl<_R1, _R2, false, true> +16166: : __ratio_less_impl_1, +16166: ratio<-_R1::num, _R1::den> >::type +16166: { }; +16166: +16166: +16166: +16166: +16166: template +16166: struct ratio_less +16166: : __ratio_less_impl<_R1, _R2>::type +16166: { +16166: static_assert(std::__are_both_ratios<_R1, _R2>(), +16166: "both template arguments must be a std::ratio"); +16166: }; +16166: +16166: +16166: template +16166: struct ratio_less_equal +16166: : integral_constant::value> +16166: { }; +16166: +16166: +16166: template +16166: struct ratio_greater +16166: : integral_constant::value> +16166: { }; +16166: +16166: +16166: template +16166: struct ratio_greater_equal +16166: : integral_constant::value> +16166: { }; +16166: +16166: +16166: template +16166: inline constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value; +16166: template +16166: inline constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; +16166: template +16166: inline constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value; +16166: template +16166: inline constexpr bool ratio_less_equal_v +16166: = ratio_less_equal<_R1, _R2>::value; +16166: template +16166: inline constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value; +16166: template +16166: inline constexpr bool ratio_greater_equal_v +16166: = ratio_greater_equal<_R1, _R2>::value; +16166: +16166: +16166: +16166: +16166: template= 0), +16166: bool = (_R2::num >= 0), +16166: bool = ratio_less::value, _R1::den>, +16166: ratio<__static_abs<_R2::num>::value, _R2::den> >::value> +16166: struct __ratio_add_impl +16166: { +16166: private: +16166: typedef typename __ratio_add_impl< +16166: ratio<-_R1::num, _R1::den>, +16166: ratio<-_R2::num, _R2::den> >::type __t; +16166: public: +16166: typedef ratio<-__t::num, __t::den> type; +16166: }; +16166: +16166: +16166: template +16166: struct __ratio_add_impl<_R1, _R2, true, true, __b> +16166: { +16166: private: +16166: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; +16166: static constexpr uintmax_t __d2 = _R2::den / __g; +16166: typedef __big_mul<_R1::den, __d2> __d; +16166: typedef __big_mul<_R1::num, _R2::den / __g> __x; +16166: typedef __big_mul<_R2::num, _R1::den / __g> __y; +16166: typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; +16166: static_assert(__n::__hi >= __x::__hi, "Internal library error"); +16166: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; +16166: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; +16166: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; +16166: static_assert(__n_final::__rem == 0, "Internal library error"); +16166: static_assert(__n_final::__quot_hi == 0 && +16166: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); +16166: typedef __big_mul<_R1::den / __g2, __d2> __d_final; +16166: static_assert(__d_final::__hi == 0 && +16166: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); +16166: public: +16166: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; +16166: }; +16166: +16166: template +16166: struct __ratio_add_impl<_R1, _R2, false, true, true> +16166: : __ratio_add_impl<_R2, _R1> +16166: { }; +16166: +16166: +16166: template +16166: struct __ratio_add_impl<_R1, _R2, true, false, false> +16166: { +16166: private: +16166: static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; +16166: static constexpr uintmax_t __d2 = _R2::den / __g; +16166: typedef __big_mul<_R1::den, __d2> __d; +16166: typedef __big_mul<_R1::num, _R2::den / __g> __x; +16166: typedef __big_mul<-_R2::num, _R1::den / __g> __y; +16166: typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; +16166: typedef __big_div<__n::__hi, __n::__lo, __g> __ng; +16166: static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; +16166: typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; +16166: static_assert(__n_final::__rem == 0, "Internal library error"); +16166: static_assert(__n_final::__quot_hi == 0 && +16166: __n_final::__quot_lo <= 0x7fffffffffffffffLL, "overflow in addition"); +16166: typedef __big_mul<_R1::den / __g2, __d2> __d_final; +16166: static_assert(__d_final::__hi == 0 && +16166: __d_final::__lo <= 0x7fffffffffffffffLL, "overflow in addition"); +16166: public: +16166: typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; +16166: }; +16166: +16166: template +16166: struct __ratio_add +16166: { +16166: static_assert(std::__are_both_ratios<_R1, _R2>(), +16166: "both template arguments must be a std::ratio"); +16166: +16166: typedef typename __ratio_add_impl<_R1, _R2>::type type; +16166: static constexpr intmax_t num = type::num; +16166: static constexpr intmax_t den = type::den; +16166: }; +16166: # 578 "/usr/include/c++/14/ratio" 3 +16166: template +16166: using ratio_add = typename __ratio_add<_R1, _R2>::type; +16166: +16166: +16166: +16166: template +16166: struct __ratio_subtract +16166: { +16166: typedef typename __ratio_add< +16166: _R1, +16166: ratio<-_R2::num, _R2::den>>::type type; +16166: +16166: static constexpr intmax_t num = type::num; +16166: static constexpr intmax_t den = type::den; +16166: }; +16166: # 605 "/usr/include/c++/14/ratio" 3 +16166: template +16166: using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; +16166: # 618 "/usr/include/c++/14/ratio" 3 +16166: using atto = ratio< 1, 1000000000000000000>; +16166: using femto = ratio< 1, 1000000000000000>; +16166: using pico = ratio< 1, 1000000000000>; +16166: using nano = ratio< 1, 1000000000>; +16166: using micro = ratio< 1, 1000000>; +16166: using milli = ratio< 1, 1000>; +16166: using centi = ratio< 1, 100>; +16166: using deci = ratio< 1, 10>; +16166: using deca = ratio< 10, 1>; +16166: using hecto = ratio< 100, 1>; +16166: using kilo = ratio< 1000, 1>; +16166: using mega = ratio< 1000000, 1>; +16166: using giga = ratio< 1000000000, 1>; +16166: using tera = ratio< 1000000000000, 1>; +16166: using peta = ratio< 1000000000000000, 1>; +16166: using exa = ratio< 1000000000000000000, 1>; +16166: # 646 "/usr/include/c++/14/ratio" 3 +16166: +16166: } +16166: # 38 "/usr/include/c++/14/bits/chrono.h" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/limits" 1 3 +16166: # 40 "/usr/include/c++/14/limits" 3 +16166: +16166: # 41 "/usr/include/c++/14/limits" 3 +16166: # 158 "/usr/include/c++/14/limits" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum float_round_style +16166: { +16166: round_indeterminate = -1, +16166: round_toward_zero = 0, +16166: round_to_nearest = 1, +16166: round_toward_infinity = 2, +16166: round_toward_neg_infinity = 3 +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum float_denorm_style +16166: { +16166: +16166: denorm_indeterminate = -1, +16166: +16166: denorm_absent = 0, +16166: +16166: denorm_present = 1 +16166: }; +16166: # 202 "/usr/include/c++/14/limits" 3 +16166: struct __numeric_limits_base +16166: { +16166: +16166: +16166: static constexpr bool is_specialized = false; +16166: +16166: +16166: +16166: +16166: static constexpr int digits = 0; +16166: +16166: +16166: static constexpr int digits10 = 0; +16166: +16166: +16166: +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: +16166: +16166: static constexpr bool is_signed = false; +16166: +16166: +16166: static constexpr bool is_integer = false; +16166: +16166: +16166: +16166: +16166: static constexpr bool is_exact = false; +16166: +16166: +16166: +16166: static constexpr int radix = 0; +16166: +16166: +16166: +16166: static constexpr int min_exponent = 0; +16166: +16166: +16166: +16166: static constexpr int min_exponent10 = 0; +16166: +16166: +16166: +16166: +16166: static constexpr int max_exponent = 0; +16166: +16166: +16166: +16166: static constexpr int max_exponent10 = 0; +16166: +16166: +16166: static constexpr bool has_infinity = false; +16166: +16166: +16166: +16166: static constexpr bool has_quiet_NaN = false; +16166: +16166: +16166: +16166: static constexpr bool has_signaling_NaN = false; +16166: +16166: +16166: static constexpr float_denorm_style has_denorm = denorm_absent; +16166: +16166: +16166: +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: +16166: +16166: static constexpr bool is_iec559 = false; +16166: +16166: +16166: +16166: +16166: static constexpr bool is_bounded = false; +16166: # 288 "/usr/include/c++/14/limits" 3 +16166: static constexpr bool is_modulo = false; +16166: +16166: +16166: static constexpr bool traps = false; +16166: +16166: +16166: static constexpr bool tinyness_before = false; +16166: +16166: +16166: +16166: +16166: static constexpr float_round_style round_style = +16166: round_toward_zero; +16166: }; +16166: # 311 "/usr/include/c++/14/limits" 3 +16166: template +16166: struct numeric_limits : public __numeric_limits_base +16166: { +16166: +16166: +16166: static constexpr _Tp +16166: min() noexcept { return _Tp(); } +16166: +16166: +16166: static constexpr _Tp +16166: max() noexcept { return _Tp(); } +16166: +16166: +16166: +16166: +16166: static constexpr _Tp +16166: lowest() noexcept { return _Tp(); } +16166: +16166: +16166: +16166: +16166: static constexpr _Tp +16166: epsilon() noexcept { return _Tp(); } +16166: +16166: +16166: static constexpr _Tp +16166: round_error() noexcept { return _Tp(); } +16166: +16166: +16166: static constexpr _Tp +16166: infinity() noexcept { return _Tp(); } +16166: +16166: +16166: +16166: static constexpr _Tp +16166: quiet_NaN() noexcept { return _Tp(); } +16166: +16166: +16166: +16166: static constexpr _Tp +16166: signaling_NaN() noexcept { return _Tp(); } +16166: +16166: +16166: +16166: +16166: static constexpr _Tp +16166: denorm_min() noexcept { return _Tp(); } +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct numeric_limits +16166: : public numeric_limits<_Tp> { }; +16166: +16166: template +16166: struct numeric_limits +16166: : public numeric_limits<_Tp> { }; +16166: +16166: template +16166: struct numeric_limits +16166: : public numeric_limits<_Tp> { }; +16166: # 383 "/usr/include/c++/14/limits" 3 +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr bool +16166: min() noexcept { return false; } +16166: +16166: static constexpr bool +16166: max() noexcept { return true; } +16166: +16166: +16166: static constexpr bool +16166: lowest() noexcept { return min(); } +16166: +16166: static constexpr int digits = 1; +16166: static constexpr int digits10 = 0; +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = false; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr bool +16166: epsilon() noexcept { return false; } +16166: +16166: static constexpr bool +16166: round_error() noexcept { return false; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr bool +16166: infinity() noexcept { return false; } +16166: +16166: static constexpr bool +16166: quiet_NaN() noexcept { return false; } +16166: +16166: static constexpr bool +16166: signaling_NaN() noexcept { return false; } +16166: +16166: static constexpr bool +16166: denorm_min() noexcept { return false; } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: +16166: +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr char +16166: 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); } +16166: +16166: static constexpr char +16166: max() noexcept { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); } +16166: +16166: +16166: static constexpr char +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits = (sizeof(char) * 8 - ((char)(-1) < 0)); +16166: static constexpr int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = ((char)(-1) < 0); +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr char +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr char +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr +16166: char infinity() noexcept { return char(); } +16166: +16166: static constexpr char +16166: quiet_NaN() noexcept { return char(); } +16166: +16166: static constexpr char +16166: signaling_NaN() noexcept { return char(); } +16166: +16166: static constexpr char +16166: denorm_min() noexcept { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = !is_signed; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr signed char +16166: min() noexcept { return -0x7f - 1; } +16166: +16166: static constexpr signed char +16166: max() noexcept { return 0x7f; } +16166: +16166: +16166: static constexpr signed char +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr signed char +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr signed char +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr signed char +16166: infinity() noexcept { return static_cast(0); } +16166: +16166: static constexpr signed char +16166: quiet_NaN() noexcept { return static_cast(0); } +16166: +16166: static constexpr signed char +16166: signaling_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr signed char +16166: denorm_min() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr unsigned char +16166: min() noexcept { return 0; } +16166: +16166: static constexpr unsigned char +16166: max() noexcept { return 0x7f * 2U + 1; } +16166: +16166: +16166: static constexpr unsigned char +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits +16166: = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = false; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr unsigned char +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr unsigned char +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr unsigned char +16166: infinity() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned char +16166: quiet_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned char +16166: signaling_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned char +16166: denorm_min() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = true; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr wchar_t +16166: 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); } +16166: +16166: static constexpr wchar_t +16166: 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); } +16166: +16166: +16166: static constexpr wchar_t +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = ((wchar_t)(-1) < 0); +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr wchar_t +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr wchar_t +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr wchar_t +16166: infinity() noexcept { return wchar_t(); } +16166: +16166: static constexpr wchar_t +16166: quiet_NaN() noexcept { return wchar_t(); } +16166: +16166: static constexpr wchar_t +16166: signaling_NaN() noexcept { return wchar_t(); } +16166: +16166: static constexpr wchar_t +16166: denorm_min() noexcept { return wchar_t(); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = !is_signed; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: # 796 "/usr/include/c++/14/limits" 3 +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr char16_t +16166: 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); } +16166: +16166: static constexpr char16_t +16166: 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); } +16166: +16166: static constexpr char16_t +16166: lowest() noexcept { return min(); } +16166: +16166: static constexpr int digits = (sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)); +16166: static constexpr int digits10 = ((sizeof(char16_t) * 8 - ((char16_t)(-1) < 0)) * 643L / 2136); +16166: static constexpr int max_digits10 = 0; +16166: static constexpr bool is_signed = ((char16_t)(-1) < 0); +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr char16_t +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr char16_t +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr char16_t +16166: infinity() noexcept { return char16_t(); } +16166: +16166: static constexpr char16_t +16166: quiet_NaN() noexcept { return char16_t(); } +16166: +16166: static constexpr char16_t +16166: signaling_NaN() noexcept { return char16_t(); } +16166: +16166: static constexpr char16_t +16166: denorm_min() noexcept { return char16_t(); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = !is_signed; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr char32_t +16166: 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); } +16166: +16166: static constexpr char32_t +16166: 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); } +16166: +16166: static constexpr char32_t +16166: lowest() noexcept { return min(); } +16166: +16166: static constexpr int digits = (sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)); +16166: static constexpr int digits10 = ((sizeof(char32_t) * 8 - ((char32_t)(-1) < 0)) * 643L / 2136); +16166: static constexpr int max_digits10 = 0; +16166: static constexpr bool is_signed = ((char32_t)(-1) < 0); +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr char32_t +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr char32_t +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr char32_t +16166: infinity() noexcept { return char32_t(); } +16166: +16166: static constexpr char32_t +16166: quiet_NaN() noexcept { return char32_t(); } +16166: +16166: static constexpr char32_t +16166: signaling_NaN() noexcept { return char32_t(); } +16166: +16166: static constexpr char32_t +16166: denorm_min() noexcept { return char32_t(); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = !is_signed; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style = round_toward_zero; +16166: }; +16166: +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr short +16166: min() noexcept { return -0x7fff - 1; } +16166: +16166: static constexpr short +16166: max() noexcept { return 0x7fff; } +16166: +16166: +16166: static constexpr short +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits = (sizeof(short) * 8 - ((short)(-1) < 0)); +16166: static constexpr int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr short +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr short +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr short +16166: infinity() noexcept { return short(); } +16166: +16166: static constexpr short +16166: quiet_NaN() noexcept { return short(); } +16166: +16166: static constexpr short +16166: signaling_NaN() noexcept { return short(); } +16166: +16166: static constexpr short +16166: denorm_min() noexcept { return short(); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr unsigned short +16166: min() noexcept { return 0; } +16166: +16166: static constexpr unsigned short +16166: max() noexcept { return 0x7fff * 2U + 1; } +16166: +16166: +16166: static constexpr unsigned short +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits +16166: = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = false; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr unsigned short +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr unsigned short +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr unsigned short +16166: infinity() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned short +16166: quiet_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned short +16166: signaling_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned short +16166: denorm_min() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = true; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr int +16166: min() noexcept { return -0x7fffffff - 1; } +16166: +16166: static constexpr int +16166: max() noexcept { return 0x7fffffff; } +16166: +16166: +16166: static constexpr int +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits = (sizeof(int) * 8 - ((int)(-1) < 0)); +16166: static constexpr int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr int +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr int +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr int +16166: infinity() noexcept { return static_cast(0); } +16166: +16166: static constexpr int +16166: quiet_NaN() noexcept { return static_cast(0); } +16166: +16166: static constexpr int +16166: signaling_NaN() noexcept { return static_cast(0); } +16166: +16166: static constexpr int +16166: denorm_min() noexcept { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr unsigned int +16166: min() noexcept { return 0; } +16166: +16166: static constexpr unsigned int +16166: max() noexcept { return 0x7fffffff * 2U + 1; } +16166: +16166: +16166: static constexpr unsigned int +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits +16166: = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = false; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr unsigned int +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr unsigned int +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr unsigned int +16166: infinity() noexcept { return static_cast(0); } +16166: +16166: static constexpr unsigned int +16166: quiet_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned int +16166: signaling_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned int +16166: denorm_min() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = true; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr long +16166: min() noexcept { return -0x7fffffffL - 1; } +16166: +16166: static constexpr long +16166: max() noexcept { return 0x7fffffffL; } +16166: +16166: +16166: static constexpr long +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits = (sizeof(long) * 8 - ((long)(-1) < 0)); +16166: static constexpr int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr long +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr long +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr long +16166: infinity() noexcept { return static_cast(0); } +16166: +16166: static constexpr long +16166: quiet_NaN() noexcept { return static_cast(0); } +16166: +16166: static constexpr long +16166: signaling_NaN() noexcept { return static_cast(0); } +16166: +16166: static constexpr long +16166: denorm_min() noexcept { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr unsigned long +16166: min() noexcept { return 0; } +16166: +16166: static constexpr unsigned long +16166: max() noexcept { return 0x7fffffffL * 2UL + 1; } +16166: +16166: +16166: static constexpr unsigned long +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits +16166: = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = false; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr unsigned long +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr unsigned long +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr unsigned long +16166: infinity() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned long +16166: quiet_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned long +16166: signaling_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned long +16166: denorm_min() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = true; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr long long +16166: min() noexcept { return -0x7fffffffffffffffLL - 1; } +16166: +16166: static constexpr long long +16166: max() noexcept { return 0x7fffffffffffffffLL; } +16166: +16166: +16166: static constexpr long long +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits +16166: = (sizeof(long long) * 8 - ((long long)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr long long +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr long long +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr long long +16166: infinity() noexcept { return static_cast(0); } +16166: +16166: static constexpr long long +16166: quiet_NaN() noexcept { return static_cast(0); } +16166: +16166: static constexpr long long +16166: signaling_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr long long +16166: denorm_min() noexcept { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr unsigned long long +16166: min() noexcept { return 0; } +16166: +16166: static constexpr unsigned long long +16166: max() noexcept { return 0x7fffffffffffffffLL * 2ULL + 1; } +16166: +16166: +16166: static constexpr unsigned long long +16166: lowest() noexcept { return min(); } +16166: +16166: +16166: static constexpr int digits +16166: = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)); +16166: static constexpr int digits10 +16166: = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643L / 2136); +16166: +16166: static constexpr int max_digits10 = 0; +16166: +16166: static constexpr bool is_signed = false; +16166: static constexpr bool is_integer = true; +16166: static constexpr bool is_exact = true; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr unsigned long long +16166: epsilon() noexcept { return 0; } +16166: +16166: static constexpr unsigned long long +16166: round_error() noexcept { return 0; } +16166: +16166: static constexpr int min_exponent = 0; +16166: static constexpr int min_exponent10 = 0; +16166: static constexpr int max_exponent = 0; +16166: static constexpr int max_exponent10 = 0; +16166: +16166: static constexpr bool has_infinity = false; +16166: static constexpr bool has_quiet_NaN = false; +16166: static constexpr bool has_signaling_NaN = false; +16166: static constexpr float_denorm_style has_denorm +16166: = denorm_absent; +16166: static constexpr bool has_denorm_loss = false; +16166: +16166: static constexpr unsigned long long +16166: infinity() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned long long +16166: quiet_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned long long +16166: signaling_NaN() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr unsigned long long +16166: denorm_min() noexcept +16166: { return static_cast(0); } +16166: +16166: static constexpr bool is_iec559 = false; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = true; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = false; +16166: static constexpr float_round_style round_style +16166: = round_toward_zero; +16166: }; +16166: # 1669 "/usr/include/c++/14/limits" 3 +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr float +16166: min() noexcept { return 1.1754943508222875e-38F; } +16166: +16166: static constexpr float +16166: max() noexcept { return 3.4028234663852886e+38F; } +16166: +16166: +16166: static constexpr float +16166: lowest() noexcept { return -3.4028234663852886e+38F; } +16166: +16166: +16166: static constexpr int digits = 24; +16166: static constexpr int digits10 = 6; +16166: +16166: static constexpr int max_digits10 +16166: = (2 + (24) * 643L / 2136); +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = false; +16166: static constexpr bool is_exact = false; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr float +16166: epsilon() noexcept { return 1.1920928955078125e-7F; } +16166: +16166: static constexpr float +16166: round_error() noexcept { return 0.5F; } +16166: +16166: static constexpr int min_exponent = (-125); +16166: static constexpr int min_exponent10 = (-37); +16166: static constexpr int max_exponent = 128; +16166: static constexpr int max_exponent10 = 38; +16166: +16166: static constexpr bool has_infinity = 1; +16166: static constexpr bool has_quiet_NaN = 1; +16166: static constexpr bool has_signaling_NaN = has_quiet_NaN; +16166: static constexpr float_denorm_style has_denorm +16166: = bool(1) ? denorm_present : denorm_absent; +16166: static constexpr bool has_denorm_loss +16166: = false; +16166: +16166: static constexpr float +16166: infinity() noexcept { return __builtin_huge_valf(); } +16166: +16166: static constexpr float +16166: quiet_NaN() noexcept { return __builtin_nanf(""); } +16166: +16166: static constexpr float +16166: signaling_NaN() noexcept { return __builtin_nansf(""); } +16166: +16166: static constexpr float +16166: denorm_min() noexcept { return 1.4012984643248171e-45F; } +16166: +16166: static constexpr bool is_iec559 +16166: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before +16166: = false; +16166: static constexpr float_round_style round_style +16166: = round_to_nearest; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr double +16166: min() noexcept { return double(2.2250738585072014e-308L); } +16166: +16166: static constexpr double +16166: max() noexcept { return double(1.7976931348623157e+308L); } +16166: +16166: +16166: static constexpr double +16166: lowest() noexcept { return -double(1.7976931348623157e+308L); } +16166: +16166: +16166: static constexpr int digits = 53; +16166: static constexpr int digits10 = 15; +16166: +16166: static constexpr int max_digits10 +16166: = (2 + (53) * 643L / 2136); +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = false; +16166: static constexpr bool is_exact = false; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr double +16166: epsilon() noexcept { return double(2.2204460492503131e-16L); } +16166: +16166: static constexpr double +16166: round_error() noexcept { return 0.5; } +16166: +16166: static constexpr int min_exponent = (-1021); +16166: static constexpr int min_exponent10 = (-307); +16166: static constexpr int max_exponent = 1024; +16166: static constexpr int max_exponent10 = 308; +16166: +16166: static constexpr bool has_infinity = 1; +16166: static constexpr bool has_quiet_NaN = 1; +16166: static constexpr bool has_signaling_NaN = has_quiet_NaN; +16166: static constexpr float_denorm_style has_denorm +16166: = bool(1) ? denorm_present : denorm_absent; +16166: static constexpr bool has_denorm_loss +16166: = false; +16166: +16166: static constexpr double +16166: infinity() noexcept { return __builtin_huge_val(); } +16166: +16166: static constexpr double +16166: quiet_NaN() noexcept { return __builtin_nan(""); } +16166: +16166: static constexpr double +16166: signaling_NaN() noexcept { return __builtin_nans(""); } +16166: +16166: static constexpr double +16166: denorm_min() noexcept { return double(4.9406564584124654e-324L); } +16166: +16166: static constexpr bool is_iec559 +16166: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before +16166: = false; +16166: static constexpr float_round_style round_style +16166: = round_to_nearest; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct numeric_limits +16166: { +16166: static constexpr bool is_specialized = true; +16166: +16166: static constexpr long double +16166: min() noexcept { return 2.2250738585072014e-308L; } +16166: +16166: static constexpr long double +16166: max() noexcept { return 1.7976931348623157e+308L; } +16166: +16166: +16166: static constexpr long double +16166: lowest() noexcept { return -1.7976931348623157e+308L; } +16166: +16166: +16166: static constexpr int digits = 53; +16166: static constexpr int digits10 = 15; +16166: +16166: static constexpr int max_digits10 +16166: = (2 + (53) * 643L / 2136); +16166: +16166: static constexpr bool is_signed = true; +16166: static constexpr bool is_integer = false; +16166: static constexpr bool is_exact = false; +16166: static constexpr int radix = 2; +16166: +16166: static constexpr long double +16166: epsilon() noexcept { return 2.2204460492503131e-16L; } +16166: +16166: static constexpr long double +16166: round_error() noexcept { return 0.5L; } +16166: +16166: static constexpr int min_exponent = (-1021); +16166: static constexpr int min_exponent10 = (-307); +16166: static constexpr int max_exponent = 1024; +16166: static constexpr int max_exponent10 = 308; +16166: +16166: static constexpr bool has_infinity = 1; +16166: static constexpr bool has_quiet_NaN = 1; +16166: static constexpr bool has_signaling_NaN = has_quiet_NaN; +16166: static constexpr float_denorm_style has_denorm +16166: = bool(1) ? denorm_present : denorm_absent; +16166: static constexpr bool has_denorm_loss +16166: = false; +16166: +16166: static constexpr long double +16166: infinity() noexcept { return __builtin_huge_vall(); } +16166: +16166: static constexpr long double +16166: quiet_NaN() noexcept { return __builtin_nanl(""); } +16166: +16166: static constexpr long double +16166: signaling_NaN() noexcept { return __builtin_nansl(""); } +16166: +16166: static constexpr long double +16166: denorm_min() noexcept { return 4.9406564584124654e-324L; } +16166: +16166: static constexpr bool is_iec559 +16166: = has_infinity && has_quiet_NaN && has_denorm == denorm_present; +16166: static constexpr bool is_bounded = true; +16166: static constexpr bool is_modulo = false; +16166: +16166: static constexpr bool traps = false; +16166: static constexpr bool tinyness_before = +16166: false; +16166: static constexpr float_round_style round_style = +16166: round_to_nearest; +16166: }; +16166: # 1989 "/usr/include/c++/14/limits" 3 +16166: __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; }; +16166: +16166: +16166: __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; }; +16166: # 2222 "/usr/include/c++/14/limits" 3 +16166: +16166: } +16166: # 40 "/usr/include/c++/14/bits/chrono.h" 2 3 +16166: # 1 "/usr/include/c++/14/ctime" 1 3 +16166: # 39 "/usr/include/c++/14/ctime" 3 +16166: +16166: # 40 "/usr/include/c++/14/ctime" 3 +16166: # 58 "/usr/include/c++/14/ctime" 3 +16166: namespace std +16166: { +16166: using ::clock_t; +16166: using ::time_t; +16166: using ::tm; +16166: +16166: using ::clock; +16166: using ::difftime; +16166: using ::mktime; +16166: using ::time; +16166: using ::asctime; +16166: using ::ctime; +16166: using ::gmtime; +16166: using ::localtime; +16166: using ::strftime; +16166: } +16166: +16166: +16166: +16166: namespace std +16166: { +16166: using ::timespec; +16166: using ::timespec_get; +16166: } +16166: # 41 "/usr/include/c++/14/bits/chrono.h" 2 3 +16166: # 1 "/usr/include/c++/14/bits/parse_numbers.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/parse_numbers.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/parse_numbers.h" 3 +16166: # 42 "/usr/include/c++/14/bits/parse_numbers.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: namespace __parse_int +16166: { +16166: template +16166: struct _Digit; +16166: +16166: template +16166: struct _Digit<_Base, '0'> : integral_constant +16166: { +16166: using __valid = true_type; +16166: }; +16166: +16166: template +16166: struct _Digit<_Base, '1'> : integral_constant +16166: { +16166: using __valid = true_type; +16166: }; +16166: +16166: template +16166: struct _Digit_impl : integral_constant +16166: { +16166: static_assert(_Base > _Val, "invalid digit"); +16166: using __valid = true_type; +16166: }; +16166: +16166: template +16166: struct _Digit<_Base, '2'> : _Digit_impl<_Base, 2> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, '3'> : _Digit_impl<_Base, 3> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, '4'> : _Digit_impl<_Base, 4> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, '5'> : _Digit_impl<_Base, 5> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, '6'> : _Digit_impl<_Base, 6> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, '7'> : _Digit_impl<_Base, 7> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, '8'> : _Digit_impl<_Base, 8> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, '9'> : _Digit_impl<_Base, 9> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'a'> : _Digit_impl<_Base, 0xa> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'A'> : _Digit_impl<_Base, 0xa> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'b'> : _Digit_impl<_Base, 0xb> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'B'> : _Digit_impl<_Base, 0xb> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'c'> : _Digit_impl<_Base, 0xc> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'C'> : _Digit_impl<_Base, 0xc> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'd'> : _Digit_impl<_Base, 0xd> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'D'> : _Digit_impl<_Base, 0xd> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'e'> : _Digit_impl<_Base, 0xe> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'E'> : _Digit_impl<_Base, 0xe> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'f'> : _Digit_impl<_Base, 0xf> +16166: { }; +16166: +16166: template +16166: struct _Digit<_Base, 'F'> : _Digit_impl<_Base, 0xf> +16166: { }; +16166: +16166: +16166: template +16166: struct _Digit<_Base, '\''> : integral_constant +16166: { +16166: using __valid = false_type; +16166: }; +16166: +16166: +16166: +16166: template +16166: using __ull_constant = integral_constant; +16166: +16166: template +16166: struct _Power_help +16166: { +16166: using __next = typename _Power_help<_Base, _Digs...>::type; +16166: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; +16166: using type +16166: = __ull_constant<__next::value * (__valid_digit{} ? _Base : 1ULL)>; +16166: }; +16166: +16166: template +16166: struct _Power_help<_Base, _Dig> +16166: { +16166: using __valid_digit = typename _Digit<_Base, _Dig>::__valid; +16166: using type = __ull_constant<__valid_digit::value>; +16166: }; +16166: +16166: template +16166: struct _Power : _Power_help<_Base, _Digs...>::type +16166: { }; +16166: +16166: template +16166: struct _Power<_Base> : __ull_constant<0> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct _Number_help +16166: { +16166: using __digit = _Digit<_Base, _Dig>; +16166: using __valid_digit = typename __digit::__valid; +16166: using __next = _Number_help<_Base, +16166: __valid_digit::value ? _Pow / _Base : _Pow, +16166: _Digs...>; +16166: using type = __ull_constant<_Pow * __digit::value + __next::type::value>; +16166: static_assert((type::value / _Pow) == __digit::value, +16166: "integer literal does not fit in unsigned long long"); +16166: }; +16166: +16166: +16166: template +16166: struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...> +16166: : _Number_help<_Base, _Pow, _Dig, _Digs...> +16166: { }; +16166: +16166: +16166: template +16166: struct _Number_help<_Base, 1ULL, _Dig> +16166: { +16166: using type = __ull_constant<_Digit<_Base, _Dig>::value>; +16166: }; +16166: +16166: template +16166: struct _Number +16166: : _Number_help<_Base, _Power<_Base, _Digs...>::value, _Digs...>::type +16166: { }; +16166: +16166: template +16166: struct _Number<_Base> +16166: : __ull_constant<0> +16166: { }; +16166: +16166: +16166: +16166: template +16166: struct _Parse_int; +16166: +16166: template +16166: struct _Parse_int<'0', 'b', _Digs...> +16166: : _Number<2U, _Digs...>::type +16166: { }; +16166: +16166: template +16166: struct _Parse_int<'0', 'B', _Digs...> +16166: : _Number<2U, _Digs...>::type +16166: { }; +16166: +16166: template +16166: struct _Parse_int<'0', 'x', _Digs...> +16166: : _Number<16U, _Digs...>::type +16166: { }; +16166: +16166: template +16166: struct _Parse_int<'0', 'X', _Digs...> +16166: : _Number<16U, _Digs...>::type +16166: { }; +16166: +16166: template +16166: struct _Parse_int<'0', _Digs...> +16166: : _Number<8U, _Digs...>::type +16166: { }; +16166: +16166: template +16166: struct _Parse_int +16166: : _Number<10U, _Digs...>::type +16166: { }; +16166: +16166: } +16166: +16166: +16166: namespace __select_int +16166: { +16166: template +16166: struct _Select_int_base; +16166: +16166: template +16166: struct _Select_int_base<_Val, _IntType, _Ints...> +16166: : __conditional_t<(_Val <= __gnu_cxx::__int_traits<_IntType>::__max), +16166: integral_constant<_IntType, (_IntType)_Val>, +16166: _Select_int_base<_Val, _Ints...>> +16166: { }; +16166: +16166: template +16166: struct _Select_int_base<_Val> +16166: { }; +16166: +16166: template +16166: using _Select_int = typename _Select_int_base< +16166: __parse_int::_Parse_int<_Digs...>::value, +16166: unsigned char, +16166: unsigned short, +16166: unsigned int, +16166: unsigned long, +16166: unsigned long long +16166: >::type; +16166: +16166: } +16166: +16166: +16166: } +16166: # 42 "/usr/include/c++/14/bits/chrono.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 48 "/usr/include/c++/14/bits/chrono.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: namespace filesystem { struct __file_clock; }; +16166: +16166: +16166: namespace chrono +16166: { +16166: +16166: +16166: +16166: +16166: template> +16166: class duration; +16166: +16166: +16166: template +16166: class time_point; +16166: +16166: } +16166: # 79 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: struct __duration_common_type +16166: { }; +16166: +16166: template +16166: struct __duration_common_type<_CT, _Period1, _Period2, +16166: __void_t> +16166: { +16166: private: +16166: using __gcd_num = __static_gcd<_Period1::num, _Period2::num>; +16166: using __gcd_den = __static_gcd<_Period1::den, _Period2::den>; +16166: using __cr = typename _CT::type; +16166: using __r = ratio<__gcd_num::value, +16166: (_Period1::den / __gcd_den::value) * _Period2::den>; +16166: +16166: public: +16166: using type = chrono::duration<__cr, typename __r::type>; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct common_type, +16166: chrono::duration<_Rep2, _Period2>> +16166: : __duration_common_type, +16166: typename _Period1::type, +16166: typename _Period2::type> +16166: { }; +16166: +16166: +16166: template +16166: struct common_type, +16166: chrono::duration<_Rep, _Period>> +16166: { +16166: using type = chrono::duration::type, +16166: typename _Period::type>; +16166: }; +16166: +16166: +16166: template +16166: struct common_type> +16166: { +16166: using type = chrono::duration::type, +16166: typename _Period::type>; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __timepoint_common_type +16166: { }; +16166: +16166: template +16166: struct __timepoint_common_type<_CT, _Clock, __void_t> +16166: { +16166: using type = chrono::time_point<_Clock, typename _CT::type>; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct common_type, +16166: chrono::time_point<_Clock, _Duration2>> +16166: : __timepoint_common_type, _Clock> +16166: { }; +16166: +16166: +16166: template +16166: struct common_type, +16166: chrono::time_point<_Clock, _Duration>> +16166: { using type = chrono::time_point<_Clock, _Duration>; }; +16166: +16166: +16166: template +16166: struct common_type> +16166: { using type = chrono::time_point<_Clock, _Duration>; }; +16166: +16166: +16166: +16166: +16166: namespace chrono +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct __duration_cast_impl +16166: { +16166: template +16166: static constexpr _ToDur +16166: __cast(const duration<_Rep, _Period>& __d) +16166: { +16166: typedef typename _ToDur::rep __to_rep; +16166: return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) +16166: * static_cast<_CR>(_CF::num) +16166: / static_cast<_CR>(_CF::den))); +16166: } +16166: }; +16166: +16166: template +16166: struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> +16166: { +16166: template +16166: static constexpr _ToDur +16166: __cast(const duration<_Rep, _Period>& __d) +16166: { +16166: typedef typename _ToDur::rep __to_rep; +16166: return _ToDur(static_cast<__to_rep>(__d.count())); +16166: } +16166: }; +16166: +16166: template +16166: struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> +16166: { +16166: template +16166: static constexpr _ToDur +16166: __cast(const duration<_Rep, _Period>& __d) +16166: { +16166: typedef typename _ToDur::rep __to_rep; +16166: return _ToDur(static_cast<__to_rep>( +16166: static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); +16166: } +16166: }; +16166: +16166: template +16166: struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> +16166: { +16166: template +16166: static constexpr _ToDur +16166: __cast(const duration<_Rep, _Period>& __d) +16166: { +16166: typedef typename _ToDur::rep __to_rep; +16166: return _ToDur(static_cast<__to_rep>( +16166: static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); +16166: } +16166: }; +16166: +16166: template +16166: struct __is_duration +16166: : std::false_type +16166: { }; +16166: +16166: template +16166: struct __is_duration> +16166: : std::true_type +16166: { }; +16166: +16166: template +16166: using __enable_if_is_duration +16166: = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; +16166: +16166: template +16166: using __disable_if_is_duration +16166: = typename enable_if::value, _Tp>::type; +16166: +16166: +16166: template +16166: inline constexpr bool __is_duration_v = false; +16166: template +16166: inline constexpr bool __is_duration_v> = true; +16166: template +16166: inline constexpr bool __is_time_point_v = false; +16166: template +16166: inline constexpr bool __is_time_point_v> = true; +16166: # 272 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: constexpr __enable_if_is_duration<_ToDur> +16166: duration_cast(const duration<_Rep, _Period>& __d) +16166: { +16166: +16166: if constexpr (is_same_v<_ToDur, duration<_Rep, _Period>>) +16166: return __d; +16166: else +16166: { +16166: +16166: using __to_period = typename _ToDur::period; +16166: using __to_rep = typename _ToDur::rep; +16166: using __cf = ratio_divide<_Period, __to_period>; +16166: using __cr = typename common_type<__to_rep, _Rep, intmax_t>::type; +16166: using __dc = __duration_cast_impl<_ToDur, __cf, __cr, +16166: __cf::num == 1, __cf::den == 1>; +16166: return __dc::__cast(__d); +16166: +16166: } +16166: +16166: } +16166: # 306 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: struct treat_as_floating_point +16166: : is_floating_point<_Rep> +16166: { }; +16166: +16166: +16166: template +16166: inline constexpr bool treat_as_floating_point_v = +16166: treat_as_floating_point<_Rep>::value; +16166: +16166: template<> +16166: inline constexpr bool treat_as_floating_point_v = false; +16166: template<> +16166: inline constexpr bool treat_as_floating_point_v = false; +16166: template<> +16166: inline constexpr bool treat_as_floating_point_v = false; +16166: template<> +16166: inline constexpr bool treat_as_floating_point_v = true; +16166: template<> +16166: inline constexpr bool treat_as_floating_point_v = true; +16166: template<> +16166: inline constexpr bool treat_as_floating_point_v = true; +16166: # 386 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[nodiscard]] constexpr __enable_if_is_duration<_ToDur> +16166: floor(const duration<_Rep, _Period>& __d) +16166: { +16166: auto __to = chrono::duration_cast<_ToDur>(__d); +16166: if (__to > __d) +16166: return __to - _ToDur{1}; +16166: return __to; +16166: } +16166: # 406 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[nodiscard]] constexpr __enable_if_is_duration<_ToDur> +16166: ceil(const duration<_Rep, _Period>& __d) +16166: { +16166: auto __to = chrono::duration_cast<_ToDur>(__d); +16166: if (__to < __d) +16166: return __to + _ToDur{1}; +16166: return __to; +16166: } +16166: # 427 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[nodiscard]] constexpr +16166: enable_if_t< +16166: __and_<__is_duration<_ToDur>, +16166: __not_>>::value, +16166: _ToDur> +16166: round(const duration<_Rep, _Period>& __d) +16166: { +16166: _ToDur __t0 = chrono::floor<_ToDur>(__d); +16166: _ToDur __t1 = __t0 + _ToDur{1}; +16166: auto __diff0 = __d - __t0; +16166: auto __diff1 = __t1 - __d; +16166: if (__diff0 == __diff1) +16166: { +16166: if (__t0.count() & 1) +16166: return __t1; +16166: return __t0; +16166: } +16166: else if (__diff0 < __diff1) +16166: return __t0; +16166: return __t1; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: [[nodiscard]] constexpr +16166: enable_if_t::is_signed, duration<_Rep, _Period>> +16166: abs(duration<_Rep, _Period> __d) +16166: { +16166: if (__d >= __d.zero()) +16166: return __d; +16166: return -__d; +16166: } +16166: +16166: +16166: namespace __detail { using chrono::ceil; } +16166: # 494 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: struct duration_values +16166: { +16166: static constexpr _Rep +16166: zero() noexcept +16166: { return _Rep(0); } +16166: +16166: static constexpr _Rep +16166: max() noexcept +16166: { return numeric_limits<_Rep>::max(); } +16166: +16166: static constexpr _Rep +16166: min() noexcept +16166: { return numeric_limits<_Rep>::lowest(); } +16166: }; +16166: +16166: template +16166: class duration +16166: { +16166: static_assert(!__is_duration<_Rep>::value, +16166: "rep cannot be a std::chrono::duration"); +16166: static_assert(__is_ratio<_Period>::value, +16166: "period must be a specialization of std::ratio"); +16166: static_assert(_Period::num > 0, "period must be positive"); +16166: +16166: template +16166: using __is_float = treat_as_floating_point<_Rep2>; +16166: +16166: static constexpr intmax_t +16166: _S_gcd(intmax_t __m, intmax_t __n) noexcept +16166: { +16166: +16166: +16166: +16166: do +16166: { +16166: intmax_t __rem = __m % __n; +16166: __m = __n; +16166: __n = __rem; +16166: } +16166: while (__n != 0); +16166: return __m; +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: using __divide = ratio<(_R1::num / __gcd1) * (_R2::den / __gcd2), +16166: (_R1::den / __gcd2) * (_R2::num / __gcd1)>; +16166: +16166: +16166: template +16166: using __is_harmonic +16166: = __bool_constant<__divide<_Period2, _Period>::den == 1>; +16166: +16166: public: +16166: +16166: using rep = _Rep; +16166: using period = typename _Period::type; +16166: +16166: +16166: constexpr duration() = default; +16166: +16166: duration(const duration&) = default; +16166: +16166: +16166: +16166: template, +16166: __or_<__is_float, __not_<__is_float<_Rep2>>>>> +16166: constexpr explicit duration(const _Rep2& __rep) +16166: : __r(static_cast(__rep)) { } +16166: +16166: template, +16166: __or_<__is_float, +16166: __and_<__is_harmonic<_Period2>, +16166: __not_<__is_float<_Rep2>>>>>> +16166: constexpr duration(const duration<_Rep2, _Period2>& __d) +16166: : __r(duration_cast(__d).count()) { } +16166: +16166: ~duration() = default; +16166: duration& operator=(const duration&) = default; +16166: +16166: +16166: constexpr rep +16166: count() const +16166: { return __r; } +16166: +16166: +16166: +16166: constexpr duration::type, period> +16166: operator+() const +16166: { return duration::type, period>(__r); } +16166: +16166: constexpr duration::type, period> +16166: operator-() const +16166: { return duration::type, period>(-__r); } +16166: +16166: constexpr duration& +16166: operator++() +16166: { +16166: ++__r; +16166: return *this; +16166: } +16166: +16166: constexpr duration +16166: operator++(int) +16166: { return duration(__r++); } +16166: +16166: constexpr duration& +16166: operator--() +16166: { +16166: --__r; +16166: return *this; +16166: } +16166: +16166: constexpr duration +16166: operator--(int) +16166: { return duration(__r--); } +16166: +16166: constexpr duration& +16166: operator+=(const duration& __d) +16166: { +16166: __r += __d.count(); +16166: return *this; +16166: } +16166: +16166: constexpr duration& +16166: operator-=(const duration& __d) +16166: { +16166: __r -= __d.count(); +16166: return *this; +16166: } +16166: +16166: constexpr duration& +16166: operator*=(const rep& __rhs) +16166: { +16166: __r *= __rhs; +16166: return *this; +16166: } +16166: +16166: constexpr duration& +16166: operator/=(const rep& __rhs) +16166: { +16166: __r /= __rhs; +16166: return *this; +16166: } +16166: +16166: +16166: template +16166: constexpr +16166: __enable_if_t::value, duration&> +16166: operator%=(const rep& __rhs) +16166: { +16166: __r %= __rhs; +16166: return *this; +16166: } +16166: +16166: template +16166: constexpr +16166: __enable_if_t::value, duration&> +16166: operator%=(const duration& __d) +16166: { +16166: __r %= __d.count(); +16166: return *this; +16166: } +16166: +16166: +16166: static constexpr duration +16166: zero() noexcept +16166: { return duration(duration_values::zero()); } +16166: +16166: static constexpr duration +16166: min() noexcept +16166: { return duration(duration_values::min()); } +16166: +16166: static constexpr duration +16166: max() noexcept +16166: { return duration(duration_values::max()); } +16166: +16166: private: +16166: rep __r; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr typename common_type, +16166: duration<_Rep2, _Period2>>::type +16166: operator+(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep1, _Period1> __dur1; +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<__dur1,__dur2>::type __cd; +16166: return __cd(__cd(__lhs).count() + __cd(__rhs).count()); +16166: } +16166: +16166: +16166: template +16166: constexpr typename common_type, +16166: duration<_Rep2, _Period2>>::type +16166: operator-(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep1, _Period1> __dur1; +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<__dur1,__dur2>::type __cd; +16166: return __cd(__cd(__lhs).count() - __cd(__rhs).count()); +16166: } +16166: # 727 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template::type> +16166: using __common_rep_t = typename +16166: enable_if::value, _CRep>::type; +16166: # 739 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> +16166: operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +16166: { +16166: typedef duration::type, _Period> +16166: __cd; +16166: return __cd(__cd(__d).count() * __s); +16166: } +16166: +16166: template +16166: constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> +16166: operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) +16166: { return __d * __s; } +16166: +16166: template +16166: constexpr +16166: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> +16166: operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +16166: { +16166: typedef duration::type, _Period> +16166: __cd; +16166: return __cd(__cd(__d).count() / __s); +16166: } +16166: +16166: template +16166: constexpr typename common_type<_Rep1, _Rep2>::type +16166: operator/(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep1, _Period1> __dur1; +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<__dur1,__dur2>::type __cd; +16166: return __cd(__lhs).count() / __cd(__rhs).count(); +16166: } +16166: +16166: +16166: template +16166: constexpr +16166: duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> +16166: operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) +16166: { +16166: typedef duration::type, _Period> +16166: __cd; +16166: return __cd(__cd(__d).count() % __s); +16166: } +16166: +16166: template +16166: constexpr typename common_type, +16166: duration<_Rep2, _Period2>>::type +16166: operator%(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep1, _Period1> __dur1; +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<__dur1,__dur2>::type __cd; +16166: return __cd(__cd(__lhs).count() % __cd(__rhs).count()); +16166: } +16166: # 807 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: constexpr bool +16166: operator==(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep1, _Period1> __dur1; +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<__dur1,__dur2>::type __ct; +16166: return __ct(__lhs).count() == __ct(__rhs).count(); +16166: } +16166: +16166: template +16166: constexpr bool +16166: operator<(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep1, _Period1> __dur1; +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<__dur1,__dur2>::type __ct; +16166: return __ct(__lhs).count() < __ct(__rhs).count(); +16166: } +16166: # 844 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: constexpr bool +16166: operator!=(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: +16166: +16166: template +16166: constexpr bool +16166: operator<=(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { return !(__rhs < __lhs); } +16166: +16166: template +16166: constexpr bool +16166: operator>(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { return __rhs < __lhs; } +16166: +16166: template +16166: constexpr bool +16166: operator>=(const duration<_Rep1, _Period1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { return !(__lhs < __rhs); } +16166: # 888 "/usr/include/c++/14/bits/chrono.h" 3 +16166: using nanoseconds = duration; +16166: +16166: +16166: using microseconds = duration; +16166: +16166: +16166: using milliseconds = duration; +16166: +16166: +16166: using seconds = duration; +16166: +16166: +16166: using minutes = duration>; +16166: +16166: +16166: using hours = duration>; +16166: # 921 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: class time_point +16166: { +16166: static_assert(__is_duration<_Dur>::value, +16166: "duration must be a specialization of std::chrono::duration"); +16166: +16166: public: +16166: typedef _Clock clock; +16166: typedef _Dur duration; +16166: typedef typename duration::rep rep; +16166: typedef typename duration::period period; +16166: +16166: constexpr time_point() : __d(duration::zero()) +16166: { } +16166: +16166: constexpr explicit time_point(const duration& __dur) +16166: : __d(__dur) +16166: { } +16166: +16166: +16166: template>> +16166: constexpr time_point(const time_point& __t) +16166: : __d(__t.time_since_epoch()) +16166: { } +16166: +16166: +16166: constexpr duration +16166: time_since_epoch() const +16166: { return __d; } +16166: # 977 "/usr/include/c++/14/bits/chrono.h" 3 +16166: constexpr time_point& +16166: operator+=(const duration& __dur) +16166: { +16166: __d += __dur; +16166: return *this; +16166: } +16166: +16166: constexpr time_point& +16166: operator-=(const duration& __dur) +16166: { +16166: __d -= __dur; +16166: return *this; +16166: } +16166: +16166: +16166: static constexpr time_point +16166: min() noexcept +16166: { return time_point(duration::min()); } +16166: +16166: static constexpr time_point +16166: max() noexcept +16166: { return time_point(duration::max()); } +16166: +16166: private: +16166: duration __d; +16166: }; +16166: # 1016 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[__nodiscard__]] constexpr +16166: __enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> +16166: time_point_cast(const time_point<_Clock, _Dur>& __t) +16166: { +16166: typedef time_point<_Clock, _ToDur> __time_point; +16166: return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); +16166: } +16166: # 1038 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[nodiscard]] constexpr +16166: enable_if_t<__is_duration_v<_ToDur>, time_point<_Clock, _ToDur>> +16166: floor(const time_point<_Clock, _Dur>& __tp) +16166: { +16166: return time_point<_Clock, _ToDur>{ +16166: chrono::floor<_ToDur>(__tp.time_since_epoch())}; +16166: } +16166: # 1059 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[nodiscard]] constexpr +16166: enable_if_t<__is_duration_v<_ToDur>, time_point<_Clock, _ToDur>> +16166: ceil(const time_point<_Clock, _Dur>& __tp) +16166: { +16166: return time_point<_Clock, _ToDur>{ +16166: chrono::ceil<_ToDur>(__tp.time_since_epoch())}; +16166: } +16166: # 1081 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: [[nodiscard]] constexpr +16166: enable_if_t<__is_duration_v<_ToDur> +16166: && !treat_as_floating_point_v, +16166: time_point<_Clock, _ToDur>> +16166: round(const time_point<_Clock, _Dur>& __tp) +16166: { +16166: return time_point<_Clock, _ToDur>{ +16166: chrono::round<_ToDur>(__tp.time_since_epoch())}; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr time_point<_Clock, +16166: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> +16166: operator+(const time_point<_Clock, _Dur1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<_Dur1,__dur2>::type __ct; +16166: typedef time_point<_Clock, __ct> __time_point; +16166: return __time_point(__lhs.time_since_epoch() + __rhs); +16166: } +16166: +16166: +16166: template +16166: constexpr time_point<_Clock, +16166: typename common_type, _Dur2>::type> +16166: operator+(const duration<_Rep1, _Period1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { +16166: typedef duration<_Rep1, _Period1> __dur1; +16166: typedef typename common_type<__dur1,_Dur2>::type __ct; +16166: typedef time_point<_Clock, __ct> __time_point; +16166: return __time_point(__rhs.time_since_epoch() + __lhs); +16166: } +16166: +16166: +16166: template +16166: constexpr time_point<_Clock, +16166: typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> +16166: operator-(const time_point<_Clock, _Dur1>& __lhs, +16166: const duration<_Rep2, _Period2>& __rhs) +16166: { +16166: typedef duration<_Rep2, _Period2> __dur2; +16166: typedef typename common_type<_Dur1,__dur2>::type __ct; +16166: typedef time_point<_Clock, __ct> __time_point; +16166: return __time_point(__lhs.time_since_epoch() -__rhs); +16166: } +16166: +16166: +16166: template +16166: constexpr typename common_type<_Dur1, _Dur2>::type +16166: operator-(const time_point<_Clock, _Dur1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: constexpr bool +16166: operator==(const time_point<_Clock, _Dur1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } +16166: # 1165 "/usr/include/c++/14/bits/chrono.h" 3 +16166: template +16166: constexpr bool +16166: operator!=(const time_point<_Clock, _Dur1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: +16166: +16166: template +16166: constexpr bool +16166: operator<(const time_point<_Clock, _Dur1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } +16166: +16166: template +16166: constexpr bool +16166: operator<=(const time_point<_Clock, _Dur1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { return !(__rhs < __lhs); } +16166: +16166: template +16166: constexpr bool +16166: operator>(const time_point<_Clock, _Dur1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { return __rhs < __lhs; } +16166: +16166: template +16166: constexpr bool +16166: operator>=(const time_point<_Clock, _Dur1>& __lhs, +16166: const time_point<_Clock, _Dur2>& __rhs) +16166: { return !(__lhs < __rhs); } +16166: # 1217 "/usr/include/c++/14/bits/chrono.h" 3 +16166: inline namespace _V2 { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct system_clock +16166: { +16166: typedef chrono::nanoseconds duration; +16166: typedef duration::rep rep; +16166: typedef duration::period period; +16166: typedef chrono::time_point time_point; +16166: +16166: static_assert(system_clock::duration::min() +16166: < system_clock::duration::zero(), +16166: "a clock's minimum duration cannot be less than its epoch"); +16166: +16166: static constexpr bool is_steady = false; +16166: +16166: static time_point +16166: now() noexcept; +16166: +16166: +16166: +16166: static std::time_t +16166: to_time_t(const time_point& __t) noexcept +16166: { +16166: return std::time_t(duration_cast +16166: (__t.time_since_epoch()).count()); +16166: } +16166: +16166: +16166: static time_point +16166: from_time_t(std::time_t __t) noexcept +16166: { +16166: typedef chrono::time_point __from; +16166: return time_point_cast +16166: (__from(chrono::seconds(__t))); +16166: } +16166: }; +16166: # 1267 "/usr/include/c++/14/bits/chrono.h" 3 +16166: struct steady_clock +16166: { +16166: typedef chrono::nanoseconds duration; +16166: typedef duration::rep rep; +16166: typedef duration::period period; +16166: typedef chrono::time_point time_point; +16166: +16166: static constexpr bool is_steady = true; +16166: +16166: static time_point +16166: now() noexcept; +16166: }; +16166: # 1289 "/usr/include/c++/14/bits/chrono.h" 3 +16166: using high_resolution_clock = system_clock; +16166: +16166: } +16166: # 1315 "/usr/include/c++/14/bits/chrono.h" 3 +16166: } +16166: +16166: +16166: inline namespace literals +16166: { +16166: # 1344 "/usr/include/c++/14/bits/chrono.h" 3 +16166: inline namespace chrono_literals +16166: { +16166: +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wliteral-suffix" +16166: +16166: template +16166: constexpr _Dur __check_overflow() +16166: { +16166: using _Val = __parse_int::_Parse_int<_Digits...>; +16166: constexpr typename _Dur::rep __repval = _Val::value; +16166: static_assert(__repval >= 0 && __repval == _Val::value, +16166: "literal value cannot be represented by duration type"); +16166: return _Dur(__repval); +16166: } +16166: +16166: +16166: +16166: constexpr chrono::duration> +16166: operator""h(long double __hours) +16166: { return chrono::duration>{__hours}; } +16166: +16166: +16166: template +16166: constexpr chrono::hours +16166: operator""h() +16166: { return __check_overflow(); } +16166: +16166: +16166: constexpr chrono::duration> +16166: operator""min(long double __mins) +16166: { return chrono::duration>{__mins}; } +16166: +16166: +16166: template +16166: constexpr chrono::minutes +16166: operator""min() +16166: { return __check_overflow(); } +16166: +16166: +16166: constexpr chrono::duration +16166: operator""s(long double __secs) +16166: { return chrono::duration{__secs}; } +16166: +16166: +16166: template +16166: constexpr chrono::seconds +16166: operator""s() +16166: { return __check_overflow(); } +16166: +16166: +16166: constexpr chrono::duration +16166: operator""ms(long double __msecs) +16166: { return chrono::duration{__msecs}; } +16166: +16166: +16166: template +16166: constexpr chrono::milliseconds +16166: operator""ms() +16166: { return __check_overflow(); } +16166: +16166: +16166: constexpr chrono::duration +16166: operator""us(long double __usecs) +16166: { return chrono::duration{__usecs}; } +16166: +16166: +16166: template +16166: constexpr chrono::microseconds +16166: operator""us() +16166: { return __check_overflow(); } +16166: +16166: +16166: constexpr chrono::duration +16166: operator""ns(long double __nsecs) +16166: { return chrono::duration{__nsecs}; } +16166: +16166: +16166: template +16166: constexpr chrono::nanoseconds +16166: operator""ns() +16166: { return __check_overflow(); } +16166: +16166: #pragma GCC diagnostic pop +16166: +16166: } +16166: } +16166: +16166: namespace chrono +16166: { +16166: using namespace literals::chrono_literals; +16166: } +16166: +16166: +16166: +16166: namespace filesystem +16166: { +16166: struct __file_clock +16166: { +16166: using duration = chrono::nanoseconds; +16166: using rep = duration::rep; +16166: using period = duration::period; +16166: using time_point = chrono::time_point<__file_clock>; +16166: static constexpr bool is_steady = false; +16166: +16166: static time_point +16166: now() noexcept +16166: { return _S_from_sys(chrono::system_clock::now()); } +16166: # 1470 "/usr/include/c++/14/bits/chrono.h" 3 +16166: private: +16166: using __sys_clock = chrono::system_clock; +16166: +16166: +16166: +16166: +16166: static constexpr chrono::seconds _S_epoch_diff{6437664000}; +16166: +16166: protected: +16166: +16166: template +16166: static +16166: chrono::time_point<__file_clock, common_type_t<_Dur, chrono::seconds>> +16166: _S_from_sys(const chrono::time_point<__sys_clock, _Dur>& __t) noexcept +16166: { +16166: using _CDur = common_type_t<_Dur, chrono::seconds>; +16166: using __file_time = chrono::time_point<__file_clock, _CDur>; +16166: return __file_time{__t.time_since_epoch()} - _S_epoch_diff; +16166: } +16166: +16166: +16166: template +16166: static +16166: chrono::time_point<__sys_clock, common_type_t<_Dur, chrono::seconds>> +16166: _S_to_sys(const chrono::time_point<__file_clock, _Dur>& __t) noexcept +16166: { +16166: using _CDur = common_type_t<_Dur, chrono::seconds>; +16166: using __sys_time = chrono::time_point<__sys_clock, _CDur>; +16166: return __sys_time{__t.time_since_epoch()} + _S_epoch_diff; +16166: } +16166: }; +16166: } +16166: +16166: +16166: +16166: } +16166: # 37 "/usr/include/c++/14/bits/this_thread_sleep.h" 2 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/cerrno" 1 3 +16166: # 39 "/usr/include/c++/14/cerrno" 3 +16166: +16166: # 40 "/usr/include/c++/14/cerrno" 3 +16166: # 40 "/usr/include/c++/14/bits/this_thread_sleep.h" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 56 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +16166: namespace this_thread +16166: { +16166: # 66 "/usr/include/c++/14/bits/this_thread_sleep.h" 3 +16166: template +16166: inline void +16166: sleep_for(const chrono::duration<_Rep, _Period>& __rtime) +16166: { +16166: if (__rtime <= __rtime.zero()) +16166: return; +16166: auto __s = chrono::duration_cast(__rtime); +16166: auto __ns = chrono::duration_cast(__rtime - __s); +16166: +16166: struct ::timespec __ts = +16166: { +16166: static_cast(__s.count()), +16166: static_cast(__ns.count()) +16166: }; +16166: while (::nanosleep(&__ts, &__ts) == -1 && (*__errno_location ()) == 4) +16166: { } +16166: +16166: +16166: +16166: } +16166: +16166: +16166: template +16166: inline void +16166: sleep_until(const chrono::time_point<_Clock, _Duration>& __atime) +16166: { +16166: +16166: +16166: +16166: auto __now = _Clock::now(); +16166: if (_Clock::is_steady) +16166: { +16166: if (__now < __atime) +16166: sleep_for(__atime - __now); +16166: return; +16166: } +16166: while (__now < __atime) +16166: { +16166: sleep_for(__atime - __now); +16166: __now = _Clock::now(); +16166: } +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 47 "/usr/include/c++/14/thread" 2 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 51 "/usr/include/c++/14/thread" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 78 "/usr/include/c++/14/thread" 3 +16166: inline bool +16166: operator!=(thread::id __x, thread::id __y) noexcept +16166: { return !(__x == __y); } +16166: +16166: inline bool +16166: operator<(thread::id __x, thread::id __y) noexcept +16166: { +16166: +16166: +16166: return __x._M_thread < __y._M_thread; +16166: } +16166: +16166: inline bool +16166: operator<=(thread::id __x, thread::id __y) noexcept +16166: { return !(__y < __x); } +16166: +16166: inline bool +16166: operator>(thread::id __x, thread::id __y) noexcept +16166: { return __y < __x; } +16166: +16166: inline bool +16166: operator>=(thread::id __x, thread::id __y) noexcept +16166: { return !(__x < __y); } +16166: +16166: +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __out, thread::id __id) +16166: { +16166: +16166: using __output_type +16166: = __conditional_t::value, +16166: const void*, +16166: thread::native_handle_type>; +16166: +16166: if (__id == thread::id()) +16166: return __out << "thread::id of a non-executing thread"; +16166: else +16166: return __out << static_cast<__output_type>(__id._M_thread); +16166: } +16166: # 372 "/usr/include/c++/14/thread" 3 +16166: +16166: } +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/port_defs.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/port_defs.h" +16166: +16166: +16166: +16166: +16166: +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/port_defs.h" +16166: namespace rocksdb { +16166: +16166: namespace port { +16166: class CondVar; +16166: } +16166: +16166: enum class CpuPriority { +16166: kIdle = 0, +16166: kLow = 1, +16166: kNormal = 2, +16166: kHigh = 3, +16166: }; +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 2 +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +16166: namespace rocksdb { +16166: +16166: extern const bool kDefaultToAdaptiveMutex; +16166: +16166: namespace port { +16166: constexpr bool kLittleEndian = ( +16166: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 3 4 +16166: 1234 +16166: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +16166: == +16166: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" 3 4 +16166: 1234 +16166: # 91 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +16166: ); +16166: +16166: +16166: class CondVar; +16166: +16166: class Mutex { +16166: public: +16166: static const char* kName() { return "pthread_mutex_t"; } +16166: +16166: explicit Mutex(bool adaptive = kDefaultToAdaptiveMutex); +16166: +16166: Mutex(const Mutex&) = delete; +16166: void operator=(const Mutex&) = delete; +16166: +16166: ~Mutex(); +16166: +16166: void Lock(); +16166: void Unlock(); +16166: +16166: bool TryLock(); +16166: +16166: +16166: +16166: void AssertHeld() const; +16166: +16166: +16166: inline void lock() { Lock(); } +16166: inline void unlock() { Unlock(); } +16166: inline bool try_lock() { return TryLock(); } +16166: +16166: private: +16166: friend class CondVar; +16166: pthread_mutex_t mu_; +16166: +16166: bool locked_ = false; +16166: +16166: }; +16166: +16166: class RWMutex { +16166: public: +16166: RWMutex(); +16166: +16166: RWMutex(const RWMutex&) = delete; +16166: void operator=(const RWMutex&) = delete; +16166: +16166: ~RWMutex(); +16166: +16166: void ReadLock(); +16166: void WriteLock(); +16166: void ReadUnlock(); +16166: void WriteUnlock(); +16166: void AssertHeld() const {} +16166: +16166: private: +16166: pthread_rwlock_t mu_; +16166: }; +16166: +16166: class CondVar { +16166: public: +16166: explicit CondVar(Mutex* mu); +16166: ~CondVar(); +16166: +16166: Mutex* GetMutex() const { return mu_; } +16166: +16166: void Wait(); +16166: +16166: bool TimedWait(uint64_t abs_time_us); +16166: void Signal(); +16166: void SignalAll(); +16166: +16166: private: +16166: pthread_cond_t cv_; +16166: Mutex* mu_; +16166: }; +16166: +16166: using Thread = std::thread; +16166: +16166: static inline void AsmVolatilePause() { +16166: # 179 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +16166: } +16166: +16166: +16166: int PhysicalCoreID(); +16166: +16166: using OnceType = pthread_once_t; +16166: +16166: void InitOnce(OnceType* once, void (*initializer)()); +16166: # 211 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +16166: static_assert((64U & (64U - 1)) == 0, +16166: "Cache line size must be a power of 2 number of bytes"); +16166: +16166: void* cacheline_aligned_alloc(size_t size); +16166: +16166: void cacheline_aligned_free(void* memblock); +16166: # 229 "/build/reproducible-path/rocksdb-9.10.0/port/port_posix.h" +16166: void Crash(const std::string& srcfile, int srcline); +16166: +16166: int GetMaxOpenFiles(); +16166: +16166: extern const size_t kPageSize; +16166: +16166: using ThreadId = pid_t; +16166: +16166: void SetCpuPriority(ThreadId id, CpuPriority priority); +16166: +16166: int64_t GetProcessID(); +16166: +16166: +16166: +16166: bool GenerateRfcUuid(std::string* output); +16166: +16166: } +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" 2 +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/port/port.h" +16166: extern "C" bool RocksDbThreadYieldAndCheckAbort() __attribute__((__weak__)); +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/coding_lean.h" 1 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/util/coding_lean.h" +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cstring" 1 3 +16166: # 39 "/usr/include/c++/14/cstring" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstring" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 43 "/usr/include/c++/14/cstring" 2 3 +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/util/coding_lean.h" 2 +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: inline void EncodeFixed16(char* buf, uint16_t value) { +16166: if (port::kLittleEndian) { +16166: memcpy(buf, &value, sizeof(value)); +16166: } else { +16166: buf[0] = value & 0xff; +16166: buf[1] = (value >> 8) & 0xff; +16166: } +16166: } +16166: +16166: inline void EncodeFixed32(char* buf, uint32_t value) { +16166: if (port::kLittleEndian) { +16166: memcpy(buf, &value, sizeof(value)); +16166: } else { +16166: buf[0] = value & 0xff; +16166: buf[1] = (value >> 8) & 0xff; +16166: buf[2] = (value >> 16) & 0xff; +16166: buf[3] = (value >> 24) & 0xff; +16166: } +16166: } +16166: +16166: inline void EncodeFixed64(char* buf, uint64_t value) { +16166: if (port::kLittleEndian) { +16166: memcpy(buf, &value, sizeof(value)); +16166: } else { +16166: buf[0] = value & 0xff; +16166: buf[1] = (value >> 8) & 0xff; +16166: buf[2] = (value >> 16) & 0xff; +16166: buf[3] = (value >> 24) & 0xff; +16166: buf[4] = (value >> 32) & 0xff; +16166: buf[5] = (value >> 40) & 0xff; +16166: buf[6] = (value >> 48) & 0xff; +16166: buf[7] = (value >> 56) & 0xff; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: inline uint16_t DecodeFixed16(const char* ptr) { +16166: if (port::kLittleEndian) { +16166: +16166: uint16_t result; +16166: memcpy(&result, ptr, sizeof(result)); +16166: return result; +16166: } else { +16166: return ((static_cast(static_cast(ptr[0]))) | +16166: (static_cast(static_cast(ptr[1])) << 8)); +16166: } +16166: } +16166: +16166: inline uint32_t DecodeFixed32(const char* ptr) { +16166: if (port::kLittleEndian) { +16166: +16166: uint32_t result; +16166: memcpy(&result, ptr, sizeof(result)); +16166: return result; +16166: } else { +16166: return ((static_cast(static_cast(ptr[0]))) | +16166: (static_cast(static_cast(ptr[1])) << 8) | +16166: (static_cast(static_cast(ptr[2])) << 16) | +16166: (static_cast(static_cast(ptr[3])) << 24)); +16166: } +16166: } +16166: +16166: inline uint64_t DecodeFixed64(const char* ptr) { +16166: if (port::kLittleEndian) { +16166: +16166: uint64_t result; +16166: memcpy(&result, ptr, sizeof(result)); +16166: return result; +16166: } else { +16166: uint64_t lo = DecodeFixed32(ptr); +16166: uint64_t hi = DecodeFixed32(ptr + 4); +16166: return (hi << 32) | lo; +16166: } +16166: } +16166: +16166: } +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/util/coding.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: const uint32_t kMaxVarint64Length = 10; +16166: +16166: +16166: void PutFixed16(std::string* dst, uint16_t value); +16166: void PutFixed32(std::string* dst, uint32_t value); +16166: void PutFixed64(std::string* dst, uint64_t value); +16166: void PutVarint32(std::string* dst, uint32_t value); +16166: void PutVarint32Varint32(std::string* dst, uint32_t value1, uint32_t value2); +16166: void PutVarint32Varint32Varint32(std::string* dst, uint32_t value1, +16166: uint32_t value2, uint32_t value3); +16166: void PutVarint64(std::string* dst, uint64_t value); +16166: void PutVarint64Varint64(std::string* dst, uint64_t value1, uint64_t value2); +16166: void PutVarint32Varint64(std::string* dst, uint32_t value1, uint64_t value2); +16166: void PutVarint32Varint32Varint64(std::string* dst, uint32_t value1, +16166: uint32_t value2, uint64_t value3); +16166: void PutLengthPrefixedSlice(std::string* dst, const Slice& value); +16166: void PutLengthPrefixedSliceParts(std::string* dst, +16166: const SliceParts& slice_parts); +16166: void PutLengthPrefixedSlicePartsWithPadding(std::string* dst, +16166: const SliceParts& slice_parts, +16166: size_t pad_sz); +16166: +16166: +16166: +16166: bool GetFixed64(Slice* input, uint64_t* value); +16166: bool GetFixed32(Slice* input, uint32_t* value); +16166: bool GetFixed16(Slice* input, uint16_t* value); +16166: bool GetVarint32(Slice* input, uint32_t* value); +16166: bool GetVarint64(Slice* input, uint64_t* value); +16166: bool GetVarsignedint64(Slice* input, int64_t* value); +16166: bool GetLengthPrefixedSlice(Slice* input, Slice* result); +16166: +16166: Slice GetLengthPrefixedSlice(const char* data); +16166: +16166: Slice GetSliceUntil(Slice* slice, char delimiter); +16166: +16166: +16166: +16166: constexpr inline uint64_t i64ToZigzag(const int64_t l) { +16166: return (static_cast(l) << 1) ^ static_cast(l >> 63); +16166: } +16166: inline int64_t zigzagToI64(uint64_t n) { +16166: return (n >> 1) ^ -static_cast(n & 1); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: const char* GetVarint32Ptr(const char* p, const char* limit, uint32_t* v); +16166: const char* GetVarint64Ptr(const char* p, const char* limit, uint64_t* v); +16166: inline const char* GetVarsignedint64Ptr(const char* p, const char* limit, +16166: int64_t* value) { +16166: uint64_t u = 0; +16166: const char* ret = GetVarint64Ptr(p, limit, &u); +16166: *value = zigzagToI64(u); +16166: return ret; +16166: } +16166: +16166: +16166: int VarintLength(uint64_t v); +16166: +16166: +16166: +16166: +16166: char* EncodeVarint32(char* dst, uint32_t value); +16166: char* EncodeVarint64(char* dst, uint64_t value); +16166: +16166: +16166: const char* GetVarint32PtrFallback(const char* p, const char* limit, +16166: uint32_t* value); +16166: inline const char* GetVarint32Ptr(const char* p, const char* limit, +16166: uint32_t* value) { +16166: if (p < limit) { +16166: uint32_t result = *(reinterpret_cast(p)); +16166: if ((result & 128) == 0) { +16166: *value = result; +16166: return p + 1; +16166: } +16166: } +16166: return GetVarint32PtrFallback(p, limit, value); +16166: } +16166: +16166: +16166: inline void PutFixed16(std::string* dst, uint16_t value) { +16166: if (port::kLittleEndian) { +16166: dst->append(const_cast(reinterpret_cast(&value)), +16166: sizeof(value)); +16166: } else { +16166: char buf[sizeof(value)]; +16166: EncodeFixed16(buf, value); +16166: dst->append(buf, sizeof(buf)); +16166: } +16166: } +16166: +16166: inline void PutFixed32(std::string* dst, uint32_t value) { +16166: if (port::kLittleEndian) { +16166: dst->append(const_cast(reinterpret_cast(&value)), +16166: sizeof(value)); +16166: } else { +16166: char buf[sizeof(value)]; +16166: EncodeFixed32(buf, value); +16166: dst->append(buf, sizeof(buf)); +16166: } +16166: } +16166: +16166: inline void PutFixed64(std::string* dst, uint64_t value) { +16166: if (port::kLittleEndian) { +16166: dst->append(const_cast(reinterpret_cast(&value)), +16166: sizeof(value)); +16166: } else { +16166: char buf[sizeof(value)]; +16166: EncodeFixed64(buf, value); +16166: dst->append(buf, sizeof(buf)); +16166: } +16166: } +16166: +16166: inline void PutVarint32(std::string* dst, uint32_t v) { +16166: char buf[5]; +16166: char* ptr = EncodeVarint32(buf, v); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline void PutVarint32Varint32(std::string* dst, uint32_t v1, uint32_t v2) { +16166: char buf[10]; +16166: char* ptr = EncodeVarint32(buf, v1); +16166: ptr = EncodeVarint32(ptr, v2); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline void PutVarint32Varint32Varint32(std::string* dst, uint32_t v1, +16166: uint32_t v2, uint32_t v3) { +16166: char buf[15]; +16166: char* ptr = EncodeVarint32(buf, v1); +16166: ptr = EncodeVarint32(ptr, v2); +16166: ptr = EncodeVarint32(ptr, v3); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline char* EncodeVarint64(char* dst, uint64_t v) { +16166: static const unsigned int B = 128; +16166: unsigned char* ptr = reinterpret_cast(dst); +16166: while (v >= B) { +16166: *(ptr++) = (v & (B - 1)) | B; +16166: v >>= 7; +16166: } +16166: *(ptr++) = static_cast(v); +16166: return reinterpret_cast(ptr); +16166: } +16166: +16166: inline void PutVarint64(std::string* dst, uint64_t v) { +16166: char buf[kMaxVarint64Length]; +16166: char* ptr = EncodeVarint64(buf, v); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline void PutVarsignedint64(std::string* dst, int64_t v) { +16166: char buf[kMaxVarint64Length]; +16166: +16166: char* ptr = EncodeVarint64(buf, i64ToZigzag(v)); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline void PutVarint64Varint64(std::string* dst, uint64_t v1, uint64_t v2) { +16166: char buf[20]; +16166: char* ptr = EncodeVarint64(buf, v1); +16166: ptr = EncodeVarint64(ptr, v2); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline void PutVarint32Varint64(std::string* dst, uint32_t v1, uint64_t v2) { +16166: char buf[15]; +16166: char* ptr = EncodeVarint32(buf, v1); +16166: ptr = EncodeVarint64(ptr, v2); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline void PutVarint32Varint32Varint64(std::string* dst, uint32_t v1, +16166: uint32_t v2, uint64_t v3) { +16166: char buf[20]; +16166: char* ptr = EncodeVarint32(buf, v1); +16166: ptr = EncodeVarint32(ptr, v2); +16166: ptr = EncodeVarint64(ptr, v3); +16166: dst->append(buf, static_cast(ptr - buf)); +16166: } +16166: +16166: inline void PutLengthPrefixedSlice(std::string* dst, const Slice& value) { +16166: PutVarint32(dst, static_cast(value.size())); +16166: dst->append(value.data(), value.size()); +16166: } +16166: +16166: inline void PutLengthPrefixedSliceParts(std::string* dst, size_t total_bytes, +16166: const SliceParts& slice_parts) { +16166: for (int i = 0; i < slice_parts.num_parts; ++i) { +16166: total_bytes += slice_parts.parts[i].size(); +16166: } +16166: PutVarint32(dst, static_cast(total_bytes)); +16166: for (int i = 0; i < slice_parts.num_parts; ++i) { +16166: dst->append(slice_parts.parts[i].data(), slice_parts.parts[i].size()); +16166: } +16166: } +16166: +16166: inline void PutLengthPrefixedSliceParts(std::string* dst, +16166: const SliceParts& slice_parts) { +16166: PutLengthPrefixedSliceParts(dst, 0, slice_parts); +16166: } +16166: +16166: inline void PutLengthPrefixedSlicePartsWithPadding( +16166: std::string* dst, const SliceParts& slice_parts, size_t pad_sz) { +16166: PutLengthPrefixedSliceParts(dst, pad_sz, slice_parts); +16166: dst->append(pad_sz, '\0'); +16166: } +16166: +16166: inline int VarintLength(uint64_t v) { +16166: int len = 1; +16166: while (v >= 128) { +16166: v >>= 7; +16166: len++; +16166: } +16166: return len; +16166: } +16166: +16166: inline bool GetFixed64(Slice* input, uint64_t* value) { +16166: if (input->size() < sizeof(uint64_t)) { +16166: return false; +16166: } +16166: *value = DecodeFixed64(input->data()); +16166: input->remove_prefix(sizeof(uint64_t)); +16166: return true; +16166: } +16166: +16166: inline bool GetFixed32(Slice* input, uint32_t* value) { +16166: if (input->size() < sizeof(uint32_t)) { +16166: return false; +16166: } +16166: *value = DecodeFixed32(input->data()); +16166: input->remove_prefix(sizeof(uint32_t)); +16166: return true; +16166: } +16166: +16166: inline bool GetFixed16(Slice* input, uint16_t* value) { +16166: if (input->size() < sizeof(uint16_t)) { +16166: return false; +16166: } +16166: *value = DecodeFixed16(input->data()); +16166: input->remove_prefix(sizeof(uint16_t)); +16166: return true; +16166: } +16166: +16166: inline bool GetVarint32(Slice* input, uint32_t* value) { +16166: const char* p = input->data(); +16166: const char* limit = p + input->size(); +16166: const char* q = GetVarint32Ptr(p, limit, value); +16166: if (q == nullptr) { +16166: return false; +16166: } else { +16166: *input = Slice(q, static_cast(limit - q)); +16166: return true; +16166: } +16166: } +16166: +16166: inline bool GetVarint64(Slice* input, uint64_t* value) { +16166: const char* p = input->data(); +16166: const char* limit = p + input->size(); +16166: const char* q = GetVarint64Ptr(p, limit, value); +16166: if (q == nullptr) { +16166: return false; +16166: } else { +16166: *input = Slice(q, static_cast(limit - q)); +16166: return true; +16166: } +16166: } +16166: +16166: inline bool GetVarsignedint64(Slice* input, int64_t* value) { +16166: const char* p = input->data(); +16166: const char* limit = p + input->size(); +16166: const char* q = GetVarsignedint64Ptr(p, limit, value); +16166: if (q == nullptr) { +16166: return false; +16166: } else { +16166: *input = Slice(q, static_cast(limit - q)); +16166: return true; +16166: } +16166: } +16166: +16166: inline bool GetLengthPrefixedSlice(Slice* input, Slice* result) { +16166: uint32_t len = 0; +16166: if (GetVarint32(input, &len) && input->size() >= len) { +16166: *result = Slice(input->data(), len); +16166: input->remove_prefix(len); +16166: return true; +16166: } else { +16166: return false; +16166: } +16166: } +16166: +16166: inline Slice GetLengthPrefixedSlice(const char* data) { +16166: uint32_t len = 0; +16166: +16166: +16166: auto p = GetVarint32Ptr(data, data + 5 , &len); +16166: return Slice(p, len); +16166: } +16166: +16166: inline Slice GetSliceUntil(Slice* slice, char delimiter) { +16166: uint32_t len = 0; +16166: for (len = 0; len < slice->size() && slice->data()[len] != delimiter; ++len) { +16166: +16166: } +16166: +16166: Slice ret(slice->data(), len); +16166: slice->remove_prefix(len + ((len < slice->size()) ? 1 : 0)); +16166: return ret; +16166: } +16166: +16166: template +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline void +16166: PutUnaligned(T* memory, const T& value) { +16166: +16166: +16166: +16166: +16166: *memory = value; +16166: +16166: } +16166: +16166: template +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline void +16166: GetUnaligned(const T* memory, T* value) { +16166: +16166: +16166: +16166: +16166: *value = *memory; +16166: +16166: } +16166: +16166: } +16166: # 24 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h" +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_level_imp.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_level.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: enum PerfLevel : unsigned char { +16166: kUninitialized = 0, +16166: kDisable = 1, +16166: kEnableCount = 2, +16166: kEnableWait = 3, +16166: +16166: +16166: kEnableTimeExceptForMutex = 4, +16166: +16166: +16166: +16166: kEnableTimeAndCPUTimeExceptForMutex = 5, +16166: kEnableTime = 6, +16166: kOutOfBounds = 7 +16166: }; +16166: +16166: +16166: void SetPerfLevel(PerfLevel level); +16166: +16166: +16166: PerfLevel GetPerfLevel(); +16166: +16166: } +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_level_imp.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: extern thread_local PerfLevel perf_level; +16166: +16166: } +16166: # 8 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/map" 1 3 +16166: # 58 "/usr/include/c++/14/map" 3 +16166: +16166: # 59 "/usr/include/c++/14/map" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_tree.h" 1 3 +16166: # 61 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: +16166: # 62 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: # 75 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: +16166: # 75 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 95 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: enum _Rb_tree_color { _S_red = false, _S_black = true }; +16166: +16166: struct _Rb_tree_node_base +16166: { +16166: typedef _Rb_tree_node_base* _Base_ptr; +16166: typedef const _Rb_tree_node_base* _Const_Base_ptr; +16166: +16166: _Rb_tree_color _M_color; +16166: _Base_ptr _M_parent; +16166: _Base_ptr _M_left; +16166: _Base_ptr _M_right; +16166: +16166: static _Base_ptr +16166: _S_minimum(_Base_ptr __x) noexcept +16166: { +16166: while (__x->_M_left != 0) __x = __x->_M_left; +16166: return __x; +16166: } +16166: +16166: static _Const_Base_ptr +16166: _S_minimum(_Const_Base_ptr __x) noexcept +16166: { +16166: while (__x->_M_left != 0) __x = __x->_M_left; +16166: return __x; +16166: } +16166: +16166: static _Base_ptr +16166: _S_maximum(_Base_ptr __x) noexcept +16166: { +16166: while (__x->_M_right != 0) __x = __x->_M_right; +16166: return __x; +16166: } +16166: +16166: static _Const_Base_ptr +16166: _S_maximum(_Const_Base_ptr __x) noexcept +16166: { +16166: while (__x->_M_right != 0) __x = __x->_M_right; +16166: return __x; +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Rb_tree_key_compare +16166: { +16166: _Key_compare _M_key_compare; +16166: +16166: _Rb_tree_key_compare() +16166: noexcept(is_nothrow_default_constructible<_Key_compare>::value) +16166: +16166: : _M_key_compare() +16166: { } +16166: +16166: _Rb_tree_key_compare(const _Key_compare& __comp) +16166: : _M_key_compare(__comp) +16166: { } +16166: +16166: +16166: +16166: _Rb_tree_key_compare(const _Rb_tree_key_compare&) = default; +16166: +16166: _Rb_tree_key_compare(_Rb_tree_key_compare&& __x) +16166: noexcept(is_nothrow_copy_constructible<_Key_compare>::value) +16166: : _M_key_compare(__x._M_key_compare) +16166: { } +16166: +16166: }; +16166: +16166: +16166: struct _Rb_tree_header +16166: { +16166: _Rb_tree_node_base _M_header; +16166: size_t _M_node_count; +16166: +16166: _Rb_tree_header() noexcept +16166: { +16166: _M_header._M_color = _S_red; +16166: _M_reset(); +16166: } +16166: +16166: +16166: _Rb_tree_header(_Rb_tree_header&& __x) noexcept +16166: { +16166: if (__x._M_header._M_parent != nullptr) +16166: _M_move_data(__x); +16166: else +16166: { +16166: _M_header._M_color = _S_red; +16166: _M_reset(); +16166: } +16166: } +16166: +16166: +16166: void +16166: _M_move_data(_Rb_tree_header& __from) +16166: { +16166: _M_header._M_color = __from._M_header._M_color; +16166: _M_header._M_parent = __from._M_header._M_parent; +16166: _M_header._M_left = __from._M_header._M_left; +16166: _M_header._M_right = __from._M_header._M_right; +16166: _M_header._M_parent->_M_parent = &_M_header; +16166: _M_node_count = __from._M_node_count; +16166: +16166: __from._M_reset(); +16166: } +16166: +16166: void +16166: _M_reset() +16166: { +16166: _M_header._M_parent = 0; +16166: _M_header._M_left = &_M_header; +16166: _M_header._M_right = &_M_header; +16166: _M_node_count = 0; +16166: } +16166: }; +16166: +16166: template +16166: struct _Rb_tree_node : public _Rb_tree_node_base +16166: { +16166: typedef _Rb_tree_node<_Val>* _Link_type; +16166: # 227 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: __gnu_cxx::__aligned_membuf<_Val> _M_storage; +16166: +16166: _Val* +16166: _M_valptr() +16166: { return _M_storage._M_ptr(); } +16166: +16166: const _Val* +16166: _M_valptr() const +16166: { return _M_storage._M_ptr(); } +16166: +16166: }; +16166: +16166: __attribute__ ((__pure__)) _Rb_tree_node_base* +16166: _Rb_tree_increment(_Rb_tree_node_base* __x) throw (); +16166: +16166: __attribute__ ((__pure__)) const _Rb_tree_node_base* +16166: _Rb_tree_increment(const _Rb_tree_node_base* __x) throw (); +16166: +16166: __attribute__ ((__pure__)) _Rb_tree_node_base* +16166: _Rb_tree_decrement(_Rb_tree_node_base* __x) throw (); +16166: +16166: __attribute__ ((__pure__)) const _Rb_tree_node_base* +16166: _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw (); +16166: +16166: template +16166: struct _Rb_tree_iterator +16166: { +16166: typedef _Tp value_type; +16166: typedef _Tp& reference; +16166: typedef _Tp* pointer; +16166: +16166: typedef bidirectional_iterator_tag iterator_category; +16166: typedef ptrdiff_t difference_type; +16166: +16166: typedef _Rb_tree_iterator<_Tp> _Self; +16166: typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; +16166: typedef _Rb_tree_node<_Tp>* _Link_type; +16166: +16166: _Rb_tree_iterator() noexcept +16166: : _M_node() { } +16166: +16166: explicit +16166: _Rb_tree_iterator(_Base_ptr __x) noexcept +16166: : _M_node(__x) { } +16166: +16166: reference +16166: operator*() const noexcept +16166: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } +16166: +16166: pointer +16166: operator->() const noexcept +16166: { return static_cast<_Link_type> (_M_node)->_M_valptr(); } +16166: +16166: _Self& +16166: operator++() noexcept +16166: { +16166: _M_node = _Rb_tree_increment(_M_node); +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator++(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _Rb_tree_increment(_M_node); +16166: return __tmp; +16166: } +16166: +16166: _Self& +16166: operator--() noexcept +16166: { +16166: _M_node = _Rb_tree_decrement(_M_node); +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator--(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _Rb_tree_decrement(_M_node); +16166: return __tmp; +16166: } +16166: +16166: friend bool +16166: operator==(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node == __y._M_node; } +16166: +16166: +16166: friend bool +16166: operator!=(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node != __y._M_node; } +16166: +16166: +16166: _Base_ptr _M_node; +16166: }; +16166: +16166: template +16166: struct _Rb_tree_const_iterator +16166: { +16166: typedef _Tp value_type; +16166: typedef const _Tp& reference; +16166: typedef const _Tp* pointer; +16166: +16166: typedef _Rb_tree_iterator<_Tp> iterator; +16166: +16166: typedef bidirectional_iterator_tag iterator_category; +16166: typedef ptrdiff_t difference_type; +16166: +16166: typedef _Rb_tree_const_iterator<_Tp> _Self; +16166: typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; +16166: typedef const _Rb_tree_node<_Tp>* _Link_type; +16166: +16166: _Rb_tree_const_iterator() noexcept +16166: : _M_node() { } +16166: +16166: explicit +16166: _Rb_tree_const_iterator(_Base_ptr __x) noexcept +16166: : _M_node(__x) { } +16166: +16166: _Rb_tree_const_iterator(const iterator& __it) noexcept +16166: : _M_node(__it._M_node) { } +16166: +16166: iterator +16166: _M_const_cast() const noexcept +16166: { return iterator(const_cast(_M_node)); } +16166: +16166: reference +16166: operator*() const noexcept +16166: { return *static_cast<_Link_type>(_M_node)->_M_valptr(); } +16166: +16166: pointer +16166: operator->() const noexcept +16166: { return static_cast<_Link_type>(_M_node)->_M_valptr(); } +16166: +16166: _Self& +16166: operator++() noexcept +16166: { +16166: _M_node = _Rb_tree_increment(_M_node); +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator++(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _Rb_tree_increment(_M_node); +16166: return __tmp; +16166: } +16166: +16166: _Self& +16166: operator--() noexcept +16166: { +16166: _M_node = _Rb_tree_decrement(_M_node); +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator--(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _Rb_tree_decrement(_M_node); +16166: return __tmp; +16166: } +16166: +16166: friend bool +16166: operator==(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node == __y._M_node; } +16166: +16166: +16166: friend bool +16166: operator!=(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node != __y._M_node; } +16166: +16166: +16166: _Base_ptr _M_node; +16166: }; +16166: +16166: __attribute__((__nonnull__)) +16166: void +16166: _Rb_tree_insert_and_rebalance(const bool __insert_left, +16166: _Rb_tree_node_base* __x, +16166: _Rb_tree_node_base* __p, +16166: _Rb_tree_node_base& __header) throw (); +16166: +16166: __attribute__((__nonnull__,__returns_nonnull__)) +16166: _Rb_tree_node_base* +16166: _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, +16166: _Rb_tree_node_base& __header) throw (); +16166: +16166: +16166: template +16166: struct _Rb_tree_merge_helper { }; +16166: +16166: +16166: template > +16166: class _Rb_tree +16166: { +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_Rb_tree_node<_Val> >::other _Node_allocator; +16166: +16166: typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; +16166: +16166: protected: +16166: typedef _Rb_tree_node_base* _Base_ptr; +16166: typedef const _Rb_tree_node_base* _Const_Base_ptr; +16166: typedef _Rb_tree_node<_Val>* _Link_type; +16166: typedef const _Rb_tree_node<_Val>* _Const_Link_type; +16166: +16166: private: +16166: +16166: +16166: struct _Reuse_or_alloc_node +16166: { +16166: _Reuse_or_alloc_node(_Rb_tree& __t) +16166: : _M_root(__t._M_root()), _M_nodes(__t._M_rightmost()), _M_t(__t) +16166: { +16166: if (_M_root) +16166: { +16166: _M_root->_M_parent = 0; +16166: +16166: if (_M_nodes->_M_left) +16166: _M_nodes = _M_nodes->_M_left; +16166: } +16166: else +16166: _M_nodes = 0; +16166: } +16166: +16166: +16166: _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete; +16166: +16166: +16166: ~_Reuse_or_alloc_node() +16166: { _M_t._M_erase(static_cast<_Link_type>(_M_root)); } +16166: +16166: template +16166: _Link_type +16166: operator()(_Arg&& __arg) +16166: { +16166: _Link_type __node = static_cast<_Link_type>(_M_extract()); +16166: if (__node) +16166: { +16166: _M_t._M_destroy_node(__node); +16166: _M_t._M_construct_node(__node, std::forward<_Arg>(__arg)); +16166: return __node; +16166: } +16166: +16166: return _M_t._M_create_node(std::forward<_Arg>(__arg)); +16166: } +16166: +16166: private: +16166: _Base_ptr +16166: _M_extract() +16166: { +16166: if (!_M_nodes) +16166: return _M_nodes; +16166: +16166: _Base_ptr __node = _M_nodes; +16166: _M_nodes = _M_nodes->_M_parent; +16166: if (_M_nodes) +16166: { +16166: if (_M_nodes->_M_right == __node) +16166: { +16166: _M_nodes->_M_right = 0; +16166: +16166: if (_M_nodes->_M_left) +16166: { +16166: _M_nodes = _M_nodes->_M_left; +16166: +16166: while (_M_nodes->_M_right) +16166: _M_nodes = _M_nodes->_M_right; +16166: +16166: if (_M_nodes->_M_left) +16166: _M_nodes = _M_nodes->_M_left; +16166: } +16166: } +16166: else +16166: _M_nodes->_M_left = 0; +16166: } +16166: else +16166: _M_root = 0; +16166: +16166: return __node; +16166: } +16166: +16166: _Base_ptr _M_root; +16166: _Base_ptr _M_nodes; +16166: _Rb_tree& _M_t; +16166: }; +16166: +16166: +16166: +16166: struct _Alloc_node +16166: { +16166: _Alloc_node(_Rb_tree& __t) +16166: : _M_t(__t) { } +16166: +16166: template +16166: _Link_type +16166: operator()(_Arg&& __arg) const +16166: { return _M_t._M_create_node(std::forward<_Arg>(__arg)); } +16166: +16166: private: +16166: _Rb_tree& _M_t; +16166: }; +16166: +16166: public: +16166: typedef _Key key_type; +16166: typedef _Val value_type; +16166: typedef value_type* pointer; +16166: typedef const value_type* const_pointer; +16166: typedef value_type& reference; +16166: typedef const value_type& const_reference; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef _Alloc allocator_type; +16166: +16166: _Node_allocator& +16166: _M_get_Node_allocator() noexcept +16166: { return this->_M_impl; } +16166: +16166: const _Node_allocator& +16166: _M_get_Node_allocator() const noexcept +16166: { return this->_M_impl; } +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_get_Node_allocator()); } +16166: +16166: protected: +16166: _Link_type +16166: _M_get_node() +16166: { return _Alloc_traits::allocate(_M_get_Node_allocator(), 1); } +16166: +16166: void +16166: _M_put_node(_Link_type __p) noexcept +16166: { _Alloc_traits::deallocate(_M_get_Node_allocator(), __p, 1); } +16166: # 586 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: template +16166: void +16166: _M_construct_node(_Link_type __node, _Args&&... __args) +16166: { +16166: try +16166: { +16166: ::new(__node) _Rb_tree_node<_Val>; +16166: _Alloc_traits::construct(_M_get_Node_allocator(), +16166: __node->_M_valptr(), +16166: std::forward<_Args>(__args)...); +16166: } +16166: catch(...) +16166: { +16166: __node->~_Rb_tree_node<_Val>(); +16166: _M_put_node(__node); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: _Link_type +16166: _M_create_node(_Args&&... __args) +16166: { +16166: _Link_type __tmp = _M_get_node(); +16166: _M_construct_node(__tmp, std::forward<_Args>(__args)...); +16166: return __tmp; +16166: } +16166: +16166: +16166: void +16166: _M_destroy_node(_Link_type __p) noexcept +16166: { +16166: +16166: +16166: +16166: _Alloc_traits::destroy(_M_get_Node_allocator(), __p->_M_valptr()); +16166: __p->~_Rb_tree_node<_Val>(); +16166: +16166: } +16166: +16166: void +16166: _M_drop_node(_Link_type __p) noexcept +16166: { +16166: _M_destroy_node(__p); +16166: _M_put_node(__p); +16166: } +16166: +16166: template +16166: _Link_type +16166: _M_clone_node(_Link_type __x, _NodeGen& __node_gen) +16166: { +16166: +16166: using _Vp = __conditional_t<_MoveValue, +16166: value_type&&, +16166: const value_type&>; +16166: +16166: _Link_type __tmp +16166: = __node_gen(std::forward<_Vp>(*__x->_M_valptr())); +16166: __tmp->_M_color = __x->_M_color; +16166: __tmp->_M_left = 0; +16166: __tmp->_M_right = 0; +16166: return __tmp; +16166: } +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: template +16166: +16166: struct _Rb_tree_impl +16166: : public _Node_allocator +16166: , public _Rb_tree_key_compare<_Key_compare> +16166: , public _Rb_tree_header +16166: { +16166: typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; +16166: +16166: _Rb_tree_impl() +16166: noexcept(is_nothrow_default_constructible<_Node_allocator>::value && is_nothrow_default_constructible<_Base_key_compare>::value) +16166: +16166: +16166: : _Node_allocator() +16166: { } +16166: +16166: _Rb_tree_impl(const _Rb_tree_impl& __x) +16166: : _Node_allocator(_Alloc_traits::_S_select_on_copy(__x)) +16166: , _Base_key_compare(__x._M_key_compare) +16166: , _Rb_tree_header() +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: _Rb_tree_impl(_Rb_tree_impl&&) +16166: noexcept( is_nothrow_move_constructible<_Base_key_compare>::value ) +16166: = default; +16166: +16166: explicit +16166: _Rb_tree_impl(_Node_allocator&& __a) +16166: : _Node_allocator(std::move(__a)) +16166: { } +16166: +16166: _Rb_tree_impl(_Rb_tree_impl&& __x, _Node_allocator&& __a) +16166: : _Node_allocator(std::move(__a)), +16166: _Base_key_compare(std::move(__x)), +16166: _Rb_tree_header(std::move(__x)) +16166: { } +16166: +16166: _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) +16166: : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) +16166: { } +16166: +16166: }; +16166: +16166: _Rb_tree_impl<_Compare> _M_impl; +16166: +16166: protected: +16166: _Base_ptr& +16166: _M_root() noexcept +16166: { return this->_M_impl._M_header._M_parent; } +16166: +16166: _Const_Base_ptr +16166: _M_root() const noexcept +16166: { return this->_M_impl._M_header._M_parent; } +16166: +16166: _Base_ptr& +16166: _M_leftmost() noexcept +16166: { return this->_M_impl._M_header._M_left; } +16166: +16166: _Const_Base_ptr +16166: _M_leftmost() const noexcept +16166: { return this->_M_impl._M_header._M_left; } +16166: +16166: _Base_ptr& +16166: _M_rightmost() noexcept +16166: { return this->_M_impl._M_header._M_right; } +16166: +16166: _Const_Base_ptr +16166: _M_rightmost() const noexcept +16166: { return this->_M_impl._M_header._M_right; } +16166: +16166: _Link_type +16166: _M_mbegin() const noexcept +16166: { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); } +16166: +16166: _Link_type +16166: _M_begin() noexcept +16166: { return _M_mbegin(); } +16166: +16166: _Const_Link_type +16166: _M_begin() const noexcept +16166: { +16166: return static_cast<_Const_Link_type> +16166: (this->_M_impl._M_header._M_parent); +16166: } +16166: +16166: _Base_ptr +16166: _M_end() noexcept +16166: { return &this->_M_impl._M_header; } +16166: +16166: _Const_Base_ptr +16166: _M_end() const noexcept +16166: { return &this->_M_impl._M_header; } +16166: +16166: static const _Key& +16166: _S_key(_Const_Link_type __x) +16166: { +16166: +16166: +16166: +16166: static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, +16166: "comparison object must be invocable " +16166: "with two arguments of key type"); +16166: +16166: +16166: +16166: if constexpr (__is_invocable<_Compare&, const _Key&, const _Key&>{}) +16166: static_assert( +16166: is_invocable_v, +16166: "comparison object must be invocable as const"); +16166: +16166: +16166: +16166: return _KeyOfValue()(*__x->_M_valptr()); +16166: } +16166: +16166: static _Link_type +16166: _S_left(_Base_ptr __x) noexcept +16166: { return static_cast<_Link_type>(__x->_M_left); } +16166: +16166: static _Const_Link_type +16166: _S_left(_Const_Base_ptr __x) noexcept +16166: { return static_cast<_Const_Link_type>(__x->_M_left); } +16166: +16166: static _Link_type +16166: _S_right(_Base_ptr __x) noexcept +16166: { return static_cast<_Link_type>(__x->_M_right); } +16166: +16166: static _Const_Link_type +16166: _S_right(_Const_Base_ptr __x) noexcept +16166: { return static_cast<_Const_Link_type>(__x->_M_right); } +16166: +16166: static const _Key& +16166: _S_key(_Const_Base_ptr __x) +16166: { return _S_key(static_cast<_Const_Link_type>(__x)); } +16166: +16166: static _Base_ptr +16166: _S_minimum(_Base_ptr __x) noexcept +16166: { return _Rb_tree_node_base::_S_minimum(__x); } +16166: +16166: static _Const_Base_ptr +16166: _S_minimum(_Const_Base_ptr __x) noexcept +16166: { return _Rb_tree_node_base::_S_minimum(__x); } +16166: +16166: static _Base_ptr +16166: _S_maximum(_Base_ptr __x) noexcept +16166: { return _Rb_tree_node_base::_S_maximum(__x); } +16166: +16166: static _Const_Base_ptr +16166: _S_maximum(_Const_Base_ptr __x) noexcept +16166: { return _Rb_tree_node_base::_S_maximum(__x); } +16166: +16166: public: +16166: typedef _Rb_tree_iterator iterator; +16166: typedef _Rb_tree_const_iterator const_iterator; +16166: +16166: typedef std::reverse_iterator reverse_iterator; +16166: typedef std::reverse_iterator const_reverse_iterator; +16166: +16166: +16166: using node_type = _Node_handle<_Key, _Val, _Node_allocator>; +16166: using insert_return_type = _Node_insert_return< +16166: __conditional_t, const_iterator, iterator>, +16166: node_type>; +16166: +16166: +16166: pair<_Base_ptr, _Base_ptr> +16166: _M_get_insert_unique_pos(const key_type& __k); +16166: +16166: pair<_Base_ptr, _Base_ptr> +16166: _M_get_insert_equal_pos(const key_type& __k); +16166: +16166: pair<_Base_ptr, _Base_ptr> +16166: _M_get_insert_hint_unique_pos(const_iterator __pos, +16166: const key_type& __k); +16166: +16166: pair<_Base_ptr, _Base_ptr> +16166: _M_get_insert_hint_equal_pos(const_iterator __pos, +16166: const key_type& __k); +16166: +16166: private: +16166: +16166: template +16166: iterator +16166: _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); +16166: +16166: iterator +16166: _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z); +16166: +16166: template +16166: iterator +16166: _M_insert_lower(_Base_ptr __y, _Arg&& __v); +16166: +16166: template +16166: iterator +16166: _M_insert_equal_lower(_Arg&& __x); +16166: +16166: iterator +16166: _M_insert_lower_node(_Base_ptr __p, _Link_type __z); +16166: +16166: iterator +16166: _M_insert_equal_lower_node(_Link_type __z); +16166: # 877 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: enum { __as_lvalue, __as_rvalue }; +16166: +16166: template +16166: _Link_type +16166: _M_copy(_Link_type, _Base_ptr, _NodeGen&); +16166: +16166: template +16166: _Link_type +16166: _M_copy(const _Rb_tree& __x, _NodeGen& __gen) +16166: { +16166: _Link_type __root = +16166: _M_copy<_MoveValues>(__x._M_mbegin(), _M_end(), __gen); +16166: _M_leftmost() = _S_minimum(__root); +16166: _M_rightmost() = _S_maximum(__root); +16166: _M_impl._M_node_count = __x._M_impl._M_node_count; +16166: return __root; +16166: } +16166: +16166: _Link_type +16166: _M_copy(const _Rb_tree& __x) +16166: { +16166: _Alloc_node __an(*this); +16166: return _M_copy<__as_lvalue>(__x, __an); +16166: } +16166: +16166: void +16166: _M_erase(_Link_type __x); +16166: +16166: iterator +16166: _M_lower_bound(_Link_type __x, _Base_ptr __y, +16166: const _Key& __k); +16166: +16166: const_iterator +16166: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, +16166: const _Key& __k) const; +16166: +16166: iterator +16166: _M_upper_bound(_Link_type __x, _Base_ptr __y, +16166: const _Key& __k); +16166: +16166: const_iterator +16166: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, +16166: const _Key& __k) const; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: _Rb_tree() = default; +16166: +16166: +16166: _Rb_tree(const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_impl(__comp, _Node_allocator(__a)) { } +16166: +16166: _Rb_tree(const _Rb_tree& __x) +16166: : _M_impl(__x._M_impl) +16166: { +16166: if (__x._M_root() != 0) +16166: _M_root() = _M_copy(__x); +16166: } +16166: +16166: +16166: _Rb_tree(const allocator_type& __a) +16166: : _M_impl(_Node_allocator(__a)) +16166: { } +16166: +16166: _Rb_tree(const _Rb_tree& __x, const allocator_type& __a) +16166: : _M_impl(__x._M_impl._M_key_compare, _Node_allocator(__a)) +16166: { +16166: if (__x._M_root() != nullptr) +16166: _M_root() = _M_copy(__x); +16166: } +16166: +16166: _Rb_tree(_Rb_tree&&) = default; +16166: +16166: _Rb_tree(_Rb_tree&& __x, const allocator_type& __a) +16166: : _Rb_tree(std::move(__x), _Node_allocator(__a)) +16166: { } +16166: +16166: private: +16166: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, true_type) +16166: noexcept(is_nothrow_default_constructible<_Compare>::value) +16166: : _M_impl(std::move(__x._M_impl), std::move(__a)) +16166: { } +16166: +16166: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a, false_type) +16166: : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) +16166: { +16166: if (__x._M_root() != nullptr) +16166: _M_move_data(__x, false_type{}); +16166: } +16166: +16166: public: +16166: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) +16166: noexcept( noexcept( +16166: _Rb_tree(std::declval<_Rb_tree&&>(), std::declval<_Node_allocator&&>(), +16166: std::declval())) ) +16166: : _Rb_tree(std::move(__x), std::move(__a), +16166: typename _Alloc_traits::is_always_equal{}) +16166: { } +16166: +16166: +16166: ~_Rb_tree() noexcept +16166: { _M_erase(_M_begin()); } +16166: +16166: _Rb_tree& +16166: operator=(const _Rb_tree& __x); +16166: +16166: +16166: _Compare +16166: key_comp() const +16166: { return _M_impl._M_key_compare; } +16166: +16166: iterator +16166: begin() noexcept +16166: { return iterator(this->_M_impl._M_header._M_left); } +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return const_iterator(this->_M_impl._M_header._M_left); } +16166: +16166: iterator +16166: end() noexcept +16166: { return iterator(&this->_M_impl._M_header); } +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return const_iterator(&this->_M_impl._M_header); } +16166: +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return reverse_iterator(end()); } +16166: +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: reverse_iterator +16166: rend() noexcept +16166: { return reverse_iterator(begin()); } +16166: +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_impl._M_node_count == 0; } +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_impl._M_node_count; } +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _Alloc_traits::max_size(_M_get_Node_allocator()); } +16166: +16166: void +16166: swap(_Rb_tree& __t) +16166: noexcept(__is_nothrow_swappable<_Compare>::value); +16166: +16166: +16166: +16166: template +16166: pair +16166: _M_insert_unique(_Arg&& __x); +16166: +16166: template +16166: iterator +16166: _M_insert_equal(_Arg&& __x); +16166: +16166: template +16166: iterator +16166: _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); +16166: +16166: template +16166: iterator +16166: _M_insert_unique_(const_iterator __pos, _Arg&& __x) +16166: { +16166: _Alloc_node __an(*this); +16166: return _M_insert_unique_(__pos, std::forward<_Arg>(__x), __an); +16166: } +16166: +16166: template +16166: iterator +16166: _M_insert_equal_(const_iterator __pos, _Arg&& __x, _NodeGen&); +16166: +16166: template +16166: iterator +16166: _M_insert_equal_(const_iterator __pos, _Arg&& __x) +16166: { +16166: _Alloc_node __an(*this); +16166: return _M_insert_equal_(__pos, std::forward<_Arg>(__x), __an); +16166: } +16166: +16166: template +16166: pair +16166: _M_emplace_unique(_Args&&... __args); +16166: +16166: template +16166: iterator +16166: _M_emplace_equal(_Args&&... __args); +16166: +16166: template +16166: iterator +16166: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args); +16166: +16166: template +16166: iterator +16166: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args); +16166: +16166: template +16166: using __same_value_type +16166: = is_same::value_type>; +16166: +16166: template +16166: __enable_if_t<__same_value_type<_InputIterator>::value> +16166: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) +16166: { +16166: _Alloc_node __an(*this); +16166: for (; __first != __last; ++__first) +16166: _M_insert_unique_(end(), *__first, __an); +16166: } +16166: +16166: template +16166: __enable_if_t::value> +16166: _M_insert_range_unique(_InputIterator __first, _InputIterator __last) +16166: { +16166: for (; __first != __last; ++__first) +16166: _M_emplace_unique(*__first); +16166: } +16166: +16166: template +16166: __enable_if_t<__same_value_type<_InputIterator>::value> +16166: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) +16166: { +16166: _Alloc_node __an(*this); +16166: for (; __first != __last; ++__first) +16166: _M_insert_equal_(end(), *__first, __an); +16166: } +16166: +16166: template +16166: __enable_if_t::value> +16166: _M_insert_range_equal(_InputIterator __first, _InputIterator __last) +16166: { +16166: for (; __first != __last; ++__first) +16166: _M_emplace_equal(*__first); +16166: } +16166: # 1176 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: private: +16166: void +16166: _M_erase_aux(const_iterator __position); +16166: +16166: void +16166: _M_erase_aux(const_iterator __first, const_iterator __last); +16166: +16166: public: +16166: +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(const_iterator __position) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); +16166: const_iterator __result = __position; +16166: ++__result; +16166: _M_erase_aux(__position); +16166: return __result._M_const_cast(); +16166: } +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(iterator __position) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__position != end())) std::__glibcxx_assert_fail(); } while (false); +16166: iterator __result = __position; +16166: ++__result; +16166: _M_erase_aux(__position); +16166: return __result; +16166: } +16166: # 1225 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: size_type +16166: erase(const key_type& __x); +16166: +16166: +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { +16166: _M_erase_aux(__first, __last); +16166: return __last._M_const_cast(); +16166: } +16166: # 1248 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: void +16166: clear() noexcept +16166: { +16166: _M_erase(_M_begin()); +16166: _M_impl._M_reset(); +16166: } +16166: +16166: +16166: iterator +16166: find(const key_type& __k); +16166: +16166: const_iterator +16166: find(const key_type& __k) const; +16166: +16166: size_type +16166: count(const key_type& __k) const; +16166: +16166: iterator +16166: lower_bound(const key_type& __k) +16166: { return _M_lower_bound(_M_begin(), _M_end(), __k); } +16166: +16166: const_iterator +16166: lower_bound(const key_type& __k) const +16166: { return _M_lower_bound(_M_begin(), _M_end(), __k); } +16166: +16166: iterator +16166: upper_bound(const key_type& __k) +16166: { return _M_upper_bound(_M_begin(), _M_end(), __k); } +16166: +16166: const_iterator +16166: upper_bound(const key_type& __k) const +16166: { return _M_upper_bound(_M_begin(), _M_end(), __k); } +16166: +16166: pair +16166: equal_range(const key_type& __k); +16166: +16166: pair +16166: equal_range(const key_type& __k) const; +16166: +16166: +16166: template> +16166: iterator +16166: _M_find_tr(const _Kt& __k) +16166: { +16166: const _Rb_tree* __const_this = this; +16166: return __const_this->_M_find_tr(__k)._M_const_cast(); +16166: } +16166: +16166: template> +16166: const_iterator +16166: _M_find_tr(const _Kt& __k) const +16166: { +16166: auto __j = _M_lower_bound_tr(__k); +16166: if (__j != end() && _M_impl._M_key_compare(__k, _S_key(__j._M_node))) +16166: __j = end(); +16166: return __j; +16166: } +16166: +16166: template> +16166: size_type +16166: _M_count_tr(const _Kt& __k) const +16166: { +16166: auto __p = _M_equal_range_tr(__k); +16166: return std::distance(__p.first, __p.second); +16166: } +16166: +16166: template> +16166: iterator +16166: _M_lower_bound_tr(const _Kt& __k) +16166: { +16166: const _Rb_tree* __const_this = this; +16166: return __const_this->_M_lower_bound_tr(__k)._M_const_cast(); +16166: } +16166: +16166: template> +16166: const_iterator +16166: _M_lower_bound_tr(const _Kt& __k) const +16166: { +16166: auto __x = _M_begin(); +16166: auto __y = _M_end(); +16166: while (__x != 0) +16166: if (!_M_impl._M_key_compare(_S_key(__x), __k)) +16166: { +16166: __y = __x; +16166: __x = _S_left(__x); +16166: } +16166: else +16166: __x = _S_right(__x); +16166: return const_iterator(__y); +16166: } +16166: +16166: template> +16166: iterator +16166: _M_upper_bound_tr(const _Kt& __k) +16166: { +16166: const _Rb_tree* __const_this = this; +16166: return __const_this->_M_upper_bound_tr(__k)._M_const_cast(); +16166: } +16166: +16166: template> +16166: const_iterator +16166: _M_upper_bound_tr(const _Kt& __k) const +16166: { +16166: auto __x = _M_begin(); +16166: auto __y = _M_end(); +16166: while (__x != 0) +16166: if (_M_impl._M_key_compare(__k, _S_key(__x))) +16166: { +16166: __y = __x; +16166: __x = _S_left(__x); +16166: } +16166: else +16166: __x = _S_right(__x); +16166: return const_iterator(__y); +16166: } +16166: +16166: template> +16166: pair +16166: _M_equal_range_tr(const _Kt& __k) +16166: { +16166: const _Rb_tree* __const_this = this; +16166: auto __ret = __const_this->_M_equal_range_tr(__k); +16166: return { __ret.first._M_const_cast(), __ret.second._M_const_cast() }; +16166: } +16166: +16166: template> +16166: pair +16166: _M_equal_range_tr(const _Kt& __k) const +16166: { +16166: auto __low = _M_lower_bound_tr(__k); +16166: auto __high = __low; +16166: auto& __cmp = _M_impl._M_key_compare; +16166: while (__high != end() && !__cmp(__k, _S_key(__high._M_node))) +16166: ++__high; +16166: return { __low, __high }; +16166: } +16166: +16166: +16166: +16166: bool +16166: __rb_verify() const; +16166: +16166: +16166: _Rb_tree& +16166: operator=(_Rb_tree&&) +16166: noexcept(_Alloc_traits::_S_nothrow_move() +16166: && is_nothrow_move_assignable<_Compare>::value); +16166: +16166: template +16166: void +16166: _M_assign_unique(_Iterator, _Iterator); +16166: +16166: template +16166: void +16166: _M_assign_equal(_Iterator, _Iterator); +16166: +16166: private: +16166: +16166: void +16166: _M_move_data(_Rb_tree& __x, true_type) +16166: { _M_impl._M_move_data(__x._M_impl); } +16166: +16166: +16166: +16166: void +16166: _M_move_data(_Rb_tree&, false_type); +16166: +16166: +16166: void +16166: _M_move_assign(_Rb_tree&, true_type); +16166: +16166: +16166: +16166: void +16166: _M_move_assign(_Rb_tree&, false_type); +16166: +16166: +16166: +16166: public: +16166: +16166: insert_return_type +16166: _M_reinsert_node_unique(node_type&& __nh) +16166: { +16166: insert_return_type __ret; +16166: if (__nh.empty()) +16166: __ret.position = end(); +16166: else +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: auto __res = _M_get_insert_unique_pos(__nh._M_key()); +16166: if (__res.second) +16166: { +16166: __ret.position +16166: = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +16166: __nh.release(); +16166: __ret.inserted = true; +16166: } +16166: else +16166: { +16166: __ret.node = std::move(__nh); +16166: __ret.position = iterator(__res.first); +16166: __ret.inserted = false; +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: iterator +16166: _M_reinsert_node_equal(node_type&& __nh) +16166: { +16166: iterator __ret; +16166: if (__nh.empty()) +16166: __ret = end(); +16166: else +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +16166: auto __res = _M_get_insert_equal_pos(__nh._M_key()); +16166: if (__res.second) +16166: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +16166: else +16166: __ret = _M_insert_equal_lower_node(__nh._M_ptr); +16166: __nh.release(); +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: iterator +16166: _M_reinsert_node_hint_unique(const_iterator __hint, node_type&& __nh) +16166: { +16166: iterator __ret; +16166: if (__nh.empty()) +16166: __ret = end(); +16166: else +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +16166: auto __res = _M_get_insert_hint_unique_pos(__hint, __nh._M_key()); +16166: if (__res.second) +16166: { +16166: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +16166: __nh.release(); +16166: } +16166: else +16166: __ret = iterator(__res.first); +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: iterator +16166: _M_reinsert_node_hint_equal(const_iterator __hint, node_type&& __nh) +16166: { +16166: iterator __ret; +16166: if (__nh.empty()) +16166: __ret = end(); +16166: else +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_get_Node_allocator() == *__nh._M_alloc)) std::__glibcxx_assert_fail(); } while (false); +16166: auto __res = _M_get_insert_hint_equal_pos(__hint, __nh._M_key()); +16166: if (__res.second) +16166: __ret = _M_insert_node(__res.first, __res.second, __nh._M_ptr); +16166: else +16166: __ret = _M_insert_equal_lower_node(__nh._M_ptr); +16166: __nh.release(); +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: auto __ptr = _Rb_tree_rebalance_for_erase( +16166: __pos._M_const_cast()._M_node, _M_impl._M_header); +16166: --_M_impl._M_node_count; +16166: return { static_cast<_Link_type>(__ptr), _M_get_Node_allocator() }; +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __k) +16166: { +16166: node_type __nh; +16166: auto __pos = find(__k); +16166: if (__pos != end()) +16166: __nh = extract(const_iterator(__pos)); +16166: return __nh; +16166: } +16166: +16166: template +16166: using _Compatible_tree +16166: = _Rb_tree<_Key, _Val, _KeyOfValue, _Compare2, _Alloc>; +16166: +16166: template +16166: friend struct _Rb_tree_merge_helper; +16166: +16166: +16166: template +16166: void +16166: _M_merge_unique(_Compatible_tree<_Compare2>& __src) noexcept +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>; +16166: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) +16166: { +16166: auto __pos = __i++; +16166: auto __res = _M_get_insert_unique_pos(_KeyOfValue()(*__pos)); +16166: if (__res.second) +16166: { +16166: auto& __src_impl = _Merge_helper::_S_get_impl(__src); +16166: auto __ptr = _Rb_tree_rebalance_for_erase( +16166: __pos._M_node, __src_impl._M_header); +16166: --__src_impl._M_node_count; +16166: _M_insert_node(__res.first, __res.second, +16166: static_cast<_Link_type>(__ptr)); +16166: } +16166: } +16166: } +16166: +16166: +16166: template +16166: void +16166: _M_merge_equal(_Compatible_tree<_Compare2>& __src) noexcept +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper<_Rb_tree, _Compare2>; +16166: for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) +16166: { +16166: auto __pos = __i++; +16166: auto __res = _M_get_insert_equal_pos(_KeyOfValue()(*__pos)); +16166: if (__res.second) +16166: { +16166: auto& __src_impl = _Merge_helper::_S_get_impl(__src); +16166: auto __ptr = _Rb_tree_rebalance_for_erase( +16166: __pos._M_node, __src_impl._M_header); +16166: --__src_impl._M_node_count; +16166: _M_insert_node(__res.first, __res.second, +16166: static_cast<_Link_type>(__ptr)); +16166: } +16166: } +16166: } +16166: +16166: +16166: friend bool +16166: operator==(const _Rb_tree& __x, const _Rb_tree& __y) +16166: { +16166: return __x.size() == __y.size() +16166: && std::equal(__x.begin(), __x.end(), __y.begin()); +16166: } +16166: # 1617 "/usr/include/c++/14/bits/stl_tree.h" 3 +16166: friend bool +16166: operator<(const _Rb_tree& __x, const _Rb_tree& __y) +16166: { +16166: return std::lexicographical_compare(__x.begin(), __x.end(), +16166: __y.begin(), __y.end()); +16166: } +16166: +16166: +16166: private: +16166: +16166: +16166: struct _Auto_node +16166: { +16166: template +16166: _Auto_node(_Rb_tree& __t, _Args&&... __args) +16166: : _M_t(__t), +16166: _M_node(__t._M_create_node(std::forward<_Args>(__args)...)) +16166: { } +16166: +16166: ~_Auto_node() +16166: { +16166: if (_M_node) +16166: _M_t._M_drop_node(_M_node); +16166: } +16166: +16166: _Auto_node(_Auto_node&& __n) +16166: : _M_t(__n._M_t), _M_node(__n._M_node) +16166: { __n._M_node = nullptr; } +16166: +16166: const _Key& +16166: _M_key() const +16166: { return _S_key(_M_node); } +16166: +16166: iterator +16166: _M_insert(pair<_Base_ptr, _Base_ptr> __p) +16166: { +16166: auto __it = _M_t._M_insert_node(__p.first, __p.second, _M_node); +16166: _M_node = nullptr; +16166: return __it; +16166: } +16166: +16166: iterator +16166: _M_insert_equal_lower() +16166: { +16166: auto __it = _M_t._M_insert_equal_lower_node(_M_node); +16166: _M_node = nullptr; +16166: return __it; +16166: } +16166: +16166: _Rb_tree& _M_t; +16166: _Link_type _M_node; +16166: }; +16166: +16166: }; +16166: +16166: template +16166: inline void +16166: swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_move_data(_Rb_tree& __x, false_type) +16166: { +16166: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) +16166: _M_move_data(__x, true_type()); +16166: else +16166: { +16166: constexpr bool __move = !__move_if_noexcept_cond::value; +16166: _Alloc_node __an(*this); +16166: _M_root() = _M_copy<__move>(__x, __an); +16166: if constexpr (__move) +16166: __x.clear(); +16166: } +16166: } +16166: +16166: template +16166: inline void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_move_assign(_Rb_tree& __x, true_type) +16166: { +16166: clear(); +16166: if (__x._M_root() != nullptr) +16166: _M_move_data(__x, true_type()); +16166: std::__alloc_on_move(_M_get_Node_allocator(), +16166: __x._M_get_Node_allocator()); +16166: } +16166: +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_move_assign(_Rb_tree& __x, false_type) +16166: { +16166: if (_M_get_Node_allocator() == __x._M_get_Node_allocator()) +16166: return _M_move_assign(__x, true_type{}); +16166: +16166: +16166: +16166: _Reuse_or_alloc_node __roan(*this); +16166: _M_impl._M_reset(); +16166: if (__x._M_root() != nullptr) +16166: { +16166: _M_root() = _M_copy<__as_rvalue>(__x, __roan); +16166: __x.clear(); +16166: } +16166: } +16166: +16166: template +16166: inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: operator=(_Rb_tree&& __x) +16166: noexcept(_Alloc_traits::_S_nothrow_move() +16166: && is_nothrow_move_assignable<_Compare>::value) +16166: { +16166: _M_impl._M_key_compare = std::move(__x._M_impl._M_key_compare); +16166: _M_move_assign(__x, __bool_constant<_Alloc_traits::_S_nothrow_move()>()); +16166: return *this; +16166: } +16166: +16166: template +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_assign_unique(_Iterator __first, _Iterator __last) +16166: { +16166: _Reuse_or_alloc_node __roan(*this); +16166: _M_impl._M_reset(); +16166: for (; __first != __last; ++__first) +16166: _M_insert_unique_(end(), *__first, __roan); +16166: } +16166: +16166: template +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_assign_equal(_Iterator __first, _Iterator __last) +16166: { +16166: _Reuse_or_alloc_node __roan(*this); +16166: _M_impl._M_reset(); +16166: for (; __first != __last; ++__first) +16166: _M_insert_equal_(end(), *__first, __roan); +16166: } +16166: +16166: +16166: template +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: operator=(const _Rb_tree& __x) +16166: { +16166: if (this != std::__addressof(__x)) +16166: { +16166: +16166: +16166: if (_Alloc_traits::_S_propagate_on_copy_assign()) +16166: { +16166: auto& __this_alloc = this->_M_get_Node_allocator(); +16166: auto& __that_alloc = __x._M_get_Node_allocator(); +16166: if (!_Alloc_traits::_S_always_equal() +16166: && __this_alloc != __that_alloc) +16166: { +16166: +16166: +16166: clear(); +16166: std::__alloc_on_copy(__this_alloc, __that_alloc); +16166: } +16166: } +16166: +16166: +16166: _Reuse_or_alloc_node __roan(*this); +16166: _M_impl._M_reset(); +16166: _M_impl._M_key_compare = __x._M_impl._M_key_compare; +16166: if (__x._M_root() != 0) +16166: _M_root() = _M_copy<__as_lvalue>(__x, __roan); +16166: } +16166: +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: template +16166: +16166: +16166: +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_insert_(_Base_ptr __x, _Base_ptr __p, +16166: +16166: _Arg&& __v, +16166: +16166: +16166: +16166: _NodeGen& __node_gen) +16166: { +16166: bool __insert_left = (__x != 0 || __p == _M_end() +16166: || _M_impl._M_key_compare(_KeyOfValue()(__v), +16166: _S_key(__p))); +16166: +16166: _Link_type __z = __node_gen(std::forward<_Arg>(__v)); +16166: +16166: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +16166: this->_M_impl._M_header); +16166: ++_M_impl._M_node_count; +16166: return iterator(__z); +16166: } +16166: +16166: template +16166: +16166: template +16166: +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: +16166: _M_insert_lower(_Base_ptr __p, _Arg&& __v) +16166: +16166: +16166: +16166: { +16166: bool __insert_left = (__p == _M_end() +16166: || !_M_impl._M_key_compare(_S_key(__p), +16166: _KeyOfValue()(__v))); +16166: +16166: _Link_type __z = _M_create_node(std::forward<_Arg>(__v)); +16166: +16166: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +16166: this->_M_impl._M_header); +16166: ++_M_impl._M_node_count; +16166: return iterator(__z); +16166: } +16166: +16166: template +16166: +16166: template +16166: +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: +16166: _M_insert_equal_lower(_Arg&& __v) +16166: +16166: +16166: +16166: { +16166: _Link_type __x = _M_begin(); +16166: _Base_ptr __y = _M_end(); +16166: while (__x != 0) +16166: { +16166: __y = __x; +16166: __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? +16166: _S_left(__x) : _S_right(__x); +16166: } +16166: return _M_insert_lower(__y, std::forward<_Arg>(__v)); +16166: } +16166: +16166: template +16166: template +16166: typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type +16166: _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: +16166: _M_copy(_Link_type __x, _Base_ptr __p, _NodeGen& __node_gen) +16166: { +16166: +16166: _Link_type __top = _M_clone_node<_MoveValues>(__x, __node_gen); +16166: __top->_M_parent = __p; +16166: +16166: try +16166: { +16166: if (__x->_M_right) +16166: __top->_M_right = +16166: _M_copy<_MoveValues>(_S_right(__x), __top, __node_gen); +16166: __p = __top; +16166: __x = _S_left(__x); +16166: +16166: while (__x != 0) +16166: { +16166: _Link_type __y = _M_clone_node<_MoveValues>(__x, __node_gen); +16166: __p->_M_left = __y; +16166: __y->_M_parent = __p; +16166: if (__x->_M_right) +16166: __y->_M_right = _M_copy<_MoveValues>(_S_right(__x), +16166: __y, __node_gen); +16166: __p = __y; +16166: __x = _S_left(__x); +16166: } +16166: } +16166: catch(...) +16166: { +16166: _M_erase(__top); +16166: throw; +16166: } +16166: return __top; +16166: } +16166: +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_erase(_Link_type __x) +16166: { +16166: +16166: while (__x != 0) +16166: { +16166: _M_erase(_S_right(__x)); +16166: _Link_type __y = _S_left(__x); +16166: _M_drop_node(__x); +16166: __x = __y; +16166: } +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_lower_bound(_Link_type __x, _Base_ptr __y, +16166: const _Key& __k) +16166: { +16166: while (__x != 0) +16166: if (!_M_impl._M_key_compare(_S_key(__x), __k)) +16166: __y = __x, __x = _S_left(__x); +16166: else +16166: __x = _S_right(__x); +16166: return iterator(__y); +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::const_iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_lower_bound(_Const_Link_type __x, _Const_Base_ptr __y, +16166: const _Key& __k) const +16166: { +16166: while (__x != 0) +16166: if (!_M_impl._M_key_compare(_S_key(__x), __k)) +16166: __y = __x, __x = _S_left(__x); +16166: else +16166: __x = _S_right(__x); +16166: return const_iterator(__y); +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_upper_bound(_Link_type __x, _Base_ptr __y, +16166: const _Key& __k) +16166: { +16166: while (__x != 0) +16166: if (_M_impl._M_key_compare(__k, _S_key(__x))) +16166: __y = __x, __x = _S_left(__x); +16166: else +16166: __x = _S_right(__x); +16166: return iterator(__y); +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::const_iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_upper_bound(_Const_Link_type __x, _Const_Base_ptr __y, +16166: const _Key& __k) const +16166: { +16166: while (__x != 0) +16166: if (_M_impl._M_key_compare(__k, _S_key(__x))) +16166: __y = __x, __x = _S_left(__x); +16166: else +16166: __x = _S_right(__x); +16166: return const_iterator(__y); +16166: } +16166: +16166: template +16166: pair::iterator, +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::iterator> +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: equal_range(const _Key& __k) +16166: { +16166: _Link_type __x = _M_begin(); +16166: _Base_ptr __y = _M_end(); +16166: while (__x != 0) +16166: { +16166: if (_M_impl._M_key_compare(_S_key(__x), __k)) +16166: __x = _S_right(__x); +16166: else if (_M_impl._M_key_compare(__k, _S_key(__x))) +16166: __y = __x, __x = _S_left(__x); +16166: else +16166: { +16166: _Link_type __xu(__x); +16166: _Base_ptr __yu(__y); +16166: __y = __x, __x = _S_left(__x); +16166: __xu = _S_right(__xu); +16166: return pair(_M_lower_bound(__x, __y, __k), +16166: _M_upper_bound(__xu, __yu, __k)); +16166: } +16166: } +16166: return pair(iterator(__y), +16166: iterator(__y)); +16166: } +16166: +16166: template +16166: pair::const_iterator, +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::const_iterator> +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: equal_range(const _Key& __k) const +16166: { +16166: _Const_Link_type __x = _M_begin(); +16166: _Const_Base_ptr __y = _M_end(); +16166: while (__x != 0) +16166: { +16166: if (_M_impl._M_key_compare(_S_key(__x), __k)) +16166: __x = _S_right(__x); +16166: else if (_M_impl._M_key_compare(__k, _S_key(__x))) +16166: __y = __x, __x = _S_left(__x); +16166: else +16166: { +16166: _Const_Link_type __xu(__x); +16166: _Const_Base_ptr __yu(__y); +16166: __y = __x, __x = _S_left(__x); +16166: __xu = _S_right(__xu); +16166: return pair(_M_lower_bound(__x, __y, __k), +16166: _M_upper_bound(__xu, __yu, __k)); +16166: } +16166: } +16166: return pair(const_iterator(__y), +16166: const_iterator(__y)); +16166: } +16166: +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: swap(_Rb_tree& __t) +16166: noexcept(__is_nothrow_swappable<_Compare>::value) +16166: { +16166: if (_M_root() == 0) +16166: { +16166: if (__t._M_root() != 0) +16166: _M_impl._M_move_data(__t._M_impl); +16166: } +16166: else if (__t._M_root() == 0) +16166: __t._M_impl._M_move_data(_M_impl); +16166: else +16166: { +16166: std::swap(_M_root(),__t._M_root()); +16166: std::swap(_M_leftmost(),__t._M_leftmost()); +16166: std::swap(_M_rightmost(),__t._M_rightmost()); +16166: +16166: _M_root()->_M_parent = _M_end(); +16166: __t._M_root()->_M_parent = __t._M_end(); +16166: std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); +16166: } +16166: +16166: std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare); +16166: +16166: _Alloc_traits::_S_on_swap(_M_get_Node_allocator(), +16166: __t._M_get_Node_allocator()); +16166: } +16166: +16166: template +16166: pair::_Base_ptr, +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::_Base_ptr> +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_get_insert_unique_pos(const key_type& __k) +16166: { +16166: typedef pair<_Base_ptr, _Base_ptr> _Res; +16166: _Link_type __x = _M_begin(); +16166: _Base_ptr __y = _M_end(); +16166: bool __comp = true; +16166: while (__x != 0) +16166: { +16166: __y = __x; +16166: __comp = _M_impl._M_key_compare(__k, _S_key(__x)); +16166: __x = __comp ? _S_left(__x) : _S_right(__x); +16166: } +16166: iterator __j = iterator(__y); +16166: if (__comp) +16166: { +16166: if (__j == begin()) +16166: return _Res(__x, __y); +16166: else +16166: --__j; +16166: } +16166: if (_M_impl._M_key_compare(_S_key(__j._M_node), __k)) +16166: return _Res(__x, __y); +16166: return _Res(__j._M_node, 0); +16166: } +16166: +16166: template +16166: pair::_Base_ptr, +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::_Base_ptr> +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_get_insert_equal_pos(const key_type& __k) +16166: { +16166: typedef pair<_Base_ptr, _Base_ptr> _Res; +16166: _Link_type __x = _M_begin(); +16166: _Base_ptr __y = _M_end(); +16166: while (__x != 0) +16166: { +16166: __y = __x; +16166: __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? +16166: _S_left(__x) : _S_right(__x); +16166: } +16166: return _Res(__x, __y); +16166: } +16166: +16166: template +16166: +16166: template +16166: +16166: pair::iterator, bool> +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: +16166: _M_insert_unique(_Arg&& __v) +16166: +16166: +16166: +16166: { +16166: typedef pair _Res; +16166: pair<_Base_ptr, _Base_ptr> __res +16166: = _M_get_insert_unique_pos(_KeyOfValue()(__v)); +16166: +16166: if (__res.second) +16166: { +16166: _Alloc_node __an(*this); +16166: return _Res(_M_insert_(__res.first, __res.second, +16166: std::forward<_Arg>(__v), __an), +16166: true); +16166: } +16166: +16166: return _Res(iterator(__res.first), false); +16166: } +16166: +16166: template +16166: +16166: template +16166: +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: +16166: _M_insert_equal(_Arg&& __v) +16166: +16166: +16166: +16166: { +16166: pair<_Base_ptr, _Base_ptr> __res +16166: = _M_get_insert_equal_pos(_KeyOfValue()(__v)); +16166: _Alloc_node __an(*this); +16166: return _M_insert_(__res.first, __res.second, +16166: std::forward<_Arg>(__v), __an); +16166: } +16166: +16166: template +16166: pair::_Base_ptr, +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::_Base_ptr> +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_get_insert_hint_unique_pos(const_iterator __position, +16166: const key_type& __k) +16166: { +16166: iterator __pos = __position._M_const_cast(); +16166: typedef pair<_Base_ptr, _Base_ptr> _Res; +16166: +16166: +16166: if (__pos._M_node == _M_end()) +16166: { +16166: if (size() > 0 +16166: && _M_impl._M_key_compare(_S_key(_M_rightmost()), __k)) +16166: return _Res(0, _M_rightmost()); +16166: else +16166: return _M_get_insert_unique_pos(__k); +16166: } +16166: else if (_M_impl._M_key_compare(__k, _S_key(__pos._M_node))) +16166: { +16166: +16166: iterator __before = __pos; +16166: if (__pos._M_node == _M_leftmost()) +16166: return _Res(_M_leftmost(), _M_leftmost()); +16166: else if (_M_impl._M_key_compare(_S_key((--__before)._M_node), __k)) +16166: { +16166: if (_S_right(__before._M_node) == 0) +16166: return _Res(0, __before._M_node); +16166: else +16166: return _Res(__pos._M_node, __pos._M_node); +16166: } +16166: else +16166: return _M_get_insert_unique_pos(__k); +16166: } +16166: else if (_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) +16166: { +16166: +16166: iterator __after = __pos; +16166: if (__pos._M_node == _M_rightmost()) +16166: return _Res(0, _M_rightmost()); +16166: else if (_M_impl._M_key_compare(__k, _S_key((++__after)._M_node))) +16166: { +16166: if (_S_right(__pos._M_node) == 0) +16166: return _Res(0, __pos._M_node); +16166: else +16166: return _Res(__after._M_node, __after._M_node); +16166: } +16166: else +16166: return _M_get_insert_unique_pos(__k); +16166: } +16166: else +16166: +16166: return _Res(__pos._M_node, 0); +16166: } +16166: +16166: template +16166: +16166: template +16166: +16166: +16166: +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_insert_unique_(const_iterator __position, +16166: +16166: _Arg&& __v, +16166: +16166: +16166: +16166: _NodeGen& __node_gen) +16166: { +16166: pair<_Base_ptr, _Base_ptr> __res +16166: = _M_get_insert_hint_unique_pos(__position, _KeyOfValue()(__v)); +16166: +16166: if (__res.second) +16166: return _M_insert_(__res.first, __res.second, +16166: std::forward<_Arg>(__v), +16166: __node_gen); +16166: return iterator(__res.first); +16166: } +16166: +16166: template +16166: pair::_Base_ptr, +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::_Base_ptr> +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) +16166: { +16166: iterator __pos = __position._M_const_cast(); +16166: typedef pair<_Base_ptr, _Base_ptr> _Res; +16166: +16166: +16166: if (__pos._M_node == _M_end()) +16166: { +16166: if (size() > 0 +16166: && !_M_impl._M_key_compare(__k, _S_key(_M_rightmost()))) +16166: return _Res(0, _M_rightmost()); +16166: else +16166: return _M_get_insert_equal_pos(__k); +16166: } +16166: else if (!_M_impl._M_key_compare(_S_key(__pos._M_node), __k)) +16166: { +16166: +16166: iterator __before = __pos; +16166: if (__pos._M_node == _M_leftmost()) +16166: return _Res(_M_leftmost(), _M_leftmost()); +16166: else if (!_M_impl._M_key_compare(__k, _S_key((--__before)._M_node))) +16166: { +16166: if (_S_right(__before._M_node) == 0) +16166: return _Res(0, __before._M_node); +16166: else +16166: return _Res(__pos._M_node, __pos._M_node); +16166: } +16166: else +16166: return _M_get_insert_equal_pos(__k); +16166: } +16166: else +16166: { +16166: +16166: iterator __after = __pos; +16166: if (__pos._M_node == _M_rightmost()) +16166: return _Res(0, _M_rightmost()); +16166: else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node), __k)) +16166: { +16166: if (_S_right(__pos._M_node) == 0) +16166: return _Res(0, __pos._M_node); +16166: else +16166: return _Res(__after._M_node, __after._M_node); +16166: } +16166: else +16166: return _Res(0, 0); +16166: } +16166: } +16166: +16166: template +16166: +16166: template +16166: +16166: +16166: +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_insert_equal_(const_iterator __position, +16166: +16166: _Arg&& __v, +16166: +16166: +16166: +16166: _NodeGen& __node_gen) +16166: { +16166: pair<_Base_ptr, _Base_ptr> __res +16166: = _M_get_insert_hint_equal_pos(__position, _KeyOfValue()(__v)); +16166: +16166: if (__res.second) +16166: return _M_insert_(__res.first, __res.second, +16166: std::forward<_Arg>(__v), +16166: __node_gen); +16166: +16166: return _M_insert_equal_lower(std::forward<_Arg>(__v)); +16166: } +16166: +16166: +16166: template +16166: auto +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z) +16166: -> iterator +16166: { +16166: bool __insert_left = (__x != 0 || __p == _M_end() +16166: || _M_impl._M_key_compare(_S_key(__z), +16166: _S_key(__p))); +16166: +16166: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +16166: this->_M_impl._M_header); +16166: ++_M_impl._M_node_count; +16166: return iterator(__z); +16166: } +16166: +16166: template +16166: auto +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_insert_lower_node(_Base_ptr __p, _Link_type __z) +16166: -> iterator +16166: { +16166: bool __insert_left = (__p == _M_end() +16166: || !_M_impl._M_key_compare(_S_key(__p), +16166: _S_key(__z))); +16166: +16166: _Rb_tree_insert_and_rebalance(__insert_left, __z, __p, +16166: this->_M_impl._M_header); +16166: ++_M_impl._M_node_count; +16166: return iterator(__z); +16166: } +16166: +16166: template +16166: auto +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_insert_equal_lower_node(_Link_type __z) +16166: -> iterator +16166: { +16166: _Link_type __x = _M_begin(); +16166: _Base_ptr __y = _M_end(); +16166: while (__x != 0) +16166: { +16166: __y = __x; +16166: __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? +16166: _S_left(__x) : _S_right(__x); +16166: } +16166: return _M_insert_lower_node(__y, __z); +16166: } +16166: +16166: template +16166: template +16166: auto +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_emplace_unique(_Args&&... __args) +16166: -> pair +16166: { +16166: _Auto_node __z(*this, std::forward<_Args>(__args)...); +16166: auto __res = _M_get_insert_unique_pos(__z._M_key()); +16166: if (__res.second) +16166: return {__z._M_insert(__res), true}; +16166: return {iterator(__res.first), false}; +16166: } +16166: +16166: template +16166: template +16166: auto +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_emplace_equal(_Args&&... __args) +16166: -> iterator +16166: { +16166: _Auto_node __z(*this, std::forward<_Args>(__args)...); +16166: auto __res = _M_get_insert_equal_pos(__z._M_key()); +16166: return __z._M_insert(__res); +16166: } +16166: +16166: template +16166: template +16166: auto +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_emplace_hint_unique(const_iterator __pos, _Args&&... __args) +16166: -> iterator +16166: { +16166: _Auto_node __z(*this, std::forward<_Args>(__args)...); +16166: auto __res = _M_get_insert_hint_unique_pos(__pos, __z._M_key()); +16166: if (__res.second) +16166: return __z._M_insert(__res); +16166: return iterator(__res.first); +16166: } +16166: +16166: template +16166: template +16166: auto +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_emplace_hint_equal(const_iterator __pos, _Args&&... __args) +16166: -> iterator +16166: { +16166: _Auto_node __z(*this, std::forward<_Args>(__args)...); +16166: auto __res = _M_get_insert_hint_equal_pos(__pos, __z._M_key()); +16166: if (__res.second) +16166: return __z._M_insert(__res); +16166: return __z._M_insert_equal_lower(); +16166: } +16166: +16166: +16166: +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_erase_aux(const_iterator __position) +16166: { +16166: _Link_type __y = +16166: static_cast<_Link_type>(_Rb_tree_rebalance_for_erase +16166: (const_cast<_Base_ptr>(__position._M_node), +16166: this->_M_impl._M_header)); +16166: _M_drop_node(__y); +16166: --_M_impl._M_node_count; +16166: } +16166: +16166: template +16166: void +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: _M_erase_aux(const_iterator __first, const_iterator __last) +16166: { +16166: if (__first == begin() && __last == end()) +16166: clear(); +16166: else +16166: while (__first != __last) +16166: _M_erase_aux(__first++); +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: erase(const _Key& __x) +16166: { +16166: pair __p = equal_range(__x); +16166: const size_type __old_size = size(); +16166: _M_erase_aux(__p.first, __p.second); +16166: return __old_size - size(); +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: find(const _Key& __k) +16166: { +16166: iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); +16166: return (__j == end() +16166: || _M_impl._M_key_compare(__k, +16166: _S_key(__j._M_node))) ? end() : __j; +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, +16166: _Compare, _Alloc>::const_iterator +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: find(const _Key& __k) const +16166: { +16166: const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); +16166: return (__j == end() +16166: || _M_impl._M_key_compare(__k, +16166: _S_key(__j._M_node))) ? end() : __j; +16166: } +16166: +16166: template +16166: typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type +16166: _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: +16166: count(const _Key& __k) const +16166: { +16166: pair __p = equal_range(__k); +16166: const size_type __n = std::distance(__p.first, __p.second); +16166: return __n; +16166: } +16166: +16166: __attribute__ ((__pure__)) unsigned int +16166: _Rb_tree_black_count(const _Rb_tree_node_base* __node, +16166: const _Rb_tree_node_base* __root) throw (); +16166: +16166: template +16166: bool +16166: _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const +16166: { +16166: if (_M_impl._M_node_count == 0 || begin() == end()) +16166: return _M_impl._M_node_count == 0 && begin() == end() +16166: && this->_M_impl._M_header._M_left == _M_end() +16166: && this->_M_impl._M_header._M_right == _M_end(); +16166: +16166: unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root()); +16166: for (const_iterator __it = begin(); __it != end(); ++__it) +16166: { +16166: _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node); +16166: _Const_Link_type __L = _S_left(__x); +16166: _Const_Link_type __R = _S_right(__x); +16166: +16166: if (__x->_M_color == _S_red) +16166: if ((__L && __L->_M_color == _S_red) +16166: || (__R && __R->_M_color == _S_red)) +16166: return false; +16166: +16166: if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L))) +16166: return false; +16166: if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x))) +16166: return false; +16166: +16166: if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len) +16166: return false; +16166: } +16166: +16166: if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) +16166: return false; +16166: if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) +16166: return false; +16166: return true; +16166: } +16166: +16166: +16166: +16166: template +16166: struct _Rb_tree_merge_helper<_Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>, +16166: _Cmp2> +16166: { +16166: private: +16166: friend class _Rb_tree<_Key, _Val, _Sel, _Cmp1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_impl(_Rb_tree<_Key, _Val, _Sel, _Cmp2, _Alloc>& __tree) +16166: { return __tree._M_impl; } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 63 "/usr/include/c++/14/map" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_map.h" 1 3 +16166: # 66 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: class multimap; +16166: # 100 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template , +16166: typename _Alloc = std::allocator > > +16166: class map +16166: { +16166: public: +16166: typedef _Key key_type; +16166: typedef _Tp mapped_type; +16166: typedef std::pair value_type; +16166: typedef _Compare key_compare; +16166: typedef _Alloc allocator_type; +16166: +16166: private: +16166: # 130 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: public: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: class value_compare +16166: : public std::binary_function +16166: { +16166: friend class map<_Key, _Tp, _Compare, _Alloc>; +16166: protected: +16166: _Compare comp; +16166: +16166: value_compare(_Compare __c) +16166: : comp(__c) { } +16166: +16166: public: +16166: bool operator()(const value_type& __x, const value_type& __y) const +16166: { return comp(__x.first, __y.first); } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: private: +16166: +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind::other _Pair_alloc_type; +16166: +16166: typedef _Rb_tree, +16166: key_compare, _Pair_alloc_type> _Rep_type; +16166: +16166: +16166: _Rep_type _M_t; +16166: +16166: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; +16166: +16166: +16166: template> +16166: static constexpr bool __usable_key +16166: = __or_v, +16166: __and_, is_scalar<_Key>>>; +16166: +16166: +16166: public: +16166: +16166: +16166: typedef typename _Alloc_traits::pointer pointer; +16166: typedef typename _Alloc_traits::const_pointer const_pointer; +16166: typedef typename _Alloc_traits::reference reference; +16166: typedef typename _Alloc_traits::const_reference const_reference; +16166: typedef typename _Rep_type::iterator iterator; +16166: typedef typename _Rep_type::const_iterator const_iterator; +16166: typedef typename _Rep_type::size_type size_type; +16166: typedef typename _Rep_type::difference_type difference_type; +16166: typedef typename _Rep_type::reverse_iterator reverse_iterator; +16166: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +16166: +16166: +16166: using node_type = typename _Rep_type::node_type; +16166: using insert_return_type = typename _Rep_type::insert_return_type; +16166: # 197 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: map() = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: map(const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Pair_alloc_type(__a)) { } +16166: # 219 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: map(const map&) = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: map(map&&) = default; +16166: # 240 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: map(initializer_list __l, +16166: const _Compare& __comp = _Compare(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +16166: +16166: +16166: explicit +16166: map(const allocator_type& __a) +16166: : _M_t(_Pair_alloc_type(__a)) { } +16166: +16166: +16166: map(const map& __m, const __type_identity_t& __a) +16166: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } +16166: +16166: +16166: map(map&& __m, const __type_identity_t& __a) +16166: noexcept(is_nothrow_copy_constructible<_Compare>::value +16166: && _Alloc_traits::_S_always_equal()) +16166: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } +16166: +16166: +16166: map(initializer_list __l, const allocator_type& __a) +16166: : _M_t(_Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +16166: +16166: +16166: template +16166: map(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a) +16166: : _M_t(_Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: # 284 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: map(_InputIterator __first, _InputIterator __last) +16166: : _M_t() +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: # 301 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: map(_InputIterator __first, _InputIterator __last, +16166: const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~map() = default; +16166: # 330 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: map& +16166: operator=(const map&) = default; +16166: +16166: +16166: map& +16166: operator=(map&&) = default; +16166: # 348 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: map& +16166: operator=(initializer_list __l) +16166: { +16166: _M_t._M_assign_unique(__l.begin(), __l.end()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_t.get_allocator()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: begin() noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rend() noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cbegin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cend() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: crbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: crend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_t.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_t.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_t.max_size(); } +16166: # 503 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: mapped_type& +16166: operator[](const key_type& __k) +16166: { +16166: +16166: +16166: +16166: iterator __i = lower_bound(__k); +16166: +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: +16166: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, +16166: std::tuple(__k), +16166: std::tuple<>()); +16166: +16166: +16166: +16166: return (*__i).second; +16166: } +16166: +16166: +16166: mapped_type& +16166: operator[](key_type&& __k) +16166: { +16166: +16166: +16166: +16166: iterator __i = lower_bound(__k); +16166: +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, +16166: std::forward_as_tuple(std::move(__k)), +16166: std::tuple<>()); +16166: return (*__i).second; +16166: } +16166: # 548 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: mapped_type& +16166: at(const key_type& __k) +16166: { +16166: iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: __throw_out_of_range(("map::at")); +16166: return (*__i).second; +16166: } +16166: +16166: const mapped_type& +16166: at(const key_type& __k) const +16166: { +16166: const_iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: __throw_out_of_range(("map::at")); +16166: return (*__i).second; +16166: } +16166: # 586 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: std::pair +16166: emplace(_Args&&... __args) +16166: { +16166: +16166: if constexpr (sizeof...(_Args) == 2) +16166: if constexpr (is_same_v>) +16166: { +16166: auto&& [__a, __v] = pair<_Args&...>(__args...); +16166: if constexpr (__usable_key) +16166: { +16166: const key_type& __k = __a; +16166: iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: { +16166: __i = emplace_hint(__i, std::forward<_Args>(__args)...); +16166: return {__i, true}; +16166: } +16166: return {__i, false}; +16166: } +16166: } +16166: +16166: return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); +16166: } +16166: # 636 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { +16166: return _M_t._M_emplace_hint_unique(__pos, +16166: std::forward<_Args>(__args)...); +16166: } +16166: +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_t.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __x) +16166: { return _M_t.extract(__x); } +16166: +16166: +16166: insert_return_type +16166: insert(node_type&& __nh) +16166: { return _M_t._M_reinsert_node_unique(std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, node_type&& __nh) +16166: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } +16166: +16166: template +16166: friend struct std::_Rb_tree_merge_helper; +16166: +16166: template +16166: void +16166: merge(map<_Key, _Tp, _Cmp2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(map<_Key, _Tp, _Cmp2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>&& __source) +16166: { merge(__source); } +16166: # 720 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: pair +16166: try_emplace(const key_type& __k, _Args&&... __args) +16166: { +16166: iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: { +16166: __i = emplace_hint(__i, std::piecewise_construct, +16166: std::forward_as_tuple(__k), +16166: std::forward_as_tuple( +16166: std::forward<_Args>(__args)...)); +16166: return {__i, true}; +16166: } +16166: return {__i, false}; +16166: } +16166: +16166: +16166: template +16166: pair +16166: try_emplace(key_type&& __k, _Args&&... __args) +16166: { +16166: iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: { +16166: __i = emplace_hint(__i, std::piecewise_construct, +16166: std::forward_as_tuple(std::move(__k)), +16166: std::forward_as_tuple( +16166: std::forward<_Args>(__args)...)); +16166: return {__i, true}; +16166: } +16166: return {__i, false}; +16166: } +16166: # 780 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: iterator +16166: try_emplace(const_iterator __hint, const key_type& __k, +16166: _Args&&... __args) +16166: { +16166: iterator __i; +16166: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +16166: if (__true_hint.second) +16166: __i = emplace_hint(iterator(__true_hint.second), +16166: std::piecewise_construct, +16166: std::forward_as_tuple(__k), +16166: std::forward_as_tuple( +16166: std::forward<_Args>(__args)...)); +16166: else +16166: __i = iterator(__true_hint.first); +16166: return __i; +16166: } +16166: +16166: +16166: template +16166: iterator +16166: try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) +16166: { +16166: iterator __i; +16166: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +16166: if (__true_hint.second) +16166: __i = emplace_hint(iterator(__true_hint.second), +16166: std::piecewise_construct, +16166: std::forward_as_tuple(std::move(__k)), +16166: std::forward_as_tuple( +16166: std::forward<_Args>(__args)...)); +16166: else +16166: __i = iterator(__true_hint.first); +16166: return __i; +16166: } +16166: # 833 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: std::pair +16166: insert(const value_type& __x) +16166: { return _M_t._M_insert_unique(__x); } +16166: +16166: +16166: +16166: +16166: std::pair +16166: insert(value_type&& __x) +16166: { return _M_t._M_insert_unique(std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, +16166: pair> +16166: insert(_Pair&& __x) +16166: { +16166: +16166: using _P2 = remove_reference_t<_Pair>; +16166: if constexpr (__is_pair>) +16166: if constexpr (is_same_v>) +16166: if constexpr (__usable_key) +16166: { +16166: const key_type& __k = __x.first; +16166: iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: { +16166: __i = emplace_hint(__i, std::forward<_Pair>(__x)); +16166: return {__i, true}; +16166: } +16166: return {__i, false}; +16166: } +16166: +16166: return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); +16166: } +16166: # 878 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: void +16166: insert(std::initializer_list __list) +16166: { insert(__list.begin(), __list.end()); } +16166: # 907 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: iterator +16166: +16166: insert(const_iterator __position, const value_type& __x) +16166: +16166: +16166: +16166: { return _M_t._M_insert_unique_(__position, __x); } +16166: +16166: +16166: +16166: +16166: iterator +16166: insert(const_iterator __position, value_type&& __x) +16166: { return _M_t._M_insert_unique_(__position, std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, iterator> +16166: insert(const_iterator __position, _Pair&& __x) +16166: { +16166: return _M_t._M_emplace_hint_unique(__position, +16166: std::forward<_Pair>(__x)); +16166: } +16166: # 940 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: # 965 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: pair +16166: insert_or_assign(const key_type& __k, _Obj&& __obj) +16166: { +16166: iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: { +16166: __i = emplace_hint(__i, std::piecewise_construct, +16166: std::forward_as_tuple(__k), +16166: std::forward_as_tuple( +16166: std::forward<_Obj>(__obj))); +16166: return {__i, true}; +16166: } +16166: (*__i).second = std::forward<_Obj>(__obj); +16166: return {__i, false}; +16166: } +16166: +16166: +16166: template +16166: pair +16166: insert_or_assign(key_type&& __k, _Obj&& __obj) +16166: { +16166: iterator __i = lower_bound(__k); +16166: if (__i == end() || key_comp()(__k, (*__i).first)) +16166: { +16166: __i = emplace_hint(__i, std::piecewise_construct, +16166: std::forward_as_tuple(std::move(__k)), +16166: std::forward_as_tuple( +16166: std::forward<_Obj>(__obj))); +16166: return {__i, true}; +16166: } +16166: (*__i).second = std::forward<_Obj>(__obj); +16166: return {__i, false}; +16166: } +16166: # 1020 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: iterator +16166: insert_or_assign(const_iterator __hint, +16166: const key_type& __k, _Obj&& __obj) +16166: { +16166: iterator __i; +16166: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +16166: if (__true_hint.second) +16166: { +16166: return emplace_hint(iterator(__true_hint.second), +16166: std::piecewise_construct, +16166: std::forward_as_tuple(__k), +16166: std::forward_as_tuple( +16166: std::forward<_Obj>(__obj))); +16166: } +16166: __i = iterator(__true_hint.first); +16166: (*__i).second = std::forward<_Obj>(__obj); +16166: return __i; +16166: } +16166: +16166: +16166: template +16166: iterator +16166: insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) +16166: { +16166: iterator __i; +16166: auto __true_hint = _M_t._M_get_insert_hint_unique_pos(__hint, __k); +16166: if (__true_hint.second) +16166: { +16166: return emplace_hint(iterator(__true_hint.second), +16166: std::piecewise_construct, +16166: std::forward_as_tuple(std::move(__k)), +16166: std::forward_as_tuple( +16166: std::forward<_Obj>(__obj))); +16166: } +16166: __i = iterator(__true_hint.first); +16166: (*__i).second = std::forward<_Obj>(__obj); +16166: return __i; +16166: } +16166: # 1079 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_t.erase(__position); } +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(iterator __position) +16166: { return _M_t.erase(__position); } +16166: # 1116 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_t.erase(__x); } +16166: # 1136 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_t.erase(__first, __last); } +16166: # 1170 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: void +16166: swap(map& __x) +16166: noexcept(__is_nothrow_swappable<_Compare>::value) +16166: { _M_t.swap(__x._M_t); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_t.clear(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: key_compare +16166: key_comp() const +16166: { return _M_t.key_comp(); } +16166: +16166: +16166: +16166: +16166: +16166: value_compare +16166: value_comp() const +16166: { return value_compare(_M_t.key_comp()); } +16166: # 1217 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_t.find(__x); } +16166: +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) +16166: { return _M_t._M_find_tr(__x); } +16166: # 1242 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_t.find(__x); } +16166: +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) +16166: { return _M_t._M_find_tr(__x); } +16166: # 1263 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } +16166: +16166: +16166: template +16166: auto +16166: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) +16166: { return _M_t._M_count_tr(__x); } +16166: # 1306 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: iterator +16166: lower_bound(const key_type& __x) +16166: { return _M_t.lower_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return iterator(_M_t._M_lower_bound_tr(__x)); } +16166: # 1331 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: const_iterator +16166: lower_bound(const key_type& __x) const +16166: { return _M_t.lower_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) const +16166: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } +16166: # 1351 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: iterator +16166: upper_bound(const key_type& __x) +16166: { return _M_t.upper_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return iterator(_M_t._M_upper_bound_tr(__x)); } +16166: # 1371 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: const_iterator +16166: upper_bound(const key_type& __x) const +16166: { return _M_t.upper_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) const +16166: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } +16166: # 1400 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_t.equal_range(__x); } +16166: +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) +16166: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +16166: { return pair(_M_t._M_equal_range_tr(__x)); } +16166: # 1429 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_t.equal_range(__x); } +16166: +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) const +16166: -> decltype(pair( +16166: _M_t._M_equal_range_tr(__x))) +16166: { +16166: return pair( +16166: _M_t._M_equal_range_tr(__x)); +16166: } +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator==(const map<_K1, _T1, _C1, _A1>&, +16166: const map<_K1, _T1, _C1, _A1>&); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator<(const map<_K1, _T1, _C1, _A1>&, +16166: const map<_K1, _T1, _C1, _A1>&); +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: template>, +16166: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: map(_InputIterator, _InputIterator, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +16166: _Compare, _Allocator>; +16166: +16166: template, +16166: typename _Allocator = allocator>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: map(initializer_list>, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> map<_Key, _Tp, _Compare, _Allocator>; +16166: +16166: template , +16166: typename = _RequireAllocator<_Allocator>> +16166: map(_InputIterator, _InputIterator, _Allocator) +16166: -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +16166: less<__iter_key_t<_InputIterator>>, _Allocator>; +16166: +16166: template> +16166: map(initializer_list>, _Allocator) +16166: -> map<_Key, _Tp, less<_Key>, _Allocator>; +16166: # 1510 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: inline bool +16166: operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const map<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return __x._M_t == __y._M_t; } +16166: # 1548 "/usr/include/c++/14/bits/stl_map.h" 3 +16166: template +16166: inline bool +16166: operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const map<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return __x._M_t < __y._M_t; } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const map<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const map<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: inline bool +16166: operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const map<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const map<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(map<_Key, _Tp, _Compare, _Alloc>& __x, +16166: map<_Key, _Tp, _Compare, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct +16166: _Rb_tree_merge_helper, +16166: _Cmp2> +16166: { +16166: private: +16166: friend class std::map<_Key, _Val, _Cmp1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map) +16166: { return __map._M_t; } +16166: +16166: static auto& +16166: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) +16166: { return __map._M_t; } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 64 "/usr/include/c++/14/map" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_multimap.h" 1 3 +16166: # 64 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: class map; +16166: # 98 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template , +16166: typename _Alloc = std::allocator > > +16166: class multimap +16166: { +16166: public: +16166: typedef _Key key_type; +16166: typedef _Tp mapped_type; +16166: typedef std::pair value_type; +16166: typedef _Compare key_compare; +16166: typedef _Alloc allocator_type; +16166: +16166: private: +16166: # 129 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: public: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: class value_compare +16166: : public std::binary_function +16166: { +16166: friend class multimap<_Key, _Tp, _Compare, _Alloc>; +16166: protected: +16166: _Compare comp; +16166: +16166: value_compare(_Compare __c) +16166: : comp(__c) { } +16166: +16166: public: +16166: bool operator()(const value_type& __x, const value_type& __y) const +16166: { return comp(__x.first, __y.first); } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: private: +16166: +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind::other _Pair_alloc_type; +16166: +16166: typedef _Rb_tree, +16166: key_compare, _Pair_alloc_type> _Rep_type; +16166: +16166: _Rep_type _M_t; +16166: +16166: typedef __gnu_cxx::__alloc_traits<_Pair_alloc_type> _Alloc_traits; +16166: +16166: public: +16166: +16166: +16166: typedef typename _Alloc_traits::pointer pointer; +16166: typedef typename _Alloc_traits::const_pointer const_pointer; +16166: typedef typename _Alloc_traits::reference reference; +16166: typedef typename _Alloc_traits::const_reference const_reference; +16166: typedef typename _Rep_type::iterator iterator; +16166: typedef typename _Rep_type::const_iterator const_iterator; +16166: typedef typename _Rep_type::size_type size_type; +16166: typedef typename _Rep_type::difference_type difference_type; +16166: typedef typename _Rep_type::reverse_iterator reverse_iterator; +16166: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +16166: +16166: +16166: using node_type = typename _Rep_type::node_type; +16166: # 187 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: multimap() = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: multimap(const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Pair_alloc_type(__a)) { } +16166: # 209 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: multimap(const multimap&) = default; +16166: # 218 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: multimap(multimap&&) = default; +16166: # 230 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: multimap(initializer_list __l, +16166: const _Compare& __comp = _Compare(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +16166: +16166: +16166: explicit +16166: multimap(const allocator_type& __a) +16166: : _M_t(_Pair_alloc_type(__a)) { } +16166: +16166: +16166: multimap(const multimap& __m, +16166: const __type_identity_t& __a) +16166: : _M_t(__m._M_t, _Pair_alloc_type(__a)) { } +16166: +16166: +16166: multimap(multimap&& __m, const __type_identity_t& __a) +16166: noexcept(is_nothrow_copy_constructible<_Compare>::value +16166: && _Alloc_traits::_S_always_equal()) +16166: : _M_t(std::move(__m._M_t), _Pair_alloc_type(__a)) { } +16166: +16166: +16166: multimap(initializer_list __l, const allocator_type& __a) +16166: : _M_t(_Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +16166: +16166: +16166: template +16166: multimap(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a) +16166: : _M_t(_Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: # 274 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template +16166: multimap(_InputIterator __first, _InputIterator __last) +16166: : _M_t() +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: # 290 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template +16166: multimap(_InputIterator __first, _InputIterator __last, +16166: const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Pair_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~multimap() = default; +16166: # 319 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: multimap& +16166: operator=(const multimap&) = default; +16166: +16166: +16166: multimap& +16166: operator=(multimap&&) = default; +16166: # 337 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: multimap& +16166: operator=(initializer_list __l) +16166: { +16166: _M_t._M_assign_equal(__l.begin(), __l.end()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_t.get_allocator()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: begin() noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: begin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: end() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rend() noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cbegin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_iterator +16166: cend() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: crbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const_reverse_iterator +16166: crend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_t.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_t.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_t.max_size(); } +16166: # 495 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template +16166: iterator +16166: emplace(_Args&&... __args) +16166: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } +16166: # 522 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { +16166: return _M_t._M_emplace_hint_equal(__pos, +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 544 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: iterator +16166: insert(const value_type& __x) +16166: { return _M_t._M_insert_equal(__x); } +16166: +16166: +16166: +16166: +16166: iterator +16166: insert(value_type&& __x) +16166: { return _M_t._M_insert_equal(std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, iterator> +16166: insert(_Pair&& __x) +16166: { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } +16166: # 583 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: iterator +16166: +16166: insert(const_iterator __position, const value_type& __x) +16166: +16166: +16166: +16166: { return _M_t._M_insert_equal_(__position, __x); } +16166: +16166: +16166: +16166: +16166: iterator +16166: insert(const_iterator __position, value_type&& __x) +16166: { return _M_t._M_insert_equal_(__position, std::move(__x)); } +16166: +16166: template +16166: __enable_if_t::value, iterator> +16166: insert(const_iterator __position, _Pair&& __x) +16166: { +16166: return _M_t._M_emplace_hint_equal(__position, +16166: std::forward<_Pair>(__x)); +16166: } +16166: # 617 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: # 630 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: void +16166: insert(initializer_list __l) +16166: { this->insert(__l.begin(), __l.end()); } +16166: +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_t.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __x) +16166: { return _M_t.extract(__x); } +16166: +16166: +16166: iterator +16166: insert(node_type&& __nh) +16166: { return _M_t._M_reinsert_node_equal(std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, node_type&& __nh) +16166: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } +16166: +16166: template +16166: friend struct std::_Rb_tree_merge_helper; +16166: +16166: template +16166: void +16166: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(multimap<_Key, _Tp, _Cmp2, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(map<_Key, _Tp, _Cmp2, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(map<_Key, _Tp, _Cmp2, _Alloc>&& __source) +16166: { merge(__source); } +16166: # 707 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_t.erase(__position); } +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(iterator __position) +16166: { return _M_t.erase(__position); } +16166: # 744 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_t.erase(__x); } +16166: # 765 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_t.erase(__first, __last); } +16166: # 802 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: void +16166: swap(multimap& __x) +16166: noexcept(__is_nothrow_swappable<_Compare>::value) +16166: { _M_t.swap(__x._M_t); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { _M_t.clear(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: key_compare +16166: key_comp() const +16166: { return _M_t.key_comp(); } +16166: +16166: +16166: +16166: +16166: +16166: value_compare +16166: value_comp() const +16166: { return value_compare(_M_t.key_comp()); } +16166: # 848 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_t.find(__x); } +16166: +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x)) +16166: { return _M_t._M_find_tr(__x); } +16166: # 872 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_t.find(__x); } +16166: +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x)) +16166: { return _M_t._M_find_tr(__x); } +16166: # 890 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_t.count(__x); } +16166: +16166: +16166: template +16166: auto +16166: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) +16166: { return _M_t._M_count_tr(__x); } +16166: # 933 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: iterator +16166: lower_bound(const key_type& __x) +16166: { return _M_t.lower_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return iterator(_M_t._M_lower_bound_tr(__x)); } +16166: # 958 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: const_iterator +16166: lower_bound(const key_type& __x) const +16166: { return _M_t.lower_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) const +16166: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } +16166: # 978 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: iterator +16166: upper_bound(const key_type& __x) +16166: { return _M_t.upper_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return iterator(_M_t._M_upper_bound_tr(__x)); } +16166: # 998 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: const_iterator +16166: upper_bound(const key_type& __x) const +16166: { return _M_t.upper_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) const +16166: -> decltype(const_iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } +16166: # 1025 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_t.equal_range(__x); } +16166: +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) +16166: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +16166: { return pair(_M_t._M_equal_range_tr(__x)); } +16166: # 1052 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_t.equal_range(__x); } +16166: +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) const +16166: -> decltype(pair( +16166: _M_t._M_equal_range_tr(__x))) +16166: { +16166: return pair( +16166: _M_t._M_equal_range_tr(__x)); +16166: } +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator==(const multimap<_K1, _T1, _C1, _A1>&, +16166: const multimap<_K1, _T1, _C1, _A1>&); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator<(const multimap<_K1, _T1, _C1, _A1>&, +16166: const multimap<_K1, _T1, _C1, _A1>&); +16166: +16166: }; +16166: +16166: +16166: +16166: template>, +16166: typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: multimap(_InputIterator, _InputIterator, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +16166: _Compare, _Allocator>; +16166: +16166: template, +16166: typename _Allocator = allocator>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: multimap(initializer_list>, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> multimap<_Key, _Tp, _Compare, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: multimap(_InputIterator, _InputIterator, _Allocator) +16166: -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, +16166: less<__iter_key_t<_InputIterator>>, _Allocator>; +16166: +16166: template> +16166: multimap(initializer_list>, _Allocator) +16166: -> multimap<_Key, _Tp, less<_Key>, _Allocator>; +16166: # 1132 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template +16166: inline bool +16166: operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return __x._M_t == __y._M_t; } +16166: # 1170 "/usr/include/c++/14/bits/stl_multimap.h" 3 +16166: template +16166: inline bool +16166: operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return __x._M_t < __y._M_t; } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: inline bool +16166: operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, +16166: const multimap<_Key, _Tp, _Compare, _Alloc>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, +16166: multimap<_Key, _Tp, _Compare, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct +16166: _Rb_tree_merge_helper, +16166: _Cmp2> +16166: { +16166: private: +16166: friend class std::multimap<_Key, _Val, _Cmp1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_tree(std::map<_Key, _Val, _Cmp2, _Alloc>& __map) +16166: { return __map._M_t; } +16166: +16166: static auto& +16166: _S_get_tree(std::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) +16166: { return __map._M_t; } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 65 "/usr/include/c++/14/map" 2 3 +16166: # 79 "/usr/include/c++/14/map" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 80 "/usr/include/c++/14/map" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr +16166: { +16166: template> +16166: using map +16166: = std::map<_Key, _Tp, _Cmp, +16166: polymorphic_allocator>>; +16166: template> +16166: using multimap +16166: = std::multimap<_Key, _Tp, _Cmp, +16166: polymorphic_allocator>>; +16166: } +16166: +16166: } +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 2 +16166: +16166: # 1 "/usr/include/c++/14/mutex" 1 3 +16166: # 32 "/usr/include/c++/14/mutex" 3 +16166: +16166: # 33 "/usr/include/c++/14/mutex" 3 +16166: # 47 "/usr/include/c++/14/mutex" 3 +16166: # 1 "/usr/include/c++/14/bits/std_mutex.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/std_mutex.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/std_mutex.h" 3 +16166: # 43 "/usr/include/c++/14/bits/std_mutex.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 59 "/usr/include/c++/14/bits/std_mutex.h" 3 +16166: class __mutex_base +16166: { +16166: protected: +16166: typedef __gthread_mutex_t __native_type; +16166: +16166: +16166: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_TIMED_NP, 0, { 0 } } }; +16166: +16166: constexpr __mutex_base() noexcept = default; +16166: # 80 "/usr/include/c++/14/bits/std_mutex.h" 3 +16166: __mutex_base(const __mutex_base&) = delete; +16166: __mutex_base& operator=(const __mutex_base&) = delete; +16166: }; +16166: # 96 "/usr/include/c++/14/bits/std_mutex.h" 3 +16166: class mutex : private __mutex_base +16166: { +16166: public: +16166: typedef __native_type* native_handle_type; +16166: +16166: +16166: constexpr +16166: +16166: mutex() noexcept = default; +16166: ~mutex() = default; +16166: +16166: mutex(const mutex&) = delete; +16166: mutex& operator=(const mutex&) = delete; +16166: +16166: void +16166: lock() +16166: { +16166: int __e = __gthread_mutex_lock(&_M_mutex); +16166: +16166: +16166: if (__e) +16166: __throw_system_error(__e); +16166: } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: try_lock() noexcept +16166: { +16166: +16166: return !__gthread_mutex_trylock(&_M_mutex); +16166: } +16166: +16166: void +16166: unlock() +16166: { +16166: +16166: __gthread_mutex_unlock(&_M_mutex); +16166: } +16166: +16166: native_handle_type +16166: native_handle() noexcept +16166: { return &_M_mutex; } +16166: }; +16166: +16166: +16166: +16166: +16166: class __condvar +16166: { +16166: using timespec = __gthread_time_t; +16166: +16166: public: +16166: __condvar() noexcept +16166: { +16166: +16166: +16166: +16166: } +16166: +16166: ~__condvar() +16166: { +16166: int __e __attribute__((__unused__)) = __gthread_cond_destroy(&_M_cond); +16166: do { if (std::__is_constant_evaluated() && !bool(__e != 16)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: __condvar(const __condvar&) = delete; +16166: __condvar& operator=(const __condvar&) = delete; +16166: +16166: __gthread_cond_t* native_handle() noexcept { return &_M_cond; } +16166: +16166: +16166: void +16166: wait(mutex& __m) +16166: { +16166: int __e __attribute__((__unused__)) +16166: = __gthread_cond_wait(&_M_cond, __m.native_handle()); +16166: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: void +16166: wait_until(mutex& __m, timespec& __abs_time) +16166: { +16166: __gthread_cond_timedwait(&_M_cond, __m.native_handle(), &__abs_time); +16166: } +16166: +16166: +16166: void +16166: wait_until(mutex& __m, clockid_t __clock, timespec& __abs_time) +16166: { +16166: pthread_cond_clockwait(&_M_cond, __m.native_handle(), __clock, +16166: &__abs_time); +16166: } +16166: +16166: +16166: void +16166: notify_one() noexcept +16166: { +16166: int __e __attribute__((__unused__)) = __gthread_cond_signal(&_M_cond); +16166: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: void +16166: notify_all() noexcept +16166: { +16166: int __e __attribute__((__unused__)) = __gthread_cond_broadcast(&_M_cond); +16166: do { if (std::__is_constant_evaluated() && !bool(__e == 0)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: protected: +16166: +16166: __gthread_cond_t _M_cond = { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }; +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: struct defer_lock_t { explicit defer_lock_t() = default; }; +16166: +16166: +16166: struct try_to_lock_t { explicit try_to_lock_t() = default; }; +16166: +16166: +16166: +16166: struct adopt_lock_t { explicit adopt_lock_t() = default; }; +16166: +16166: +16166: inline constexpr defer_lock_t defer_lock { }; +16166: +16166: +16166: inline constexpr try_to_lock_t try_to_lock { }; +16166: +16166: +16166: inline constexpr adopt_lock_t adopt_lock { }; +16166: # 242 "/usr/include/c++/14/bits/std_mutex.h" 3 +16166: template +16166: class lock_guard +16166: { +16166: public: +16166: typedef _Mutex mutex_type; +16166: +16166: [[__nodiscard__]] +16166: explicit lock_guard(mutex_type& __m) : _M_device(__m) +16166: { _M_device.lock(); } +16166: +16166: [[__nodiscard__]] +16166: lock_guard(mutex_type& __m, adopt_lock_t) noexcept : _M_device(__m) +16166: { } +16166: +16166: ~lock_guard() +16166: { _M_device.unlock(); } +16166: +16166: lock_guard(const lock_guard&) = delete; +16166: lock_guard& operator=(const lock_guard&) = delete; +16166: +16166: private: +16166: mutex_type& _M_device; +16166: }; +16166: +16166: +16166: +16166: } +16166: # 48 "/usr/include/c++/14/mutex" 2 3 +16166: # 1 "/usr/include/c++/14/bits/unique_lock.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/unique_lock.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/unique_lock.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/error_constants.h" 1 3 +16166: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/error_constants.h" 3 +16166: # 1 "/usr/include/c++/14/cerrno" 1 3 +16166: # 39 "/usr/include/c++/14/cerrno" 3 +16166: +16166: # 40 "/usr/include/c++/14/cerrno" 3 +16166: # 35 "/usr/include/arm-linux-gnueabihf/c++/14/bits/error_constants.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: enum class errc +16166: { +16166: address_family_not_supported = 97, +16166: address_in_use = 98, +16166: address_not_available = 99, +16166: already_connected = 106, +16166: argument_list_too_long = 7, +16166: argument_out_of_domain = 33, +16166: bad_address = 14, +16166: bad_file_descriptor = 9, +16166: +16166: +16166: bad_message = 74, +16166: +16166: +16166: broken_pipe = 32, +16166: connection_aborted = 103, +16166: connection_already_in_progress = 114, +16166: connection_refused = 111, +16166: connection_reset = 104, +16166: cross_device_link = 18, +16166: destination_address_required = 89, +16166: device_or_resource_busy = 16, +16166: directory_not_empty = 39, +16166: executable_format_error = 8, +16166: file_exists = 17, +16166: file_too_large = 27, +16166: filename_too_long = 36, +16166: function_not_supported = 38, +16166: host_unreachable = 113, +16166: +16166: +16166: identifier_removed = 43, +16166: +16166: +16166: illegal_byte_sequence = 84, +16166: inappropriate_io_control_operation = 25, +16166: interrupted = 4, +16166: invalid_argument = 22, +16166: invalid_seek = 29, +16166: io_error = 5, +16166: is_a_directory = 21, +16166: message_size = 90, +16166: network_down = 100, +16166: network_reset = 102, +16166: network_unreachable = 101, +16166: no_buffer_space = 105, +16166: no_child_process = 10, +16166: +16166: +16166: no_link = 67, +16166: +16166: +16166: no_lock_available = 37, +16166: +16166: +16166: no_message_available = 61, +16166: +16166: +16166: no_message = 42, +16166: no_protocol_option = 92, +16166: no_space_on_device = 28, +16166: +16166: +16166: no_stream_resources = 63, +16166: +16166: +16166: no_such_device_or_address = 6, +16166: no_such_device = 19, +16166: no_such_file_or_directory = 2, +16166: no_such_process = 3, +16166: not_a_directory = 20, +16166: not_a_socket = 88, +16166: +16166: +16166: not_a_stream = 60, +16166: +16166: +16166: not_connected = 107, +16166: not_enough_memory = 12, +16166: +16166: +16166: not_supported = 95, +16166: +16166: +16166: +16166: operation_canceled = 125, +16166: +16166: +16166: operation_in_progress = 115, +16166: operation_not_permitted = 1, +16166: operation_not_supported = 95, +16166: operation_would_block = 11, +16166: +16166: +16166: owner_dead = 130, +16166: +16166: +16166: permission_denied = 13, +16166: +16166: +16166: protocol_error = 71, +16166: +16166: +16166: protocol_not_supported = 93, +16166: read_only_file_system = 30, +16166: resource_deadlock_would_occur = 35, +16166: resource_unavailable_try_again = 11, +16166: result_out_of_range = 34, +16166: +16166: +16166: state_not_recoverable = 131, +16166: +16166: +16166: +16166: stream_timeout = 62, +16166: +16166: +16166: +16166: text_file_busy = 26, +16166: +16166: +16166: timed_out = 110, +16166: too_many_files_open_in_system = 23, +16166: too_many_files_open = 24, +16166: too_many_links = 31, +16166: too_many_symbolic_link_levels = 40, +16166: +16166: +16166: value_too_large = 75, +16166: +16166: +16166: +16166: +16166: wrong_protocol_type = 91 +16166: }; +16166: +16166: +16166: } +16166: # 41 "/usr/include/c++/14/bits/unique_lock.h" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 59 "/usr/include/c++/14/bits/unique_lock.h" 3 +16166: template +16166: class unique_lock +16166: { +16166: public: +16166: typedef _Mutex mutex_type; +16166: +16166: unique_lock() noexcept +16166: : _M_device(0), _M_owns(false) +16166: { } +16166: +16166: [[__nodiscard__]] +16166: explicit unique_lock(mutex_type& __m) +16166: : _M_device(std::__addressof(__m)), _M_owns(false) +16166: { +16166: lock(); +16166: _M_owns = true; +16166: } +16166: +16166: unique_lock(mutex_type& __m, defer_lock_t) noexcept +16166: : _M_device(std::__addressof(__m)), _M_owns(false) +16166: { } +16166: +16166: [[__nodiscard__]] +16166: unique_lock(mutex_type& __m, try_to_lock_t) +16166: : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock()) +16166: { } +16166: +16166: [[__nodiscard__]] +16166: unique_lock(mutex_type& __m, adopt_lock_t) noexcept +16166: : _M_device(std::__addressof(__m)), _M_owns(true) +16166: { +16166: +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: unique_lock(mutex_type& __m, +16166: const chrono::time_point<_Clock, _Duration>& __atime) +16166: : _M_device(std::__addressof(__m)), +16166: _M_owns(_M_device->try_lock_until(__atime)) +16166: { } +16166: +16166: template +16166: [[__nodiscard__]] +16166: unique_lock(mutex_type& __m, +16166: const chrono::duration<_Rep, _Period>& __rtime) +16166: : _M_device(std::__addressof(__m)), +16166: _M_owns(_M_device->try_lock_for(__rtime)) +16166: { } +16166: +16166: ~unique_lock() +16166: { +16166: if (_M_owns) +16166: unlock(); +16166: } +16166: +16166: unique_lock(const unique_lock&) = delete; +16166: unique_lock& operator=(const unique_lock&) = delete; +16166: +16166: unique_lock(unique_lock&& __u) noexcept +16166: : _M_device(__u._M_device), _M_owns(__u._M_owns) +16166: { +16166: __u._M_device = 0; +16166: __u._M_owns = false; +16166: } +16166: +16166: unique_lock& operator=(unique_lock&& __u) noexcept +16166: { +16166: if(_M_owns) +16166: unlock(); +16166: +16166: unique_lock(std::move(__u)).swap(*this); +16166: +16166: __u._M_device = 0; +16166: __u._M_owns = false; +16166: +16166: return *this; +16166: } +16166: +16166: void +16166: lock() +16166: { +16166: if (!_M_device) +16166: __throw_system_error(int(errc::operation_not_permitted)); +16166: else if (_M_owns) +16166: __throw_system_error(int(errc::resource_deadlock_would_occur)); +16166: else +16166: { +16166: _M_device->lock(); +16166: _M_owns = true; +16166: } +16166: } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: try_lock() +16166: { +16166: if (!_M_device) +16166: __throw_system_error(int(errc::operation_not_permitted)); +16166: else if (_M_owns) +16166: __throw_system_error(int(errc::resource_deadlock_would_occur)); +16166: else +16166: { +16166: _M_owns = _M_device->try_lock(); +16166: return _M_owns; +16166: } +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +16166: { +16166: if (!_M_device) +16166: __throw_system_error(int(errc::operation_not_permitted)); +16166: else if (_M_owns) +16166: __throw_system_error(int(errc::resource_deadlock_would_occur)); +16166: else +16166: { +16166: _M_owns = _M_device->try_lock_until(__atime); +16166: return _M_owns; +16166: } +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +16166: { +16166: if (!_M_device) +16166: __throw_system_error(int(errc::operation_not_permitted)); +16166: else if (_M_owns) +16166: __throw_system_error(int(errc::resource_deadlock_would_occur)); +16166: else +16166: { +16166: _M_owns = _M_device->try_lock_for(__rtime); +16166: return _M_owns; +16166: } +16166: } +16166: +16166: void +16166: unlock() +16166: { +16166: if (!_M_owns) +16166: __throw_system_error(int(errc::operation_not_permitted)); +16166: else if (_M_device) +16166: { +16166: _M_device->unlock(); +16166: _M_owns = false; +16166: } +16166: } +16166: +16166: void +16166: swap(unique_lock& __u) noexcept +16166: { +16166: std::swap(_M_device, __u._M_device); +16166: std::swap(_M_owns, __u._M_owns); +16166: } +16166: +16166: mutex_type* +16166: release() noexcept +16166: { +16166: mutex_type* __ret = _M_device; +16166: _M_device = 0; +16166: _M_owns = false; +16166: return __ret; +16166: } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: owns_lock() const noexcept +16166: { return _M_owns; } +16166: +16166: explicit operator bool() const noexcept +16166: { return owns_lock(); } +16166: +16166: [[__nodiscard__]] +16166: mutex_type* +16166: mutex() const noexcept +16166: { return _M_device; } +16166: +16166: private: +16166: mutex_type* _M_device; +16166: bool _M_owns; +16166: }; +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept +16166: { __x.swap(__y); } +16166: +16166: +16166: } +16166: # 49 "/usr/include/c++/14/mutex" 2 3 +16166: # 60 "/usr/include/c++/14/mutex" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 61 "/usr/include/c++/14/mutex" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 75 "/usr/include/c++/14/mutex" 3 +16166: class __recursive_mutex_base +16166: { +16166: protected: +16166: typedef __gthread_recursive_mutex_t __native_type; +16166: +16166: __recursive_mutex_base(const __recursive_mutex_base&) = delete; +16166: __recursive_mutex_base& operator=(const __recursive_mutex_base&) = delete; +16166: +16166: +16166: __native_type _M_mutex = { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }; +16166: +16166: __recursive_mutex_base() = default; +16166: # 99 "/usr/include/c++/14/mutex" 3 +16166: }; +16166: # 111 "/usr/include/c++/14/mutex" 3 +16166: class recursive_mutex : private __recursive_mutex_base +16166: { +16166: public: +16166: typedef __native_type* native_handle_type; +16166: +16166: recursive_mutex() = default; +16166: ~recursive_mutex() = default; +16166: +16166: recursive_mutex(const recursive_mutex&) = delete; +16166: recursive_mutex& operator=(const recursive_mutex&) = delete; +16166: +16166: void +16166: lock() +16166: { +16166: int __e = __gthread_recursive_mutex_lock(&_M_mutex); +16166: +16166: +16166: if (__e) +16166: __throw_system_error(__e); +16166: } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: try_lock() noexcept +16166: { +16166: +16166: return !__gthread_recursive_mutex_trylock(&_M_mutex); +16166: } +16166: +16166: void +16166: unlock() +16166: { +16166: +16166: __gthread_recursive_mutex_unlock(&_M_mutex); +16166: } +16166: +16166: native_handle_type +16166: native_handle() noexcept +16166: { return &_M_mutex; } +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: class __timed_mutex_impl +16166: { +16166: protected: +16166: template +16166: bool +16166: _M_try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +16166: { +16166: +16166: using __clock = chrono::steady_clock; +16166: +16166: +16166: +16166: +16166: auto __rt = chrono::duration_cast<__clock::duration>(__rtime); +16166: if (ratio_greater<__clock::period, _Period>()) +16166: ++__rt; +16166: return _M_try_lock_until(__clock::now() + __rt); +16166: } +16166: +16166: template +16166: bool +16166: _M_try_lock_until(const chrono::time_point& __atime) +16166: { +16166: auto __s = chrono::time_point_cast(__atime); +16166: auto __ns = chrono::duration_cast(__atime - __s); +16166: +16166: __gthread_time_t __ts = { +16166: static_cast(__s.time_since_epoch().count()), +16166: static_cast(__ns.count()) +16166: }; +16166: +16166: return static_cast<_Derived*>(this)->_M_timedlock(__ts); +16166: } +16166: +16166: +16166: template +16166: bool +16166: _M_try_lock_until(const chrono::time_point& __atime) +16166: { +16166: auto __s = chrono::time_point_cast(__atime); +16166: auto __ns = chrono::duration_cast(__atime - __s); +16166: +16166: __gthread_time_t __ts = { +16166: static_cast(__s.time_since_epoch().count()), +16166: static_cast(__ns.count()) +16166: }; +16166: +16166: return static_cast<_Derived*>(this)->_M_clocklock(1, +16166: __ts); +16166: } +16166: +16166: +16166: template +16166: bool +16166: _M_try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: auto __now = _Clock::now(); +16166: do { +16166: auto __rtime = __atime - __now; +16166: if (_M_try_lock_for(__rtime)) +16166: return true; +16166: __now = _Clock::now(); +16166: } while (__atime > __now); +16166: return false; +16166: } +16166: }; +16166: # 240 "/usr/include/c++/14/mutex" 3 +16166: class timed_mutex +16166: : private __mutex_base, public __timed_mutex_impl +16166: { +16166: public: +16166: typedef __native_type* native_handle_type; +16166: +16166: timed_mutex() = default; +16166: ~timed_mutex() = default; +16166: +16166: timed_mutex(const timed_mutex&) = delete; +16166: timed_mutex& operator=(const timed_mutex&) = delete; +16166: +16166: void +16166: lock() +16166: { +16166: int __e = __gthread_mutex_lock(&_M_mutex); +16166: +16166: +16166: if (__e) +16166: __throw_system_error(__e); +16166: } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: try_lock() noexcept +16166: { +16166: +16166: return !__gthread_mutex_trylock(&_M_mutex); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +16166: { return _M_try_lock_for(__rtime); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +16166: { return _M_try_lock_until(__atime); } +16166: +16166: void +16166: unlock() +16166: { +16166: +16166: __gthread_mutex_unlock(&_M_mutex); +16166: } +16166: +16166: native_handle_type +16166: native_handle() noexcept +16166: { return &_M_mutex; } +16166: +16166: private: +16166: friend class __timed_mutex_impl; +16166: +16166: bool +16166: _M_timedlock(const __gthread_time_t& __ts) +16166: { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); } +16166: +16166: +16166: bool +16166: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) +16166: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } +16166: +16166: }; +16166: # 317 "/usr/include/c++/14/mutex" 3 +16166: class recursive_timed_mutex +16166: : private __recursive_mutex_base, +16166: public __timed_mutex_impl +16166: { +16166: public: +16166: typedef __native_type* native_handle_type; +16166: +16166: recursive_timed_mutex() = default; +16166: ~recursive_timed_mutex() = default; +16166: +16166: recursive_timed_mutex(const recursive_timed_mutex&) = delete; +16166: recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete; +16166: +16166: void +16166: lock() +16166: { +16166: int __e = __gthread_recursive_mutex_lock(&_M_mutex); +16166: +16166: +16166: if (__e) +16166: __throw_system_error(__e); +16166: } +16166: +16166: [[__nodiscard__]] +16166: bool +16166: try_lock() noexcept +16166: { +16166: +16166: return !__gthread_recursive_mutex_trylock(&_M_mutex); +16166: } +16166: +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) +16166: { return _M_try_lock_for(__rtime); } +16166: +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) +16166: { return _M_try_lock_until(__atime); } +16166: +16166: void +16166: unlock() +16166: { +16166: +16166: __gthread_recursive_mutex_unlock(&_M_mutex); +16166: } +16166: +16166: native_handle_type +16166: native_handle() noexcept +16166: { return &_M_mutex; } +16166: +16166: private: +16166: friend class __timed_mutex_impl; +16166: +16166: bool +16166: _M_timedlock(const __gthread_time_t& __ts) +16166: { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); } +16166: +16166: +16166: bool +16166: _M_clocklock(clockid_t __clockid, const __gthread_time_t& __ts) +16166: { return !pthread_mutex_clocklock(&_M_mutex, __clockid, &__ts); } +16166: +16166: }; +16166: # 564 "/usr/include/c++/14/mutex" 3 +16166: namespace __detail +16166: { +16166: +16166: template +16166: inline int +16166: __try_lock_impl(_Lockable& __l) +16166: { +16166: if (unique_lock<_Lockable> __lock{__l, try_to_lock}) +16166: { +16166: __lock.release(); +16166: return -1; +16166: } +16166: else +16166: return 0; +16166: } +16166: +16166: +16166: +16166: template +16166: inline int +16166: __try_lock_impl(_L0& __l0, _Lockables&... __lockables) +16166: { +16166: +16166: if constexpr ((is_same_v<_L0, _Lockables> && ...)) +16166: { +16166: constexpr int _Np = 1 + sizeof...(_Lockables); +16166: unique_lock<_L0> __locks[_Np] = { +16166: {__l0, defer_lock}, {__lockables, defer_lock}... +16166: }; +16166: for (int __i = 0; __i < _Np; ++__i) +16166: { +16166: if (!__locks[__i].try_lock()) +16166: { +16166: const int __failed = __i; +16166: while (__i--) +16166: __locks[__i].unlock(); +16166: return __failed; +16166: } +16166: } +16166: for (auto& __l : __locks) +16166: __l.release(); +16166: return -1; +16166: } +16166: else +16166: +16166: if (unique_lock<_L0> __lock{__l0, try_to_lock}) +16166: { +16166: int __idx = __detail::__try_lock_impl(__lockables...); +16166: if (__idx == -1) +16166: { +16166: __lock.release(); +16166: return -1; +16166: } +16166: return __idx + 1; +16166: } +16166: else +16166: return 0; +16166: } +16166: +16166: } +16166: # 636 "/usr/include/c++/14/mutex" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline int +16166: try_lock(_L1& __l1, _L2& __l2, _L3&... __l3) +16166: { +16166: return __detail::__try_lock_impl(__l1, __l2, __l3...); +16166: } +16166: +16166: +16166: namespace __detail +16166: { +16166: +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: __lock_impl(int& __i, int __depth, _L0& __l0, _L1&... __l1) +16166: { +16166: while (__i >= __depth) +16166: { +16166: if (__i == __depth) +16166: { +16166: int __failed = 1; +16166: { +16166: unique_lock<_L0> __first(__l0); +16166: __failed += __detail::__try_lock_impl(__l1...); +16166: if (!__failed) +16166: { +16166: __i = -1; +16166: __first.release(); +16166: return; +16166: } +16166: } +16166: +16166: __gthread_yield(); +16166: +16166: constexpr auto __n = 1 + sizeof...(_L1); +16166: __i = (__depth + __failed) % __n; +16166: } +16166: else +16166: __detail::__lock_impl(__i, __depth + 1, __l1..., __l0); +16166: } +16166: } +16166: +16166: } +16166: # 696 "/usr/include/c++/14/mutex" 3 +16166: template +16166: void +16166: lock(_L1& __l1, _L2& __l2, _L3&... __l3) +16166: { +16166: +16166: if constexpr (is_same_v<_L1, _L2> && (is_same_v<_L1, _L3> && ...)) +16166: { +16166: constexpr int _Np = 2 + sizeof...(_L3); +16166: unique_lock<_L1> __locks[] = { +16166: {__l1, defer_lock}, {__l2, defer_lock}, {__l3, defer_lock}... +16166: }; +16166: int __first = 0; +16166: do { +16166: __locks[__first].lock(); +16166: for (int __j = 1; __j < _Np; ++__j) +16166: { +16166: const int __idx = (__first + __j) % _Np; +16166: if (!__locks[__idx].try_lock()) +16166: { +16166: for (int __k = __j; __k != 0; --__k) +16166: __locks[(__first + __k - 1) % _Np].unlock(); +16166: __first = __idx; +16166: break; +16166: } +16166: } +16166: } while (!__locks[__first].owns_lock()); +16166: +16166: for (auto& __l : __locks) +16166: __l.release(); +16166: } +16166: else +16166: +16166: { +16166: int __i = 0; +16166: __detail::__lock_impl(__i, 0, __l1, __l2, __l3...); +16166: } +16166: } +16166: # 743 "/usr/include/c++/14/mutex" 3 +16166: template +16166: class scoped_lock +16166: { +16166: public: +16166: +16166: [[nodiscard]] +16166: explicit scoped_lock(_MutexTypes&... __m) : _M_devices(std::tie(__m...)) +16166: { std::lock(__m...); } +16166: +16166: [[nodiscard]] +16166: explicit scoped_lock(adopt_lock_t, _MutexTypes&... __m) noexcept +16166: : _M_devices(std::tie(__m...)) +16166: { } +16166: +16166: ~scoped_lock() +16166: { std::apply([](auto&... __m) { (__m.unlock(), ...); }, _M_devices); } +16166: +16166: scoped_lock(const scoped_lock&) = delete; +16166: scoped_lock& operator=(const scoped_lock&) = delete; +16166: +16166: private: +16166: tuple<_MutexTypes&...> _M_devices; +16166: }; +16166: +16166: template<> +16166: class scoped_lock<> +16166: { +16166: public: +16166: explicit scoped_lock() = default; +16166: explicit scoped_lock(adopt_lock_t) noexcept { } +16166: ~scoped_lock() = default; +16166: +16166: scoped_lock(const scoped_lock&) = delete; +16166: scoped_lock& operator=(const scoped_lock&) = delete; +16166: }; +16166: +16166: template +16166: class scoped_lock<_Mutex> +16166: { +16166: public: +16166: using mutex_type = _Mutex; +16166: +16166: [[nodiscard]] +16166: explicit scoped_lock(mutex_type& __m) : _M_device(__m) +16166: { _M_device.lock(); } +16166: +16166: [[nodiscard]] +16166: explicit scoped_lock(adopt_lock_t, mutex_type& __m) noexcept +16166: : _M_device(__m) +16166: { } +16166: +16166: ~scoped_lock() +16166: { _M_device.unlock(); } +16166: +16166: scoped_lock(const scoped_lock&) = delete; +16166: scoped_lock& operator=(const scoped_lock&) = delete; +16166: +16166: private: +16166: mutex_type& _M_device; +16166: }; +16166: +16166: +16166: +16166: +16166: struct once_flag +16166: { +16166: constexpr once_flag() noexcept = default; +16166: +16166: +16166: once_flag(const once_flag&) = delete; +16166: +16166: once_flag& operator=(const once_flag&) = delete; +16166: +16166: private: +16166: +16166: +16166: __gthread_once_t _M_once = 0; +16166: +16166: struct _Prepare_execution; +16166: +16166: template +16166: friend void +16166: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: extern __thread void* __once_callable; +16166: extern __thread void (*__once_call)(); +16166: +16166: +16166: struct once_flag::_Prepare_execution +16166: { +16166: template +16166: explicit +16166: _Prepare_execution(_Callable& __c) +16166: { +16166: +16166: __once_callable = std::__addressof(__c); +16166: +16166: __once_call = [] { (*static_cast<_Callable*>(__once_callable))(); }; +16166: } +16166: +16166: ~_Prepare_execution() +16166: { +16166: +16166: __once_callable = nullptr; +16166: __once_call = nullptr; +16166: } +16166: +16166: _Prepare_execution(const _Prepare_execution&) = delete; +16166: _Prepare_execution& operator=(const _Prepare_execution&) = delete; +16166: }; +16166: # 900 "/usr/include/c++/14/mutex" 3 +16166: extern "C" void __once_proxy(void); +16166: +16166: +16166: template +16166: void +16166: call_once(once_flag& __once, _Callable&& __f, _Args&&... __args) +16166: { +16166: +16166: auto __callable = [&] { +16166: std::__invoke(std::forward<_Callable>(__f), +16166: std::forward<_Args>(__args)...); +16166: }; +16166: +16166: once_flag::_Prepare_execution __exec(__callable); +16166: +16166: +16166: if (int __e = __gthread_once(&__once._M_once, &__once_proxy)) +16166: __throw_system_error(__e); +16166: } +16166: # 1021 "/usr/include/c++/14/mutex" 3 +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 2 +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: namespace rocksdb { +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: enum Tickers : uint32_t { +16166: +16166: +16166: +16166: +16166: BLOCK_CACHE_MISS = 0, +16166: +16166: +16166: +16166: +16166: BLOCK_CACHE_HIT, +16166: +16166: BLOCK_CACHE_ADD, +16166: +16166: BLOCK_CACHE_ADD_FAILURES, +16166: +16166: BLOCK_CACHE_INDEX_MISS, +16166: +16166: BLOCK_CACHE_INDEX_HIT, +16166: +16166: BLOCK_CACHE_INDEX_ADD, +16166: +16166: BLOCK_CACHE_INDEX_BYTES_INSERT, +16166: +16166: BLOCK_CACHE_FILTER_MISS, +16166: +16166: BLOCK_CACHE_FILTER_HIT, +16166: +16166: BLOCK_CACHE_FILTER_ADD, +16166: +16166: BLOCK_CACHE_FILTER_BYTES_INSERT, +16166: +16166: BLOCK_CACHE_DATA_MISS, +16166: +16166: BLOCK_CACHE_DATA_HIT, +16166: +16166: BLOCK_CACHE_DATA_ADD, +16166: +16166: BLOCK_CACHE_DATA_BYTES_INSERT, +16166: +16166: BLOCK_CACHE_BYTES_READ, +16166: +16166: BLOCK_CACHE_BYTES_WRITE, +16166: +16166: BLOCK_CACHE_COMPRESSION_DICT_MISS, +16166: BLOCK_CACHE_COMPRESSION_DICT_HIT, +16166: BLOCK_CACHE_COMPRESSION_DICT_ADD, +16166: BLOCK_CACHE_COMPRESSION_DICT_BYTES_INSERT, +16166: +16166: +16166: +16166: BLOCK_CACHE_ADD_REDUNDANT, +16166: +16166: +16166: BLOCK_CACHE_INDEX_ADD_REDUNDANT, +16166: +16166: +16166: BLOCK_CACHE_FILTER_ADD_REDUNDANT, +16166: +16166: +16166: BLOCK_CACHE_DATA_ADD_REDUNDANT, +16166: +16166: +16166: +16166: BLOCK_CACHE_COMPRESSION_DICT_ADD_REDUNDANT, +16166: +16166: +16166: SECONDARY_CACHE_HITS, +16166: +16166: +16166: SECONDARY_CACHE_FILTER_HITS, +16166: SECONDARY_CACHE_INDEX_HITS, +16166: SECONDARY_CACHE_DATA_HITS, +16166: +16166: +16166: COMPRESSED_SECONDARY_CACHE_DUMMY_HITS, +16166: COMPRESSED_SECONDARY_CACHE_HITS, +16166: COMPRESSED_SECONDARY_CACHE_PROMOTIONS, +16166: COMPRESSED_SECONDARY_CACHE_PROMOTION_SKIPS, +16166: +16166: +16166: BLOOM_FILTER_USEFUL, +16166: +16166: BLOOM_FILTER_FULL_POSITIVE, +16166: +16166: +16166: BLOOM_FILTER_FULL_TRUE_POSITIVE, +16166: +16166: +16166: +16166: BLOOM_FILTER_PREFIX_CHECKED, +16166: +16166: BLOOM_FILTER_PREFIX_USEFUL, +16166: +16166: +16166: +16166: BLOOM_FILTER_PREFIX_TRUE_POSITIVE, +16166: +16166: +16166: PERSISTENT_CACHE_HIT, +16166: +16166: PERSISTENT_CACHE_MISS, +16166: +16166: +16166: SIM_BLOCK_CACHE_HIT, +16166: +16166: SIM_BLOCK_CACHE_MISS, +16166: +16166: +16166: MEMTABLE_HIT, +16166: +16166: MEMTABLE_MISS, +16166: +16166: +16166: GET_HIT_L0, +16166: +16166: GET_HIT_L1, +16166: +16166: GET_HIT_L2_AND_UP, +16166: +16166: +16166: +16166: +16166: +16166: COMPACTION_KEY_DROP_NEWER_ENTRY, +16166: +16166: COMPACTION_KEY_DROP_OBSOLETE, +16166: COMPACTION_KEY_DROP_RANGE_DEL, +16166: COMPACTION_KEY_DROP_USER, +16166: COMPACTION_RANGE_DEL_DROP_OBSOLETE, +16166: +16166: COMPACTION_OPTIMIZED_DEL_DROP_OBSOLETE, +16166: +16166: COMPACTION_CANCELLED, +16166: +16166: +16166: NUMBER_KEYS_WRITTEN, +16166: +16166: NUMBER_KEYS_READ, +16166: +16166: NUMBER_KEYS_UPDATED, +16166: +16166: +16166: BYTES_WRITTEN, +16166: +16166: +16166: +16166: +16166: BYTES_READ, +16166: +16166: NUMBER_DB_SEEK, +16166: NUMBER_DB_NEXT, +16166: NUMBER_DB_PREV, +16166: +16166: NUMBER_DB_SEEK_FOUND, +16166: NUMBER_DB_NEXT_FOUND, +16166: NUMBER_DB_PREV_FOUND, +16166: +16166: +16166: ITER_BYTES_READ, +16166: +16166: NUMBER_ITER_SKIP, +16166: +16166: +16166: NUMBER_OF_RESEEKS_IN_ITERATION, +16166: +16166: NO_ITERATOR_CREATED, +16166: NO_ITERATOR_DELETED, +16166: +16166: NO_FILE_OPENS, +16166: NO_FILE_ERRORS, +16166: +16166: STALL_MICROS, +16166: +16166: +16166: DB_MUTEX_WAIT_MICROS, +16166: +16166: +16166: NUMBER_MULTIGET_CALLS, +16166: NUMBER_MULTIGET_KEYS_READ, +16166: NUMBER_MULTIGET_BYTES_READ, +16166: +16166: +16166: +16166: NUMBER_MULTIGET_KEYS_FOUND, +16166: +16166: NUMBER_MERGE_FAILURES, +16166: +16166: +16166: +16166: GET_UPDATES_SINCE_CALLS, +16166: WAL_FILE_SYNCED, +16166: WAL_FILE_BYTES, +16166: +16166: +16166: +16166: WRITE_DONE_BY_SELF, +16166: WRITE_DONE_BY_OTHER, +16166: WRITE_WITH_WAL, +16166: COMPACT_READ_BYTES, +16166: COMPACT_WRITE_BYTES, +16166: FLUSH_WRITE_BYTES, +16166: +16166: +16166: COMPACT_READ_BYTES_MARKED, +16166: COMPACT_READ_BYTES_PERIODIC, +16166: COMPACT_READ_BYTES_TTL, +16166: COMPACT_WRITE_BYTES_MARKED, +16166: COMPACT_WRITE_BYTES_PERIODIC, +16166: COMPACT_WRITE_BYTES_TTL, +16166: +16166: +16166: +16166: NUMBER_DIRECT_LOAD_TABLE_PROPERTIES, +16166: NUMBER_SUPERVERSION_ACQUIRES, +16166: NUMBER_SUPERVERSION_RELEASES, +16166: NUMBER_SUPERVERSION_CLEANUPS, +16166: +16166: +16166: NUMBER_BLOCK_COMPRESSED, +16166: NUMBER_BLOCK_DECOMPRESSED, +16166: +16166: +16166: +16166: BYTES_COMPRESSED_FROM, +16166: +16166: +16166: BYTES_COMPRESSED_TO, +16166: +16166: +16166: +16166: +16166: BYTES_COMPRESSION_BYPASSED, +16166: +16166: +16166: +16166: +16166: +16166: BYTES_COMPRESSION_REJECTED, +16166: +16166: +16166: NUMBER_BLOCK_COMPRESSION_BYPASSED, +16166: +16166: NUMBER_BLOCK_COMPRESSION_REJECTED, +16166: +16166: +16166: +16166: BYTES_DECOMPRESSED_FROM, +16166: +16166: +16166: BYTES_DECOMPRESSED_TO, +16166: +16166: +16166: MERGE_OPERATION_TOTAL_TIME, +16166: FILTER_OPERATION_TOTAL_TIME, +16166: COMPACTION_CPU_TOTAL_TIME, +16166: +16166: +16166: ROW_CACHE_HIT, +16166: ROW_CACHE_MISS, +16166: +16166: +16166: +16166: +16166: +16166: +16166: READ_AMP_ESTIMATE_USEFUL_BYTES, +16166: READ_AMP_TOTAL_READ_BYTES, +16166: +16166: +16166: NUMBER_RATE_LIMITER_DRAINS, +16166: +16166: +16166: +16166: BLOB_DB_NUM_PUT, +16166: +16166: BLOB_DB_NUM_WRITE, +16166: +16166: BLOB_DB_NUM_GET, +16166: +16166: BLOB_DB_NUM_MULTIGET, +16166: +16166: +16166: BLOB_DB_NUM_SEEK, +16166: +16166: BLOB_DB_NUM_NEXT, +16166: +16166: BLOB_DB_NUM_PREV, +16166: +16166: BLOB_DB_NUM_KEYS_WRITTEN, +16166: +16166: BLOB_DB_NUM_KEYS_READ, +16166: +16166: +16166: BLOB_DB_BYTES_WRITTEN, +16166: +16166: +16166: BLOB_DB_BYTES_READ, +16166: +16166: +16166: BLOB_DB_WRITE_INLINED, +16166: +16166: +16166: BLOB_DB_WRITE_INLINED_TTL, +16166: +16166: +16166: BLOB_DB_WRITE_BLOB, +16166: +16166: +16166: BLOB_DB_WRITE_BLOB_TTL, +16166: +16166: BLOB_DB_BLOB_FILE_BYTES_WRITTEN, +16166: +16166: BLOB_DB_BLOB_FILE_BYTES_READ, +16166: +16166: BLOB_DB_BLOB_FILE_SYNCED, +16166: +16166: +16166: BLOB_DB_BLOB_INDEX_EXPIRED_COUNT, +16166: +16166: +16166: BLOB_DB_BLOB_INDEX_EXPIRED_SIZE, +16166: +16166: +16166: BLOB_DB_BLOB_INDEX_EVICTED_COUNT, +16166: +16166: +16166: BLOB_DB_BLOB_INDEX_EVICTED_SIZE, +16166: +16166: +16166: BLOB_DB_GC_NUM_FILES, +16166: +16166: +16166: BLOB_DB_GC_NUM_NEW_FILES, +16166: +16166: BLOB_DB_GC_FAILURES, +16166: +16166: BLOB_DB_GC_NUM_KEYS_RELOCATED, +16166: +16166: BLOB_DB_GC_BYTES_RELOCATED, +16166: +16166: +16166: BLOB_DB_FIFO_NUM_FILES_EVICTED, +16166: +16166: +16166: BLOB_DB_FIFO_NUM_KEYS_EVICTED, +16166: +16166: +16166: BLOB_DB_FIFO_BYTES_EVICTED, +16166: +16166: +16166: +16166: BLOB_DB_CACHE_MISS, +16166: +16166: BLOB_DB_CACHE_HIT, +16166: +16166: BLOB_DB_CACHE_ADD, +16166: +16166: BLOB_DB_CACHE_ADD_FAILURES, +16166: +16166: BLOB_DB_CACHE_BYTES_READ, +16166: +16166: BLOB_DB_CACHE_BYTES_WRITE, +16166: +16166: +16166: +16166: +16166: TXN_PREPARE_MUTEX_OVERHEAD, +16166: +16166: TXN_OLD_COMMIT_MAP_MUTEX_OVERHEAD, +16166: +16166: TXN_DUPLICATE_KEY_OVERHEAD, +16166: +16166: TXN_SNAPSHOT_MUTEX_OVERHEAD, +16166: +16166: TXN_GET_TRY_AGAIN, +16166: +16166: +16166: +16166: FILES_MARKED_TRASH, +16166: +16166: FILES_DELETED_FROM_TRASH_QUEUE, +16166: +16166: +16166: FILES_DELETED_IMMEDIATELY, +16166: +16166: +16166: +16166: ERROR_HANDLER_BG_ERROR_COUNT, +16166: ERROR_HANDLER_BG_IO_ERROR_COUNT, +16166: ERROR_HANDLER_BG_RETRYABLE_IO_ERROR_COUNT, +16166: ERROR_HANDLER_AUTORESUME_COUNT, +16166: ERROR_HANDLER_AUTORESUME_RETRY_TOTAL_COUNT, +16166: ERROR_HANDLER_AUTORESUME_SUCCESS_COUNT, +16166: +16166: +16166: +16166: MEMTABLE_PAYLOAD_BYTES_AT_FLUSH, +16166: +16166: MEMTABLE_GARBAGE_BYTES_AT_FLUSH, +16166: +16166: +16166: VERIFY_CHECKSUM_READ_BYTES, +16166: +16166: +16166: BACKUP_READ_BYTES, +16166: BACKUP_WRITE_BYTES, +16166: +16166: +16166: REMOTE_COMPACT_READ_BYTES, +16166: REMOTE_COMPACT_WRITE_BYTES, +16166: +16166: +16166: HOT_FILE_READ_BYTES, +16166: WARM_FILE_READ_BYTES, +16166: COLD_FILE_READ_BYTES, +16166: HOT_FILE_READ_COUNT, +16166: WARM_FILE_READ_COUNT, +16166: COLD_FILE_READ_COUNT, +16166: +16166: +16166: LAST_LEVEL_READ_BYTES, +16166: LAST_LEVEL_READ_COUNT, +16166: NON_LAST_LEVEL_READ_BYTES, +16166: NON_LAST_LEVEL_READ_COUNT, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: LAST_LEVEL_SEEK_FILTERED, +16166: +16166: +16166: LAST_LEVEL_SEEK_FILTER_MATCH, +16166: +16166: +16166: LAST_LEVEL_SEEK_DATA, +16166: +16166: +16166: LAST_LEVEL_SEEK_DATA_USEFUL_NO_FILTER, +16166: +16166: +16166: LAST_LEVEL_SEEK_DATA_USEFUL_FILTER_MATCH, +16166: +16166: NON_LAST_LEVEL_SEEK_FILTERED, +16166: NON_LAST_LEVEL_SEEK_FILTER_MATCH, +16166: NON_LAST_LEVEL_SEEK_DATA, +16166: NON_LAST_LEVEL_SEEK_DATA_USEFUL_NO_FILTER, +16166: NON_LAST_LEVEL_SEEK_DATA_USEFUL_FILTER_MATCH, +16166: +16166: +16166: BLOCK_CHECKSUM_COMPUTE_COUNT, +16166: +16166: +16166: +16166: BLOCK_CHECKSUM_MISMATCH_COUNT, +16166: +16166: MULTIGET_COROUTINE_COUNT, +16166: +16166: +16166: READ_ASYNC_MICROS, +16166: +16166: ASYNC_READ_ERROR_COUNT, +16166: +16166: +16166: +16166: +16166: TABLE_OPEN_PREFETCH_TAIL_MISS, +16166: +16166: +16166: +16166: TABLE_OPEN_PREFETCH_TAIL_HIT, +16166: +16166: +16166: +16166: TIMESTAMP_FILTER_TABLE_CHECKED, +16166: +16166: TIMESTAMP_FILTER_TABLE_FILTERED, +16166: +16166: +16166: +16166: READAHEAD_TRIMMED, +16166: +16166: +16166: FIFO_MAX_SIZE_COMPACTIONS, +16166: FIFO_TTL_COMPACTIONS, +16166: +16166: +16166: PREFETCH_BYTES, +16166: +16166: +16166: PREFETCH_BYTES_USEFUL, +16166: +16166: +16166: PREFETCH_HITS, +16166: +16166: +16166: SST_FOOTER_CORRUPTION_COUNT, +16166: +16166: +16166: +16166: FILE_READ_CORRUPTION_RETRY_COUNT, +16166: FILE_READ_CORRUPTION_RETRY_SUCCESS_COUNT, +16166: +16166: TICKER_ENUM_MAX +16166: }; +16166: +16166: +16166: +16166: extern const std::vector> TickersNameMap; +16166: # 555 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: enum Histograms : uint32_t { +16166: DB_GET = 0, +16166: DB_WRITE, +16166: COMPACTION_TIME, +16166: COMPACTION_CPU_TIME, +16166: SUBCOMPACTION_SETUP_TIME, +16166: TABLE_SYNC_MICROS, +16166: COMPACTION_OUTFILE_SYNC_MICROS, +16166: WAL_FILE_SYNC_MICROS, +16166: MANIFEST_FILE_SYNC_MICROS, +16166: +16166: TABLE_OPEN_IO_MICROS, +16166: DB_MULTIGET, +16166: READ_BLOCK_COMPACTION_MICROS, +16166: READ_BLOCK_GET_MICROS, +16166: WRITE_RAW_BLOCK_MICROS, +16166: NUM_FILES_IN_SINGLE_COMPACTION, +16166: DB_SEEK, +16166: WRITE_STALL, +16166: +16166: SST_READ_MICROS, +16166: +16166: +16166: FILE_READ_FLUSH_MICROS, +16166: FILE_READ_COMPACTION_MICROS, +16166: FILE_READ_DB_OPEN_MICROS, +16166: +16166: +16166: FILE_READ_GET_MICROS, +16166: FILE_READ_MULTIGET_MICROS, +16166: FILE_READ_DB_ITERATOR_MICROS, +16166: FILE_READ_VERIFY_DB_CHECKSUM_MICROS, +16166: FILE_READ_VERIFY_FILE_CHECKSUMS_MICROS, +16166: +16166: +16166: SST_WRITE_MICROS, +16166: +16166: +16166: FILE_WRITE_FLUSH_MICROS, +16166: FILE_WRITE_COMPACTION_MICROS, +16166: FILE_WRITE_DB_OPEN_MICROS, +16166: +16166: +16166: NUM_SUBCOMPACTIONS_SCHEDULED, +16166: +16166: BYTES_PER_READ, +16166: BYTES_PER_WRITE, +16166: BYTES_PER_MULTIGET, +16166: +16166: COMPRESSION_TIMES_NANOS, +16166: DECOMPRESSION_TIMES_NANOS, +16166: +16166: +16166: READ_NUM_MERGE_OPERANDS, +16166: +16166: +16166: +16166: BLOB_DB_KEY_SIZE, +16166: +16166: BLOB_DB_VALUE_SIZE, +16166: +16166: +16166: BLOB_DB_WRITE_MICROS, +16166: +16166: BLOB_DB_GET_MICROS, +16166: +16166: BLOB_DB_MULTIGET_MICROS, +16166: +16166: +16166: BLOB_DB_SEEK_MICROS, +16166: +16166: BLOB_DB_NEXT_MICROS, +16166: +16166: BLOB_DB_PREV_MICROS, +16166: +16166: BLOB_DB_BLOB_FILE_WRITE_MICROS, +16166: +16166: BLOB_DB_BLOB_FILE_READ_MICROS, +16166: +16166: BLOB_DB_BLOB_FILE_SYNC_MICROS, +16166: +16166: BLOB_DB_COMPRESSION_MICROS, +16166: +16166: BLOB_DB_DECOMPRESSION_MICROS, +16166: +16166: FLUSH_TIME, +16166: SST_BATCH_SIZE, +16166: +16166: +16166: MULTIGET_IO_BATCH_SIZE, +16166: +16166: +16166: NUM_INDEX_AND_FILTER_BLOCKS_READ_PER_LEVEL, +16166: +16166: NUM_SST_READ_PER_LEVEL, +16166: +16166: NUM_LEVEL_READ_PER_MULTIGET, +16166: +16166: +16166: ERROR_HANDLER_AUTORESUME_RETRY_COUNT, +16166: +16166: +16166: ASYNC_READ_BYTES, +16166: POLL_WAIT_MICROS, +16166: +16166: +16166: PREFETCHED_BYTES_DISCARDED, +16166: +16166: +16166: ASYNC_PREFETCH_ABORT_MICROS, +16166: +16166: +16166: +16166: TABLE_OPEN_PREFETCH_TAIL_READ_BYTES, +16166: +16166: HISTOGRAM_ENUM_MAX +16166: }; +16166: +16166: extern const std::vector> HistogramsNameMap; +16166: +16166: struct HistogramData { +16166: double median; +16166: double percentile95; +16166: double percentile99; +16166: double average; +16166: double standard_deviation; +16166: +16166: +16166: double max = 0.0; +16166: uint64_t count = 0; +16166: uint64_t sum = 0; +16166: double min = 0.0; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: enum StatsLevel : uint8_t { +16166: +16166: kDisableAll, +16166: +16166: kExceptTickers = kDisableAll, +16166: +16166: kExceptHistogramOrTimers, +16166: +16166: kExceptTimers, +16166: +16166: +16166: kExceptDetailedTimers, +16166: +16166: +16166: kExceptTimeForMutex, +16166: +16166: +16166: +16166: kAll, +16166: }; +16166: # 727 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: class Statistics : public Customizable { +16166: public: +16166: ~Statistics() override {} +16166: static const char* Type() { return "Statistics"; } +16166: static Status CreateFromString(const ConfigOptions& opts, +16166: const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: +16166: +16166: const char* Name() const override { return ""; } +16166: virtual uint64_t getTickerCount(uint32_t tickerType) const = 0; +16166: virtual void histogramData(uint32_t type, +16166: HistogramData* const data) const = 0; +16166: virtual std::string getHistogramString(uint32_t ) const { return ""; } +16166: virtual void recordTick(uint32_t tickerType, uint64_t count = 1) = 0; +16166: virtual void setTickerCount(uint32_t tickerType, uint64_t count) = 0; +16166: virtual uint64_t getAndResetTickerCount(uint32_t tickerType) = 0; +16166: virtual void reportTimeToHistogram(uint32_t histogramType, uint64_t time) { +16166: if (get_stats_level() <= StatsLevel::kExceptTimers) { +16166: return; +16166: } +16166: recordInHistogram(histogramType, time); +16166: } +16166: +16166: +16166: +16166: virtual void measureTime(uint32_t , uint64_t ) { +16166: +16166: +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 3 4 +16166: (static_cast ( +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: false +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: "false" +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/statistics.h" +16166: ; +16166: } +16166: virtual void recordInHistogram(uint32_t histogramType, uint64_t time) { +16166: +16166: +16166: +16166: +16166: measureTime(histogramType, time); +16166: } +16166: +16166: +16166: virtual Status Reset() { return Status::NotSupported("Not implemented"); } +16166: +16166: using Customizable::ToString; +16166: +16166: virtual std::string ToString() const { +16166: +16166: return std::string("ToString(): not implemented"); +16166: } +16166: +16166: virtual bool getTickerMap(std::map*) const { +16166: +16166: return false; +16166: } +16166: +16166: +16166: virtual bool HistEnabledForType(uint32_t type) const { +16166: return type < HISTOGRAM_ENUM_MAX; +16166: } +16166: void set_stats_level(StatsLevel sl) { +16166: stats_level_.store(sl, std::memory_order_relaxed); +16166: } +16166: StatsLevel get_stats_level() const { +16166: return stats_level_.load(std::memory_order_relaxed); +16166: } +16166: +16166: private: +16166: std::atomic stats_level_{kExceptDetailedTimers}; +16166: }; +16166: +16166: +16166: std::shared_ptr CreateDBStatistics(); +16166: +16166: } +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class HistogramBucketMapper { +16166: public: +16166: HistogramBucketMapper(); +16166: +16166: +16166: size_t IndexForValue(uint64_t value) const; +16166: +16166: +16166: size_t BucketCount() const { return bucketValues_.size(); } +16166: +16166: uint64_t LastValue() const { return maxBucketValue_; } +16166: +16166: uint64_t FirstValue() const { return minBucketValue_; } +16166: +16166: uint64_t BucketLimit(const size_t bucketNumber) const { +16166: +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 3 4 +16166: (static_cast ( +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +16166: bucketNumber < BucketCount() +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +16166: "bucketNumber < BucketCount()" +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.h" +16166: ; +16166: return bucketValues_[bucketNumber]; +16166: } +16166: +16166: private: +16166: std::vector bucketValues_; +16166: uint64_t maxBucketValue_; +16166: uint64_t minBucketValue_; +16166: }; +16166: +16166: struct HistogramStat { +16166: HistogramStat(); +16166: ~HistogramStat() {} +16166: +16166: HistogramStat(const HistogramStat&) = delete; +16166: HistogramStat& operator=(const HistogramStat&) = delete; +16166: +16166: void Clear(); +16166: bool Empty() const; +16166: void Add(uint64_t value); +16166: void Merge(const HistogramStat& other); +16166: +16166: inline uint64_t min() const { return min_.load(std::memory_order_relaxed); } +16166: inline uint64_t max() const { return max_.load(std::memory_order_relaxed); } +16166: inline uint64_t num() const { return num_.load(std::memory_order_relaxed); } +16166: inline uint64_t sum() const { return sum_.load(std::memory_order_relaxed); } +16166: inline uint64_t sum_squares() const { +16166: return sum_squares_.load(std::memory_order_relaxed); +16166: } +16166: inline uint64_t bucket_at(size_t b) const { +16166: return buckets_[b].load(std::memory_order_relaxed); +16166: } +16166: +16166: double Median() const; +16166: double Percentile(double p) const; +16166: double Average() const; +16166: double StandardDeviation() const; +16166: void Data(HistogramData* const data) const; +16166: std::string ToString() const; +16166: +16166: +16166: +16166: +16166: std::atomic_uint_fast64_t min_; +16166: std::atomic_uint_fast64_t max_; +16166: std::atomic_uint_fast64_t num_; +16166: std::atomic_uint_fast64_t sum_; +16166: std::atomic_uint_fast64_t sum_squares_; +16166: std::atomic_uint_fast64_t buckets_[109]; +16166: const uint64_t num_buckets_; +16166: }; +16166: +16166: class Histogram { +16166: public: +16166: Histogram() {} +16166: virtual ~Histogram(){} +16166: +16166: virtual void Clear() = 0; +16166: virtual bool Empty() const = 0; +16166: virtual void Add(uint64_t value) = 0; +16166: virtual void Merge(const Histogram&) = 0; +16166: +16166: virtual std::string ToString() const = 0; +16166: virtual const char* Name() const = 0; +16166: virtual uint64_t min() const = 0; +16166: virtual uint64_t max() const = 0; +16166: virtual uint64_t num() const = 0; +16166: virtual double Median() const = 0; +16166: virtual double Percentile(double p) const = 0; +16166: virtual double Average() const = 0; +16166: virtual double StandardDeviation() const = 0; +16166: virtual void Data(HistogramData* const data) const = 0; +16166: }; +16166: +16166: class HistogramImpl : public Histogram { +16166: public: +16166: HistogramImpl() { Clear(); } +16166: +16166: HistogramImpl(const HistogramImpl&) = delete; +16166: HistogramImpl& operator=(const HistogramImpl&) = delete; +16166: +16166: void Clear() override; +16166: bool Empty() const override; +16166: void Add(uint64_t value) override; +16166: void Merge(const Histogram& other) override; +16166: void Merge(const HistogramImpl& other); +16166: +16166: std::string ToString() const override; +16166: const char* Name() const override { return "HistogramImpl"; } +16166: uint64_t min() const override { return stats_.min(); } +16166: uint64_t max() const override { return stats_.max(); } +16166: uint64_t num() const override { return stats_.num(); } +16166: double Median() const override; +16166: double Percentile(double p) const override; +16166: double Average() const override; +16166: double StandardDeviation() const override; +16166: void Data(HistogramData* const data) const override; +16166: +16166: virtual ~HistogramImpl() {} +16166: +16166: inline HistogramStat& TEST_GetStats() { return stats_; } +16166: +16166: private: +16166: HistogramStat stats_; +16166: std::mutex mutex_; +16166: }; +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/likely.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/port/likely.h" +16166: +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 2 +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/lang.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/port/lang.h" +16166: constexpr bool kMustFreeHeapAllocations = false; +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 2 +16166: +16166: +16166: static_assert(true, "Semicolon required"); +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: template +16166: inline T BottomNBits(T v, int nbits) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: (static_cast ( +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: nbits >= 0 +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: "nbits >= 0" +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: ; +16166: +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: (static_cast ( +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: nbits < int{8 * sizeof(T)} +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: "nbits < int{8 * sizeof(T)}" +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: ; +16166: # 44 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: return static_cast(v & ((T{1} << nbits) - 1)); +16166: } +16166: +16166: +16166: +16166: template +16166: inline int FloorLog2(T v) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: (static_cast ( +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: v > 0 +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: "v > 0" +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: ; +16166: # 74 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +16166: if (sizeof(T) <= sizeof(unsigned int)) { +16166: int lz = __builtin_clz(static_cast(v)); +16166: return int{sizeof(unsigned int)} * 8 - 1 - lz; +16166: } else if (sizeof(T) <= sizeof(unsigned long)) { +16166: int lz = __builtin_clzl(static_cast(v)); +16166: return int{sizeof(unsigned long)} * 8 - 1 - lz; +16166: } else { +16166: int lz = __builtin_clzll(static_cast(v)); +16166: return int{sizeof(unsigned long long)} * 8 - 1 - lz; +16166: } +16166: +16166: } +16166: +16166: +16166: template +16166: constexpr int ConstexprFloorLog2(T v) { +16166: +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: int rv = 0; +16166: while (v > T{1}) { +16166: ++rv; +16166: v >>= 1; +16166: } +16166: return rv; +16166: } +16166: +16166: +16166: template +16166: inline int CountTrailingZeroBits(T v) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: +16166: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: (static_cast ( +16166: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: v != 0 +16166: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: "v != 0" +16166: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 106 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: ; +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +16166: if (sizeof(T) <= sizeof(unsigned int)) { +16166: return __builtin_ctz(static_cast(v)); +16166: } else if (sizeof(T) <= sizeof(unsigned long)) { +16166: return __builtin_ctzl(static_cast(v)); +16166: } else { +16166: return __builtin_ctzll(static_cast(v)); +16166: } +16166: +16166: } +16166: # 172 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: template +16166: inline int BitsSetToOne(T v) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: # 209 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +16166: if (sizeof(T) < sizeof(unsigned int)) { +16166: +16166: constexpr auto mm = 8 * sizeof(unsigned int) - 1; +16166: +16166: constexpr unsigned int m = (1U << ((8 * sizeof(T)) & mm)) - 1; +16166: return __builtin_popcount(static_cast(v) & m); +16166: } else if (sizeof(T) == sizeof(unsigned int)) { +16166: return __builtin_popcount(static_cast(v)); +16166: } else if (sizeof(T) <= sizeof(unsigned long)) { +16166: return __builtin_popcountl(static_cast(v)); +16166: } else { +16166: return __builtin_popcountll(static_cast(v)); +16166: } +16166: +16166: } +16166: +16166: template +16166: inline int BitParity(T v) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: +16166: +16166: +16166: +16166: +16166: static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big"); +16166: if (sizeof(T) <= sizeof(unsigned int)) { +16166: +16166: return __builtin_parity(static_cast(v)); +16166: } else if (sizeof(T) <= sizeof(unsigned long)) { +16166: return __builtin_parityl(static_cast(v)); +16166: } else { +16166: return __builtin_parityll(static_cast(v)); +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: inline T EndianSwapValue(T v) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: if (sizeof(T) == 2) { +16166: return static_cast(__builtin_bswap16(static_cast(v))); +16166: } else if (sizeof(T) == 4) { +16166: return static_cast(__builtin_bswap32(static_cast(v))); +16166: } else if (sizeof(T) == 8) { +16166: return static_cast(__builtin_bswap64(static_cast(v))); +16166: } +16166: +16166: +16166: T ret_val = 0; +16166: for (std::size_t i = 0; i < sizeof(T); ++i) { +16166: ret_val |= ((v >> (8 * i)) & 0xff) << (8 * (sizeof(T) - 1 - i)); +16166: } +16166: return ret_val; +16166: } +16166: +16166: +16166: template +16166: inline T ReverseBits(T v) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: +16166: T r = EndianSwapValue(v); +16166: const T kHighestByte = T{1} << ((sizeof(T) - 1) * 8); +16166: const T kEveryByte = kHighestByte | (kHighestByte / 255); +16166: +16166: r = ((r & (kEveryByte * 0x0f)) << 4) | ((r >> 4) & (kEveryByte * 0x0f)); +16166: r = ((r & (kEveryByte * 0x33)) << 2) | ((r >> 2) & (kEveryByte * 0x33)); +16166: r = ((r & (kEveryByte * 0x55)) << 1) | ((r >> 1) & (kEveryByte * 0x55)); +16166: +16166: return r; +16166: } +16166: # 317 "/build/reproducible-path/rocksdb-9.10.0/util/math.h" +16166: template +16166: inline T DownwardInvolution(T v) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: static_assert(sizeof(T) <= 8, "only supported up to 64 bits"); +16166: +16166: uint64_t r = static_cast(v); +16166: if constexpr (sizeof(T) > 4) { +16166: r ^= r >> 32; +16166: } +16166: if constexpr (sizeof(T) > 2) { +16166: r ^= (r & 0xffff0000ffff0000U) >> 16; +16166: } +16166: if constexpr (sizeof(T) > 1) { +16166: r ^= (r & 0xff00ff00ff00ff00U) >> 8; +16166: } +16166: r ^= (r & 0xf0f0f0f0f0f0f0f0U) >> 4; +16166: r ^= (r & 0xccccccccccccccccU) >> 2; +16166: r ^= (r & 0xaaaaaaaaaaaaaaaaU) >> 1; +16166: return static_cast(r); +16166: } +16166: +16166: +16166: +16166: template +16166: inline std::conditional_t BitwiseAnd(A a, B b) { +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(std::is_integral_v, "non-integral type"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: static_assert(!std::is_reference_v, "use std::remove_reference_t"); +16166: using Smaller = std::conditional_t; +16166: return static_cast(a & b); +16166: } +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/random" 1 3 +16166: # 32 "/usr/include/c++/14/random" 3 +16166: +16166: # 33 "/usr/include/c++/14/random" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cmath" 1 3 +16166: # 39 "/usr/include/c++/14/cmath" 3 +16166: +16166: # 40 "/usr/include/c++/14/cmath" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/math.h" 1 3 4 +16166: # 27 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +16166: # 28 "/usr/include/math.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 34 "/usr/include/math.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libm-simd-decl-stubs.h" 1 3 4 +16166: # 28 "/usr/include/arm-linux-gnueabihf/bits/math-vector.h" 2 3 4 +16166: # 41 "/usr/include/math.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/floatn.h" 1 3 4 +16166: # 44 "/usr/include/math.h" 2 3 4 +16166: # 152 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/flt-eval-method.h" 1 3 4 +16166: # 153 "/usr/include/math.h" 2 3 4 +16166: # 163 "/usr/include/math.h" 3 4 +16166: typedef float float_t; +16166: typedef double double_t; +16166: # 204 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-logb.h" 1 3 4 +16166: # 205 "/usr/include/math.h" 2 3 4 +16166: # 247 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/fp-fast.h" 1 3 4 +16166: # 248 "/usr/include/math.h" 2 3 4 +16166: +16166: +16166: +16166: enum +16166: { +16166: FP_INT_UPWARD = +16166: +16166: 0, +16166: FP_INT_DOWNWARD = +16166: +16166: 1, +16166: FP_INT_TOWARDZERO = +16166: +16166: 2, +16166: FP_INT_TONEARESTFROMZERO = +16166: +16166: 3, +16166: FP_INT_TONEAREST = +16166: +16166: 4, +16166: }; +16166: # 312 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 +16166: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 +16166: extern int __fpclassify (double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __signbit (double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern int __isinf (double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __finite (double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __isnan (double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __iseqsig (double __x, double __y) noexcept (true); +16166: +16166: +16166: extern int __issignaling (double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: # 313 "/usr/include/math.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +16166: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern double acos (double __x) noexcept (true); extern double __acos (double __x) noexcept (true); +16166: +16166: extern double asin (double __x) noexcept (true); extern double __asin (double __x) noexcept (true); +16166: +16166: extern double atan (double __x) noexcept (true); extern double __atan (double __x) noexcept (true); +16166: +16166: extern double atan2 (double __y, double __x) noexcept (true); extern double __atan2 (double __y, double __x) noexcept (true); +16166: +16166: +16166: extern double cos (double __x) noexcept (true); extern double __cos (double __x) noexcept (true); +16166: +16166: extern double sin (double __x) noexcept (true); extern double __sin (double __x) noexcept (true); +16166: +16166: extern double tan (double __x) noexcept (true); extern double __tan (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double cosh (double __x) noexcept (true); extern double __cosh (double __x) noexcept (true); +16166: +16166: extern double sinh (double __x) noexcept (true); extern double __sinh (double __x) noexcept (true); +16166: +16166: extern double tanh (double __x) noexcept (true); extern double __tanh (double __x) noexcept (true); +16166: +16166: +16166: +16166: extern void sincos (double __x, double *__sinx, double *__cosx) noexcept (true); extern void __sincos (double __x, double *__sinx, double *__cosx) noexcept (true) +16166: ; +16166: +16166: +16166: +16166: +16166: extern double acosh (double __x) noexcept (true); extern double __acosh (double __x) noexcept (true); +16166: +16166: extern double asinh (double __x) noexcept (true); extern double __asinh (double __x) noexcept (true); +16166: +16166: extern double atanh (double __x) noexcept (true); extern double __atanh (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern double exp (double __x) noexcept (true); extern double __exp (double __x) noexcept (true); +16166: +16166: +16166: extern double frexp (double __x, int *__exponent) noexcept (true); extern double __frexp (double __x, int *__exponent) noexcept (true); +16166: +16166: +16166: extern double ldexp (double __x, int __exponent) noexcept (true); extern double __ldexp (double __x, int __exponent) noexcept (true); +16166: +16166: +16166: extern double log (double __x) noexcept (true); extern double __log (double __x) noexcept (true); +16166: +16166: +16166: extern double log10 (double __x) noexcept (true); extern double __log10 (double __x) noexcept (true); +16166: +16166: +16166: extern double modf (double __x, double *__iptr) noexcept (true); extern double __modf (double __x, double *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern double exp10 (double __x) noexcept (true); extern double __exp10 (double __x) noexcept (true); +16166: +16166: +16166: extern double exp2m1 (double __x) noexcept (true); extern double __exp2m1 (double __x) noexcept (true); +16166: +16166: +16166: extern double exp10m1 (double __x) noexcept (true); extern double __exp10m1 (double __x) noexcept (true); +16166: +16166: +16166: extern double log2p1 (double __x) noexcept (true); extern double __log2p1 (double __x) noexcept (true); +16166: +16166: +16166: extern double log10p1 (double __x) noexcept (true); extern double __log10p1 (double __x) noexcept (true); +16166: +16166: +16166: extern double logp1 (double __x) noexcept (true); extern double __logp1 (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double expm1 (double __x) noexcept (true); extern double __expm1 (double __x) noexcept (true); +16166: +16166: +16166: extern double log1p (double __x) noexcept (true); extern double __log1p (double __x) noexcept (true); +16166: +16166: +16166: extern double logb (double __x) noexcept (true); extern double __logb (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double exp2 (double __x) noexcept (true); extern double __exp2 (double __x) noexcept (true); +16166: +16166: +16166: extern double log2 (double __x) noexcept (true); extern double __log2 (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double pow (double __x, double __y) noexcept (true); extern double __pow (double __x, double __y) noexcept (true); +16166: +16166: +16166: extern double sqrt (double __x) noexcept (true); extern double __sqrt (double __x) noexcept (true); +16166: +16166: +16166: +16166: extern double hypot (double __x, double __y) noexcept (true); extern double __hypot (double __x, double __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double cbrt (double __x) noexcept (true); extern double __cbrt (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double ceil (double __x) noexcept (true) __attribute__ ((__const__)); extern double __ceil (double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); extern double __fabs (double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double floor (double __x) noexcept (true) __attribute__ ((__const__)); extern double __floor (double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fmod (double __x, double __y) noexcept (true); extern double __fmod (double __x, double __y) noexcept (true); +16166: # 198 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern int finite (double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern double drem (double __x, double __y) noexcept (true); extern double __drem (double __x, double __y) noexcept (true); +16166: +16166: +16166: +16166: extern double significand (double __x) noexcept (true); extern double __significand (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern double nan (const char *__tagb) noexcept (true); extern double __nan (const char *__tagb) noexcept (true); +16166: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern double j0 (double) noexcept (true); extern double __j0 (double) noexcept (true); +16166: extern double j1 (double) noexcept (true); extern double __j1 (double) noexcept (true); +16166: extern double jn (int, double) noexcept (true); extern double __jn (int, double) noexcept (true); +16166: extern double y0 (double) noexcept (true); extern double __y0 (double) noexcept (true); +16166: extern double y1 (double) noexcept (true); extern double __y1 (double) noexcept (true); +16166: extern double yn (int, double) noexcept (true); extern double __yn (int, double) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern double erf (double) noexcept (true); extern double __erf (double) noexcept (true); +16166: extern double erfc (double) noexcept (true); extern double __erfc (double) noexcept (true); +16166: extern double lgamma (double) noexcept (true); extern double __lgamma (double) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double tgamma (double) noexcept (true); extern double __tgamma (double) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern double gamma (double) noexcept (true); extern double __gamma (double) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double lgamma_r (double, int *__signgamp) noexcept (true); extern double __lgamma_r (double, int *__signgamp) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double rint (double __x) noexcept (true); extern double __rint (double __x) noexcept (true); +16166: +16166: +16166: extern double nextafter (double __x, double __y) noexcept (true); extern double __nextafter (double __x, double __y) noexcept (true); +16166: +16166: extern double nexttoward (double __x, long double __y) noexcept (true); extern double __nexttoward (double __x, long double __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double nextdown (double __x) noexcept (true); extern double __nextdown (double __x) noexcept (true); +16166: +16166: extern double nextup (double __x) noexcept (true); extern double __nextup (double __x) noexcept (true); +16166: +16166: +16166: +16166: extern double remainder (double __x, double __y) noexcept (true); extern double __remainder (double __x, double __y) noexcept (true); +16166: +16166: +16166: +16166: extern double scalbn (double __x, int __n) noexcept (true); extern double __scalbn (double __x, int __n) noexcept (true); +16166: +16166: +16166: +16166: extern int ilogb (double __x) noexcept (true); extern int __ilogb (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long int llogb (double __x) noexcept (true); extern long int __llogb (double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double scalbln (double __x, long int __n) noexcept (true); extern double __scalbln (double __x, long int __n) noexcept (true); +16166: +16166: +16166: +16166: extern double nearbyint (double __x) noexcept (true); extern double __nearbyint (double __x) noexcept (true); +16166: +16166: +16166: +16166: extern double round (double __x) noexcept (true) __attribute__ ((__const__)); extern double __round (double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern double trunc (double __x) noexcept (true) __attribute__ ((__const__)); extern double __trunc (double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern double remquo (double __x, double __y, int *__quo) noexcept (true); extern double __remquo (double __x, double __y, int *__quo) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int lrint (double __x) noexcept (true); extern long int __lrint (double __x) noexcept (true); +16166: __extension__ +16166: extern long long int llrint (double __x) noexcept (true); extern long long int __llrint (double __x) noexcept (true); +16166: +16166: +16166: +16166: extern long int lround (double __x) noexcept (true); extern long int __lround (double __x) noexcept (true); +16166: __extension__ +16166: extern long long int llround (double __x) noexcept (true); extern long long int __llround (double __x) noexcept (true); +16166: +16166: +16166: +16166: extern double fdim (double __x, double __y) noexcept (true); extern double __fdim (double __x, double __y) noexcept (true); +16166: +16166: +16166: +16166: extern double fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern double fma (double __x, double __y, double __z) noexcept (true); extern double __fma (double __x, double __y, double __z) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern double roundeven (double __x) noexcept (true) __attribute__ ((__const__)); extern double __roundeven (double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: extern int canonicalize (double *__cx, const double *__x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern double fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fmaximum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern double fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); extern double __fminimum_mag_num (double __x, double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int totalorder (const double *__x, const double *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern int totalordermag (const double *__x, const double *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern double getpayload (const double *__x) noexcept (true); extern double __getpayload (const double *__x) noexcept (true); +16166: +16166: +16166: extern int setpayload (double *__x, double __payload) noexcept (true); +16166: +16166: +16166: extern int setpayloadsig (double *__x, double __payload) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern double scalb (double __x, double __n) noexcept (true); extern double __scalb (double __x, double __n) noexcept (true); +16166: # 314 "/usr/include/math.h" 2 3 4 +16166: # 329 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 +16166: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 +16166: extern int __fpclassifyf (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __signbitf (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern int __isinff (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __finitef (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __isnanf (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __iseqsigf (float __x, float __y) noexcept (true); +16166: +16166: +16166: extern int __issignalingf (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: # 330 "/usr/include/math.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +16166: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern float acosf (float __x) noexcept (true); extern float __acosf (float __x) noexcept (true); +16166: +16166: extern float asinf (float __x) noexcept (true); extern float __asinf (float __x) noexcept (true); +16166: +16166: extern float atanf (float __x) noexcept (true); extern float __atanf (float __x) noexcept (true); +16166: +16166: extern float atan2f (float __y, float __x) noexcept (true); extern float __atan2f (float __y, float __x) noexcept (true); +16166: +16166: +16166: extern float cosf (float __x) noexcept (true); extern float __cosf (float __x) noexcept (true); +16166: +16166: extern float sinf (float __x) noexcept (true); extern float __sinf (float __x) noexcept (true); +16166: +16166: extern float tanf (float __x) noexcept (true); extern float __tanf (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float coshf (float __x) noexcept (true); extern float __coshf (float __x) noexcept (true); +16166: +16166: extern float sinhf (float __x) noexcept (true); extern float __sinhf (float __x) noexcept (true); +16166: +16166: extern float tanhf (float __x) noexcept (true); extern float __tanhf (float __x) noexcept (true); +16166: +16166: +16166: +16166: extern void sincosf (float __x, float *__sinx, float *__cosx) noexcept (true); extern void __sincosf (float __x, float *__sinx, float *__cosx) noexcept (true) +16166: ; +16166: +16166: +16166: +16166: +16166: extern float acoshf (float __x) noexcept (true); extern float __acoshf (float __x) noexcept (true); +16166: +16166: extern float asinhf (float __x) noexcept (true); extern float __asinhf (float __x) noexcept (true); +16166: +16166: extern float atanhf (float __x) noexcept (true); extern float __atanhf (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern float expf (float __x) noexcept (true); extern float __expf (float __x) noexcept (true); +16166: +16166: +16166: extern float frexpf (float __x, int *__exponent) noexcept (true); extern float __frexpf (float __x, int *__exponent) noexcept (true); +16166: +16166: +16166: extern float ldexpf (float __x, int __exponent) noexcept (true); extern float __ldexpf (float __x, int __exponent) noexcept (true); +16166: +16166: +16166: extern float logf (float __x) noexcept (true); extern float __logf (float __x) noexcept (true); +16166: +16166: +16166: extern float log10f (float __x) noexcept (true); extern float __log10f (float __x) noexcept (true); +16166: +16166: +16166: extern float modff (float __x, float *__iptr) noexcept (true); extern float __modff (float __x, float *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern float exp10f (float __x) noexcept (true); extern float __exp10f (float __x) noexcept (true); +16166: +16166: +16166: extern float exp2m1f (float __x) noexcept (true); extern float __exp2m1f (float __x) noexcept (true); +16166: +16166: +16166: extern float exp10m1f (float __x) noexcept (true); extern float __exp10m1f (float __x) noexcept (true); +16166: +16166: +16166: extern float log2p1f (float __x) noexcept (true); extern float __log2p1f (float __x) noexcept (true); +16166: +16166: +16166: extern float log10p1f (float __x) noexcept (true); extern float __log10p1f (float __x) noexcept (true); +16166: +16166: +16166: extern float logp1f (float __x) noexcept (true); extern float __logp1f (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float expm1f (float __x) noexcept (true); extern float __expm1f (float __x) noexcept (true); +16166: +16166: +16166: extern float log1pf (float __x) noexcept (true); extern float __log1pf (float __x) noexcept (true); +16166: +16166: +16166: extern float logbf (float __x) noexcept (true); extern float __logbf (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float exp2f (float __x) noexcept (true); extern float __exp2f (float __x) noexcept (true); +16166: +16166: +16166: extern float log2f (float __x) noexcept (true); extern float __log2f (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern float powf (float __x, float __y) noexcept (true); extern float __powf (float __x, float __y) noexcept (true); +16166: +16166: +16166: extern float sqrtf (float __x) noexcept (true); extern float __sqrtf (float __x) noexcept (true); +16166: +16166: +16166: +16166: extern float hypotf (float __x, float __y) noexcept (true); extern float __hypotf (float __x, float __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float cbrtf (float __x) noexcept (true); extern float __cbrtf (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern float ceilf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __ceilf (float __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fabsf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __fabsf (float __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __floorf (float __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fmodf (float __x, float __y) noexcept (true); extern float __fmodf (float __x, float __y) noexcept (true); +16166: # 192 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern int isinff (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int finitef (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern float dremf (float __x, float __y) noexcept (true); extern float __dremf (float __x, float __y) noexcept (true); +16166: +16166: +16166: +16166: extern float significandf (float __x) noexcept (true); extern float __significandf (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern float copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern float nanf (const char *__tagb) noexcept (true); extern float __nanf (const char *__tagb) noexcept (true); +16166: # 228 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern int isnanf (float __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: +16166: extern float j0f (float) noexcept (true); extern float __j0f (float) noexcept (true); +16166: extern float j1f (float) noexcept (true); extern float __j1f (float) noexcept (true); +16166: extern float jnf (int, float) noexcept (true); extern float __jnf (int, float) noexcept (true); +16166: extern float y0f (float) noexcept (true); extern float __y0f (float) noexcept (true); +16166: extern float y1f (float) noexcept (true); extern float __y1f (float) noexcept (true); +16166: extern float ynf (int, float) noexcept (true); extern float __ynf (int, float) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern float erff (float) noexcept (true); extern float __erff (float) noexcept (true); +16166: extern float erfcf (float) noexcept (true); extern float __erfcf (float) noexcept (true); +16166: extern float lgammaf (float) noexcept (true); extern float __lgammaf (float) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float tgammaf (float) noexcept (true); extern float __tgammaf (float) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern float gammaf (float) noexcept (true); extern float __gammaf (float) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern float lgammaf_r (float, int *__signgamp) noexcept (true); extern float __lgammaf_r (float, int *__signgamp) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern float rintf (float __x) noexcept (true); extern float __rintf (float __x) noexcept (true); +16166: +16166: +16166: extern float nextafterf (float __x, float __y) noexcept (true); extern float __nextafterf (float __x, float __y) noexcept (true); +16166: +16166: extern float nexttowardf (float __x, long double __y) noexcept (true); extern float __nexttowardf (float __x, long double __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float nextdownf (float __x) noexcept (true); extern float __nextdownf (float __x) noexcept (true); +16166: +16166: extern float nextupf (float __x) noexcept (true); extern float __nextupf (float __x) noexcept (true); +16166: +16166: +16166: +16166: extern float remainderf (float __x, float __y) noexcept (true); extern float __remainderf (float __x, float __y) noexcept (true); +16166: +16166: +16166: +16166: extern float scalbnf (float __x, int __n) noexcept (true); extern float __scalbnf (float __x, int __n) noexcept (true); +16166: +16166: +16166: +16166: extern int ilogbf (float __x) noexcept (true); extern int __ilogbf (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long int llogbf (float __x) noexcept (true); extern long int __llogbf (float __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float scalblnf (float __x, long int __n) noexcept (true); extern float __scalblnf (float __x, long int __n) noexcept (true); +16166: +16166: +16166: +16166: extern float nearbyintf (float __x) noexcept (true); extern float __nearbyintf (float __x) noexcept (true); +16166: +16166: +16166: +16166: extern float roundf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundf (float __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern float truncf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __truncf (float __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern float remquof (float __x, float __y, int *__quo) noexcept (true); extern float __remquof (float __x, float __y, int *__quo) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int lrintf (float __x) noexcept (true); extern long int __lrintf (float __x) noexcept (true); +16166: __extension__ +16166: extern long long int llrintf (float __x) noexcept (true); extern long long int __llrintf (float __x) noexcept (true); +16166: +16166: +16166: +16166: extern long int lroundf (float __x) noexcept (true); extern long int __lroundf (float __x) noexcept (true); +16166: __extension__ +16166: extern long long int llroundf (float __x) noexcept (true); extern long long int __llroundf (float __x) noexcept (true); +16166: +16166: +16166: +16166: extern float fdimf (float __x, float __y) noexcept (true); extern float __fdimf (float __x, float __y) noexcept (true); +16166: +16166: +16166: +16166: extern float fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern float fmaf (float __x, float __y, float __z) noexcept (true); extern float __fmaf (float __x, float __y, float __z) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern float roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); extern float __roundevenf (float __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: extern int canonicalizef (float *__cx, const float *__x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern float fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern float fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimumf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_magf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fmaximum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern float fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); extern float __fminimum_mag_numf (float __x, float __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int totalorderf (const float *__x, const float *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern int totalordermagf (const float *__x, const float *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern float getpayloadf (const float *__x) noexcept (true); extern float __getpayloadf (const float *__x) noexcept (true); +16166: +16166: +16166: extern int setpayloadf (float *__x, float __payload) noexcept (true); +16166: +16166: +16166: extern int setpayloadsigf (float *__x, float __payload) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern float scalbf (float __x, float __n) noexcept (true); extern float __scalbf (float __x, float __n) noexcept (true); +16166: # 331 "/usr/include/math.h" 2 3 4 +16166: # 398 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 1 3 4 +16166: # 20 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-helper-functions.h" 3 4 +16166: extern int __fpclassifyl (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __signbitl (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern int __isinfl (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __finitel (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __isnanl (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern int __iseqsigl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern int __issignalingl (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: # 399 "/usr/include/math.h" 2 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +16166: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern long double acosl (long double __x) noexcept (true); extern long double __acosl (long double __x) noexcept (true); +16166: +16166: extern long double asinl (long double __x) noexcept (true); extern long double __asinl (long double __x) noexcept (true); +16166: +16166: extern long double atanl (long double __x) noexcept (true); extern long double __atanl (long double __x) noexcept (true); +16166: +16166: extern long double atan2l (long double __y, long double __x) noexcept (true); extern long double __atan2l (long double __y, long double __x) noexcept (true); +16166: +16166: +16166: extern long double cosl (long double __x) noexcept (true); extern long double __cosl (long double __x) noexcept (true); +16166: +16166: extern long double sinl (long double __x) noexcept (true); extern long double __sinl (long double __x) noexcept (true); +16166: +16166: extern long double tanl (long double __x) noexcept (true); extern long double __tanl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long double coshl (long double __x) noexcept (true); extern long double __coshl (long double __x) noexcept (true); +16166: +16166: extern long double sinhl (long double __x) noexcept (true); extern long double __sinhl (long double __x) noexcept (true); +16166: +16166: extern long double tanhl (long double __x) noexcept (true); extern long double __tanhl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: extern long double acoshl (long double __x) noexcept (true); extern long double __acoshl (long double __x) noexcept (true); +16166: +16166: extern long double asinhl (long double __x) noexcept (true); extern long double __asinhl (long double __x) noexcept (true); +16166: +16166: extern long double atanhl (long double __x) noexcept (true); extern long double __atanhl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern long double expl (long double __x) noexcept (true); extern long double __expl (long double __x) noexcept (true); +16166: +16166: +16166: extern long double frexpl (long double __x, int *__exponent) noexcept (true); extern long double __frexpl (long double __x, int *__exponent) noexcept (true); +16166: +16166: +16166: extern long double ldexpl (long double __x, int __exponent) noexcept (true); extern long double __ldexpl (long double __x, int __exponent) noexcept (true); +16166: +16166: +16166: extern long double logl (long double __x) noexcept (true); extern long double __logl (long double __x) noexcept (true); +16166: +16166: +16166: extern long double log10l (long double __x) noexcept (true); extern long double __log10l (long double __x) noexcept (true); +16166: +16166: +16166: 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))); +16166: +16166: +16166: +16166: extern long double exp10l (long double __x) noexcept (true); extern long double __exp10l (long double __x) noexcept (true); +16166: +16166: +16166: extern long double exp2m1l (long double __x) noexcept (true); extern long double __exp2m1l (long double __x) noexcept (true); +16166: +16166: +16166: extern long double exp10m1l (long double __x) noexcept (true); extern long double __exp10m1l (long double __x) noexcept (true); +16166: +16166: +16166: extern long double log2p1l (long double __x) noexcept (true); extern long double __log2p1l (long double __x) noexcept (true); +16166: +16166: +16166: extern long double log10p1l (long double __x) noexcept (true); extern long double __log10p1l (long double __x) noexcept (true); +16166: +16166: +16166: extern long double logp1l (long double __x) noexcept (true); extern long double __logp1l (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long double expm1l (long double __x) noexcept (true); extern long double __expm1l (long double __x) noexcept (true); +16166: +16166: +16166: extern long double log1pl (long double __x) noexcept (true); extern long double __log1pl (long double __x) noexcept (true); +16166: +16166: +16166: extern long double logbl (long double __x) noexcept (true); extern long double __logbl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long double exp2l (long double __x) noexcept (true); extern long double __exp2l (long double __x) noexcept (true); +16166: +16166: +16166: extern long double log2l (long double __x) noexcept (true); extern long double __log2l (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long double powl (long double __x, long double __y) noexcept (true); extern long double __powl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern long double sqrtl (long double __x) noexcept (true); extern long double __sqrtl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: extern long double hypotl (long double __x, long double __y) noexcept (true); extern long double __hypotl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long double cbrtl (long double __x) noexcept (true); extern long double __cbrtl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long double ceill (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __ceill (long double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __fabsl (long double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double floorl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __floorl (long double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fmodl (long double __x, long double __y) noexcept (true); extern long double __fmodl (long double __x, long double __y) noexcept (true); +16166: # 192 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern int isinfl (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int finitel (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: extern long double dreml (long double __x, long double __y) noexcept (true); extern long double __dreml (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: +16166: extern long double significandl (long double __x) noexcept (true); extern long double __significandl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long double copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern long double nanl (const char *__tagb) noexcept (true); extern long double __nanl (const char *__tagb) noexcept (true); +16166: # 228 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern int isnanl (long double __value) noexcept (true) +16166: __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: +16166: extern long double j0l (long double) noexcept (true); extern long double __j0l (long double) noexcept (true); +16166: extern long double j1l (long double) noexcept (true); extern long double __j1l (long double) noexcept (true); +16166: extern long double jnl (int, long double) noexcept (true); extern long double __jnl (int, long double) noexcept (true); +16166: extern long double y0l (long double) noexcept (true); extern long double __y0l (long double) noexcept (true); +16166: extern long double y1l (long double) noexcept (true); extern long double __y1l (long double) noexcept (true); +16166: extern long double ynl (int, long double) noexcept (true); extern long double __ynl (int, long double) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern long double erfl (long double) noexcept (true); extern long double __erfl (long double) noexcept (true); +16166: extern long double erfcl (long double) noexcept (true); extern long double __erfcl (long double) noexcept (true); +16166: extern long double lgammal (long double) noexcept (true); extern long double __lgammal (long double) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long double tgammal (long double) noexcept (true); extern long double __tgammal (long double) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern long double gammal (long double) noexcept (true); extern long double __gammal (long double) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long double lgammal_r (long double, int *__signgamp) noexcept (true); extern long double __lgammal_r (long double, int *__signgamp) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long double rintl (long double __x) noexcept (true); extern long double __rintl (long double __x) noexcept (true); +16166: +16166: +16166: extern long double nextafterl (long double __x, long double __y) noexcept (true); extern long double __nextafterl (long double __x, long double __y) noexcept (true); +16166: +16166: extern long double nexttowardl (long double __x, long double __y) noexcept (true); extern long double __nexttowardl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long double nextdownl (long double __x) noexcept (true); extern long double __nextdownl (long double __x) noexcept (true); +16166: +16166: extern long double nextupl (long double __x) noexcept (true); extern long double __nextupl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: extern long double remainderl (long double __x, long double __y) noexcept (true); extern long double __remainderl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: +16166: extern long double scalbnl (long double __x, int __n) noexcept (true); extern long double __scalbnl (long double __x, int __n) noexcept (true); +16166: +16166: +16166: +16166: extern int ilogbl (long double __x) noexcept (true); extern int __ilogbl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long int llogbl (long double __x) noexcept (true); extern long int __llogbl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long double scalblnl (long double __x, long int __n) noexcept (true); extern long double __scalblnl (long double __x, long int __n) noexcept (true); +16166: +16166: +16166: +16166: extern long double nearbyintl (long double __x) noexcept (true); extern long double __nearbyintl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: extern long double roundl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundl (long double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern long double truncl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __truncl (long double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: 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); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int lrintl (long double __x) noexcept (true); extern long int __lrintl (long double __x) noexcept (true); +16166: __extension__ +16166: extern long long int llrintl (long double __x) noexcept (true); extern long long int __llrintl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: extern long int lroundl (long double __x) noexcept (true); extern long int __lroundl (long double __x) noexcept (true); +16166: __extension__ +16166: extern long long int llroundl (long double __x) noexcept (true); extern long long int __llroundl (long double __x) noexcept (true); +16166: +16166: +16166: +16166: extern long double fdiml (long double __x, long double __y) noexcept (true); extern long double __fdiml (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: +16166: extern long double fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: 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); +16166: +16166: +16166: +16166: +16166: extern long double roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); extern long double __roundevenl (long double __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: extern int canonicalizel (long double *__cx, const long double *__x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long double fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern long double fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimuml (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_magl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fmaximum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern long double fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); extern long double __fminimum_mag_numl (long double __x, long double __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int totalorderl (const long double *__x, const long double *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern int totalordermagl (const long double *__x, const long double *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern long double getpayloadl (const long double *__x) noexcept (true); extern long double __getpayloadl (const long double *__x) noexcept (true); +16166: +16166: +16166: extern int setpayloadl (long double *__x, long double __payload) noexcept (true); +16166: +16166: +16166: extern int setpayloadsigl (long double *__x, long double __payload) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long double scalbl (long double __x, long double __n) noexcept (true); extern long double __scalbl (long double __x, long double __n) noexcept (true); +16166: # 400 "/usr/include/math.h" 2 3 4 +16166: # 450 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +16166: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32 acosf32 (_Float32 __x) noexcept (true); extern _Float32 __acosf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 asinf32 (_Float32 __x) noexcept (true); extern _Float32 __asinf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 atanf32 (_Float32 __x) noexcept (true); extern _Float32 __atanf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 cosf32 (_Float32 __x) noexcept (true); extern _Float32 __cosf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 sinf32 (_Float32 __x) noexcept (true); extern _Float32 __sinf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 tanf32 (_Float32 __x) noexcept (true); extern _Float32 __tanf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32 coshf32 (_Float32 __x) noexcept (true); extern _Float32 __coshf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 sinhf32 (_Float32 __x) noexcept (true); extern _Float32 __sinhf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 tanhf32 (_Float32 __x) noexcept (true); extern _Float32 __tanhf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) noexcept (true) +16166: ; +16166: +16166: +16166: +16166: +16166: extern _Float32 acoshf32 (_Float32 __x) noexcept (true); extern _Float32 __acoshf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 asinhf32 (_Float32 __x) noexcept (true); extern _Float32 __asinhf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 atanhf32 (_Float32 __x) noexcept (true); extern _Float32 __atanhf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32 expf32 (_Float32 __x) noexcept (true); extern _Float32 __expf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 frexpf32 (_Float32 __x, int *__exponent) noexcept (true); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) noexcept (true); +16166: +16166: +16166: extern _Float32 ldexpf32 (_Float32 __x, int __exponent) noexcept (true); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) noexcept (true); +16166: +16166: +16166: extern _Float32 logf32 (_Float32 __x) noexcept (true); extern _Float32 __logf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 log10f32 (_Float32 __x) noexcept (true); extern _Float32 __log10f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern _Float32 exp10f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 exp2m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2m1f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 exp10m1f32 (_Float32 __x) noexcept (true); extern _Float32 __exp10m1f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 log2p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log2p1f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 log10p1f32 (_Float32 __x) noexcept (true); extern _Float32 __log10p1f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 logp1f32 (_Float32 __x) noexcept (true); extern _Float32 __logp1f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32 expm1f32 (_Float32 __x) noexcept (true); extern _Float32 __expm1f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 log1pf32 (_Float32 __x) noexcept (true); extern _Float32 __log1pf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 logbf32 (_Float32 __x) noexcept (true); extern _Float32 __logbf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32 exp2f32 (_Float32 __x) noexcept (true); extern _Float32 __exp2f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 log2f32 (_Float32 __x) noexcept (true); extern _Float32 __log2f32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32 powf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) noexcept (true); +16166: +16166: +16166: extern _Float32 sqrtf32 (_Float32 __x) noexcept (true); extern _Float32 __sqrtf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32 cbrtf32 (_Float32 __x) noexcept (true); extern _Float32 __cbrtf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32 ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) noexcept (true); +16166: # 213 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float32 nanf32 (const char *__tagb) noexcept (true); extern _Float32 __nanf32 (const char *__tagb) noexcept (true); +16166: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32 j0f32 (_Float32) noexcept (true); extern _Float32 __j0f32 (_Float32) noexcept (true); +16166: extern _Float32 j1f32 (_Float32) noexcept (true); extern _Float32 __j1f32 (_Float32) noexcept (true); +16166: extern _Float32 jnf32 (int, _Float32) noexcept (true); extern _Float32 __jnf32 (int, _Float32) noexcept (true); +16166: extern _Float32 y0f32 (_Float32) noexcept (true); extern _Float32 __y0f32 (_Float32) noexcept (true); +16166: extern _Float32 y1f32 (_Float32) noexcept (true); extern _Float32 __y1f32 (_Float32) noexcept (true); +16166: extern _Float32 ynf32 (int, _Float32) noexcept (true); extern _Float32 __ynf32 (int, _Float32) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32 erff32 (_Float32) noexcept (true); extern _Float32 __erff32 (_Float32) noexcept (true); +16166: extern _Float32 erfcf32 (_Float32) noexcept (true); extern _Float32 __erfcf32 (_Float32) noexcept (true); +16166: extern _Float32 lgammaf32 (_Float32) noexcept (true); extern _Float32 __lgammaf32 (_Float32) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32 tgammaf32 (_Float32) noexcept (true); extern _Float32 __tgammaf32 (_Float32) noexcept (true); +16166: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32 lgammaf32_r (_Float32, int *__signgamp) noexcept (true); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32 rintf32 (_Float32 __x) noexcept (true); extern _Float32 __rintf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32 nextdownf32 (_Float32 __x) noexcept (true); extern _Float32 __nextdownf32 (_Float32 __x) noexcept (true); +16166: +16166: extern _Float32 nextupf32 (_Float32 __x) noexcept (true); extern _Float32 __nextupf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32 scalbnf32 (_Float32 __x, int __n) noexcept (true); extern _Float32 __scalbnf32 (_Float32 __x, int __n) noexcept (true); +16166: +16166: +16166: +16166: extern int ilogbf32 (_Float32 __x) noexcept (true); extern int __ilogbf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long int llogbf32 (_Float32 __x) noexcept (true); extern long int __llogbf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32 scalblnf32 (_Float32 __x, long int __n) noexcept (true); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32 nearbyintf32 (_Float32 __x) noexcept (true); extern _Float32 __nearbyintf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32 roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern _Float32 truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int lrintf32 (_Float32 __x) noexcept (true); extern long int __lrintf32 (_Float32 __x) noexcept (true); +16166: __extension__ +16166: extern long long int llrintf32 (_Float32 __x) noexcept (true); extern long long int __llrintf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: extern long int lroundf32 (_Float32 __x) noexcept (true); extern long int __lroundf32 (_Float32 __x) noexcept (true); +16166: __extension__ +16166: extern long long int llroundf32 (_Float32 __x) noexcept (true); extern long long int __llroundf32 (_Float32 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32 roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimumf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_magf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); extern _Float32 __fminimum_mag_numf32 (_Float32 __x, _Float32 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern _Float32 getpayloadf32 (const _Float32 *__x) noexcept (true); extern _Float32 __getpayloadf32 (const _Float32 *__x) noexcept (true); +16166: +16166: +16166: extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) noexcept (true); +16166: +16166: +16166: extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) noexcept (true); +16166: # 451 "/usr/include/math.h" 2 3 4 +16166: # 467 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +16166: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float64 acosf64 (_Float64 __x) noexcept (true); extern _Float64 __acosf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 asinf64 (_Float64 __x) noexcept (true); extern _Float64 __asinf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 atanf64 (_Float64 __x) noexcept (true); extern _Float64 __atanf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 cosf64 (_Float64 __x) noexcept (true); extern _Float64 __cosf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 sinf64 (_Float64 __x) noexcept (true); extern _Float64 __sinf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 tanf64 (_Float64 __x) noexcept (true); extern _Float64 __tanf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float64 coshf64 (_Float64 __x) noexcept (true); extern _Float64 __coshf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 sinhf64 (_Float64 __x) noexcept (true); extern _Float64 __sinhf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 tanhf64 (_Float64 __x) noexcept (true); extern _Float64 __tanhf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) noexcept (true) +16166: ; +16166: +16166: +16166: +16166: +16166: extern _Float64 acoshf64 (_Float64 __x) noexcept (true); extern _Float64 __acoshf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 asinhf64 (_Float64 __x) noexcept (true); extern _Float64 __asinhf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 atanhf64 (_Float64 __x) noexcept (true); extern _Float64 __atanhf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern _Float64 expf64 (_Float64 __x) noexcept (true); extern _Float64 __expf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 frexpf64 (_Float64 __x, int *__exponent) noexcept (true); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) noexcept (true); +16166: +16166: +16166: extern _Float64 ldexpf64 (_Float64 __x, int __exponent) noexcept (true); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) noexcept (true); +16166: +16166: +16166: extern _Float64 logf64 (_Float64 __x) noexcept (true); extern _Float64 __logf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 log10f64 (_Float64 __x) noexcept (true); extern _Float64 __log10f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern _Float64 exp10f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 exp2m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2m1f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 exp10m1f64 (_Float64 __x) noexcept (true); extern _Float64 __exp10m1f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 log2p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log2p1f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 log10p1f64 (_Float64 __x) noexcept (true); extern _Float64 __log10p1f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 logp1f64 (_Float64 __x) noexcept (true); extern _Float64 __logp1f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float64 expm1f64 (_Float64 __x) noexcept (true); extern _Float64 __expm1f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 log1pf64 (_Float64 __x) noexcept (true); extern _Float64 __log1pf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 logbf64 (_Float64 __x) noexcept (true); extern _Float64 __logbf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float64 exp2f64 (_Float64 __x) noexcept (true); extern _Float64 __exp2f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 log2f64 (_Float64 __x) noexcept (true); extern _Float64 __log2f64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float64 powf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: extern _Float64 sqrtf64 (_Float64 __x) noexcept (true); extern _Float64 __sqrtf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float64 cbrtf64 (_Float64 __x) noexcept (true); extern _Float64 __cbrtf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float64 ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: # 213 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float64 nanf64 (const char *__tagb) noexcept (true); extern _Float64 __nanf64 (const char *__tagb) noexcept (true); +16166: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float64 j0f64 (_Float64) noexcept (true); extern _Float64 __j0f64 (_Float64) noexcept (true); +16166: extern _Float64 j1f64 (_Float64) noexcept (true); extern _Float64 __j1f64 (_Float64) noexcept (true); +16166: extern _Float64 jnf64 (int, _Float64) noexcept (true); extern _Float64 __jnf64 (int, _Float64) noexcept (true); +16166: extern _Float64 y0f64 (_Float64) noexcept (true); extern _Float64 __y0f64 (_Float64) noexcept (true); +16166: extern _Float64 y1f64 (_Float64) noexcept (true); extern _Float64 __y1f64 (_Float64) noexcept (true); +16166: extern _Float64 ynf64 (int, _Float64) noexcept (true); extern _Float64 __ynf64 (int, _Float64) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern _Float64 erff64 (_Float64) noexcept (true); extern _Float64 __erff64 (_Float64) noexcept (true); +16166: extern _Float64 erfcf64 (_Float64) noexcept (true); extern _Float64 __erfcf64 (_Float64) noexcept (true); +16166: extern _Float64 lgammaf64 (_Float64) noexcept (true); extern _Float64 __lgammaf64 (_Float64) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float64 tgammaf64 (_Float64) noexcept (true); extern _Float64 __tgammaf64 (_Float64) noexcept (true); +16166: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float64 lgammaf64_r (_Float64, int *__signgamp) noexcept (true); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float64 rintf64 (_Float64 __x) noexcept (true); extern _Float64 __rintf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float64 nextdownf64 (_Float64 __x) noexcept (true); extern _Float64 __nextdownf64 (_Float64 __x) noexcept (true); +16166: +16166: extern _Float64 nextupf64 (_Float64 __x) noexcept (true); extern _Float64 __nextupf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 scalbnf64 (_Float64 __x, int __n) noexcept (true); extern _Float64 __scalbnf64 (_Float64 __x, int __n) noexcept (true); +16166: +16166: +16166: +16166: extern int ilogbf64 (_Float64 __x) noexcept (true); extern int __ilogbf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long int llogbf64 (_Float64 __x) noexcept (true); extern long int __llogbf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float64 scalblnf64 (_Float64 __x, long int __n) noexcept (true); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 nearbyintf64 (_Float64 __x) noexcept (true); extern _Float64 __nearbyintf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern _Float64 truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int lrintf64 (_Float64 __x) noexcept (true); extern long int __lrintf64 (_Float64 __x) noexcept (true); +16166: __extension__ +16166: extern long long int llrintf64 (_Float64 __x) noexcept (true); extern long long int __llrintf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: extern long int lroundf64 (_Float64 __x) noexcept (true); extern long int __lroundf64 (_Float64 __x) noexcept (true); +16166: __extension__ +16166: extern long long int llroundf64 (_Float64 __x) noexcept (true); extern long long int __llroundf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: +16166: extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float64 roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimumf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_magf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); extern _Float64 __fminimum_mag_numf64 (_Float64 __x, _Float64 __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern _Float64 getpayloadf64 (const _Float64 *__x) noexcept (true); extern _Float64 __getpayloadf64 (const _Float64 *__x) noexcept (true); +16166: +16166: +16166: extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) noexcept (true); +16166: +16166: +16166: extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) noexcept (true); +16166: # 468 "/usr/include/math.h" 2 3 4 +16166: # 501 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 1 3 4 +16166: # 53 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32x acosf32x (_Float32x __x) noexcept (true); extern _Float32x __acosf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x asinf32x (_Float32x __x) noexcept (true); extern _Float32x __asinf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x atanf32x (_Float32x __x) noexcept (true); extern _Float32x __atanf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x cosf32x (_Float32x __x) noexcept (true); extern _Float32x __cosf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x sinf32x (_Float32x __x) noexcept (true); extern _Float32x __sinf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x tanf32x (_Float32x __x) noexcept (true); extern _Float32x __tanf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32x coshf32x (_Float32x __x) noexcept (true); extern _Float32x __coshf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x sinhf32x (_Float32x __x) noexcept (true); extern _Float32x __sinhf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x tanhf32x (_Float32x __x) noexcept (true); extern _Float32x __tanhf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) noexcept (true) +16166: ; +16166: +16166: +16166: +16166: +16166: extern _Float32x acoshf32x (_Float32x __x) noexcept (true); extern _Float32x __acoshf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x asinhf32x (_Float32x __x) noexcept (true); extern _Float32x __asinhf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x atanhf32x (_Float32x __x) noexcept (true); extern _Float32x __atanhf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32x expf32x (_Float32x __x) noexcept (true); extern _Float32x __expf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x frexpf32x (_Float32x __x, int *__exponent) noexcept (true); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) noexcept (true); +16166: +16166: +16166: extern _Float32x ldexpf32x (_Float32x __x, int __exponent) noexcept (true); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) noexcept (true); +16166: +16166: +16166: extern _Float32x logf32x (_Float32x __x) noexcept (true); extern _Float32x __logf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x log10f32x (_Float32x __x) noexcept (true); extern _Float32x __log10f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern _Float32x exp10f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x exp2m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2m1f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x exp10m1f32x (_Float32x __x) noexcept (true); extern _Float32x __exp10m1f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x log2p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log2p1f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x log10p1f32x (_Float32x __x) noexcept (true); extern _Float32x __log10p1f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x logp1f32x (_Float32x __x) noexcept (true); extern _Float32x __logp1f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32x expm1f32x (_Float32x __x) noexcept (true); extern _Float32x __expm1f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x log1pf32x (_Float32x __x) noexcept (true); extern _Float32x __log1pf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x logbf32x (_Float32x __x) noexcept (true); extern _Float32x __logbf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32x exp2f32x (_Float32x __x) noexcept (true); extern _Float32x __exp2f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x log2f32x (_Float32x __x) noexcept (true); extern _Float32x __log2f32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32x powf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: extern _Float32x sqrtf32x (_Float32x __x) noexcept (true); extern _Float32x __sqrtf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32x cbrtf32x (_Float32x __x) noexcept (true); extern _Float32x __cbrtf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32x ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: # 213 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float32x nanf32x (const char *__tagb) noexcept (true); extern _Float32x __nanf32x (const char *__tagb) noexcept (true); +16166: # 235 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32x j0f32x (_Float32x) noexcept (true); extern _Float32x __j0f32x (_Float32x) noexcept (true); +16166: extern _Float32x j1f32x (_Float32x) noexcept (true); extern _Float32x __j1f32x (_Float32x) noexcept (true); +16166: extern _Float32x jnf32x (int, _Float32x) noexcept (true); extern _Float32x __jnf32x (int, _Float32x) noexcept (true); +16166: extern _Float32x y0f32x (_Float32x) noexcept (true); extern _Float32x __y0f32x (_Float32x) noexcept (true); +16166: extern _Float32x y1f32x (_Float32x) noexcept (true); extern _Float32x __y1f32x (_Float32x) noexcept (true); +16166: extern _Float32x ynf32x (int, _Float32x) noexcept (true); extern _Float32x __ynf32x (int, _Float32x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32x erff32x (_Float32x) noexcept (true); extern _Float32x __erff32x (_Float32x) noexcept (true); +16166: extern _Float32x erfcf32x (_Float32x) noexcept (true); extern _Float32x __erfcf32x (_Float32x) noexcept (true); +16166: extern _Float32x lgammaf32x (_Float32x) noexcept (true); extern _Float32x __lgammaf32x (_Float32x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32x tgammaf32x (_Float32x) noexcept (true); extern _Float32x __tgammaf32x (_Float32x) noexcept (true); +16166: # 267 "/usr/include/arm-linux-gnueabihf/bits/mathcalls.h" 3 4 +16166: extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32x rintf32x (_Float32x __x) noexcept (true); extern _Float32x __rintf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32x nextdownf32x (_Float32x __x) noexcept (true); extern _Float32x __nextdownf32x (_Float32x __x) noexcept (true); +16166: +16166: extern _Float32x nextupf32x (_Float32x __x) noexcept (true); extern _Float32x __nextupf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32x scalbnf32x (_Float32x __x, int __n) noexcept (true); extern _Float32x __scalbnf32x (_Float32x __x, int __n) noexcept (true); +16166: +16166: +16166: +16166: extern int ilogbf32x (_Float32x __x) noexcept (true); extern int __ilogbf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern long int llogbf32x (_Float32x __x) noexcept (true); extern long int __llogbf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32x scalblnf32x (_Float32x __x, long int __n) noexcept (true); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32x nearbyintf32x (_Float32x __x) noexcept (true); extern _Float32x __nearbyintf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32x roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern _Float32x truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int lrintf32x (_Float32x __x) noexcept (true); extern long int __lrintf32x (_Float32x __x) noexcept (true); +16166: __extension__ +16166: extern long long int llrintf32x (_Float32x __x) noexcept (true); extern long long int __llrintf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: extern long int lroundf32x (_Float32x __x) noexcept (true); extern long int __lroundf32x (_Float32x __x) noexcept (true); +16166: __extension__ +16166: extern long long int llroundf32x (_Float32x __x) noexcept (true); extern long long int __llroundf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: +16166: extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern _Float32x roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: +16166: +16166: 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) +16166: ; +16166: +16166: +16166: extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimumf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_magf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); extern _Float32x __fminimum_mag_numf32x (_Float32x __x, _Float32x __y) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) noexcept (true) +16166: +16166: __attribute__ ((__pure__)); +16166: +16166: +16166: extern _Float32x getpayloadf32x (const _Float32x *__x) noexcept (true); extern _Float32x __getpayloadf32x (const _Float32x *__x) noexcept (true); +16166: +16166: +16166: extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) noexcept (true); +16166: +16166: +16166: extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) noexcept (true); +16166: # 502 "/usr/include/math.h" 2 3 4 +16166: # 566 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +16166: extern float fadd (double __x, double __y) noexcept (true); +16166: +16166: +16166: extern float fdiv (double __x, double __y) noexcept (true); +16166: +16166: +16166: extern float ffma (double __x, double __y, double __z) noexcept (true); +16166: +16166: +16166: extern float fmul (double __x, double __y) noexcept (true); +16166: +16166: +16166: extern float fsqrt (double __x) noexcept (true); +16166: +16166: +16166: extern float fsub (double __x, double __y) noexcept (true); +16166: # 567 "/usr/include/math.h" 2 3 4 +16166: # 587 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +16166: extern float faddl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern float fdivl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern float ffmal (long double __x, long double __y, long double __z) noexcept (true); +16166: +16166: +16166: extern float fmull (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern float fsqrtl (long double __x) noexcept (true); +16166: +16166: +16166: extern float fsubl (long double __x, long double __y) noexcept (true); +16166: # 588 "/usr/include/math.h" 2 3 4 +16166: # 616 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +16166: extern double daddl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern double ddivl (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern double dfmal (long double __x, long double __y, long double __z) noexcept (true); +16166: +16166: +16166: extern double dmull (long double __x, long double __y) noexcept (true); +16166: +16166: +16166: extern double dsqrtl (long double __x) noexcept (true); +16166: +16166: +16166: extern double dsubl (long double __x, long double __y) noexcept (true); +16166: # 617 "/usr/include/math.h" 2 3 4 +16166: # 697 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +16166: extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) noexcept (true); +16166: +16166: +16166: extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: +16166: +16166: extern _Float32 f32sqrtf32x (_Float32x __x) noexcept (true); +16166: +16166: +16166: extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) noexcept (true); +16166: # 698 "/usr/include/math.h" 2 3 4 +16166: # 707 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +16166: extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); +16166: +16166: +16166: extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: extern _Float32 f32sqrtf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: # 708 "/usr/include/math.h" 2 3 4 +16166: # 747 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/mathcalls-narrow.h" 3 4 +16166: extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) noexcept (true); +16166: +16166: +16166: extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: +16166: +16166: extern _Float32x f32xsqrtf64 (_Float64 __x) noexcept (true); +16166: +16166: +16166: extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) noexcept (true); +16166: # 748 "/usr/include/math.h" 2 3 4 +16166: # 854 "/usr/include/math.h" 3 4 +16166: extern int signgam; +16166: # 934 "/usr/include/math.h" 3 4 +16166: enum +16166: { +16166: FP_NAN = +16166: +16166: 0, +16166: FP_INFINITE = +16166: +16166: 1, +16166: FP_ZERO = +16166: +16166: 2, +16166: FP_SUBNORMAL = +16166: +16166: 3, +16166: FP_NORMAL = +16166: +16166: 4 +16166: }; +16166: # 1055 "/usr/include/math.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/iscanonical.h" 1 3 4 +16166: # 1056 "/usr/include/math.h" 2 3 4 +16166: # 1067 "/usr/include/math.h" 3 4 +16166: extern "C++" { +16166: inline int issignaling (float __val) { return __issignalingf (__val); } +16166: inline int issignaling (double __val) { return __issignaling (__val); } +16166: inline int +16166: issignaling (long double __val) +16166: { +16166: +16166: return __issignaling (__val); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 1098 "/usr/include/math.h" 3 4 +16166: extern "C++" { +16166: # 1129 "/usr/include/math.h" 3 4 +16166: template inline bool +16166: iszero (__T __val) +16166: { +16166: return __val == 0; +16166: } +16166: +16166: } +16166: # 1364 "/usr/include/math.h" 3 4 +16166: extern "C++" { +16166: template struct __iseqsig_type; +16166: +16166: template<> struct __iseqsig_type +16166: { +16166: static int __call (float __x, float __y) throw () +16166: { +16166: return __iseqsigf (__x, __y); +16166: } +16166: }; +16166: +16166: template<> struct __iseqsig_type +16166: { +16166: static int __call (double __x, double __y) throw () +16166: { +16166: return __iseqsig (__x, __y); +16166: } +16166: }; +16166: +16166: template<> struct __iseqsig_type +16166: { +16166: static int __call (long double __x, long double __y) throw () +16166: { +16166: +16166: +16166: +16166: return __iseqsig (__x, __y); +16166: +16166: } +16166: }; +16166: +16166: +16166: template<> struct __iseqsig_type<_Float32> +16166: { +16166: static int __call (_Float32 __x, _Float32 __y) throw () +16166: { +16166: return __iseqsigf (__x, __y); +16166: } +16166: }; +16166: +16166: +16166: +16166: template<> struct __iseqsig_type<_Float64> +16166: { +16166: static int __call (_Float64 __x, _Float64 __y) throw () +16166: { +16166: return __iseqsig (__x, __y); +16166: } +16166: }; +16166: # 1432 "/usr/include/math.h" 3 4 +16166: template<> struct __iseqsig_type<_Float32x> +16166: { +16166: static int __call (_Float32x __x, _Float32x __y) throw () +16166: { +16166: return __iseqsig (__x, __y); +16166: } +16166: }; +16166: # 1455 "/usr/include/math.h" 3 4 +16166: template +16166: inline int +16166: iseqsig (_T1 __x, _T2 __y) throw () +16166: { +16166: +16166: typedef decltype (((__x) + (__y) + 0.0f)) _T3; +16166: +16166: +16166: +16166: return __iseqsig_type<_T3>::__call (__x, __y); +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 48 "/usr/include/c++/14/cmath" 2 3 +16166: # 56 "/usr/include/c++/14/cmath" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 57 "/usr/include/c++/14/cmath" 2 3 +16166: # 83 "/usr/include/c++/14/cmath" 3 +16166: extern "C++" +16166: { +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: using ::acos; +16166: +16166: +16166: inline constexpr float +16166: acos(float __x) +16166: { return __builtin_acosf(__x); } +16166: +16166: inline constexpr long double +16166: acos(long double __x) +16166: { return __builtin_acosl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: acos(_Tp __x) +16166: { return __builtin_acos(__x); } +16166: +16166: using ::asin; +16166: +16166: +16166: inline constexpr float +16166: asin(float __x) +16166: { return __builtin_asinf(__x); } +16166: +16166: inline constexpr long double +16166: asin(long double __x) +16166: { return __builtin_asinl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: asin(_Tp __x) +16166: { return __builtin_asin(__x); } +16166: +16166: using ::atan; +16166: +16166: +16166: inline constexpr float +16166: atan(float __x) +16166: { return __builtin_atanf(__x); } +16166: +16166: inline constexpr long double +16166: atan(long double __x) +16166: { return __builtin_atanl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: atan(_Tp __x) +16166: { return __builtin_atan(__x); } +16166: +16166: using ::atan2; +16166: +16166: +16166: inline constexpr float +16166: atan2(float __y, float __x) +16166: { return __builtin_atan2f(__y, __x); } +16166: +16166: inline constexpr long double +16166: atan2(long double __y, long double __x) +16166: { return __builtin_atan2l(__y, __x); } +16166: +16166: +16166: using ::ceil; +16166: +16166: +16166: inline constexpr float +16166: ceil(float __x) +16166: { return __builtin_ceilf(__x); } +16166: +16166: inline constexpr long double +16166: ceil(long double __x) +16166: { return __builtin_ceill(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: ceil(_Tp __x) +16166: { return __builtin_ceil(__x); } +16166: +16166: using ::cos; +16166: +16166: +16166: inline constexpr float +16166: cos(float __x) +16166: { return __builtin_cosf(__x); } +16166: +16166: inline constexpr long double +16166: cos(long double __x) +16166: { return __builtin_cosl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: cos(_Tp __x) +16166: { return __builtin_cos(__x); } +16166: +16166: using ::cosh; +16166: +16166: +16166: inline constexpr float +16166: cosh(float __x) +16166: { return __builtin_coshf(__x); } +16166: +16166: inline constexpr long double +16166: cosh(long double __x) +16166: { return __builtin_coshl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: cosh(_Tp __x) +16166: { return __builtin_cosh(__x); } +16166: +16166: using ::exp; +16166: +16166: +16166: inline constexpr float +16166: exp(float __x) +16166: { return __builtin_expf(__x); } +16166: +16166: inline constexpr long double +16166: exp(long double __x) +16166: { return __builtin_expl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: exp(_Tp __x) +16166: { return __builtin_exp(__x); } +16166: +16166: using ::fabs; +16166: +16166: +16166: inline constexpr float +16166: fabs(float __x) +16166: { return __builtin_fabsf(__x); } +16166: +16166: inline constexpr long double +16166: fabs(long double __x) +16166: { return __builtin_fabsl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: fabs(_Tp __x) +16166: { return __builtin_fabs(__x); } +16166: +16166: using ::floor; +16166: +16166: +16166: inline constexpr float +16166: floor(float __x) +16166: { return __builtin_floorf(__x); } +16166: +16166: inline constexpr long double +16166: floor(long double __x) +16166: { return __builtin_floorl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: floor(_Tp __x) +16166: { return __builtin_floor(__x); } +16166: +16166: using ::fmod; +16166: +16166: +16166: inline constexpr float +16166: fmod(float __x, float __y) +16166: { return __builtin_fmodf(__x, __y); } +16166: +16166: inline constexpr long double +16166: fmod(long double __x, long double __y) +16166: { return __builtin_fmodl(__x, __y); } +16166: +16166: +16166: using ::frexp; +16166: +16166: +16166: inline float +16166: frexp(float __x, int* __exp) +16166: { return __builtin_frexpf(__x, __exp); } +16166: +16166: inline long double +16166: frexp(long double __x, int* __exp) +16166: { return __builtin_frexpl(__x, __exp); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: frexp(_Tp __x, int* __exp) +16166: { return __builtin_frexp(__x, __exp); } +16166: +16166: using ::ldexp; +16166: +16166: +16166: inline constexpr float +16166: ldexp(float __x, int __exp) +16166: { return __builtin_ldexpf(__x, __exp); } +16166: +16166: inline constexpr long double +16166: ldexp(long double __x, int __exp) +16166: { return __builtin_ldexpl(__x, __exp); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: ldexp(_Tp __x, int __exp) +16166: { return __builtin_ldexp(__x, __exp); } +16166: +16166: using ::log; +16166: +16166: +16166: inline constexpr float +16166: log(float __x) +16166: { return __builtin_logf(__x); } +16166: +16166: inline constexpr long double +16166: log(long double __x) +16166: { return __builtin_logl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: log(_Tp __x) +16166: { return __builtin_log(__x); } +16166: +16166: using ::log10; +16166: +16166: +16166: inline constexpr float +16166: log10(float __x) +16166: { return __builtin_log10f(__x); } +16166: +16166: inline constexpr long double +16166: log10(long double __x) +16166: { return __builtin_log10l(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: log10(_Tp __x) +16166: { return __builtin_log10(__x); } +16166: +16166: using ::modf; +16166: +16166: +16166: inline float +16166: modf(float __x, float* __iptr) +16166: { return __builtin_modff(__x, __iptr); } +16166: +16166: inline long double +16166: modf(long double __x, long double* __iptr) +16166: { return __builtin_modfl(__x, __iptr); } +16166: +16166: +16166: using ::pow; +16166: +16166: +16166: inline constexpr float +16166: pow(float __x, float __y) +16166: { return __builtin_powf(__x, __y); } +16166: +16166: inline constexpr long double +16166: pow(long double __x, long double __y) +16166: { return __builtin_powl(__x, __y); } +16166: # 400 "/usr/include/c++/14/cmath" 3 +16166: using ::sin; +16166: +16166: +16166: inline constexpr float +16166: sin(float __x) +16166: { return __builtin_sinf(__x); } +16166: +16166: inline constexpr long double +16166: sin(long double __x) +16166: { return __builtin_sinl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: sin(_Tp __x) +16166: { return __builtin_sin(__x); } +16166: +16166: using ::sinh; +16166: +16166: +16166: inline constexpr float +16166: sinh(float __x) +16166: { return __builtin_sinhf(__x); } +16166: +16166: inline constexpr long double +16166: sinh(long double __x) +16166: { return __builtin_sinhl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: sinh(_Tp __x) +16166: { return __builtin_sinh(__x); } +16166: +16166: using ::sqrt; +16166: +16166: +16166: inline constexpr float +16166: sqrt(float __x) +16166: { return __builtin_sqrtf(__x); } +16166: +16166: inline constexpr long double +16166: sqrt(long double __x) +16166: { return __builtin_sqrtl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: sqrt(_Tp __x) +16166: { return __builtin_sqrt(__x); } +16166: +16166: using ::tan; +16166: +16166: +16166: inline constexpr float +16166: tan(float __x) +16166: { return __builtin_tanf(__x); } +16166: +16166: inline constexpr long double +16166: tan(long double __x) +16166: { return __builtin_tanl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: tan(_Tp __x) +16166: { return __builtin_tan(__x); } +16166: +16166: using ::tanh; +16166: +16166: +16166: inline constexpr float +16166: tanh(float __x) +16166: { return __builtin_tanhf(__x); } +16166: +16166: inline constexpr long double +16166: tanh(long double __x) +16166: { return __builtin_tanhl(__x); } +16166: +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: tanh(_Tp __x) +16166: { return __builtin_tanh(__x); } +16166: # 1053 "/usr/include/c++/14/cmath" 3 +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: atan2(_Tp __y, _Up __x) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return atan2(__type(__y), __type(__x)); +16166: } +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: fmod(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return fmod(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: inline constexpr +16166: typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: pow(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return pow(__type(__x), __type(__y)); +16166: } +16166: # 1100 "/usr/include/c++/14/cmath" 3 +16166: constexpr int +16166: fpclassify(float __x) +16166: { return __builtin_fpclassify(0, 1, 4, +16166: 3, 2, __x); } +16166: +16166: constexpr int +16166: fpclassify(double __x) +16166: { return __builtin_fpclassify(0, 1, 4, +16166: 3, 2, __x); } +16166: +16166: constexpr int +16166: fpclassify(long double __x) +16166: { return __builtin_fpclassify(0, 1, 4, +16166: 3, 2, __x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: int>::__type +16166: fpclassify(_Tp __x) +16166: { return __x != 0 ? 4 : 2; } +16166: +16166: +16166: +16166: constexpr bool +16166: isfinite(float __x) +16166: { return __builtin_isfinite(__x); } +16166: +16166: constexpr bool +16166: isfinite(double __x) +16166: { return __builtin_isfinite(__x); } +16166: +16166: constexpr bool +16166: isfinite(long double __x) +16166: { return __builtin_isfinite(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: bool>::__type +16166: isfinite(_Tp) +16166: { return true; } +16166: +16166: +16166: +16166: constexpr bool +16166: isinf(float __x) +16166: { return __builtin_isinf(__x); } +16166: +16166: +16166: +16166: +16166: +16166: constexpr bool +16166: isinf(double __x) +16166: { return __builtin_isinf(__x); } +16166: +16166: +16166: constexpr bool +16166: isinf(long double __x) +16166: { return __builtin_isinf(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: bool>::__type +16166: isinf(_Tp) +16166: { return false; } +16166: +16166: +16166: +16166: constexpr bool +16166: isnan(float __x) +16166: { return __builtin_isnan(__x); } +16166: +16166: +16166: +16166: +16166: +16166: constexpr bool +16166: isnan(double __x) +16166: { return __builtin_isnan(__x); } +16166: +16166: +16166: constexpr bool +16166: isnan(long double __x) +16166: { return __builtin_isnan(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: bool>::__type +16166: isnan(_Tp) +16166: { return false; } +16166: +16166: +16166: +16166: constexpr bool +16166: isnormal(float __x) +16166: { return __builtin_isnormal(__x); } +16166: +16166: constexpr bool +16166: isnormal(double __x) +16166: { return __builtin_isnormal(__x); } +16166: +16166: constexpr bool +16166: isnormal(long double __x) +16166: { return __builtin_isnormal(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: bool>::__type +16166: isnormal(_Tp __x) +16166: { return __x != 0 ? true : false; } +16166: +16166: +16166: +16166: +16166: constexpr bool +16166: signbit(float __x) +16166: { return __builtin_signbit(__x); } +16166: +16166: constexpr bool +16166: signbit(double __x) +16166: { return __builtin_signbit(__x); } +16166: +16166: constexpr bool +16166: signbit(long double __x) +16166: { return __builtin_signbit(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: bool>::__type +16166: signbit(_Tp __x) +16166: { return __x < 0 ? true : false; } +16166: +16166: +16166: +16166: constexpr bool +16166: isgreater(float __x, float __y) +16166: { return __builtin_isgreater(__x, __y); } +16166: +16166: constexpr bool +16166: isgreater(double __x, double __y) +16166: { return __builtin_isgreater(__x, __y); } +16166: +16166: constexpr bool +16166: isgreater(long double __x, long double __y) +16166: { return __builtin_isgreater(__x, __y); } +16166: +16166: +16166: +16166: template +16166: constexpr typename +16166: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +16166: && __is_arithmetic<_Up>::__value), bool>::__type +16166: isgreater(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return __builtin_isgreater(__type(__x), __type(__y)); +16166: } +16166: +16166: +16166: +16166: constexpr bool +16166: isgreaterequal(float __x, float __y) +16166: { return __builtin_isgreaterequal(__x, __y); } +16166: +16166: constexpr bool +16166: isgreaterequal(double __x, double __y) +16166: { return __builtin_isgreaterequal(__x, __y); } +16166: +16166: constexpr bool +16166: isgreaterequal(long double __x, long double __y) +16166: { return __builtin_isgreaterequal(__x, __y); } +16166: +16166: +16166: +16166: template +16166: constexpr typename +16166: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +16166: && __is_arithmetic<_Up>::__value), bool>::__type +16166: isgreaterequal(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return __builtin_isgreaterequal(__type(__x), __type(__y)); +16166: } +16166: +16166: +16166: +16166: constexpr bool +16166: isless(float __x, float __y) +16166: { return __builtin_isless(__x, __y); } +16166: +16166: constexpr bool +16166: isless(double __x, double __y) +16166: { return __builtin_isless(__x, __y); } +16166: +16166: constexpr bool +16166: isless(long double __x, long double __y) +16166: { return __builtin_isless(__x, __y); } +16166: +16166: +16166: +16166: template +16166: constexpr typename +16166: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +16166: && __is_arithmetic<_Up>::__value), bool>::__type +16166: isless(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return __builtin_isless(__type(__x), __type(__y)); +16166: } +16166: +16166: +16166: +16166: constexpr bool +16166: islessequal(float __x, float __y) +16166: { return __builtin_islessequal(__x, __y); } +16166: +16166: constexpr bool +16166: islessequal(double __x, double __y) +16166: { return __builtin_islessequal(__x, __y); } +16166: +16166: constexpr bool +16166: islessequal(long double __x, long double __y) +16166: { return __builtin_islessequal(__x, __y); } +16166: +16166: +16166: +16166: template +16166: constexpr typename +16166: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +16166: && __is_arithmetic<_Up>::__value), bool>::__type +16166: islessequal(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return __builtin_islessequal(__type(__x), __type(__y)); +16166: } +16166: +16166: +16166: +16166: constexpr bool +16166: islessgreater(float __x, float __y) +16166: { return __builtin_islessgreater(__x, __y); } +16166: +16166: constexpr bool +16166: islessgreater(double __x, double __y) +16166: { return __builtin_islessgreater(__x, __y); } +16166: +16166: constexpr bool +16166: islessgreater(long double __x, long double __y) +16166: { return __builtin_islessgreater(__x, __y); } +16166: +16166: +16166: +16166: template +16166: constexpr typename +16166: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +16166: && __is_arithmetic<_Up>::__value), bool>::__type +16166: islessgreater(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return __builtin_islessgreater(__type(__x), __type(__y)); +16166: } +16166: +16166: +16166: +16166: constexpr bool +16166: isunordered(float __x, float __y) +16166: { return __builtin_isunordered(__x, __y); } +16166: +16166: constexpr bool +16166: isunordered(double __x, double __y) +16166: { return __builtin_isunordered(__x, __y); } +16166: +16166: constexpr bool +16166: isunordered(long double __x, long double __y) +16166: { return __builtin_isunordered(__x, __y); } +16166: +16166: +16166: +16166: template +16166: constexpr typename +16166: __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value +16166: && __is_arithmetic<_Up>::__value), bool>::__type +16166: isunordered(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return __builtin_isunordered(__type(__x), __type(__y)); +16166: } +16166: # 1820 "/usr/include/c++/14/cmath" 3 +16166: using ::acosf; +16166: +16166: +16166: using ::acosl; +16166: +16166: +16166: +16166: using ::asinf; +16166: +16166: +16166: using ::asinl; +16166: +16166: +16166: +16166: using ::atanf; +16166: +16166: +16166: using ::atanl; +16166: +16166: +16166: +16166: using ::atan2f; +16166: +16166: +16166: using ::atan2l; +16166: +16166: +16166: +16166: using ::ceilf; +16166: +16166: +16166: using ::ceill; +16166: +16166: +16166: +16166: using ::cosf; +16166: +16166: +16166: using ::cosl; +16166: +16166: +16166: +16166: using ::coshf; +16166: +16166: +16166: using ::coshl; +16166: +16166: +16166: +16166: using ::expf; +16166: +16166: +16166: using ::expl; +16166: +16166: +16166: +16166: using ::fabsf; +16166: +16166: +16166: using ::fabsl; +16166: +16166: +16166: +16166: using ::floorf; +16166: +16166: +16166: using ::floorl; +16166: +16166: +16166: +16166: using ::fmodf; +16166: +16166: +16166: using ::fmodl; +16166: +16166: +16166: +16166: using ::frexpf; +16166: +16166: +16166: using ::frexpl; +16166: +16166: +16166: +16166: using ::ldexpf; +16166: +16166: +16166: using ::ldexpl; +16166: +16166: +16166: +16166: using ::logf; +16166: +16166: +16166: using ::logl; +16166: +16166: +16166: +16166: using ::log10f; +16166: +16166: +16166: using ::log10l; +16166: +16166: +16166: +16166: using ::modff; +16166: +16166: +16166: using ::modfl; +16166: +16166: +16166: +16166: using ::powf; +16166: +16166: +16166: using ::powl; +16166: +16166: +16166: +16166: using ::sinf; +16166: +16166: +16166: using ::sinl; +16166: +16166: +16166: +16166: using ::sinhf; +16166: +16166: +16166: using ::sinhl; +16166: +16166: +16166: +16166: using ::sqrtf; +16166: +16166: +16166: using ::sqrtl; +16166: +16166: +16166: +16166: using ::tanf; +16166: +16166: +16166: using ::tanl; +16166: +16166: +16166: +16166: using ::tanhf; +16166: +16166: +16166: using ::tanhl; +16166: # 2085 "/usr/include/c++/14/cmath" 3 +16166: using ::double_t; +16166: using ::float_t; +16166: +16166: +16166: +16166: using ::acosh; +16166: using ::acoshf; +16166: using ::acoshl; +16166: +16166: using ::asinh; +16166: using ::asinhf; +16166: using ::asinhl; +16166: +16166: using ::atanh; +16166: using ::atanhf; +16166: using ::atanhl; +16166: +16166: using ::cbrt; +16166: using ::cbrtf; +16166: using ::cbrtl; +16166: +16166: using ::copysign; +16166: using ::copysignf; +16166: using ::copysignl; +16166: +16166: using ::erf; +16166: using ::erff; +16166: using ::erfl; +16166: +16166: using ::erfc; +16166: using ::erfcf; +16166: using ::erfcl; +16166: +16166: using ::exp2; +16166: using ::exp2f; +16166: using ::exp2l; +16166: +16166: using ::expm1; +16166: using ::expm1f; +16166: using ::expm1l; +16166: +16166: using ::fdim; +16166: using ::fdimf; +16166: using ::fdiml; +16166: +16166: using ::fma; +16166: using ::fmaf; +16166: using ::fmal; +16166: +16166: using ::fmax; +16166: using ::fmaxf; +16166: using ::fmaxl; +16166: +16166: using ::fmin; +16166: using ::fminf; +16166: using ::fminl; +16166: +16166: using ::hypot; +16166: using ::hypotf; +16166: using ::hypotl; +16166: +16166: using ::ilogb; +16166: using ::ilogbf; +16166: using ::ilogbl; +16166: +16166: using ::lgamma; +16166: using ::lgammaf; +16166: using ::lgammal; +16166: +16166: +16166: using ::llrint; +16166: using ::llrintf; +16166: using ::llrintl; +16166: +16166: using ::llround; +16166: using ::llroundf; +16166: using ::llroundl; +16166: +16166: +16166: using ::log1p; +16166: using ::log1pf; +16166: using ::log1pl; +16166: +16166: using ::log2; +16166: using ::log2f; +16166: using ::log2l; +16166: +16166: using ::logb; +16166: using ::logbf; +16166: using ::logbl; +16166: +16166: using ::lrint; +16166: using ::lrintf; +16166: using ::lrintl; +16166: +16166: using ::lround; +16166: using ::lroundf; +16166: using ::lroundl; +16166: +16166: using ::nan; +16166: using ::nanf; +16166: using ::nanl; +16166: +16166: using ::nearbyint; +16166: using ::nearbyintf; +16166: using ::nearbyintl; +16166: +16166: using ::nextafter; +16166: using ::nextafterf; +16166: using ::nextafterl; +16166: +16166: using ::nexttoward; +16166: using ::nexttowardf; +16166: using ::nexttowardl; +16166: +16166: using ::remainder; +16166: using ::remainderf; +16166: using ::remainderl; +16166: +16166: using ::remquo; +16166: using ::remquof; +16166: using ::remquol; +16166: +16166: using ::rint; +16166: using ::rintf; +16166: using ::rintl; +16166: +16166: using ::round; +16166: using ::roundf; +16166: using ::roundl; +16166: +16166: using ::scalbln; +16166: using ::scalblnf; +16166: using ::scalblnl; +16166: +16166: using ::scalbn; +16166: using ::scalbnf; +16166: using ::scalbnl; +16166: +16166: using ::tgamma; +16166: using ::tgammaf; +16166: using ::tgammal; +16166: +16166: using ::trunc; +16166: using ::truncf; +16166: using ::truncl; +16166: +16166: +16166: +16166: constexpr float +16166: acosh(float __x) +16166: { return __builtin_acoshf(__x); } +16166: +16166: constexpr long double +16166: acosh(long double __x) +16166: { return __builtin_acoshl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: acosh(_Tp __x) +16166: { return __builtin_acosh(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: asinh(float __x) +16166: { return __builtin_asinhf(__x); } +16166: +16166: constexpr long double +16166: asinh(long double __x) +16166: { return __builtin_asinhl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: asinh(_Tp __x) +16166: { return __builtin_asinh(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: atanh(float __x) +16166: { return __builtin_atanhf(__x); } +16166: +16166: constexpr long double +16166: atanh(long double __x) +16166: { return __builtin_atanhl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: atanh(_Tp __x) +16166: { return __builtin_atanh(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: cbrt(float __x) +16166: { return __builtin_cbrtf(__x); } +16166: +16166: constexpr long double +16166: cbrt(long double __x) +16166: { return __builtin_cbrtl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: cbrt(_Tp __x) +16166: { return __builtin_cbrt(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: copysign(float __x, float __y) +16166: { return __builtin_copysignf(__x, __y); } +16166: +16166: constexpr long double +16166: copysign(long double __x, long double __y) +16166: { return __builtin_copysignl(__x, __y); } +16166: +16166: +16166: +16166: constexpr float +16166: erf(float __x) +16166: { return __builtin_erff(__x); } +16166: +16166: constexpr long double +16166: erf(long double __x) +16166: { return __builtin_erfl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: erf(_Tp __x) +16166: { return __builtin_erf(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: erfc(float __x) +16166: { return __builtin_erfcf(__x); } +16166: +16166: constexpr long double +16166: erfc(long double __x) +16166: { return __builtin_erfcl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: erfc(_Tp __x) +16166: { return __builtin_erfc(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: exp2(float __x) +16166: { return __builtin_exp2f(__x); } +16166: +16166: constexpr long double +16166: exp2(long double __x) +16166: { return __builtin_exp2l(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: exp2(_Tp __x) +16166: { return __builtin_exp2(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: expm1(float __x) +16166: { return __builtin_expm1f(__x); } +16166: +16166: constexpr long double +16166: expm1(long double __x) +16166: { return __builtin_expm1l(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: expm1(_Tp __x) +16166: { return __builtin_expm1(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: fdim(float __x, float __y) +16166: { return __builtin_fdimf(__x, __y); } +16166: +16166: constexpr long double +16166: fdim(long double __x, long double __y) +16166: { return __builtin_fdiml(__x, __y); } +16166: +16166: +16166: +16166: constexpr float +16166: fma(float __x, float __y, float __z) +16166: { return __builtin_fmaf(__x, __y, __z); } +16166: +16166: constexpr long double +16166: fma(long double __x, long double __y, long double __z) +16166: { return __builtin_fmal(__x, __y, __z); } +16166: +16166: +16166: +16166: constexpr float +16166: fmax(float __x, float __y) +16166: { return __builtin_fmaxf(__x, __y); } +16166: +16166: constexpr long double +16166: fmax(long double __x, long double __y) +16166: { return __builtin_fmaxl(__x, __y); } +16166: +16166: +16166: +16166: constexpr float +16166: fmin(float __x, float __y) +16166: { return __builtin_fminf(__x, __y); } +16166: +16166: constexpr long double +16166: fmin(long double __x, long double __y) +16166: { return __builtin_fminl(__x, __y); } +16166: +16166: +16166: +16166: constexpr float +16166: hypot(float __x, float __y) +16166: { return __builtin_hypotf(__x, __y); } +16166: +16166: constexpr long double +16166: hypot(long double __x, long double __y) +16166: { return __builtin_hypotl(__x, __y); } +16166: +16166: +16166: +16166: constexpr int +16166: ilogb(float __x) +16166: { return __builtin_ilogbf(__x); } +16166: +16166: constexpr int +16166: ilogb(long double __x) +16166: { return __builtin_ilogbl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr +16166: typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: int>::__type +16166: ilogb(_Tp __x) +16166: { return __builtin_ilogb(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: lgamma(float __x) +16166: { return __builtin_lgammaf(__x); } +16166: +16166: constexpr long double +16166: lgamma(long double __x) +16166: { return __builtin_lgammal(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: lgamma(_Tp __x) +16166: { return __builtin_lgamma(__x); } +16166: +16166: +16166: +16166: constexpr long long +16166: llrint(float __x) +16166: { return __builtin_llrintf(__x); } +16166: +16166: constexpr long long +16166: llrint(long double __x) +16166: { return __builtin_llrintl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: long long>::__type +16166: llrint(_Tp __x) +16166: { return __builtin_llrint(__x); } +16166: +16166: +16166: +16166: constexpr long long +16166: llround(float __x) +16166: { return __builtin_llroundf(__x); } +16166: +16166: constexpr long long +16166: llround(long double __x) +16166: { return __builtin_llroundl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: long long>::__type +16166: llround(_Tp __x) +16166: { return __builtin_llround(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: log1p(float __x) +16166: { return __builtin_log1pf(__x); } +16166: +16166: constexpr long double +16166: log1p(long double __x) +16166: { return __builtin_log1pl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: log1p(_Tp __x) +16166: { return __builtin_log1p(__x); } +16166: +16166: +16166: +16166: +16166: constexpr float +16166: log2(float __x) +16166: { return __builtin_log2f(__x); } +16166: +16166: constexpr long double +16166: log2(long double __x) +16166: { return __builtin_log2l(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: log2(_Tp __x) +16166: { return __builtin_log2(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: logb(float __x) +16166: { return __builtin_logbf(__x); } +16166: +16166: constexpr long double +16166: logb(long double __x) +16166: { return __builtin_logbl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: logb(_Tp __x) +16166: { return __builtin_logb(__x); } +16166: +16166: +16166: +16166: constexpr long +16166: lrint(float __x) +16166: { return __builtin_lrintf(__x); } +16166: +16166: constexpr long +16166: lrint(long double __x) +16166: { return __builtin_lrintl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: long>::__type +16166: lrint(_Tp __x) +16166: { return __builtin_lrint(__x); } +16166: +16166: +16166: +16166: constexpr long +16166: lround(float __x) +16166: { return __builtin_lroundf(__x); } +16166: +16166: constexpr long +16166: lround(long double __x) +16166: { return __builtin_lroundl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: long>::__type +16166: lround(_Tp __x) +16166: { return __builtin_lround(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: nearbyint(float __x) +16166: { return __builtin_nearbyintf(__x); } +16166: +16166: constexpr long double +16166: nearbyint(long double __x) +16166: { return __builtin_nearbyintl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: nearbyint(_Tp __x) +16166: { return __builtin_nearbyint(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: nextafter(float __x, float __y) +16166: { return __builtin_nextafterf(__x, __y); } +16166: +16166: constexpr long double +16166: nextafter(long double __x, long double __y) +16166: { return __builtin_nextafterl(__x, __y); } +16166: +16166: +16166: +16166: constexpr float +16166: nexttoward(float __x, long double __y) +16166: { return __builtin_nexttowardf(__x, __y); } +16166: +16166: constexpr long double +16166: nexttoward(long double __x, long double __y) +16166: { return __builtin_nexttowardl(__x, __y); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: nexttoward(_Tp __x, long double __y) +16166: { return __builtin_nexttoward(__x, __y); } +16166: +16166: +16166: +16166: constexpr float +16166: remainder(float __x, float __y) +16166: { return __builtin_remainderf(__x, __y); } +16166: +16166: constexpr long double +16166: remainder(long double __x, long double __y) +16166: { return __builtin_remainderl(__x, __y); } +16166: +16166: +16166: +16166: inline float +16166: remquo(float __x, float __y, int* __pquo) +16166: { return __builtin_remquof(__x, __y, __pquo); } +16166: +16166: inline long double +16166: remquo(long double __x, long double __y, int* __pquo) +16166: { return __builtin_remquol(__x, __y, __pquo); } +16166: +16166: +16166: +16166: constexpr float +16166: rint(float __x) +16166: { return __builtin_rintf(__x); } +16166: +16166: constexpr long double +16166: rint(long double __x) +16166: { return __builtin_rintl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: rint(_Tp __x) +16166: { return __builtin_rint(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: round(float __x) +16166: { return __builtin_roundf(__x); } +16166: +16166: constexpr long double +16166: round(long double __x) +16166: { return __builtin_roundl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: round(_Tp __x) +16166: { return __builtin_round(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: scalbln(float __x, long __ex) +16166: { return __builtin_scalblnf(__x, __ex); } +16166: +16166: constexpr long double +16166: scalbln(long double __x, long __ex) +16166: { return __builtin_scalblnl(__x, __ex); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: scalbln(_Tp __x, long __ex) +16166: { return __builtin_scalbln(__x, __ex); } +16166: +16166: +16166: +16166: constexpr float +16166: scalbn(float __x, int __ex) +16166: { return __builtin_scalbnf(__x, __ex); } +16166: +16166: constexpr long double +16166: scalbn(long double __x, int __ex) +16166: { return __builtin_scalbnl(__x, __ex); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: scalbn(_Tp __x, int __ex) +16166: { return __builtin_scalbn(__x, __ex); } +16166: +16166: +16166: +16166: constexpr float +16166: tgamma(float __x) +16166: { return __builtin_tgammaf(__x); } +16166: +16166: constexpr long double +16166: tgamma(long double __x) +16166: { return __builtin_tgammal(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: tgamma(_Tp __x) +16166: { return __builtin_tgamma(__x); } +16166: +16166: +16166: +16166: constexpr float +16166: trunc(float __x) +16166: { return __builtin_truncf(__x); } +16166: +16166: constexpr long double +16166: trunc(long double __x) +16166: { return __builtin_truncl(__x); } +16166: +16166: +16166: +16166: template +16166: constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, +16166: double>::__type +16166: trunc(_Tp __x) +16166: { return __builtin_trunc(__x); } +16166: # 3682 "/usr/include/c++/14/cmath" 3 +16166: template +16166: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: copysign(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return copysign(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: fdim(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return fdim(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: fmax(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return fmax(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: fmin(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return fmin(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: hypot(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return hypot(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: nextafter(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return nextafter(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: remainder(_Tp __x, _Up __y) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return remainder(__type(__x), __type(__y)); +16166: } +16166: +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type +16166: remquo(_Tp __x, _Up __y, int* __pquo) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; +16166: return remquo(__type(__x), __type(__y), __pquo); +16166: } +16166: +16166: template +16166: constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type +16166: fma(_Tp __x, _Up __y, _Vp __z) +16166: { +16166: typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; +16166: return fma(__type(__x), __type(__y), __type(__z)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline _Tp +16166: __hypot3(_Tp __x, _Tp __y, _Tp __z) +16166: { +16166: __x = std::abs(__x); +16166: __y = std::abs(__y); +16166: __z = std::abs(__z); +16166: if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x) +16166: return __a * std::sqrt((__x / __a) * (__x / __a) +16166: + (__y / __a) * (__y / __a) +16166: + (__z / __a) * (__z / __a)); +16166: else +16166: return {}; +16166: } +16166: +16166: inline float +16166: hypot(float __x, float __y, float __z) +16166: { return std::__hypot3(__x, __y, __z); } +16166: +16166: inline double +16166: hypot(double __x, double __y, double __z) +16166: { return std::__hypot3(__x, __y, __z); } +16166: +16166: inline long double +16166: hypot(long double __x, long double __y, long double __z) +16166: { return std::__hypot3(__x, __y, __z); } +16166: +16166: template +16166: __gnu_cxx::__promoted_t<_Tp, _Up, _Vp> +16166: hypot(_Tp __x, _Up __y, _Vp __z) +16166: { +16166: using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>; +16166: return std::__hypot3<__type>(__x, __y, __z); +16166: } +16166: # 3902 "/usr/include/c++/14/cmath" 3 +16166: +16166: } +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/specfun.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/specfun.h" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 38 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 47 "/usr/include/c++/14/bits/specfun.h" 3 +16166: # 1 "/usr/include/c++/14/tr1/gamma.tcc" 1 3 +16166: # 49 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: # 1 "/usr/include/c++/14/tr1/special_function_util.h" 1 3 +16166: # 39 "/usr/include/c++/14/tr1/special_function_util.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 50 "/usr/include/c++/14/tr1/special_function_util.h" 3 +16166: namespace __detail +16166: { +16166: +16166: +16166: +16166: template +16166: struct __floating_point_constant +16166: { +16166: static const _Tp __value; +16166: }; +16166: +16166: +16166: +16166: template +16166: struct __numeric_constants +16166: { +16166: +16166: static _Tp __pi() throw() +16166: { return static_cast<_Tp>(3.1415926535897932384626433832795029L); } +16166: +16166: static _Tp __pi_2() throw() +16166: { return static_cast<_Tp>(1.5707963267948966192313216916397514L); } +16166: +16166: static _Tp __pi_3() throw() +16166: { return static_cast<_Tp>(1.0471975511965977461542144610931676L); } +16166: +16166: static _Tp __pi_4() throw() +16166: { return static_cast<_Tp>(0.7853981633974483096156608458198757L); } +16166: +16166: static _Tp __1_pi() throw() +16166: { return static_cast<_Tp>(0.3183098861837906715377675267450287L); } +16166: +16166: static _Tp __2_sqrtpi() throw() +16166: { return static_cast<_Tp>(1.1283791670955125738961589031215452L); } +16166: +16166: static _Tp __sqrt2() throw() +16166: { return static_cast<_Tp>(1.4142135623730950488016887242096981L); } +16166: +16166: static _Tp __sqrt3() throw() +16166: { return static_cast<_Tp>(1.7320508075688772935274463415058723L); } +16166: +16166: static _Tp __sqrtpio2() throw() +16166: { return static_cast<_Tp>(1.2533141373155002512078826424055226L); } +16166: +16166: static _Tp __sqrt1_2() throw() +16166: { return static_cast<_Tp>(0.7071067811865475244008443621048490L); } +16166: +16166: static _Tp __lnpi() throw() +16166: { return static_cast<_Tp>(1.1447298858494001741434273513530587L); } +16166: +16166: static _Tp __gamma_e() throw() +16166: { return static_cast<_Tp>(0.5772156649015328606065120900824024L); } +16166: +16166: static _Tp __euler() throw() +16166: { return static_cast<_Tp>(2.7182818284590452353602874713526625L); } +16166: }; +16166: # 114 "/usr/include/c++/14/tr1/special_function_util.h" 3 +16166: template +16166: inline bool __isnan(_Tp __x) +16166: { return std::isnan(__x); } +16166: # 133 "/usr/include/c++/14/tr1/special_function_util.h" 3 +16166: } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 50 "/usr/include/c++/14/tr1/gamma.tcc" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 65 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: namespace __detail +16166: { +16166: # 76 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __bernoulli_series(unsigned int __n) +16166: { +16166: +16166: static const _Tp __num[28] = { +16166: _Tp(1UL), -_Tp(1UL) / _Tp(2UL), +16166: _Tp(1UL) / _Tp(6UL), _Tp(0UL), +16166: -_Tp(1UL) / _Tp(30UL), _Tp(0UL), +16166: _Tp(1UL) / _Tp(42UL), _Tp(0UL), +16166: -_Tp(1UL) / _Tp(30UL), _Tp(0UL), +16166: _Tp(5UL) / _Tp(66UL), _Tp(0UL), +16166: -_Tp(691UL) / _Tp(2730UL), _Tp(0UL), +16166: _Tp(7UL) / _Tp(6UL), _Tp(0UL), +16166: -_Tp(3617UL) / _Tp(510UL), _Tp(0UL), +16166: _Tp(43867UL) / _Tp(798UL), _Tp(0UL), +16166: -_Tp(174611) / _Tp(330UL), _Tp(0UL), +16166: _Tp(854513UL) / _Tp(138UL), _Tp(0UL), +16166: -_Tp(236364091UL) / _Tp(2730UL), _Tp(0UL), +16166: _Tp(8553103UL) / _Tp(6UL), _Tp(0UL) +16166: }; +16166: +16166: if (__n == 0) +16166: return _Tp(1); +16166: +16166: if (__n == 1) +16166: return -_Tp(1) / _Tp(2); +16166: +16166: +16166: if (__n % 2 == 1) +16166: return _Tp(0); +16166: +16166: +16166: if (__n < 28) +16166: return __num[__n]; +16166: +16166: +16166: _Tp __fact = _Tp(1); +16166: if ((__n / 2) % 2 == 0) +16166: __fact *= _Tp(-1); +16166: for (unsigned int __k = 1; __k <= __n; ++__k) +16166: __fact *= __k / (_Tp(2) * __numeric_constants<_Tp>::__pi()); +16166: __fact *= _Tp(2); +16166: +16166: _Tp __sum = _Tp(0); +16166: for (unsigned int __i = 1; __i < 1000; ++__i) +16166: { +16166: _Tp __term = std::pow(_Tp(__i), -_Tp(__n)); +16166: if (__term < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: __sum += __term; +16166: } +16166: +16166: return __fact * __sum; +16166: } +16166: # 139 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: inline _Tp +16166: __bernoulli(int __n) +16166: { return __bernoulli_series<_Tp>(__n); } +16166: # 153 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __log_gamma_bernoulli(_Tp __x) +16166: { +16166: _Tp __lg = (__x - _Tp(0.5L)) * std::log(__x) - __x +16166: + _Tp(0.5L) * std::log(_Tp(2) +16166: * __numeric_constants<_Tp>::__pi()); +16166: +16166: const _Tp __xx = __x * __x; +16166: _Tp __help = _Tp(1) / __x; +16166: for ( unsigned int __i = 1; __i < 20; ++__i ) +16166: { +16166: const _Tp __2i = _Tp(2 * __i); +16166: __help /= __2i * (__2i - _Tp(1)) * __xx; +16166: __lg += __bernoulli<_Tp>(2 * __i) * __help; +16166: } +16166: +16166: return __lg; +16166: } +16166: # 181 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __log_gamma_lanczos(_Tp __x) +16166: { +16166: const _Tp __xm1 = __x - _Tp(1); +16166: +16166: static const _Tp __lanczos_cheb_7[9] = { +16166: _Tp( 0.99999999999980993227684700473478L), +16166: _Tp( 676.520368121885098567009190444019L), +16166: _Tp(-1259.13921672240287047156078755283L), +16166: _Tp( 771.3234287776530788486528258894L), +16166: _Tp(-176.61502916214059906584551354L), +16166: _Tp( 12.507343278686904814458936853L), +16166: _Tp(-0.13857109526572011689554707L), +16166: _Tp( 9.984369578019570859563e-6L), +16166: _Tp( 1.50563273514931155834e-7L) +16166: }; +16166: +16166: static const _Tp __LOGROOT2PI +16166: = _Tp(0.9189385332046727417803297364056176L); +16166: +16166: _Tp __sum = __lanczos_cheb_7[0]; +16166: for(unsigned int __k = 1; __k < 9; ++__k) +16166: __sum += __lanczos_cheb_7[__k] / (__xm1 + __k); +16166: +16166: const _Tp __term1 = (__xm1 + _Tp(0.5L)) +16166: * std::log((__xm1 + _Tp(7.5L)) +16166: / __numeric_constants<_Tp>::__euler()); +16166: const _Tp __term2 = __LOGROOT2PI + std::log(__sum); +16166: const _Tp __result = __term1 + (__term2 - _Tp(7)); +16166: +16166: return __result; +16166: } +16166: # 225 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __log_gamma(_Tp __x) +16166: { +16166: if (__x > _Tp(0.5L)) +16166: return __log_gamma_lanczos(__x); +16166: else +16166: { +16166: const _Tp __sin_fact +16166: = std::abs(std::sin(__numeric_constants<_Tp>::__pi() * __x)); +16166: if (__sin_fact == _Tp(0)) +16166: std::__throw_domain_error(("Argument is nonpositive integer " "in __log_gamma") +16166: ); +16166: return __numeric_constants<_Tp>::__lnpi() +16166: - std::log(__sin_fact) +16166: - __log_gamma_lanczos(_Tp(1) - __x); +16166: } +16166: } +16166: # 252 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __log_gamma_sign(_Tp __x) +16166: { +16166: if (__x > _Tp(0)) +16166: return _Tp(1); +16166: else +16166: { +16166: const _Tp __sin_fact +16166: = std::sin(__numeric_constants<_Tp>::__pi() * __x); +16166: if (__sin_fact > _Tp(0)) +16166: return (1); +16166: else if (__sin_fact < _Tp(0)) +16166: return -_Tp(1); +16166: else +16166: return _Tp(0); +16166: } +16166: } +16166: # 283 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __log_bincoef(unsigned int __n, unsigned int __k) +16166: { +16166: +16166: static const _Tp __max_bincoeff +16166: = std::numeric_limits<_Tp>::max_exponent10 +16166: * std::log(_Tp(10)) - _Tp(1); +16166: +16166: _Tp __coeff = ::std::lgamma(_Tp(1 + __n)) +16166: - ::std::lgamma(_Tp(1 + __k)) +16166: - ::std::lgamma(_Tp(1 + __n - __k)); +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 314 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __bincoef(unsigned int __n, unsigned int __k) +16166: { +16166: +16166: static const _Tp __max_bincoeff +16166: = std::numeric_limits<_Tp>::max_exponent10 +16166: * std::log(_Tp(10)) - _Tp(1); +16166: +16166: const _Tp __log_coeff = __log_bincoef<_Tp>(__n, __k); +16166: if (__log_coeff > __max_bincoeff) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else +16166: return std::exp(__log_coeff); +16166: } +16166: # 337 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: inline _Tp +16166: __gamma(_Tp __x) +16166: { return std::exp(__log_gamma(__x)); } +16166: # 356 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __psi_series(_Tp __x) +16166: { +16166: _Tp __sum = -__numeric_constants<_Tp>::__gamma_e() - _Tp(1) / __x; +16166: const unsigned int __max_iter = 100000; +16166: for (unsigned int __k = 1; __k < __max_iter; ++__k) +16166: { +16166: const _Tp __term = __x / (__k * (__k + __x)); +16166: __sum += __term; +16166: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: } +16166: return __sum; +16166: } +16166: # 386 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __psi_asymp(_Tp __x) +16166: { +16166: _Tp __sum = std::log(__x) - _Tp(0.5L) / __x; +16166: const _Tp __xx = __x * __x; +16166: _Tp __xp = __xx; +16166: const unsigned int __max_iter = 100; +16166: for (unsigned int __k = 1; __k < __max_iter; ++__k) +16166: { +16166: const _Tp __term = __bernoulli<_Tp>(2 * __k) / (2 * __k * __xp); +16166: __sum -= __term; +16166: if (std::abs(__term / __sum) < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: __xp *= __xx; +16166: } +16166: return __sum; +16166: } +16166: # 417 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __psi(_Tp __x) +16166: { +16166: const int __n = static_cast(__x + 0.5L); +16166: const _Tp __eps = _Tp(4) * std::numeric_limits<_Tp>::epsilon(); +16166: if (__n <= 0 && std::abs(__x - _Tp(__n)) < __eps) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__x < _Tp(0)) +16166: { +16166: const _Tp __pi = __numeric_constants<_Tp>::__pi(); +16166: return __psi(_Tp(1) - __x) +16166: - __pi * std::cos(__pi * __x) / std::sin(__pi * __x); +16166: } +16166: else if (__x > _Tp(100)) +16166: return __psi_asymp(__x); +16166: else +16166: return __psi_series(__x); +16166: } +16166: # 446 "/usr/include/c++/14/tr1/gamma.tcc" 3 +16166: template +16166: _Tp +16166: __psi(unsigned int __n, _Tp __x) +16166: { +16166: if (__x <= _Tp(0)) +16166: std::__throw_domain_error(("Argument out of range " "in __psi") +16166: ); +16166: else if (__n == 0) +16166: return __psi(__x); +16166: else +16166: { +16166: const _Tp __hzeta = __hurwitz_zeta(_Tp(__n + 1), __x); +16166: +16166: const _Tp __ln_nfact = ::std::lgamma(_Tp(__n + 1)); +16166: +16166: +16166: +16166: _Tp __result = std::exp(__ln_nfact) * __hzeta; +16166: if (__n % 2 == 1) +16166: __result = -__result; +16166: return __result; +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 48 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/bessel_function.tcc" 1 3 +16166: # 55 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 71 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: namespace __detail +16166: { +16166: # 98 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: void +16166: __gamma_temme(_Tp __mu, +16166: _Tp & __gam1, _Tp & __gam2, _Tp & __gampl, _Tp & __gammi) +16166: { +16166: +16166: __gampl = _Tp(1) / ::std::tgamma(_Tp(1) + __mu); +16166: __gammi = _Tp(1) / ::std::tgamma(_Tp(1) - __mu); +16166: +16166: +16166: +16166: +16166: +16166: if (std::abs(__mu) < std::numeric_limits<_Tp>::epsilon()) +16166: __gam1 = -_Tp(__numeric_constants<_Tp>::__gamma_e()); +16166: else +16166: __gam1 = (__gammi - __gampl) / (_Tp(2) * __mu); +16166: +16166: __gam2 = (__gammi + __gampl) / (_Tp(2)); +16166: +16166: return; +16166: } +16166: # 136 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: void +16166: __bessel_jn(_Tp __nu, _Tp __x, +16166: _Tp & __Jnu, _Tp & __Nnu, _Tp & __Jpnu, _Tp & __Npnu) +16166: { +16166: if (__x == _Tp(0)) +16166: { +16166: if (__nu == _Tp(0)) +16166: { +16166: __Jnu = _Tp(1); +16166: __Jpnu = _Tp(0); +16166: } +16166: else if (__nu == _Tp(1)) +16166: { +16166: __Jnu = _Tp(0); +16166: __Jpnu = _Tp(0.5L); +16166: } +16166: else +16166: { +16166: __Jnu = _Tp(0); +16166: __Jpnu = _Tp(0); +16166: } +16166: __Nnu = -std::numeric_limits<_Tp>::infinity(); +16166: __Npnu = std::numeric_limits<_Tp>::infinity(); +16166: return; +16166: } +16166: +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: +16166: +16166: +16166: +16166: const _Tp __fp_min = std::sqrt(std::numeric_limits<_Tp>::min()); +16166: const int __max_iter = 15000; +16166: const _Tp __x_min = _Tp(2); +16166: +16166: const int __nl = (__x < __x_min +16166: ? static_cast(__nu + _Tp(0.5L)) +16166: : std::max(0, static_cast(__nu - __x + _Tp(1.5L)))); +16166: +16166: const _Tp __mu = __nu - __nl; +16166: const _Tp __mu2 = __mu * __mu; +16166: const _Tp __xi = _Tp(1) / __x; +16166: const _Tp __xi2 = _Tp(2) * __xi; +16166: _Tp __w = __xi2 / __numeric_constants<_Tp>::__pi(); +16166: int __isign = 1; +16166: _Tp __h = __nu * __xi; +16166: if (__h < __fp_min) +16166: __h = __fp_min; +16166: _Tp __b = __xi2 * __nu; +16166: _Tp __d = _Tp(0); +16166: _Tp __c = __h; +16166: int __i; +16166: for (__i = 1; __i <= __max_iter; ++__i) +16166: { +16166: __b += __xi2; +16166: __d = __b - __d; +16166: if (std::abs(__d) < __fp_min) +16166: __d = __fp_min; +16166: __c = __b - _Tp(1) / __c; +16166: if (std::abs(__c) < __fp_min) +16166: __c = __fp_min; +16166: __d = _Tp(1) / __d; +16166: const _Tp __del = __c * __d; +16166: __h *= __del; +16166: if (__d < _Tp(0)) +16166: __isign = -__isign; +16166: if (std::abs(__del - _Tp(1)) < __eps) +16166: break; +16166: } +16166: if (__i > __max_iter) +16166: std::__throw_runtime_error(("Argument x too large in __bessel_jn; " "try asymptotic expansion.") +16166: ); +16166: _Tp __Jnul = __isign * __fp_min; +16166: _Tp __Jpnul = __h * __Jnul; +16166: _Tp __Jnul1 = __Jnul; +16166: _Tp __Jpnu1 = __Jpnul; +16166: _Tp __fact = __nu * __xi; +16166: for ( int __l = __nl; __l >= 1; --__l ) +16166: { +16166: const _Tp __Jnutemp = __fact * __Jnul + __Jpnul; +16166: __fact -= __xi; +16166: __Jpnul = __fact * __Jnutemp - __Jnul; +16166: __Jnul = __Jnutemp; +16166: } +16166: if (__Jnul == _Tp(0)) +16166: __Jnul = __eps; +16166: _Tp __f= __Jpnul / __Jnul; +16166: _Tp __Nmu, __Nnu1, __Npmu, __Jmu; +16166: if (__x < __x_min) +16166: { +16166: const _Tp __x2 = __x / _Tp(2); +16166: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu; +16166: _Tp __fact = (std::abs(__pimu) < __eps +16166: ? _Tp(1) : __pimu / std::sin(__pimu)); +16166: _Tp __d = -std::log(__x2); +16166: _Tp __e = __mu * __d; +16166: _Tp __fact2 = (std::abs(__e) < __eps +16166: ? _Tp(1) : std::sinh(__e) / __e); +16166: _Tp __gam1, __gam2, __gampl, __gammi; +16166: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi); +16166: _Tp __ff = (_Tp(2) / __numeric_constants<_Tp>::__pi()) +16166: * __fact * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d); +16166: __e = std::exp(__e); +16166: _Tp __p = __e / (__numeric_constants<_Tp>::__pi() * __gampl); +16166: _Tp __q = _Tp(1) / (__e * __numeric_constants<_Tp>::__pi() * __gammi); +16166: const _Tp __pimu2 = __pimu / _Tp(2); +16166: _Tp __fact3 = (std::abs(__pimu2) < __eps +16166: ? _Tp(1) : std::sin(__pimu2) / __pimu2 ); +16166: _Tp __r = __numeric_constants<_Tp>::__pi() * __pimu2 * __fact3 * __fact3; +16166: _Tp __c = _Tp(1); +16166: __d = -__x2 * __x2; +16166: _Tp __sum = __ff + __r * __q; +16166: _Tp __sum1 = __p; +16166: for (__i = 1; __i <= __max_iter; ++__i) +16166: { +16166: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2); +16166: __c *= __d / _Tp(__i); +16166: __p /= _Tp(__i) - __mu; +16166: __q /= _Tp(__i) + __mu; +16166: const _Tp __del = __c * (__ff + __r * __q); +16166: __sum += __del; +16166: const _Tp __del1 = __c * __p - __i * __del; +16166: __sum1 += __del1; +16166: if ( std::abs(__del) < __eps * (_Tp(1) + std::abs(__sum)) ) +16166: break; +16166: } +16166: if ( __i > __max_iter ) +16166: std::__throw_runtime_error(("Bessel y series failed to converge " "in __bessel_jn.") +16166: ); +16166: __Nmu = -__sum; +16166: __Nnu1 = -__sum1 * __xi2; +16166: __Npmu = __mu * __xi * __Nmu - __Nnu1; +16166: __Jmu = __w / (__Npmu - __f * __Nmu); +16166: } +16166: else +16166: { +16166: _Tp __a = _Tp(0.25L) - __mu2; +16166: _Tp __q = _Tp(1); +16166: _Tp __p = -__xi / _Tp(2); +16166: _Tp __br = _Tp(2) * __x; +16166: _Tp __bi = _Tp(2); +16166: _Tp __fact = __a * __xi / (__p * __p + __q * __q); +16166: _Tp __cr = __br + __q * __fact; +16166: _Tp __ci = __bi + __p * __fact; +16166: _Tp __den = __br * __br + __bi * __bi; +16166: _Tp __dr = __br / __den; +16166: _Tp __di = -__bi / __den; +16166: _Tp __dlr = __cr * __dr - __ci * __di; +16166: _Tp __dli = __cr * __di + __ci * __dr; +16166: _Tp __temp = __p * __dlr - __q * __dli; +16166: __q = __p * __dli + __q * __dlr; +16166: __p = __temp; +16166: int __i; +16166: for (__i = 2; __i <= __max_iter; ++__i) +16166: { +16166: __a += _Tp(2 * (__i - 1)); +16166: __bi += _Tp(2); +16166: __dr = __a * __dr + __br; +16166: __di = __a * __di + __bi; +16166: if (std::abs(__dr) + std::abs(__di) < __fp_min) +16166: __dr = __fp_min; +16166: __fact = __a / (__cr * __cr + __ci * __ci); +16166: __cr = __br + __cr * __fact; +16166: __ci = __bi - __ci * __fact; +16166: if (std::abs(__cr) + std::abs(__ci) < __fp_min) +16166: __cr = __fp_min; +16166: __den = __dr * __dr + __di * __di; +16166: __dr /= __den; +16166: __di /= -__den; +16166: __dlr = __cr * __dr - __ci * __di; +16166: __dli = __cr * __di + __ci * __dr; +16166: __temp = __p * __dlr - __q * __dli; +16166: __q = __p * __dli + __q * __dlr; +16166: __p = __temp; +16166: if (std::abs(__dlr - _Tp(1)) + std::abs(__dli) < __eps) +16166: break; +16166: } +16166: if (__i > __max_iter) +16166: std::__throw_runtime_error(("Lentz's method failed " "in __bessel_jn.") +16166: ); +16166: const _Tp __gam = (__p - __f) / __q; +16166: __Jmu = std::sqrt(__w / ((__p - __f) * __gam + __q)); +16166: +16166: __Jmu = ::std::copysign(__Jmu, __Jnul); +16166: +16166: +16166: +16166: +16166: __Nmu = __gam * __Jmu; +16166: __Npmu = (__p + __q / __gam) * __Nmu; +16166: __Nnu1 = __mu * __xi * __Nmu - __Npmu; +16166: } +16166: __fact = __Jmu / __Jnul; +16166: __Jnu = __fact * __Jnul1; +16166: __Jpnu = __fact * __Jpnu1; +16166: for (__i = 1; __i <= __nl; ++__i) +16166: { +16166: const _Tp __Nnutemp = (__mu + __i) * __xi2 * __Nnu1 - __Nmu; +16166: __Nmu = __Nnu1; +16166: __Nnu1 = __Nnutemp; +16166: } +16166: __Nnu = __Nmu; +16166: __Npnu = __nu * __xi * __Nmu - __Nnu1; +16166: +16166: return; +16166: } +16166: # 361 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: void +16166: __cyl_bessel_jn_asymp(_Tp __nu, _Tp __x, _Tp & __Jnu, _Tp & __Nnu) +16166: { +16166: const _Tp __mu = _Tp(4) * __nu * __nu; +16166: const _Tp __8x = _Tp(8) * __x; +16166: +16166: _Tp __P = _Tp(0); +16166: _Tp __Q = _Tp(0); +16166: +16166: _Tp __k = _Tp(0); +16166: _Tp __term = _Tp(1); +16166: +16166: int __epsP = 0; +16166: int __epsQ = 0; +16166: +16166: _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: +16166: do +16166: { +16166: __term *= (__k == 0 +16166: ? _Tp(1) +16166: : -(__mu - (2 * __k - 1) * (2 * __k - 1)) / (__k * __8x)); +16166: +16166: __epsP = std::abs(__term) < __eps * std::abs(__P); +16166: __P += __term; +16166: +16166: __k++; +16166: +16166: __term *= (__mu - (2 * __k - 1) * (2 * __k - 1)) / (__k * __8x); +16166: __epsQ = std::abs(__term) < __eps * std::abs(__Q); +16166: __Q += __term; +16166: +16166: if (__epsP && __epsQ && __k > (__nu / 2.)) +16166: break; +16166: +16166: __k++; +16166: } +16166: while (__k < 1000); +16166: +16166: const _Tp __chi = __x - (__nu + _Tp(0.5L)) +16166: * __numeric_constants<_Tp>::__pi_2(); +16166: +16166: const _Tp __c = std::cos(__chi); +16166: const _Tp __s = std::sin(__chi); +16166: +16166: const _Tp __coef = std::sqrt(_Tp(2) +16166: / (__numeric_constants<_Tp>::__pi() * __x)); +16166: +16166: __Jnu = __coef * (__c * __P - __s * __Q); +16166: __Nnu = __coef * (__s * __P + __c * __Q); +16166: +16166: return; +16166: } +16166: # 444 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: _Tp +16166: __cyl_bessel_ij_series(_Tp __nu, _Tp __x, _Tp __sgn, +16166: unsigned int __max_iter) +16166: { +16166: if (__x == _Tp(0)) +16166: return __nu == _Tp(0) ? _Tp(1) : _Tp(0); +16166: +16166: const _Tp __x2 = __x / _Tp(2); +16166: _Tp __fact = __nu * std::log(__x2); +16166: +16166: __fact -= ::std::lgamma(__nu + _Tp(1)); +16166: +16166: +16166: +16166: __fact = std::exp(__fact); +16166: const _Tp __xx4 = __sgn * __x2 * __x2; +16166: _Tp __Jn = _Tp(1); +16166: _Tp __term = _Tp(1); +16166: +16166: for (unsigned int __i = 1; __i < __max_iter; ++__i) +16166: { +16166: __term *= __xx4 / (_Tp(__i) * (__nu + _Tp(__i))); +16166: __Jn += __term; +16166: if (std::abs(__term / __Jn) < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: } +16166: +16166: return __fact * __Jn; +16166: } +16166: # 490 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: _Tp +16166: __cyl_bessel_j(_Tp __nu, _Tp __x) +16166: { +16166: if (__nu < _Tp(0) || __x < _Tp(0)) +16166: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_j.") +16166: ); +16166: else if (__isnan(__nu) || __isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__x * __x < _Tp(10) * (__nu + _Tp(1))) +16166: return __cyl_bessel_ij_series(__nu, __x, -_Tp(1), 200); +16166: else if (__x > _Tp(1000)) +16166: { +16166: _Tp __J_nu, __N_nu; +16166: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu); +16166: return __J_nu; +16166: } +16166: else +16166: { +16166: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; +16166: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); +16166: return __J_nu; +16166: } +16166: } +16166: # 532 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: _Tp +16166: __cyl_neumann_n(_Tp __nu, _Tp __x) +16166: { +16166: if (__nu < _Tp(0) || __x < _Tp(0)) +16166: std::__throw_domain_error(("Bad argument " "in __cyl_neumann_n.") +16166: ); +16166: else if (__isnan(__nu) || __isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__x > _Tp(1000)) +16166: { +16166: _Tp __J_nu, __N_nu; +16166: __cyl_bessel_jn_asymp(__nu, __x, __J_nu, __N_nu); +16166: return __N_nu; +16166: } +16166: else +16166: { +16166: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; +16166: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); +16166: return __N_nu; +16166: } +16166: } +16166: # 569 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: void +16166: __sph_bessel_jn(unsigned int __n, _Tp __x, +16166: _Tp & __j_n, _Tp & __n_n, _Tp & __jp_n, _Tp & __np_n) +16166: { +16166: const _Tp __nu = _Tp(__n) + _Tp(0.5L); +16166: +16166: _Tp __J_nu, __N_nu, __Jp_nu, __Np_nu; +16166: __bessel_jn(__nu, __x, __J_nu, __N_nu, __Jp_nu, __Np_nu); +16166: +16166: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2() +16166: / std::sqrt(__x); +16166: +16166: __j_n = __factor * __J_nu; +16166: __n_n = __factor * __N_nu; +16166: __jp_n = __factor * __Jp_nu - __j_n / (_Tp(2) * __x); +16166: __np_n = __factor * __Np_nu - __n_n / (_Tp(2) * __x); +16166: +16166: return; +16166: } +16166: # 604 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: _Tp +16166: __sph_bessel(unsigned int __n, _Tp __x) +16166: { +16166: if (__x < _Tp(0)) +16166: std::__throw_domain_error(("Bad argument " "in __sph_bessel.") +16166: ); +16166: else if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__x == _Tp(0)) +16166: { +16166: if (__n == 0) +16166: return _Tp(1); +16166: else +16166: return _Tp(0); +16166: } +16166: else +16166: { +16166: _Tp __j_n, __n_n, __jp_n, __np_n; +16166: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n); +16166: return __j_n; +16166: } +16166: } +16166: # 642 "/usr/include/c++/14/tr1/bessel_function.tcc" 3 +16166: template +16166: _Tp +16166: __sph_neumann(unsigned int __n, _Tp __x) +16166: { +16166: if (__x < _Tp(0)) +16166: std::__throw_domain_error(("Bad argument " "in __sph_neumann.") +16166: ); +16166: else if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__x == _Tp(0)) +16166: return -std::numeric_limits<_Tp>::infinity(); +16166: else +16166: { +16166: _Tp __j_n, __n_n, __jp_n, __np_n; +16166: __sph_bessel_jn(__n, __x, __j_n, __n_n, __jp_n, __np_n); +16166: return __n_n; +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 49 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/beta_function.tcc" 1 3 +16166: # 49 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 65 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +16166: namespace __detail +16166: { +16166: # 79 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +16166: template +16166: _Tp +16166: __beta_gamma(_Tp __x, _Tp __y) +16166: { +16166: +16166: _Tp __bet; +16166: +16166: if (__x > __y) +16166: { +16166: __bet = ::std::tgamma(__x) +16166: / ::std::tgamma(__x + __y); +16166: __bet *= ::std::tgamma(__y); +16166: } +16166: else +16166: { +16166: __bet = ::std::tgamma(__y) +16166: / ::std::tgamma(__x + __y); +16166: __bet *= ::std::tgamma(__x); +16166: } +16166: # 111 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +16166: return __bet; +16166: } +16166: # 127 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +16166: template +16166: _Tp +16166: __beta_lgamma(_Tp __x, _Tp __y) +16166: { +16166: +16166: _Tp __bet = ::std::lgamma(__x) +16166: + ::std::lgamma(__y) +16166: - ::std::lgamma(__x + __y); +16166: +16166: +16166: +16166: +16166: +16166: __bet = std::exp(__bet); +16166: return __bet; +16166: } +16166: # 158 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +16166: template +16166: _Tp +16166: __beta_product(_Tp __x, _Tp __y) +16166: { +16166: +16166: _Tp __bet = (__x + __y) / (__x * __y); +16166: +16166: unsigned int __max_iter = 1000000; +16166: for (unsigned int __k = 1; __k < __max_iter; ++__k) +16166: { +16166: _Tp __term = (_Tp(1) + (__x + __y) / __k) +16166: / ((_Tp(1) + __x / __k) * (_Tp(1) + __y / __k)); +16166: __bet *= __term; +16166: } +16166: +16166: return __bet; +16166: } +16166: # 189 "/usr/include/c++/14/tr1/beta_function.tcc" 3 +16166: template +16166: inline _Tp +16166: __beta(_Tp __x, _Tp __y) +16166: { +16166: if (__isnan(__x) || __isnan(__y)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else +16166: return __beta_lgamma(__x, __y); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 50 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/ell_integral.tcc" 1 3 +16166: # 45 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 59 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: namespace __detail +16166: { +16166: # 76 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __ellint_rf(_Tp __x, _Tp __y, _Tp __z) +16166: { +16166: const _Tp __min = std::numeric_limits<_Tp>::min(); +16166: const _Tp __lolim = _Tp(5) * __min; +16166: +16166: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0)) +16166: std::__throw_domain_error(("Argument less than zero " "in __ellint_rf.") +16166: ); +16166: else if (__x + __y < __lolim || __x + __z < __lolim +16166: || __y + __z < __lolim) +16166: std::__throw_domain_error(("Argument too small in __ellint_rf")); +16166: else +16166: { +16166: const _Tp __c0 = _Tp(1) / _Tp(4); +16166: const _Tp __c1 = _Tp(1) / _Tp(24); +16166: const _Tp __c2 = _Tp(1) / _Tp(10); +16166: const _Tp __c3 = _Tp(3) / _Tp(44); +16166: const _Tp __c4 = _Tp(1) / _Tp(14); +16166: +16166: _Tp __xn = __x; +16166: _Tp __yn = __y; +16166: _Tp __zn = __z; +16166: +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __errtol = std::pow(__eps, _Tp(1) / _Tp(6)); +16166: _Tp __mu; +16166: _Tp __xndev, __yndev, __zndev; +16166: +16166: const unsigned int __max_iter = 100; +16166: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +16166: { +16166: __mu = (__xn + __yn + __zn) / _Tp(3); +16166: __xndev = 2 - (__mu + __xn) / __mu; +16166: __yndev = 2 - (__mu + __yn) / __mu; +16166: __zndev = 2 - (__mu + __zn) / __mu; +16166: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); +16166: __epsilon = std::max(__epsilon, std::abs(__zndev)); +16166: if (__epsilon < __errtol) +16166: break; +16166: const _Tp __xnroot = std::sqrt(__xn); +16166: const _Tp __ynroot = std::sqrt(__yn); +16166: const _Tp __znroot = std::sqrt(__zn); +16166: const _Tp __lambda = __xnroot * (__ynroot + __znroot) +16166: + __ynroot * __znroot; +16166: __xn = __c0 * (__xn + __lambda); +16166: __yn = __c0 * (__yn + __lambda); +16166: __zn = __c0 * (__zn + __lambda); +16166: } +16166: +16166: const _Tp __e2 = __xndev * __yndev - __zndev * __zndev; +16166: const _Tp __e3 = __xndev * __yndev * __zndev; +16166: const _Tp __s = _Tp(1) + (__c1 * __e2 - __c2 - __c3 * __e3) * __e2 +16166: + __c4 * __e3; +16166: +16166: return __s / std::sqrt(__mu); +16166: } +16166: } +16166: # 153 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __comp_ellint_1_series(_Tp __k) +16166: { +16166: +16166: const _Tp __kk = __k * __k; +16166: +16166: _Tp __term = __kk / _Tp(4); +16166: _Tp __sum = _Tp(1) + __term; +16166: +16166: const unsigned int __max_iter = 1000; +16166: for (unsigned int __i = 2; __i < __max_iter; ++__i) +16166: { +16166: __term *= (2 * __i - 1) * __kk / (2 * __i); +16166: if (__term < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: __sum += __term; +16166: } +16166: +16166: return __numeric_constants<_Tp>::__pi_2() * __sum; +16166: } +16166: # 191 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __comp_ellint_1(_Tp __k) +16166: { +16166: +16166: if (__isnan(__k)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (std::abs(__k) >= _Tp(1)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else +16166: return __ellint_rf(_Tp(0), _Tp(1) - __k * __k, _Tp(1)); +16166: } +16166: # 219 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __ellint_1(_Tp __k, _Tp __phi) +16166: { +16166: +16166: if (__isnan(__k) || __isnan(__phi)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (std::abs(__k) > _Tp(1)) +16166: std::__throw_domain_error(("Bad argument in __ellint_1.")); +16166: else +16166: { +16166: +16166: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() +16166: + _Tp(0.5L)); +16166: const _Tp __phi_red = __phi +16166: - __n * __numeric_constants<_Tp>::__pi(); +16166: +16166: const _Tp __s = std::sin(__phi_red); +16166: const _Tp __c = std::cos(__phi_red); +16166: +16166: const _Tp __F = __s +16166: * __ellint_rf(__c * __c, +16166: _Tp(1) - __k * __k * __s * __s, _Tp(1)); +16166: +16166: if (__n == 0) +16166: return __F; +16166: else +16166: return __F + _Tp(2) * __n * __comp_ellint_1(__k); +16166: } +16166: } +16166: # 266 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __comp_ellint_2_series(_Tp __k) +16166: { +16166: +16166: const _Tp __kk = __k * __k; +16166: +16166: _Tp __term = __kk; +16166: _Tp __sum = __term; +16166: +16166: const unsigned int __max_iter = 1000; +16166: for (unsigned int __i = 2; __i < __max_iter; ++__i) +16166: { +16166: const _Tp __i2m = 2 * __i - 1; +16166: const _Tp __i2 = 2 * __i; +16166: __term *= __i2m * __i2m * __kk / (__i2 * __i2); +16166: if (__term < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: __sum += __term / __i2m; +16166: } +16166: +16166: return __numeric_constants<_Tp>::__pi_2() * (_Tp(1) - __sum); +16166: } +16166: # 314 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __ellint_rd(_Tp __x, _Tp __y, _Tp __z) +16166: { +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6)); +16166: const _Tp __max = std::numeric_limits<_Tp>::max(); +16166: const _Tp __lolim = _Tp(2) / std::pow(__max, _Tp(2) / _Tp(3)); +16166: +16166: if (__x < _Tp(0) || __y < _Tp(0)) +16166: std::__throw_domain_error(("Argument less than zero " "in __ellint_rd.") +16166: ); +16166: else if (__x + __y < __lolim || __z < __lolim) +16166: std::__throw_domain_error(("Argument too small " "in __ellint_rd.") +16166: ); +16166: else +16166: { +16166: const _Tp __c0 = _Tp(1) / _Tp(4); +16166: const _Tp __c1 = _Tp(3) / _Tp(14); +16166: const _Tp __c2 = _Tp(1) / _Tp(6); +16166: const _Tp __c3 = _Tp(9) / _Tp(22); +16166: const _Tp __c4 = _Tp(3) / _Tp(26); +16166: +16166: _Tp __xn = __x; +16166: _Tp __yn = __y; +16166: _Tp __zn = __z; +16166: _Tp __sigma = _Tp(0); +16166: _Tp __power4 = _Tp(1); +16166: +16166: _Tp __mu; +16166: _Tp __xndev, __yndev, __zndev; +16166: +16166: const unsigned int __max_iter = 100; +16166: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +16166: { +16166: __mu = (__xn + __yn + _Tp(3) * __zn) / _Tp(5); +16166: __xndev = (__mu - __xn) / __mu; +16166: __yndev = (__mu - __yn) / __mu; +16166: __zndev = (__mu - __zn) / __mu; +16166: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); +16166: __epsilon = std::max(__epsilon, std::abs(__zndev)); +16166: if (__epsilon < __errtol) +16166: break; +16166: _Tp __xnroot = std::sqrt(__xn); +16166: _Tp __ynroot = std::sqrt(__yn); +16166: _Tp __znroot = std::sqrt(__zn); +16166: _Tp __lambda = __xnroot * (__ynroot + __znroot) +16166: + __ynroot * __znroot; +16166: __sigma += __power4 / (__znroot * (__zn + __lambda)); +16166: __power4 *= __c0; +16166: __xn = __c0 * (__xn + __lambda); +16166: __yn = __c0 * (__yn + __lambda); +16166: __zn = __c0 * (__zn + __lambda); +16166: } +16166: +16166: _Tp __ea = __xndev * __yndev; +16166: _Tp __eb = __zndev * __zndev; +16166: _Tp __ec = __ea - __eb; +16166: _Tp __ed = __ea - _Tp(6) * __eb; +16166: _Tp __ef = __ed + __ec + __ec; +16166: _Tp __s1 = __ed * (-__c1 + __c3 * __ed +16166: / _Tp(3) - _Tp(3) * __c4 * __zndev * __ef +16166: / _Tp(2)); +16166: _Tp __s2 = __zndev +16166: * (__c2 * __ef +16166: + __zndev * (-__c3 * __ec - __zndev * __c4 - __ea)); +16166: +16166: return _Tp(3) * __sigma + __power4 * (_Tp(1) + __s1 + __s2) +16166: / (__mu * std::sqrt(__mu)); +16166: } +16166: } +16166: # 399 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __comp_ellint_2(_Tp __k) +16166: { +16166: +16166: if (__isnan(__k)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (std::abs(__k) == 1) +16166: return _Tp(1); +16166: else if (std::abs(__k) > _Tp(1)) +16166: std::__throw_domain_error(("Bad argument in __comp_ellint_2.")); +16166: else +16166: { +16166: const _Tp __kk = __k * __k; +16166: +16166: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) +16166: - __kk * __ellint_rd(_Tp(0), _Tp(1) - __kk, _Tp(1)) / _Tp(3); +16166: } +16166: } +16166: # 433 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __ellint_2(_Tp __k, _Tp __phi) +16166: { +16166: +16166: if (__isnan(__k) || __isnan(__phi)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (std::abs(__k) > _Tp(1)) +16166: std::__throw_domain_error(("Bad argument in __ellint_2.")); +16166: else +16166: { +16166: +16166: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() +16166: + _Tp(0.5L)); +16166: const _Tp __phi_red = __phi +16166: - __n * __numeric_constants<_Tp>::__pi(); +16166: +16166: const _Tp __kk = __k * __k; +16166: const _Tp __s = std::sin(__phi_red); +16166: const _Tp __ss = __s * __s; +16166: const _Tp __sss = __ss * __s; +16166: const _Tp __c = std::cos(__phi_red); +16166: const _Tp __cc = __c * __c; +16166: +16166: const _Tp __E = __s +16166: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +16166: - __kk * __sss +16166: * __ellint_rd(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +16166: / _Tp(3); +16166: +16166: if (__n == 0) +16166: return __E; +16166: else +16166: return __E + _Tp(2) * __n * __comp_ellint_2(__k); +16166: } +16166: } +16166: # 492 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __ellint_rc(_Tp __x, _Tp __y) +16166: { +16166: const _Tp __min = std::numeric_limits<_Tp>::min(); +16166: const _Tp __lolim = _Tp(5) * __min; +16166: +16166: if (__x < _Tp(0) || __y < _Tp(0) || __x + __y < __lolim) +16166: std::__throw_domain_error(("Argument less than zero " "in __ellint_rc.") +16166: ); +16166: else +16166: { +16166: const _Tp __c0 = _Tp(1) / _Tp(4); +16166: const _Tp __c1 = _Tp(1) / _Tp(7); +16166: const _Tp __c2 = _Tp(9) / _Tp(22); +16166: const _Tp __c3 = _Tp(3) / _Tp(10); +16166: const _Tp __c4 = _Tp(3) / _Tp(8); +16166: +16166: _Tp __xn = __x; +16166: _Tp __yn = __y; +16166: +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __errtol = std::pow(__eps / _Tp(30), _Tp(1) / _Tp(6)); +16166: _Tp __mu; +16166: _Tp __sn; +16166: +16166: const unsigned int __max_iter = 100; +16166: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +16166: { +16166: __mu = (__xn + _Tp(2) * __yn) / _Tp(3); +16166: __sn = (__yn + __mu) / __mu - _Tp(2); +16166: if (std::abs(__sn) < __errtol) +16166: break; +16166: const _Tp __lambda = _Tp(2) * std::sqrt(__xn) * std::sqrt(__yn) +16166: + __yn; +16166: __xn = __c0 * (__xn + __lambda); +16166: __yn = __c0 * (__yn + __lambda); +16166: } +16166: +16166: _Tp __s = __sn * __sn +16166: * (__c3 + __sn*(__c1 + __sn * (__c4 + __sn * __c2))); +16166: +16166: return (_Tp(1) + __s) / std::sqrt(__mu); +16166: } +16166: } +16166: # 561 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __ellint_rj(_Tp __x, _Tp __y, _Tp __z, _Tp __p) +16166: { +16166: const _Tp __min = std::numeric_limits<_Tp>::min(); +16166: const _Tp __lolim = std::pow(_Tp(5) * __min, _Tp(1)/_Tp(3)); +16166: +16166: if (__x < _Tp(0) || __y < _Tp(0) || __z < _Tp(0)) +16166: std::__throw_domain_error(("Argument less than zero " "in __ellint_rj.") +16166: ); +16166: else if (__x + __y < __lolim || __x + __z < __lolim +16166: || __y + __z < __lolim || __p < __lolim) +16166: std::__throw_domain_error(("Argument too small " "in __ellint_rj") +16166: ); +16166: else +16166: { +16166: const _Tp __c0 = _Tp(1) / _Tp(4); +16166: const _Tp __c1 = _Tp(3) / _Tp(14); +16166: const _Tp __c2 = _Tp(1) / _Tp(3); +16166: const _Tp __c3 = _Tp(3) / _Tp(22); +16166: const _Tp __c4 = _Tp(3) / _Tp(26); +16166: +16166: _Tp __xn = __x; +16166: _Tp __yn = __y; +16166: _Tp __zn = __z; +16166: _Tp __pn = __p; +16166: _Tp __sigma = _Tp(0); +16166: _Tp __power4 = _Tp(1); +16166: +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __errtol = std::pow(__eps / _Tp(8), _Tp(1) / _Tp(6)); +16166: +16166: _Tp __mu; +16166: _Tp __xndev, __yndev, __zndev, __pndev; +16166: +16166: const unsigned int __max_iter = 100; +16166: for (unsigned int __iter = 0; __iter < __max_iter; ++__iter) +16166: { +16166: __mu = (__xn + __yn + __zn + _Tp(2) * __pn) / _Tp(5); +16166: __xndev = (__mu - __xn) / __mu; +16166: __yndev = (__mu - __yn) / __mu; +16166: __zndev = (__mu - __zn) / __mu; +16166: __pndev = (__mu - __pn) / __mu; +16166: _Tp __epsilon = std::max(std::abs(__xndev), std::abs(__yndev)); +16166: __epsilon = std::max(__epsilon, std::abs(__zndev)); +16166: __epsilon = std::max(__epsilon, std::abs(__pndev)); +16166: if (__epsilon < __errtol) +16166: break; +16166: const _Tp __xnroot = std::sqrt(__xn); +16166: const _Tp __ynroot = std::sqrt(__yn); +16166: const _Tp __znroot = std::sqrt(__zn); +16166: const _Tp __lambda = __xnroot * (__ynroot + __znroot) +16166: + __ynroot * __znroot; +16166: const _Tp __alpha1 = __pn * (__xnroot + __ynroot + __znroot) +16166: + __xnroot * __ynroot * __znroot; +16166: const _Tp __alpha2 = __alpha1 * __alpha1; +16166: const _Tp __beta = __pn * (__pn + __lambda) +16166: * (__pn + __lambda); +16166: __sigma += __power4 * __ellint_rc(__alpha2, __beta); +16166: __power4 *= __c0; +16166: __xn = __c0 * (__xn + __lambda); +16166: __yn = __c0 * (__yn + __lambda); +16166: __zn = __c0 * (__zn + __lambda); +16166: __pn = __c0 * (__pn + __lambda); +16166: } +16166: +16166: _Tp __ea = __xndev * (__yndev + __zndev) + __yndev * __zndev; +16166: _Tp __eb = __xndev * __yndev * __zndev; +16166: _Tp __ec = __pndev * __pndev; +16166: _Tp __e2 = __ea - _Tp(3) * __ec; +16166: _Tp __e3 = __eb + _Tp(2) * __pndev * (__ea - __ec); +16166: _Tp __s1 = _Tp(1) + __e2 * (-__c1 + _Tp(3) * __c3 * __e2 / _Tp(4) +16166: - _Tp(3) * __c4 * __e3 / _Tp(2)); +16166: _Tp __s2 = __eb * (__c2 / _Tp(2) +16166: + __pndev * (-__c3 - __c3 + __pndev * __c4)); +16166: _Tp __s3 = __pndev * __ea * (__c2 - __pndev * __c3) +16166: - __c2 * __pndev * __ec; +16166: +16166: return _Tp(3) * __sigma + __power4 * (__s1 + __s2 + __s3) +16166: / (__mu * std::sqrt(__mu)); +16166: } +16166: } +16166: # 661 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __comp_ellint_3(_Tp __k, _Tp __nu) +16166: { +16166: +16166: if (__isnan(__k) || __isnan(__nu)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__nu == _Tp(1)) +16166: return std::numeric_limits<_Tp>::infinity(); +16166: else if (std::abs(__k) > _Tp(1)) +16166: std::__throw_domain_error(("Bad argument in __comp_ellint_3.")); +16166: else +16166: { +16166: const _Tp __kk = __k * __k; +16166: +16166: return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1)) +16166: + __nu +16166: * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) - __nu) +16166: / _Tp(3); +16166: } +16166: } +16166: # 701 "/usr/include/c++/14/tr1/ell_integral.tcc" 3 +16166: template +16166: _Tp +16166: __ellint_3(_Tp __k, _Tp __nu, _Tp __phi) +16166: { +16166: +16166: if (__isnan(__k) || __isnan(__nu) || __isnan(__phi)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (std::abs(__k) > _Tp(1)) +16166: std::__throw_domain_error(("Bad argument in __ellint_3.")); +16166: else +16166: { +16166: +16166: const int __n = std::floor(__phi / __numeric_constants<_Tp>::__pi() +16166: + _Tp(0.5L)); +16166: const _Tp __phi_red = __phi +16166: - __n * __numeric_constants<_Tp>::__pi(); +16166: +16166: const _Tp __kk = __k * __k; +16166: const _Tp __s = std::sin(__phi_red); +16166: const _Tp __ss = __s * __s; +16166: const _Tp __sss = __ss * __s; +16166: const _Tp __c = std::cos(__phi_red); +16166: const _Tp __cc = __c * __c; +16166: +16166: const _Tp __Pi = __s +16166: * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1)) +16166: + __nu * __sss +16166: * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1), +16166: _Tp(1) - __nu * __ss) / _Tp(3); +16166: +16166: if (__n == 0) +16166: return __Pi; +16166: else +16166: return __Pi + _Tp(2) * __n * __comp_ellint_3(__k, __nu); +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 51 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/exp_integral.tcc" 1 3 +16166: # 50 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 64 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: namespace __detail +16166: { +16166: template _Tp __expint_E1(_Tp); +16166: # 81 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_E1_series(_Tp __x) +16166: { +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: _Tp __term = _Tp(1); +16166: _Tp __esum = _Tp(0); +16166: _Tp __osum = _Tp(0); +16166: const unsigned int __max_iter = 1000; +16166: for (unsigned int __i = 1; __i < __max_iter; ++__i) +16166: { +16166: __term *= - __x / __i; +16166: if (std::abs(__term) < __eps) +16166: break; +16166: if (__term >= _Tp(0)) +16166: __esum += __term / __i; +16166: else +16166: __osum += __term / __i; +16166: } +16166: +16166: return - __esum - __osum +16166: - __numeric_constants<_Tp>::__gamma_e() - std::log(__x); +16166: } +16166: # 118 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_E1_asymp(_Tp __x) +16166: { +16166: _Tp __term = _Tp(1); +16166: _Tp __esum = _Tp(1); +16166: _Tp __osum = _Tp(0); +16166: const unsigned int __max_iter = 1000; +16166: for (unsigned int __i = 1; __i < __max_iter; ++__i) +16166: { +16166: _Tp __prev = __term; +16166: __term *= - __i / __x; +16166: if (std::abs(__term) > std::abs(__prev)) +16166: break; +16166: if (__term >= _Tp(0)) +16166: __esum += __term; +16166: else +16166: __osum += __term; +16166: } +16166: +16166: return std::exp(- __x) * (__esum + __osum) / __x; +16166: } +16166: # 155 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_En_series(unsigned int __n, _Tp __x) +16166: { +16166: const unsigned int __max_iter = 1000; +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const int __nm1 = __n - 1; +16166: _Tp __ans = (__nm1 != 0 +16166: ? _Tp(1) / __nm1 : -std::log(__x) +16166: - __numeric_constants<_Tp>::__gamma_e()); +16166: _Tp __fact = _Tp(1); +16166: for (int __i = 1; __i <= __max_iter; ++__i) +16166: { +16166: __fact *= -__x / _Tp(__i); +16166: _Tp __del; +16166: if ( __i != __nm1 ) +16166: __del = -__fact / _Tp(__i - __nm1); +16166: else +16166: { +16166: _Tp __psi = -__numeric_constants<_Tp>::gamma_e(); +16166: for (int __ii = 1; __ii <= __nm1; ++__ii) +16166: __psi += _Tp(1) / _Tp(__ii); +16166: __del = __fact * (__psi - std::log(__x)); +16166: } +16166: __ans += __del; +16166: if (std::abs(__del) < __eps * std::abs(__ans)) +16166: return __ans; +16166: } +16166: std::__throw_runtime_error(("Series summation failed " "in __expint_En_series.") +16166: ); +16166: } +16166: # 201 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_En_cont_frac(unsigned int __n, _Tp __x) +16166: { +16166: const unsigned int __max_iter = 1000; +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __fp_min = std::numeric_limits<_Tp>::min(); +16166: const int __nm1 = __n - 1; +16166: _Tp __b = __x + _Tp(__n); +16166: _Tp __c = _Tp(1) / __fp_min; +16166: _Tp __d = _Tp(1) / __b; +16166: _Tp __h = __d; +16166: for ( unsigned int __i = 1; __i <= __max_iter; ++__i ) +16166: { +16166: _Tp __a = -_Tp(__i * (__nm1 + __i)); +16166: __b += _Tp(2); +16166: __d = _Tp(1) / (__a * __d + __b); +16166: __c = __b + __a / __c; +16166: const _Tp __del = __c * __d; +16166: __h *= __del; +16166: if (std::abs(__del - _Tp(1)) < __eps) +16166: { +16166: const _Tp __ans = __h * std::exp(-__x); +16166: return __ans; +16166: } +16166: } +16166: std::__throw_runtime_error(("Continued fraction failed " "in __expint_En_cont_frac.") +16166: ); +16166: } +16166: # 246 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_En_recursion(unsigned int __n, _Tp __x) +16166: { +16166: _Tp __En; +16166: _Tp __E1 = __expint_E1(__x); +16166: if (__x < _Tp(__n)) +16166: { +16166: +16166: __En = __E1; +16166: for (unsigned int __j = 2; __j < __n; ++__j) +16166: __En = (std::exp(-__x) - __x * __En) / _Tp(__j - 1); +16166: } +16166: else +16166: { +16166: +16166: __En = _Tp(1); +16166: const int __N = __n + 20; +16166: _Tp __save = _Tp(0); +16166: for (int __j = __N; __j > 0; --__j) +16166: { +16166: __En = (std::exp(-__x) - __j * __En) / __x; +16166: if (__j == __n) +16166: __save = __En; +16166: } +16166: _Tp __norm = __En / __E1; +16166: __En /= __norm; +16166: } +16166: +16166: return __En; +16166: } +16166: # 290 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_Ei_series(_Tp __x) +16166: { +16166: _Tp __term = _Tp(1); +16166: _Tp __sum = _Tp(0); +16166: const unsigned int __max_iter = 1000; +16166: for (unsigned int __i = 1; __i < __max_iter; ++__i) +16166: { +16166: __term *= __x / __i; +16166: __sum += __term / __i; +16166: if (__term < std::numeric_limits<_Tp>::epsilon() * __sum) +16166: break; +16166: } +16166: +16166: return __numeric_constants<_Tp>::__gamma_e() + __sum + std::log(__x); +16166: } +16166: # 321 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_Ei_asymp(_Tp __x) +16166: { +16166: _Tp __term = _Tp(1); +16166: _Tp __sum = _Tp(1); +16166: const unsigned int __max_iter = 1000; +16166: for (unsigned int __i = 1; __i < __max_iter; ++__i) +16166: { +16166: _Tp __prev = __term; +16166: __term *= __i / __x; +16166: if (__term < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: if (__term >= __prev) +16166: break; +16166: __sum += __term; +16166: } +16166: +16166: return std::exp(__x) * __sum / __x; +16166: } +16166: # 354 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_Ei(_Tp __x) +16166: { +16166: if (__x < _Tp(0)) +16166: return -__expint_E1(-__x); +16166: else if (__x < -std::log(std::numeric_limits<_Tp>::epsilon())) +16166: return __expint_Ei_series(__x); +16166: else +16166: return __expint_Ei_asymp(__x); +16166: } +16166: # 378 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_E1(_Tp __x) +16166: { +16166: if (__x < _Tp(0)) +16166: return -__expint_Ei(-__x); +16166: else if (__x < _Tp(1)) +16166: return __expint_E1_series(__x); +16166: else if (__x < _Tp(100)) +16166: return __expint_En_cont_frac(1, __x); +16166: else +16166: return __expint_E1_asymp(__x); +16166: } +16166: # 408 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_asymp(unsigned int __n, _Tp __x) +16166: { +16166: _Tp __term = _Tp(1); +16166: _Tp __sum = _Tp(1); +16166: for (unsigned int __i = 1; __i <= __n; ++__i) +16166: { +16166: _Tp __prev = __term; +16166: __term *= -(__n - __i + 1) / __x; +16166: if (std::abs(__term) > std::abs(__prev)) +16166: break; +16166: __sum += __term; +16166: } +16166: +16166: return std::exp(-__x) * __sum / __x; +16166: } +16166: # 442 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint_large_n(unsigned int __n, _Tp __x) +16166: { +16166: const _Tp __xpn = __x + __n; +16166: const _Tp __xpn2 = __xpn * __xpn; +16166: _Tp __term = _Tp(1); +16166: _Tp __sum = _Tp(1); +16166: for (unsigned int __i = 1; __i <= __n; ++__i) +16166: { +16166: _Tp __prev = __term; +16166: __term *= (__n - 2 * (__i - 1) * __x) / __xpn2; +16166: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: __sum += __term; +16166: } +16166: +16166: return std::exp(-__x) * __sum / __xpn; +16166: } +16166: # 476 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: _Tp +16166: __expint(unsigned int __n, _Tp __x) +16166: { +16166: +16166: if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__n <= 1 && __x == _Tp(0)) +16166: return std::numeric_limits<_Tp>::infinity(); +16166: else +16166: { +16166: _Tp __E0 = std::exp(__x) / __x; +16166: if (__n == 0) +16166: return __E0; +16166: +16166: _Tp __E1 = __expint_E1(__x); +16166: if (__n == 1) +16166: return __E1; +16166: +16166: if (__x == _Tp(0)) +16166: return _Tp(1) / static_cast<_Tp>(__n - 1); +16166: +16166: _Tp __En = __expint_En_recursion(__n, __x); +16166: +16166: return __En; +16166: } +16166: } +16166: # 516 "/usr/include/c++/14/tr1/exp_integral.tcc" 3 +16166: template +16166: inline _Tp +16166: __expint(_Tp __x) +16166: { +16166: if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else +16166: return __expint_Ei(__x); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 52 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/hypergeometric.tcc" 1 3 +16166: # 44 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 60 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: namespace __detail +16166: { +16166: # 83 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: template +16166: _Tp +16166: __conf_hyperg_series(_Tp __a, _Tp __c, _Tp __x) +16166: { +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: +16166: _Tp __term = _Tp(1); +16166: _Tp __Fac = _Tp(1); +16166: const unsigned int __max_iter = 100000; +16166: unsigned int __i; +16166: for (__i = 0; __i < __max_iter; ++__i) +16166: { +16166: __term *= (__a + _Tp(__i)) * __x +16166: / ((__c + _Tp(__i)) * _Tp(1 + __i)); +16166: if (std::abs(__term) < __eps) +16166: { +16166: break; +16166: } +16166: __Fac += __term; +16166: } +16166: if (__i == __max_iter) +16166: std::__throw_runtime_error(("Series failed to converge " "in __conf_hyperg_series.") +16166: ); +16166: +16166: return __Fac; +16166: } +16166: # 120 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: template +16166: _Tp +16166: __conf_hyperg_luke(_Tp __a, _Tp __c, _Tp __xin) +16166: { +16166: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L)); +16166: const int __nmax = 20000; +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __x = -__xin; +16166: const _Tp __x3 = __x * __x * __x; +16166: const _Tp __t0 = __a / __c; +16166: const _Tp __t1 = (__a + _Tp(1)) / (_Tp(2) * __c); +16166: const _Tp __t2 = (__a + _Tp(2)) / (_Tp(2) * (__c + _Tp(1))); +16166: _Tp __F = _Tp(1); +16166: _Tp __prec; +16166: +16166: _Tp __Bnm3 = _Tp(1); +16166: _Tp __Bnm2 = _Tp(1) + __t1 * __x; +16166: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x); +16166: +16166: _Tp __Anm3 = _Tp(1); +16166: _Tp __Anm2 = __Bnm2 - __t0 * __x; +16166: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x +16166: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x; +16166: +16166: int __n = 3; +16166: while(1) +16166: { +16166: _Tp __npam1 = _Tp(__n - 1) + __a; +16166: _Tp __npcm1 = _Tp(__n - 1) + __c; +16166: _Tp __npam2 = _Tp(__n - 2) + __a; +16166: _Tp __npcm2 = _Tp(__n - 2) + __c; +16166: _Tp __tnm1 = _Tp(2 * __n - 1); +16166: _Tp __tnm3 = _Tp(2 * __n - 3); +16166: _Tp __tnm5 = _Tp(2 * __n - 5); +16166: _Tp __F1 = (_Tp(__n - 2) - __a) / (_Tp(2) * __tnm3 * __npcm1); +16166: _Tp __F2 = (_Tp(__n) + __a) * __npam1 +16166: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1); +16166: _Tp __F3 = -__npam2 * __npam1 * (_Tp(__n - 2) - __a) +16166: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5 +16166: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1); +16166: _Tp __E = -__npam1 * (_Tp(__n - 1) - __c) +16166: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1); +16166: +16166: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1 +16166: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3; +16166: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1 +16166: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3; +16166: _Tp __r = __An / __Bn; +16166: +16166: __prec = std::abs((__F - __r) / __F); +16166: __F = __r; +16166: +16166: if (__prec < __eps || __n > __nmax) +16166: break; +16166: +16166: if (std::abs(__An) > __big || std::abs(__Bn) > __big) +16166: { +16166: __An /= __big; +16166: __Bn /= __big; +16166: __Anm1 /= __big; +16166: __Bnm1 /= __big; +16166: __Anm2 /= __big; +16166: __Bnm2 /= __big; +16166: __Anm3 /= __big; +16166: __Bnm3 /= __big; +16166: } +16166: else if (std::abs(__An) < _Tp(1) / __big +16166: || std::abs(__Bn) < _Tp(1) / __big) +16166: { +16166: __An *= __big; +16166: __Bn *= __big; +16166: __Anm1 *= __big; +16166: __Bnm1 *= __big; +16166: __Anm2 *= __big; +16166: __Bnm2 *= __big; +16166: __Anm3 *= __big; +16166: __Bnm3 *= __big; +16166: } +16166: +16166: ++__n; +16166: __Bnm3 = __Bnm2; +16166: __Bnm2 = __Bnm1; +16166: __Bnm1 = __Bn; +16166: __Anm3 = __Anm2; +16166: __Anm2 = __Anm1; +16166: __Anm1 = __An; +16166: } +16166: +16166: if (__n >= __nmax) +16166: std::__throw_runtime_error(("Iteration failed to converge " "in __conf_hyperg_luke.") +16166: ); +16166: +16166: return __F; +16166: } +16166: # 227 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: template +16166: _Tp +16166: __conf_hyperg(_Tp __a, _Tp __c, _Tp __x) +16166: { +16166: +16166: const _Tp __c_nint = ::std::nearbyint(__c); +16166: +16166: +16166: +16166: if (__isnan(__a) || __isnan(__c) || __isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__c_nint == __c && __c_nint <= 0) +16166: return std::numeric_limits<_Tp>::infinity(); +16166: else if (__a == _Tp(0)) +16166: return _Tp(1); +16166: else if (__c == __a) +16166: return std::exp(__x); +16166: else if (__x < _Tp(0)) +16166: return __conf_hyperg_luke(__a, __c, __x); +16166: else +16166: return __conf_hyperg_series(__a, __c, __x); +16166: } +16166: # 271 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: template +16166: _Tp +16166: __hyperg_series(_Tp __a, _Tp __b, _Tp __c, _Tp __x) +16166: { +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: +16166: _Tp __term = _Tp(1); +16166: _Tp __Fabc = _Tp(1); +16166: const unsigned int __max_iter = 100000; +16166: unsigned int __i; +16166: for (__i = 0; __i < __max_iter; ++__i) +16166: { +16166: __term *= (__a + _Tp(__i)) * (__b + _Tp(__i)) * __x +16166: / ((__c + _Tp(__i)) * _Tp(1 + __i)); +16166: if (std::abs(__term) < __eps) +16166: { +16166: break; +16166: } +16166: __Fabc += __term; +16166: } +16166: if (__i == __max_iter) +16166: std::__throw_runtime_error(("Series failed to converge " "in __hyperg_series.") +16166: ); +16166: +16166: return __Fabc; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _Tp +16166: __hyperg_luke(_Tp __a, _Tp __b, _Tp __c, _Tp __xin) +16166: { +16166: const _Tp __big = std::pow(std::numeric_limits<_Tp>::max(), _Tp(0.16L)); +16166: const int __nmax = 20000; +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __x = -__xin; +16166: const _Tp __x3 = __x * __x * __x; +16166: const _Tp __t0 = __a * __b / __c; +16166: const _Tp __t1 = (__a + _Tp(1)) * (__b + _Tp(1)) / (_Tp(2) * __c); +16166: const _Tp __t2 = (__a + _Tp(2)) * (__b + _Tp(2)) +16166: / (_Tp(2) * (__c + _Tp(1))); +16166: +16166: _Tp __F = _Tp(1); +16166: +16166: _Tp __Bnm3 = _Tp(1); +16166: _Tp __Bnm2 = _Tp(1) + __t1 * __x; +16166: _Tp __Bnm1 = _Tp(1) + __t2 * __x * (_Tp(1) + __t1 / _Tp(3) * __x); +16166: +16166: _Tp __Anm3 = _Tp(1); +16166: _Tp __Anm2 = __Bnm2 - __t0 * __x; +16166: _Tp __Anm1 = __Bnm1 - __t0 * (_Tp(1) + __t2 * __x) * __x +16166: + __t0 * __t1 * (__c / (__c + _Tp(1))) * __x * __x; +16166: +16166: int __n = 3; +16166: while (1) +16166: { +16166: const _Tp __npam1 = _Tp(__n - 1) + __a; +16166: const _Tp __npbm1 = _Tp(__n - 1) + __b; +16166: const _Tp __npcm1 = _Tp(__n - 1) + __c; +16166: const _Tp __npam2 = _Tp(__n - 2) + __a; +16166: const _Tp __npbm2 = _Tp(__n - 2) + __b; +16166: const _Tp __npcm2 = _Tp(__n - 2) + __c; +16166: const _Tp __tnm1 = _Tp(2 * __n - 1); +16166: const _Tp __tnm3 = _Tp(2 * __n - 3); +16166: const _Tp __tnm5 = _Tp(2 * __n - 5); +16166: const _Tp __n2 = __n * __n; +16166: const _Tp __F1 = (_Tp(3) * __n2 + (__a + __b - _Tp(6)) * __n +16166: + _Tp(2) - __a * __b - _Tp(2) * (__a + __b)) +16166: / (_Tp(2) * __tnm3 * __npcm1); +16166: const _Tp __F2 = -(_Tp(3) * __n2 - (__a + __b + _Tp(6)) * __n +16166: + _Tp(2) - __a * __b) * __npam1 * __npbm1 +16166: / (_Tp(4) * __tnm1 * __tnm3 * __npcm2 * __npcm1); +16166: const _Tp __F3 = (__npam2 * __npam1 * __npbm2 * __npbm1 +16166: * (_Tp(__n - 2) - __a) * (_Tp(__n - 2) - __b)) +16166: / (_Tp(8) * __tnm3 * __tnm3 * __tnm5 +16166: * (_Tp(__n - 3) + __c) * __npcm2 * __npcm1); +16166: const _Tp __E = -__npam1 * __npbm1 * (_Tp(__n - 1) - __c) +16166: / (_Tp(2) * __tnm3 * __npcm2 * __npcm1); +16166: +16166: _Tp __An = (_Tp(1) + __F1 * __x) * __Anm1 +16166: + (__E + __F2 * __x) * __x * __Anm2 + __F3 * __x3 * __Anm3; +16166: _Tp __Bn = (_Tp(1) + __F1 * __x) * __Bnm1 +16166: + (__E + __F2 * __x) * __x * __Bnm2 + __F3 * __x3 * __Bnm3; +16166: const _Tp __r = __An / __Bn; +16166: +16166: const _Tp __prec = std::abs((__F - __r) / __F); +16166: __F = __r; +16166: +16166: if (__prec < __eps || __n > __nmax) +16166: break; +16166: +16166: if (std::abs(__An) > __big || std::abs(__Bn) > __big) +16166: { +16166: __An /= __big; +16166: __Bn /= __big; +16166: __Anm1 /= __big; +16166: __Bnm1 /= __big; +16166: __Anm2 /= __big; +16166: __Bnm2 /= __big; +16166: __Anm3 /= __big; +16166: __Bnm3 /= __big; +16166: } +16166: else if (std::abs(__An) < _Tp(1) / __big +16166: || std::abs(__Bn) < _Tp(1) / __big) +16166: { +16166: __An *= __big; +16166: __Bn *= __big; +16166: __Anm1 *= __big; +16166: __Bnm1 *= __big; +16166: __Anm2 *= __big; +16166: __Bnm2 *= __big; +16166: __Anm3 *= __big; +16166: __Bnm3 *= __big; +16166: } +16166: +16166: ++__n; +16166: __Bnm3 = __Bnm2; +16166: __Bnm2 = __Bnm1; +16166: __Bnm1 = __Bn; +16166: __Anm3 = __Anm2; +16166: __Anm2 = __Anm1; +16166: __Anm1 = __An; +16166: } +16166: +16166: if (__n >= __nmax) +16166: std::__throw_runtime_error(("Iteration failed to converge " "in __hyperg_luke.") +16166: ); +16166: +16166: return __F; +16166: } +16166: # 438 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: template +16166: _Tp +16166: __hyperg_reflect(_Tp __a, _Tp __b, _Tp __c, _Tp __x) +16166: { +16166: const _Tp __d = __c - __a - __b; +16166: const int __intd = std::floor(__d + _Tp(0.5L)); +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __toler = _Tp(1000) * __eps; +16166: const _Tp __log_max = std::log(std::numeric_limits<_Tp>::max()); +16166: const bool __d_integer = (std::abs(__d - __intd) < __toler); +16166: +16166: if (__d_integer) +16166: { +16166: const _Tp __ln_omx = std::log(_Tp(1) - __x); +16166: const _Tp __ad = std::abs(__d); +16166: _Tp __F1, __F2; +16166: +16166: _Tp __d1, __d2; +16166: if (__d >= _Tp(0)) +16166: { +16166: __d1 = __d; +16166: __d2 = _Tp(0); +16166: } +16166: else +16166: { +16166: __d1 = _Tp(0); +16166: __d2 = __d; +16166: } +16166: +16166: const _Tp __lng_c = __log_gamma(__c); +16166: +16166: +16166: if (__ad < __eps) +16166: { +16166: +16166: __F1 = _Tp(0); +16166: } +16166: else +16166: { +16166: +16166: bool __ok_d1 = true; +16166: _Tp __lng_ad, __lng_ad1, __lng_bd1; +16166: try +16166: { +16166: __lng_ad = __log_gamma(__ad); +16166: __lng_ad1 = __log_gamma(__a + __d1); +16166: __lng_bd1 = __log_gamma(__b + __d1); +16166: } +16166: catch(...) +16166: { +16166: __ok_d1 = false; +16166: } +16166: +16166: if (__ok_d1) +16166: { +16166: +16166: +16166: +16166: _Tp __sum1 = _Tp(1); +16166: _Tp __term = _Tp(1); +16166: _Tp __ln_pre1 = __lng_ad + __lng_c + __d2 * __ln_omx +16166: - __lng_ad1 - __lng_bd1; +16166: +16166: +16166: +16166: for (int __i = 1; __i < __ad; ++__i) +16166: { +16166: const int __j = __i - 1; +16166: __term *= (__a + __d2 + __j) * (__b + __d2 + __j) +16166: / (_Tp(1) + __d2 + __j) / __i * (_Tp(1) - __x); +16166: __sum1 += __term; +16166: } +16166: +16166: if (__ln_pre1 > __log_max) +16166: std::__throw_runtime_error(("Overflow of gamma functions" " in __hyperg_luke.") +16166: ); +16166: else +16166: __F1 = std::exp(__ln_pre1) * __sum1; +16166: } +16166: else +16166: { +16166: +16166: +16166: __F1 = _Tp(0); +16166: } +16166: } +16166: +16166: +16166: bool __ok_d2 = true; +16166: _Tp __lng_ad2, __lng_bd2; +16166: try +16166: { +16166: __lng_ad2 = __log_gamma(__a + __d2); +16166: __lng_bd2 = __log_gamma(__b + __d2); +16166: } +16166: catch(...) +16166: { +16166: __ok_d2 = false; +16166: } +16166: +16166: if (__ok_d2) +16166: { +16166: +16166: +16166: const int __maxiter = 2000; +16166: const _Tp __psi_1 = -__numeric_constants<_Tp>::__gamma_e(); +16166: const _Tp __psi_1pd = __psi(_Tp(1) + __ad); +16166: const _Tp __psi_apd1 = __psi(__a + __d1); +16166: const _Tp __psi_bpd1 = __psi(__b + __d1); +16166: +16166: _Tp __psi_term = __psi_1 + __psi_1pd - __psi_apd1 +16166: - __psi_bpd1 - __ln_omx; +16166: _Tp __fact = _Tp(1); +16166: _Tp __sum2 = __psi_term; +16166: _Tp __ln_pre2 = __lng_c + __d1 * __ln_omx +16166: - __lng_ad2 - __lng_bd2; +16166: +16166: +16166: int __j; +16166: for (__j = 1; __j < __maxiter; ++__j) +16166: { +16166: +16166: +16166: const _Tp __term1 = _Tp(1) / _Tp(__j) +16166: + _Tp(1) / (__ad + __j); +16166: const _Tp __term2 = _Tp(1) / (__a + __d1 + _Tp(__j - 1)) +16166: + _Tp(1) / (__b + __d1 + _Tp(__j - 1)); +16166: __psi_term += __term1 - __term2; +16166: __fact *= (__a + __d1 + _Tp(__j - 1)) +16166: * (__b + __d1 + _Tp(__j - 1)) +16166: / ((__ad + __j) * __j) * (_Tp(1) - __x); +16166: const _Tp __delta = __fact * __psi_term; +16166: __sum2 += __delta; +16166: if (std::abs(__delta) < __eps * std::abs(__sum2)) +16166: break; +16166: } +16166: if (__j == __maxiter) +16166: std::__throw_runtime_error(("Sum F2 failed to converge " "in __hyperg_reflect") +16166: ); +16166: +16166: if (__sum2 == _Tp(0)) +16166: __F2 = _Tp(0); +16166: else +16166: __F2 = std::exp(__ln_pre2) * __sum2; +16166: } +16166: else +16166: { +16166: +16166: +16166: __F2 = _Tp(0); +16166: } +16166: +16166: const _Tp __sgn_2 = (__intd % 2 == 1 ? -_Tp(1) : _Tp(1)); +16166: const _Tp __F = __F1 + __sgn_2 * __F2; +16166: +16166: return __F; +16166: } +16166: else +16166: { +16166: +16166: +16166: +16166: +16166: bool __ok1 = true; +16166: _Tp __sgn_g1ca = _Tp(0), __ln_g1ca = _Tp(0); +16166: _Tp __sgn_g1cb = _Tp(0), __ln_g1cb = _Tp(0); +16166: try +16166: { +16166: __sgn_g1ca = __log_gamma_sign(__c - __a); +16166: __ln_g1ca = __log_gamma(__c - __a); +16166: __sgn_g1cb = __log_gamma_sign(__c - __b); +16166: __ln_g1cb = __log_gamma(__c - __b); +16166: } +16166: catch(...) +16166: { +16166: __ok1 = false; +16166: } +16166: +16166: bool __ok2 = true; +16166: _Tp __sgn_g2a = _Tp(0), __ln_g2a = _Tp(0); +16166: _Tp __sgn_g2b = _Tp(0), __ln_g2b = _Tp(0); +16166: try +16166: { +16166: __sgn_g2a = __log_gamma_sign(__a); +16166: __ln_g2a = __log_gamma(__a); +16166: __sgn_g2b = __log_gamma_sign(__b); +16166: __ln_g2b = __log_gamma(__b); +16166: } +16166: catch(...) +16166: { +16166: __ok2 = false; +16166: } +16166: +16166: const _Tp __sgn_gc = __log_gamma_sign(__c); +16166: const _Tp __ln_gc = __log_gamma(__c); +16166: const _Tp __sgn_gd = __log_gamma_sign(__d); +16166: const _Tp __ln_gd = __log_gamma(__d); +16166: const _Tp __sgn_gmd = __log_gamma_sign(-__d); +16166: const _Tp __ln_gmd = __log_gamma(-__d); +16166: +16166: const _Tp __sgn1 = __sgn_gc * __sgn_gd * __sgn_g1ca * __sgn_g1cb; +16166: const _Tp __sgn2 = __sgn_gc * __sgn_gmd * __sgn_g2a * __sgn_g2b; +16166: +16166: _Tp __pre1, __pre2; +16166: if (__ok1 && __ok2) +16166: { +16166: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb; +16166: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b +16166: + __d * std::log(_Tp(1) - __x); +16166: if (__ln_pre1 < __log_max && __ln_pre2 < __log_max) +16166: { +16166: __pre1 = std::exp(__ln_pre1); +16166: __pre2 = std::exp(__ln_pre2); +16166: __pre1 *= __sgn1; +16166: __pre2 *= __sgn2; +16166: } +16166: else +16166: { +16166: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") +16166: ); +16166: } +16166: } +16166: else if (__ok1 && !__ok2) +16166: { +16166: _Tp __ln_pre1 = __ln_gc + __ln_gd - __ln_g1ca - __ln_g1cb; +16166: if (__ln_pre1 < __log_max) +16166: { +16166: __pre1 = std::exp(__ln_pre1); +16166: __pre1 *= __sgn1; +16166: __pre2 = _Tp(0); +16166: } +16166: else +16166: { +16166: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") +16166: ); +16166: } +16166: } +16166: else if (!__ok1 && __ok2) +16166: { +16166: _Tp __ln_pre2 = __ln_gc + __ln_gmd - __ln_g2a - __ln_g2b +16166: + __d * std::log(_Tp(1) - __x); +16166: if (__ln_pre2 < __log_max) +16166: { +16166: __pre1 = _Tp(0); +16166: __pre2 = std::exp(__ln_pre2); +16166: __pre2 *= __sgn2; +16166: } +16166: else +16166: { +16166: std::__throw_runtime_error(("Overflow of gamma functions " "in __hyperg_reflect") +16166: ); +16166: } +16166: } +16166: else +16166: { +16166: __pre1 = _Tp(0); +16166: __pre2 = _Tp(0); +16166: std::__throw_runtime_error(("Underflow of gamma functions " "in __hyperg_reflect") +16166: ); +16166: } +16166: +16166: const _Tp __F1 = __hyperg_series(__a, __b, _Tp(1) - __d, +16166: _Tp(1) - __x); +16166: const _Tp __F2 = __hyperg_series(__c - __a, __c - __b, _Tp(1) + __d, +16166: _Tp(1) - __x); +16166: +16166: const _Tp __F = __pre1 * __F1 + __pre2 * __F2; +16166: +16166: return __F; +16166: } +16166: } +16166: # 728 "/usr/include/c++/14/tr1/hypergeometric.tcc" 3 +16166: template +16166: _Tp +16166: __hyperg(_Tp __a, _Tp __b, _Tp __c, _Tp __x) +16166: { +16166: +16166: const _Tp __a_nint = ::std::nearbyint(__a); +16166: const _Tp __b_nint = ::std::nearbyint(__b); +16166: const _Tp __c_nint = ::std::nearbyint(__c); +16166: +16166: +16166: +16166: +16166: +16166: const _Tp __toler = _Tp(1000) * std::numeric_limits<_Tp>::epsilon(); +16166: if (std::abs(__x) >= _Tp(1)) +16166: std::__throw_domain_error(("Argument outside unit circle " "in __hyperg.") +16166: ); +16166: else if (__isnan(__a) || __isnan(__b) +16166: || __isnan(__c) || __isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__c_nint == __c && __c_nint <= _Tp(0)) +16166: return std::numeric_limits<_Tp>::infinity(); +16166: else if (std::abs(__c - __b) < __toler || std::abs(__c - __a) < __toler) +16166: return std::pow(_Tp(1) - __x, __c - __a - __b); +16166: else if (__a >= _Tp(0) && __b >= _Tp(0) && __c >= _Tp(0) +16166: && __x >= _Tp(0) && __x < _Tp(0.995L)) +16166: return __hyperg_series(__a, __b, __c, __x); +16166: else if (std::abs(__a) < _Tp(10) && std::abs(__b) < _Tp(10)) +16166: { +16166: +16166: +16166: if (__a < _Tp(0) && std::abs(__a - __a_nint) < __toler) +16166: return __hyperg_series(__a_nint, __b, __c, __x); +16166: else if (__b < _Tp(0) && std::abs(__b - __b_nint) < __toler) +16166: return __hyperg_series(__a, __b_nint, __c, __x); +16166: else if (__x < -_Tp(0.25L)) +16166: return __hyperg_luke(__a, __b, __c, __x); +16166: else if (__x < _Tp(0.5L)) +16166: return __hyperg_series(__a, __b, __c, __x); +16166: else +16166: if (std::abs(__c) > _Tp(10)) +16166: return __hyperg_series(__a, __b, __c, __x); +16166: else +16166: return __hyperg_reflect(__a, __b, __c, __x); +16166: } +16166: else +16166: return __hyperg_luke(__a, __b, __c, __x); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 53 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/legendre_function.tcc" 1 3 +16166: # 49 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 65 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +16166: namespace __detail +16166: { +16166: # 80 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +16166: template +16166: _Tp +16166: __poly_legendre_p(unsigned int __l, _Tp __x) +16166: { +16166: +16166: if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__x == +_Tp(1)) +16166: return +_Tp(1); +16166: else if (__x == -_Tp(1)) +16166: return (__l % 2 == 1 ? -_Tp(1) : +_Tp(1)); +16166: else +16166: { +16166: _Tp __p_lm2 = _Tp(1); +16166: if (__l == 0) +16166: return __p_lm2; +16166: +16166: _Tp __p_lm1 = __x; +16166: if (__l == 1) +16166: return __p_lm1; +16166: +16166: _Tp __p_l = 0; +16166: for (unsigned int __ll = 2; __ll <= __l; ++__ll) +16166: { +16166: +16166: +16166: __p_l = _Tp(2) * __x * __p_lm1 - __p_lm2 +16166: - (__x * __p_lm1 - __p_lm2) / _Tp(__ll); +16166: __p_lm2 = __p_lm1; +16166: __p_lm1 = __p_l; +16166: } +16166: +16166: return __p_l; +16166: } +16166: } +16166: # 136 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +16166: template +16166: _Tp +16166: __assoc_legendre_p(unsigned int __l, unsigned int __m, _Tp __x, +16166: _Tp __phase = _Tp(+1)) +16166: { +16166: +16166: if (__m > __l) +16166: return _Tp(0); +16166: else if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__m == 0) +16166: return __poly_legendre_p(__l, __x); +16166: else +16166: { +16166: _Tp __p_mm = _Tp(1); +16166: if (__m > 0) +16166: { +16166: +16166: +16166: _Tp __root = std::sqrt(_Tp(1) - __x) * std::sqrt(_Tp(1) + __x); +16166: _Tp __fact = _Tp(1); +16166: for (unsigned int __i = 1; __i <= __m; ++__i) +16166: { +16166: __p_mm *= __phase * __fact * __root; +16166: __fact += _Tp(2); +16166: } +16166: } +16166: if (__l == __m) +16166: return __p_mm; +16166: +16166: _Tp __p_mp1m = _Tp(2 * __m + 1) * __x * __p_mm; +16166: if (__l == __m + 1) +16166: return __p_mp1m; +16166: +16166: _Tp __p_lm2m = __p_mm; +16166: _Tp __P_lm1m = __p_mp1m; +16166: _Tp __p_lm = _Tp(0); +16166: for (unsigned int __j = __m + 2; __j <= __l; ++__j) +16166: { +16166: __p_lm = (_Tp(2 * __j - 1) * __x * __P_lm1m +16166: - _Tp(__j + __m - 1) * __p_lm2m) / _Tp(__j - __m); +16166: __p_lm2m = __P_lm1m; +16166: __P_lm1m = __p_lm; +16166: } +16166: +16166: return __p_lm; +16166: } +16166: } +16166: # 214 "/usr/include/c++/14/tr1/legendre_function.tcc" 3 +16166: template +16166: _Tp +16166: __sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) +16166: { +16166: if (__isnan(__theta)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: +16166: const _Tp __x = std::cos(__theta); +16166: +16166: if (__m > __l) +16166: return _Tp(0); +16166: else if (__m == 0) +16166: { +16166: _Tp __P = __poly_legendre_p(__l, __x); +16166: _Tp __fact = std::sqrt(_Tp(2 * __l + 1) +16166: / (_Tp(4) * __numeric_constants<_Tp>::__pi())); +16166: __P *= __fact; +16166: return __P; +16166: } +16166: else if (__x == _Tp(1) || __x == -_Tp(1)) +16166: { +16166: +16166: return _Tp(0); +16166: } +16166: else +16166: { +16166: +16166: +16166: +16166: +16166: +16166: const _Tp __sgn = ( __m % 2 == 1 ? -_Tp(1) : _Tp(1)); +16166: const _Tp __y_mp1m_factor = __x * std::sqrt(_Tp(2 * __m + 3)); +16166: +16166: const _Tp __lncirc = ::std::log1p(-__x * __x); +16166: +16166: +16166: +16166: +16166: +16166: const _Tp __lnpoch = ::std::lgamma(_Tp(__m + _Tp(0.5L))) +16166: - ::std::lgamma(_Tp(__m)); +16166: +16166: +16166: +16166: +16166: const _Tp __lnpre_val = +16166: -_Tp(0.25L) * __numeric_constants<_Tp>::__lnpi() +16166: + _Tp(0.5L) * (__lnpoch + __m * __lncirc); +16166: const _Tp __sr = std::sqrt((_Tp(2) + _Tp(1) / __m) +16166: / (_Tp(4) * __numeric_constants<_Tp>::__pi())); +16166: _Tp __y_mm = __sgn * __sr * std::exp(__lnpre_val); +16166: _Tp __y_mp1m = __y_mp1m_factor * __y_mm; +16166: +16166: if (__l == __m) +16166: return __y_mm; +16166: else if (__l == __m + 1) +16166: return __y_mp1m; +16166: else +16166: { +16166: _Tp __y_lm = _Tp(0); +16166: +16166: +16166: for (unsigned int __ll = __m + 2; __ll <= __l; ++__ll) +16166: { +16166: const _Tp __rat1 = _Tp(__ll - __m) / _Tp(__ll + __m); +16166: const _Tp __rat2 = _Tp(__ll - __m - 1) / _Tp(__ll + __m - 1); +16166: const _Tp __fact1 = std::sqrt(__rat1 * _Tp(2 * __ll + 1) +16166: * _Tp(2 * __ll - 1)); +16166: const _Tp __fact2 = std::sqrt(__rat1 * __rat2 * _Tp(2 * __ll + 1) +16166: / _Tp(2 * __ll - 3)); +16166: __y_lm = (__x * __y_mp1m * __fact1 +16166: - (__ll + __m - 1) * __y_mm * __fact2) / _Tp(__ll - __m); +16166: __y_mm = __y_mp1m; +16166: __y_mp1m = __y_lm; +16166: } +16166: +16166: return __y_lm; +16166: } +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 54 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 1 3 +16166: # 51 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 65 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +16166: namespace __detail +16166: { +16166: # 83 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +16166: template +16166: void +16166: __bessel_ik(_Tp __nu, _Tp __x, +16166: _Tp & __Inu, _Tp & __Knu, _Tp & __Ipnu, _Tp & __Kpnu) +16166: { +16166: if (__x == _Tp(0)) +16166: { +16166: if (__nu == _Tp(0)) +16166: { +16166: __Inu = _Tp(1); +16166: __Ipnu = _Tp(0); +16166: } +16166: else if (__nu == _Tp(1)) +16166: { +16166: __Inu = _Tp(0); +16166: __Ipnu = _Tp(0.5L); +16166: } +16166: else +16166: { +16166: __Inu = _Tp(0); +16166: __Ipnu = _Tp(0); +16166: } +16166: __Knu = std::numeric_limits<_Tp>::infinity(); +16166: __Kpnu = -std::numeric_limits<_Tp>::infinity(); +16166: return; +16166: } +16166: +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: const _Tp __fp_min = _Tp(10) * std::numeric_limits<_Tp>::epsilon(); +16166: const int __max_iter = 15000; +16166: const _Tp __x_min = _Tp(2); +16166: +16166: const int __nl = static_cast(__nu + _Tp(0.5L)); +16166: +16166: const _Tp __mu = __nu - __nl; +16166: const _Tp __mu2 = __mu * __mu; +16166: const _Tp __xi = _Tp(1) / __x; +16166: const _Tp __xi2 = _Tp(2) * __xi; +16166: _Tp __h = __nu * __xi; +16166: if ( __h < __fp_min ) +16166: __h = __fp_min; +16166: _Tp __b = __xi2 * __nu; +16166: _Tp __d = _Tp(0); +16166: _Tp __c = __h; +16166: int __i; +16166: for ( __i = 1; __i <= __max_iter; ++__i ) +16166: { +16166: __b += __xi2; +16166: __d = _Tp(1) / (__b + __d); +16166: __c = __b + _Tp(1) / __c; +16166: const _Tp __del = __c * __d; +16166: __h *= __del; +16166: if (std::abs(__del - _Tp(1)) < __eps) +16166: break; +16166: } +16166: if (__i > __max_iter) +16166: std::__throw_runtime_error(("Argument x too large " "in __bessel_ik; " "try asymptotic expansion.") +16166: +16166: ); +16166: _Tp __Inul = __fp_min; +16166: _Tp __Ipnul = __h * __Inul; +16166: _Tp __Inul1 = __Inul; +16166: _Tp __Ipnu1 = __Ipnul; +16166: _Tp __fact = __nu * __xi; +16166: for (int __l = __nl; __l >= 1; --__l) +16166: { +16166: const _Tp __Inutemp = __fact * __Inul + __Ipnul; +16166: __fact -= __xi; +16166: __Ipnul = __fact * __Inutemp + __Inul; +16166: __Inul = __Inutemp; +16166: } +16166: _Tp __f = __Ipnul / __Inul; +16166: _Tp __Kmu, __Knu1; +16166: if (__x < __x_min) +16166: { +16166: const _Tp __x2 = __x / _Tp(2); +16166: const _Tp __pimu = __numeric_constants<_Tp>::__pi() * __mu; +16166: const _Tp __fact = (std::abs(__pimu) < __eps +16166: ? _Tp(1) : __pimu / std::sin(__pimu)); +16166: _Tp __d = -std::log(__x2); +16166: _Tp __e = __mu * __d; +16166: const _Tp __fact2 = (std::abs(__e) < __eps +16166: ? _Tp(1) : std::sinh(__e) / __e); +16166: _Tp __gam1, __gam2, __gampl, __gammi; +16166: __gamma_temme(__mu, __gam1, __gam2, __gampl, __gammi); +16166: _Tp __ff = __fact +16166: * (__gam1 * std::cosh(__e) + __gam2 * __fact2 * __d); +16166: _Tp __sum = __ff; +16166: __e = std::exp(__e); +16166: _Tp __p = __e / (_Tp(2) * __gampl); +16166: _Tp __q = _Tp(1) / (_Tp(2) * __e * __gammi); +16166: _Tp __c = _Tp(1); +16166: __d = __x2 * __x2; +16166: _Tp __sum1 = __p; +16166: int __i; +16166: for (__i = 1; __i <= __max_iter; ++__i) +16166: { +16166: __ff = (__i * __ff + __p + __q) / (__i * __i - __mu2); +16166: __c *= __d / __i; +16166: __p /= __i - __mu; +16166: __q /= __i + __mu; +16166: const _Tp __del = __c * __ff; +16166: __sum += __del; +16166: const _Tp __del1 = __c * (__p - __i * __ff); +16166: __sum1 += __del1; +16166: if (std::abs(__del) < __eps * std::abs(__sum)) +16166: break; +16166: } +16166: if (__i > __max_iter) +16166: std::__throw_runtime_error(("Bessel k series failed to converge " "in __bessel_ik.") +16166: ); +16166: __Kmu = __sum; +16166: __Knu1 = __sum1 * __xi2; +16166: } +16166: else +16166: { +16166: _Tp __b = _Tp(2) * (_Tp(1) + __x); +16166: _Tp __d = _Tp(1) / __b; +16166: _Tp __delh = __d; +16166: _Tp __h = __delh; +16166: _Tp __q1 = _Tp(0); +16166: _Tp __q2 = _Tp(1); +16166: _Tp __a1 = _Tp(0.25L) - __mu2; +16166: _Tp __q = __c = __a1; +16166: _Tp __a = -__a1; +16166: _Tp __s = _Tp(1) + __q * __delh; +16166: int __i; +16166: for (__i = 2; __i <= __max_iter; ++__i) +16166: { +16166: __a -= 2 * (__i - 1); +16166: __c = -__a * __c / __i; +16166: const _Tp __qnew = (__q1 - __b * __q2) / __a; +16166: __q1 = __q2; +16166: __q2 = __qnew; +16166: __q += __c * __qnew; +16166: __b += _Tp(2); +16166: __d = _Tp(1) / (__b + __a * __d); +16166: __delh = (__b * __d - _Tp(1)) * __delh; +16166: __h += __delh; +16166: const _Tp __dels = __q * __delh; +16166: __s += __dels; +16166: if ( std::abs(__dels / __s) < __eps ) +16166: break; +16166: } +16166: if (__i > __max_iter) +16166: std::__throw_runtime_error(("Steed's method failed " "in __bessel_ik.") +16166: ); +16166: __h = __a1 * __h; +16166: __Kmu = std::sqrt(__numeric_constants<_Tp>::__pi() / (_Tp(2) * __x)) +16166: * std::exp(-__x) / __s; +16166: __Knu1 = __Kmu * (__mu + __x + _Tp(0.5L) - __h) * __xi; +16166: } +16166: +16166: _Tp __Kpmu = __mu * __xi * __Kmu - __Knu1; +16166: _Tp __Inumu = __xi / (__f * __Kmu - __Kpmu); +16166: __Inu = __Inumu * __Inul1 / __Inul; +16166: __Ipnu = __Inumu * __Ipnu1 / __Inul; +16166: for ( __i = 1; __i <= __nl; ++__i ) +16166: { +16166: const _Tp __Knutemp = (__mu + __i) * __xi2 * __Knu1 + __Kmu; +16166: __Kmu = __Knu1; +16166: __Knu1 = __Knutemp; +16166: } +16166: __Knu = __Kmu; +16166: __Kpnu = __nu * __xi * __Kmu - __Knu1; +16166: +16166: return; +16166: } +16166: # 267 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +16166: template +16166: _Tp +16166: __cyl_bessel_i(_Tp __nu, _Tp __x) +16166: { +16166: if (__nu < _Tp(0) || __x < _Tp(0)) +16166: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_i.") +16166: ); +16166: else if (__isnan(__nu) || __isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__x * __x < _Tp(10) * (__nu + _Tp(1))) +16166: return __cyl_bessel_ij_series(__nu, __x, +_Tp(1), 200); +16166: else +16166: { +16166: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu; +16166: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +16166: return __I_nu; +16166: } +16166: } +16166: # 303 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +16166: template +16166: _Tp +16166: __cyl_bessel_k(_Tp __nu, _Tp __x) +16166: { +16166: if (__nu < _Tp(0) || __x < _Tp(0)) +16166: std::__throw_domain_error(("Bad argument " "in __cyl_bessel_k.") +16166: ); +16166: else if (__isnan(__nu) || __isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else +16166: { +16166: _Tp __I_nu, __K_nu, __Ip_nu, __Kp_nu; +16166: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +16166: return __K_nu; +16166: } +16166: } +16166: # 337 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +16166: template +16166: void +16166: __sph_bessel_ik(unsigned int __n, _Tp __x, +16166: _Tp & __i_n, _Tp & __k_n, _Tp & __ip_n, _Tp & __kp_n) +16166: { +16166: const _Tp __nu = _Tp(__n) + _Tp(0.5L); +16166: +16166: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu; +16166: __bessel_ik(__nu, __x, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +16166: +16166: const _Tp __factor = __numeric_constants<_Tp>::__sqrtpio2() +16166: / std::sqrt(__x); +16166: +16166: __i_n = __factor * __I_nu; +16166: __k_n = __factor * __K_nu; +16166: __ip_n = __factor * __Ip_nu - __i_n / (_Tp(2) * __x); +16166: __kp_n = __factor * __Kp_nu - __k_n / (_Tp(2) * __x); +16166: +16166: return; +16166: } +16166: # 373 "/usr/include/c++/14/tr1/modified_bessel_func.tcc" 3 +16166: template +16166: void +16166: __airy(_Tp __x, _Tp & __Ai, _Tp & __Bi, _Tp & __Aip, _Tp & __Bip) +16166: { +16166: const _Tp __absx = std::abs(__x); +16166: const _Tp __rootx = std::sqrt(__absx); +16166: const _Tp __z = _Tp(2) * __absx * __rootx / _Tp(3); +16166: const _Tp _S_inf = std::numeric_limits<_Tp>::infinity(); +16166: +16166: if (__isnan(__x)) +16166: __Bip = __Aip = __Bi = __Ai = std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__z == _S_inf) +16166: { +16166: __Aip = __Ai = _Tp(0); +16166: __Bip = __Bi = _S_inf; +16166: } +16166: else if (__z == -_S_inf) +16166: __Bip = __Aip = __Bi = __Ai = _Tp(0); +16166: else if (__x > _Tp(0)) +16166: { +16166: _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu; +16166: +16166: __bessel_ik(_Tp(1) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +16166: __Ai = __rootx * __K_nu +16166: / (__numeric_constants<_Tp>::__sqrt3() +16166: * __numeric_constants<_Tp>::__pi()); +16166: __Bi = __rootx * (__K_nu / __numeric_constants<_Tp>::__pi() +16166: + _Tp(2) * __I_nu / __numeric_constants<_Tp>::__sqrt3()); +16166: +16166: __bessel_ik(_Tp(2) / _Tp(3), __z, __I_nu, __K_nu, __Ip_nu, __Kp_nu); +16166: __Aip = -__x * __K_nu +16166: / (__numeric_constants<_Tp>::__sqrt3() +16166: * __numeric_constants<_Tp>::__pi()); +16166: __Bip = __x * (__K_nu / __numeric_constants<_Tp>::__pi() +16166: + _Tp(2) * __I_nu +16166: / __numeric_constants<_Tp>::__sqrt3()); +16166: } +16166: else if (__x < _Tp(0)) +16166: { +16166: _Tp __J_nu, __Jp_nu, __N_nu, __Np_nu; +16166: +16166: __bessel_jn(_Tp(1) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu); +16166: __Ai = __rootx * (__J_nu +16166: - __N_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2); +16166: __Bi = -__rootx * (__N_nu +16166: + __J_nu / __numeric_constants<_Tp>::__sqrt3()) / _Tp(2); +16166: +16166: __bessel_jn(_Tp(2) / _Tp(3), __z, __J_nu, __N_nu, __Jp_nu, __Np_nu); +16166: __Aip = __absx * (__N_nu / __numeric_constants<_Tp>::__sqrt3() +16166: + __J_nu) / _Tp(2); +16166: __Bip = __absx * (__J_nu / __numeric_constants<_Tp>::__sqrt3() +16166: - __N_nu) / _Tp(2); +16166: } +16166: else +16166: { +16166: +16166: +16166: +16166: __Ai = _Tp(0.35502805388781723926L); +16166: __Bi = __Ai * __numeric_constants<_Tp>::__sqrt3(); +16166: +16166: +16166: +16166: +16166: __Aip = -_Tp(0.25881940379280679840L); +16166: __Bip = -__Aip * __numeric_constants<_Tp>::__sqrt3(); +16166: } +16166: +16166: return; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 55 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/poly_hermite.tcc" 1 3 +16166: # 42 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 56 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +16166: namespace __detail +16166: { +16166: # 72 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +16166: template +16166: _Tp +16166: __poly_hermite_recursion(unsigned int __n, _Tp __x) +16166: { +16166: +16166: _Tp __H_0 = 1; +16166: if (__n == 0) +16166: return __H_0; +16166: +16166: +16166: _Tp __H_1 = 2 * __x; +16166: if (__n == 1) +16166: return __H_1; +16166: +16166: +16166: _Tp __H_n, __H_nm1, __H_nm2; +16166: unsigned int __i; +16166: for (__H_nm2 = __H_0, __H_nm1 = __H_1, __i = 2; __i <= __n; ++__i) +16166: { +16166: __H_n = 2 * (__x * __H_nm1 - (__i - 1) * __H_nm2); +16166: __H_nm2 = __H_nm1; +16166: __H_nm1 = __H_n; +16166: } +16166: +16166: return __H_n; +16166: } +16166: # 114 "/usr/include/c++/14/tr1/poly_hermite.tcc" 3 +16166: template +16166: inline _Tp +16166: __poly_hermite(unsigned int __n, _Tp __x) +16166: { +16166: if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else +16166: return __poly_hermite_recursion(__n, __x); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 56 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 1 3 +16166: # 44 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 60 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: namespace __detail +16166: { +16166: # 75 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: template +16166: _Tp +16166: __poly_laguerre_large_n(unsigned __n, _Tpa __alpha1, _Tp __x) +16166: { +16166: const _Tp __a = -_Tp(__n); +16166: const _Tp __b = _Tp(__alpha1) + _Tp(1); +16166: const _Tp __eta = _Tp(2) * __b - _Tp(4) * __a; +16166: const _Tp __cos2th = __x / __eta; +16166: const _Tp __sin2th = _Tp(1) - __cos2th; +16166: const _Tp __th = std::acos(std::sqrt(__cos2th)); +16166: const _Tp __pre_h = __numeric_constants<_Tp>::__pi_2() +16166: * __numeric_constants<_Tp>::__pi_2() +16166: * __eta * __eta * __cos2th * __sin2th; +16166: +16166: +16166: const _Tp __lg_b = ::std::lgamma(_Tp(__n) + __b); +16166: const _Tp __lnfact = ::std::lgamma(_Tp(__n + 1)); +16166: +16166: +16166: +16166: +16166: +16166: _Tp __pre_term1 = _Tp(0.5L) * (_Tp(1) - __b) +16166: * std::log(_Tp(0.25L) * __x * __eta); +16166: _Tp __pre_term2 = _Tp(0.25L) * std::log(__pre_h); +16166: _Tp __lnpre = __lg_b - __lnfact + _Tp(0.5L) * __x +16166: + __pre_term1 - __pre_term2; +16166: _Tp __ser_term1 = std::sin(__a * __numeric_constants<_Tp>::__pi()); +16166: _Tp __ser_term2 = std::sin(_Tp(0.25L) * __eta +16166: * (_Tp(2) * __th +16166: - std::sin(_Tp(2) * __th)) +16166: + __numeric_constants<_Tp>::__pi_4()); +16166: _Tp __ser = __ser_term1 + __ser_term2; +16166: +16166: return std::exp(__lnpre) * __ser; +16166: } +16166: # 129 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: template +16166: _Tp +16166: __poly_laguerre_hyperg(unsigned int __n, _Tpa __alpha1, _Tp __x) +16166: { +16166: const _Tp __b = _Tp(__alpha1) + _Tp(1); +16166: const _Tp __mx = -__x; +16166: const _Tp __tc_sgn = (__x < _Tp(0) ? _Tp(1) +16166: : ((__n % 2 == 1) ? -_Tp(1) : _Tp(1))); +16166: +16166: _Tp __tc = _Tp(1); +16166: const _Tp __ax = std::abs(__x); +16166: for (unsigned int __k = 1; __k <= __n; ++__k) +16166: __tc *= (__ax / __k); +16166: +16166: _Tp __term = __tc * __tc_sgn; +16166: _Tp __sum = __term; +16166: for (int __k = int(__n) - 1; __k >= 0; --__k) +16166: { +16166: __term *= ((__b + _Tp(__k)) / _Tp(int(__n) - __k)) +16166: * _Tp(__k + 1) / __mx; +16166: __sum += __term; +16166: } +16166: +16166: return __sum; +16166: } +16166: # 185 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: template +16166: _Tp +16166: __poly_laguerre_recursion(unsigned int __n, _Tpa __alpha1, _Tp __x) +16166: { +16166: +16166: _Tp __l_0 = _Tp(1); +16166: if (__n == 0) +16166: return __l_0; +16166: +16166: +16166: _Tp __l_1 = -__x + _Tp(1) + _Tp(__alpha1); +16166: if (__n == 1) +16166: return __l_1; +16166: +16166: +16166: _Tp __l_n2 = __l_0; +16166: _Tp __l_n1 = __l_1; +16166: _Tp __l_n = _Tp(0); +16166: for (unsigned int __nn = 2; __nn <= __n; ++__nn) +16166: { +16166: __l_n = (_Tp(2 * __nn - 1) + _Tp(__alpha1) - __x) +16166: * __l_n1 / _Tp(__nn) +16166: - (_Tp(__nn - 1) + _Tp(__alpha1)) * __l_n2 / _Tp(__nn); +16166: __l_n2 = __l_n1; +16166: __l_n1 = __l_n; +16166: } +16166: +16166: return __l_n; +16166: } +16166: # 244 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: template +16166: _Tp +16166: __poly_laguerre(unsigned int __n, _Tpa __alpha1, _Tp __x) +16166: { +16166: if (__x < _Tp(0)) +16166: std::__throw_domain_error(("Negative argument " "in __poly_laguerre.") +16166: ); +16166: +16166: else if (__isnan(__x)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__n == 0) +16166: return _Tp(1); +16166: else if (__n == 1) +16166: return _Tp(1) + _Tp(__alpha1) - __x; +16166: else if (__x == _Tp(0)) +16166: { +16166: _Tp __prod = _Tp(__alpha1) + _Tp(1); +16166: for (unsigned int __k = 2; __k <= __n; ++__k) +16166: __prod *= (_Tp(__alpha1) + _Tp(__k)) / _Tp(__k); +16166: return __prod; +16166: } +16166: else if (__n > 10000000 && _Tp(__alpha1) > -_Tp(1) +16166: && __x < _Tp(2) * (_Tp(__alpha1) + _Tp(1)) + _Tp(4 * __n)) +16166: return __poly_laguerre_large_n(__n, __alpha1, __x); +16166: else if (_Tp(__alpha1) >= _Tp(0) +16166: || (__x > _Tp(0) && _Tp(__alpha1) < -_Tp(__n + 1))) +16166: return __poly_laguerre_recursion(__n, __alpha1, __x); +16166: else +16166: return __poly_laguerre_hyperg(__n, __alpha1, __x); +16166: } +16166: # 296 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: template +16166: inline _Tp +16166: __assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) +16166: { return __poly_laguerre(__n, __m, __x); } +16166: # 316 "/usr/include/c++/14/tr1/poly_laguerre.tcc" 3 +16166: template +16166: inline _Tp +16166: __laguerre(unsigned int __n, _Tp __x) +16166: { return __poly_laguerre(__n, 0, __x); } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 57 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: # 1 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 1 3 +16166: # 47 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 63 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: namespace __detail +16166: { +16166: # 78 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: template +16166: _Tp +16166: __riemann_zeta_sum(_Tp __s) +16166: { +16166: +16166: if (__s < _Tp(1)) +16166: std::__throw_domain_error(("Bad argument in zeta sum.")); +16166: +16166: const unsigned int max_iter = 10000; +16166: _Tp __zeta = _Tp(0); +16166: for (unsigned int __k = 1; __k < max_iter; ++__k) +16166: { +16166: _Tp __term = std::pow(static_cast<_Tp>(__k), -__s); +16166: if (__term < std::numeric_limits<_Tp>::epsilon()) +16166: { +16166: break; +16166: } +16166: __zeta += __term; +16166: } +16166: +16166: return __zeta; +16166: } +16166: # 115 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: template +16166: _Tp +16166: __riemann_zeta_alt(_Tp __s) +16166: { +16166: _Tp __sgn = _Tp(1); +16166: _Tp __zeta = _Tp(0); +16166: for (unsigned int __i = 1; __i < 10000000; ++__i) +16166: { +16166: _Tp __term = __sgn / std::pow(__i, __s); +16166: if (std::abs(__term) < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: __zeta += __term; +16166: __sgn *= _Tp(-1); +16166: } +16166: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s); +16166: +16166: return __zeta; +16166: } +16166: # 157 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: template +16166: _Tp +16166: __riemann_zeta_glob(_Tp __s) +16166: { +16166: _Tp __zeta = _Tp(0); +16166: +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: +16166: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10 +16166: * std::log(_Tp(10)) - _Tp(1); +16166: +16166: +16166: +16166: if (__s < _Tp(0)) +16166: { +16166: +16166: if (::std::fmod(__s,_Tp(2)) == _Tp(0)) +16166: return _Tp(0); +16166: else +16166: +16166: { +16166: _Tp __zeta = __riemann_zeta_glob(_Tp(1) - __s); +16166: __zeta *= std::pow(_Tp(2) +16166: * __numeric_constants<_Tp>::__pi(), __s) +16166: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) +16166: +16166: * std::exp(::std::lgamma(_Tp(1) - __s)) +16166: +16166: +16166: +16166: / __numeric_constants<_Tp>::__pi(); +16166: return __zeta; +16166: } +16166: } +16166: +16166: _Tp __num = _Tp(0.5L); +16166: const unsigned int __maxit = 10000; +16166: for (unsigned int __i = 0; __i < __maxit; ++__i) +16166: { +16166: bool __punt = false; +16166: _Tp __sgn = _Tp(1); +16166: _Tp __term = _Tp(0); +16166: for (unsigned int __j = 0; __j <= __i; ++__j) +16166: { +16166: +16166: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i)) +16166: - ::std::lgamma(_Tp(1 + __j)) +16166: - ::std::lgamma(_Tp(1 + __i - __j)); +16166: +16166: +16166: +16166: +16166: +16166: if (__bincoeff > __max_bincoeff) +16166: { +16166: +16166: __punt = true; +16166: break; +16166: } +16166: __bincoeff = std::exp(__bincoeff); +16166: __term += __sgn * __bincoeff * std::pow(_Tp(1 + __j), -__s); +16166: __sgn *= _Tp(-1); +16166: } +16166: if (__punt) +16166: break; +16166: __term *= __num; +16166: __zeta += __term; +16166: if (std::abs(__term/__zeta) < __eps) +16166: break; +16166: __num *= _Tp(0.5L); +16166: } +16166: +16166: __zeta /= _Tp(1) - std::pow(_Tp(2), _Tp(1) - __s); +16166: +16166: return __zeta; +16166: } +16166: # 252 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: template +16166: _Tp +16166: __riemann_zeta_product(_Tp __s) +16166: { +16166: static const _Tp __prime[] = { +16166: _Tp(2), _Tp(3), _Tp(5), _Tp(7), _Tp(11), _Tp(13), _Tp(17), _Tp(19), +16166: _Tp(23), _Tp(29), _Tp(31), _Tp(37), _Tp(41), _Tp(43), _Tp(47), +16166: _Tp(53), _Tp(59), _Tp(61), _Tp(67), _Tp(71), _Tp(73), _Tp(79), +16166: _Tp(83), _Tp(89), _Tp(97), _Tp(101), _Tp(103), _Tp(107), _Tp(109) +16166: }; +16166: static const unsigned int __num_primes = sizeof(__prime) / sizeof(_Tp); +16166: +16166: _Tp __zeta = _Tp(1); +16166: for (unsigned int __i = 0; __i < __num_primes; ++__i) +16166: { +16166: const _Tp __fact = _Tp(1) - std::pow(__prime[__i], -__s); +16166: __zeta *= __fact; +16166: if (_Tp(1) - __fact < std::numeric_limits<_Tp>::epsilon()) +16166: break; +16166: } +16166: +16166: __zeta = _Tp(1) / __zeta; +16166: +16166: return __zeta; +16166: } +16166: # 293 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: template +16166: _Tp +16166: __riemann_zeta(_Tp __s) +16166: { +16166: if (__isnan(__s)) +16166: return std::numeric_limits<_Tp>::quiet_NaN(); +16166: else if (__s == _Tp(1)) +16166: return std::numeric_limits<_Tp>::infinity(); +16166: else if (__s < -_Tp(19)) +16166: { +16166: _Tp __zeta = __riemann_zeta_product(_Tp(1) - __s); +16166: __zeta *= std::pow(_Tp(2) * __numeric_constants<_Tp>::__pi(), __s) +16166: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) +16166: +16166: * std::exp(::std::lgamma(_Tp(1) - __s)) +16166: +16166: +16166: +16166: / __numeric_constants<_Tp>::__pi(); +16166: return __zeta; +16166: } +16166: else if (__s < _Tp(20)) +16166: { +16166: +16166: bool __glob = true; +16166: if (__glob) +16166: return __riemann_zeta_glob(__s); +16166: else +16166: { +16166: if (__s > _Tp(1)) +16166: return __riemann_zeta_sum(__s); +16166: else +16166: { +16166: _Tp __zeta = std::pow(_Tp(2) +16166: * __numeric_constants<_Tp>::__pi(), __s) +16166: * std::sin(__numeric_constants<_Tp>::__pi_2() * __s) +16166: +16166: * ::std::tgamma(_Tp(1) - __s) +16166: +16166: +16166: +16166: * __riemann_zeta_sum(_Tp(1) - __s); +16166: return __zeta; +16166: } +16166: } +16166: } +16166: else +16166: return __riemann_zeta_product(__s); +16166: } +16166: # 365 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: template +16166: _Tp +16166: __hurwitz_zeta_glob(_Tp __a, _Tp __s) +16166: { +16166: _Tp __zeta = _Tp(0); +16166: +16166: const _Tp __eps = std::numeric_limits<_Tp>::epsilon(); +16166: +16166: const _Tp __max_bincoeff = std::numeric_limits<_Tp>::max_exponent10 +16166: * std::log(_Tp(10)) - _Tp(1); +16166: +16166: const unsigned int __maxit = 10000; +16166: for (unsigned int __i = 0; __i < __maxit; ++__i) +16166: { +16166: bool __punt = false; +16166: _Tp __sgn = _Tp(1); +16166: _Tp __term = _Tp(0); +16166: for (unsigned int __j = 0; __j <= __i; ++__j) +16166: { +16166: +16166: _Tp __bincoeff = ::std::lgamma(_Tp(1 + __i)) +16166: - ::std::lgamma(_Tp(1 + __j)) +16166: - ::std::lgamma(_Tp(1 + __i - __j)); +16166: +16166: +16166: +16166: +16166: +16166: if (__bincoeff > __max_bincoeff) +16166: { +16166: +16166: __punt = true; +16166: break; +16166: } +16166: __bincoeff = std::exp(__bincoeff); +16166: __term += __sgn * __bincoeff * std::pow(_Tp(__a + __j), -__s); +16166: __sgn *= _Tp(-1); +16166: } +16166: if (__punt) +16166: break; +16166: __term /= _Tp(__i + 1); +16166: if (std::abs(__term / __zeta) < __eps) +16166: break; +16166: __zeta += __term; +16166: } +16166: +16166: __zeta /= __s - _Tp(1); +16166: +16166: return __zeta; +16166: } +16166: # 430 "/usr/include/c++/14/tr1/riemann_zeta.tcc" 3 +16166: template +16166: inline _Tp +16166: __hurwitz_zeta(_Tp __a, _Tp __s) +16166: { return __hurwitz_zeta_glob(__a, __s); } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 58 "/usr/include/c++/14/bits/specfun.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 203 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: assoc_laguerref(unsigned int __n, unsigned int __m, float __x) +16166: { return __detail::__assoc_laguerre(__n, __m, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x) +16166: { return __detail::__assoc_laguerre(__n, __m, __x); } +16166: # 248 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__assoc_laguerre<__type>(__n, __m, __x); +16166: } +16166: # 264 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: assoc_legendref(unsigned int __l, unsigned int __m, float __x) +16166: { return __detail::__assoc_legendre_p(__l, __m, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: assoc_legendrel(unsigned int __l, unsigned int __m, long double __x) +16166: { return __detail::__assoc_legendre_p(__l, __m, __x); } +16166: # 294 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__assoc_legendre_p<__type>(__l, __m, __x); +16166: } +16166: # 309 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: betaf(float __a, float __b) +16166: { return __detail::__beta(__a, __b); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: betal(long double __a, long double __b) +16166: { return __detail::__beta(__a, __b); } +16166: # 339 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type +16166: beta(_Tpa __a, _Tpb __b) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type; +16166: return __detail::__beta<__type>(__a, __b); +16166: } +16166: # 355 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: comp_ellint_1f(float __k) +16166: { return __detail::__comp_ellint_1(__k); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: comp_ellint_1l(long double __k) +16166: { return __detail::__comp_ellint_1(__k); } +16166: # 387 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: comp_ellint_1(_Tp __k) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__comp_ellint_1<__type>(__k); +16166: } +16166: # 403 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: comp_ellint_2f(float __k) +16166: { return __detail::__comp_ellint_2(__k); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: comp_ellint_2l(long double __k) +16166: { return __detail::__comp_ellint_2(__k); } +16166: # 434 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: comp_ellint_2(_Tp __k) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__comp_ellint_2<__type>(__k); +16166: } +16166: # 450 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: comp_ellint_3f(float __k, float __nu) +16166: { return __detail::__comp_ellint_3(__k, __nu); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: comp_ellint_3l(long double __k, long double __nu) +16166: { return __detail::__comp_ellint_3(__k, __nu); } +16166: # 485 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type +16166: comp_ellint_3(_Tp __k, _Tpn __nu) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type; +16166: return __detail::__comp_ellint_3<__type>(__k, __nu); +16166: } +16166: # 501 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: cyl_bessel_if(float __nu, float __x) +16166: { return __detail::__cyl_bessel_i(__nu, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: cyl_bessel_il(long double __nu, long double __x) +16166: { return __detail::__cyl_bessel_i(__nu, __x); } +16166: # 531 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +16166: cyl_bessel_i(_Tpnu __nu, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +16166: return __detail::__cyl_bessel_i<__type>(__nu, __x); +16166: } +16166: # 547 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: cyl_bessel_jf(float __nu, float __x) +16166: { return __detail::__cyl_bessel_j(__nu, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: cyl_bessel_jl(long double __nu, long double __x) +16166: { return __detail::__cyl_bessel_j(__nu, __x); } +16166: # 577 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +16166: cyl_bessel_j(_Tpnu __nu, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +16166: return __detail::__cyl_bessel_j<__type>(__nu, __x); +16166: } +16166: # 593 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: cyl_bessel_kf(float __nu, float __x) +16166: { return __detail::__cyl_bessel_k(__nu, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: cyl_bessel_kl(long double __nu, long double __x) +16166: { return __detail::__cyl_bessel_k(__nu, __x); } +16166: # 629 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +16166: cyl_bessel_k(_Tpnu __nu, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +16166: return __detail::__cyl_bessel_k<__type>(__nu, __x); +16166: } +16166: # 645 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: cyl_neumannf(float __nu, float __x) +16166: { return __detail::__cyl_neumann_n(__nu, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: cyl_neumannl(long double __nu, long double __x) +16166: { return __detail::__cyl_neumann_n(__nu, __x); } +16166: # 677 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type +16166: cyl_neumann(_Tpnu __nu, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; +16166: return __detail::__cyl_neumann_n<__type>(__nu, __x); +16166: } +16166: # 693 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: ellint_1f(float __k, float __phi) +16166: { return __detail::__ellint_1(__k, __phi); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: ellint_1l(long double __k, long double __phi) +16166: { return __detail::__ellint_1(__k, __phi); } +16166: # 725 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type +16166: ellint_1(_Tp __k, _Tpp __phi) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; +16166: return __detail::__ellint_1<__type>(__k, __phi); +16166: } +16166: # 741 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: ellint_2f(float __k, float __phi) +16166: { return __detail::__ellint_2(__k, __phi); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: ellint_2l(long double __k, long double __phi) +16166: { return __detail::__ellint_2(__k, __phi); } +16166: # 773 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type +16166: ellint_2(_Tp __k, _Tpp __phi) +16166: { +16166: typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; +16166: return __detail::__ellint_2<__type>(__k, __phi); +16166: } +16166: # 789 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: ellint_3f(float __k, float __nu, float __phi) +16166: { return __detail::__ellint_3(__k, __nu, __phi); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: ellint_3l(long double __k, long double __nu, long double __phi) +16166: { return __detail::__ellint_3(__k, __nu, __phi); } +16166: # 826 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type +16166: ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi) +16166: { +16166: typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type; +16166: return __detail::__ellint_3<__type>(__k, __nu, __phi); +16166: } +16166: # 841 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: expintf(float __x) +16166: { return __detail::__expint(__x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: expintl(long double __x) +16166: { return __detail::__expint(__x); } +16166: # 866 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: expint(_Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__expint<__type>(__x); +16166: } +16166: # 882 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: hermitef(unsigned int __n, float __x) +16166: { return __detail::__poly_hermite(__n, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: hermitel(unsigned int __n, long double __x) +16166: { return __detail::__poly_hermite(__n, __x); } +16166: # 914 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: hermite(unsigned int __n, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__poly_hermite<__type>(__n, __x); +16166: } +16166: # 930 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: laguerref(unsigned int __n, float __x) +16166: { return __detail::__laguerre(__n, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: laguerrel(unsigned int __n, long double __x) +16166: { return __detail::__laguerre(__n, __x); } +16166: # 958 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: laguerre(unsigned int __n, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__laguerre<__type>(__n, __x); +16166: } +16166: # 974 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: legendref(unsigned int __l, float __x) +16166: { return __detail::__poly_legendre_p(__l, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: legendrel(unsigned int __l, long double __x) +16166: { return __detail::__poly_legendre_p(__l, __x); } +16166: # 1003 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: legendre(unsigned int __l, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__poly_legendre_p<__type>(__l, __x); +16166: } +16166: # 1019 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: riemann_zetaf(float __s) +16166: { return __detail::__riemann_zeta(__s); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: riemann_zetal(long double __s) +16166: { return __detail::__riemann_zeta(__s); } +16166: # 1054 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: riemann_zeta(_Tp __s) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__riemann_zeta<__type>(__s); +16166: } +16166: # 1070 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: sph_besself(unsigned int __n, float __x) +16166: { return __detail::__sph_bessel(__n, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: sph_bessell(unsigned int __n, long double __x) +16166: { return __detail::__sph_bessel(__n, __x); } +16166: # 1098 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: sph_bessel(unsigned int __n, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__sph_bessel<__type>(__n, __x); +16166: } +16166: # 1114 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: sph_legendref(unsigned int __l, unsigned int __m, float __theta) +16166: { return __detail::__sph_legendre(__l, __m, __theta); } +16166: # 1125 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline long double +16166: sph_legendrel(unsigned int __l, unsigned int __m, long double __theta) +16166: { return __detail::__sph_legendre(__l, __m, __theta); } +16166: # 1145 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__sph_legendre<__type>(__l, __m, __theta); +16166: } +16166: # 1161 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: sph_neumannf(unsigned int __n, float __x) +16166: { return __detail::__sph_neumann(__n, __x); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline long double +16166: sph_neumannl(unsigned int __n, long double __x) +16166: { return __detail::__sph_neumann(__n, __x); } +16166: # 1189 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: sph_neumann(unsigned int __n, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: return __detail::__sph_neumann<__type>(__n, __x); +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 1216 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: airy_aif(float __x) +16166: { +16166: float __Ai, __Bi, __Aip, __Bip; +16166: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +16166: return __Ai; +16166: } +16166: +16166: +16166: +16166: +16166: inline long double +16166: airy_ail(long double __x) +16166: { +16166: long double __Ai, __Bi, __Aip, __Bip; +16166: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +16166: return __Ai; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: airy_ai(_Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: __type __Ai, __Bi, __Aip, __Bip; +16166: std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip); +16166: return __Ai; +16166: } +16166: +16166: +16166: +16166: +16166: inline float +16166: airy_bif(float __x) +16166: { +16166: float __Ai, __Bi, __Aip, __Bip; +16166: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +16166: return __Bi; +16166: } +16166: +16166: +16166: +16166: +16166: inline long double +16166: airy_bil(long double __x) +16166: { +16166: long double __Ai, __Bi, __Aip, __Bip; +16166: std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); +16166: return __Bi; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: inline typename __gnu_cxx::__promote<_Tp>::__type +16166: airy_bi(_Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +16166: __type __Ai, __Bi, __Aip, __Bip; +16166: std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip); +16166: return __Bi; +16166: } +16166: # 1292 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: conf_hypergf(float __a, float __c, float __x) +16166: { return std::__detail::__conf_hyperg(__a, __c, __x); } +16166: # 1303 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline long double +16166: conf_hypergl(long double __a, long double __c, long double __x) +16166: { return std::__detail::__conf_hyperg(__a, __c, __x); } +16166: # 1323 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type +16166: conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type; +16166: return std::__detail::__conf_hyperg<__type>(__a, __c, __x); +16166: } +16166: # 1340 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline float +16166: hypergf(float __a, float __b, float __c, float __x) +16166: { return std::__detail::__hyperg(__a, __b, __c, __x); } +16166: # 1351 "/usr/include/c++/14/bits/specfun.h" 3 +16166: inline long double +16166: hypergl(long double __a, long double __b, long double __c, long double __x) +16166: { return std::__detail::__hyperg(__a, __b, __c, __x); } +16166: # 1372 "/usr/include/c++/14/bits/specfun.h" 3 +16166: template +16166: inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type +16166: hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x) +16166: { +16166: typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp> +16166: ::__type __type; +16166: return std::__detail::__hyperg<__type>(__a, __b, __c, __x); +16166: } +16166: +16166: +16166: +16166: } +16166: # 3907 "/usr/include/c++/14/cmath" 2 3 +16166: +16166: +16166: } +16166: # 41 "/usr/include/c++/14/random" 2 3 +16166: +16166: # 1 "/usr/include/c++/14/cstdlib" 1 3 +16166: # 39 "/usr/include/c++/14/cstdlib" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdlib" 3 +16166: # 43 "/usr/include/c++/14/random" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/random.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/random.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 58 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: _RealType +16166: generate_canonical(_UniformRandomNumberGenerator& __g); +16166: +16166: +16166: +16166: namespace __detail +16166: { +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: +16166: template +16166: (std::numeric_limits<_UIntType>::digits)> +16166: struct _Shift +16166: { static constexpr _UIntType __value = 0; }; +16166: +16166: template +16166: struct _Shift<_UIntType, __w, true> +16166: { static constexpr _UIntType __value = _UIntType(1) << __w; }; +16166: +16166: template +16166: struct _Select_uint_least_t +16166: { +16166: static_assert(__which < 0, +16166: "sorry, would be too much trouble for a slow result"); +16166: }; +16166: +16166: template +16166: struct _Select_uint_least_t<__s, 4> +16166: { using type = unsigned int; }; +16166: +16166: template +16166: struct _Select_uint_least_t<__s, 3> +16166: { using type = unsigned long; }; +16166: +16166: template +16166: struct _Select_uint_least_t<__s, 2> +16166: { using type = unsigned long long; }; +16166: # 111 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: struct _Select_uint_least_t<__s, 1> +16166: { +16166: +16166: +16166: struct type +16166: { +16166: explicit +16166: type(uint64_t __a) noexcept : _M_lo(__a), _M_hi(0) { } +16166: +16166: +16166: friend type +16166: operator*(type __l, uint64_t __x) noexcept +16166: { +16166: +16166: +16166: +16166: +16166: constexpr uint64_t __mask = 0xffffffff; +16166: uint64_t __ll[2] = { __l._M_lo >> 32, __l._M_lo & __mask }; +16166: uint64_t __xx[2] = { __x >> 32, __x & __mask }; +16166: uint64_t __l0x0 = __ll[0] * __xx[0]; +16166: uint64_t __l0x1 = __ll[0] * __xx[1]; +16166: uint64_t __l1x0 = __ll[1] * __xx[0]; +16166: uint64_t __l1x1 = __ll[1] * __xx[1]; +16166: +16166: +16166: uint64_t __mid +16166: = (__l0x1 & __mask) + (__l1x0 & __mask) + (__l1x1 >> 32); +16166: __l._M_hi = __l0x0 + (__l0x1 >> 32) + (__l1x0 >> 32) + (__mid >> 32); +16166: __l._M_lo = (__mid << 32) + (__l1x1 & __mask); +16166: return __l; +16166: } +16166: +16166: friend type +16166: operator+(type __l, uint64_t __c) noexcept +16166: { +16166: __l._M_hi += __builtin_add_overflow(__l._M_lo, __c, &__l._M_lo); +16166: return __l; +16166: } +16166: +16166: friend type +16166: operator%(type __l, uint64_t __m) noexcept +16166: { +16166: if (__builtin_expect(__l._M_hi == 0, 0)) +16166: { +16166: __l._M_lo %= __m; +16166: return __l; +16166: } +16166: +16166: int __shift = __builtin_clzll(__m) + 64 +16166: - __builtin_clzll(__l._M_hi); +16166: type __x(0); +16166: if (__shift >= 64) +16166: { +16166: __x._M_hi = __m << (__shift - 64); +16166: __x._M_lo = 0; +16166: } +16166: else +16166: { +16166: __x._M_hi = __m >> (64 - __shift); +16166: __x._M_lo = __m << __shift; +16166: } +16166: +16166: while (__l._M_hi != 0 || __l._M_lo >= __m) +16166: { +16166: if (__x <= __l) +16166: { +16166: __l._M_hi -= __x._M_hi; +16166: __l._M_hi -= __builtin_sub_overflow(__l._M_lo, __x._M_lo, +16166: &__l._M_lo); +16166: } +16166: __x._M_lo = (__x._M_lo >> 1) | (__x._M_hi << 63); +16166: __x._M_hi >>= 1; +16166: } +16166: return __l; +16166: } +16166: +16166: +16166: explicit operator uint64_t() const noexcept +16166: { return _M_lo; } +16166: +16166: friend bool operator<(const type& __l, const type& __r) noexcept +16166: { +16166: if (__l._M_hi < __r._M_hi) +16166: return true; +16166: else if (__l._M_hi == __r._M_hi) +16166: return __l._M_lo < __r._M_lo; +16166: else +16166: return false; +16166: } +16166: +16166: friend bool operator<=(const type& __l, const type& __r) noexcept +16166: { return !(__r < __l); } +16166: +16166: uint64_t _M_lo; +16166: uint64_t _M_hi; +16166: }; +16166: }; +16166: +16166: +16166: +16166: template= __m - 1), +16166: bool __schrage_ok = __m % __a < __m / __a> +16166: struct _Mod +16166: { +16166: static _Tp +16166: __calc(_Tp __x) +16166: { +16166: using _Tp2 +16166: = typename _Select_uint_least_t::type; +16166: return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); +16166: } +16166: }; +16166: +16166: +16166: template +16166: struct _Mod<_Tp, __m, __a, __c, false, true> +16166: { +16166: static _Tp +16166: __calc(_Tp __x); +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct _Mod<_Tp, __m, __a, __c, true, __s> +16166: { +16166: static _Tp +16166: __calc(_Tp __x) +16166: { +16166: _Tp __res = __a * __x + __c; +16166: if (__m) +16166: __res %= __m; +16166: return __res; +16166: } +16166: }; +16166: +16166: template +16166: inline _Tp +16166: __mod(_Tp __x) +16166: { +16166: if constexpr (__a == 0) +16166: return __c; +16166: else +16166: return _Mod<_Tp, __m, __a, __c>::__calc(__x); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Adaptor +16166: { +16166: static_assert(std::is_floating_point<_DInputType>::value, +16166: "template argument must be a floating point type"); +16166: +16166: public: +16166: _Adaptor(_Engine& __g) +16166: : _M_g(__g) { } +16166: +16166: _DInputType +16166: min() const +16166: { return _DInputType(0); } +16166: +16166: _DInputType +16166: max() const +16166: { return _DInputType(1); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: _DInputType +16166: operator()() +16166: { +16166: return std::generate_canonical<_DInputType, +16166: std::numeric_limits<_DInputType>::digits, +16166: _Engine>(_M_g); +16166: } +16166: +16166: private: +16166: _Engine& _M_g; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: using __seed_seq_generate_t = decltype( +16166: std::declval<_Sseq&>().generate(std::declval(), +16166: std::declval())); +16166: +16166: template> +16166: using _If_seed_seq_for = _Require< +16166: __not_, _Engine>>, +16166: is_unsigned, +16166: __not_> +16166: >; +16166: +16166: #pragma GCC diagnostic pop +16166: } +16166: # 365 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class linear_congruential_engine +16166: { +16166: static_assert(std::is_unsigned<_UIntType>::value, +16166: "result_type must be an unsigned integral type"); +16166: static_assert(__m == 0u || (__a < __m && __c < __m), +16166: "template argument substituting __m out of bounds"); +16166: +16166: template +16166: using _If_seed_seq +16166: = __detail::_If_seed_seq_for<_Sseq, linear_congruential_engine, +16166: _UIntType>; +16166: +16166: public: +16166: +16166: typedef _UIntType result_type; +16166: +16166: +16166: static constexpr result_type multiplier = __a; +16166: +16166: static constexpr result_type increment = __c; +16166: +16166: static constexpr result_type modulus = __m; +16166: static constexpr result_type default_seed = 1u; +16166: +16166: +16166: +16166: +16166: +16166: linear_congruential_engine() : linear_congruential_engine(default_seed) +16166: { } +16166: # 404 "/usr/include/c++/14/bits/random.h" 3 +16166: explicit +16166: linear_congruential_engine(result_type __s) +16166: { seed(__s); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: explicit +16166: linear_congruential_engine(_Sseq& __q) +16166: { seed(__q); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: seed(result_type __s = default_seed); +16166: # 435 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: _If_seed_seq<_Sseq> +16166: seed(_Sseq& __q); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: min() +16166: { return __c == 0u ? 1u : 0u; } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: max() +16166: { return __m - 1u; } +16166: +16166: +16166: +16166: +16166: void +16166: discard(unsigned long long __z) +16166: { +16166: for (; __z != 0ULL; --__z) +16166: (*this)(); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: operator()() +16166: { +16166: _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x); +16166: return _M_x; +16166: } +16166: # 487 "/usr/include/c++/14/bits/random.h" 3 +16166: friend bool +16166: operator==(const linear_congruential_engine& __lhs, +16166: const linear_congruential_engine& __rhs) +16166: { return __lhs._M_x == __rhs._M_x; } +16166: # 500 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::linear_congruential_engine<_UIntType1, +16166: __a1, __c1, __m1>& __lcr); +16166: # 520 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::linear_congruential_engine<_UIntType1, __a1, +16166: __c1, __m1>& __lcr); +16166: +16166: private: +16166: _UIntType _M_x; +16166: }; +16166: # 543 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline bool +16166: operator!=(const std::linear_congruential_engine<_UIntType, __a, +16166: __c, __m>& __lhs, +16166: const std::linear_congruential_engine<_UIntType, __a, +16166: __c, __m>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: # 583 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class mersenne_twister_engine +16166: { +16166: static_assert(std::is_unsigned<_UIntType>::value, +16166: "result_type must be an unsigned integral type"); +16166: static_assert(1u <= __m && __m <= __n, +16166: "template argument substituting __m out of bounds"); +16166: static_assert(__r <= __w, "template argument substituting " +16166: "__r out of bound"); +16166: static_assert(__u <= __w, "template argument substituting " +16166: "__u out of bound"); +16166: static_assert(__s <= __w, "template argument substituting " +16166: "__s out of bound"); +16166: static_assert(__t <= __w, "template argument substituting " +16166: "__t out of bound"); +16166: static_assert(__l <= __w, "template argument substituting " +16166: "__l out of bound"); +16166: static_assert(__w <= std::numeric_limits<_UIntType>::digits, +16166: "template argument substituting __w out of bound"); +16166: static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1), +16166: "template argument substituting __a out of bound"); +16166: static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1), +16166: "template argument substituting __b out of bound"); +16166: static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1), +16166: "template argument substituting __c out of bound"); +16166: static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1), +16166: "template argument substituting __d out of bound"); +16166: static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1), +16166: "template argument substituting __f out of bound"); +16166: +16166: template +16166: using _If_seed_seq +16166: = __detail::_If_seed_seq_for<_Sseq, mersenne_twister_engine, +16166: _UIntType>; +16166: +16166: public: +16166: +16166: typedef _UIntType result_type; +16166: +16166: +16166: static constexpr size_t word_size = __w; +16166: static constexpr size_t state_size = __n; +16166: static constexpr size_t shift_size = __m; +16166: static constexpr size_t mask_bits = __r; +16166: static constexpr result_type xor_mask = __a; +16166: static constexpr size_t tempering_u = __u; +16166: static constexpr result_type tempering_d = __d; +16166: static constexpr size_t tempering_s = __s; +16166: static constexpr result_type tempering_b = __b; +16166: static constexpr size_t tempering_t = __t; +16166: static constexpr result_type tempering_c = __c; +16166: static constexpr size_t tempering_l = __l; +16166: static constexpr result_type initialization_multiplier = __f; +16166: static constexpr result_type default_seed = 5489u; +16166: +16166: +16166: +16166: mersenne_twister_engine() : mersenne_twister_engine(default_seed) { } +16166: +16166: explicit +16166: mersenne_twister_engine(result_type __sd) +16166: { seed(__sd); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: explicit +16166: mersenne_twister_engine(_Sseq& __q) +16166: { seed(__q); } +16166: +16166: void +16166: seed(result_type __sd = default_seed); +16166: +16166: template +16166: _If_seed_seq<_Sseq> +16166: seed(_Sseq& __q); +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: min() +16166: { return 0; } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: max() +16166: { return __detail::_Shift<_UIntType, __w>::__value - 1; } +16166: +16166: +16166: +16166: +16166: void +16166: discard(unsigned long long __z); +16166: +16166: result_type +16166: operator()(); +16166: # 703 "/usr/include/c++/14/bits/random.h" 3 +16166: friend bool +16166: operator==(const mersenne_twister_engine& __lhs, +16166: const mersenne_twister_engine& __rhs) +16166: { return (std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x) +16166: && __lhs._M_p == __rhs._M_p); } +16166: # 721 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::mersenne_twister_engine<_UIntType1, __w1, __n1, +16166: __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, +16166: __l1, __f1>& __x); +16166: # 747 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, +16166: __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, +16166: __l1, __f1>& __x); +16166: +16166: private: +16166: void _M_gen_rand(); +16166: +16166: _UIntType _M_x[state_size]; +16166: size_t _M_p; +16166: }; +16166: # 781 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline bool +16166: operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m, +16166: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs, +16166: const std::mersenne_twister_engine<_UIntType, __w, __n, __m, +16166: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: # 812 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class subtract_with_carry_engine +16166: { +16166: static_assert(std::is_unsigned<_UIntType>::value, +16166: "result_type must be an unsigned integral type"); +16166: static_assert(0u < __s && __s < __r, +16166: "0 < s < r"); +16166: static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, +16166: "template argument substituting __w out of bounds"); +16166: +16166: template +16166: using _If_seed_seq +16166: = __detail::_If_seed_seq_for<_Sseq, subtract_with_carry_engine, +16166: _UIntType>; +16166: +16166: public: +16166: +16166: typedef _UIntType result_type; +16166: +16166: +16166: static constexpr size_t word_size = __w; +16166: static constexpr size_t short_lag = __s; +16166: static constexpr size_t long_lag = __r; +16166: static constexpr uint_least32_t default_seed = 19780503u; +16166: +16166: subtract_with_carry_engine() : subtract_with_carry_engine(0u) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: subtract_with_carry_engine(result_type __sd) +16166: { seed(__sd); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: explicit +16166: subtract_with_carry_engine(_Sseq& __q) +16166: { seed(__q); } +16166: # 871 "/usr/include/c++/14/bits/random.h" 3 +16166: void +16166: seed(result_type __sd = 0u); +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _If_seed_seq<_Sseq> +16166: seed(_Sseq& __q); +16166: +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: min() +16166: { return 0; } +16166: +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: max() +16166: { return __detail::_Shift<_UIntType, __w>::__value - 1; } +16166: +16166: +16166: +16166: +16166: void +16166: discard(unsigned long long __z) +16166: { +16166: for (; __z != 0ULL; --__z) +16166: (*this)(); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: operator()(); +16166: # 926 "/usr/include/c++/14/bits/random.h" 3 +16166: friend bool +16166: operator==(const subtract_with_carry_engine& __lhs, +16166: const subtract_with_carry_engine& __rhs) +16166: { return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x) +16166: && __lhs._M_carry == __rhs._M_carry +16166: && __lhs._M_p == __rhs._M_p); } +16166: # 945 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::subtract_with_carry_engine<_UIntType1, __w1, +16166: __s1, __r1>& __x); +16166: # 964 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::subtract_with_carry_engine<_UIntType1, __w1, +16166: __s1, __r1>& __x); +16166: +16166: private: +16166: +16166: _UIntType _M_x[long_lag]; +16166: _UIntType _M_carry; +16166: size_t _M_p; +16166: }; +16166: # 991 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline bool +16166: operator!=(const std::subtract_with_carry_engine<_UIntType, __w, +16166: __s, __r>& __lhs, +16166: const std::subtract_with_carry_engine<_UIntType, __w, +16166: __s, __r>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: # 1009 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class discard_block_engine +16166: { +16166: static_assert(1 <= __r && __r <= __p, +16166: "template argument substituting __r out of bounds"); +16166: +16166: public: +16166: +16166: typedef typename _RandomNumberEngine::result_type result_type; +16166: +16166: template +16166: using _If_seed_seq +16166: = __detail::_If_seed_seq_for<_Sseq, discard_block_engine, +16166: result_type>; +16166: +16166: +16166: static constexpr size_t block_size = __p; +16166: static constexpr size_t used_block = __r; +16166: +16166: +16166: +16166: +16166: +16166: +16166: discard_block_engine() +16166: : _M_b(), _M_n(0) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: discard_block_engine(const _RandomNumberEngine& __rng) +16166: : _M_b(__rng), _M_n(0) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: discard_block_engine(_RandomNumberEngine&& __rng) +16166: : _M_b(std::move(__rng)), _M_n(0) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: discard_block_engine(result_type __s) +16166: : _M_b(__s), _M_n(0) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: explicit +16166: discard_block_engine(_Sseq& __q) +16166: : _M_b(__q), _M_n(0) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: seed() +16166: { +16166: _M_b.seed(); +16166: _M_n = 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: seed(result_type __s) +16166: { +16166: _M_b.seed(__s); +16166: _M_n = 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _If_seed_seq<_Sseq> +16166: seed(_Sseq& __q) +16166: { +16166: _M_b.seed(__q); +16166: _M_n = 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: const _RandomNumberEngine& +16166: base() const noexcept +16166: { return _M_b; } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: min() +16166: { return _RandomNumberEngine::min(); } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: max() +16166: { return _RandomNumberEngine::max(); } +16166: +16166: +16166: +16166: +16166: void +16166: discard(unsigned long long __z) +16166: { +16166: for (; __z != 0ULL; --__z) +16166: (*this)(); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: operator()(); +16166: # 1161 "/usr/include/c++/14/bits/random.h" 3 +16166: friend bool +16166: operator==(const discard_block_engine& __lhs, +16166: const discard_block_engine& __rhs) +16166: { return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; } +16166: # 1177 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::discard_block_engine<_RandomNumberEngine1, +16166: __p1, __r1>& __x); +16166: # 1195 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::discard_block_engine<_RandomNumberEngine1, +16166: __p1, __r1>& __x); +16166: +16166: private: +16166: _RandomNumberEngine _M_b; +16166: size_t _M_n; +16166: }; +16166: # 1219 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline bool +16166: operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, +16166: __r>& __lhs, +16166: const std::discard_block_engine<_RandomNumberEngine, __p, +16166: __r>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: # 1235 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class independent_bits_engine +16166: { +16166: static_assert(std::is_unsigned<_UIntType>::value, +16166: "result_type must be an unsigned integral type"); +16166: static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, +16166: "template argument substituting __w out of bounds"); +16166: +16166: template +16166: using _If_seed_seq +16166: = __detail::_If_seed_seq_for<_Sseq, independent_bits_engine, +16166: _UIntType>; +16166: +16166: public: +16166: +16166: typedef _UIntType result_type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: independent_bits_engine() +16166: : _M_b() { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: independent_bits_engine(const _RandomNumberEngine& __rng) +16166: : _M_b(__rng) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: independent_bits_engine(_RandomNumberEngine&& __rng) +16166: : _M_b(std::move(__rng)) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: independent_bits_engine(result_type __s) +16166: : _M_b(__s) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: explicit +16166: independent_bits_engine(_Sseq& __q) +16166: : _M_b(__q) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: seed() +16166: { _M_b.seed(); } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: seed(result_type __s) +16166: { _M_b.seed(__s); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _If_seed_seq<_Sseq> +16166: seed(_Sseq& __q) +16166: { _M_b.seed(__q); } +16166: +16166: +16166: +16166: +16166: +16166: const _RandomNumberEngine& +16166: base() const noexcept +16166: { return _M_b; } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: min() +16166: { return 0U; } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: max() +16166: { return __detail::_Shift<_UIntType, __w>::__value - 1; } +16166: +16166: +16166: +16166: +16166: void +16166: discard(unsigned long long __z) +16166: { +16166: for (; __z != 0ULL; --__z) +16166: (*this)(); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: operator()(); +16166: # 1377 "/usr/include/c++/14/bits/random.h" 3 +16166: friend bool +16166: operator==(const independent_bits_engine& __lhs, +16166: const independent_bits_engine& __rhs) +16166: { return __lhs._M_b == __rhs._M_b; } +16166: # 1394 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::independent_bits_engine<_RandomNumberEngine, +16166: __w, _UIntType>& __x) +16166: { +16166: __is >> __x._M_b; +16166: return __is; +16166: } +16166: +16166: private: +16166: _RandomNumberEngine _M_b; +16166: }; +16166: # 1421 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline bool +16166: operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, +16166: _UIntType>& __lhs, +16166: const std::independent_bits_engine<_RandomNumberEngine, __w, +16166: _UIntType>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: # 1440 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::independent_bits_engine<_RandomNumberEngine, +16166: __w, _UIntType>& __x) +16166: { +16166: __os << __x.base(); +16166: return __os; +16166: } +16166: # 1462 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class shuffle_order_engine +16166: { +16166: static_assert(1u <= __k, "template argument substituting " +16166: "__k out of bound"); +16166: +16166: public: +16166: +16166: typedef typename _RandomNumberEngine::result_type result_type; +16166: +16166: template +16166: using _If_seed_seq +16166: = __detail::_If_seed_seq_for<_Sseq, shuffle_order_engine, +16166: result_type>; +16166: +16166: static constexpr size_t table_size = __k; +16166: +16166: +16166: +16166: +16166: +16166: +16166: shuffle_order_engine() +16166: : _M_b() +16166: { _M_initialize(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: shuffle_order_engine(const _RandomNumberEngine& __rng) +16166: : _M_b(__rng) +16166: { _M_initialize(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: shuffle_order_engine(_RandomNumberEngine&& __rng) +16166: : _M_b(std::move(__rng)) +16166: { _M_initialize(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: shuffle_order_engine(result_type __s) +16166: : _M_b(__s) +16166: { _M_initialize(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: explicit +16166: shuffle_order_engine(_Sseq& __q) +16166: : _M_b(__q) +16166: { _M_initialize(); } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: seed() +16166: { +16166: _M_b.seed(); +16166: _M_initialize(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: seed(result_type __s) +16166: { +16166: _M_b.seed(__s); +16166: _M_initialize(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _If_seed_seq<_Sseq> +16166: seed(_Sseq& __q) +16166: { +16166: _M_b.seed(__q); +16166: _M_initialize(); +16166: } +16166: +16166: +16166: +16166: +16166: const _RandomNumberEngine& +16166: base() const noexcept +16166: { return _M_b; } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: min() +16166: { return _RandomNumberEngine::min(); } +16166: +16166: +16166: +16166: +16166: static constexpr result_type +16166: max() +16166: { return _RandomNumberEngine::max(); } +16166: +16166: +16166: +16166: +16166: void +16166: discard(unsigned long long __z) +16166: { +16166: for (; __z != 0ULL; --__z) +16166: (*this)(); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: operator()(); +16166: # 1615 "/usr/include/c++/14/bits/random.h" 3 +16166: friend bool +16166: operator==(const shuffle_order_engine& __lhs, +16166: const shuffle_order_engine& __rhs) +16166: { return (__lhs._M_b == __rhs._M_b +16166: && std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v) +16166: && __lhs._M_y == __rhs._M_y); } +16166: # 1633 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::shuffle_order_engine<_RandomNumberEngine1, +16166: __k1>& __x); +16166: # 1651 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); +16166: +16166: private: +16166: void _M_initialize() +16166: { +16166: for (size_t __i = 0; __i < __k; ++__i) +16166: _M_v[__i] = _M_b(); +16166: _M_y = _M_b(); +16166: } +16166: +16166: _RandomNumberEngine _M_b; +16166: result_type _M_v[__k]; +16166: result_type _M_y; +16166: }; +16166: # 1682 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline bool +16166: operator!=(const std::shuffle_order_engine<_RandomNumberEngine, +16166: __k>& __lhs, +16166: const std::shuffle_order_engine<_RandomNumberEngine, +16166: __k>& __rhs) +16166: { return !(__lhs == __rhs); } +16166: +16166: +16166: +16166: +16166: +16166: typedef linear_congruential_engine +16166: minstd_rand0; +16166: +16166: +16166: +16166: +16166: typedef linear_congruential_engine +16166: minstd_rand; +16166: # 1711 "/usr/include/c++/14/bits/random.h" 3 +16166: typedef mersenne_twister_engine< +16166: uint_fast32_t, +16166: 32, 624, 397, 31, +16166: 0x9908b0dfUL, 11, +16166: 0xffffffffUL, 7, +16166: 0x9d2c5680UL, 15, +16166: 0xefc60000UL, 18, 1812433253UL> mt19937; +16166: +16166: +16166: +16166: +16166: typedef mersenne_twister_engine< +16166: uint_fast64_t, +16166: 64, 312, 156, 31, +16166: 0xb5026f5aa96619e9ULL, 29, +16166: 0x5555555555555555ULL, 17, +16166: 0x71d67fffeda60000ULL, 37, +16166: 0xfff7eee000000000ULL, 43, +16166: 6364136223846793005ULL> mt19937_64; +16166: +16166: typedef subtract_with_carry_engine +16166: ranlux24_base; +16166: +16166: typedef subtract_with_carry_engine +16166: ranlux48_base; +16166: +16166: typedef discard_block_engine ranlux24; +16166: +16166: typedef discard_block_engine ranlux48; +16166: +16166: typedef shuffle_order_engine knuth_b; +16166: +16166: typedef minstd_rand0 default_random_engine; +16166: # 1752 "/usr/include/c++/14/bits/random.h" 3 +16166: class random_device +16166: { +16166: public: +16166: +16166: typedef unsigned int result_type; +16166: +16166: +16166: +16166: random_device() { _M_init("default"); } +16166: +16166: explicit +16166: random_device(const std::string& __token) { _M_init(__token); } +16166: +16166: ~random_device() +16166: { _M_fini(); } +16166: +16166: static constexpr result_type +16166: min() +16166: { return std::numeric_limits::min(); } +16166: +16166: static constexpr result_type +16166: max() +16166: { return std::numeric_limits::max(); } +16166: +16166: double +16166: entropy() const noexcept +16166: { return this->_M_getentropy(); } +16166: +16166: result_type +16166: operator()() +16166: { return this->_M_getval(); } +16166: +16166: +16166: random_device(const random_device&) = delete; +16166: void operator=(const random_device&) = delete; +16166: +16166: private: +16166: +16166: void _M_init(const std::string& __token); +16166: void _M_init_pretr1(const std::string& __token); +16166: void _M_fini(); +16166: +16166: result_type _M_getval(); +16166: result_type _M_getval_pretr1(); +16166: double _M_getentropy() const noexcept; +16166: +16166: void _M_init(const char*, size_t); +16166: +16166: __extension__ union +16166: { +16166: struct +16166: { +16166: void* _M_file; +16166: result_type (*_M_func)(void*); +16166: int _M_fd; +16166: }; +16166: mt19937 _M_mt; +16166: }; +16166: }; +16166: # 1833 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline bool +16166: operator!=(const std::uniform_int_distribution<_IntType>& __d1, +16166: const std::uniform_int_distribution<_IntType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 1850 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>&, +16166: const std::uniform_int_distribution<_IntType>&); +16166: # 1864 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>&, +16166: std::uniform_int_distribution<_IntType>&); +16166: # 1880 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class uniform_real_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef uniform_real_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(0) { } +16166: +16166: explicit +16166: param_type(_RealType __a, _RealType __b = _RealType(1)) +16166: : _M_a(__a), _M_b(__b) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_a <= _M_b)) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: result_type +16166: a() const +16166: { return _M_a; } +16166: +16166: result_type +16166: b() const +16166: { return _M_b; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_a; +16166: _RealType _M_b; +16166: }; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: uniform_real_distribution() : uniform_real_distribution(0.0) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: uniform_real_distribution(_RealType __a, _RealType __b = _RealType(1)) +16166: : _M_param(__a, __b) +16166: { } +16166: +16166: explicit +16166: uniform_real_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: reset() { } +16166: +16166: result_type +16166: a() const +16166: { return _M_param.a(); } +16166: +16166: result_type +16166: b() const +16166: { return _M_param.b(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return this->a(); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return this->b(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: return (__aurng() * (__p.b() - __p.a())) + __p.a(); +16166: } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const uniform_real_distribution& __d1, +16166: const uniform_real_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::uniform_real_distribution<_IntType>& __d1, +16166: const std::uniform_real_distribution<_IntType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 2078 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>&, +16166: const std::uniform_real_distribution<_RealType>&); +16166: # 2092 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>&, +16166: std::uniform_real_distribution<_RealType>&); +16166: # 2117 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class normal_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef normal_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(0.0) { } +16166: +16166: explicit +16166: param_type(_RealType __mean, _RealType __stddev = _RealType(1)) +16166: : _M_mean(__mean), _M_stddev(__stddev) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_stddev > _RealType(0))) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: _RealType +16166: mean() const +16166: { return _M_mean; } +16166: +16166: _RealType +16166: stddev() const +16166: { return _M_stddev; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return (__p1._M_mean == __p2._M_mean +16166: && __p1._M_stddev == __p2._M_stddev); } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_mean; +16166: _RealType _M_stddev; +16166: }; +16166: +16166: public: +16166: normal_distribution() : normal_distribution(0.0) { } +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: normal_distribution(result_type __mean, +16166: result_type __stddev = result_type(1)) +16166: : _M_param(__mean, __stddev) +16166: { } +16166: +16166: explicit +16166: normal_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { _M_saved_available = false; } +16166: +16166: +16166: +16166: +16166: _RealType +16166: mean() const +16166: { return _M_param.mean(); } +16166: +16166: +16166: +16166: +16166: _RealType +16166: stddev() const +16166: { return _M_param.stddev(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return std::numeric_limits::lowest(); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator==(const std::normal_distribution<_RealType1>& __d1, +16166: const std::normal_distribution<_RealType1>& __d2); +16166: # 2288 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::normal_distribution<_RealType1>& __x); +16166: # 2303 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::normal_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: result_type _M_saved = 0; +16166: bool _M_saved_available = false; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::normal_distribution<_RealType>& __d1, +16166: const std::normal_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 2344 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class lognormal_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef lognormal_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(0.0) { } +16166: +16166: explicit +16166: param_type(_RealType __m, _RealType __s = _RealType(1)) +16166: : _M_m(__m), _M_s(__s) +16166: { } +16166: +16166: _RealType +16166: m() const +16166: { return _M_m; } +16166: +16166: _RealType +16166: s() const +16166: { return _M_s; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_m; +16166: _RealType _M_s; +16166: }; +16166: +16166: lognormal_distribution() : lognormal_distribution(0.0) { } +16166: +16166: explicit +16166: lognormal_distribution(_RealType __m, _RealType __s = _RealType(1)) +16166: : _M_param(__m, __s), _M_nd() +16166: { } +16166: +16166: explicit +16166: lognormal_distribution(const param_type& __p) +16166: : _M_param(__p), _M_nd() +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { _M_nd.reset(); } +16166: +16166: +16166: +16166: +16166: _RealType +16166: m() const +16166: { return _M_param.m(); } +16166: +16166: _RealType +16166: s() const +16166: { return _M_param.s(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const lognormal_distribution& __d1, +16166: const lognormal_distribution& __d2) +16166: { return (__d1._M_param == __d2._M_param +16166: && __d1._M_nd == __d2._M_nd); } +16166: # 2505 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::lognormal_distribution<_RealType1>& __x); +16166: # 2520 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::lognormal_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: std::normal_distribution _M_nd; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::lognormal_distribution<_RealType>& __d1, +16166: const std::lognormal_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 2569 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class gamma_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef gamma_distribution<_RealType> distribution_type; +16166: friend class gamma_distribution<_RealType>; +16166: +16166: param_type() : param_type(1.0) { } +16166: +16166: explicit +16166: param_type(_RealType __alpha_val, _RealType __beta_val = _RealType(1)) +16166: : _M_alpha(__alpha_val), _M_beta(__beta_val) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_alpha > _RealType(0))) std::__glibcxx_assert_fail(); } while (false); +16166: _M_initialize(); +16166: } +16166: +16166: _RealType +16166: alpha() const +16166: { return _M_alpha; } +16166: +16166: _RealType +16166: beta() const +16166: { return _M_beta; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return (__p1._M_alpha == __p2._M_alpha +16166: && __p1._M_beta == __p2._M_beta); } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: void +16166: _M_initialize(); +16166: +16166: _RealType _M_alpha; +16166: _RealType _M_beta; +16166: +16166: _RealType _M_malpha, _M_a2; +16166: }; +16166: +16166: public: +16166: +16166: +16166: +16166: gamma_distribution() : gamma_distribution(1.0) { } +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: gamma_distribution(_RealType __alpha_val, +16166: _RealType __beta_val = _RealType(1)) +16166: : _M_param(__alpha_val, __beta_val), _M_nd() +16166: { } +16166: +16166: explicit +16166: gamma_distribution(const param_type& __p) +16166: : _M_param(__p), _M_nd() +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { _M_nd.reset(); } +16166: +16166: +16166: +16166: +16166: _RealType +16166: alpha() const +16166: { return _M_param.alpha(); } +16166: +16166: +16166: +16166: +16166: _RealType +16166: beta() const +16166: { return _M_param.beta(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const gamma_distribution& __d1, +16166: const gamma_distribution& __d2) +16166: { return (__d1._M_param == __d2._M_param +16166: && __d1._M_nd == __d2._M_nd); } +16166: # 2751 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::gamma_distribution<_RealType1>& __x); +16166: # 2765 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::gamma_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: std::normal_distribution _M_nd; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::gamma_distribution<_RealType>& __d1, +16166: const std::gamma_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 2811 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class chi_squared_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef chi_squared_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(1) { } +16166: +16166: explicit +16166: param_type(_RealType __n) +16166: : _M_n(__n) +16166: { } +16166: +16166: _RealType +16166: n() const +16166: { return _M_n; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_n == __p2._M_n; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_n; +16166: }; +16166: +16166: chi_squared_distribution() : chi_squared_distribution(1) { } +16166: +16166: explicit +16166: chi_squared_distribution(_RealType __n) +16166: : _M_param(__n), _M_gd(__n / 2) +16166: { } +16166: +16166: explicit +16166: chi_squared_distribution(const param_type& __p) +16166: : _M_param(__p), _M_gd(__p.n() / 2) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { _M_gd.reset(); } +16166: +16166: +16166: +16166: +16166: _RealType +16166: n() const +16166: { return _M_param.n(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { +16166: _M_param = __param; +16166: typedef typename std::gamma_distribution::param_type +16166: param_type; +16166: _M_gd.param(param_type{__param.n() / 2}); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return 2 * _M_gd(__urng); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: typedef typename std::gamma_distribution::param_type +16166: param_type; +16166: return 2 * _M_gd(__urng, param_type(__p.n() / 2)); +16166: } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { typename std::gamma_distribution::param_type +16166: __p2(__p.n() / 2); +16166: this->__generate_impl(__f, __t, __urng, __p2); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { typename std::gamma_distribution::param_type +16166: __p2(__p.n() / 2); +16166: this->__generate_impl(__f, __t, __urng, __p2); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const chi_squared_distribution& __d1, +16166: const chi_squared_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } +16166: # 2981 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::chi_squared_distribution<_RealType1>& __x); +16166: # 2996 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::chi_squared_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng); +16166: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const typename +16166: std::gamma_distribution::param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: std::gamma_distribution _M_gd; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::chi_squared_distribution<_RealType>& __d1, +16166: const std::chi_squared_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 3041 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class cauchy_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef cauchy_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(0) { } +16166: +16166: explicit +16166: param_type(_RealType __a, _RealType __b = _RealType(1)) +16166: : _M_a(__a), _M_b(__b) +16166: { } +16166: +16166: _RealType +16166: a() const +16166: { return _M_a; } +16166: +16166: _RealType +16166: b() const +16166: { return _M_b; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_a; +16166: _RealType _M_b; +16166: }; +16166: +16166: cauchy_distribution() : cauchy_distribution(0.0) { } +16166: +16166: explicit +16166: cauchy_distribution(_RealType __a, _RealType __b = 1.0) +16166: : _M_param(__a, __b) +16166: { } +16166: +16166: explicit +16166: cauchy_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { } +16166: +16166: +16166: +16166: +16166: _RealType +16166: a() const +16166: { return _M_param.a(); } +16166: +16166: _RealType +16166: b() const +16166: { return _M_param.b(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return std::numeric_limits::lowest(); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const cauchy_distribution& __d1, +16166: const cauchy_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::cauchy_distribution<_RealType>& __d1, +16166: const std::cauchy_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 3222 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::cauchy_distribution<_RealType>& __x); +16166: # 3237 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::cauchy_distribution<_RealType>& __x); +16166: # 3256 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class fisher_f_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef fisher_f_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(1) { } +16166: +16166: explicit +16166: param_type(_RealType __m, _RealType __n = _RealType(1)) +16166: : _M_m(__m), _M_n(__n) +16166: { } +16166: +16166: _RealType +16166: m() const +16166: { return _M_m; } +16166: +16166: _RealType +16166: n() const +16166: { return _M_n; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_m; +16166: _RealType _M_n; +16166: }; +16166: +16166: fisher_f_distribution() : fisher_f_distribution(1.0) { } +16166: +16166: explicit +16166: fisher_f_distribution(_RealType __m, +16166: _RealType __n = _RealType(1)) +16166: : _M_param(__m, __n), _M_gd_x(__m / 2), _M_gd_y(__n / 2) +16166: { } +16166: +16166: explicit +16166: fisher_f_distribution(const param_type& __p) +16166: : _M_param(__p), _M_gd_x(__p.m() / 2), _M_gd_y(__p.n() / 2) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { +16166: _M_gd_x.reset(); +16166: _M_gd_y.reset(); +16166: } +16166: +16166: +16166: +16166: +16166: _RealType +16166: m() const +16166: { return _M_param.m(); } +16166: +16166: _RealType +16166: n() const +16166: { return _M_param.n(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: typedef typename std::gamma_distribution::param_type +16166: param_type; +16166: return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n()) +16166: / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m())); +16166: } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const fisher_f_distribution& __d1, +16166: const fisher_f_distribution& __d2) +16166: { return (__d1._M_param == __d2._M_param +16166: && __d1._M_gd_x == __d2._M_gd_x +16166: && __d1._M_gd_y == __d2._M_gd_y); } +16166: # 3433 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::fisher_f_distribution<_RealType1>& __x); +16166: # 3448 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::fisher_f_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng); +16166: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: std::gamma_distribution _M_gd_x, _M_gd_y; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::fisher_f_distribution<_RealType>& __d1, +16166: const std::fisher_f_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 3495 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class student_t_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef student_t_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(1) { } +16166: +16166: explicit +16166: param_type(_RealType __n) +16166: : _M_n(__n) +16166: { } +16166: +16166: _RealType +16166: n() const +16166: { return _M_n; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_n == __p2._M_n; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_n; +16166: }; +16166: +16166: student_t_distribution() : student_t_distribution(1.0) { } +16166: +16166: explicit +16166: student_t_distribution(_RealType __n) +16166: : _M_param(__n), _M_nd(), _M_gd(__n / 2, 2) +16166: { } +16166: +16166: explicit +16166: student_t_distribution(const param_type& __p) +16166: : _M_param(__p), _M_nd(), _M_gd(__p.n() / 2, 2) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { +16166: _M_nd.reset(); +16166: _M_gd.reset(); +16166: } +16166: +16166: +16166: +16166: +16166: _RealType +16166: n() const +16166: { return _M_param.n(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return std::numeric_limits::lowest(); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: typedef typename std::gamma_distribution::param_type +16166: param_type; +16166: +16166: const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2)); +16166: return _M_nd(__urng) * std::sqrt(__p.n() / __g); +16166: } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const student_t_distribution& __d1, +16166: const student_t_distribution& __d2) +16166: { return (__d1._M_param == __d2._M_param +16166: && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); } +16166: # 3662 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::student_t_distribution<_RealType1>& __x); +16166: # 3677 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::student_t_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng); +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: std::normal_distribution _M_nd; +16166: std::gamma_distribution _M_gd; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::student_t_distribution<_RealType>& __d1, +16166: const std::student_t_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 3729 "/usr/include/c++/14/bits/random.h" 3 +16166: class bernoulli_distribution +16166: { +16166: public: +16166: +16166: typedef bool result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef bernoulli_distribution distribution_type; +16166: +16166: param_type() : param_type(0.5) { } +16166: +16166: explicit +16166: param_type(double __p) +16166: : _M_p(__p) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool((_M_p >= 0.0) && (_M_p <= 1.0))) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: double +16166: p() const +16166: { return _M_p; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_p == __p2._M_p; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: double _M_p; +16166: }; +16166: +16166: public: +16166: +16166: +16166: +16166: bernoulli_distribution() : bernoulli_distribution(0.5) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: bernoulli_distribution(double __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: explicit +16166: bernoulli_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: reset() { } +16166: +16166: +16166: +16166: +16166: double +16166: p() const +16166: { return _M_param.p(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return std::numeric_limits::min(); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: if ((__aurng() - __aurng.min()) +16166: < __p.p() * (__aurng.max() - __aurng.min())) +16166: return true; +16166: return false; +16166: } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const bernoulli_distribution& __d1, +16166: const bernoulli_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline bool +16166: operator!=(const std::bernoulli_distribution& __d1, +16166: const std::bernoulli_distribution& __d2) +16166: { return !(__d1 == __d2); } +16166: # 3916 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::bernoulli_distribution& __x); +16166: # 3930 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: inline std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::bernoulli_distribution& __x) +16166: { +16166: double __p; +16166: if (__is >> __p) +16166: __x.param(bernoulli_distribution::param_type(__p)); +16166: return __is; +16166: } +16166: # 3952 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class binomial_distribution +16166: { +16166: static_assert(std::is_integral<_IntType>::value, +16166: "result_type must be an integral type"); +16166: +16166: public: +16166: +16166: typedef _IntType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef binomial_distribution<_IntType> distribution_type; +16166: friend class binomial_distribution<_IntType>; +16166: +16166: param_type() : param_type(1) { } +16166: +16166: explicit +16166: param_type(_IntType __t, double __p = 0.5) +16166: : _M_t(__t), _M_p(__p) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool((_M_t >= _IntType(0)) && (_M_p >= 0.0) && (_M_p <= 1.0))) std::__glibcxx_assert_fail(); } while (false) +16166: +16166: ; +16166: _M_initialize(); +16166: } +16166: +16166: _IntType +16166: t() const +16166: { return _M_t; } +16166: +16166: double +16166: p() const +16166: { return _M_p; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: void +16166: _M_initialize(); +16166: +16166: _IntType _M_t; +16166: double _M_p; +16166: +16166: double _M_q; +16166: +16166: double _M_d1, _M_d2, _M_s1, _M_s2, _M_c, +16166: _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; +16166: +16166: bool _M_easy; +16166: }; +16166: +16166: +16166: +16166: binomial_distribution() : binomial_distribution(1) { } +16166: +16166: explicit +16166: binomial_distribution(_IntType __t, double __p = 0.5) +16166: : _M_param(__t, __p), _M_nd() +16166: { } +16166: +16166: explicit +16166: binomial_distribution(const param_type& __p) +16166: : _M_param(__p), _M_nd() +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { _M_nd.reset(); } +16166: +16166: +16166: +16166: +16166: _IntType +16166: t() const +16166: { return _M_param.t(); } +16166: +16166: +16166: +16166: +16166: double +16166: p() const +16166: { return _M_param.p(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return 0; } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return _M_param.t(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const binomial_distribution& __d1, +16166: const binomial_distribution& __d2) +16166: +16166: { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +16166: # 4136 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::binomial_distribution<_IntType1>& __x); +16166: # 4152 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::binomial_distribution<_IntType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: result_type +16166: _M_waiting(_UniformRandomNumberGenerator& __urng, +16166: _IntType __t, double __q); +16166: +16166: param_type _M_param; +16166: +16166: +16166: std::normal_distribution _M_nd; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::binomial_distribution<_IntType>& __d1, +16166: const std::binomial_distribution<_IntType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 4198 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class geometric_distribution +16166: { +16166: static_assert(std::is_integral<_IntType>::value, +16166: "result_type must be an integral type"); +16166: +16166: public: +16166: +16166: typedef _IntType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef geometric_distribution<_IntType> distribution_type; +16166: friend class geometric_distribution<_IntType>; +16166: +16166: param_type() : param_type(0.5) { } +16166: +16166: explicit +16166: param_type(double __p) +16166: : _M_p(__p) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool((_M_p > 0.0) && (_M_p < 1.0))) std::__glibcxx_assert_fail(); } while (false); +16166: _M_initialize(); +16166: } +16166: +16166: double +16166: p() const +16166: { return _M_p; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_p == __p2._M_p; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: void +16166: _M_initialize() +16166: { _M_log_1_p = std::log(1.0 - _M_p); } +16166: +16166: double _M_p; +16166: +16166: double _M_log_1_p; +16166: }; +16166: +16166: +16166: +16166: geometric_distribution() : geometric_distribution(0.5) { } +16166: +16166: explicit +16166: geometric_distribution(double __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: explicit +16166: geometric_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: reset() { } +16166: +16166: +16166: +16166: +16166: double +16166: p() const +16166: { return _M_param.p(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return 0; } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const geometric_distribution& __d1, +16166: const geometric_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::geometric_distribution<_IntType>& __d1, +16166: const std::geometric_distribution<_IntType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 4383 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::geometric_distribution<_IntType>& __x); +16166: # 4398 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::geometric_distribution<_IntType>& __x); +16166: # 4415 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class negative_binomial_distribution +16166: { +16166: static_assert(std::is_integral<_IntType>::value, +16166: "result_type must be an integral type"); +16166: +16166: public: +16166: +16166: typedef _IntType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef negative_binomial_distribution<_IntType> distribution_type; +16166: +16166: param_type() : param_type(1) { } +16166: +16166: explicit +16166: param_type(_IntType __k, double __p = 0.5) +16166: : _M_k(__k), _M_p(__p) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0))) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: _IntType +16166: k() const +16166: { return _M_k; } +16166: +16166: double +16166: p() const +16166: { return _M_p; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _IntType _M_k; +16166: double _M_p; +16166: }; +16166: +16166: negative_binomial_distribution() : negative_binomial_distribution(1) { } +16166: +16166: explicit +16166: negative_binomial_distribution(_IntType __k, double __p = 0.5) +16166: : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p) +16166: { } +16166: +16166: explicit +16166: negative_binomial_distribution(const param_type& __p) +16166: : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p()) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { _M_gd.reset(); } +16166: +16166: +16166: +16166: +16166: _IntType +16166: k() const +16166: { return _M_param.k(); } +16166: +16166: +16166: +16166: +16166: double +16166: p() const +16166: { return _M_param.p(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng); +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate_impl(__f, __t, __urng); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const negative_binomial_distribution& __d1, +16166: const negative_binomial_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } +16166: # 4585 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::negative_binomial_distribution<_IntType1>& __x); +16166: # 4600 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::negative_binomial_distribution<_IntType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng); +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: std::gamma_distribution _M_gd; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::negative_binomial_distribution<_IntType>& __d1, +16166: const std::negative_binomial_distribution<_IntType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 4652 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class poisson_distribution +16166: { +16166: static_assert(std::is_integral<_IntType>::value, +16166: "result_type must be an integral type"); +16166: +16166: public: +16166: +16166: typedef _IntType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef poisson_distribution<_IntType> distribution_type; +16166: friend class poisson_distribution<_IntType>; +16166: +16166: param_type() : param_type(1.0) { } +16166: +16166: explicit +16166: param_type(double __mean) +16166: : _M_mean(__mean) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_mean > 0.0)) std::__glibcxx_assert_fail(); } while (false); +16166: _M_initialize(); +16166: } +16166: +16166: double +16166: mean() const +16166: { return _M_mean; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_mean == __p2._M_mean; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: +16166: void +16166: _M_initialize(); +16166: +16166: double _M_mean; +16166: +16166: double _M_lm_thr; +16166: +16166: double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; +16166: +16166: }; +16166: +16166: +16166: +16166: poisson_distribution() : poisson_distribution(1.0) { } +16166: +16166: explicit +16166: poisson_distribution(double __mean) +16166: : _M_param(__mean), _M_nd() +16166: { } +16166: +16166: explicit +16166: poisson_distribution(const param_type& __p) +16166: : _M_param(__p), _M_nd() +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { _M_nd.reset(); } +16166: +16166: +16166: +16166: +16166: double +16166: mean() const +16166: { return _M_param.mean(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return 0; } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const poisson_distribution& __d1, +16166: const poisson_distribution& __d2) +16166: +16166: { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +16166: # 4821 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::poisson_distribution<_IntType1>& __x); +16166: # 4836 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::poisson_distribution<_IntType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: +16166: +16166: std::normal_distribution _M_nd; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::poisson_distribution<_IntType>& __d1, +16166: const std::poisson_distribution<_IntType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 4884 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class exponential_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef exponential_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(1.0) { } +16166: +16166: explicit +16166: param_type(_RealType __lambda) +16166: : _M_lambda(__lambda) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(_M_lambda > _RealType(0))) std::__glibcxx_assert_fail(); } while (false); +16166: } +16166: +16166: _RealType +16166: lambda() const +16166: { return _M_lambda; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_lambda == __p2._M_lambda; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_lambda; +16166: }; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: exponential_distribution() : exponential_distribution(1.0) { } +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: exponential_distribution(_RealType __lambda) +16166: : _M_param(__lambda) +16166: { } +16166: +16166: explicit +16166: exponential_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: reset() { } +16166: +16166: +16166: +16166: +16166: _RealType +16166: lambda() const +16166: { return _M_param.lambda(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: return -std::log(result_type(1) - __aurng()) / __p.lambda(); +16166: } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const exponential_distribution& __d1, +16166: const exponential_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::exponential_distribution<_RealType>& __d1, +16166: const std::exponential_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 5073 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::exponential_distribution<_RealType>& __x); +16166: # 5088 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::exponential_distribution<_RealType>& __x); +16166: # 5106 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class weibull_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef weibull_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(1.0) { } +16166: +16166: explicit +16166: param_type(_RealType __a, _RealType __b = _RealType(1.0)) +16166: : _M_a(__a), _M_b(__b) +16166: { } +16166: +16166: _RealType +16166: a() const +16166: { return _M_a; } +16166: +16166: _RealType +16166: b() const +16166: { return _M_b; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_a; +16166: _RealType _M_b; +16166: }; +16166: +16166: weibull_distribution() : weibull_distribution(1.0) { } +16166: +16166: explicit +16166: weibull_distribution(_RealType __a, _RealType __b = _RealType(1)) +16166: : _M_param(__a, __b) +16166: { } +16166: +16166: explicit +16166: weibull_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { } +16166: +16166: +16166: +16166: +16166: _RealType +16166: a() const +16166: { return _M_param.a(); } +16166: +16166: +16166: +16166: +16166: _RealType +16166: b() const +16166: { return _M_param.b(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const weibull_distribution& __d1, +16166: const weibull_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::weibull_distribution<_RealType>& __d1, +16166: const std::weibull_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 5290 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::weibull_distribution<_RealType>& __x); +16166: # 5305 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::weibull_distribution<_RealType>& __x); +16166: # 5323 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class extreme_value_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef extreme_value_distribution<_RealType> distribution_type; +16166: +16166: param_type() : param_type(0.0) { } +16166: +16166: explicit +16166: param_type(_RealType __a, _RealType __b = _RealType(1.0)) +16166: : _M_a(__a), _M_b(__b) +16166: { } +16166: +16166: _RealType +16166: a() const +16166: { return _M_a; } +16166: +16166: _RealType +16166: b() const +16166: { return _M_b; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: _RealType _M_a; +16166: _RealType _M_b; +16166: }; +16166: +16166: extreme_value_distribution() : extreme_value_distribution(0.0) { } +16166: +16166: explicit +16166: extreme_value_distribution(_RealType __a, _RealType __b = _RealType(1)) +16166: : _M_param(__a, __b) +16166: { } +16166: +16166: explicit +16166: extreme_value_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { } +16166: +16166: +16166: +16166: +16166: _RealType +16166: a() const +16166: { return _M_param.a(); } +16166: +16166: +16166: +16166: +16166: _RealType +16166: b() const +16166: { return _M_param.b(); } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return std::numeric_limits::lowest(); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { return std::numeric_limits::max(); } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const extreme_value_distribution& __d1, +16166: const extreme_value_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::extreme_value_distribution<_RealType>& __d1, +16166: const std::extreme_value_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 5507 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::extreme_value_distribution<_RealType>& __x); +16166: # 5522 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::extreme_value_distribution<_RealType>& __x); +16166: # 5545 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class discrete_distribution +16166: { +16166: static_assert(std::is_integral<_IntType>::value, +16166: "result_type must be an integral type"); +16166: +16166: public: +16166: +16166: typedef _IntType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef discrete_distribution<_IntType> distribution_type; +16166: friend class discrete_distribution<_IntType>; +16166: +16166: param_type() +16166: : _M_prob(), _M_cp() +16166: { } +16166: +16166: template +16166: param_type(_InputIterator __wbegin, +16166: _InputIterator __wend) +16166: : _M_prob(__wbegin, __wend), _M_cp() +16166: { _M_initialize(); } +16166: +16166: param_type(initializer_list __wil) +16166: : _M_prob(__wil.begin(), __wil.end()), _M_cp() +16166: { _M_initialize(); } +16166: +16166: template +16166: param_type(size_t __nw, double __xmin, double __xmax, +16166: _Func __fw); +16166: +16166: +16166: param_type(const param_type&) = default; +16166: param_type& operator=(const param_type&) = default; +16166: +16166: std::vector +16166: probabilities() const +16166: { return _M_prob.empty() ? std::vector(1, 1.0) : _M_prob; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_prob == __p2._M_prob; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: void +16166: _M_initialize(); +16166: +16166: std::vector _M_prob; +16166: std::vector _M_cp; +16166: }; +16166: +16166: discrete_distribution() +16166: : _M_param() +16166: { } +16166: +16166: template +16166: discrete_distribution(_InputIterator __wbegin, +16166: _InputIterator __wend) +16166: : _M_param(__wbegin, __wend) +16166: { } +16166: +16166: discrete_distribution(initializer_list __wl) +16166: : _M_param(__wl) +16166: { } +16166: +16166: template +16166: discrete_distribution(size_t __nw, double __xmin, double __xmax, +16166: _Func __fw) +16166: : _M_param(__nw, __xmin, __xmax, __fw) +16166: { } +16166: +16166: explicit +16166: discrete_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { } +16166: +16166: +16166: +16166: +16166: std::vector +16166: probabilities() const +16166: { +16166: return _M_param._M_prob.empty() +16166: ? std::vector(1, 1.0) : _M_param._M_prob; +16166: } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { return result_type(0); } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { +16166: return _M_param._M_prob.empty() +16166: ? result_type(0) : result_type(_M_param._M_prob.size() - 1); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const discrete_distribution& __d1, +16166: const discrete_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: # 5733 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::discrete_distribution<_IntType1>& __x); +16166: # 5749 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::discrete_distribution<_IntType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::discrete_distribution<_IntType>& __d1, +16166: const std::discrete_distribution<_IntType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 5793 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class piecewise_constant_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef piecewise_constant_distribution<_RealType> distribution_type; +16166: friend class piecewise_constant_distribution<_RealType>; +16166: +16166: param_type() +16166: : _M_int(), _M_den(), _M_cp() +16166: { } +16166: +16166: template +16166: param_type(_InputIteratorB __bfirst, +16166: _InputIteratorB __bend, +16166: _InputIteratorW __wbegin); +16166: +16166: template +16166: param_type(initializer_list<_RealType> __bi, _Func __fw); +16166: +16166: template +16166: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, +16166: _Func __fw); +16166: +16166: +16166: param_type(const param_type&) = default; +16166: param_type& operator=(const param_type&) = default; +16166: +16166: std::vector<_RealType> +16166: intervals() const +16166: { +16166: if (_M_int.empty()) +16166: { +16166: std::vector<_RealType> __tmp(2); +16166: __tmp[1] = _RealType(1); +16166: return __tmp; +16166: } +16166: else +16166: return _M_int; +16166: } +16166: +16166: std::vector +16166: densities() const +16166: { return _M_den.empty() ? std::vector(1, 1.0) : _M_den; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: void +16166: _M_initialize(); +16166: +16166: std::vector<_RealType> _M_int; +16166: std::vector _M_den; +16166: std::vector _M_cp; +16166: }; +16166: +16166: piecewise_constant_distribution() +16166: : _M_param() +16166: { } +16166: +16166: template +16166: piecewise_constant_distribution(_InputIteratorB __bfirst, +16166: _InputIteratorB __bend, +16166: _InputIteratorW __wbegin) +16166: : _M_param(__bfirst, __bend, __wbegin) +16166: { } +16166: +16166: template +16166: piecewise_constant_distribution(initializer_list<_RealType> __bl, +16166: _Func __fw) +16166: : _M_param(__bl, __fw) +16166: { } +16166: +16166: template +16166: piecewise_constant_distribution(size_t __nw, +16166: _RealType __xmin, _RealType __xmax, +16166: _Func __fw) +16166: : _M_param(__nw, __xmin, __xmax, __fw) +16166: { } +16166: +16166: explicit +16166: piecewise_constant_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { } +16166: +16166: +16166: +16166: +16166: std::vector<_RealType> +16166: intervals() const +16166: { +16166: if (_M_param._M_int.empty()) +16166: { +16166: std::vector<_RealType> __tmp(2); +16166: __tmp[1] = _RealType(1); +16166: return __tmp; +16166: } +16166: else +16166: return _M_param._M_int; +16166: } +16166: +16166: +16166: +16166: +16166: std::vector +16166: densities() const +16166: { +16166: return _M_param._M_den.empty() +16166: ? std::vector(1, 1.0) : _M_param._M_den; +16166: } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { +16166: return _M_param._M_int.empty() +16166: ? result_type(0) : _M_param._M_int.front(); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { +16166: return _M_param._M_int.empty() +16166: ? result_type(1) : _M_param._M_int.back(); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const piecewise_constant_distribution& __d1, +16166: const piecewise_constant_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: # 6017 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::piecewise_constant_distribution<_RealType1>& __x); +16166: # 6033 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::piecewise_constant_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, +16166: const std::piecewise_constant_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 6073 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: class piecewise_linear_distribution +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "result_type must be a floating point type"); +16166: +16166: public: +16166: +16166: typedef _RealType result_type; +16166: +16166: +16166: struct param_type +16166: { +16166: typedef piecewise_linear_distribution<_RealType> distribution_type; +16166: friend class piecewise_linear_distribution<_RealType>; +16166: +16166: param_type() +16166: : _M_int(), _M_den(), _M_cp(), _M_m() +16166: { } +16166: +16166: template +16166: param_type(_InputIteratorB __bfirst, +16166: _InputIteratorB __bend, +16166: _InputIteratorW __wbegin); +16166: +16166: template +16166: param_type(initializer_list<_RealType> __bl, _Func __fw); +16166: +16166: template +16166: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, +16166: _Func __fw); +16166: +16166: +16166: param_type(const param_type&) = default; +16166: param_type& operator=(const param_type&) = default; +16166: +16166: std::vector<_RealType> +16166: intervals() const +16166: { +16166: if (_M_int.empty()) +16166: { +16166: std::vector<_RealType> __tmp(2); +16166: __tmp[1] = _RealType(1); +16166: return __tmp; +16166: } +16166: else +16166: return _M_int; +16166: } +16166: +16166: std::vector +16166: densities() const +16166: { return _M_den.empty() ? std::vector(2, 1.0) : _M_den; } +16166: +16166: friend bool +16166: operator==(const param_type& __p1, const param_type& __p2) +16166: { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } +16166: +16166: +16166: friend bool +16166: operator!=(const param_type& __p1, const param_type& __p2) +16166: { return !(__p1 == __p2); } +16166: +16166: +16166: private: +16166: void +16166: _M_initialize(); +16166: +16166: std::vector<_RealType> _M_int; +16166: std::vector _M_den; +16166: std::vector _M_cp; +16166: std::vector _M_m; +16166: }; +16166: +16166: piecewise_linear_distribution() +16166: : _M_param() +16166: { } +16166: +16166: template +16166: piecewise_linear_distribution(_InputIteratorB __bfirst, +16166: _InputIteratorB __bend, +16166: _InputIteratorW __wbegin) +16166: : _M_param(__bfirst, __bend, __wbegin) +16166: { } +16166: +16166: template +16166: piecewise_linear_distribution(initializer_list<_RealType> __bl, +16166: _Func __fw) +16166: : _M_param(__bl, __fw) +16166: { } +16166: +16166: template +16166: piecewise_linear_distribution(size_t __nw, +16166: _RealType __xmin, _RealType __xmax, +16166: _Func __fw) +16166: : _M_param(__nw, __xmin, __xmax, __fw) +16166: { } +16166: +16166: explicit +16166: piecewise_linear_distribution(const param_type& __p) +16166: : _M_param(__p) +16166: { } +16166: +16166: +16166: +16166: +16166: void +16166: reset() +16166: { } +16166: +16166: +16166: +16166: +16166: std::vector<_RealType> +16166: intervals() const +16166: { +16166: if (_M_param._M_int.empty()) +16166: { +16166: std::vector<_RealType> __tmp(2); +16166: __tmp[1] = _RealType(1); +16166: return __tmp; +16166: } +16166: else +16166: return _M_param._M_int; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: std::vector +16166: densities() const +16166: { +16166: return _M_param._M_den.empty() +16166: ? std::vector(2, 1.0) : _M_param._M_den; +16166: } +16166: +16166: +16166: +16166: +16166: param_type +16166: param() const +16166: { return _M_param; } +16166: +16166: +16166: +16166: +16166: +16166: void +16166: param(const param_type& __param) +16166: { _M_param = __param; } +16166: +16166: +16166: +16166: +16166: result_type +16166: min() const +16166: { +16166: return _M_param._M_int.empty() +16166: ? result_type(0) : _M_param._M_int.front(); +16166: } +16166: +16166: +16166: +16166: +16166: result_type +16166: max() const +16166: { +16166: return _M_param._M_int.empty() +16166: ? result_type(1) : _M_param._M_int.back(); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { return this->operator()(__urng, _M_param); } +16166: +16166: template +16166: result_type +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { this->__generate(__f, __t, __urng, _M_param); } +16166: +16166: template +16166: void +16166: __generate(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: template +16166: void +16166: __generate(result_type* __f, result_type* __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { this->__generate_impl(__f, __t, __urng, __p); } +16166: +16166: +16166: +16166: +16166: +16166: friend bool +16166: operator==(const piecewise_linear_distribution& __d1, +16166: const piecewise_linear_distribution& __d2) +16166: { return __d1._M_param == __d2._M_param; } +16166: # 6299 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const std::piecewise_linear_distribution<_RealType1>& __x); +16166: # 6315 "/usr/include/c++/14/bits/random.h" 3 +16166: template +16166: friend std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: std::piecewise_linear_distribution<_RealType1>& __x); +16166: +16166: private: +16166: template +16166: void +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p); +16166: +16166: param_type _M_param; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, +16166: const std::piecewise_linear_distribution<_RealType>& __d2) +16166: { return !(__d1 == __d2); } +16166: # 6360 "/usr/include/c++/14/bits/random.h" 3 +16166: class seed_seq +16166: { +16166: public: +16166: +16166: typedef uint_least32_t result_type; +16166: +16166: +16166: seed_seq() noexcept +16166: : _M_v() +16166: { } +16166: +16166: template>> +16166: seed_seq(std::initializer_list<_IntType> __il); +16166: +16166: template +16166: seed_seq(_InputIterator __begin, _InputIterator __end); +16166: +16166: +16166: template +16166: void +16166: generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); +16166: +16166: +16166: size_t size() const noexcept +16166: { return _M_v.size(); } +16166: +16166: template +16166: void +16166: param(_OutputIterator __dest) const +16166: { std::copy(_M_v.begin(), _M_v.end(), __dest); } +16166: +16166: +16166: seed_seq(const seed_seq&) = delete; +16166: seed_seq& operator=(const seed_seq&) = delete; +16166: +16166: private: +16166: std::vector _M_v; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 49 "/usr/include/c++/14/random" 2 3 +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/opt_random.h" 1 3 +16166: # 33 "/usr/include/arm-linux-gnueabihf/c++/14/bits/opt_random.h" 3 +16166: +16166: # 34 "/usr/include/arm-linux-gnueabihf/c++/14/bits/opt_random.h" 3 +16166: # 50 "/usr/include/c++/14/random" 2 3 +16166: # 1 "/usr/include/c++/14/bits/random.tcc" 1 3 +16166: # 33 "/usr/include/c++/14/bits/random.tcc" 3 +16166: # 1 "/usr/include/c++/14/numeric" 1 3 +16166: # 58 "/usr/include/c++/14/numeric" 3 +16166: +16166: # 59 "/usr/include/c++/14/numeric" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_numeric.h" 1 3 +16166: # 64 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 85 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: void +16166: iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: { +16166: *__first = __value; +16166: ++__value; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: # 131 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: inline _Tp +16166: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) +16166: { +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: __init = __init + *__first; +16166: return __init; +16166: } +16166: # 158 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: inline _Tp +16166: accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, +16166: _BinaryOperation __binary_op) +16166: { +16166: +16166: +16166: ; +16166: +16166: for (; __first != __last; ++__first) +16166: __init = __binary_op(__init, *__first); +16166: return __init; +16166: } +16166: # 187 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: inline _Tp +16166: inner_product(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _Tp __init) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first1 != __last1; ++__first1, (void)++__first2) +16166: __init = __init + (*__first1 * *__first2); +16166: return __init; +16166: } +16166: # 219 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: inline _Tp +16166: inner_product(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _Tp __init, +16166: _BinaryOperation1 __binary_op1, +16166: _BinaryOperation2 __binary_op2) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: for (; __first1 != __last1; ++__first1, (void)++__first2) +16166: __init = __binary_op1(__init, +16166: __binary_op2(*__first1, *__first2)); +16166: return __init; +16166: } +16166: # 253 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: partial_sum(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result) +16166: { +16166: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return __result; +16166: _ValueType __value = *__first; +16166: *__result = __value; +16166: while (++__first != __last) +16166: { +16166: __value = __value + *__first; +16166: *++__result = __value; +16166: } +16166: return ++__result; +16166: } +16166: # 294 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: partial_sum(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _BinaryOperation __binary_op) +16166: { +16166: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return __result; +16166: _ValueType __value = *__first; +16166: *__result = __value; +16166: while (++__first != __last) +16166: { +16166: __value = __binary_op(__value, *__first); +16166: *++__result = __value; +16166: } +16166: return ++__result; +16166: } +16166: # 334 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: adjacent_difference(_InputIterator __first, +16166: _InputIterator __last, _OutputIterator __result) +16166: { +16166: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return __result; +16166: _ValueType __value = *__first; +16166: *__result = __value; +16166: while (++__first != __last) +16166: { +16166: _ValueType __tmp = *__first; +16166: *++__result = __tmp - __value; +16166: __value = std::move(__tmp); +16166: } +16166: return ++__result; +16166: } +16166: # 376 "/usr/include/c++/14/bits/stl_numeric.h" 3 +16166: template +16166: +16166: _OutputIterator +16166: adjacent_difference(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _BinaryOperation __binary_op) +16166: { +16166: typedef typename iterator_traits<_InputIterator>::value_type _ValueType; +16166: +16166: +16166: +16166: +16166: +16166: ; +16166: +16166: if (__first == __last) +16166: return __result; +16166: _ValueType __value = *__first; +16166: *__result = __value; +16166: while (++__first != __last) +16166: { +16166: _ValueType __tmp = *__first; +16166: *++__result = __binary_op(__tmp, __value); +16166: __value = std::move(__tmp); +16166: } +16166: return ++__result; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 63 "/usr/include/c++/14/numeric" 2 3 +16166: # 90 "/usr/include/c++/14/numeric" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 91 "/usr/include/c++/14/numeric" 2 3 +16166: # 104 "/usr/include/c++/14/numeric" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: namespace __detail +16166: { +16166: +16166: +16166: template +16166: constexpr _Res +16166: __abs_r(_Tp __val) +16166: { +16166: static_assert(sizeof(_Res) >= sizeof(_Tp), +16166: "result type must be at least as wide as the input type"); +16166: +16166: if (__val >= 0) +16166: return __val; +16166: +16166: +16166: +16166: +16166: return -static_cast<_Res>(__val); +16166: } +16166: +16166: template void __abs_r(bool) = delete; +16166: +16166: +16166: template +16166: constexpr _Tp +16166: __gcd(_Tp __m, _Tp __n) +16166: { +16166: static_assert(is_unsigned<_Tp>::value, "type must be unsigned"); +16166: +16166: if (__m == 0) +16166: return __n; +16166: if (__n == 0) +16166: return __m; +16166: +16166: const int __i = std::__countr_zero(__m); +16166: __m >>= __i; +16166: const int __j = std::__countr_zero(__n); +16166: __n >>= __j; +16166: const int __k = __i < __j ? __i : __j; +16166: +16166: while (true) +16166: { +16166: if (__m > __n) +16166: { +16166: _Tp __tmp = __m; +16166: __m = __n; +16166: __n = __tmp; +16166: } +16166: +16166: __n -= __m; +16166: +16166: if (__n == 0) +16166: return __m << __k; +16166: +16166: __n >>= std::__countr_zero(__n); +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: constexpr common_type_t<_Mn, _Nn> +16166: gcd(_Mn __m, _Nn __n) noexcept +16166: { +16166: static_assert(is_integral_v<_Mn> && is_integral_v<_Nn>, +16166: "std::gcd arguments must be integers"); +16166: static_assert(_Mn(2) == 2 && _Nn(2) == 2, +16166: "std::gcd arguments must not be bool"); +16166: using _Ct = common_type_t<_Mn, _Nn>; +16166: const _Ct __m2 = __detail::__abs_r<_Ct>(__m); +16166: const _Ct __n2 = __detail::__abs_r<_Ct>(__n); +16166: return __detail::__gcd>(__m2, __n2); +16166: } +16166: +16166: +16166: template +16166: constexpr common_type_t<_Mn, _Nn> +16166: lcm(_Mn __m, _Nn __n) noexcept +16166: { +16166: static_assert(is_integral_v<_Mn> && is_integral_v<_Nn>, +16166: "std::lcm arguments must be integers"); +16166: static_assert(_Mn(2) == 2 && _Nn(2) == 2, +16166: "std::lcm arguments must not be bool"); +16166: using _Ct = common_type_t<_Mn, _Nn>; +16166: const _Ct __m2 = __detail::__abs_r<_Ct>(__m); +16166: const _Ct __n2 = __detail::__abs_r<_Ct>(__n); +16166: if (__m2 == 0 || __n2 == 0) +16166: return 0; +16166: _Ct __r = __m2 / __detail::__gcd>(__m2, __n2); +16166: +16166: if constexpr (is_signed_v<_Ct>) +16166: if (__is_constant_evaluated()) +16166: return __r * __n2; +16166: +16166: bool __overflow = __builtin_mul_overflow(__r, __n2, &__r); +16166: do { if (std::__is_constant_evaluated() && !bool(!__overflow)) std::__glibcxx_assert_fail(); } while (false); +16166: return __r; +16166: } +16166: # 284 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _Tp +16166: reduce(_InputIterator __first, _InputIterator __last, _Tp __init, +16166: _BinaryOperation __binary_op) +16166: { +16166: using __ref = typename iterator_traits<_InputIterator>::reference; +16166: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, __ref>); +16166: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, __ref, _Tp&>); +16166: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>); +16166: static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, __ref, __ref>); +16166: if constexpr (__is_random_access_iter<_InputIterator>::value) +16166: { +16166: while ((__last - __first) >= 4) +16166: { +16166: _Tp __v1 = __binary_op(__first[0], __first[1]); +16166: _Tp __v2 = __binary_op(__first[2], __first[3]); +16166: _Tp __v3 = __binary_op(__v1, __v2); +16166: __init = __binary_op(__init, __v3); +16166: __first += 4; +16166: } +16166: } +16166: for (; __first != __last; ++__first) +16166: __init = __binary_op(__init, *__first); +16166: return __init; +16166: } +16166: # 322 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: inline _Tp +16166: reduce(_InputIterator __first, _InputIterator __last, _Tp __init) +16166: { return std::reduce(__first, __last, std::move(__init), plus<>()); } +16166: # 339 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: inline typename iterator_traits<_InputIterator>::value_type +16166: reduce(_InputIterator __first, _InputIterator __last) +16166: { +16166: using value_type = typename iterator_traits<_InputIterator>::value_type; +16166: return std::reduce(__first, __last, value_type{}, plus<>()); +16166: } +16166: # 366 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _Tp +16166: transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _Tp __init, +16166: _BinaryOperation1 __binary_op1, +16166: _BinaryOperation2 __binary_op2) +16166: { +16166: if constexpr (__and_v<__is_random_access_iter<_InputIterator1>, +16166: __is_random_access_iter<_InputIterator2>>) +16166: { +16166: while ((__last1 - __first1) >= 4) +16166: { +16166: _Tp __v1 = __binary_op1(__binary_op2(__first1[0], __first2[0]), +16166: __binary_op2(__first1[1], __first2[1])); +16166: _Tp __v2 = __binary_op1(__binary_op2(__first1[2], __first2[2]), +16166: __binary_op2(__first1[3], __first2[3])); +16166: _Tp __v3 = __binary_op1(__v1, __v2); +16166: __init = __binary_op1(__init, __v3); +16166: __first1 += 4; +16166: __first2 += 4; +16166: } +16166: } +16166: for (; __first1 != __last1; ++__first1, (void) ++__first2) +16166: __init = __binary_op1(__init, __binary_op2(*__first1, *__first2)); +16166: return __init; +16166: } +16166: # 410 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: inline _Tp +16166: transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, +16166: _InputIterator2 __first2, _Tp __init) +16166: { +16166: return std::transform_reduce(__first1, __last1, __first2, +16166: std::move(__init), +16166: plus<>(), multiplies<>()); +16166: } +16166: # 435 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _Tp +16166: transform_reduce(_InputIterator __first, _InputIterator __last, _Tp __init, +16166: _BinaryOperation __binary_op, _UnaryOperation __unary_op) +16166: { +16166: if constexpr (__is_random_access_iter<_InputIterator>::value) +16166: { +16166: while ((__last - __first) >= 4) +16166: { +16166: _Tp __v1 = __binary_op(__unary_op(__first[0]), +16166: __unary_op(__first[1])); +16166: _Tp __v2 = __binary_op(__unary_op(__first[2]), +16166: __unary_op(__first[3])); +16166: _Tp __v3 = __binary_op(__v1, __v2); +16166: __init = __binary_op(__init, __v3); +16166: __first += 4; +16166: } +16166: } +16166: for (; __first != __last; ++__first) +16166: __init = __binary_op(__init, __unary_op(*__first)); +16166: return __init; +16166: } +16166: # 478 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _OutputIterator +16166: exclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _Tp __init, +16166: _BinaryOperation __binary_op) +16166: { +16166: while (__first != __last) +16166: { +16166: _Tp __v = std::move(__init); +16166: __init = __binary_op(__v, *__first); +16166: ++__first; +16166: *__result++ = std::move(__v); +16166: } +16166: return __result; +16166: } +16166: # 513 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: exclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _Tp __init) +16166: { +16166: return std::exclusive_scan(__first, __last, __result, std::move(__init), +16166: plus<>()); +16166: } +16166: # 541 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _OutputIterator +16166: inclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _BinaryOperation __binary_op, +16166: _Tp __init) +16166: { +16166: for (; __first != __last; ++__first) +16166: *__result++ = __init = __binary_op(__init, *__first); +16166: return __result; +16166: } +16166: # 570 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _OutputIterator +16166: inclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _BinaryOperation __binary_op) +16166: { +16166: if (__first != __last) +16166: { +16166: auto __init = *__first; +16166: *__result++ = __init; +16166: ++__first; +16166: if (__first != __last) +16166: __result = std::inclusive_scan(__first, __last, __result, +16166: __binary_op, std::move(__init)); +16166: } +16166: return __result; +16166: } +16166: # 604 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: inline _OutputIterator +16166: inclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result) +16166: { return std::inclusive_scan(__first, __last, __result, plus<>()); } +16166: # 631 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _OutputIterator +16166: transform_exclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, _Tp __init, +16166: _BinaryOperation __binary_op, +16166: _UnaryOperation __unary_op) +16166: { +16166: while (__first != __last) +16166: { +16166: auto __v = __init; +16166: __init = __binary_op(__init, __unary_op(*__first)); +16166: ++__first; +16166: *__result++ = std::move(__v); +16166: } +16166: return __result; +16166: } +16166: # 670 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _OutputIterator +16166: transform_inclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, +16166: _BinaryOperation __binary_op, +16166: _UnaryOperation __unary_op, +16166: _Tp __init) +16166: { +16166: for (; __first != __last; ++__first) +16166: *__result++ = __init = __binary_op(__init, __unary_op(*__first)); +16166: return __result; +16166: } +16166: # 704 "/usr/include/c++/14/numeric" 3 +16166: template +16166: +16166: _OutputIterator +16166: transform_inclusive_scan(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, +16166: _BinaryOperation __binary_op, +16166: _UnaryOperation __unary_op) +16166: { +16166: if (__first != __last) +16166: { +16166: auto __init = __unary_op(*__first); +16166: *__result++ = __init; +16166: ++__first; +16166: if (__first != __last) +16166: __result = std::transform_inclusive_scan(__first, __last, __result, +16166: __binary_op, __unary_op, +16166: std::move(__init)); +16166: } +16166: return __result; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 739 "/usr/include/c++/14/numeric" 3 +16166: # 1 "/usr/include/c++/14/pstl/glue_numeric_defs.h" 1 3 +16166: # 15 "/usr/include/c++/14/pstl/glue_numeric_defs.h" 3 +16166: namespace std +16166: { +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +16166: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init, +16166: _BinaryOperation __binary_op); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +16166: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, +16166: typename iterator_traits<_ForwardIterator>::value_type> +16166: reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +16166: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _Tp __init); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +16166: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, +16166: _ForwardIterator2 __first2, _Tp __init, _BinaryOperation1 __binary_op1, +16166: _BinaryOperation2 __binary_op2); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _Tp> +16166: transform_reduce(_ExecutionPolicy&& __exec, _ForwardIterator __first, _ForwardIterator __last, _Tp __init, +16166: _BinaryOperation __binary_op, _UnaryOperation __unary_op); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _Tp __init); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _BinaryOperation __binary_op); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _BinaryOperation __binary_op, _Tp __init); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: transform_exclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _Tp __init, _BinaryOperation __binary_op, +16166: _UnaryOperation __unary_op); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op, +16166: _Tp __init); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: transform_inclusive_scan(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __result, _BinaryOperation __binary_op, _UnaryOperation __unary_op); +16166: +16166: +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __d_first, _BinaryOperation __op); +16166: +16166: template +16166: __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, _ForwardIterator2> +16166: adjacent_difference(_ExecutionPolicy&& __exec, _ForwardIterator1 __first, _ForwardIterator1 __last, +16166: _ForwardIterator2 __d_first); +16166: +16166: } +16166: # 740 "/usr/include/c++/14/numeric" 2 3 +16166: # 34 "/usr/include/c++/14/bits/random.tcc" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: namespace __detail +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _Tp +16166: _Mod<_Tp, __m, __a, __c, false, true>:: +16166: __calc(_Tp __x) +16166: { +16166: if (__a == 1) +16166: __x %= __m; +16166: else +16166: { +16166: static const _Tp __q = __m / __a; +16166: static const _Tp __r = __m % __a; +16166: +16166: _Tp __t1 = __a * (__x % __q); +16166: _Tp __t2 = __r * (__x / __q); +16166: if (__t1 >= __t2) +16166: __x = __t1 - __t2; +16166: else +16166: __x = __m - __t2 + __t1; +16166: } +16166: +16166: if (__c != 0) +16166: { +16166: const _Tp __d = __m - __x; +16166: if (__d > __c) +16166: __x += __c; +16166: else +16166: __x = __c - __d; +16166: } +16166: return __x; +16166: } +16166: +16166: template +16166: _OutputIterator +16166: __normalize(_InputIterator __first, _InputIterator __last, +16166: _OutputIterator __result, const _Tp& __factor) +16166: { +16166: for (; __first != __last; ++__first, ++__result) +16166: *__result = *__first / __factor; +16166: return __result; +16166: } +16166: +16166: } +16166: # 116 "/usr/include/c++/14/bits/random.tcc" 3 +16166: template +16166: void +16166: linear_congruential_engine<_UIntType, __a, __c, __m>:: +16166: seed(result_type __s) +16166: { +16166: if ((__detail::__mod<_UIntType, __m>(__c) == 0) +16166: && (__detail::__mod<_UIntType, __m>(__s) == 0)) +16166: _M_x = 1; +16166: else +16166: _M_x = __detail::__mod<_UIntType, __m>(__s); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: template +16166: auto +16166: linear_congruential_engine<_UIntType, __a, __c, __m>:: +16166: seed(_Sseq& __q) +16166: -> _If_seed_seq<_Sseq> +16166: { +16166: const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits +16166: : std::__lg(__m); +16166: const _UIntType __k = (__k0 + 31) / 32; +16166: uint_least32_t __arr[__k + 3]; +16166: __q.generate(__arr + 0, __arr + __k + 3); +16166: _UIntType __factor = 1u; +16166: _UIntType __sum = 0u; +16166: for (size_t __j = 0; __j < __k; ++__j) +16166: { +16166: __sum += __arr[__j + 3] * __factor; +16166: __factor *= __detail::_Shift<_UIntType, 32>::__value; +16166: } +16166: seed(__sum); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const linear_congruential_engine<_UIntType, +16166: __a, __c, __m>& __lcr) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +16166: __os.fill(__os.widen(' ')); +16166: +16166: __os << __lcr._M_x; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec); +16166: +16166: __is >> __lcr._M_x; +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: # 320 "/usr/include/c++/14/bits/random.tcc" 3 +16166: template +16166: void +16166: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +16166: __s, __b, __t, __c, __l, __f>:: +16166: seed(result_type __sd) +16166: { +16166: _M_x[0] = __detail::__mod<_UIntType, +16166: __detail::_Shift<_UIntType, __w>::__value>(__sd); +16166: +16166: for (size_t __i = 1; __i < state_size; ++__i) +16166: { +16166: _UIntType __x = _M_x[__i - 1]; +16166: __x ^= __x >> (__w - 2); +16166: __x *= __f; +16166: __x += __detail::__mod<_UIntType, __n>(__i); +16166: _M_x[__i] = __detail::__mod<_UIntType, +16166: __detail::_Shift<_UIntType, __w>::__value>(__x); +16166: } +16166: _M_p = state_size; +16166: } +16166: +16166: template +16166: template +16166: auto +16166: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +16166: __s, __b, __t, __c, __l, __f>:: +16166: seed(_Sseq& __q) +16166: -> _If_seed_seq<_Sseq> +16166: { +16166: const _UIntType __upper_mask = (~_UIntType()) << __r; +16166: const size_t __k = (__w + 31) / 32; +16166: uint_least32_t __arr[__n * __k]; +16166: __q.generate(__arr + 0, __arr + __n * __k); +16166: +16166: bool __zero = true; +16166: for (size_t __i = 0; __i < state_size; ++__i) +16166: { +16166: _UIntType __factor = 1u; +16166: _UIntType __sum = 0u; +16166: for (size_t __j = 0; __j < __k; ++__j) +16166: { +16166: __sum += __arr[__k * __i + __j] * __factor; +16166: __factor *= __detail::_Shift<_UIntType, 32>::__value; +16166: } +16166: _M_x[__i] = __detail::__mod<_UIntType, +16166: __detail::_Shift<_UIntType, __w>::__value>(__sum); +16166: +16166: if (__zero) +16166: { +16166: if (__i == 0) +16166: { +16166: if ((_M_x[0] & __upper_mask) != 0u) +16166: __zero = false; +16166: } +16166: else if (_M_x[__i] != 0u) +16166: __zero = false; +16166: } +16166: } +16166: if (__zero) +16166: _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value; +16166: _M_p = state_size; +16166: } +16166: +16166: template +16166: void +16166: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +16166: __s, __b, __t, __c, __l, __f>:: +16166: _M_gen_rand(void) +16166: { +16166: const _UIntType __upper_mask = (~_UIntType()) << __r; +16166: const _UIntType __lower_mask = ~__upper_mask; +16166: +16166: for (size_t __k = 0; __k < (__n - __m); ++__k) +16166: { +16166: _UIntType __y = ((_M_x[__k] & __upper_mask) +16166: | (_M_x[__k + 1] & __lower_mask)); +16166: _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) +16166: ^ ((__y & 0x01) ? __a : 0)); +16166: } +16166: +16166: for (size_t __k = (__n - __m); __k < (__n - 1); ++__k) +16166: { +16166: _UIntType __y = ((_M_x[__k] & __upper_mask) +16166: | (_M_x[__k + 1] & __lower_mask)); +16166: _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) +16166: ^ ((__y & 0x01) ? __a : 0)); +16166: } +16166: +16166: _UIntType __y = ((_M_x[__n - 1] & __upper_mask) +16166: | (_M_x[0] & __lower_mask)); +16166: _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) +16166: ^ ((__y & 0x01) ? __a : 0)); +16166: _M_p = 0; +16166: } +16166: +16166: template +16166: void +16166: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +16166: __s, __b, __t, __c, __l, __f>:: +16166: discard(unsigned long long __z) +16166: { +16166: while (__z > state_size - _M_p) +16166: { +16166: __z -= state_size - _M_p; +16166: _M_gen_rand(); +16166: } +16166: _M_p += __z; +16166: } +16166: +16166: template +16166: typename +16166: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +16166: __s, __b, __t, __c, __l, __f>::result_type +16166: mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, +16166: __s, __b, __t, __c, __l, __f>:: +16166: operator()() +16166: { +16166: +16166: if (_M_p >= state_size) +16166: _M_gen_rand(); +16166: +16166: +16166: result_type __z = _M_x[_M_p++]; +16166: __z ^= (__z >> __u) & __d; +16166: __z ^= (__z << __s) & __b; +16166: __z ^= (__z << __t) & __c; +16166: __z ^= (__z >> __l); +16166: +16166: return __z; +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const mersenne_twister_engine<_UIntType, __w, __n, __m, +16166: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +16166: __os.fill(__space); +16166: +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: __os << __x._M_x[__i] << __space; +16166: __os << __x._M_p; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: mersenne_twister_engine<_UIntType, __w, __n, __m, +16166: __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: for (size_t __i = 0; __i < __n; ++__i) +16166: __is >> __x._M_x[__i]; +16166: __is >> __x._M_p; +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: # 539 "/usr/include/c++/14/bits/random.tcc" 3 +16166: template +16166: void +16166: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +16166: seed(result_type __value) +16166: { +16166: +16166: +16166: +16166: std::linear_congruential_engine +16166: __lcg(__value == 0u ? default_seed : __value % 2147483563u); +16166: +16166: const size_t __n = (__w + 31) / 32; +16166: +16166: for (size_t __i = 0; __i < long_lag; ++__i) +16166: { +16166: _UIntType __sum = 0u; +16166: _UIntType __factor = 1u; +16166: for (size_t __j = 0; __j < __n; ++__j) +16166: { +16166: __sum += __detail::__mod::__value> +16166: (__lcg()) * __factor; +16166: __factor *= __detail::_Shift<_UIntType, 32>::__value; +16166: } +16166: _M_x[__i] = __detail::__mod<_UIntType, +16166: __detail::_Shift<_UIntType, __w>::__value>(__sum); +16166: } +16166: _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; +16166: _M_p = 0; +16166: } +16166: +16166: template +16166: template +16166: auto +16166: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +16166: seed(_Sseq& __q) +16166: -> _If_seed_seq<_Sseq> +16166: { +16166: const size_t __k = (__w + 31) / 32; +16166: uint_least32_t __arr[__r * __k]; +16166: __q.generate(__arr + 0, __arr + __r * __k); +16166: +16166: for (size_t __i = 0; __i < long_lag; ++__i) +16166: { +16166: _UIntType __sum = 0u; +16166: _UIntType __factor = 1u; +16166: for (size_t __j = 0; __j < __k; ++__j) +16166: { +16166: __sum += __arr[__k * __i + __j] * __factor; +16166: __factor *= __detail::_Shift<_UIntType, 32>::__value; +16166: } +16166: _M_x[__i] = __detail::__mod<_UIntType, +16166: __detail::_Shift<_UIntType, __w>::__value>(__sum); +16166: } +16166: _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; +16166: _M_p = 0; +16166: } +16166: +16166: template +16166: typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +16166: result_type +16166: subtract_with_carry_engine<_UIntType, __w, __s, __r>:: +16166: operator()() +16166: { +16166: +16166: long __ps = _M_p - short_lag; +16166: if (__ps < 0) +16166: __ps += long_lag; +16166: +16166: +16166: +16166: +16166: _UIntType __xi; +16166: if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) +16166: { +16166: __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; +16166: _M_carry = 0; +16166: } +16166: else +16166: { +16166: __xi = (__detail::_Shift<_UIntType, __w>::__value +16166: - _M_x[_M_p] - _M_carry + _M_x[__ps]); +16166: _M_carry = 1; +16166: } +16166: _M_x[_M_p] = __xi; +16166: +16166: +16166: if (++_M_p >= long_lag) +16166: _M_p = 0; +16166: +16166: return __xi; +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const subtract_with_carry_engine<_UIntType, +16166: __w, __s, __r>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +16166: __os.fill(__space); +16166: +16166: for (size_t __i = 0; __i < __r; ++__i) +16166: __os << __x._M_x[__i] << __space; +16166: __os << __x._M_carry << __space << __x._M_p; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: for (size_t __i = 0; __i < __r; ++__i) +16166: __is >> __x._M_x[__i]; +16166: __is >> __x._M_carry; +16166: __is >> __x._M_p; +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: # 686 "/usr/include/c++/14/bits/random.tcc" 3 +16166: template +16166: typename discard_block_engine<_RandomNumberEngine, +16166: __p, __r>::result_type +16166: discard_block_engine<_RandomNumberEngine, __p, __r>:: +16166: operator()() +16166: { +16166: if (_M_n >= used_block) +16166: { +16166: _M_b.discard(block_size - _M_n); +16166: _M_n = 0; +16166: } +16166: ++_M_n; +16166: return _M_b(); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const discard_block_engine<_RandomNumberEngine, +16166: __p, __r>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +16166: __os.fill(__space); +16166: +16166: __os << __x.base() << __space << __x._M_n; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: discard_block_engine<_RandomNumberEngine, __p, __r>& __x) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: __is >> __x._M_b >> __x._M_n; +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: +16166: result_type +16166: independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: +16166: operator()() +16166: { +16166: typedef typename _RandomNumberEngine::result_type _Eresult_type; +16166: const _Eresult_type __r +16166: = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() +16166: ? _M_b.max() - _M_b.min() + 1 : 0); +16166: const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; +16166: const unsigned __m = __r ? std::__lg(__r) : __edig; +16166: +16166: typedef typename std::common_type<_Eresult_type, result_type>::type +16166: __ctype; +16166: const unsigned __cdig = std::numeric_limits<__ctype>::digits; +16166: +16166: unsigned __n, __n0; +16166: __ctype __s0, __s1, __y0, __y1; +16166: +16166: for (size_t __i = 0; __i < 2; ++__i) +16166: { +16166: __n = (__w + __m - 1) / __m + __i; +16166: __n0 = __n - __w % __n; +16166: const unsigned __w0 = __w / __n; +16166: +16166: __s0 = 0; +16166: __s1 = 0; +16166: if (__w0 < __cdig) +16166: { +16166: __s0 = __ctype(1) << __w0; +16166: __s1 = __s0 << 1; +16166: } +16166: +16166: __y0 = 0; +16166: __y1 = 0; +16166: if (__r) +16166: { +16166: __y0 = __s0 * (__r / __s0); +16166: if (__s1) +16166: __y1 = __s1 * (__r / __s1); +16166: +16166: if (__r - __y0 <= __y0 / __n) +16166: break; +16166: } +16166: else +16166: break; +16166: } +16166: +16166: result_type __sum = 0; +16166: for (size_t __k = 0; __k < __n0; ++__k) +16166: { +16166: __ctype __u; +16166: do +16166: __u = _M_b() - _M_b.min(); +16166: while (__y0 && __u >= __y0); +16166: __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); +16166: } +16166: for (size_t __k = __n0; __k < __n; ++__k) +16166: { +16166: __ctype __u; +16166: do +16166: __u = _M_b() - _M_b.min(); +16166: while (__y1 && __u >= __y1); +16166: __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); +16166: } +16166: return __sum; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace __detail +16166: { +16166: +16166: template +16166: constexpr bool +16166: __representable_as_double(_Tp __x) noexcept +16166: { +16166: static_assert(numeric_limits<_Tp>::is_integer, ""); +16166: static_assert(!numeric_limits<_Tp>::is_signed, ""); +16166: +16166: return (__x <= (1ull << 53)) +16166: +16166: || (!(__x & 1) && __detail::__representable_as_double(__x >> 1)); +16166: } +16166: +16166: +16166: template +16166: constexpr bool +16166: __p1_representable_as_double(_Tp __x) noexcept +16166: { +16166: static_assert(numeric_limits<_Tp>::is_integer, ""); +16166: static_assert(!numeric_limits<_Tp>::is_signed, ""); +16166: return numeric_limits<_Tp>::digits < 53 +16166: || (bool(__x + 1u) +16166: && __detail::__representable_as_double(__x + 1u)); +16166: } +16166: } +16166: +16166: template +16166: typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type +16166: shuffle_order_engine<_RandomNumberEngine, __k>:: +16166: operator()() +16166: { +16166: constexpr result_type __range = max() - min(); +16166: size_t __j = __k; +16166: const result_type __y = _M_y - min(); +16166: +16166: if constexpr (__detail::__p1_representable_as_double(__range)) +16166: __j *= __y / (__range + 1.0); +16166: else +16166: __j *= __y / (__range + 1.0L); +16166: _M_y = _M_v[__j]; +16166: _M_v[__j] = _M_b(); +16166: +16166: return _M_y; +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const shuffle_order_engine<_RandomNumberEngine, __k>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); +16166: __os.fill(__space); +16166: +16166: __os << __x.base(); +16166: for (size_t __i = 0; __i < __k; ++__i) +16166: __os << __space << __x._M_v[__i]; +16166: __os << __space << __x._M_y; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: shuffle_order_engine<_RandomNumberEngine, __k>& __x) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: __is >> __x._M_b; +16166: for (size_t __i = 0; __i < __k; ++__i) +16166: __is >> __x._M_v[__i]; +16166: __is >> __x._M_y; +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const uniform_int_distribution<_IntType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: +16166: __os << __x.a() << __space << __x.b(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: uniform_int_distribution<_IntType>& __x) +16166: { +16166: using param_type +16166: = typename uniform_int_distribution<_IntType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _IntType __a, __b; +16166: if (__is >> __a >> __b) +16166: __x.param(param_type(__a, __b)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: void +16166: uniform_real_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: auto __range = __p.b() - __p.a(); +16166: while (__f != __t) +16166: *__f++ = __aurng() * __range + __p.a(); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const uniform_real_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.a() << __space << __x.b(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: uniform_real_distribution<_RealType>& __x) +16166: { +16166: using param_type +16166: = typename uniform_real_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::skipws); +16166: +16166: _RealType __a, __b; +16166: if (__is >> __a >> __b) +16166: __x.param(param_type(__a, __b)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: void +16166: std::bernoulli_distribution:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: auto __limit = __p.p() * (__aurng.max() - __aurng.min()); +16166: +16166: while (__f != __t) +16166: *__f++ = (__aurng() - __aurng.min()) < __limit; +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const bernoulli_distribution& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__os.widen(' ')); +16166: __os.precision(std::numeric_limits::max_digits10); +16166: +16166: __os << __x.p(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: +16166: template +16166: template +16166: typename geometric_distribution<_IntType>::result_type +16166: geometric_distribution<_IntType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: +16166: const double __naf = +16166: (1 - std::numeric_limits::epsilon()) / 2; +16166: +16166: const double __thr = +16166: std::numeric_limits<_IntType>::max() + __naf; +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: double __cand; +16166: do +16166: __cand = std::floor(std::log(1.0 - __aurng()) / __param._M_log_1_p); +16166: while (__cand >= __thr); +16166: +16166: return result_type(__cand + __naf); +16166: } +16166: +16166: template +16166: template +16166: void +16166: geometric_distribution<_IntType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: +16166: +16166: const double __naf = +16166: (1 - std::numeric_limits::epsilon()) / 2; +16166: +16166: const double __thr = +16166: std::numeric_limits<_IntType>::max() + __naf; +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: while (__f != __t) +16166: { +16166: double __cand; +16166: do +16166: __cand = std::floor(std::log(1.0 - __aurng()) +16166: / __param._M_log_1_p); +16166: while (__cand >= __thr); +16166: +16166: *__f++ = __cand + __naf; +16166: } +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const geometric_distribution<_IntType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__os.widen(' ')); +16166: __os.precision(std::numeric_limits::max_digits10); +16166: +16166: __os << __x.p(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: geometric_distribution<_IntType>& __x) +16166: { +16166: using param_type = typename geometric_distribution<_IntType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::skipws); +16166: +16166: double __p; +16166: if (__is >> __p) +16166: __x.param(param_type(__p)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: typename negative_binomial_distribution<_IntType>::result_type +16166: negative_binomial_distribution<_IntType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng) +16166: { +16166: const double __y = _M_gd(__urng); +16166: +16166: +16166: std::poisson_distribution __poisson(__y); +16166: return __poisson(__urng); +16166: } +16166: +16166: template +16166: template +16166: typename negative_binomial_distribution<_IntType>::result_type +16166: negative_binomial_distribution<_IntType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: typedef typename std::gamma_distribution::param_type +16166: param_type; +16166: +16166: const double __y = +16166: _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); +16166: +16166: std::poisson_distribution __poisson(__y); +16166: return __poisson(__urng); +16166: } +16166: +16166: template +16166: template +16166: void +16166: negative_binomial_distribution<_IntType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { +16166: +16166: while (__f != __t) +16166: { +16166: const double __y = _M_gd(__urng); +16166: +16166: +16166: std::poisson_distribution __poisson(__y); +16166: *__f++ = __poisson(__urng); +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: negative_binomial_distribution<_IntType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: typename std::gamma_distribution::param_type +16166: __p2(__p.k(), (1.0 - __p.p()) / __p.p()); +16166: +16166: while (__f != __t) +16166: { +16166: const double __y = _M_gd(__urng, __p2); +16166: +16166: std::poisson_distribution __poisson(__y); +16166: *__f++ = __poisson(__urng); +16166: } +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const negative_binomial_distribution<_IntType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__os.widen(' ')); +16166: __os.precision(std::numeric_limits::max_digits10); +16166: +16166: __os << __x.k() << __space << __x.p() +16166: << __space << __x._M_gd; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: negative_binomial_distribution<_IntType>& __x) +16166: { +16166: using param_type +16166: = typename negative_binomial_distribution<_IntType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::skipws); +16166: +16166: _IntType __k; +16166: double __p; +16166: if (__is >> __k >> __p >> __x._M_gd) +16166: __x.param(param_type(__k, __p)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: void +16166: poisson_distribution<_IntType>::param_type:: +16166: _M_initialize() +16166: { +16166: +16166: if (_M_mean >= 12) +16166: { +16166: const double __m = std::floor(_M_mean); +16166: _M_lm_thr = std::log(_M_mean); +16166: _M_lfm = std::lgamma(__m + 1); +16166: _M_sm = std::sqrt(__m); +16166: +16166: const double __pi_4 = 0.7853981633974483096156608458198757L; +16166: const double __dx = std::sqrt(2 * __m * std::log(32 * __m +16166: / __pi_4)); +16166: _M_d = std::round(std::max(6.0, std::min(__m, __dx))); +16166: const double __cx = 2 * __m + _M_d; +16166: _M_scx = std::sqrt(__cx / 2); +16166: _M_1cx = 1 / __cx; +16166: +16166: _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); +16166: _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) +16166: / _M_d; +16166: } +16166: else +16166: +16166: _M_lm_thr = std::exp(-_M_mean); +16166: } +16166: # 1308 "/usr/include/c++/14/bits/random.tcc" 3 +16166: template +16166: template +16166: typename poisson_distribution<_IntType>::result_type +16166: poisson_distribution<_IntType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: if (__param.mean() >= 12) +16166: { +16166: double __x; +16166: +16166: +16166: const double __naf = +16166: (1 - std::numeric_limits::epsilon()) / 2; +16166: const double __thr = +16166: std::numeric_limits<_IntType>::max() + __naf; +16166: +16166: const double __m = std::floor(__param.mean()); +16166: +16166: const double __spi_2 = 1.2533141373155002512078826424055226L; +16166: const double __c1 = __param._M_sm * __spi_2; +16166: const double __c2 = __param._M_c2b + __c1; +16166: const double __c3 = __c2 + 1; +16166: const double __c4 = __c3 + 1; +16166: +16166: const double __178 = 0.0128205128205128205128205128205128L; +16166: +16166: const double __e178 = 1.0129030479320018583185514777512983L; +16166: const double __c5 = __c4 + __e178; +16166: const double __c = __param._M_cb + __c5; +16166: const double __2cx = 2 * (2 * __m + __param._M_d); +16166: +16166: bool __reject = true; +16166: do +16166: { +16166: const double __u = __c * __aurng(); +16166: const double __e = -std::log(1.0 - __aurng()); +16166: +16166: double __w = 0.0; +16166: +16166: if (__u <= __c1) +16166: { +16166: const double __n = _M_nd(__urng); +16166: const double __y = -std::abs(__n) * __param._M_sm - 1; +16166: __x = std::floor(__y); +16166: __w = -__n * __n / 2; +16166: if (__x < -__m) +16166: continue; +16166: } +16166: else if (__u <= __c2) +16166: { +16166: const double __n = _M_nd(__urng); +16166: const double __y = 1 + std::abs(__n) * __param._M_scx; +16166: __x = std::ceil(__y); +16166: __w = __y * (2 - __y) * __param._M_1cx; +16166: if (__x > __param._M_d) +16166: continue; +16166: } +16166: else if (__u <= __c3) +16166: +16166: +16166: __x = -1; +16166: else if (__u <= __c4) +16166: __x = 0; +16166: else if (__u <= __c5) +16166: { +16166: __x = 1; +16166: +16166: __w = __178; +16166: } +16166: else +16166: { +16166: const double __v = -std::log(1.0 - __aurng()); +16166: const double __y = __param._M_d +16166: + __v * __2cx / __param._M_d; +16166: __x = std::ceil(__y); +16166: __w = -__param._M_d * __param._M_1cx * (1 + __y / 2); +16166: } +16166: +16166: __reject = (__w - __e - __x * __param._M_lm_thr +16166: > __param._M_lfm - std::lgamma(__x + __m + 1)); +16166: +16166: __reject |= __x + __m >= __thr; +16166: +16166: } while (__reject); +16166: +16166: return result_type(__x + __m + __naf); +16166: } +16166: else +16166: +16166: { +16166: _IntType __x = 0; +16166: double __prod = 1.0; +16166: +16166: do +16166: { +16166: __prod *= __aurng(); +16166: __x += 1; +16166: } +16166: while (__prod > __param._M_lm_thr); +16166: +16166: return __x - 1; +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: poisson_distribution<_IntType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: +16166: while (__f != __t) +16166: *__f++ = this->operator()(__urng, __param); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const poisson_distribution<_IntType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits::max_digits10); +16166: +16166: __os << __x.mean() << __space << __x._M_nd; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: poisson_distribution<_IntType>& __x) +16166: { +16166: using param_type = typename poisson_distribution<_IntType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::skipws); +16166: +16166: double __mean; +16166: if (__is >> __mean >> __x._M_nd) +16166: __x.param(param_type(__mean)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: void +16166: binomial_distribution<_IntType>::param_type:: +16166: _M_initialize() +16166: { +16166: const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; +16166: +16166: _M_easy = true; +16166: +16166: +16166: if (_M_t * __p12 >= 8) +16166: { +16166: _M_easy = false; +16166: const double __np = std::floor(_M_t * __p12); +16166: const double __pa = __np / _M_t; +16166: const double __1p = 1 - __pa; +16166: +16166: const double __pi_4 = 0.7853981633974483096156608458198757L; +16166: const double __d1x = +16166: std::sqrt(__np * __1p * std::log(32 * __np +16166: / (81 * __pi_4 * __1p))); +16166: _M_d1 = std::round(std::max(1.0, __d1x)); +16166: const double __d2x = +16166: std::sqrt(__np * __1p * std::log(32 * _M_t * __1p +16166: / (__pi_4 * __pa))); +16166: _M_d2 = std::round(std::max(1.0, __d2x)); +16166: +16166: +16166: const double __spi_2 = 1.2533141373155002512078826424055226L; +16166: _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); +16166: _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * (_M_t * __1p))); +16166: _M_c = 2 * _M_d1 / __np; +16166: _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; +16166: const double __a12 = _M_a1 + _M_s2 * __spi_2; +16166: const double __s1s = _M_s1 * _M_s1; +16166: _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) +16166: * 2 * __s1s / _M_d1 +16166: * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); +16166: const double __s2s = _M_s2 * _M_s2; +16166: _M_s = (_M_a123 + 2 * __s2s / _M_d2 +16166: * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); +16166: _M_lf = (std::lgamma(__np + 1) +16166: + std::lgamma(_M_t - __np + 1)); +16166: _M_lp1p = std::log(__pa / __1p); +16166: +16166: _M_q = -std::log(1 - (__p12 - __pa) / __1p); +16166: } +16166: else +16166: +16166: _M_q = -std::log(1 - __p12); +16166: } +16166: +16166: template +16166: template +16166: typename binomial_distribution<_IntType>::result_type +16166: binomial_distribution<_IntType>:: +16166: _M_waiting(_UniformRandomNumberGenerator& __urng, +16166: _IntType __t, double __q) +16166: { +16166: _IntType __x = 0; +16166: double __sum = 0.0; +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: do +16166: { +16166: if (__t == __x) +16166: return __x; +16166: const double __e = -std::log(1.0 - __aurng()); +16166: __sum += __e / (__t - __x); +16166: __x += 1; +16166: } +16166: while (__sum <= __q); +16166: +16166: return __x - 1; +16166: } +16166: # 1563 "/usr/include/c++/14/bits/random.tcc" 3 +16166: template +16166: template +16166: typename binomial_distribution<_IntType>::result_type +16166: binomial_distribution<_IntType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: result_type __ret; +16166: const _IntType __t = __param.t(); +16166: const double __p = __param.p(); +16166: const double __p12 = __p <= 0.5 ? __p : 1.0 - __p; +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: +16166: if (!__param._M_easy) +16166: { +16166: double __x; +16166: +16166: +16166: const double __naf = +16166: (1 - std::numeric_limits::epsilon()) / 2; +16166: const double __thr = +16166: std::numeric_limits<_IntType>::max() + __naf; +16166: +16166: const double __np = std::floor(__t * __p12); +16166: +16166: +16166: const double __spi_2 = 1.2533141373155002512078826424055226L; +16166: const double __a1 = __param._M_a1; +16166: const double __a12 = __a1 + __param._M_s2 * __spi_2; +16166: const double __a123 = __param._M_a123; +16166: const double __s1s = __param._M_s1 * __param._M_s1; +16166: const double __s2s = __param._M_s2 * __param._M_s2; +16166: +16166: bool __reject; +16166: do +16166: { +16166: const double __u = __param._M_s * __aurng(); +16166: +16166: double __v; +16166: +16166: if (__u <= __a1) +16166: { +16166: const double __n = _M_nd(__urng); +16166: const double __y = __param._M_s1 * std::abs(__n); +16166: __reject = __y >= __param._M_d1; +16166: if (!__reject) +16166: { +16166: const double __e = -std::log(1.0 - __aurng()); +16166: __x = std::floor(__y); +16166: __v = -__e - __n * __n / 2 + __param._M_c; +16166: } +16166: } +16166: else if (__u <= __a12) +16166: { +16166: const double __n = _M_nd(__urng); +16166: const double __y = __param._M_s2 * std::abs(__n); +16166: __reject = __y >= __param._M_d2; +16166: if (!__reject) +16166: { +16166: const double __e = -std::log(1.0 - __aurng()); +16166: __x = std::floor(-__y); +16166: __v = -__e - __n * __n / 2; +16166: } +16166: } +16166: else if (__u <= __a123) +16166: { +16166: const double __e1 = -std::log(1.0 - __aurng()); +16166: const double __e2 = -std::log(1.0 - __aurng()); +16166: +16166: const double __y = __param._M_d1 +16166: + 2 * __s1s * __e1 / __param._M_d1; +16166: __x = std::floor(__y); +16166: __v = (-__e2 + __param._M_d1 * (1 / (__t - __np) +16166: -__y / (2 * __s1s))); +16166: __reject = false; +16166: } +16166: else +16166: { +16166: const double __e1 = -std::log(1.0 - __aurng()); +16166: const double __e2 = -std::log(1.0 - __aurng()); +16166: +16166: const double __y = __param._M_d2 +16166: + 2 * __s2s * __e1 / __param._M_d2; +16166: __x = std::floor(-__y); +16166: __v = -__e2 - __param._M_d2 * __y / (2 * __s2s); +16166: __reject = false; +16166: } +16166: +16166: __reject = __reject || __x < -__np || __x > __t - __np; +16166: if (!__reject) +16166: { +16166: const double __lfx = +16166: std::lgamma(__np + __x + 1) +16166: + std::lgamma(__t - (__np + __x) + 1); +16166: __reject = __v > __param._M_lf - __lfx +16166: + __x * __param._M_lp1p; +16166: } +16166: +16166: __reject |= __x + __np >= __thr; +16166: } +16166: while (__reject); +16166: +16166: __x += __np + __naf; +16166: +16166: const _IntType __z = _M_waiting(__urng, __t - _IntType(__x), +16166: __param._M_q); +16166: __ret = _IntType(__x) + __z; +16166: } +16166: else +16166: +16166: __ret = _M_waiting(__urng, __t, __param._M_q); +16166: +16166: if (__p12 != __p) +16166: __ret = __t - __ret; +16166: return __ret; +16166: } +16166: +16166: template +16166: template +16166: void +16166: binomial_distribution<_IntType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: +16166: while (__f != __t) +16166: *__f++ = this->operator()(__urng, __param); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const binomial_distribution<_IntType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits::max_digits10); +16166: +16166: __os << __x.t() << __space << __x.p() +16166: << __space << __x._M_nd; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: binomial_distribution<_IntType>& __x) +16166: { +16166: using param_type = typename binomial_distribution<_IntType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _IntType __t; +16166: double __p; +16166: if (__is >> __t >> __p >> __x._M_nd) +16166: __x.param(param_type(__t, __p)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: void +16166: std::exponential_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: while (__f != __t) +16166: *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const exponential_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__os.widen(' ')); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.lambda(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: exponential_distribution<_RealType>& __x) +16166: { +16166: using param_type +16166: = typename exponential_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __lambda; +16166: if (__is >> __lambda) +16166: __x.param(param_type(__lambda)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: # 1809 "/usr/include/c++/14/bits/random.tcc" 3 +16166: template +16166: template +16166: typename normal_distribution<_RealType>::result_type +16166: normal_distribution<_RealType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: result_type __ret; +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: +16166: if (_M_saved_available) +16166: { +16166: _M_saved_available = false; +16166: __ret = _M_saved; +16166: } +16166: else +16166: { +16166: result_type __x, __y, __r2; +16166: do +16166: { +16166: __x = result_type(2.0) * __aurng() - 1.0; +16166: __y = result_type(2.0) * __aurng() - 1.0; +16166: __r2 = __x * __x + __y * __y; +16166: } +16166: while (__r2 > 1.0 || __r2 == 0.0); +16166: +16166: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); +16166: _M_saved = __x * __mult; +16166: _M_saved_available = true; +16166: __ret = __y * __mult; +16166: } +16166: +16166: __ret = __ret * __param.stddev() + __param.mean(); +16166: return __ret; +16166: } +16166: +16166: template +16166: template +16166: void +16166: normal_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: +16166: if (__f == __t) +16166: return; +16166: +16166: if (_M_saved_available) +16166: { +16166: _M_saved_available = false; +16166: *__f++ = _M_saved * __param.stddev() + __param.mean(); +16166: +16166: if (__f == __t) +16166: return; +16166: } +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: +16166: while (__f + 1 < __t) +16166: { +16166: result_type __x, __y, __r2; +16166: do +16166: { +16166: __x = result_type(2.0) * __aurng() - 1.0; +16166: __y = result_type(2.0) * __aurng() - 1.0; +16166: __r2 = __x * __x + __y * __y; +16166: } +16166: while (__r2 > 1.0 || __r2 == 0.0); +16166: +16166: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); +16166: *__f++ = __y * __mult * __param.stddev() + __param.mean(); +16166: *__f++ = __x * __mult * __param.stddev() + __param.mean(); +16166: } +16166: +16166: if (__f != __t) +16166: { +16166: result_type __x, __y, __r2; +16166: do +16166: { +16166: __x = result_type(2.0) * __aurng() - 1.0; +16166: __y = result_type(2.0) * __aurng() - 1.0; +16166: __r2 = __x * __x + __y * __y; +16166: } +16166: while (__r2 > 1.0 || __r2 == 0.0); +16166: +16166: const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); +16166: _M_saved = __x * __mult; +16166: _M_saved_available = true; +16166: *__f = __y * __mult * __param.stddev() + __param.mean(); +16166: } +16166: } +16166: +16166: template +16166: bool +16166: operator==(const std::normal_distribution<_RealType>& __d1, +16166: const std::normal_distribution<_RealType>& __d2) +16166: { +16166: if (__d1._M_param == __d2._M_param +16166: && __d1._M_saved_available == __d2._M_saved_available) +16166: return __d1._M_saved_available ? __d1._M_saved == __d2._M_saved : true; +16166: else +16166: return false; +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const normal_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.mean() << __space << __x.stddev() +16166: << __space << __x._M_saved_available; +16166: if (__x._M_saved_available) +16166: __os << __space << __x._M_saved; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: normal_distribution<_RealType>& __x) +16166: { +16166: using param_type = typename normal_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: double __mean, __stddev; +16166: bool __saved_avail; +16166: if (__is >> __mean >> __stddev >> __saved_avail) +16166: { +16166: if (!__saved_avail || (__is >> __x._M_saved)) +16166: { +16166: __x._M_saved_available = __saved_avail; +16166: __x.param(param_type(__mean, __stddev)); +16166: } +16166: } +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: void +16166: lognormal_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: while (__f != __t) +16166: *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const lognormal_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.m() << __space << __x.s() +16166: << __space << __x._M_nd; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: lognormal_distribution<_RealType>& __x) +16166: { +16166: using param_type +16166: = typename lognormal_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __m, __s; +16166: if (__is >> __m >> __s >> __x._M_nd) +16166: __x.param(param_type(__m, __s)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: template +16166: template +16166: void +16166: std::chi_squared_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { +16166: +16166: while (__f != __t) +16166: *__f++ = 2 * _M_gd(__urng); +16166: } +16166: +16166: template +16166: template +16166: void +16166: std::chi_squared_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const typename +16166: std::gamma_distribution::param_type& __p) +16166: { +16166: +16166: while (__f != __t) +16166: *__f++ = 2 * _M_gd(__urng, __p); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const chi_squared_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.n() << __space << __x._M_gd; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: chi_squared_distribution<_RealType>& __x) +16166: { +16166: using param_type +16166: = typename chi_squared_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __n; +16166: if (__is >> __n >> __x._M_gd) +16166: __x.param(param_type(__n)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: typename cauchy_distribution<_RealType>::result_type +16166: cauchy_distribution<_RealType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: _RealType __u; +16166: do +16166: __u = __aurng(); +16166: while (__u == 0.5); +16166: +16166: const _RealType __pi = 3.1415926535897932384626433832795029L; +16166: return __p.a() + __p.b() * std::tan(__pi * __u); +16166: } +16166: +16166: template +16166: template +16166: void +16166: cauchy_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: const _RealType __pi = 3.1415926535897932384626433832795029L; +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: while (__f != __t) +16166: { +16166: _RealType __u; +16166: do +16166: __u = __aurng(); +16166: while (__u == 0.5); +16166: +16166: *__f++ = __p.a() + __p.b() * std::tan(__pi * __u); +16166: } +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const cauchy_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.a() << __space << __x.b(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: cauchy_distribution<_RealType>& __x) +16166: { +16166: using param_type = typename cauchy_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __a, __b; +16166: if (__is >> __a >> __b) +16166: __x.param(param_type(__a, __b)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: void +16166: std::fisher_f_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { +16166: +16166: while (__f != __t) +16166: *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); +16166: } +16166: +16166: template +16166: template +16166: void +16166: std::fisher_f_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: typedef typename std::gamma_distribution::param_type +16166: param_type; +16166: param_type __p1(__p.m() / 2); +16166: param_type __p2(__p.n() / 2); +16166: while (__f != __t) +16166: *__f++ = ((_M_gd_x(__urng, __p1) * n()) +16166: / (_M_gd_y(__urng, __p2) * m())); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const fisher_f_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.m() << __space << __x.n() +16166: << __space << __x._M_gd_x << __space << __x._M_gd_y; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: fisher_f_distribution<_RealType>& __x) +16166: { +16166: using param_type +16166: = typename fisher_f_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __m, __n; +16166: if (__is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y) +16166: __x.param(param_type(__m, __n)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: void +16166: std::student_t_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng) +16166: { +16166: +16166: while (__f != __t) +16166: *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); +16166: } +16166: +16166: template +16166: template +16166: void +16166: std::student_t_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: typename std::gamma_distribution::param_type +16166: __p2(__p.n() / 2, 2); +16166: while (__f != __t) +16166: *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const student_t_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: student_t_distribution<_RealType>& __x) +16166: { +16166: using param_type +16166: = typename student_t_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __n; +16166: if (__is >> __n >> __x._M_nd >> __x._M_gd) +16166: __x.param(param_type(__n)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: void +16166: gamma_distribution<_RealType>::param_type:: +16166: _M_initialize() +16166: { +16166: _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha; +16166: +16166: const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0); +16166: _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: template +16166: typename gamma_distribution<_RealType>::result_type +16166: gamma_distribution<_RealType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: +16166: result_type __u, __v, __n; +16166: const result_type __a1 = (__param._M_malpha +16166: - _RealType(1.0) / _RealType(3.0)); +16166: +16166: do +16166: { +16166: do +16166: { +16166: __n = _M_nd(__urng); +16166: __v = result_type(1.0) + __param._M_a2 * __n; +16166: } +16166: while (__v <= 0.0); +16166: +16166: __v = __v * __v * __v; +16166: __u = __aurng(); +16166: } +16166: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n +16166: && (std::log(__u) > (0.5 * __n * __n + __a1 +16166: * (1.0 - __v + std::log(__v))))); +16166: +16166: if (__param.alpha() == __param._M_malpha) +16166: return __a1 * __v * __param.beta(); +16166: else +16166: { +16166: do +16166: __u = __aurng(); +16166: while (__u == 0.0); +16166: +16166: return (std::pow(__u, result_type(1.0) / __param.alpha()) +16166: * __a1 * __v * __param.beta()); +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: gamma_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: +16166: result_type __u, __v, __n; +16166: const result_type __a1 = (__param._M_malpha +16166: - _RealType(1.0) / _RealType(3.0)); +16166: +16166: if (__param.alpha() == __param._M_malpha) +16166: while (__f != __t) +16166: { +16166: do +16166: { +16166: do +16166: { +16166: __n = _M_nd(__urng); +16166: __v = result_type(1.0) + __param._M_a2 * __n; +16166: } +16166: while (__v <= 0.0); +16166: +16166: __v = __v * __v * __v; +16166: __u = __aurng(); +16166: } +16166: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n +16166: && (std::log(__u) > (0.5 * __n * __n + __a1 +16166: * (1.0 - __v + std::log(__v))))); +16166: +16166: *__f++ = __a1 * __v * __param.beta(); +16166: } +16166: else +16166: while (__f != __t) +16166: { +16166: do +16166: { +16166: do +16166: { +16166: __n = _M_nd(__urng); +16166: __v = result_type(1.0) + __param._M_a2 * __n; +16166: } +16166: while (__v <= 0.0); +16166: +16166: __v = __v * __v * __v; +16166: __u = __aurng(); +16166: } +16166: while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n +16166: && (std::log(__u) > (0.5 * __n * __n + __a1 +16166: * (1.0 - __v + std::log(__v))))); +16166: +16166: do +16166: __u = __aurng(); +16166: while (__u == 0.0); +16166: +16166: *__f++ = (std::pow(__u, result_type(1.0) / __param.alpha()) +16166: * __a1 * __v * __param.beta()); +16166: } +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const gamma_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.alpha() << __space << __x.beta() +16166: << __space << __x._M_nd; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: gamma_distribution<_RealType>& __x) +16166: { +16166: using param_type = typename gamma_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __alpha_val, __beta_val; +16166: if (__is >> __alpha_val >> __beta_val >> __x._M_nd) +16166: __x.param(param_type(__alpha_val, __beta_val)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: typename weibull_distribution<_RealType>::result_type +16166: weibull_distribution<_RealType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: return __p.b() * std::pow(-std::log(result_type(1) - __aurng()), +16166: result_type(1) / __p.a()); +16166: } +16166: +16166: template +16166: template +16166: void +16166: weibull_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: auto __inv_a = result_type(1) / __p.a(); +16166: +16166: while (__f != __t) +16166: *__f++ = __p.b() * std::pow(-std::log(result_type(1) - __aurng()), +16166: __inv_a); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const weibull_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.a() << __space << __x.b(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: weibull_distribution<_RealType>& __x) +16166: { +16166: using param_type = typename weibull_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __a, __b; +16166: if (__is >> __a >> __b) +16166: __x.param(param_type(__a, __b)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: template +16166: typename extreme_value_distribution<_RealType>::result_type +16166: extreme_value_distribution<_RealType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: return __p.a() - __p.b() * std::log(-std::log(result_type(1) +16166: - __aurng())); +16166: } +16166: +16166: template +16166: template +16166: void +16166: extreme_value_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __p) +16166: { +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> +16166: __aurng(__urng); +16166: +16166: while (__f != __t) +16166: *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) +16166: - __aurng())); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const extreme_value_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: __os << __x.a() << __space << __x.b(); +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: extreme_value_distribution<_RealType>& __x) +16166: { +16166: using param_type +16166: = typename extreme_value_distribution<_RealType>::param_type; +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: _RealType __a, __b; +16166: if (__is >> __a >> __b) +16166: __x.param(param_type(__a, __b)); +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: void +16166: discrete_distribution<_IntType>::param_type:: +16166: _M_initialize() +16166: { +16166: if (_M_prob.size() < 2) +16166: { +16166: _M_prob.clear(); +16166: return; +16166: } +16166: +16166: const double __sum = std::accumulate(_M_prob.begin(), +16166: _M_prob.end(), 0.0); +16166: do { if (std::__is_constant_evaluated() && !bool(__sum > 0)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __detail::__normalize(_M_prob.begin(), _M_prob.end(), _M_prob.begin(), +16166: __sum); +16166: +16166: _M_cp.reserve(_M_prob.size()); +16166: std::partial_sum(_M_prob.begin(), _M_prob.end(), +16166: std::back_inserter(_M_cp)); +16166: +16166: _M_cp[_M_cp.size() - 1] = 1.0; +16166: } +16166: +16166: template +16166: template +16166: discrete_distribution<_IntType>::param_type:: +16166: param_type(size_t __nw, double __xmin, double __xmax, _Func __fw) +16166: : _M_prob(), _M_cp() +16166: { +16166: const size_t __n = __nw == 0 ? 1 : __nw; +16166: const double __delta = (__xmax - __xmin) / __n; +16166: +16166: _M_prob.reserve(__n); +16166: for (size_t __k = 0; __k < __nw; ++__k) +16166: _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta)); +16166: +16166: _M_initialize(); +16166: } +16166: +16166: template +16166: template +16166: typename discrete_distribution<_IntType>::result_type +16166: discrete_distribution<_IntType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: if (__param._M_cp.empty()) +16166: return result_type(0); +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: const double __p = __aurng(); +16166: auto __pos = std::lower_bound(__param._M_cp.begin(), +16166: __param._M_cp.end(), __p); +16166: +16166: return __pos - __param._M_cp.begin(); +16166: } +16166: +16166: template +16166: template +16166: void +16166: discrete_distribution<_IntType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: +16166: if (__param._M_cp.empty()) +16166: { +16166: while (__f != __t) +16166: *__f++ = result_type(0); +16166: return; +16166: } +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: while (__f != __t) +16166: { +16166: const double __p = __aurng(); +16166: auto __pos = std::lower_bound(__param._M_cp.begin(), +16166: __param._M_cp.end(), __p); +16166: +16166: *__f++ = __pos - __param._M_cp.begin(); +16166: } +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const discrete_distribution<_IntType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits::max_digits10); +16166: +16166: std::vector __prob = __x.probabilities(); +16166: __os << __prob.size(); +16166: for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit) +16166: __os << __space << *__dit; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: namespace __detail +16166: { +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: __extract_params(basic_istream<_CharT, _Traits>& __is, +16166: vector<_ValT>& __vals, size_t __n) +16166: { +16166: __vals.reserve(__n); +16166: while (__n--) +16166: { +16166: _ValT __val; +16166: if (__is >> __val) +16166: __vals.push_back(__val); +16166: else +16166: break; +16166: } +16166: return __is; +16166: } +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: discrete_distribution<_IntType>& __x) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: size_t __n; +16166: if (__is >> __n) +16166: { +16166: std::vector __prob_vec; +16166: if (__detail::__extract_params(__is, __prob_vec, __n)) +16166: __x.param({__prob_vec.begin(), __prob_vec.end()}); +16166: } +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: void +16166: piecewise_constant_distribution<_RealType>::param_type:: +16166: _M_initialize() +16166: { +16166: if (_M_int.size() < 2 +16166: || (_M_int.size() == 2 +16166: && _M_int[0] == _RealType(0) +16166: && _M_int[1] == _RealType(1))) +16166: { +16166: _M_int.clear(); +16166: _M_den.clear(); +16166: return; +16166: } +16166: +16166: const double __sum = std::accumulate(_M_den.begin(), +16166: _M_den.end(), 0.0); +16166: do { if (std::__is_constant_evaluated() && !bool(__sum > 0)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), +16166: __sum); +16166: +16166: _M_cp.reserve(_M_den.size()); +16166: std::partial_sum(_M_den.begin(), _M_den.end(), +16166: std::back_inserter(_M_cp)); +16166: +16166: +16166: _M_cp[_M_cp.size() - 1] = 1.0; +16166: +16166: for (size_t __k = 0; __k < _M_den.size(); ++__k) +16166: _M_den[__k] /= _M_int[__k + 1] - _M_int[__k]; +16166: } +16166: +16166: template +16166: template +16166: piecewise_constant_distribution<_RealType>::param_type:: +16166: param_type(_InputIteratorB __bbegin, +16166: _InputIteratorB __bend, +16166: _InputIteratorW __wbegin) +16166: : _M_int(), _M_den(), _M_cp() +16166: { +16166: if (__bbegin != __bend) +16166: { +16166: for (;;) +16166: { +16166: _M_int.push_back(*__bbegin); +16166: ++__bbegin; +16166: if (__bbegin == __bend) +16166: break; +16166: +16166: _M_den.push_back(*__wbegin); +16166: ++__wbegin; +16166: } +16166: } +16166: +16166: _M_initialize(); +16166: } +16166: +16166: template +16166: template +16166: piecewise_constant_distribution<_RealType>::param_type:: +16166: param_type(initializer_list<_RealType> __bl, _Func __fw) +16166: : _M_int(), _M_den(), _M_cp() +16166: { +16166: _M_int.reserve(__bl.size()); +16166: for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) +16166: _M_int.push_back(*__biter); +16166: +16166: _M_den.reserve(_M_int.size() - 1); +16166: for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) +16166: _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k]))); +16166: +16166: _M_initialize(); +16166: } +16166: +16166: template +16166: template +16166: piecewise_constant_distribution<_RealType>::param_type:: +16166: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) +16166: : _M_int(), _M_den(), _M_cp() +16166: { +16166: const size_t __n = __nw == 0 ? 1 : __nw; +16166: const _RealType __delta = (__xmax - __xmin) / __n; +16166: +16166: _M_int.reserve(__n + 1); +16166: for (size_t __k = 0; __k <= __nw; ++__k) +16166: _M_int.push_back(__xmin + __k * __delta); +16166: +16166: _M_den.reserve(__n); +16166: for (size_t __k = 0; __k < __nw; ++__k) +16166: _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta)); +16166: +16166: _M_initialize(); +16166: } +16166: +16166: template +16166: template +16166: typename piecewise_constant_distribution<_RealType>::result_type +16166: piecewise_constant_distribution<_RealType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: const double __p = __aurng(); +16166: if (__param._M_cp.empty()) +16166: return __p; +16166: +16166: auto __pos = std::lower_bound(__param._M_cp.begin(), +16166: __param._M_cp.end(), __p); +16166: const size_t __i = __pos - __param._M_cp.begin(); +16166: +16166: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; +16166: +16166: return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i]; +16166: } +16166: +16166: template +16166: template +16166: void +16166: piecewise_constant_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: if (__param._M_cp.empty()) +16166: { +16166: while (__f != __t) +16166: *__f++ = __aurng(); +16166: return; +16166: } +16166: +16166: while (__f != __t) +16166: { +16166: const double __p = __aurng(); +16166: +16166: auto __pos = std::lower_bound(__param._M_cp.begin(), +16166: __param._M_cp.end(), __p); +16166: const size_t __i = __pos - __param._M_cp.begin(); +16166: +16166: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; +16166: +16166: *__f++ = (__param._M_int[__i] +16166: + (__p - __pref) / __param._M_den[__i]); +16166: } +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const piecewise_constant_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: std::vector<_RealType> __int = __x.intervals(); +16166: __os << __int.size() - 1; +16166: +16166: for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) +16166: __os << __space << *__xit; +16166: +16166: std::vector __den = __x.densities(); +16166: for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) +16166: __os << __space << *__dit; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: piecewise_constant_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: size_t __n; +16166: if (__is >> __n) +16166: { +16166: std::vector<_RealType> __int_vec; +16166: if (__detail::__extract_params(__is, __int_vec, __n + 1)) +16166: { +16166: std::vector __den_vec; +16166: if (__detail::__extract_params(__is, __den_vec, __n)) +16166: { +16166: __x.param({ __int_vec.begin(), __int_vec.end(), +16166: __den_vec.begin() }); +16166: } +16166: } +16166: } +16166: +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: void +16166: piecewise_linear_distribution<_RealType>::param_type:: +16166: _M_initialize() +16166: { +16166: if (_M_int.size() < 2 +16166: || (_M_int.size() == 2 +16166: && _M_int[0] == _RealType(0) +16166: && _M_int[1] == _RealType(1) +16166: && _M_den[0] == _M_den[1])) +16166: { +16166: _M_int.clear(); +16166: _M_den.clear(); +16166: return; +16166: } +16166: +16166: double __sum = 0.0; +16166: _M_cp.reserve(_M_int.size() - 1); +16166: _M_m.reserve(_M_int.size() - 1); +16166: for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) +16166: { +16166: const _RealType __delta = _M_int[__k + 1] - _M_int[__k]; +16166: __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta; +16166: _M_cp.push_back(__sum); +16166: _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta); +16166: } +16166: do { if (std::__is_constant_evaluated() && !bool(__sum > 0)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: +16166: __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), +16166: __sum); +16166: +16166: __detail::__normalize(_M_cp.begin(), _M_cp.end(), _M_cp.begin(), __sum); +16166: +16166: __detail::__normalize(_M_m.begin(), _M_m.end(), _M_m.begin(), __sum); +16166: +16166: +16166: _M_cp[_M_cp.size() - 1] = 1.0; +16166: } +16166: +16166: template +16166: template +16166: piecewise_linear_distribution<_RealType>::param_type:: +16166: param_type(_InputIteratorB __bbegin, +16166: _InputIteratorB __bend, +16166: _InputIteratorW __wbegin) +16166: : _M_int(), _M_den(), _M_cp(), _M_m() +16166: { +16166: for (; __bbegin != __bend; ++__bbegin, ++__wbegin) +16166: { +16166: _M_int.push_back(*__bbegin); +16166: _M_den.push_back(*__wbegin); +16166: } +16166: +16166: _M_initialize(); +16166: } +16166: +16166: template +16166: template +16166: piecewise_linear_distribution<_RealType>::param_type:: +16166: param_type(initializer_list<_RealType> __bl, _Func __fw) +16166: : _M_int(), _M_den(), _M_cp(), _M_m() +16166: { +16166: _M_int.reserve(__bl.size()); +16166: _M_den.reserve(__bl.size()); +16166: for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) +16166: { +16166: _M_int.push_back(*__biter); +16166: _M_den.push_back(__fw(*__biter)); +16166: } +16166: +16166: _M_initialize(); +16166: } +16166: +16166: template +16166: template +16166: piecewise_linear_distribution<_RealType>::param_type:: +16166: param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) +16166: : _M_int(), _M_den(), _M_cp(), _M_m() +16166: { +16166: const size_t __n = __nw == 0 ? 1 : __nw; +16166: const _RealType __delta = (__xmax - __xmin) / __n; +16166: +16166: _M_int.reserve(__n + 1); +16166: _M_den.reserve(__n + 1); +16166: for (size_t __k = 0; __k <= __nw; ++__k) +16166: { +16166: _M_int.push_back(__xmin + __k * __delta); +16166: _M_den.push_back(__fw(_M_int[__k] + __delta)); +16166: } +16166: +16166: _M_initialize(); +16166: } +16166: +16166: template +16166: template +16166: typename piecewise_linear_distribution<_RealType>::result_type +16166: piecewise_linear_distribution<_RealType>:: +16166: operator()(_UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: __detail::_Adaptor<_UniformRandomNumberGenerator, double> +16166: __aurng(__urng); +16166: +16166: const double __p = __aurng(); +16166: if (__param._M_cp.empty()) +16166: return __p; +16166: +16166: auto __pos = std::lower_bound(__param._M_cp.begin(), +16166: __param._M_cp.end(), __p); +16166: const size_t __i = __pos - __param._M_cp.begin(); +16166: +16166: const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; +16166: +16166: const double __a = 0.5 * __param._M_m[__i]; +16166: const double __b = __param._M_den[__i]; +16166: const double __cm = __p - __pref; +16166: +16166: _RealType __x = __param._M_int[__i]; +16166: if (__a == 0) +16166: __x += __cm / __b; +16166: else +16166: { +16166: const double __d = __b * __b + 4.0 * __a * __cm; +16166: __x += 0.5 * (std::sqrt(__d) - __b) / __a; +16166: } +16166: +16166: return __x; +16166: } +16166: +16166: template +16166: template +16166: void +16166: piecewise_linear_distribution<_RealType>:: +16166: __generate_impl(_ForwardIterator __f, _ForwardIterator __t, +16166: _UniformRandomNumberGenerator& __urng, +16166: const param_type& __param) +16166: { +16166: +16166: +16166: while (__f != __t) +16166: *__f++ = this->operator()(__urng, __param); +16166: } +16166: +16166: template +16166: std::basic_ostream<_CharT, _Traits>& +16166: operator<<(std::basic_ostream<_CharT, _Traits>& __os, +16166: const piecewise_linear_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_ostream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __os.flags(); +16166: const _CharT __fill = __os.fill(); +16166: const std::streamsize __precision = __os.precision(); +16166: const _CharT __space = __os.widen(' '); +16166: __os.flags(__ios_base::scientific | __ios_base::left); +16166: __os.fill(__space); +16166: __os.precision(std::numeric_limits<_RealType>::max_digits10); +16166: +16166: std::vector<_RealType> __int = __x.intervals(); +16166: __os << __int.size() - 1; +16166: +16166: for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) +16166: __os << __space << *__xit; +16166: +16166: std::vector __den = __x.densities(); +16166: for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) +16166: __os << __space << *__dit; +16166: +16166: __os.flags(__flags); +16166: __os.fill(__fill); +16166: __os.precision(__precision); +16166: return __os; +16166: } +16166: +16166: template +16166: std::basic_istream<_CharT, _Traits>& +16166: operator>>(std::basic_istream<_CharT, _Traits>& __is, +16166: piecewise_linear_distribution<_RealType>& __x) +16166: { +16166: using __ios_base = typename basic_istream<_CharT, _Traits>::ios_base; +16166: +16166: const typename __ios_base::fmtflags __flags = __is.flags(); +16166: __is.flags(__ios_base::dec | __ios_base::skipws); +16166: +16166: size_t __n; +16166: if (__is >> __n) +16166: { +16166: vector<_RealType> __int_vec; +16166: if (__detail::__extract_params(__is, __int_vec, __n + 1)) +16166: { +16166: vector __den_vec; +16166: if (__detail::__extract_params(__is, __den_vec, __n + 1)) +16166: { +16166: __x.param({ __int_vec.begin(), __int_vec.end(), +16166: __den_vec.begin() }); +16166: } +16166: } +16166: } +16166: __is.flags(__flags); +16166: return __is; +16166: } +16166: +16166: +16166: template +16166: seed_seq::seed_seq(std::initializer_list<_IntType> __il) +16166: { +16166: _M_v.reserve(__il.size()); +16166: for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) +16166: _M_v.push_back(__detail::__mod::__value>(*__iter)); +16166: } +16166: +16166: template +16166: seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) +16166: { +16166: if constexpr (__is_random_access_iter<_InputIterator>::value) +16166: _M_v.reserve(std::distance(__begin, __end)); +16166: +16166: for (_InputIterator __iter = __begin; __iter != __end; ++__iter) +16166: _M_v.push_back(__detail::__mod::__value>(*__iter)); +16166: } +16166: +16166: template +16166: void +16166: seed_seq::generate(_RandomAccessIterator __begin, +16166: _RandomAccessIterator __end) +16166: { +16166: typedef typename iterator_traits<_RandomAccessIterator>::value_type +16166: _Type; +16166: +16166: if (__begin == __end) +16166: return; +16166: +16166: std::fill(__begin, __end, _Type(0x8b8b8b8bu)); +16166: +16166: const size_t __n = __end - __begin; +16166: const size_t __s = _M_v.size(); +16166: const size_t __t = (__n >= 623) ? 11 +16166: : (__n >= 68) ? 7 +16166: : (__n >= 39) ? 5 +16166: : (__n >= 7) ? 3 +16166: : (__n - 1) / 2; +16166: const size_t __p = (__n - __t) / 2; +16166: const size_t __q = __p + __t; +16166: const size_t __m = std::max(size_t(__s + 1), __n); +16166: # 3292 "/usr/include/c++/14/bits/random.tcc" 3 +16166: { +16166: uint32_t __r1 = 1371501266u; +16166: uint32_t __r2 = __r1 + __s; +16166: __begin[__p] += __r1; +16166: __begin[__q] = (uint32_t)__begin[__q] + __r2; +16166: __begin[0] = __r2; +16166: } +16166: +16166: for (size_t __k = 1; __k <= __s; ++__k) +16166: { +16166: const size_t __kn = __k % __n; +16166: const size_t __kpn = (__k + __p) % __n; +16166: const size_t __kqn = (__k + __q) % __n; +16166: uint32_t __arg = (__begin[__kn] +16166: ^ __begin[__kpn] +16166: ^ __begin[(__k - 1) % __n]); +16166: uint32_t __r1 = 1664525u * (__arg ^ (__arg >> 27)); +16166: uint32_t __r2 = __r1 + (uint32_t)__kn + _M_v[__k - 1]; +16166: __begin[__kpn] = (uint32_t)__begin[__kpn] + __r1; +16166: __begin[__kqn] = (uint32_t)__begin[__kqn] + __r2; +16166: __begin[__kn] = __r2; +16166: } +16166: +16166: for (size_t __k = __s + 1; __k < __m; ++__k) +16166: { +16166: const size_t __kn = __k % __n; +16166: const size_t __kpn = (__k + __p) % __n; +16166: const size_t __kqn = (__k + __q) % __n; +16166: uint32_t __arg = (__begin[__kn] +16166: ^ __begin[__kpn] +16166: ^ __begin[(__k - 1) % __n]); +16166: uint32_t __r1 = 1664525u * (__arg ^ (__arg >> 27)); +16166: uint32_t __r2 = __r1 + (uint32_t)__kn; +16166: __begin[__kpn] = (uint32_t)__begin[__kpn] + __r1; +16166: __begin[__kqn] = (uint32_t)__begin[__kqn] + __r2; +16166: __begin[__kn] = __r2; +16166: } +16166: +16166: for (size_t __k = __m; __k < __m + __n; ++__k) +16166: { +16166: const size_t __kn = __k % __n; +16166: const size_t __kpn = (__k + __p) % __n; +16166: const size_t __kqn = (__k + __q) % __n; +16166: uint32_t __arg = (__begin[__kn] +16166: + __begin[__kpn] +16166: + __begin[(__k - 1) % __n]); +16166: uint32_t __r3 = 1566083941u * (__arg ^ (__arg >> 27)); +16166: uint32_t __r4 = __r3 - __kn; +16166: __begin[__kpn] ^= __r3; +16166: __begin[__kqn] ^= __r4; +16166: __begin[__kn] = __r4; +16166: } +16166: } +16166: +16166: template +16166: _RealType +16166: generate_canonical(_UniformRandomNumberGenerator& __urng) +16166: { +16166: static_assert(std::is_floating_point<_RealType>::value, +16166: "template argument must be a floating point type"); +16166: +16166: const size_t __b +16166: = std::min(static_cast(std::numeric_limits<_RealType>::digits), +16166: __bits); +16166: const long double __r = static_cast(__urng.max()) +16166: - static_cast(__urng.min()) + 1.0L; +16166: const size_t __log2r = std::log(__r) / std::log(2.0L); +16166: const size_t __m = std::max(1UL, +16166: (__b + __log2r - 1UL) / __log2r); +16166: _RealType __ret; +16166: _RealType __sum = _RealType(0); +16166: _RealType __tmp = _RealType(1); +16166: for (size_t __k = __m; __k != 0; --__k) +16166: { +16166: __sum += _RealType(__urng() - __urng.min()) * __tmp; +16166: __tmp *= __r; +16166: } +16166: __ret = __sum / __tmp; +16166: if (__builtin_expect(__ret >= _RealType(1), 0)) +16166: { +16166: +16166: __ret = std::nextafter(_RealType(1), _RealType(0)); +16166: +16166: +16166: +16166: +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: } +16166: # 51 "/usr/include/c++/14/random" 2 3 +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" 2 +16166: +16166: +16166: +16166: +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/random.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: class Random { +16166: private: +16166: enum : uint32_t { +16166: M = 2147483647L +16166: }; +16166: enum : uint64_t { +16166: A = 16807 +16166: }; +16166: +16166: uint32_t seed_; +16166: +16166: static uint32_t GoodSeed(uint32_t s) { return (s & M) != 0 ? (s & M) : 1; } +16166: +16166: public: +16166: +16166: enum : uint32_t { kMaxNext = M }; +16166: +16166: explicit Random(uint32_t s) : seed_(GoodSeed(s)) {} +16166: +16166: void Reset(uint32_t s) { seed_ = GoodSeed(s); } +16166: +16166: uint32_t Next() { +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t product = seed_ * A; +16166: +16166: +16166: seed_ = static_cast((product >> 31) + (product & M)); +16166: +16166: +16166: +16166: if (seed_ > M) { +16166: seed_ -= M; +16166: } +16166: return seed_; +16166: } +16166: +16166: uint64_t Next64() { return (uint64_t{Next()} << 32) | Next(); } +16166: +16166: +16166: +16166: uint32_t Uniform(int n) { return Next() % n; } +16166: +16166: +16166: +16166: bool OneIn(int n) { return Uniform(n) == 0; } +16166: +16166: +16166: +16166: bool OneInOpt(int n) { return n > 0 && OneIn(n); } +16166: +16166: +16166: +16166: +16166: bool PercentTrue(int percentage) { +16166: return static_cast(Uniform(100)) < percentage; +16166: } +16166: +16166: +16166: +16166: +16166: uint32_t Skewed(int max_log) { return Uniform(1 << Uniform(max_log + 1)); } +16166: +16166: +16166: std::string RandomString(int len); +16166: +16166: +16166: std::string HumanReadableString(int len); +16166: +16166: +16166: std::string RandomBinaryString(int len); +16166: +16166: +16166: +16166: static Random* GetTLSInstance(); +16166: }; +16166: +16166: +16166: +16166: +16166: class Random32 { +16166: private: +16166: std::mt19937 generator_; +16166: +16166: public: +16166: explicit Random32(uint32_t s) : generator_(s) {} +16166: +16166: +16166: uint32_t Next() { return static_cast(generator_()); } +16166: +16166: +16166: +16166: uint32_t Uniform(uint32_t n) { +16166: return static_cast( +16166: std::uniform_int_distribution( +16166: 0, n - 1)(generator_)); +16166: } +16166: +16166: +16166: +16166: +16166: uint32_t Uniformish(uint32_t n) { +16166: +16166: return static_cast((uint64_t(generator_()) * uint64_t(n)) >> 32); +16166: } +16166: +16166: +16166: +16166: bool OneIn(uint32_t n) { return Uniform(n) == 0; } +16166: +16166: +16166: +16166: +16166: uint32_t Skewed(int max_log) { +16166: return Uniform(uint32_t{1} << Uniform(max_log + 1)); +16166: } +16166: +16166: +16166: void Seed(uint32_t new_seed) { generator_.seed(new_seed); } +16166: }; +16166: +16166: +16166: class Random64 { +16166: private: +16166: std::mt19937_64 generator_; +16166: +16166: public: +16166: explicit Random64(uint64_t s) : generator_(s) {} +16166: +16166: +16166: uint64_t Next() { return generator_(); } +16166: +16166: +16166: +16166: uint64_t Uniform(uint64_t n) { +16166: return std::uniform_int_distribution(0, n - 1)(generator_); +16166: } +16166: +16166: +16166: +16166: bool OneIn(uint64_t n) { return Uniform(n) == 0; } +16166: +16166: +16166: +16166: +16166: uint64_t Skewed(int max_log) { +16166: return Uniform(uint64_t(1) << Uniform(max_log + 1)); +16166: } +16166: }; +16166: +16166: +16166: template +16166: void RandomShuffle(RandomIt first, RandomIt last, uint32_t seed) { +16166: std::mt19937 rng(seed); +16166: std::shuffle(first, last, rng); +16166: } +16166: +16166: +16166: template +16166: void RandomShuffle(RandomIt first, RandomIt last) { +16166: RandomShuffle(first, last, std::random_device{}()); +16166: } +16166: +16166: } +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: template +16166: class CoreLocalArray { +16166: public: +16166: CoreLocalArray(); +16166: +16166: size_t Size() const; +16166: +16166: +16166: T* Access() const; +16166: +16166: +16166: +16166: std::pair AccessElementAndIndex() const; +16166: +16166: +16166: T* AccessAtCore(size_t core_idx) const; +16166: +16166: private: +16166: std::unique_ptr data_; +16166: int size_shift_; +16166: }; +16166: +16166: template +16166: CoreLocalArray::CoreLocalArray() { +16166: int num_cpus = static_cast(std::thread::hardware_concurrency()); +16166: +16166: size_shift_ = 3; +16166: while (1 << size_shift_ < num_cpus) { +16166: ++size_shift_; +16166: } +16166: data_.reset(new T[static_cast(1) << size_shift_]); +16166: } +16166: +16166: template +16166: size_t CoreLocalArray::Size() const { +16166: return static_cast(1) << size_shift_; +16166: } +16166: +16166: template +16166: T* CoreLocalArray::Access() const { +16166: return AccessElementAndIndex().first; +16166: } +16166: +16166: template +16166: std::pair CoreLocalArray::AccessElementAndIndex() const { +16166: int cpuid = port::PhysicalCoreID(); +16166: size_t core_idx; +16166: if ((__builtin_expect((cpuid < 0), 0))) { +16166: +16166: core_idx = Random::GetTLSInstance()->Uniform(1 << size_shift_); +16166: } else { +16166: core_idx = static_cast(BottomNBits(cpuid, size_shift_)); +16166: } +16166: return {AccessAtCore(core_idx), core_idx}; +16166: } +16166: +16166: template +16166: T* CoreLocalArray::AccessAtCore(size_t core_idx) const { +16166: +16166: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 3 4 +16166: (static_cast ( +16166: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" +16166: core_idx < static_cast(1) << size_shift_ +16166: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" +16166: "core_idx < static_cast(1) << size_shift_" +16166: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 81 "/build/reproducible-path/rocksdb-9.10.0/util/core_local.h" +16166: ; +16166: return &data_[core_idx]; +16166: } +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 2 +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" 1 +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +16166: +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +16166: namespace rocksdb { +16166: +16166: namespace detail { +16166: +16166: +16166: template +16166: struct FastRangeGenericImpl { +16166: +16166: }; +16166: +16166: template +16166: struct FastRangeGenericImpl { +16166: static inline Range Fn(uint32_t hash, Range range) { +16166: static_assert(std::is_unsigned::value, "must be unsigned"); +16166: static_assert(sizeof(Range) <= sizeof(uint32_t), +16166: "cannot be larger than hash (32 bits)"); +16166: +16166: uint64_t product = uint64_t{range} * hash; +16166: return static_cast(product >> 32); +16166: } +16166: }; +16166: +16166: template +16166: struct FastRangeGenericImpl { +16166: static inline Range Fn(uint64_t hash, Range range) { +16166: static_assert(std::is_unsigned::value, "must be unsigned"); +16166: static_assert(sizeof(Range) <= sizeof(uint64_t), +16166: "cannot be larger than hash (64 bits)"); +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +16166: uint64_t range64 = range; +16166: uint64_t tmp = uint64_t{range64 & 0xffffFFFF} * uint64_t{hash & 0xffffFFFF}; +16166: tmp >>= 32; +16166: tmp += uint64_t{range64 & 0xffffFFFF} * uint64_t{hash >> 32}; +16166: +16166: uint64_t tmp2 = uint64_t{range64 >> 32} * uint64_t{hash & 0xffffFFFF}; +16166: tmp += static_cast(tmp2); +16166: tmp >>= 32; +16166: tmp += (tmp2 >> 32); +16166: tmp += uint64_t{range64 >> 32} * uint64_t{hash >> 32}; +16166: return static_cast(tmp); +16166: +16166: } +16166: }; +16166: +16166: } +16166: # 96 "/build/reproducible-path/rocksdb-9.10.0/util/fastrange.h" +16166: template +16166: inline Range FastRangeGeneric(Hash hash, Range range) { +16166: return detail::FastRangeGenericImpl::Fn(hash, range); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: inline size_t FastRange64(uint64_t hash, size_t range) { +16166: return FastRangeGeneric(hash, range); +16166: } +16166: +16166: +16166: inline uint32_t FastRange32(uint32_t hash, uint32_t range) { +16166: return FastRangeGeneric(hash, range); +16166: } +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/hash.h" 1 +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/util/hash.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: uint64_t Hash64(const char* data, size_t n, uint64_t seed); +16166: +16166: +16166: uint64_t Hash64(const char* data, size_t n); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline uint64_t NPHash64(const char* data, size_t n, uint64_t seed) { +16166: +16166: +16166: +16166: +16166: +16166: return Hash64(data, n, seed); +16166: +16166: } +16166: +16166: +16166: inline uint64_t NPHash64(const char* data, size_t n) { +16166: +16166: +16166: +16166: +16166: +16166: return Hash64(data, n); +16166: +16166: } +16166: +16166: +16166: +16166: void Hash2x64(const char* data, size_t n, uint64_t* high64, uint64_t* low64); +16166: void Hash2x64(const char* data, size_t n, uint64_t seed, uint64_t* high64, +16166: uint64_t* low64); +16166: +16166: +16166: +16166: void BijectiveHash2x64(uint64_t in_high64, uint64_t in_low64, +16166: uint64_t* out_high64, uint64_t* out_low64); +16166: void BijectiveHash2x64(uint64_t in_high64, uint64_t in_low64, uint64_t seed, +16166: uint64_t* out_high64, uint64_t* out_low64); +16166: +16166: +16166: void BijectiveUnhash2x64(uint64_t in_high64, uint64_t in_low64, +16166: uint64_t* out_high64, uint64_t* out_low64); +16166: void BijectiveUnhash2x64(uint64_t in_high64, uint64_t in_low64, uint64_t seed, +16166: uint64_t* out_high64, uint64_t* out_low64); +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint32_t Hash(const char* data, size_t n, uint32_t seed); +16166: +16166: +16166: inline uint32_t BloomHash(const Slice& key) { +16166: return Hash(key.data(), key.size(), 0xbc9f1d34); +16166: } +16166: +16166: inline uint64_t GetSliceHash64(const Slice& key) { +16166: return Hash64(key.data(), key.size()); +16166: } +16166: +16166: +16166: extern uint64_t (*kGetSliceNPHash64UnseededFnPtr)(const Slice&); +16166: +16166: inline uint64_t GetSliceNPHash64(const Slice& s) { +16166: return NPHash64(s.data(), s.size()); +16166: } +16166: +16166: inline uint64_t GetSliceNPHash64(const Slice& s, uint64_t seed) { +16166: return NPHash64(s.data(), s.size(), seed); +16166: } +16166: +16166: +16166: +16166: uint64_t GetSlicePartsNPHash64(const SliceParts& data, uint64_t seed); +16166: +16166: inline size_t GetSliceRangedNPHash(const Slice& s, size_t range) { +16166: return FastRange64(NPHash64(s.data(), s.size()), range); +16166: } +16166: +16166: +16166: inline uint32_t GetSliceHash(const Slice& s) { +16166: return Hash(s.data(), s.size(), 397); +16166: } +16166: +16166: +16166: inline uint32_t Upper32of64(uint64_t v) { +16166: return static_cast(v >> 32); +16166: } +16166: inline uint32_t Lower32of64(uint64_t v) { return static_cast(v); } +16166: +16166: +16166: struct SliceHasher32 { +16166: uint32_t operator()(const Slice& s) const { return GetSliceHash(s); } +16166: }; +16166: struct SliceNPHasher64 { +16166: uint64_t operator()(const Slice& s, uint64_t seed = 0) const { +16166: return GetSliceNPHash64(s, seed); +16166: } +16166: }; +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" 2 +16166: +16166: namespace rocksdb { +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +16166: class MutexLock { +16166: public: +16166: explicit MutexLock(port::Mutex *mu) : mu_(mu) { this->mu_->Lock(); } +16166: +16166: MutexLock(const MutexLock &) = delete; +16166: void operator=(const MutexLock &) = delete; +16166: +16166: ~MutexLock() { this->mu_->Unlock(); } +16166: +16166: private: +16166: port::Mutex *const mu_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class ReadLock { +16166: public: +16166: explicit ReadLock(port::RWMutex *mu) : mu_(mu) { this->mu_->ReadLock(); } +16166: +16166: ReadLock(const ReadLock &) = delete; +16166: void operator=(const ReadLock &) = delete; +16166: +16166: ~ReadLock() { this->mu_->ReadUnlock(); } +16166: +16166: private: +16166: port::RWMutex *const mu_; +16166: }; +16166: +16166: +16166: +16166: +16166: class ReadUnlock { +16166: public: +16166: explicit ReadUnlock(port::RWMutex *mu) : mu_(mu) { mu->AssertHeld(); } +16166: +16166: ReadUnlock(const ReadUnlock &) = delete; +16166: ReadUnlock &operator=(const ReadUnlock &) = delete; +16166: +16166: ~ReadUnlock() { mu_->ReadUnlock(); } +16166: +16166: private: +16166: port::RWMutex *const mu_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class WriteLock { +16166: public: +16166: explicit WriteLock(port::RWMutex *mu) : mu_(mu) { this->mu_->WriteLock(); } +16166: +16166: WriteLock(const WriteLock &) = delete; +16166: void operator=(const WriteLock &) = delete; +16166: +16166: ~WriteLock() { this->mu_->WriteUnlock(); } +16166: +16166: private: +16166: port::RWMutex *const mu_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: class SpinMutex { +16166: public: +16166: SpinMutex() : locked_(false) {} +16166: +16166: bool try_lock() { +16166: auto currently_locked = locked_.load(std::memory_order_relaxed); +16166: return !currently_locked && +16166: locked_.compare_exchange_weak(currently_locked, true, +16166: std::memory_order_acquire, +16166: std::memory_order_relaxed); +16166: } +16166: +16166: void lock() { +16166: for (size_t tries = 0;; ++tries) { +16166: if (try_lock()) { +16166: +16166: break; +16166: } +16166: port::AsmVolatilePause(); +16166: if (tries > 100) { +16166: std::this_thread::yield(); +16166: } +16166: } +16166: } +16166: +16166: void unlock() { locked_.store(false, std::memory_order_release); } +16166: +16166: private: +16166: std::atomic locked_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct alignas(64U) CacheAlignedWrapper { +16166: T obj_; +16166: }; +16166: template +16166: struct Unwrap { +16166: using type = T; +16166: static type &Go(T &t) { return t; } +16166: }; +16166: template +16166: struct Unwrap> { +16166: using type = T; +16166: static type &Go(CacheAlignedWrapper &t) { return t.obj_; } +16166: }; +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/mutexlock.h" +16166: template +16166: class Striped { +16166: public: +16166: explicit Striped(size_t stripe_count) +16166: : stripe_count_(stripe_count), data_(new T[stripe_count]) {} +16166: +16166: using Unwrapped = typename Unwrap::type; +16166: Unwrapped &Get(const Key &key, uint64_t seed = 0) { +16166: size_t index = FastRangeGeneric(hash_(key, seed), stripe_count_); +16166: return Unwrap::Go(data_[index]); +16166: } +16166: +16166: size_t ApproximateMemoryUsage() const { +16166: +16166: +16166: return sizeof(*this) + stripe_count_ * sizeof(T); +16166: } +16166: +16166: private: +16166: size_t stripe_count_; +16166: std::unique_ptr data_; +16166: Hash hash_; +16166: }; +16166: +16166: } +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" 2 +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h" +16166: namespace rocksdb { +16166: +16166: enum TickersInternal : uint32_t { +16166: INTERNAL_TICKER_ENUM_START = TICKER_ENUM_MAX, +16166: INTERNAL_TICKER_ENUM_MAX +16166: }; +16166: +16166: enum HistogramsInternal : uint32_t { +16166: INTERNAL_HISTOGRAM_START = HISTOGRAM_ENUM_MAX, +16166: INTERNAL_HISTOGRAM_ENUM_MAX +16166: }; +16166: +16166: class StatisticsImpl : public Statistics { +16166: public: +16166: StatisticsImpl(std::shared_ptr stats); +16166: virtual ~StatisticsImpl(); +16166: const char* Name() const override { return kClassName(); } +16166: static const char* kClassName() { return "BasicStatistics"; } +16166: +16166: uint64_t getTickerCount(uint32_t ticker_type) const override; +16166: void histogramData(uint32_t histogram_type, +16166: HistogramData* const data) const override; +16166: std::string getHistogramString(uint32_t histogram_type) const override; +16166: +16166: void setTickerCount(uint32_t ticker_type, uint64_t count) override; +16166: uint64_t getAndResetTickerCount(uint32_t ticker_type) override; +16166: void recordTick(uint32_t ticker_type, uint64_t count) override; +16166: +16166: +16166: +16166: +16166: void measureTime(uint32_t histogramType, uint64_t time) override { +16166: recordInHistogram(histogramType, time); +16166: } +16166: void recordInHistogram(uint32_t histogram_type, uint64_t value) override; +16166: +16166: Status Reset() override; +16166: std::string ToString() const override; +16166: bool getTickerMap(std::map*) const override; +16166: bool HistEnabledForType(uint32_t type) const override; +16166: +16166: const Customizable* Inner() const override { return stats_.get(); } +16166: +16166: private: +16166: +16166: std::shared_ptr stats_; +16166: +16166: +16166: mutable port::Mutex aggregate_lock_; +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct alignas(64U) StatisticsData { +16166: std::atomic_uint_fast64_t tickers_[INTERNAL_TICKER_ENUM_MAX] = {{0}}; +16166: HistogramImpl histograms_[INTERNAL_HISTOGRAM_ENUM_MAX]; +16166: +16166: char +16166: padding[(64U - +16166: (INTERNAL_TICKER_ENUM_MAX * sizeof(std::atomic_uint_fast64_t) + +16166: INTERNAL_HISTOGRAM_ENUM_MAX * sizeof(HistogramImpl)) % +16166: 64U)] ; +16166: +16166: void* operator new(size_t s) { return port::cacheline_aligned_alloc(s); } +16166: void* operator new[](size_t s) { return port::cacheline_aligned_alloc(s); } +16166: void operator delete(void* p) { port::cacheline_aligned_free(p); } +16166: void operator delete[](void* p) { port::cacheline_aligned_free(p); } +16166: }; +16166: +16166: +16166: static_assert(sizeof(StatisticsData) % 64U == 0, +16166: "Expected " "64U" "-byte aligned"); +16166: +16166: +16166: CoreLocalArray per_core_stats_; +16166: +16166: uint64_t getTickerCountLocked(uint32_t ticker_type) const; +16166: std::unique_ptr getHistogramImplLocked( +16166: uint32_t histogram_type) const; +16166: void setTickerCountLocked(uint32_t ticker_type, uint64_t count); +16166: }; +16166: +16166: +16166: inline void RecordInHistogram(Statistics* statistics, uint32_t histogram_type, +16166: uint64_t value) { +16166: if (statistics) { +16166: statistics->recordInHistogram(histogram_type, value); +16166: } +16166: } +16166: +16166: inline void RecordTimeToHistogram(Statistics* statistics, +16166: uint32_t histogram_type, uint64_t value) { +16166: if (statistics) { +16166: statistics->reportTimeToHistogram(histogram_type, value); +16166: } +16166: } +16166: +16166: inline void RecordTick(Statistics* statistics, uint32_t ticker_type, +16166: uint64_t count = 1) { +16166: if (statistics) { +16166: statistics->recordTick(ticker_type, count); +16166: } +16166: } +16166: +16166: inline void SetTickerCount(Statistics* statistics, uint32_t ticker_type, +16166: uint64_t count) { +16166: if (statistics) { +16166: statistics->setTickerCount(ticker_type, count); +16166: } +16166: } +16166: +16166: } +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/chrono" 1 3 +16166: # 33 "/usr/include/c++/14/chrono" 3 +16166: +16166: # 34 "/usr/include/c++/14/chrono" 3 +16166: # 55 "/usr/include/c++/14/chrono" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 56 "/usr/include/c++/14/chrono" 2 3 +16166: +16166: +16166: # 57 "/usr/include/c++/14/chrono" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 74 "/usr/include/c++/14/chrono" 3 +16166: namespace chrono +16166: { +16166: # 3328 "/usr/include/c++/14/chrono" 3 +16166: } +16166: # 3356 "/usr/include/c++/14/chrono" 3 +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" 2 +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" +16166: +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/system_clock.h" +16166: namespace rocksdb { +16166: struct ConfigOptions; +16166: +16166: +16166: +16166: class SystemClock : public Customizable { +16166: public: +16166: ~SystemClock() override {} +16166: +16166: static const char* Type() { return "SystemClock"; } +16166: static Status CreateFromString(const ConfigOptions& options, +16166: const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: const char* Name() const override = 0; +16166: +16166: +16166: +16166: static const char* kDefaultName() { return "DefaultClock"; } +16166: +16166: +16166: +16166: static const std::shared_ptr& Default(); +16166: +16166: +16166: +16166: +16166: virtual uint64_t NowMicros() = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual uint64_t NowNanos() { return NowMicros() * 1000; } +16166: +16166: +16166: +16166: virtual uint64_t CPUMicros() { return 0; } +16166: +16166: +16166: +16166: +16166: virtual uint64_t CPUNanos() { return CPUMicros() * 1000; } +16166: +16166: +16166: virtual void SleepForMicroseconds(int micros) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool TimedWait(port::CondVar* cv, std::chrono::microseconds deadline); +16166: +16166: +16166: +16166: virtual Status GetCurrentTime(int64_t* unix_time) = 0; +16166: +16166: +16166: virtual std::string TimeToString(uint64_t time) = 0; +16166: }; +16166: +16166: +16166: +16166: class SystemClockWrapper : public SystemClock { +16166: public: +16166: explicit SystemClockWrapper(const std::shared_ptr& t); +16166: +16166: uint64_t NowMicros() override { return target_->NowMicros(); } +16166: +16166: uint64_t NowNanos() override { return target_->NowNanos(); } +16166: +16166: uint64_t CPUMicros() override { return target_->CPUMicros(); } +16166: +16166: uint64_t CPUNanos() override { return target_->CPUNanos(); } +16166: +16166: void SleepForMicroseconds(int micros) override { +16166: return target_->SleepForMicroseconds(micros); +16166: } +16166: +16166: bool TimedWait(port::CondVar* cv, +16166: std::chrono::microseconds deadline) override { +16166: return target_->TimedWait(cv, deadline); +16166: } +16166: +16166: Status GetCurrentTime(int64_t* unix_time) override { +16166: return target_->GetCurrentTime(unix_time); +16166: } +16166: +16166: std::string TimeToString(uint64_t time) override { +16166: return target_->TimeToString(time); +16166: } +16166: +16166: Status PrepareOptions(const ConfigOptions& options) override; +16166: std::string SerializeOptions(const ConfigOptions& config_options, +16166: const std::string& header) const override; +16166: const Customizable* Inner() const override { return target_.get(); } +16166: +16166: protected: +16166: std::shared_ptr target_; +16166: }; +16166: +16166: } +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class PerfStepTimer { +16166: public: +16166: explicit PerfStepTimer( +16166: uint64_t* metric, SystemClock* clock = nullptr, bool use_cpu_time = false, +16166: PerfLevel enable_level = PerfLevel::kEnableTimeExceptForMutex, +16166: Statistics* statistics = nullptr, uint32_t ticker_type = 0) +16166: : perf_counter_enabled_(perf_level >= enable_level), +16166: use_cpu_time_(use_cpu_time), +16166: ticker_type_(ticker_type), +16166: clock_((perf_counter_enabled_ || statistics != nullptr) +16166: ? (clock ? clock : SystemClock::Default().get()) +16166: : nullptr), +16166: start_(0), +16166: metric_(metric), +16166: statistics_(statistics) {} +16166: +16166: ~PerfStepTimer() { Stop(); } +16166: +16166: void Start() { +16166: if (perf_counter_enabled_ || statistics_ != nullptr) { +16166: start_ = time_now(); +16166: } +16166: } +16166: +16166: void Measure() { +16166: if (start_) { +16166: uint64_t now = time_now(); +16166: *metric_ += now - start_; +16166: start_ = now; +16166: } +16166: } +16166: +16166: void Stop() { +16166: if (start_) { +16166: uint64_t duration = time_now() - start_; +16166: if (perf_counter_enabled_) { +16166: *metric_ += duration; +16166: } +16166: +16166: if (statistics_ != nullptr) { +16166: RecordTick(statistics_, ticker_type_, duration); +16166: } +16166: start_ = 0; +16166: } +16166: } +16166: +16166: private: +16166: uint64_t time_now() { +16166: if (!use_cpu_time_) { +16166: return clock_->NowNanos(); +16166: } else { +16166: return clock_->CPUNanos(); +16166: } +16166: } +16166: +16166: const bool perf_counter_enabled_; +16166: const bool use_cpu_time_; +16166: uint32_t ticker_type_; +16166: SystemClock* const clock_; +16166: uint64_t start_; +16166: uint64_t* metric_; +16166: Statistics* statistics_; +16166: }; +16166: +16166: } +16166: # 8 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +16166: namespace rocksdb { +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +16166: struct PerfContextByLevelBase { +16166: +16166: +16166: +16166: uint64_t bloom_filter_useful = 0; +16166: +16166: uint64_t bloom_filter_full_positive = 0; +16166: +16166: +16166: uint64_t bloom_filter_full_true_positive = 0; +16166: +16166: +16166: +16166: uint64_t user_key_return_count = 0; +16166: +16166: +16166: uint64_t get_from_table_nanos = 0; +16166: +16166: uint64_t block_cache_hit_count = 0; +16166: uint64_t block_cache_miss_count = 0; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct PerfContextByLevel : public PerfContextByLevelBase { +16166: void Reset(); +16166: }; +16166: # 67 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +16166: struct PerfContextBase { +16166: uint64_t user_key_comparison_count; +16166: uint64_t block_cache_hit_count; +16166: uint64_t block_read_count; +16166: uint64_t block_read_byte; +16166: uint64_t block_read_time; +16166: +16166: uint64_t block_read_cpu_time; +16166: uint64_t block_cache_index_hit_count; +16166: +16166: uint64_t block_cache_standalone_handle_count; +16166: +16166: +16166: uint64_t block_cache_real_handle_count; +16166: uint64_t index_block_read_count; +16166: uint64_t block_cache_filter_hit_count; +16166: uint64_t filter_block_read_count; +16166: uint64_t compression_dict_block_read_count; +16166: +16166: +16166: uint64_t block_cache_index_read_byte; +16166: uint64_t block_cache_filter_read_byte; +16166: uint64_t block_cache_compression_dict_read_byte; +16166: uint64_t block_cache_read_byte; +16166: +16166: uint64_t secondary_cache_hit_count; +16166: +16166: uint64_t compressed_sec_cache_insert_real_count; +16166: +16166: uint64_t compressed_sec_cache_insert_dummy_count; +16166: +16166: uint64_t compressed_sec_cache_uncompressed_bytes; +16166: +16166: uint64_t compressed_sec_cache_compressed_bytes; +16166: +16166: uint64_t block_checksum_time; +16166: uint64_t block_decompress_time; +16166: +16166: uint64_t get_read_bytes; +16166: uint64_t multiget_read_bytes; +16166: uint64_t iter_read_bytes; +16166: +16166: uint64_t blob_cache_hit_count; +16166: uint64_t blob_read_count; +16166: uint64_t blob_read_byte; +16166: uint64_t blob_read_time; +16166: uint64_t blob_checksum_time; +16166: uint64_t blob_decompress_time; +16166: # 133 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +16166: uint64_t internal_key_skipped_count; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t internal_delete_skipped_count; +16166: +16166: +16166: +16166: uint64_t internal_recent_skipped_count; +16166: +16166: +16166: +16166: uint64_t internal_merge_count; +16166: +16166: +16166: +16166: uint64_t internal_merge_point_lookup_count; +16166: +16166: +16166: +16166: uint64_t internal_range_del_reseek_count; +16166: +16166: uint64_t get_snapshot_time; +16166: uint64_t get_from_memtable_time; +16166: uint64_t get_from_memtable_count; +16166: +16166: uint64_t get_post_process_time; +16166: uint64_t get_from_output_files_time; +16166: +16166: uint64_t seek_on_memtable_time; +16166: +16166: +16166: uint64_t seek_on_memtable_count; +16166: +16166: uint64_t next_on_memtable_count; +16166: +16166: uint64_t prev_on_memtable_count; +16166: +16166: uint64_t seek_child_seek_time; +16166: +16166: uint64_t seek_child_seek_count; +16166: uint64_t seek_min_heap_time; +16166: uint64_t seek_max_heap_time; +16166: +16166: uint64_t seek_internal_seek_time; +16166: +16166: uint64_t find_next_user_entry_time; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t write_wal_time; +16166: +16166: uint64_t write_memtable_time; +16166: +16166: uint64_t write_delay_time; +16166: +16166: +16166: uint64_t write_scheduling_flushes_compactions_time; +16166: +16166: uint64_t write_pre_and_post_process_time; +16166: +16166: +16166: uint64_t write_thread_wait_nanos; +16166: +16166: +16166: uint64_t db_mutex_lock_nanos; +16166: +16166: uint64_t db_condition_wait_nanos; +16166: +16166: uint64_t merge_operator_time_nanos; +16166: +16166: +16166: uint64_t read_index_block_nanos; +16166: +16166: uint64_t read_filter_block_nanos; +16166: +16166: uint64_t new_table_block_iter_nanos; +16166: +16166: uint64_t new_table_iterator_nanos; +16166: +16166: uint64_t block_seek_nanos; +16166: +16166: uint64_t find_table_nanos; +16166: +16166: uint64_t bloom_memtable_hit_count; +16166: +16166: uint64_t bloom_memtable_miss_count; +16166: +16166: uint64_t bloom_sst_hit_count; +16166: +16166: uint64_t bloom_sst_miss_count; +16166: +16166: +16166: uint64_t key_lock_wait_time; +16166: +16166: uint64_t key_lock_wait_count; +16166: +16166: +16166: +16166: uint64_t env_new_sequential_file_nanos; +16166: uint64_t env_new_random_access_file_nanos; +16166: uint64_t env_new_writable_file_nanos; +16166: uint64_t env_reuse_writable_file_nanos; +16166: uint64_t env_new_random_rw_file_nanos; +16166: uint64_t env_new_directory_nanos; +16166: uint64_t env_file_exists_nanos; +16166: uint64_t env_get_children_nanos; +16166: uint64_t env_get_children_file_attributes_nanos; +16166: uint64_t env_delete_file_nanos; +16166: uint64_t env_create_dir_nanos; +16166: uint64_t env_create_dir_if_missing_nanos; +16166: uint64_t env_delete_dir_nanos; +16166: uint64_t env_get_file_size_nanos; +16166: uint64_t env_get_file_modification_time_nanos; +16166: uint64_t env_rename_file_nanos; +16166: uint64_t env_link_file_nanos; +16166: uint64_t env_lock_file_nanos; +16166: uint64_t env_unlock_file_nanos; +16166: uint64_t env_new_logger_nanos; +16166: +16166: uint64_t get_cpu_nanos; +16166: uint64_t iter_next_cpu_nanos; +16166: uint64_t iter_prev_cpu_nanos; +16166: uint64_t iter_seek_cpu_nanos; +16166: +16166: +16166: +16166: +16166: uint64_t iter_next_count; +16166: uint64_t iter_prev_count; +16166: uint64_t iter_seek_count; +16166: +16166: +16166: uint64_t encrypt_data_nanos; +16166: +16166: uint64_t decrypt_data_nanos; +16166: +16166: uint64_t number_async_seek; +16166: }; +16166: +16166: struct PerfContext : public PerfContextBase { +16166: ~PerfContext(); +16166: +16166: PerfContext() { Reset(); } +16166: +16166: PerfContext(const PerfContext&); +16166: PerfContext& operator=(const PerfContext&); +16166: PerfContext(PerfContext&&) noexcept; +16166: +16166: void Reset(); +16166: +16166: std::string ToString(bool exclude_zero_counters = false) const; +16166: +16166: +16166: void EnablePerLevelPerfContext(); +16166: +16166: +16166: void DisablePerLevelPerfContext(); +16166: +16166: +16166: void ClearPerLevelPerfContext(); +16166: +16166: std::map* level_to_perf_context = nullptr; +16166: bool per_level_perf_context_enabled = false; +16166: +16166: void copyMetrics(const PerfContext* other) noexcept; +16166: }; +16166: # 317 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/perf_context.h" +16166: PerfContext* get_perf_context(); +16166: +16166: } +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/stop_watch.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: class StopWatch { +16166: public: +16166: StopWatch(SystemClock* clock, Statistics* statistics, +16166: const uint32_t hist_type_1, +16166: const uint32_t hist_type_2 = Histograms::HISTOGRAM_ENUM_MAX, +16166: uint64_t* elapsed = nullptr, bool overwrite = true, +16166: bool delay_enabled = false) +16166: : clock_(clock), +16166: statistics_(statistics), +16166: hist_type_1_(statistics && statistics->HistEnabledForType(hist_type_1) +16166: ? hist_type_1 +16166: : Histograms::HISTOGRAM_ENUM_MAX), +16166: hist_type_2_(statistics && statistics->HistEnabledForType(hist_type_2) +16166: ? hist_type_2 +16166: : Histograms::HISTOGRAM_ENUM_MAX), +16166: elapsed_(elapsed), +16166: overwrite_(overwrite), +16166: stats_enabled_(statistics && +16166: statistics->get_stats_level() > +16166: StatsLevel::kExceptTimers && +16166: (hist_type_1_ != Histograms::HISTOGRAM_ENUM_MAX || +16166: hist_type_2_ != Histograms::HISTOGRAM_ENUM_MAX)), +16166: delay_enabled_(delay_enabled), +16166: total_delay_(0), +16166: delay_start_time_(0), +16166: start_time_((stats_enabled_ || elapsed != nullptr) ? clock->NowMicros() +16166: : 0) {} +16166: +16166: ~StopWatch() { +16166: if (elapsed_) { +16166: if (overwrite_) { +16166: *elapsed_ = clock_->NowMicros() - start_time_; +16166: } else { +16166: *elapsed_ += clock_->NowMicros() - start_time_; +16166: } +16166: } +16166: if (elapsed_ && delay_enabled_) { +16166: *elapsed_ -= total_delay_; +16166: } +16166: if (stats_enabled_) { +16166: const auto time = (elapsed_ != nullptr) +16166: ? *elapsed_ +16166: : (clock_->NowMicros() - start_time_); +16166: if (hist_type_1_ != Histograms::HISTOGRAM_ENUM_MAX) { +16166: statistics_->reportTimeToHistogram(hist_type_1_, time); +16166: } +16166: if (hist_type_2_ != Histograms::HISTOGRAM_ENUM_MAX) { +16166: statistics_->reportTimeToHistogram(hist_type_2_, time); +16166: } +16166: } +16166: } +16166: +16166: void DelayStart() { +16166: +16166: +16166: if (elapsed_ && delay_enabled_ && delay_start_time_ == 0) { +16166: delay_start_time_ = clock_->NowMicros(); +16166: } +16166: } +16166: +16166: void DelayStop() { +16166: if (elapsed_ && delay_enabled_ && delay_start_time_ != 0) { +16166: total_delay_ += clock_->NowMicros() - delay_start_time_; +16166: } +16166: +16166: +16166: delay_start_time_ = 0; +16166: } +16166: +16166: uint64_t GetDelay() const { return delay_enabled_ ? total_delay_ : 0; } +16166: +16166: uint64_t start_time() const { return start_time_; } +16166: +16166: private: +16166: SystemClock* clock_; +16166: Statistics* statistics_; +16166: const uint32_t hist_type_1_; +16166: const uint32_t hist_type_2_; +16166: uint64_t* elapsed_; +16166: bool overwrite_; +16166: bool stats_enabled_; +16166: bool delay_enabled_; +16166: uint64_t total_delay_; +16166: uint64_t delay_start_time_; +16166: const uint64_t start_time_; +16166: }; +16166: +16166: +16166: class StopWatchNano { +16166: public: +16166: explicit StopWatchNano(SystemClock* clock, bool auto_start = false) +16166: : clock_(clock), start_(0) { +16166: if (auto_start) { +16166: Start(); +16166: } +16166: } +16166: +16166: void Start() { start_ = clock_->NowNanos(); } +16166: +16166: uint64_t ElapsedNanos(bool reset = false) { +16166: auto now = clock_->NowNanos(); +16166: auto elapsed = now - start_; +16166: if (reset) { +16166: start_ = now; +16166: } +16166: return elapsed; +16166: } +16166: +16166: uint64_t ElapsedNanosSafe(bool reset = false) { +16166: return (clock_ != nullptr) ? ElapsedNanos(reset) : 0U; +16166: } +16166: +16166: bool IsStarted() { return start_ != 0; } +16166: +16166: private: +16166: SystemClock* clock_; +16166: uint64_t start_; +16166: }; +16166: +16166: } +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern thread_local PerfContext perf_context; +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h" +16166: } +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: class UserComparatorWrapper { +16166: public: +16166: +16166: +16166: UserComparatorWrapper() : user_comparator_(nullptr) {} +16166: +16166: explicit UserComparatorWrapper(const Comparator* const user_cmp) +16166: : user_comparator_(user_cmp) {} +16166: +16166: ~UserComparatorWrapper() = default; +16166: +16166: const Comparator* user_comparator() const { return user_comparator_; } +16166: +16166: int Compare(const Slice& a, const Slice& b) const { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +16166: return user_comparator_->Compare(a, b); +16166: } +16166: +16166: bool Equal(const Slice& a, const Slice& b) const { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +16166: return user_comparator_->Equal(a, b); +16166: } +16166: +16166: int CompareTimestamp(const Slice& ts1, const Slice& ts2) const { +16166: return user_comparator_->CompareTimestamp(ts1, ts2); +16166: } +16166: +16166: int CompareWithoutTimestamp(const Slice& a, const Slice& b) const { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +16166: return user_comparator_->CompareWithoutTimestamp(a, b); +16166: } +16166: +16166: int CompareWithoutTimestamp(const Slice& a, bool a_has_ts, const Slice& b, +16166: bool b_has_ts) const { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.user_key_comparison_count += 1; } static_assert(true, "semicolon required"); +16166: return user_comparator_->CompareWithoutTimestamp(a, a_has_ts, b, b_has_ts); +16166: } +16166: +16166: bool EqualWithoutTimestamp(const Slice& a, const Slice& b) const { +16166: return user_comparator_->EqualWithoutTimestamp(a, b); +16166: } +16166: +16166: private: +16166: const Comparator* user_comparator_; +16166: }; +16166: +16166: } +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class InternalKey; +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum ValueType : unsigned char { +16166: kTypeDeletion = 0x0, +16166: kTypeValue = 0x1, +16166: kTypeMerge = 0x2, +16166: kTypeLogData = 0x3, +16166: kTypeColumnFamilyDeletion = 0x4, +16166: kTypeColumnFamilyValue = 0x5, +16166: kTypeColumnFamilyMerge = 0x6, +16166: kTypeSingleDeletion = 0x7, +16166: kTypeColumnFamilySingleDeletion = 0x8, +16166: kTypeBeginPrepareXID = 0x9, +16166: kTypeEndPrepareXID = 0xA, +16166: kTypeCommitXID = 0xB, +16166: kTypeRollbackXID = 0xC, +16166: kTypeNoop = 0xD, +16166: kTypeColumnFamilyRangeDeletion = 0xE, +16166: kTypeRangeDeletion = 0xF, +16166: kTypeColumnFamilyBlobIndex = 0x10, +16166: kTypeBlobIndex = 0x11, +16166: +16166: +16166: +16166: +16166: kTypeBeginPersistedPrepareXID = 0x12, +16166: +16166: +16166: +16166: kTypeBeginUnprepareXID = 0x13, +16166: kTypeDeletionWithTimestamp = 0x14, +16166: kTypeCommitXIDAndTimestamp = 0x15, +16166: kTypeWideColumnEntity = 0x16, +16166: kTypeColumnFamilyWideColumnEntity = 0x17, +16166: kTypeValuePreferredSeqno = 0x18, +16166: kTypeColumnFamilyValuePreferredSeqno = 0x19, +16166: kTypeMaxValid, +16166: +16166: kMaxValue = 0x7F +16166: }; +16166: +16166: +16166: extern const ValueType kValueTypeForSeek; +16166: extern const ValueType kValueTypeForSeekForPrev; +16166: +16166: +16166: +16166: struct UserKeyRange { +16166: +16166: +16166: Slice start; +16166: Slice limit; +16166: +16166: UserKeyRange() = default; +16166: UserKeyRange(const Slice& s, const Slice& l) : start(s), limit(l) {} +16166: }; +16166: +16166: +16166: +16166: struct UserKeyRangePtr { +16166: +16166: +16166: +16166: std::optional start; +16166: +16166: std::optional limit; +16166: +16166: UserKeyRangePtr(const std::optional& s, const std::optional& l) +16166: : start(s), limit(l) {} +16166: }; +16166: +16166: +16166: +16166: inline bool IsValueType(ValueType t) { +16166: return t <= kTypeMerge || kTypeSingleDeletion == t || kTypeBlobIndex == t || +16166: kTypeDeletionWithTimestamp == t || kTypeWideColumnEntity == t || +16166: kTypeValuePreferredSeqno == t; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: inline bool IsExtendedValueType(ValueType t) { +16166: return IsValueType(t) || t == kTypeRangeDeletion || t == kTypeMaxValid; +16166: } +16166: +16166: +16166: +16166: static const SequenceNumber kMaxSequenceNumber = ((0x1ull << 56) - 1); +16166: +16166: static const SequenceNumber kDisableGlobalSequenceNumber = +16166: std::numeric_limits::max(); +16166: +16166: constexpr uint64_t kNumInternalBytes = 8; +16166: +16166: +16166: extern const std::string kDisableUserTimestamp; +16166: +16166: +16166: +16166: struct ParsedInternalKey { +16166: Slice user_key; +16166: SequenceNumber sequence; +16166: ValueType type; +16166: +16166: ParsedInternalKey() +16166: : sequence(kMaxSequenceNumber), +16166: type(kTypeDeletion) +16166: {} +16166: +16166: ParsedInternalKey(const Slice& u, const SequenceNumber& seq, ValueType t) +16166: : user_key(u), sequence(seq), type(t) {} +16166: std::string DebugString(bool log_err_key, bool hex, +16166: const Comparator* ucmp = nullptr) const; +16166: +16166: void clear() { +16166: user_key.clear(); +16166: sequence = 0; +16166: type = kTypeDeletion; +16166: } +16166: +16166: void SetTimestamp(const Slice& ts) { +16166: +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ts.size() <= user_key.size() +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "ts.size() <= user_key.size()" +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: const char* addr = user_key.data() + user_key.size() - ts.size(); +16166: memcpy(const_cast(addr), ts.data(), ts.size()); +16166: } +16166: +16166: Slice GetTimestamp(size_t ts_sz) { +16166: +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ts_sz <= user_key.size() +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "ts_sz <= user_key.size()" +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: const char* addr = user_key.data() + user_key.size() - ts_sz; +16166: return Slice(const_cast(addr), ts_sz); +16166: } +16166: }; +16166: +16166: +16166: inline size_t InternalKeyEncodingLength(const ParsedInternalKey& key) { +16166: return key.user_key.size() + kNumInternalBytes; +16166: } +16166: +16166: +16166: inline uint64_t PackSequenceAndType(uint64_t seq, ValueType t) { +16166: +16166: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: seq <= kMaxSequenceNumber +16166: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "seq <= kMaxSequenceNumber" +16166: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 181 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: +16166: +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: IsExtendedValueType(t) || t == kTypeMaxValid +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "IsExtendedValueType(t) || t == kTypeMaxValid" +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 183 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return (seq << 8) | t; +16166: } +16166: +16166: +16166: +16166: inline void UnPackSequenceAndType(uint64_t packed, uint64_t* seq, +16166: ValueType* t) { +16166: *seq = packed >> 8; +16166: *t = static_cast(packed & 0xff); +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: const uint64_t kRangeTombstoneSentinel = +16166: PackSequenceAndType(kMaxSequenceNumber, kTypeRangeDeletion); +16166: +16166: EntryType GetEntryType(ValueType value_type); +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendInternalKey(std::string* result, const ParsedInternalKey& key); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendInternalKeyWithDifferentTimestamp(std::string* result, +16166: const ParsedInternalKey& key, +16166: const Slice& ts); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendUserKeyWithDifferentTimestamp(std::string* result, const Slice& key, +16166: const Slice& ts); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendInternalKeyFooter(std::string* result, SequenceNumber s, +16166: ValueType t); +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendKeyWithMinTimestamp(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendKeyWithMaxTimestamp(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendUserKeyWithMinTimestamp(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void AppendUserKeyWithMaxTimestamp(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: # 281 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: void PadInternalKeyWithMinTimestamp(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: void PadInternalKeyWithMaxTimestamp(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: # 301 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: void StripTimestampFromInternalKey(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: # 311 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: void ReplaceInternalKeyWithMinTimestamp(std::string* result, const Slice& key, +16166: size_t ts_sz); +16166: +16166: +16166: +16166: +16166: +16166: Status ParseInternalKey(const Slice& internal_key, ParsedInternalKey* result, +16166: bool log_err_key); +16166: +16166: +16166: +16166: +16166: +16166: inline Slice ExtractUserKey(const Slice& internal_key) { +16166: +16166: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: internal_key.size() >= kNumInternalBytes +16166: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "internal_key.size() >= kNumInternalBytes" +16166: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 326 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return Slice(internal_key.data(), internal_key.size() - kNumInternalBytes); +16166: } +16166: +16166: +16166: +16166: inline Slice ExtractUserKeyAndStripTimestamp(const Slice& internal_key, +16166: size_t ts_sz) { +16166: +16166: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: internal_key.size() >= kNumInternalBytes + ts_sz +16166: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "internal_key.size() >= kNumInternalBytes + ts_sz" +16166: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 334 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return Slice(internal_key.data(), +16166: internal_key.size() - (kNumInternalBytes + ts_sz)); +16166: } +16166: +16166: +16166: +16166: inline Slice StripTimestampFromUserKey(const Slice& user_key, size_t ts_sz) { +16166: +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: user_key.size() >= ts_sz +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "user_key.size() >= ts_sz" +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return Slice(user_key.data(), user_key.size() - ts_sz); +16166: } +16166: +16166: +16166: +16166: inline Slice ExtractTimestampFromUserKey(const Slice& user_key, size_t ts_sz) { +16166: +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: user_key.size() >= ts_sz +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "user_key.size() >= ts_sz" +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return Slice(user_key.data() + user_key.size() - ts_sz, ts_sz); +16166: } +16166: +16166: +16166: +16166: inline Slice ExtractTimestampFromKey(const Slice& internal_key, size_t ts_sz) { +16166: const size_t key_size = internal_key.size(); +16166: +16166: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: key_size >= kNumInternalBytes + ts_sz +16166: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "key_size >= kNumInternalBytes + ts_sz" +16166: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 357 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return Slice(internal_key.data() + key_size - ts_sz - kNumInternalBytes, +16166: ts_sz); +16166: } +16166: +16166: +16166: +16166: inline uint64_t ExtractInternalKeyFooter(const Slice& internal_key) { +16166: +16166: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: internal_key.size() >= kNumInternalBytes +16166: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "internal_key.size() >= kNumInternalBytes" +16166: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 365 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: const size_t n = internal_key.size(); +16166: return DecodeFixed64(internal_key.data() + n - kNumInternalBytes); +16166: } +16166: +16166: +16166: +16166: inline ValueType ExtractValueType(const Slice& internal_key) { +16166: uint64_t num = ExtractInternalKeyFooter(internal_key); +16166: unsigned char c = num & 0xff; +16166: return static_cast(c); +16166: } +16166: +16166: +16166: +16166: class InternalKeyComparator +16166: +16166: +16166: +16166: : public CompareInterface { +16166: private: +16166: UserComparatorWrapper user_comparator_; +16166: +16166: public: +16166: +16166: +16166: InternalKeyComparator() = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit InternalKeyComparator(const Comparator* c) : user_comparator_(c) {} +16166: virtual ~InternalKeyComparator() {} +16166: +16166: int Compare(const Slice& a, const Slice& b) const override; +16166: +16166: bool Equal(const Slice& a, const Slice& b) const { +16166: +16166: +16166: return Compare(a, b) == 0; +16166: } +16166: +16166: +16166: int CompareKeySeq(const Slice& a, const Slice& b) const; +16166: int CompareKeySeq(const ParsedInternalKey& a, const Slice& b) const; +16166: +16166: const Comparator* user_comparator() const { +16166: return user_comparator_.user_comparator(); +16166: } +16166: +16166: int Compare(const InternalKey& a, const InternalKey& b) const; +16166: int Compare(const ParsedInternalKey& a, const ParsedInternalKey& b) const; +16166: int Compare(const Slice& a, const ParsedInternalKey& b) const; +16166: int Compare(const ParsedInternalKey& a, const Slice& b) const; +16166: +16166: +16166: +16166: +16166: int Compare(const Slice& a, SequenceNumber a_global_seqno, const Slice& b, +16166: SequenceNumber b_global_seqno) const; +16166: }; +16166: +16166: +16166: class InternalKey { +16166: private: +16166: std::string rep_; +16166: +16166: public: +16166: InternalKey() {} +16166: InternalKey(const Slice& _user_key, SequenceNumber s, ValueType t) { +16166: AppendInternalKey(&rep_, ParsedInternalKey(_user_key, s, t)); +16166: } +16166: InternalKey(const Slice& _user_key, SequenceNumber s, ValueType t, Slice ts) { +16166: AppendInternalKeyWithDifferentTimestamp( +16166: &rep_, ParsedInternalKey(_user_key, s, t), ts); +16166: } +16166: +16166: +16166: +16166: void SetMaxPossibleForUserKey(const Slice& _user_key) { +16166: AppendInternalKey( +16166: &rep_, ParsedInternalKey(_user_key, 0, static_cast(0))); +16166: } +16166: +16166: +16166: +16166: void SetMinPossibleForUserKey(const Slice& _user_key) { +16166: AppendInternalKey(&rep_, ParsedInternalKey(_user_key, kMaxSequenceNumber, +16166: kValueTypeForSeek)); +16166: } +16166: +16166: bool Valid() const { +16166: ParsedInternalKey parsed; +16166: return (ParseInternalKey(Slice(rep_), &parsed, false ) +16166: .ok()); +16166: } +16166: +16166: void DecodeFrom(const Slice& s) { rep_.assign(s.data(), s.size()); } +16166: Slice Encode() const { +16166: +16166: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: !rep_.empty() +16166: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "!rep_.empty()" +16166: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 466 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return rep_; +16166: } +16166: +16166: Slice user_key() const { return ExtractUserKey(rep_); } +16166: size_t size() const { return rep_.size(); } +16166: +16166: void Set(const Slice& _user_key, SequenceNumber s, ValueType t) { +16166: SetFrom(ParsedInternalKey(_user_key, s, t)); +16166: } +16166: +16166: void Set(const Slice& _user_key_with_ts, SequenceNumber s, ValueType t, +16166: const Slice& ts) { +16166: ParsedInternalKey pik(_user_key_with_ts, s, t); +16166: +16166: +16166: SetFrom(pik, ts); +16166: } +16166: +16166: void SetFrom(const ParsedInternalKey& p) { +16166: rep_.clear(); +16166: AppendInternalKey(&rep_, p); +16166: } +16166: +16166: void SetFrom(const ParsedInternalKey& p, const Slice& ts) { +16166: rep_.clear(); +16166: AppendInternalKeyWithDifferentTimestamp(&rep_, p, ts); +16166: } +16166: +16166: void Clear() { rep_.clear(); } +16166: +16166: +16166: +16166: std::string* rep() { return &rep_; } +16166: +16166: +16166: +16166: void ConvertFromUserKey(SequenceNumber s, ValueType t) { +16166: AppendInternalKeyFooter(&rep_, s, t); +16166: } +16166: +16166: std::string DebugString(bool hex, const Comparator* ucmp = nullptr) const; +16166: }; +16166: +16166: inline int InternalKeyComparator::Compare(const InternalKey& a, +16166: const InternalKey& b) const { +16166: return Compare(a.Encode(), b.Encode()); +16166: } +16166: +16166: inline Status ParseInternalKey(const Slice& internal_key, +16166: ParsedInternalKey* result, bool log_err_key) { +16166: const size_t n = internal_key.size(); +16166: +16166: if (n < kNumInternalBytes) { +16166: return Status::Corruption("Corrupted Key: Internal Key too small. Size=" + +16166: std::to_string(n) + ". "); +16166: } +16166: +16166: uint64_t num = DecodeFixed64(internal_key.data() + n - kNumInternalBytes); +16166: unsigned char c = num & 0xff; +16166: result->sequence = num >> 8; +16166: result->type = static_cast(c); +16166: +16166: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: result->type <= ValueType::kMaxValue +16166: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "result->type <= ValueType::kMaxValue" +16166: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 528 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: result->user_key = Slice(internal_key.data(), n - kNumInternalBytes); +16166: +16166: if (IsExtendedValueType(result->type)) { +16166: return Status::OK(); +16166: } else { +16166: return Status::Corruption("Corrupted Key", +16166: result->DebugString(log_err_key, true)); +16166: } +16166: } +16166: +16166: +16166: +16166: inline void UpdateInternalKey(std::string* ikey, uint64_t seq, ValueType t) { +16166: size_t ikey_sz = ikey->size(); +16166: +16166: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ikey_sz >= kNumInternalBytes +16166: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "ikey_sz >= kNumInternalBytes" +16166: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 543 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: uint64_t newval = (seq << 8) | t; +16166: +16166: +16166: +16166: EncodeFixed64(&(*ikey)[ikey_sz - kNumInternalBytes], newval); +16166: } +16166: +16166: +16166: inline uint64_t GetInternalKeySeqno(const Slice& internal_key) { +16166: const size_t n = internal_key.size(); +16166: +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: n >= kNumInternalBytes +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "n >= kNumInternalBytes" +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: uint64_t num = DecodeFixed64(internal_key.data() + n - kNumInternalBytes); +16166: return num >> 8; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class IterKey { +16166: static constexpr size_t kInlineBufferSize = 39; +16166: +16166: +16166: static constexpr char kTsMin[] = "\x00\x00\x00\x00\x00\x00\x00\x00"; +16166: +16166: public: +16166: IterKey() +16166: : buf_(space_), +16166: key_(buf_), +16166: key_size_(0), +16166: buf_size_(kInlineBufferSize), +16166: is_user_key_(true), +16166: secondary_buf_(space_for_secondary_buf_), +16166: secondary_buf_size_(kInlineBufferSize) {} +16166: +16166: IterKey(const IterKey&) = delete; +16166: void operator=(const IterKey&) = delete; +16166: +16166: ~IterKey() { +16166: ResetBuffer(); +16166: ResetSecondaryBuffer(); +16166: } +16166: +16166: +16166: void SetIsUserKey(bool is_user_key) { is_user_key_ = is_user_key; } +16166: +16166: +16166: +16166: +16166: Slice GetKey() const { return Slice(key_, key_size_); } +16166: +16166: Slice GetInternalKey() const { +16166: +16166: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: !IsUserKey() +16166: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "!IsUserKey()" +16166: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 598 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return Slice(key_, key_size_); +16166: } +16166: +16166: +16166: +16166: Slice GetUserKey() const { +16166: if (IsUserKey()) { +16166: return Slice(key_, key_size_); +16166: } else { +16166: +16166: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: key_size_ >= kNumInternalBytes +16166: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "key_size_ >= kNumInternalBytes" +16166: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 608 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: return Slice(key_, key_size_ - kNumInternalBytes); +16166: } +16166: } +16166: +16166: size_t Size() const { return key_size_; } +16166: +16166: void Clear() { key_size_ = 0; } +16166: +16166: +16166: +16166: +16166: +16166: void TrimAppend(const size_t shared_len, const char* non_shared_data, +16166: const size_t non_shared_len) { +16166: +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: shared_len <= key_size_ +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "shared_len <= key_size_" +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: size_t total_size = shared_len + non_shared_len; +16166: +16166: if (IsKeyPinned() ) { +16166: +16166: EnlargeBufferIfNeeded(total_size); +16166: memcpy(buf_, key_, shared_len); +16166: } else if (total_size > buf_size_) { +16166: +16166: char* p = new char[total_size]; +16166: memcpy(p, key_, shared_len); +16166: +16166: if (buf_ != space_) { +16166: delete[] buf_; +16166: } +16166: +16166: buf_ = p; +16166: buf_size_ = total_size; +16166: } +16166: +16166: memcpy(buf_ + shared_len, non_shared_data, non_shared_len); +16166: key_ = buf_; +16166: key_size_ = total_size; +16166: } +16166: +16166: +16166: +16166: +16166: void TrimAppendWithTimestamp(const size_t shared_len, +16166: const char* non_shared_data, +16166: const size_t non_shared_len, +16166: const size_t ts_sz) { +16166: +16166: +16166: +16166: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ts_sz == sizeof(uint64_t) +16166: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "ts_sz == sizeof(uint64_t)" +16166: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 657 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: size_t next_key_slice_index = 0; +16166: if (IsUserKey()) { +16166: key_slices_[next_key_slice_index++] = Slice(key_, shared_len); +16166: key_slices_[next_key_slice_index++] = +16166: Slice(non_shared_data, non_shared_len); +16166: key_slices_[next_key_slice_index++] = Slice(kTsMin, ts_sz); +16166: } else { +16166: +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: shared_len + non_shared_len >= kNumInternalBytes +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "shared_len + non_shared_len >= kNumInternalBytes" +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: const size_t user_key_len = key_size_ - kNumInternalBytes; +16166: const size_t sharable_user_key_len = user_key_len - ts_sz; +16166: const size_t shared_user_key_len = +16166: std::min(shared_len, sharable_user_key_len); +16166: const size_t shared_internal_bytes_len = shared_len - shared_user_key_len; +16166: +16166: +16166: +16166: bool ts_added = false; +16166: +16166: MaybeAddKeyPartsWithTimestamp( +16166: key_, shared_user_key_len, +16166: shared_internal_bytes_len + non_shared_len < kNumInternalBytes, +16166: shared_len + non_shared_len - kNumInternalBytes, ts_sz, +16166: &next_key_slice_index, &ts_added); +16166: MaybeAddKeyPartsWithTimestamp( +16166: key_ + user_key_len, shared_internal_bytes_len, +16166: non_shared_len < kNumInternalBytes, +16166: shared_internal_bytes_len + non_shared_len - kNumInternalBytes, ts_sz, +16166: &next_key_slice_index, &ts_added); +16166: MaybeAddKeyPartsWithTimestamp(non_shared_data, non_shared_len, +16166: non_shared_len >= kNumInternalBytes, +16166: non_shared_len - kNumInternalBytes, ts_sz, +16166: &next_key_slice_index, &ts_added); +16166: +16166: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ts_added +16166: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "ts_added" +16166: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 696 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: } +16166: SetKeyImpl(next_key_slice_index, +16166: shared_len + non_shared_len + ts_sz); +16166: } +16166: +16166: Slice SetKeyWithPaddedMinTimestamp(const Slice& key, size_t ts_sz) { +16166: +16166: +16166: +16166: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ts_sz == sizeof(uint64_t) +16166: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "ts_sz == sizeof(uint64_t)" +16166: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 705 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: size_t num_key_slices = 0; +16166: if (is_user_key_) { +16166: key_slices_[0] = key; +16166: key_slices_[1] = Slice(kTsMin, ts_sz); +16166: num_key_slices = 2; +16166: } else { +16166: +16166: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: key.size() >= kNumInternalBytes +16166: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "key.size() >= kNumInternalBytes" +16166: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 712 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: size_t user_key_size = key.size() - kNumInternalBytes; +16166: key_slices_[0] = Slice(key.data(), user_key_size); +16166: key_slices_[1] = Slice(kTsMin, ts_sz); +16166: key_slices_[2] = Slice(key.data() + user_key_size, kNumInternalBytes); +16166: num_key_slices = 3; +16166: } +16166: return SetKeyImpl(num_key_slices, key.size() + ts_sz); +16166: } +16166: +16166: Slice SetKey(const Slice& key, bool copy = true) { +16166: +16166: return SetKeyImpl(key, copy); +16166: } +16166: +16166: +16166: +16166: +16166: Slice SetUserKey(const Slice& key, bool copy = true) { +16166: is_user_key_ = true; +16166: return SetKeyImpl(key, copy); +16166: } +16166: +16166: Slice SetInternalKey(const Slice& key, bool copy = true) { +16166: is_user_key_ = false; +16166: return SetKeyImpl(key, copy); +16166: } +16166: +16166: +16166: +16166: Slice SetInternalKey(const Slice& key, ParsedInternalKey* ikey) { +16166: size_t key_n = key.size(); +16166: +16166: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: key_n >= kNumInternalBytes +16166: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "key_n >= kNumInternalBytes" +16166: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 744 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: SetInternalKey(key); +16166: ikey->user_key = Slice(key_, key_n - kNumInternalBytes); +16166: return Slice(key_, key_n); +16166: } +16166: +16166: +16166: +16166: void UpdateInternalKey(uint64_t seq, ValueType t, const Slice* ts = nullptr) { +16166: +16166: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: !IsKeyPinned() +16166: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "!IsKeyPinned()" +16166: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 753 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: +16166: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: key_size_ >= kNumInternalBytes +16166: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "key_size_ >= kNumInternalBytes" +16166: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 754 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: if (ts) { +16166: +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: key_size_ >= kNumInternalBytes + ts->size() +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "key_size_ >= kNumInternalBytes + ts->size()" +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 756 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: memcpy(&buf_[key_size_ - kNumInternalBytes - ts->size()], ts->data(), +16166: ts->size()); +16166: } +16166: uint64_t newval = (seq << 8) | t; +16166: if (key_ == buf_) { +16166: EncodeFixed64(&buf_[key_size_ - kNumInternalBytes], newval); +16166: } else { +16166: +16166: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: key_ == secondary_buf_ +16166: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "key_ == secondary_buf_" +16166: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 764 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: EncodeFixed64(&secondary_buf_[key_size_ - kNumInternalBytes], newval); +16166: } +16166: } +16166: +16166: bool IsKeyPinned() const { return key_ != buf_ && key_ != secondary_buf_; } +16166: +16166: +16166: +16166: +16166: void SetInternalKey(const Slice& key_prefix, const Slice& user_key, +16166: SequenceNumber s, +16166: ValueType value_type = kValueTypeForSeek, +16166: const Slice* ts = nullptr) { +16166: size_t psize = key_prefix.size(); +16166: size_t usize = user_key.size(); +16166: size_t ts_sz = (ts != nullptr ? ts->size() : 0); +16166: EnlargeBufferIfNeeded(psize + usize + sizeof(uint64_t) + ts_sz); +16166: if (psize > 0) { +16166: memcpy(buf_, key_prefix.data(), psize); +16166: } +16166: memcpy(buf_ + psize, user_key.data(), usize); +16166: if (ts) { +16166: memcpy(buf_ + psize + usize, ts->data(), ts_sz); +16166: } +16166: EncodeFixed64(buf_ + usize + psize + ts_sz, +16166: PackSequenceAndType(s, value_type)); +16166: +16166: key_ = buf_; +16166: key_size_ = psize + usize + sizeof(uint64_t) + ts_sz; +16166: is_user_key_ = false; +16166: } +16166: +16166: void SetInternalKey(const Slice& user_key, SequenceNumber s, +16166: ValueType value_type = kValueTypeForSeek, +16166: const Slice* ts = nullptr) { +16166: SetInternalKey(Slice(), user_key, s, value_type, ts); +16166: } +16166: +16166: void Reserve(size_t size) { +16166: EnlargeBufferIfNeeded(size); +16166: key_size_ = size; +16166: } +16166: +16166: void SetInternalKey(const ParsedInternalKey& parsed_key) { +16166: SetInternalKey(Slice(), parsed_key); +16166: } +16166: +16166: void SetInternalKey(const Slice& key_prefix, +16166: const ParsedInternalKey& parsed_key_suffix) { +16166: SetInternalKey(key_prefix, parsed_key_suffix.user_key, +16166: parsed_key_suffix.sequence, parsed_key_suffix.type); +16166: } +16166: +16166: void EncodeLengthPrefixedKey(const Slice& key) { +16166: auto size = key.size(); +16166: EnlargeBufferIfNeeded(size + static_cast(VarintLength(size))); +16166: char* ptr = EncodeVarint32(buf_, static_cast(size)); +16166: memcpy(ptr, key.data(), size); +16166: key_ = buf_; +16166: is_user_key_ = true; +16166: } +16166: +16166: bool IsUserKey() const { return is_user_key_; } +16166: +16166: private: +16166: char* buf_; +16166: const char* key_; +16166: size_t key_size_; +16166: size_t buf_size_; +16166: char space_[kInlineBufferSize]; +16166: bool is_user_key_; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: char space_for_secondary_buf_[kInlineBufferSize]; +16166: +16166: char* secondary_buf_; +16166: size_t secondary_buf_size_; +16166: +16166: +16166: +16166: std::array key_slices_; +16166: +16166: +16166: Slice SetKeyImpl(const Slice& key, bool copy) { +16166: size_t size = key.size(); +16166: if (copy) { +16166: +16166: EnlargeBufferIfNeeded(size); +16166: memcpy(buf_, key.data(), size); +16166: key_ = buf_; +16166: } else { +16166: +16166: key_ = key.data(); +16166: } +16166: key_size_ = size; +16166: return Slice(key_, key_size_); +16166: } +16166: +16166: Slice SetKeyImpl(size_t num_key_slices, size_t total_bytes) { +16166: +16166: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: num_key_slices <= 5 +16166: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "num_key_slices <= 5" +16166: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 869 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: char* buf_start = nullptr; +16166: if (key_ == buf_) { +16166: +16166: +16166: EnlargeSecondaryBufferIfNeeded(total_bytes); +16166: buf_start = secondary_buf_; +16166: key_ = secondary_buf_; +16166: } else { +16166: +16166: EnlargeBufferIfNeeded(total_bytes); +16166: buf_start = buf_; +16166: key_ = buf_; +16166: } +16166: +16166: size_t actual_total_bytes = 0; +16166: +16166: for (size_t i = 0; i < num_key_slices; i++) { +16166: size_t key_slice_size = key_slices_[i].size(); +16166: memcpy(buf_start, key_slices_[i].data(), key_slice_size); +16166: buf_start += key_slice_size; +16166: +16166: actual_total_bytes += key_slice_size; +16166: +16166: } +16166: +16166: +16166: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: actual_total_bytes == total_bytes +16166: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "actual_total_bytes == total_bytes" +16166: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 895 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: +16166: key_size_ = total_bytes; +16166: return Slice(key_, key_size_); +16166: } +16166: +16166: void ResetBuffer() { +16166: if (key_ == buf_) { +16166: key_size_ = 0; +16166: } +16166: if (buf_ != space_) { +16166: delete[] buf_; +16166: buf_ = space_; +16166: } +16166: buf_size_ = kInlineBufferSize; +16166: } +16166: +16166: void ResetSecondaryBuffer() { +16166: if (key_ == secondary_buf_) { +16166: key_size_ = 0; +16166: } +16166: if (secondary_buf_ != space_for_secondary_buf_) { +16166: delete[] secondary_buf_; +16166: secondary_buf_ = space_for_secondary_buf_; +16166: } +16166: secondary_buf_size_ = kInlineBufferSize; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void EnlargeBufferIfNeeded(size_t key_size) { +16166: +16166: +16166: if (key_size > buf_size_) { +16166: EnlargeBuffer(key_size); +16166: } +16166: } +16166: +16166: void EnlargeSecondaryBufferIfNeeded(size_t key_size); +16166: +16166: void EnlargeBuffer(size_t key_size); +16166: +16166: void MaybeAddKeyPartsWithTimestamp(const char* slice_data, +16166: const size_t slice_sz, bool add_timestamp, +16166: const size_t left_sz, const size_t ts_sz, +16166: size_t* next_key_slice_idx, +16166: bool* ts_added) { +16166: +16166: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: next_key_slice_idx +16166: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "next_key_slice_idx" +16166: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 945 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: if (add_timestamp && !*ts_added) { +16166: +16166: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: slice_sz >= left_sz +16166: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "slice_sz >= left_sz" +16166: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 947 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: key_slices_[(*next_key_slice_idx)++] = Slice(slice_data, left_sz); +16166: key_slices_[(*next_key_slice_idx)++] = Slice(kTsMin, ts_sz); +16166: key_slices_[(*next_key_slice_idx)++] = +16166: Slice(slice_data + left_sz, slice_sz - left_sz); +16166: *ts_added = true; +16166: } else { +16166: key_slices_[(*next_key_slice_idx)++] = Slice(slice_data, slice_sz); +16166: } +16166: +16166: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: *next_key_slice_idx <= 5 +16166: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "*next_key_slice_idx <= 5" +16166: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 956 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: } +16166: }; +16166: +16166: +16166: +16166: class InternalKeySliceTransform : public SliceTransform { +16166: public: +16166: explicit InternalKeySliceTransform(const SliceTransform* transform) +16166: : transform_(transform) {} +16166: +16166: const char* Name() const override { return transform_->Name(); } +16166: +16166: Slice Transform(const Slice& src) const override { +16166: auto user_key = ExtractUserKey(src); +16166: return transform_->Transform(user_key); +16166: } +16166: +16166: bool InDomain(const Slice& src) const override { +16166: auto user_key = ExtractUserKey(src); +16166: return transform_->InDomain(user_key); +16166: } +16166: +16166: bool InRange(const Slice& dst) const override { +16166: auto user_key = ExtractUserKey(dst); +16166: return transform_->InRange(user_key); +16166: } +16166: +16166: const SliceTransform* user_prefix_extractor() const { return transform_; } +16166: +16166: private: +16166: +16166: +16166: const SliceTransform* const transform_; +16166: }; +16166: +16166: +16166: +16166: +16166: bool ReadKeyFromWriteBatchEntry(Slice* input, Slice* key, bool cf_record); +16166: # 1004 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: Status ReadRecordFromWriteBatch(Slice* input, char* tag, +16166: uint32_t* column_family, Slice* key, +16166: Slice* value, Slice* blob, Slice* xid, +16166: uint64_t* write_unix_time); +16166: +16166: +16166: +16166: +16166: +16166: struct RangeTombstone { +16166: Slice start_key_; +16166: Slice end_key_; +16166: SequenceNumber seq_; +16166: +16166: +16166: Slice ts_; +16166: std::string pinned_start_key_; +16166: std::string pinned_end_key_; +16166: +16166: RangeTombstone() = default; +16166: RangeTombstone(Slice sk, Slice ek, SequenceNumber sn) +16166: : start_key_(sk), end_key_(ek), seq_(sn) {} +16166: +16166: +16166: +16166: +16166: RangeTombstone(Slice sk, Slice ek, SequenceNumber sn, Slice ts) : seq_(sn) { +16166: const size_t ts_sz = ts.size(); +16166: +16166: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: (static_cast ( +16166: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ts_sz > 0 +16166: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: "ts_sz > 0" +16166: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1032 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: ; +16166: pinned_start_key_.reserve(sk.size()); +16166: pinned_end_key_.reserve(ek.size()); +16166: AppendUserKeyWithDifferentTimestamp(&pinned_start_key_, sk, ts); +16166: AppendUserKeyWithDifferentTimestamp(&pinned_end_key_, ek, ts); +16166: start_key_ = pinned_start_key_; +16166: end_key_ = pinned_end_key_; +16166: ts_ = Slice(pinned_start_key_.data() + sk.size() - ts_sz, ts_sz); +16166: } +16166: +16166: RangeTombstone(ParsedInternalKey parsed_key, Slice value) { +16166: start_key_ = parsed_key.user_key; +16166: seq_ = parsed_key.sequence; +16166: end_key_ = value; +16166: } +16166: +16166: +16166: std::pair Serialize() const { +16166: auto key = InternalKey(start_key_, seq_, kTypeRangeDeletion); +16166: return std::make_pair(std::move(key), end_key_); +16166: } +16166: +16166: +16166: InternalKey SerializeKey() const { +16166: return InternalKey(start_key_, seq_, kTypeRangeDeletion); +16166: } +16166: # 1066 "/build/reproducible-path/rocksdb-9.10.0/db/dbformat.h" +16166: InternalKey SerializeEndKey() const { +16166: if (!ts_.empty()) { +16166: static constexpr char kTsMax[] = "\xff\xff\xff\xff\xff\xff\xff\xff\xff"; +16166: if (ts_.size() <= strlen(kTsMax)) { +16166: return InternalKey(end_key_, kMaxSequenceNumber, kTypeRangeDeletion, +16166: Slice(kTsMax, ts_.size())); +16166: } else { +16166: return InternalKey(end_key_, kMaxSequenceNumber, kTypeRangeDeletion, +16166: std::string(ts_.size(), '\xff')); +16166: } +16166: } +16166: return InternalKey(end_key_, kMaxSequenceNumber, kTypeRangeDeletion); +16166: } +16166: }; +16166: +16166: inline int InternalKeyComparator::Compare(const Slice& akey, +16166: const Slice& bkey) const { +16166: +16166: +16166: +16166: +16166: int r = user_comparator_.Compare(ExtractUserKey(akey), ExtractUserKey(bkey)); +16166: if (r == 0) { +16166: const uint64_t anum = +16166: DecodeFixed64(akey.data() + akey.size() - kNumInternalBytes); +16166: const uint64_t bnum = +16166: DecodeFixed64(bkey.data() + bkey.size() - kNumInternalBytes); +16166: if (anum > bnum) { +16166: r = -1; +16166: } else if (anum < bnum) { +16166: r = +1; +16166: } +16166: } +16166: return r; +16166: } +16166: +16166: inline int InternalKeyComparator::CompareKeySeq(const Slice& akey, +16166: const Slice& bkey) const { +16166: +16166: +16166: +16166: int r = user_comparator_.Compare(ExtractUserKey(akey), ExtractUserKey(bkey)); +16166: if (r == 0) { +16166: +16166: const uint64_t anum = +16166: DecodeFixed64(akey.data() + akey.size() - kNumInternalBytes) >> 8; +16166: const uint64_t bnum = +16166: DecodeFixed64(bkey.data() + bkey.size() - kNumInternalBytes) >> 8; +16166: if (anum > bnum) { +16166: r = -1; +16166: } else if (anum < bnum) { +16166: r = +1; +16166: } +16166: } +16166: return r; +16166: } +16166: +16166: inline int InternalKeyComparator::CompareKeySeq(const ParsedInternalKey& a, +16166: const Slice& b) const { +16166: +16166: +16166: +16166: int r = user_comparator_.Compare(a.user_key, ExtractUserKey(b)); +16166: if (r == 0) { +16166: +16166: const uint64_t anum = a.sequence; +16166: const uint64_t bnum = +16166: DecodeFixed64(b.data() + b.size() - kNumInternalBytes) >> 8; +16166: if (anum > bnum) { +16166: r = -1; +16166: } else if (anum < bnum) { +16166: r = +1; +16166: } +16166: } +16166: return r; +16166: } +16166: +16166: inline int InternalKeyComparator::Compare(const Slice& a, +16166: SequenceNumber a_global_seqno, +16166: const Slice& b, +16166: SequenceNumber b_global_seqno) const { +16166: int r = user_comparator_.Compare(ExtractUserKey(a), ExtractUserKey(b)); +16166: if (r == 0) { +16166: uint64_t a_footer, b_footer; +16166: if (a_global_seqno == kDisableGlobalSequenceNumber) { +16166: a_footer = ExtractInternalKeyFooter(a); +16166: } else { +16166: a_footer = PackSequenceAndType(a_global_seqno, ExtractValueType(a)); +16166: } +16166: if (b_global_seqno == kDisableGlobalSequenceNumber) { +16166: b_footer = ExtractInternalKeyFooter(b); +16166: } else { +16166: b_footer = PackSequenceAndType(b_global_seqno, ExtractValueType(b)); +16166: } +16166: if (a_footer > b_footer) { +16166: r = -1; +16166: } else if (a_footer < b_footer) { +16166: r = +1; +16166: } +16166: } +16166: return r; +16166: } +16166: +16166: +16166: struct ParsedInternalKeyComparator { +16166: explicit ParsedInternalKeyComparator(const InternalKeyComparator* c) +16166: : cmp(c) {} +16166: +16166: bool operator()(const ParsedInternalKey& a, +16166: const ParsedInternalKey& b) const { +16166: return cmp->Compare(a, b) < 0; +16166: } +16166: +16166: const InternalKeyComparator* cmp; +16166: }; +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 1 +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: template +16166: class ProtectionInfo; +16166: template +16166: class ProtectionInfoKVO; +16166: template +16166: class ProtectionInfoKVOC; +16166: template +16166: class ProtectionInfoKVOS; +16166: template +16166: class ProtectionInfoKV; +16166: +16166: +16166: using ProtectionInfo64 = ProtectionInfo; +16166: using ProtectionInfoKVO64 = ProtectionInfoKVO; +16166: using ProtectionInfoKVOC64 = ProtectionInfoKVOC; +16166: using ProtectionInfoKVOS64 = ProtectionInfoKVOS; +16166: +16166: template +16166: class ProtectionInfo { +16166: public: +16166: ProtectionInfo() = default; +16166: +16166: Status GetStatus() const; +16166: ProtectionInfoKVO ProtectKVO(const Slice& key, const Slice& value, +16166: ValueType op_type) const; +16166: ProtectionInfoKVO ProtectKVO(const SliceParts& key, +16166: const SliceParts& value, +16166: ValueType op_type) const; +16166: ProtectionInfoKV ProtectKV(const Slice& key, const Slice& value) const; +16166: +16166: private: +16166: friend class ProtectionInfoKVO; +16166: friend class ProtectionInfoKVOS; +16166: friend class ProtectionInfoKVOC; +16166: friend class ProtectionInfoKV; +16166: # 84 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: static const uint64_t kSeedK = 0; +16166: static const uint64_t kSeedV = 0xD28AAD72F49BD50B; +16166: static const uint64_t kSeedO = 0xA5155AE5E937AA16; +16166: static const uint64_t kSeedS = 0x77A00858DDD37F21; +16166: static const uint64_t kSeedC = 0x4A2AB5CBD26F542C; +16166: +16166: ProtectionInfo(T val) : val_(val) { +16166: static_assert(sizeof(ProtectionInfo) == sizeof(T), ""); +16166: } +16166: +16166: T GetVal() const { return val_; } +16166: void SetVal(T val) { val_ = val; } +16166: +16166: void Encode(uint8_t len, char* dst) const { +16166: +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: (static_cast ( +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: sizeof(val_) >= len +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: "sizeof(val_) >= len" +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: ; +16166: switch (len) { +16166: case 1: +16166: dst[0] = static_cast(val_); +16166: break; +16166: case 2: +16166: EncodeFixed16(dst, static_cast(val_)); +16166: break; +16166: case 4: +16166: EncodeFixed32(dst, static_cast(val_)); +16166: break; +16166: case 8: +16166: EncodeFixed64(dst, static_cast(val_)); +16166: break; +16166: default: +16166: +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: (static_cast ( +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: false +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: "false" +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: ; +16166: } +16166: } +16166: +16166: bool Verify(uint8_t len, const char* checksum_ptr) const { +16166: +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: (static_cast ( +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: sizeof(val_) >= len +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: "sizeof(val_) >= len" +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: ; +16166: switch (len) { +16166: case 1: +16166: return static_cast(checksum_ptr[0]) == +16166: static_cast(val_); +16166: case 2: +16166: return DecodeFixed16(checksum_ptr) == static_cast(val_); +16166: case 4: +16166: return DecodeFixed32(checksum_ptr) == static_cast(val_); +16166: case 8: +16166: return DecodeFixed64(checksum_ptr) == static_cast(val_); +16166: default: +16166: +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: (static_cast ( +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: false +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: "false" +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/db/kv_checksum.h" +16166: ; +16166: return false; +16166: } +16166: } +16166: +16166: T val_ = 0; +16166: }; +16166: +16166: template +16166: class ProtectionInfoKVO { +16166: public: +16166: ProtectionInfoKVO() = default; +16166: +16166: ProtectionInfo StripKVO(const Slice& key, const Slice& value, +16166: ValueType op_type) const; +16166: ProtectionInfo StripKVO(const SliceParts& key, const SliceParts& value, +16166: ValueType op_type) const; +16166: +16166: ProtectionInfoKVOC ProtectC(ColumnFamilyId column_family_id) const; +16166: ProtectionInfoKVOS ProtectS(SequenceNumber sequence_number) const; +16166: +16166: void UpdateK(const Slice& old_key, const Slice& new_key); +16166: void UpdateK(const SliceParts& old_key, const SliceParts& new_key); +16166: void UpdateV(const Slice& old_value, const Slice& new_value); +16166: void UpdateV(const SliceParts& old_value, const SliceParts& new_value); +16166: void UpdateO(ValueType old_op_type, ValueType new_op_type); +16166: +16166: +16166: void Encode(uint8_t len, char* dst) const { info_.Encode(len, dst); } +16166: +16166: +16166: +16166: bool Verify(uint8_t len, const char* checksum_ptr) const { +16166: return info_.Verify(len, checksum_ptr); +16166: } +16166: +16166: private: +16166: friend class ProtectionInfo; +16166: friend class ProtectionInfoKVOS; +16166: friend class ProtectionInfoKVOC; +16166: +16166: explicit ProtectionInfoKVO(T val) : info_(val) { +16166: static_assert(sizeof(ProtectionInfoKVO) == sizeof(T), ""); +16166: } +16166: +16166: T GetVal() const { return info_.GetVal(); } +16166: void SetVal(T val) { info_.SetVal(val); } +16166: +16166: ProtectionInfo info_; +16166: }; +16166: +16166: template +16166: class ProtectionInfoKVOC { +16166: public: +16166: ProtectionInfoKVOC() = default; +16166: +16166: ProtectionInfoKVO StripC(ColumnFamilyId column_family_id) const; +16166: +16166: void UpdateK(const Slice& old_key, const Slice& new_key) { +16166: kvo_.UpdateK(old_key, new_key); +16166: } +16166: void UpdateK(const SliceParts& old_key, const SliceParts& new_key) { +16166: kvo_.UpdateK(old_key, new_key); +16166: } +16166: void UpdateV(const Slice& old_value, const Slice& new_value) { +16166: kvo_.UpdateV(old_value, new_value); +16166: } +16166: void UpdateV(const SliceParts& old_value, const SliceParts& new_value) { +16166: kvo_.UpdateV(old_value, new_value); +16166: } +16166: void UpdateO(ValueType old_op_type, ValueType new_op_type) { +16166: kvo_.UpdateO(old_op_type, new_op_type); +16166: } +16166: void UpdateC(ColumnFamilyId old_column_family_id, +16166: ColumnFamilyId new_column_family_id); +16166: +16166: void Encode(uint8_t len, char* dst) const { kvo_.Encode(len, dst); } +16166: bool Verify(uint8_t len, const char* checksum_ptr) const { +16166: return kvo_.Verify(len, checksum_ptr); +16166: } +16166: +16166: private: +16166: friend class ProtectionInfoKVO; +16166: +16166: explicit ProtectionInfoKVOC(T val) : kvo_(val) { +16166: static_assert(sizeof(ProtectionInfoKVOC) == sizeof(T), ""); +16166: } +16166: +16166: T GetVal() const { return kvo_.GetVal(); } +16166: void SetVal(T val) { kvo_.SetVal(val); } +16166: +16166: ProtectionInfoKVO kvo_; +16166: }; +16166: +16166: template +16166: class ProtectionInfoKVOS { +16166: public: +16166: ProtectionInfoKVOS() = default; +16166: +16166: ProtectionInfoKVO StripS(SequenceNumber sequence_number) const; +16166: +16166: void UpdateK(const Slice& old_key, const Slice& new_key) { +16166: kvo_.UpdateK(old_key, new_key); +16166: } +16166: void UpdateK(const SliceParts& old_key, const SliceParts& new_key) { +16166: kvo_.UpdateK(old_key, new_key); +16166: } +16166: void UpdateV(const Slice& old_value, const Slice& new_value) { +16166: kvo_.UpdateV(old_value, new_value); +16166: } +16166: void UpdateV(const SliceParts& old_value, const SliceParts& new_value) { +16166: kvo_.UpdateV(old_value, new_value); +16166: } +16166: void UpdateO(ValueType old_op_type, ValueType new_op_type) { +16166: kvo_.UpdateO(old_op_type, new_op_type); +16166: } +16166: void UpdateS(SequenceNumber old_sequence_number, +16166: SequenceNumber new_sequence_number); +16166: +16166: void Encode(uint8_t len, char* dst) const { kvo_.Encode(len, dst); } +16166: bool Verify(uint8_t len, const char* checksum_ptr) const { +16166: return kvo_.Verify(len, checksum_ptr); +16166: } +16166: +16166: private: +16166: friend class ProtectionInfoKVO; +16166: +16166: explicit ProtectionInfoKVOS(T val) : kvo_(val) { +16166: static_assert(sizeof(ProtectionInfoKVOS) == sizeof(T), ""); +16166: } +16166: +16166: T GetVal() const { return kvo_.GetVal(); } +16166: void SetVal(T val) { kvo_.SetVal(val); } +16166: +16166: ProtectionInfoKVO kvo_; +16166: }; +16166: +16166: template +16166: class ProtectionInfoKV { +16166: public: +16166: ProtectionInfoKV() = default; +16166: +16166: void Encode(uint8_t len, char* dst) const { info_.Encode(len, dst); } +16166: bool Verify(uint8_t len, const char* checksum_ptr) const { +16166: return info_.Verify(len, checksum_ptr); +16166: } +16166: +16166: private: +16166: friend class ProtectionInfo; +16166: +16166: explicit ProtectionInfoKV(T val) : info_(val) { +16166: static_assert(sizeof(ProtectionInfoKV) == sizeof(T)); +16166: } +16166: +16166: ProtectionInfo info_; +16166: }; +16166: +16166: template +16166: Status ProtectionInfo::GetStatus() const { +16166: if (val_ != 0) { +16166: return Status::Corruption("ProtectionInfo mismatch"); +16166: } +16166: return Status::OK(); +16166: } +16166: +16166: template +16166: ProtectionInfoKVO ProtectionInfo::ProtectKVO(const Slice& key, +16166: const Slice& value, +16166: ValueType op_type) const { +16166: T val = GetVal(); +16166: val = val ^ static_cast(GetSliceNPHash64(key, ProtectionInfo::kSeedK)); +16166: val = +16166: val ^ static_cast(GetSliceNPHash64(value, ProtectionInfo::kSeedV)); +16166: val = val ^ +16166: static_cast(NPHash64(reinterpret_cast(&op_type), +16166: sizeof(op_type), ProtectionInfo::kSeedO)); +16166: return ProtectionInfoKVO(val); +16166: } +16166: +16166: template +16166: ProtectionInfoKVO ProtectionInfo::ProtectKVO(const SliceParts& key, +16166: const SliceParts& value, +16166: ValueType op_type) const { +16166: T val = GetVal(); +16166: val = val ^ +16166: static_cast(GetSlicePartsNPHash64(key, ProtectionInfo::kSeedK)); +16166: val = val ^ +16166: static_cast(GetSlicePartsNPHash64(value, ProtectionInfo::kSeedV)); +16166: val = val ^ +16166: static_cast(NPHash64(reinterpret_cast(&op_type), +16166: sizeof(op_type), ProtectionInfo::kSeedO)); +16166: return ProtectionInfoKVO(val); +16166: } +16166: +16166: template +16166: ProtectionInfoKV ProtectionInfo::ProtectKV(const Slice& key, +16166: const Slice& value) const { +16166: T val = GetVal(); +16166: val = val ^ static_cast(GetSliceNPHash64(key, ProtectionInfo::kSeedK)); +16166: val = +16166: val ^ static_cast(GetSliceNPHash64(value, ProtectionInfo::kSeedV)); +16166: return ProtectionInfoKV(val); +16166: } +16166: +16166: template +16166: void ProtectionInfoKVO::UpdateK(const Slice& old_key, const Slice& new_key) { +16166: T val = GetVal(); +16166: val = val ^ +16166: static_cast(GetSliceNPHash64(old_key, ProtectionInfo::kSeedK)); +16166: val = val ^ +16166: static_cast(GetSliceNPHash64(new_key, ProtectionInfo::kSeedK)); +16166: SetVal(val); +16166: } +16166: +16166: template +16166: void ProtectionInfoKVO::UpdateK(const SliceParts& old_key, +16166: const SliceParts& new_key) { +16166: T val = GetVal(); +16166: val = val ^ static_cast( +16166: GetSlicePartsNPHash64(old_key, ProtectionInfo::kSeedK)); +16166: val = val ^ static_cast( +16166: GetSlicePartsNPHash64(new_key, ProtectionInfo::kSeedK)); +16166: SetVal(val); +16166: } +16166: +16166: template +16166: void ProtectionInfoKVO::UpdateV(const Slice& old_value, +16166: const Slice& new_value) { +16166: T val = GetVal(); +16166: val = val ^ +16166: static_cast(GetSliceNPHash64(old_value, ProtectionInfo::kSeedV)); +16166: val = val ^ +16166: static_cast(GetSliceNPHash64(new_value, ProtectionInfo::kSeedV)); +16166: SetVal(val); +16166: } +16166: +16166: template +16166: void ProtectionInfoKVO::UpdateV(const SliceParts& old_value, +16166: const SliceParts& new_value) { +16166: T val = GetVal(); +16166: val = val ^ static_cast( +16166: GetSlicePartsNPHash64(old_value, ProtectionInfo::kSeedV)); +16166: val = val ^ static_cast( +16166: GetSlicePartsNPHash64(new_value, ProtectionInfo::kSeedV)); +16166: SetVal(val); +16166: } +16166: +16166: template +16166: void ProtectionInfoKVO::UpdateO(ValueType old_op_type, +16166: ValueType new_op_type) { +16166: T val = GetVal(); +16166: val = val ^ static_cast(NPHash64(reinterpret_cast(&old_op_type), +16166: sizeof(old_op_type), +16166: ProtectionInfo::kSeedO)); +16166: val = val ^ static_cast(NPHash64(reinterpret_cast(&new_op_type), +16166: sizeof(new_op_type), +16166: ProtectionInfo::kSeedO)); +16166: SetVal(val); +16166: } +16166: +16166: template +16166: ProtectionInfo ProtectionInfoKVO::StripKVO(const Slice& key, +16166: const Slice& value, +16166: ValueType op_type) const { +16166: T val = GetVal(); +16166: val = val ^ static_cast(GetSliceNPHash64(key, ProtectionInfo::kSeedK)); +16166: val = +16166: val ^ static_cast(GetSliceNPHash64(value, ProtectionInfo::kSeedV)); +16166: val = val ^ +16166: static_cast(NPHash64(reinterpret_cast(&op_type), +16166: sizeof(op_type), ProtectionInfo::kSeedO)); +16166: return ProtectionInfo(val); +16166: } +16166: +16166: template +16166: ProtectionInfo ProtectionInfoKVO::StripKVO(const SliceParts& key, +16166: const SliceParts& value, +16166: ValueType op_type) const { +16166: T val = GetVal(); +16166: val = val ^ +16166: static_cast(GetSlicePartsNPHash64(key, ProtectionInfo::kSeedK)); +16166: val = val ^ +16166: static_cast(GetSlicePartsNPHash64(value, ProtectionInfo::kSeedV)); +16166: val = val ^ +16166: static_cast(NPHash64(reinterpret_cast(&op_type), +16166: sizeof(op_type), ProtectionInfo::kSeedO)); +16166: return ProtectionInfo(val); +16166: } +16166: +16166: template +16166: ProtectionInfoKVOC ProtectionInfoKVO::ProtectC( +16166: ColumnFamilyId column_family_id) const { +16166: T val = GetVal(); +16166: val = val ^ static_cast(NPHash64( +16166: reinterpret_cast(&column_family_id), +16166: sizeof(column_family_id), ProtectionInfo::kSeedC)); +16166: return ProtectionInfoKVOC(val); +16166: } +16166: +16166: template +16166: ProtectionInfoKVO ProtectionInfoKVOC::StripC( +16166: ColumnFamilyId column_family_id) const { +16166: T val = GetVal(); +16166: val = val ^ static_cast(NPHash64( +16166: reinterpret_cast(&column_family_id), +16166: sizeof(column_family_id), ProtectionInfo::kSeedC)); +16166: return ProtectionInfoKVO(val); +16166: } +16166: +16166: template +16166: void ProtectionInfoKVOC::UpdateC(ColumnFamilyId old_column_family_id, +16166: ColumnFamilyId new_column_family_id) { +16166: T val = GetVal(); +16166: val = val ^ static_cast(NPHash64( +16166: reinterpret_cast(&old_column_family_id), +16166: sizeof(old_column_family_id), ProtectionInfo::kSeedC)); +16166: val = val ^ static_cast(NPHash64( +16166: reinterpret_cast(&new_column_family_id), +16166: sizeof(new_column_family_id), ProtectionInfo::kSeedC)); +16166: SetVal(val); +16166: } +16166: +16166: template +16166: ProtectionInfoKVOS ProtectionInfoKVO::ProtectS( +16166: SequenceNumber sequence_number) const { +16166: T val = GetVal(); +16166: val = val ^ static_cast(NPHash64(reinterpret_cast(&sequence_number), +16166: sizeof(sequence_number), +16166: ProtectionInfo::kSeedS)); +16166: return ProtectionInfoKVOS(val); +16166: } +16166: +16166: template +16166: ProtectionInfoKVO ProtectionInfoKVOS::StripS( +16166: SequenceNumber sequence_number) const { +16166: T val = GetVal(); +16166: val = val ^ static_cast(NPHash64(reinterpret_cast(&sequence_number), +16166: sizeof(sequence_number), +16166: ProtectionInfo::kSeedS)); +16166: return ProtectionInfoKVO(val); +16166: } +16166: +16166: template +16166: void ProtectionInfoKVOS::UpdateS(SequenceNumber old_sequence_number, +16166: SequenceNumber new_sequence_number) { +16166: T val = GetVal(); +16166: val = val ^ static_cast(NPHash64( +16166: reinterpret_cast(&old_sequence_number), +16166: sizeof(old_sequence_number), ProtectionInfo::kSeedS)); +16166: val = val ^ static_cast(NPHash64( +16166: reinterpret_cast(&new_sequence_number), +16166: sizeof(new_sequence_number), ProtectionInfo::kSeedS)); +16166: SetVal(val); +16166: } +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/attribute_groups.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class IteratorBase : public Cleanable { +16166: public: +16166: IteratorBase() {} +16166: +16166: IteratorBase(const IteratorBase&) = delete; +16166: void operator=(const IteratorBase&) = delete; +16166: +16166: virtual ~IteratorBase() {} +16166: +16166: +16166: +16166: +16166: virtual bool Valid() const = 0; +16166: +16166: +16166: +16166: virtual void SeekToFirst() = 0; +16166: +16166: +16166: +16166: virtual void SeekToLast() = 0; +16166: # 43 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" +16166: virtual void Seek(const Slice& target) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void SeekForPrev(const Slice& target) = 0; +16166: +16166: +16166: +16166: +16166: virtual void Next() = 0; +16166: +16166: +16166: +16166: +16166: virtual void Prev() = 0; +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" +16166: virtual Status Refresh() { return Refresh(nullptr); } +16166: +16166: +16166: +16166: virtual Status Refresh(const class Snapshot*) { +16166: return Status::NotSupported("Refresh() is not supported"); +16166: } +16166: # 96 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator_base.h" +16166: virtual bool PrepareValue() { return true; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Slice key() const = 0; +16166: +16166: +16166: +16166: +16166: virtual Status status() const = 0; +16166: }; +16166: +16166: } +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/attribute_groups.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/ostream" 1 3 +16166: # 36 "/usr/include/c++/14/ostream" 3 +16166: +16166: # 37 "/usr/include/c++/14/ostream" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/ios" 1 3 +16166: # 36 "/usr/include/c++/14/ios" 3 +16166: +16166: # 37 "/usr/include/c++/14/ios" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/ios_base.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/locale_classes.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: # 47 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: +16166: # 47 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 66 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: class locale +16166: { +16166: public: +16166: +16166: +16166: typedef int category; +16166: +16166: +16166: class facet; +16166: class id; +16166: class _Impl; +16166: +16166: friend class facet; +16166: friend class _Impl; +16166: +16166: template +16166: friend bool +16166: has_facet(const locale&) throw(); +16166: +16166: template +16166: friend const _Facet& +16166: use_facet(const locale&); +16166: +16166: template +16166: friend const _Facet* +16166: __try_use_facet(const locale&) noexcept; +16166: +16166: template +16166: friend struct __use_cache; +16166: # 106 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: static const category none = 0; +16166: static const category ctype = 1L << 0; +16166: static const category numeric = 1L << 1; +16166: static const category collate = 1L << 2; +16166: static const category time = 1L << 3; +16166: static const category monetary = 1L << 4; +16166: static const category messages = 1L << 5; +16166: static const category all = (ctype | numeric | collate | +16166: time | monetary | messages); +16166: # 125 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: locale() throw(); +16166: # 134 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: locale(const locale& __other) throw(); +16166: # 144 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: explicit +16166: locale(const char* __s); +16166: # 159 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: locale(const locale& __base, const char* __s, category __cat); +16166: # 170 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: explicit +16166: locale(const std::string& __s) : locale(__s.c_str()) { } +16166: # 185 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: locale(const locale& __base, const std::string& __s, category __cat) +16166: : locale(__base, __s.c_str(), __cat) { } +16166: # 200 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: locale(const locale& __base, const locale& __add, category __cat); +16166: # 213 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: template +16166: locale(const locale& __other, _Facet* __f); +16166: +16166: +16166: ~locale() throw(); +16166: # 227 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: const locale& +16166: operator=(const locale& __other) throw(); +16166: # 242 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: locale +16166: combine(const locale& __other) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] __attribute ((__abi_tag__ ("cxx11"))) +16166: string +16166: name() const; +16166: # 273 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: [[__nodiscard__]] +16166: bool +16166: operator==(const locale& __other) const throw(); +16166: # 284 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: [[__nodiscard__]] +16166: bool +16166: operator!=(const locale& __other) const throw() +16166: { return !(this->operator==(__other)); } +16166: # 305 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: bool +16166: operator()(const basic_string<_Char, _Traits, _Alloc>& __s1, +16166: const basic_string<_Char, _Traits, _Alloc>& __s2) const; +16166: # 322 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: static locale +16166: global(const locale& __loc); +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: static const locale& +16166: classic(); +16166: +16166: private: +16166: +16166: _Impl* _M_impl; +16166: +16166: +16166: static _Impl* _S_classic; +16166: +16166: +16166: static _Impl* _S_global; +16166: +16166: +16166: +16166: +16166: +16166: static const char* const* const _S_categories; +16166: # 358 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: enum { _S_categories_size = 6 + 6 }; +16166: +16166: +16166: static __gthread_once_t _S_once; +16166: +16166: +16166: explicit +16166: locale(_Impl*) throw(); +16166: +16166: static void +16166: _S_initialize(); +16166: +16166: static void +16166: _S_initialize_once() throw(); +16166: +16166: static category +16166: _S_normalize_category(category); +16166: +16166: void +16166: _M_coalesce(const locale& __base, const locale& __add, category __cat); +16166: +16166: +16166: static const id* const _S_twinned_facets[]; +16166: +16166: }; +16166: # 396 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: class locale::facet +16166: { +16166: private: +16166: friend class locale; +16166: friend class locale::_Impl; +16166: +16166: mutable _Atomic_word _M_refcount; +16166: +16166: +16166: static __c_locale _S_c_locale; +16166: +16166: +16166: static const char _S_c_name[2]; +16166: +16166: +16166: static __gthread_once_t _S_once; +16166: +16166: +16166: static void +16166: _S_initialize_once(); +16166: +16166: protected: +16166: # 427 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: explicit +16166: facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0) +16166: { } +16166: +16166: +16166: virtual +16166: ~facet(); +16166: +16166: static void +16166: _S_create_c_locale(__c_locale& __cloc, const char* __s, +16166: __c_locale __old = 0); +16166: +16166: static __c_locale +16166: _S_clone_c_locale(__c_locale& __cloc) throw(); +16166: +16166: static void +16166: _S_destroy_c_locale(__c_locale& __cloc); +16166: +16166: static __c_locale +16166: _S_lc_ctype_c_locale(__c_locale __cloc, const char* __s); +16166: +16166: +16166: +16166: static __c_locale +16166: _S_get_c_locale(); +16166: +16166: __attribute__ ((__const__)) static const char* +16166: _S_get_c_name() throw(); +16166: # 463 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: facet(const facet&) = delete; +16166: +16166: facet& +16166: operator=(const facet&) = delete; +16166: +16166: +16166: private: +16166: void +16166: _M_add_reference() const throw() +16166: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } +16166: +16166: void +16166: _M_remove_reference() const throw() +16166: { +16166: +16166: ; +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) +16166: { +16166: ; +16166: try +16166: { delete this; } +16166: catch(...) +16166: { } +16166: } +16166: } +16166: +16166: const facet* _M_sso_shim(const id*) const; +16166: const facet* _M_cow_shim(const id*) const; +16166: +16166: protected: +16166: class __shim; +16166: }; +16166: # 508 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: class locale::id +16166: { +16166: private: +16166: friend class locale; +16166: friend class locale::_Impl; +16166: +16166: template +16166: friend const _Facet& +16166: use_facet(const locale&); +16166: +16166: template +16166: friend bool +16166: has_facet(const locale&) throw(); +16166: +16166: template +16166: friend const _Facet* +16166: __try_use_facet(const locale&) noexcept; +16166: +16166: +16166: +16166: +16166: mutable size_t _M_index; +16166: +16166: +16166: static _Atomic_word _S_refcount; +16166: +16166: void +16166: operator=(const id&); +16166: +16166: id(const id&); +16166: +16166: public: +16166: +16166: +16166: +16166: id() { } +16166: +16166: size_t +16166: _M_id() const throw(); +16166: }; +16166: +16166: +16166: +16166: class locale::_Impl +16166: { +16166: public: +16166: +16166: friend class locale; +16166: friend class locale::facet; +16166: +16166: template +16166: friend bool +16166: has_facet(const locale&) throw(); +16166: +16166: template +16166: friend const _Facet& +16166: use_facet(const locale&); +16166: +16166: template +16166: friend const _Facet* +16166: __try_use_facet(const locale&) noexcept; +16166: +16166: template +16166: friend struct __use_cache; +16166: +16166: private: +16166: +16166: _Atomic_word _M_refcount; +16166: const facet** _M_facets; +16166: size_t _M_facets_size; +16166: const facet** _M_caches; +16166: char** _M_names; +16166: static const locale::id* const _S_id_ctype[]; +16166: static const locale::id* const _S_id_numeric[]; +16166: static const locale::id* const _S_id_collate[]; +16166: static const locale::id* const _S_id_time[]; +16166: static const locale::id* const _S_id_monetary[]; +16166: static const locale::id* const _S_id_messages[]; +16166: static const locale::id* const* const _S_facet_categories[]; +16166: +16166: void +16166: _M_add_reference() throw() +16166: { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } +16166: +16166: void +16166: _M_remove_reference() throw() +16166: { +16166: +16166: ; +16166: if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1) +16166: { +16166: ; +16166: try +16166: { delete this; } +16166: catch(...) +16166: { } +16166: } +16166: } +16166: +16166: _Impl(const _Impl&, size_t); +16166: _Impl(const char*, size_t); +16166: _Impl(size_t) throw(); +16166: +16166: ~_Impl() throw(); +16166: +16166: _Impl(const _Impl&); +16166: +16166: void +16166: operator=(const _Impl&); +16166: +16166: bool +16166: _M_check_same_name() +16166: { +16166: bool __ret = true; +16166: if (_M_names[1]) +16166: +16166: for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) +16166: __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; +16166: return __ret; +16166: } +16166: +16166: void +16166: _M_replace_categories(const _Impl*, category); +16166: +16166: void +16166: _M_replace_category(const _Impl*, const locale::id* const*); +16166: +16166: void +16166: _M_replace_facet(const _Impl*, const locale::id*); +16166: +16166: void +16166: _M_install_facet(const locale::id*, const facet*); +16166: +16166: template +16166: void +16166: _M_init_facet(_Facet* __facet) +16166: { _M_install_facet(&_Facet::id, __facet); } +16166: +16166: template +16166: void +16166: _M_init_facet_unchecked(_Facet* __facet) +16166: { +16166: __facet->_M_add_reference(); +16166: _M_facets[_Facet::id._M_id()] = __facet; +16166: } +16166: +16166: void +16166: _M_install_cache(const facet*, size_t); +16166: +16166: void _M_init_extra(facet**); +16166: void _M_init_extra(void*, void*, const char*, const char*); +16166: +16166: +16166: +16166: +16166: }; +16166: # 678 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: template +16166: class __cxx11:: collate : public locale::facet +16166: { +16166: public: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef basic_string<_CharT> string_type; +16166: +16166: +16166: protected: +16166: +16166: +16166: __c_locale _M_c_locale_collate; +16166: +16166: public: +16166: +16166: static locale::id id; +16166: # 705 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: explicit +16166: collate(size_t __refs = 0) +16166: : facet(__refs), _M_c_locale_collate(_S_get_c_locale()) +16166: { } +16166: # 719 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: explicit +16166: collate(__c_locale __cloc, size_t __refs = 0) +16166: : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc)) +16166: { } +16166: # 736 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: int +16166: compare(const _CharT* __lo1, const _CharT* __hi1, +16166: const _CharT* __lo2, const _CharT* __hi2) const +16166: { return this->do_compare(__lo1, __hi1, __lo2, __hi2); } +16166: # 755 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: string_type +16166: transform(const _CharT* __lo, const _CharT* __hi) const +16166: { return this->do_transform(__lo, __hi); } +16166: # 769 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: long +16166: hash(const _CharT* __lo, const _CharT* __hi) const +16166: { return this->do_hash(__lo, __hi); } +16166: +16166: +16166: int +16166: _M_compare(const _CharT*, const _CharT*) const throw(); +16166: +16166: size_t +16166: _M_transform(_CharT*, const _CharT*, size_t) const throw(); +16166: +16166: protected: +16166: +16166: virtual +16166: ~collate() +16166: { _S_destroy_c_locale(_M_c_locale_collate); } +16166: # 798 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: virtual int +16166: do_compare(const _CharT* __lo1, const _CharT* __hi1, +16166: const _CharT* __lo2, const _CharT* __hi2) const; +16166: # 812 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: virtual string_type +16166: do_transform(const _CharT* __lo, const _CharT* __hi) const; +16166: # 825 "/usr/include/c++/14/bits/locale_classes.h" 3 +16166: virtual long +16166: do_hash(const _CharT* __lo, const _CharT* __hi) const; +16166: }; +16166: +16166: template +16166: locale::id collate<_CharT>::id; +16166: +16166: +16166: template<> +16166: int +16166: collate::_M_compare(const char*, const char*) const throw(); +16166: +16166: template<> +16166: size_t +16166: collate::_M_transform(char*, const char*, size_t) const throw(); +16166: +16166: +16166: template<> +16166: int +16166: collate::_M_compare(const wchar_t*, const wchar_t*) const throw(); +16166: +16166: template<> +16166: size_t +16166: collate::_M_transform(wchar_t*, const wchar_t*, size_t) const throw(); +16166: +16166: +16166: +16166: template +16166: class __cxx11:: collate_byname : public collate<_CharT> +16166: { +16166: public: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef basic_string<_CharT> string_type; +16166: +16166: +16166: explicit +16166: collate_byname(const char* __s, size_t __refs = 0) +16166: : collate<_CharT>(__refs) +16166: { +16166: if (__builtin_strcmp(__s, "C") != 0 +16166: && __builtin_strcmp(__s, "POSIX") != 0) +16166: { +16166: this->_S_destroy_c_locale(this->_M_c_locale_collate); +16166: this->_S_create_c_locale(this->_M_c_locale_collate, __s); +16166: } +16166: } +16166: +16166: +16166: explicit +16166: collate_byname(const string& __s, size_t __refs = 0) +16166: : collate_byname(__s.c_str(), __refs) { } +16166: +16166: +16166: protected: +16166: virtual +16166: ~collate_byname() { } +16166: }; +16166: +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/locale_classes.tcc" 1 3 +16166: # 37 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: locale:: +16166: locale(const locale& __other, _Facet* __f) +16166: { +16166: _M_impl = new _Impl(*__other._M_impl, 1); +16166: +16166: try +16166: { _M_impl->_M_install_facet(&_Facet::id, __f); } +16166: catch(...) +16166: { +16166: _M_impl->_M_remove_reference(); +16166: throw; +16166: } +16166: delete [] _M_impl->_M_names[0]; +16166: _M_impl->_M_names[0] = 0; +16166: } +16166: +16166: template +16166: locale +16166: locale:: +16166: combine(const locale& __other) const +16166: { +16166: _Impl* __tmp = new _Impl(*_M_impl, 1); +16166: try +16166: { +16166: __tmp->_M_replace_facet(__other._M_impl, &_Facet::id); +16166: } +16166: catch(...) +16166: { +16166: __tmp->_M_remove_reference(); +16166: throw; +16166: } +16166: return locale(__tmp); +16166: } +16166: +16166: template +16166: bool +16166: locale:: +16166: operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1, +16166: const basic_string<_CharT, _Traits, _Alloc>& __s2) const +16166: { +16166: typedef std::collate<_CharT> __collate_type; +16166: const __collate_type& __collate = use_facet<__collate_type>(*this); +16166: return (__collate.compare(__s1.data(), __s1.data() + __s1.length(), +16166: __s2.data(), __s2.data() + __s2.length()) < 0); +16166: } +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++17-extensions" +16166: template +16166: inline const _Facet* +16166: __try_use_facet(const locale& __loc) noexcept +16166: { +16166: const size_t __i = _Facet::id._M_id(); +16166: const locale::facet** __facets = __loc._M_impl->_M_facets; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if constexpr (__is_same(_Facet, ctype)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, num_get)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, num_put)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, collate)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, money_get)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, money_put)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, numpunct)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, time_get)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, time_put)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, messages)) return static_cast(__facets[__i]); +16166: +16166: +16166: if constexpr (__is_same(_Facet, ctype)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, num_get)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, num_put)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, collate)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, moneypunct)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, money_get)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, money_put)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, numpunct)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, time_get)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, time_put)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, messages)) return static_cast(__facets[__i]); +16166: +16166: +16166: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +16166: if constexpr (__is_same(_Facet, codecvt)) return static_cast(__facets[__i]); +16166: +16166: +16166: +16166: +16166: if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i]) +16166: return 0; +16166: +16166: +16166: return dynamic_cast(__facets[__i]); +16166: +16166: +16166: +16166: } +16166: #pragma GCC diagnostic pop +16166: # 164 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: has_facet(const locale& __loc) throw() +16166: { +16166: +16166: static_assert(__is_base_of(locale::facet, _Facet), +16166: "template argument must be derived from locale::facet"); +16166: +16166: +16166: +16166: return std::__try_use_facet<_Facet>(__loc) != 0; +16166: } +16166: # 192 "/usr/include/c++/14/bits/locale_classes.tcc" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdangling-reference" +16166: template +16166: [[__nodiscard__]] +16166: inline const _Facet& +16166: use_facet(const locale& __loc) +16166: { +16166: +16166: static_assert(__is_base_of(locale::facet, _Facet), +16166: "template argument must be derived from locale::facet"); +16166: +16166: +16166: +16166: if (const _Facet* __f = std::__try_use_facet<_Facet>(__loc)) +16166: return *__f; +16166: __throw_bad_cast(); +16166: } +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: template +16166: int +16166: collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const throw () +16166: { return 0; } +16166: +16166: +16166: template +16166: size_t +16166: collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const throw () +16166: { return 0; } +16166: +16166: template +16166: int +16166: collate<_CharT>:: +16166: do_compare(const _CharT* __lo1, const _CharT* __hi1, +16166: const _CharT* __lo2, const _CharT* __hi2) const +16166: { +16166: +16166: +16166: const string_type __one(__lo1, __hi1); +16166: const string_type __two(__lo2, __hi2); +16166: +16166: const _CharT* __p = __one.c_str(); +16166: const _CharT* __pend = __one.data() + __one.length(); +16166: const _CharT* __q = __two.c_str(); +16166: const _CharT* __qend = __two.data() + __two.length(); +16166: +16166: +16166: +16166: +16166: for (;;) +16166: { +16166: const int __res = _M_compare(__p, __q); +16166: if (__res) +16166: return __res; +16166: +16166: __p += char_traits<_CharT>::length(__p); +16166: __q += char_traits<_CharT>::length(__q); +16166: if (__p == __pend && __q == __qend) +16166: return 0; +16166: else if (__p == __pend) +16166: return -1; +16166: else if (__q == __qend) +16166: return 1; +16166: +16166: __p++; +16166: __q++; +16166: } +16166: } +16166: +16166: template +16166: typename collate<_CharT>::string_type +16166: collate<_CharT>:: +16166: do_transform(const _CharT* __lo, const _CharT* __hi) const +16166: { +16166: string_type __ret; +16166: +16166: +16166: const string_type __str(__lo, __hi); +16166: +16166: const _CharT* __p = __str.c_str(); +16166: const _CharT* __pend = __str.data() + __str.length(); +16166: +16166: size_t __len = (__hi - __lo) * 2; +16166: +16166: _CharT* __c = new _CharT[__len]; +16166: +16166: try +16166: { +16166: +16166: +16166: +16166: for (;;) +16166: { +16166: +16166: size_t __res = _M_transform(__c, __p, __len); +16166: +16166: +16166: if (__res >= __len) +16166: { +16166: __len = __res + 1; +16166: delete [] __c, __c = 0; +16166: __c = new _CharT[__len]; +16166: __res = _M_transform(__c, __p, __len); +16166: } +16166: +16166: __ret.append(__c, __res); +16166: __p += char_traits<_CharT>::length(__p); +16166: if (__p == __pend) +16166: break; +16166: +16166: __p++; +16166: __ret.push_back(_CharT()); +16166: } +16166: } +16166: catch(...) +16166: { +16166: delete [] __c; +16166: throw; +16166: } +16166: +16166: delete [] __c; +16166: +16166: return __ret; +16166: } +16166: +16166: template +16166: long +16166: collate<_CharT>:: +16166: do_hash(const _CharT* __lo, const _CharT* __hi) const +16166: { +16166: unsigned long __val = 0; +16166: for (; __lo < __hi; ++__lo) +16166: __val = +16166: *__lo + ((__val << 7) +16166: | (__val >> (__gnu_cxx::__numeric_traits:: +16166: __digits - 7))); +16166: return static_cast(__val); +16166: } +16166: +16166: +16166: +16166: +16166: extern template class collate; +16166: extern template class collate_byname; +16166: +16166: extern template +16166: const collate* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const collate& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: +16166: extern template class collate; +16166: extern template class collate_byname; +16166: +16166: extern template +16166: const collate* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const collate& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: +16166: +16166: +16166: } +16166: # 889 "/usr/include/c++/14/bits/locale_classes.h" 2 3 +16166: # 42 "/usr/include/c++/14/bits/ios_base.h" 2 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/system_error" 1 3 +16166: # 32 "/usr/include/c++/14/system_error" 3 +16166: +16166: # 33 "/usr/include/c++/14/system_error" 3 +16166: # 43 "/usr/include/c++/14/system_error" 3 +16166: # 1 "/usr/include/c++/14/stdexcept" 1 3 +16166: # 36 "/usr/include/c++/14/stdexcept" 3 +16166: +16166: # 37 "/usr/include/c++/14/stdexcept" 3 +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: struct __cow_string +16166: { +16166: union { +16166: const char* _M_p; +16166: char _M_bytes[sizeof(const char*)]; +16166: }; +16166: +16166: __cow_string(); +16166: __cow_string(const std::string&); +16166: __cow_string(const char*, size_t); +16166: __cow_string(const __cow_string&) noexcept; +16166: __cow_string& operator=(const __cow_string&) noexcept; +16166: ~__cow_string(); +16166: +16166: __cow_string(__cow_string&&) noexcept; +16166: __cow_string& operator=(__cow_string&&) noexcept; +16166: +16166: }; +16166: +16166: typedef basic_string __sso_string; +16166: # 113 "/usr/include/c++/14/stdexcept" 3 +16166: class logic_error : public exception +16166: { +16166: __cow_string _M_msg; +16166: +16166: public: +16166: +16166: explicit +16166: logic_error(const string& __arg) ; +16166: +16166: +16166: explicit +16166: logic_error(const char*) ; +16166: +16166: logic_error(logic_error&&) noexcept; +16166: logic_error& operator=(logic_error&&) noexcept; +16166: +16166: +16166: +16166: logic_error(const logic_error&) noexcept; +16166: logic_error& operator=(const logic_error&) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: virtual ~logic_error() noexcept; +16166: +16166: +16166: +16166: virtual const char* +16166: what() const noexcept; +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: class domain_error : public logic_error +16166: { +16166: public: +16166: explicit domain_error(const string& __arg) ; +16166: +16166: explicit domain_error(const char*) ; +16166: domain_error(const domain_error&) = default; +16166: domain_error& operator=(const domain_error&) = default; +16166: domain_error(domain_error&&) = default; +16166: domain_error& operator=(domain_error&&) = default; +16166: +16166: virtual ~domain_error() noexcept; +16166: }; +16166: +16166: +16166: class invalid_argument : public logic_error +16166: { +16166: public: +16166: explicit invalid_argument(const string& __arg) ; +16166: +16166: explicit invalid_argument(const char*) ; +16166: invalid_argument(const invalid_argument&) = default; +16166: invalid_argument& operator=(const invalid_argument&) = default; +16166: invalid_argument(invalid_argument&&) = default; +16166: invalid_argument& operator=(invalid_argument&&) = default; +16166: +16166: virtual ~invalid_argument() noexcept; +16166: }; +16166: +16166: +16166: +16166: class length_error : public logic_error +16166: { +16166: public: +16166: explicit length_error(const string& __arg) ; +16166: +16166: explicit length_error(const char*) ; +16166: length_error(const length_error&) = default; +16166: length_error& operator=(const length_error&) = default; +16166: length_error(length_error&&) = default; +16166: length_error& operator=(length_error&&) = default; +16166: +16166: virtual ~length_error() noexcept; +16166: }; +16166: +16166: +16166: +16166: class out_of_range : public logic_error +16166: { +16166: public: +16166: explicit out_of_range(const string& __arg) ; +16166: +16166: explicit out_of_range(const char*) ; +16166: out_of_range(const out_of_range&) = default; +16166: out_of_range& operator=(const out_of_range&) = default; +16166: out_of_range(out_of_range&&) = default; +16166: out_of_range& operator=(out_of_range&&) = default; +16166: +16166: virtual ~out_of_range() noexcept; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class runtime_error : public exception +16166: { +16166: __cow_string _M_msg; +16166: +16166: public: +16166: +16166: explicit +16166: runtime_error(const string& __arg) ; +16166: +16166: +16166: explicit +16166: runtime_error(const char*) ; +16166: +16166: runtime_error(runtime_error&&) noexcept; +16166: runtime_error& operator=(runtime_error&&) noexcept; +16166: +16166: +16166: +16166: runtime_error(const runtime_error&) noexcept; +16166: runtime_error& operator=(const runtime_error&) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: virtual ~runtime_error() noexcept; +16166: +16166: +16166: +16166: virtual const char* +16166: what() const noexcept; +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: class range_error : public runtime_error +16166: { +16166: public: +16166: explicit range_error(const string& __arg) ; +16166: +16166: explicit range_error(const char*) ; +16166: range_error(const range_error&) = default; +16166: range_error& operator=(const range_error&) = default; +16166: range_error(range_error&&) = default; +16166: range_error& operator=(range_error&&) = default; +16166: +16166: virtual ~range_error() noexcept; +16166: }; +16166: +16166: +16166: class overflow_error : public runtime_error +16166: { +16166: public: +16166: explicit overflow_error(const string& __arg) ; +16166: +16166: explicit overflow_error(const char*) ; +16166: overflow_error(const overflow_error&) = default; +16166: overflow_error& operator=(const overflow_error&) = default; +16166: overflow_error(overflow_error&&) = default; +16166: overflow_error& operator=(overflow_error&&) = default; +16166: +16166: virtual ~overflow_error() noexcept; +16166: }; +16166: +16166: +16166: class underflow_error : public runtime_error +16166: { +16166: public: +16166: explicit underflow_error(const string& __arg) ; +16166: +16166: explicit underflow_error(const char*) ; +16166: underflow_error(const underflow_error&) = default; +16166: underflow_error& operator=(const underflow_error&) = default; +16166: underflow_error(underflow_error&&) = default; +16166: underflow_error& operator=(underflow_error&&) = default; +16166: +16166: virtual ~underflow_error() noexcept; +16166: }; +16166: +16166: +16166: +16166: +16166: } +16166: # 44 "/usr/include/c++/14/system_error" 2 3 +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: class error_code; +16166: class error_condition; +16166: class system_error; +16166: +16166: +16166: template +16166: struct is_error_code_enum : public false_type { }; +16166: +16166: +16166: template +16166: struct is_error_condition_enum : public false_type { }; +16166: +16166: template<> +16166: struct is_error_condition_enum +16166: : public true_type { }; +16166: +16166: +16166: template +16166: inline constexpr bool is_error_code_enum_v = +16166: is_error_code_enum<_Tp>::value; +16166: template +16166: inline constexpr bool is_error_condition_enum_v = +16166: is_error_condition_enum<_Tp>::value; +16166: +16166: +16166: +16166: inline namespace _V2 { +16166: # 106 "/usr/include/c++/14/system_error" 3 +16166: class error_category +16166: { +16166: public: +16166: constexpr error_category() noexcept = default; +16166: +16166: virtual ~error_category(); +16166: +16166: error_category(const error_category&) = delete; +16166: error_category& operator=(const error_category&) = delete; +16166: +16166: +16166: virtual const char* +16166: name() const noexcept = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: private: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: virtual __cow_string +16166: _M_message(int) const; +16166: +16166: public: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: virtual string +16166: message(int) const = 0; +16166: # 144 "/usr/include/c++/14/system_error" 3 +16166: public: +16166: +16166: virtual error_condition +16166: default_error_condition(int __i) const noexcept; +16166: +16166: +16166: virtual bool +16166: equivalent(int __i, const error_condition& __cond) const noexcept; +16166: +16166: +16166: virtual bool +16166: equivalent(const error_code& __code, int __i) const noexcept; +16166: +16166: +16166: [[__nodiscard__]] +16166: bool +16166: operator==(const error_category& __other) const noexcept +16166: { return this == &__other; } +16166: # 170 "/usr/include/c++/14/system_error" 3 +16166: bool +16166: operator<(const error_category& __other) const noexcept +16166: { return less()(this, &__other); } +16166: +16166: bool +16166: operator!=(const error_category& __other) const noexcept +16166: { return this != &__other; } +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: [[__nodiscard__, __gnu__::__const__]] +16166: const error_category& +16166: generic_category() noexcept; +16166: +16166: +16166: [[__nodiscard__, __gnu__::__const__]] +16166: const error_category& +16166: system_category() noexcept; +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: namespace __adl_only +16166: { +16166: void make_error_code() = delete; +16166: void make_error_condition() = delete; +16166: } +16166: # 223 "/usr/include/c++/14/system_error" 3 +16166: class error_code +16166: { +16166: template +16166: using _Check +16166: = __enable_if_t::value>; +16166: +16166: public: +16166: error_code() noexcept +16166: : _M_value(0), _M_cat(&system_category()) { } +16166: +16166: error_code(int __v, const error_category& __cat) noexcept +16166: : _M_value(__v), _M_cat(&__cat) { } +16166: +16166: +16166: template> +16166: error_code(_ErrorCodeEnum __e) noexcept +16166: { +16166: using __adl_only::make_error_code; +16166: *this = make_error_code(__e); +16166: } +16166: +16166: error_code(const error_code&) = default; +16166: error_code& operator=(const error_code&) = default; +16166: +16166: void +16166: assign(int __v, const error_category& __cat) noexcept +16166: { +16166: _M_value = __v; +16166: _M_cat = &__cat; +16166: } +16166: +16166: void +16166: clear() noexcept +16166: { assign(0, system_category()); } +16166: +16166: +16166: [[__nodiscard__]] +16166: int +16166: value() const noexcept { return _M_value; } +16166: +16166: +16166: [[__nodiscard__]] +16166: const error_category& +16166: category() const noexcept { return *_M_cat; } +16166: +16166: +16166: error_condition +16166: default_error_condition() const noexcept; +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: string +16166: message() const +16166: { return category().message(value()); } +16166: +16166: +16166: [[__nodiscard__]] +16166: explicit operator bool() const noexcept +16166: { return _M_value != 0; } +16166: +16166: +16166: private: +16166: int _M_value; +16166: const error_category* _M_cat; +16166: }; +16166: # 300 "/usr/include/c++/14/system_error" 3 +16166: [[__nodiscard__]] +16166: inline error_code +16166: make_error_code(errc __e) noexcept +16166: { return error_code(static_cast(__e), generic_category()); } +16166: # 323 "/usr/include/c++/14/system_error" 3 +16166: inline bool +16166: operator<(const error_code& __lhs, const error_code& __rhs) noexcept +16166: { +16166: return (__lhs.category() < __rhs.category() +16166: || (__lhs.category() == __rhs.category() +16166: && __lhs.value() < __rhs.value())); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) +16166: { return (__os << __e.category().name() << ':' << __e.value()); } +16166: # 354 "/usr/include/c++/14/system_error" 3 +16166: class error_condition +16166: { +16166: template +16166: using _Check +16166: = __enable_if_t::value>; +16166: +16166: public: +16166: +16166: error_condition() noexcept +16166: : _M_value(0), _M_cat(&generic_category()) { } +16166: +16166: +16166: error_condition(int __v, const error_category& __cat) noexcept +16166: : _M_value(__v), _M_cat(&__cat) { } +16166: +16166: +16166: template> +16166: error_condition(_ErrorConditionEnum __e) noexcept +16166: { +16166: using __adl_only::make_error_condition; +16166: *this = make_error_condition(__e); +16166: } +16166: +16166: error_condition(const error_condition&) = default; +16166: error_condition& operator=(const error_condition&) = default; +16166: +16166: +16166: void +16166: assign(int __v, const error_category& __cat) noexcept +16166: { +16166: _M_value = __v; +16166: _M_cat = &__cat; +16166: } +16166: +16166: +16166: void +16166: clear() noexcept +16166: { assign(0, generic_category()); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: int +16166: value() const noexcept { return _M_value; } +16166: +16166: +16166: [[__nodiscard__]] +16166: const error_category& +16166: category() const noexcept { return *_M_cat; } +16166: +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: string +16166: message() const +16166: { return category().message(value()); } +16166: +16166: +16166: [[__nodiscard__]] +16166: explicit operator bool() const noexcept +16166: { return _M_value != 0; } +16166: +16166: +16166: private: +16166: int _M_value; +16166: const error_category* _M_cat; +16166: }; +16166: # 433 "/usr/include/c++/14/system_error" 3 +16166: [[__nodiscard__]] +16166: inline error_condition +16166: make_error_condition(errc __e) noexcept +16166: { return error_condition(static_cast(__e), generic_category()); } +16166: # 447 "/usr/include/c++/14/system_error" 3 +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const error_code& __lhs, const error_code& __rhs) noexcept +16166: { +16166: return __lhs.category() == __rhs.category() +16166: && __lhs.value() == __rhs.value(); +16166: } +16166: # 463 "/usr/include/c++/14/system_error" 3 +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const error_code& __lhs, const error_condition& __rhs) noexcept +16166: { +16166: return __lhs.category().equivalent(__lhs.value(), __rhs) +16166: || __rhs.category().equivalent(__lhs, __rhs.value()); +16166: } +16166: # 478 "/usr/include/c++/14/system_error" 3 +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const error_condition& __lhs, +16166: const error_condition& __rhs) noexcept +16166: { +16166: return __lhs.category() == __rhs.category() +16166: && __lhs.value() == __rhs.value(); +16166: } +16166: # 506 "/usr/include/c++/14/system_error" 3 +16166: inline bool +16166: operator<(const error_condition& __lhs, +16166: const error_condition& __rhs) noexcept +16166: { +16166: return (__lhs.category() < __rhs.category() +16166: || (__lhs.category() == __rhs.category() +16166: && __lhs.value() < __rhs.value())); +16166: } +16166: +16166: +16166: inline bool +16166: operator==(const error_condition& __lhs, const error_code& __rhs) noexcept +16166: { +16166: return (__rhs.category().equivalent(__rhs.value(), __lhs) +16166: || __lhs.category().equivalent(__rhs, __lhs.value())); +16166: } +16166: +16166: +16166: inline bool +16166: operator!=(const error_code& __lhs, const error_code& __rhs) noexcept +16166: { return !(__lhs == __rhs); } +16166: +16166: +16166: inline bool +16166: operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept +16166: { return !(__lhs == __rhs); } +16166: +16166: +16166: inline bool +16166: operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept +16166: { return !(__lhs == __rhs); } +16166: +16166: +16166: inline bool +16166: operator!=(const error_condition& __lhs, +16166: const error_condition& __rhs) noexcept +16166: { return !(__lhs == __rhs); } +16166: # 556 "/usr/include/c++/14/system_error" 3 +16166: class system_error : public std::runtime_error +16166: { +16166: private: +16166: error_code _M_code; +16166: +16166: public: +16166: system_error(error_code __ec = error_code()) +16166: : runtime_error(__ec.message()), _M_code(__ec) { } +16166: +16166: system_error(error_code __ec, const string& __what) +16166: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } +16166: +16166: system_error(error_code __ec, const char* __what) +16166: : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } +16166: +16166: system_error(int __v, const error_category& __ecat, const char* __what) +16166: : system_error(error_code(__v, __ecat), __what) { } +16166: +16166: system_error(int __v, const error_category& __ecat) +16166: : runtime_error(error_code(__v, __ecat).message()), +16166: _M_code(__v, __ecat) { } +16166: +16166: system_error(int __v, const error_category& __ecat, const string& __what) +16166: : runtime_error(__what + (": " + error_code(__v, __ecat).message())), +16166: _M_code(__v, __ecat) { } +16166: +16166: +16166: system_error (const system_error &) = default; +16166: system_error &operator= (const system_error &) = default; +16166: +16166: +16166: virtual ~system_error() noexcept; +16166: +16166: const error_code& +16166: code() const noexcept { return _M_code; } +16166: }; +16166: +16166: +16166: } +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: size_t +16166: operator()(const error_code& __e) const noexcept +16166: { +16166: const size_t __tmp = std::_Hash_impl::hash(__e.value()); +16166: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp); +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: struct hash +16166: : public __hash_base +16166: { +16166: size_t +16166: operator()(const error_condition& __e) const noexcept +16166: { +16166: const size_t __tmp = std::_Hash_impl::hash(__e.value()); +16166: return std::_Hash_impl::__hash_combine(&__e.category(), __tmp); +16166: } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 47 "/usr/include/c++/14/bits/ios_base.h" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum _Ios_Fmtflags +16166: { +16166: _S_boolalpha = 1L << 0, +16166: _S_dec = 1L << 1, +16166: _S_fixed = 1L << 2, +16166: _S_hex = 1L << 3, +16166: _S_internal = 1L << 4, +16166: _S_left = 1L << 5, +16166: _S_oct = 1L << 6, +16166: _S_right = 1L << 7, +16166: _S_scientific = 1L << 8, +16166: _S_showbase = 1L << 9, +16166: _S_showpoint = 1L << 10, +16166: _S_showpos = 1L << 11, +16166: _S_skipws = 1L << 12, +16166: _S_unitbuf = 1L << 13, +16166: _S_uppercase = 1L << 14, +16166: _S_adjustfield = _S_left | _S_right | _S_internal, +16166: _S_basefield = _S_dec | _S_oct | _S_hex, +16166: _S_floatfield = _S_scientific | _S_fixed, +16166: _S_ios_fmtflags_end = 1L << 16, +16166: _S_ios_fmtflags_max = 0x7fffffff, +16166: _S_ios_fmtflags_min = ~0x7fffffff +16166: }; +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Fmtflags +16166: operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept +16166: { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Fmtflags +16166: operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept +16166: { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Fmtflags +16166: operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) noexcept +16166: { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Fmtflags +16166: operator~(_Ios_Fmtflags __a) noexcept +16166: { return _Ios_Fmtflags(~static_cast(__a)); } +16166: +16166: constexpr +16166: inline const _Ios_Fmtflags& +16166: operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept +16166: { return __a = __a | __b; } +16166: +16166: constexpr +16166: inline const _Ios_Fmtflags& +16166: operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept +16166: { return __a = __a & __b; } +16166: +16166: constexpr +16166: inline const _Ios_Fmtflags& +16166: operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) noexcept +16166: { return __a = __a ^ __b; } +16166: +16166: +16166: enum _Ios_Openmode +16166: { +16166: _S_app = 1L << 0, +16166: _S_ate = 1L << 1, +16166: _S_bin = 1L << 2, +16166: _S_in = 1L << 3, +16166: _S_out = 1L << 4, +16166: _S_trunc = 1L << 5, +16166: _S_noreplace = 1L << 6, +16166: _S_ios_openmode_end = 1L << 16, +16166: _S_ios_openmode_max = 0x7fffffff, +16166: _S_ios_openmode_min = ~0x7fffffff +16166: }; +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Openmode +16166: operator&(_Ios_Openmode __a, _Ios_Openmode __b) noexcept +16166: { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Openmode +16166: operator|(_Ios_Openmode __a, _Ios_Openmode __b) noexcept +16166: { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Openmode +16166: operator^(_Ios_Openmode __a, _Ios_Openmode __b) noexcept +16166: { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Openmode +16166: operator~(_Ios_Openmode __a) noexcept +16166: { return _Ios_Openmode(~static_cast(__a)); } +16166: +16166: constexpr +16166: inline const _Ios_Openmode& +16166: operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept +16166: { return __a = __a | __b; } +16166: +16166: constexpr +16166: inline const _Ios_Openmode& +16166: operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept +16166: { return __a = __a & __b; } +16166: +16166: constexpr +16166: inline const _Ios_Openmode& +16166: operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) noexcept +16166: { return __a = __a ^ __b; } +16166: +16166: +16166: enum _Ios_Iostate +16166: { +16166: _S_goodbit = 0, +16166: _S_badbit = 1L << 0, +16166: _S_eofbit = 1L << 1, +16166: _S_failbit = 1L << 2, +16166: _S_ios_iostate_end = 1L << 16, +16166: _S_ios_iostate_max = 0x7fffffff, +16166: _S_ios_iostate_min = ~0x7fffffff +16166: }; +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Iostate +16166: operator&(_Ios_Iostate __a, _Ios_Iostate __b) noexcept +16166: { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Iostate +16166: operator|(_Ios_Iostate __a, _Ios_Iostate __b) noexcept +16166: { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Iostate +16166: operator^(_Ios_Iostate __a, _Ios_Iostate __b) noexcept +16166: { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } +16166: +16166: [[__nodiscard__]] constexpr +16166: inline _Ios_Iostate +16166: operator~(_Ios_Iostate __a) noexcept +16166: { return _Ios_Iostate(~static_cast(__a)); } +16166: +16166: constexpr +16166: inline const _Ios_Iostate& +16166: operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept +16166: { return __a = __a | __b; } +16166: +16166: constexpr +16166: inline const _Ios_Iostate& +16166: operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept +16166: { return __a = __a & __b; } +16166: +16166: constexpr +16166: inline const _Ios_Iostate& +16166: operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) noexcept +16166: { return __a = __a ^ __b; } +16166: +16166: +16166: enum _Ios_Seekdir +16166: { +16166: _S_beg = 0, +16166: _S_cur = 1, +16166: _S_end = 2, +16166: _S_ios_seekdir_end = 1L << 16 +16166: }; +16166: +16166: +16166: +16166: enum class io_errc { stream = 1 }; +16166: +16166: template <> struct is_error_code_enum : public true_type { }; +16166: +16166: [[__nodiscard__, __gnu__::__const__]] +16166: const error_category& +16166: iostream_category() noexcept; +16166: +16166: [[__nodiscard__]] +16166: inline error_code +16166: make_error_code(io_errc __e) noexcept +16166: { return error_code(static_cast(__e), iostream_category()); } +16166: +16166: [[__nodiscard__]] +16166: inline error_condition +16166: make_error_condition(io_errc __e) noexcept +16166: { return error_condition(static_cast(__e), iostream_category()); } +16166: # 254 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: class ios_base +16166: { +16166: # 272 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: public: +16166: # 281 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: class __attribute ((__abi_tag__ ("cxx11"))) failure : public system_error +16166: { +16166: public: +16166: explicit +16166: failure(const string& __str); +16166: +16166: +16166: explicit +16166: failure(const string&, const error_code&); +16166: +16166: explicit +16166: failure(const char*, const error_code& = io_errc::stream); +16166: +16166: +16166: virtual +16166: ~failure() throw(); +16166: +16166: virtual const char* +16166: what() const throw(); +16166: }; +16166: # 367 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: typedef _Ios_Fmtflags fmtflags; +16166: +16166: +16166: static const fmtflags boolalpha = _S_boolalpha; +16166: +16166: +16166: static const fmtflags dec = _S_dec; +16166: +16166: +16166: static const fmtflags fixed = _S_fixed; +16166: +16166: +16166: static const fmtflags hex = _S_hex; +16166: +16166: +16166: +16166: +16166: static const fmtflags internal = _S_internal; +16166: +16166: +16166: +16166: static const fmtflags left = _S_left; +16166: +16166: +16166: static const fmtflags oct = _S_oct; +16166: +16166: +16166: +16166: static const fmtflags right = _S_right; +16166: +16166: +16166: static const fmtflags scientific = _S_scientific; +16166: +16166: +16166: +16166: static const fmtflags showbase = _S_showbase; +16166: +16166: +16166: +16166: static const fmtflags showpoint = _S_showpoint; +16166: +16166: +16166: static const fmtflags showpos = _S_showpos; +16166: +16166: +16166: static const fmtflags skipws = _S_skipws; +16166: +16166: +16166: static const fmtflags unitbuf = _S_unitbuf; +16166: +16166: +16166: +16166: static const fmtflags uppercase = _S_uppercase; +16166: +16166: +16166: static const fmtflags adjustfield = _S_adjustfield; +16166: +16166: +16166: static const fmtflags basefield = _S_basefield; +16166: +16166: +16166: static const fmtflags floatfield = _S_floatfield; +16166: # 442 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: typedef _Ios_Iostate iostate; +16166: +16166: +16166: +16166: static const iostate badbit = _S_badbit; +16166: +16166: +16166: static const iostate eofbit = _S_eofbit; +16166: +16166: +16166: +16166: +16166: static const iostate failbit = _S_failbit; +16166: +16166: +16166: static const iostate goodbit = _S_goodbit; +16166: # 473 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: typedef _Ios_Openmode openmode; +16166: +16166: +16166: static const openmode app = _S_app; +16166: +16166: +16166: static const openmode ate = _S_ate; +16166: +16166: +16166: +16166: +16166: static const openmode binary = _S_bin; +16166: +16166: +16166: static const openmode in = _S_in; +16166: +16166: +16166: static const openmode out = _S_out; +16166: +16166: +16166: static const openmode trunc = _S_trunc; +16166: +16166: static const openmode __noreplace = _S_noreplace; +16166: # 512 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: typedef _Ios_Seekdir seekdir; +16166: +16166: +16166: static const seekdir beg = _S_beg; +16166: +16166: +16166: static const seekdir cur = _S_cur; +16166: +16166: +16166: static const seekdir end = _S_end; +16166: # 545 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: enum event +16166: { +16166: erase_event, +16166: imbue_event, +16166: copyfmt_event +16166: }; +16166: # 562 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: typedef void (*event_callback) (event __e, ios_base& __b, int __i); +16166: # 574 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: void +16166: register_callback(event_callback __fn, int __index); +16166: +16166: protected: +16166: streamsize _M_precision; +16166: streamsize _M_width; +16166: fmtflags _M_flags; +16166: iostate _M_exception; +16166: iostate _M_streambuf_state; +16166: +16166: +16166: +16166: struct _Callback_list +16166: { +16166: +16166: _Callback_list* _M_next; +16166: ios_base::event_callback _M_fn; +16166: int _M_index; +16166: _Atomic_word _M_refcount; +16166: +16166: _Callback_list(ios_base::event_callback __fn, int __index, +16166: _Callback_list* __cb) +16166: : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } +16166: +16166: void +16166: _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); } +16166: +16166: +16166: int +16166: _M_remove_reference() +16166: { +16166: +16166: ; +16166: int __res = __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); +16166: if (__res == 0) +16166: { +16166: ; +16166: } +16166: return __res; +16166: } +16166: }; +16166: +16166: _Callback_list* _M_callbacks; +16166: +16166: void +16166: _M_call_callbacks(event __ev) throw(); +16166: +16166: void +16166: _M_dispose_callbacks(void) throw(); +16166: +16166: +16166: struct _Words +16166: { +16166: void* _M_pword; +16166: long _M_iword; +16166: _Words() : _M_pword(0), _M_iword(0) { } +16166: }; +16166: +16166: +16166: _Words _M_word_zero; +16166: +16166: +16166: +16166: enum { _S_local_word_size = 8 }; +16166: _Words _M_local_word[_S_local_word_size]; +16166: +16166: +16166: int _M_word_size; +16166: _Words* _M_word; +16166: +16166: _Words& +16166: _M_grow_words(int __index, bool __iword); +16166: +16166: +16166: locale _M_ios_locale; +16166: +16166: void +16166: _M_init() throw(); +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: class Init +16166: { +16166: friend class ios_base; +16166: public: +16166: Init(); +16166: ~Init(); +16166: +16166: +16166: Init(const Init&) = default; +16166: Init& operator=(const Init&) = default; +16166: +16166: +16166: private: +16166: static _Atomic_word _S_refcount; +16166: static bool _S_synced_with_stdio; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: fmtflags +16166: flags() const +16166: { return _M_flags; } +16166: # 692 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: fmtflags +16166: flags(fmtflags __fmtfl) +16166: { +16166: fmtflags __old = _M_flags; +16166: _M_flags = __fmtfl; +16166: return __old; +16166: } +16166: # 708 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: fmtflags +16166: setf(fmtflags __fmtfl) +16166: { +16166: fmtflags __old = _M_flags; +16166: _M_flags |= __fmtfl; +16166: return __old; +16166: } +16166: # 725 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: fmtflags +16166: setf(fmtflags __fmtfl, fmtflags __mask) +16166: { +16166: fmtflags __old = _M_flags; +16166: _M_flags &= ~__mask; +16166: _M_flags |= (__fmtfl & __mask); +16166: return __old; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: unsetf(fmtflags __mask) +16166: { _M_flags &= ~__mask; } +16166: # 751 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: streamsize +16166: precision() const +16166: { return _M_precision; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: streamsize +16166: precision(streamsize __prec) +16166: { +16166: streamsize __old = _M_precision; +16166: _M_precision = __prec; +16166: return __old; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: streamsize +16166: width() const +16166: { return _M_width; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: streamsize +16166: width(streamsize __wide) +16166: { +16166: streamsize __old = _M_width; +16166: _M_width = __wide; +16166: return __old; +16166: } +16166: # 802 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: static bool +16166: sync_with_stdio(bool __sync = true); +16166: # 814 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: locale +16166: imbue(const locale& __loc) throw(); +16166: # 825 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: locale +16166: getloc() const +16166: { return _M_ios_locale; } +16166: # 836 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: const locale& +16166: _M_getloc() const +16166: { return _M_ios_locale; } +16166: # 855 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: static int +16166: xalloc() throw(); +16166: # 871 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: long& +16166: iword(int __ix) +16166: { +16166: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) +16166: ? _M_word[__ix] : _M_grow_words(__ix, true); +16166: return __word._M_iword; +16166: } +16166: # 892 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: void*& +16166: pword(int __ix) +16166: { +16166: _Words& __word = ((unsigned)__ix < (unsigned)_M_word_size) +16166: ? _M_word[__ix] : _M_grow_words(__ix, false); +16166: return __word._M_pword; +16166: } +16166: # 909 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: virtual ~ios_base(); +16166: +16166: protected: +16166: ios_base() throw (); +16166: # 923 "/usr/include/c++/14/bits/ios_base.h" 3 +16166: public: +16166: ios_base(const ios_base&) = delete; +16166: +16166: ios_base& +16166: operator=(const ios_base&) = delete; +16166: +16166: protected: +16166: void +16166: _M_move(ios_base&) noexcept; +16166: +16166: void +16166: _M_swap(ios_base& __rhs) noexcept; +16166: +16166: }; +16166: +16166: +16166: +16166: inline ios_base& +16166: boolalpha(ios_base& __base) +16166: { +16166: __base.setf(ios_base::boolalpha); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: noboolalpha(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::boolalpha); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: showbase(ios_base& __base) +16166: { +16166: __base.setf(ios_base::showbase); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: noshowbase(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::showbase); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: showpoint(ios_base& __base) +16166: { +16166: __base.setf(ios_base::showpoint); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: noshowpoint(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::showpoint); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: showpos(ios_base& __base) +16166: { +16166: __base.setf(ios_base::showpos); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: noshowpos(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::showpos); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: skipws(ios_base& __base) +16166: { +16166: __base.setf(ios_base::skipws); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: noskipws(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::skipws); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: uppercase(ios_base& __base) +16166: { +16166: __base.setf(ios_base::uppercase); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: nouppercase(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::uppercase); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: unitbuf(ios_base& __base) +16166: { +16166: __base.setf(ios_base::unitbuf); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: nounitbuf(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::unitbuf); +16166: return __base; +16166: } +16166: +16166: +16166: +16166: inline ios_base& +16166: internal(ios_base& __base) +16166: { +16166: __base.setf(ios_base::internal, ios_base::adjustfield); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: left(ios_base& __base) +16166: { +16166: __base.setf(ios_base::left, ios_base::adjustfield); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: right(ios_base& __base) +16166: { +16166: __base.setf(ios_base::right, ios_base::adjustfield); +16166: return __base; +16166: } +16166: +16166: +16166: +16166: inline ios_base& +16166: dec(ios_base& __base) +16166: { +16166: __base.setf(ios_base::dec, ios_base::basefield); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: hex(ios_base& __base) +16166: { +16166: __base.setf(ios_base::hex, ios_base::basefield); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: oct(ios_base& __base) +16166: { +16166: __base.setf(ios_base::oct, ios_base::basefield); +16166: return __base; +16166: } +16166: +16166: +16166: +16166: inline ios_base& +16166: fixed(ios_base& __base) +16166: { +16166: __base.setf(ios_base::fixed, ios_base::floatfield); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: scientific(ios_base& __base) +16166: { +16166: __base.setf(ios_base::scientific, ios_base::floatfield); +16166: return __base; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline ios_base& +16166: hexfloat(ios_base& __base) +16166: { +16166: __base.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); +16166: return __base; +16166: } +16166: +16166: +16166: inline ios_base& +16166: defaultfloat(ios_base& __base) +16166: { +16166: __base.unsetf(ios_base::floatfield); +16166: return __base; +16166: } +16166: +16166: +16166: +16166: } +16166: # 45 "/usr/include/c++/14/ios" 2 3 +16166: # 1 "/usr/include/c++/14/streambuf" 1 3 +16166: # 36 "/usr/include/c++/14/streambuf" 3 +16166: +16166: # 37 "/usr/include/c++/14/streambuf" 3 +16166: # 47 "/usr/include/c++/14/streambuf" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: streamsize +16166: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, +16166: basic_streambuf<_CharT, _Traits>*, bool&); +16166: # 123 "/usr/include/c++/14/streambuf" 3 +16166: template +16166: class basic_streambuf +16166: { +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: +16166: +16166: +16166: typedef basic_streambuf __streambuf_type; +16166: +16166: +16166: friend class basic_ios; +16166: friend class basic_istream; +16166: friend class basic_ostream; +16166: friend class istreambuf_iterator; +16166: friend class ostreambuf_iterator; +16166: +16166: friend streamsize +16166: __copy_streambufs_eof<>(basic_streambuf*, basic_streambuf*, bool&); +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: _CharT2*>::__type +16166: __copy_move_a2(istreambuf_iterator<_CharT2>, +16166: istreambuf_iterator<_CharT2>, _CharT2*); +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: istreambuf_iterator<_CharT2> >::__type +16166: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +16166: const _CharT2&); +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: void>::__type +16166: advance(istreambuf_iterator<_CharT2>&, _Distance); +16166: +16166: friend void __istream_extract(istream&, char*, streamsize); +16166: +16166: template +16166: friend basic_istream<_CharT2, _Traits2>& +16166: operator>>(basic_istream<_CharT2, _Traits2>&, +16166: basic_string<_CharT2, _Traits2, _Alloc>&); +16166: +16166: template +16166: friend basic_istream<_CharT2, _Traits2>& +16166: getline(basic_istream<_CharT2, _Traits2>&, +16166: basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2); +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: char_type* _M_in_beg; +16166: char_type* _M_in_cur; +16166: char_type* _M_in_end; +16166: char_type* _M_out_beg; +16166: char_type* _M_out_cur; +16166: char_type* _M_out_end; +16166: +16166: +16166: locale _M_buf_locale; +16166: +16166: public: +16166: +16166: virtual +16166: ~basic_streambuf() +16166: { } +16166: # 215 "/usr/include/c++/14/streambuf" 3 +16166: locale +16166: pubimbue(const locale& __loc) +16166: { +16166: locale __tmp(this->getloc()); +16166: this->imbue(__loc); +16166: _M_buf_locale = __loc; +16166: return __tmp; +16166: } +16166: # 232 "/usr/include/c++/14/streambuf" 3 +16166: locale +16166: getloc() const +16166: { return _M_buf_locale; } +16166: # 245 "/usr/include/c++/14/streambuf" 3 +16166: basic_streambuf* +16166: pubsetbuf(char_type* __s, streamsize __n) +16166: { return this->setbuf(__s, __n); } +16166: # 257 "/usr/include/c++/14/streambuf" 3 +16166: pos_type +16166: pubseekoff(off_type __off, ios_base::seekdir __way, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: { return this->seekoff(__off, __way, __mode); } +16166: # 269 "/usr/include/c++/14/streambuf" 3 +16166: pos_type +16166: pubseekpos(pos_type __sp, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: { return this->seekpos(__sp, __mode); } +16166: +16166: +16166: +16166: +16166: int +16166: pubsync() { return this->sync(); } +16166: # 290 "/usr/include/c++/14/streambuf" 3 +16166: streamsize +16166: in_avail() +16166: { +16166: const streamsize __ret = this->egptr() - this->gptr(); +16166: return __ret ? __ret : this->showmanyc(); +16166: } +16166: # 304 "/usr/include/c++/14/streambuf" 3 +16166: int_type +16166: snextc() +16166: { +16166: int_type __ret = traits_type::eof(); +16166: if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(), +16166: __ret), true)) +16166: __ret = this->sgetc(); +16166: return __ret; +16166: } +16166: # 322 "/usr/include/c++/14/streambuf" 3 +16166: int_type +16166: sbumpc() +16166: { +16166: int_type __ret; +16166: if (__builtin_expect(this->gptr() < this->egptr(), true)) +16166: { +16166: __ret = traits_type::to_int_type(*this->gptr()); +16166: this->gbump(1); +16166: } +16166: else +16166: __ret = this->uflow(); +16166: return __ret; +16166: } +16166: # 344 "/usr/include/c++/14/streambuf" 3 +16166: int_type +16166: sgetc() +16166: { +16166: int_type __ret; +16166: if (__builtin_expect(this->gptr() < this->egptr(), true)) +16166: __ret = traits_type::to_int_type(*this->gptr()); +16166: else +16166: __ret = this->underflow(); +16166: return __ret; +16166: } +16166: # 363 "/usr/include/c++/14/streambuf" 3 +16166: streamsize +16166: sgetn(char_type* __s, streamsize __n) +16166: { return this->xsgetn(__s, __n); } +16166: # 378 "/usr/include/c++/14/streambuf" 3 +16166: int_type +16166: sputbackc(char_type __c) +16166: { +16166: int_type __ret; +16166: const bool __testpos = this->eback() < this->gptr(); +16166: if (__builtin_expect(!__testpos || +16166: !traits_type::eq(__c, this->gptr()[-1]), false)) +16166: __ret = this->pbackfail(traits_type::to_int_type(__c)); +16166: else +16166: { +16166: this->gbump(-1); +16166: __ret = traits_type::to_int_type(*this->gptr()); +16166: } +16166: return __ret; +16166: } +16166: # 403 "/usr/include/c++/14/streambuf" 3 +16166: int_type +16166: sungetc() +16166: { +16166: int_type __ret; +16166: if (__builtin_expect(this->eback() < this->gptr(), true)) +16166: { +16166: this->gbump(-1); +16166: __ret = traits_type::to_int_type(*this->gptr()); +16166: } +16166: else +16166: __ret = this->pbackfail(); +16166: return __ret; +16166: } +16166: # 430 "/usr/include/c++/14/streambuf" 3 +16166: int_type +16166: sputc(char_type __c) +16166: { +16166: int_type __ret; +16166: if (__builtin_expect(this->pptr() < this->epptr(), true)) +16166: { +16166: *this->pptr() = __c; +16166: this->pbump(1); +16166: __ret = traits_type::to_int_type(__c); +16166: } +16166: else +16166: __ret = this->overflow(traits_type::to_int_type(__c)); +16166: return __ret; +16166: } +16166: # 456 "/usr/include/c++/14/streambuf" 3 +16166: streamsize +16166: sputn(const char_type* __s, streamsize __n) +16166: { return this->xsputn(__s, __n); } +16166: +16166: protected: +16166: # 470 "/usr/include/c++/14/streambuf" 3 +16166: basic_streambuf() +16166: : _M_in_beg(0), _M_in_cur(0), _M_in_end(0), +16166: _M_out_beg(0), _M_out_cur(0), _M_out_end(0), +16166: _M_buf_locale(locale()) +16166: { } +16166: # 488 "/usr/include/c++/14/streambuf" 3 +16166: char_type* +16166: eback() const { return _M_in_beg; } +16166: +16166: char_type* +16166: gptr() const { return _M_in_cur; } +16166: +16166: char_type* +16166: egptr() const { return _M_in_end; } +16166: # 504 "/usr/include/c++/14/streambuf" 3 +16166: void +16166: gbump(int __n) { _M_in_cur += __n; } +16166: # 515 "/usr/include/c++/14/streambuf" 3 +16166: void +16166: setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) +16166: { +16166: _M_in_beg = __gbeg; +16166: _M_in_cur = __gnext; +16166: _M_in_end = __gend; +16166: } +16166: # 535 "/usr/include/c++/14/streambuf" 3 +16166: char_type* +16166: pbase() const { return _M_out_beg; } +16166: +16166: char_type* +16166: pptr() const { return _M_out_cur; } +16166: +16166: char_type* +16166: epptr() const { return _M_out_end; } +16166: # 551 "/usr/include/c++/14/streambuf" 3 +16166: void +16166: pbump(int __n) { _M_out_cur += __n; } +16166: # 561 "/usr/include/c++/14/streambuf" 3 +16166: void +16166: setp(char_type* __pbeg, char_type* __pend) +16166: { +16166: _M_out_beg = _M_out_cur = __pbeg; +16166: _M_out_end = __pend; +16166: } +16166: # 582 "/usr/include/c++/14/streambuf" 3 +16166: virtual void +16166: imbue(const locale& __loc __attribute__ ((__unused__))) +16166: { } +16166: # 597 "/usr/include/c++/14/streambuf" 3 +16166: virtual basic_streambuf* +16166: setbuf(char_type*, streamsize) +16166: { return this; } +16166: # 608 "/usr/include/c++/14/streambuf" 3 +16166: virtual pos_type +16166: seekoff(off_type, ios_base::seekdir, +16166: ios_base::openmode = ios_base::in | ios_base::out) +16166: { return pos_type(off_type(-1)); } +16166: # 620 "/usr/include/c++/14/streambuf" 3 +16166: virtual pos_type +16166: seekpos(pos_type, +16166: ios_base::openmode = ios_base::in | ios_base::out) +16166: { return pos_type(off_type(-1)); } +16166: # 633 "/usr/include/c++/14/streambuf" 3 +16166: virtual int +16166: sync() { return 0; } +16166: # 655 "/usr/include/c++/14/streambuf" 3 +16166: virtual streamsize +16166: showmanyc() { return 0; } +16166: # 671 "/usr/include/c++/14/streambuf" 3 +16166: virtual streamsize +16166: xsgetn(char_type* __s, streamsize __n); +16166: # 693 "/usr/include/c++/14/streambuf" 3 +16166: virtual int_type +16166: underflow() +16166: { return traits_type::eof(); } +16166: # 706 "/usr/include/c++/14/streambuf" 3 +16166: virtual int_type +16166: uflow() +16166: { +16166: int_type __ret = traits_type::eof(); +16166: const bool __testeof = traits_type::eq_int_type(this->underflow(), +16166: __ret); +16166: if (!__testeof) +16166: { +16166: __ret = traits_type::to_int_type(*this->gptr()); +16166: this->gbump(1); +16166: } +16166: return __ret; +16166: } +16166: # 730 "/usr/include/c++/14/streambuf" 3 +16166: virtual int_type +16166: pbackfail(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) +16166: { return traits_type::eof(); } +16166: # 748 "/usr/include/c++/14/streambuf" 3 +16166: virtual streamsize +16166: xsputn(const char_type* __s, streamsize __n); +16166: # 774 "/usr/include/c++/14/streambuf" 3 +16166: virtual int_type +16166: overflow(int_type __c __attribute__ ((__unused__)) = traits_type::eof()) +16166: { return traits_type::eof(); } +16166: # 801 "/usr/include/c++/14/streambuf" 3 +16166: void +16166: __safe_gbump(streamsize __n) { _M_in_cur += __n; } +16166: +16166: void +16166: __safe_pbump(streamsize __n) { _M_out_cur += __n; } +16166: +16166: +16166: +16166: +16166: protected: +16166: +16166: basic_streambuf(const basic_streambuf&); +16166: +16166: basic_streambuf& +16166: operator=(const basic_streambuf&); +16166: +16166: +16166: void +16166: swap(basic_streambuf& __sb) +16166: { +16166: std::swap(_M_in_beg, __sb._M_in_beg); +16166: std::swap(_M_in_cur, __sb._M_in_cur); +16166: std::swap(_M_in_end, __sb._M_in_end); +16166: std::swap(_M_out_beg, __sb._M_out_beg); +16166: std::swap(_M_out_cur, __sb._M_out_cur); +16166: std::swap(_M_out_end, __sb._M_out_end); +16166: std::swap(_M_buf_locale, __sb._M_buf_locale); +16166: } +16166: +16166: }; +16166: +16166: +16166: template +16166: std::basic_streambuf<_CharT, _Traits>:: +16166: basic_streambuf(const basic_streambuf&) = default; +16166: +16166: template +16166: std::basic_streambuf<_CharT, _Traits>& +16166: std::basic_streambuf<_CharT, _Traits>:: +16166: operator=(const basic_streambuf&) = default; +16166: +16166: +16166: +16166: template<> +16166: streamsize +16166: __copy_streambufs_eof(basic_streambuf* __sbin, +16166: basic_streambuf* __sbout, bool& __ineof); +16166: +16166: template<> +16166: streamsize +16166: __copy_streambufs_eof(basic_streambuf* __sbin, +16166: basic_streambuf* __sbout, bool& __ineof); +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/streambuf.tcc" 1 3 +16166: # 37 "/usr/include/c++/14/bits/streambuf.tcc" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/streambuf.tcc" 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: streamsize +16166: basic_streambuf<_CharT, _Traits>:: +16166: xsgetn(char_type* __s, streamsize __n) +16166: { +16166: streamsize __ret = 0; +16166: while (__ret < __n) +16166: { +16166: const streamsize __buf_len = this->egptr() - this->gptr(); +16166: if (__buf_len) +16166: { +16166: const streamsize __remaining = __n - __ret; +16166: const streamsize __len = std::min(__buf_len, __remaining); +16166: traits_type::copy(__s, this->gptr(), __len); +16166: __ret += __len; +16166: __s += __len; +16166: this->__safe_gbump(__len); +16166: } +16166: +16166: if (__ret < __n) +16166: { +16166: const int_type __c = this->uflow(); +16166: if (!traits_type::eq_int_type(__c, traits_type::eof())) +16166: { +16166: traits_type::assign(*__s++, traits_type::to_char_type(__c)); +16166: ++__ret; +16166: } +16166: else +16166: break; +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: streamsize +16166: basic_streambuf<_CharT, _Traits>:: +16166: xsputn(const char_type* __s, streamsize __n) +16166: { +16166: streamsize __ret = 0; +16166: while (__ret < __n) +16166: { +16166: const streamsize __buf_len = this->epptr() - this->pptr(); +16166: if (__buf_len) +16166: { +16166: const streamsize __remaining = __n - __ret; +16166: const streamsize __len = std::min(__buf_len, __remaining); +16166: traits_type::copy(this->pptr(), __s, __len); +16166: __ret += __len; +16166: __s += __len; +16166: this->__safe_pbump(__len); +16166: } +16166: +16166: if (__ret < __n) +16166: { +16166: int_type __c = this->overflow(traits_type::to_int_type(*__s)); +16166: if (!traits_type::eq_int_type(__c, traits_type::eof())) +16166: { +16166: ++__ret; +16166: ++__s; +16166: } +16166: else +16166: break; +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: streamsize +16166: __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin, +16166: basic_streambuf<_CharT, _Traits>* __sbout, +16166: bool& __ineof) +16166: { +16166: streamsize __ret = 0; +16166: __ineof = true; +16166: typename _Traits::int_type __c = __sbin->sgetc(); +16166: while (!_Traits::eq_int_type(__c, _Traits::eof())) +16166: { +16166: __c = __sbout->sputc(_Traits::to_char_type(__c)); +16166: if (_Traits::eq_int_type(__c, _Traits::eof())) +16166: { +16166: __ineof = false; +16166: break; +16166: } +16166: ++__ret; +16166: __c = __sbin->snextc(); +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: inline streamsize +16166: __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, +16166: basic_streambuf<_CharT, _Traits>* __sbout) +16166: { +16166: bool __ineof; +16166: return __copy_streambufs_eof(__sbin, __sbout, __ineof); +16166: } +16166: +16166: +16166: +16166: +16166: extern template class basic_streambuf; +16166: +16166: extern template +16166: streamsize +16166: __copy_streambufs(basic_streambuf*, +16166: basic_streambuf*); +16166: +16166: +16166: extern template class basic_streambuf; +16166: +16166: extern template +16166: streamsize +16166: __copy_streambufs(basic_streambuf*, +16166: basic_streambuf*); +16166: +16166: +16166: +16166: +16166: } +16166: # 861 "/usr/include/c++/14/streambuf" 2 3 +16166: # 46 "/usr/include/c++/14/ios" 2 3 +16166: # 1 "/usr/include/c++/14/bits/basic_ios.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/locale_facets.h" 1 3 +16166: # 37 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: +16166: # 1 "/usr/include/c++/14/cwctype" 1 3 +16166: # 39 "/usr/include/c++/14/cwctype" 3 +16166: +16166: # 40 "/usr/include/c++/14/cwctype" 3 +16166: # 50 "/usr/include/c++/14/cwctype" 3 +16166: # 1 "/usr/include/wctype.h" 1 3 4 +16166: # 38 "/usr/include/wctype.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 1 3 4 +16166: # 38 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 +16166: typedef unsigned long int wctype_t; +16166: # 56 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 +16166: enum +16166: { +16166: __ISwupper = 0, +16166: __ISwlower = 1, +16166: __ISwalpha = 2, +16166: __ISwdigit = 3, +16166: __ISwxdigit = 4, +16166: __ISwspace = 5, +16166: __ISwprint = 6, +16166: __ISwgraph = 7, +16166: __ISwblank = 8, +16166: __ISwcntrl = 9, +16166: __ISwpunct = 10, +16166: __ISwalnum = 11, +16166: +16166: _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))), +16166: _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))), +16166: _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))), +16166: _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))), +16166: _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))), +16166: _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))), +16166: _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))), +16166: _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))), +16166: _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))), +16166: _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))), +16166: _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))), +16166: _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) +16166: }; +16166: +16166: +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int iswalnum (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern int iswalpha (wint_t __wc) noexcept (true); +16166: +16166: +16166: extern int iswcntrl (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: extern int iswdigit (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: extern int iswgraph (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswlower (wint_t __wc) noexcept (true); +16166: +16166: +16166: extern int iswprint (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswpunct (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswspace (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswupper (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswxdigit (wint_t __wc) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern int iswblank (wint_t __wc) noexcept (true); +16166: # 155 "/usr/include/arm-linux-gnueabihf/bits/wctype-wchar.h" 3 4 +16166: extern wctype_t wctype (const char *__property) noexcept (true); +16166: +16166: +16166: +16166: extern int iswctype (wint_t __wc, wctype_t __desc) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t towlower (wint_t __wc) noexcept (true); +16166: +16166: +16166: extern wint_t towupper (wint_t __wc) noexcept (true); +16166: +16166: } +16166: # 39 "/usr/include/wctype.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: extern "C" { +16166: +16166: +16166: +16166: typedef const __int32_t *wctrans_t; +16166: +16166: +16166: +16166: extern wctrans_t wctrans (const char *__property) noexcept (true); +16166: +16166: +16166: extern wint_t towctrans (wint_t __wc, wctrans_t __desc) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int iswalnum_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern int iswalpha_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: extern int iswcntrl_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: extern int iswdigit_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: extern int iswgraph_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswlower_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: extern int iswprint_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswpunct_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswspace_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswupper_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswxdigit_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int iswblank_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: extern wctype_t wctype_l (const char *__property, locale_t __locale) +16166: noexcept (true); +16166: +16166: +16166: +16166: extern int iswctype_l (wint_t __wc, wctype_t __desc, locale_t __locale) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern wint_t towlower_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: extern wint_t towupper_l (wint_t __wc, locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: extern wctrans_t wctrans_l (const char *__property, locale_t __locale) +16166: noexcept (true); +16166: +16166: +16166: extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc, +16166: locale_t __locale) noexcept (true); +16166: +16166: +16166: +16166: } +16166: # 51 "/usr/include/c++/14/cwctype" 2 3 +16166: # 80 "/usr/include/c++/14/cwctype" 3 +16166: namespace std +16166: { +16166: using ::wctrans_t; +16166: using ::wctype_t; +16166: using ::wint_t; +16166: +16166: using ::iswalnum; +16166: using ::iswalpha; +16166: +16166: using ::iswblank; +16166: +16166: using ::iswcntrl; +16166: using ::iswctype; +16166: using ::iswdigit; +16166: using ::iswgraph; +16166: using ::iswlower; +16166: using ::iswprint; +16166: using ::iswpunct; +16166: using ::iswspace; +16166: using ::iswupper; +16166: using ::iswxdigit; +16166: using ::towctrans; +16166: using ::towlower; +16166: using ::towupper; +16166: using ::wctrans; +16166: using ::wctype; +16166: } +16166: # 40 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +16166: # 1 "/usr/include/c++/14/cctype" 1 3 +16166: # 39 "/usr/include/c++/14/cctype" 3 +16166: +16166: # 40 "/usr/include/c++/14/cctype" 3 +16166: # 41 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_base.h" 1 3 +16166: # 36 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_base.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: struct ctype_base +16166: { +16166: +16166: typedef const int* __to_type; +16166: +16166: +16166: +16166: typedef unsigned short mask; +16166: static const mask upper = _ISupper; +16166: static const mask lower = _ISlower; +16166: static const mask alpha = _ISalpha; +16166: static const mask digit = _ISdigit; +16166: static const mask xdigit = _ISxdigit; +16166: static const mask space = _ISspace; +16166: static const mask print = _ISprint; +16166: static const mask graph = _ISalpha | _ISdigit | _ISpunct; +16166: static const mask cntrl = _IScntrl; +16166: static const mask punct = _ISpunct; +16166: static const mask alnum = _ISalpha | _ISdigit; +16166: +16166: static const mask blank = _ISblank; +16166: +16166: }; +16166: +16166: +16166: } +16166: # 42 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/streambuf_iterator.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 49 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: template +16166: class istreambuf_iterator +16166: : public iterator +16166: { +16166: public: +16166: # 70 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef typename _Traits::int_type int_type; +16166: typedef basic_streambuf<_CharT, _Traits> streambuf_type; +16166: typedef basic_istream<_CharT, _Traits> istream_type; +16166: +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: ostreambuf_iterator<_CharT2> >::__type +16166: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +16166: ostreambuf_iterator<_CharT2>); +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: _CharT2*>::__type +16166: __copy_move_a2(istreambuf_iterator<_CharT2>, +16166: istreambuf_iterator<_CharT2>, _CharT2*); +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: _CharT2*>::__type +16166: __copy_n_a(istreambuf_iterator<_CharT2>, _Size, _CharT2*, bool); +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: istreambuf_iterator<_CharT2> >::__type +16166: find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +16166: const _CharT2&); +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: void>::__type +16166: advance(istreambuf_iterator<_CharT2>&, _Distance); +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: mutable streambuf_type* _M_sbuf; +16166: int_type _M_c; +16166: +16166: public: +16166: +16166: constexpr istreambuf_iterator() noexcept +16166: : _M_sbuf(0), _M_c(traits_type::eof()) { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: istreambuf_iterator(const istreambuf_iterator&) noexcept = default; +16166: +16166: ~istreambuf_iterator() = default; +16166: +16166: +16166: +16166: istreambuf_iterator(istream_type& __s) noexcept +16166: : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { } +16166: +16166: +16166: istreambuf_iterator(streambuf_type* __s) noexcept +16166: : _M_sbuf(__s), _M_c(traits_type::eof()) { } +16166: +16166: +16166: istreambuf_iterator& +16166: operator=(const istreambuf_iterator&) noexcept = default; +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: char_type +16166: operator*() const +16166: { +16166: int_type __c = _M_get(); +16166: # 161 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +16166: return traits_type::to_char_type(__c); +16166: } +16166: +16166: +16166: istreambuf_iterator& +16166: operator++() +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: _M_sbuf->sbumpc(); +16166: _M_c = traits_type::eof(); +16166: return *this; +16166: } +16166: +16166: +16166: istreambuf_iterator +16166: operator++(int) +16166: { +16166: +16166: +16166: +16166: ; +16166: +16166: istreambuf_iterator __old = *this; +16166: __old._M_c = _M_sbuf->sbumpc(); +16166: _M_c = traits_type::eof(); +16166: return __old; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: bool +16166: equal(const istreambuf_iterator& __b) const +16166: { return _M_at_eof() == __b._M_at_eof(); } +16166: +16166: private: +16166: int_type +16166: _M_get() const +16166: { +16166: int_type __ret = _M_c; +16166: if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) +16166: _M_sbuf = 0; +16166: return __ret; +16166: } +16166: +16166: bool +16166: _M_at_eof() const +16166: { return _S_is_eof(_M_get()); } +16166: +16166: static bool +16166: _S_is_eof(int_type __c) +16166: { +16166: const int_type __eof = traits_type::eof(); +16166: return traits_type::eq_int_type(__c, __eof); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const istreambuf_iterator<_CharT, _Traits>& __a, +16166: const istreambuf_iterator<_CharT, _Traits>& __b) +16166: { return __a.equal(__b); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const istreambuf_iterator<_CharT, _Traits>& __a, +16166: const istreambuf_iterator<_CharT, _Traits>& __b) +16166: { return !__a.equal(__b); } +16166: +16166: +16166: +16166: template +16166: class ostreambuf_iterator +16166: : public iterator +16166: { +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef basic_streambuf<_CharT, _Traits> streambuf_type; +16166: typedef basic_ostream<_CharT, _Traits> ostream_type; +16166: +16166: +16166: template +16166: friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, +16166: ostreambuf_iterator<_CharT2> >::__type +16166: copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, +16166: ostreambuf_iterator<_CharT2>); +16166: +16166: private: +16166: streambuf_type* _M_sbuf; +16166: bool _M_failed; +16166: +16166: public: +16166: # 284 "/usr/include/c++/14/bits/streambuf_iterator.h" 3 +16166: ostreambuf_iterator(ostream_type& __s) noexcept +16166: : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { } +16166: +16166: +16166: ostreambuf_iterator(streambuf_type* __s) noexcept +16166: : _M_sbuf(__s), _M_failed(!_M_sbuf) { } +16166: +16166: +16166: ostreambuf_iterator& +16166: operator=(_CharT __c) +16166: { +16166: if (!_M_failed && +16166: _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof())) +16166: _M_failed = true; +16166: return *this; +16166: } +16166: +16166: +16166: [[__nodiscard__]] +16166: ostreambuf_iterator& +16166: operator*() +16166: { return *this; } +16166: +16166: +16166: ostreambuf_iterator& +16166: operator++(int) +16166: { return *this; } +16166: +16166: +16166: ostreambuf_iterator& +16166: operator++() +16166: { return *this; } +16166: +16166: +16166: [[__nodiscard__]] +16166: bool +16166: failed() const noexcept +16166: { return _M_failed; } +16166: +16166: ostreambuf_iterator& +16166: _M_put(const _CharT* __ws, streamsize __len) +16166: { +16166: if (__builtin_expect(!_M_failed, true) +16166: && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, +16166: false)) +16166: _M_failed = true; +16166: return *this; +16166: } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: ostreambuf_iterator<_CharT> >::__type +16166: copy(istreambuf_iterator<_CharT> __first, +16166: istreambuf_iterator<_CharT> __last, +16166: ostreambuf_iterator<_CharT> __result) +16166: { +16166: if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed) +16166: { +16166: bool __ineof; +16166: __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof); +16166: if (!__ineof) +16166: __result._M_failed = true; +16166: } +16166: return __result; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: ostreambuf_iterator<_CharT> >::__type +16166: __copy_move_a2(_CharT* __first, _CharT* __last, +16166: ostreambuf_iterator<_CharT> __result) +16166: { +16166: const streamsize __num = __last - __first; +16166: if (__num > 0) +16166: __result._M_put(__first, __num); +16166: return __result; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: ostreambuf_iterator<_CharT> >::__type +16166: __copy_move_a2(const _CharT* __first, const _CharT* __last, +16166: ostreambuf_iterator<_CharT> __result) +16166: { +16166: const streamsize __num = __last - __first; +16166: if (__num > 0) +16166: __result._M_put(__first, __num); +16166: return __result; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: _CharT*>::__type +16166: __copy_move_a2(istreambuf_iterator<_CharT> __first, +16166: istreambuf_iterator<_CharT> __last, _CharT* __result) +16166: { +16166: typedef istreambuf_iterator<_CharT> __is_iterator_type; +16166: typedef typename __is_iterator_type::traits_type traits_type; +16166: typedef typename __is_iterator_type::streambuf_type streambuf_type; +16166: typedef typename traits_type::int_type int_type; +16166: +16166: if (__first._M_sbuf && !__last._M_sbuf) +16166: { +16166: streambuf_type* __sb = __first._M_sbuf; +16166: int_type __c = __sb->sgetc(); +16166: while (!traits_type::eq_int_type(__c, traits_type::eof())) +16166: { +16166: const streamsize __n = __sb->egptr() - __sb->gptr(); +16166: if (__n > 1) +16166: { +16166: traits_type::copy(__result, __sb->gptr(), __n); +16166: __sb->__safe_gbump(__n); +16166: __result += __n; +16166: __c = __sb->underflow(); +16166: } +16166: else +16166: { +16166: *__result++ = traits_type::to_char_type(__c); +16166: __c = __sb->snextc(); +16166: } +16166: } +16166: } +16166: return __result; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: _CharT*>::__type +16166: __copy_n_a(istreambuf_iterator<_CharT> __it, _Size __n, _CharT* __result, +16166: bool __strict __attribute__((__unused__))) +16166: { +16166: if (__n == 0) +16166: return __result; +16166: +16166: +16166: +16166: ; +16166: _CharT* __beg = __result; +16166: __result += __it._M_sbuf->sgetn(__beg, __n); +16166: +16166: +16166: ; +16166: return __result; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: istreambuf_iterator<_CharT> >::__type +16166: find(istreambuf_iterator<_CharT> __first, +16166: istreambuf_iterator<_CharT> __last, const _CharT& __val) +16166: { +16166: typedef istreambuf_iterator<_CharT> __is_iterator_type; +16166: typedef typename __is_iterator_type::traits_type traits_type; +16166: typedef typename __is_iterator_type::streambuf_type streambuf_type; +16166: typedef typename traits_type::int_type int_type; +16166: const int_type __eof = traits_type::eof(); +16166: +16166: if (__first._M_sbuf && !__last._M_sbuf) +16166: { +16166: const int_type __ival = traits_type::to_int_type(__val); +16166: streambuf_type* __sb = __first._M_sbuf; +16166: int_type __c = __sb->sgetc(); +16166: while (!traits_type::eq_int_type(__c, __eof) +16166: && !traits_type::eq_int_type(__c, __ival)) +16166: { +16166: streamsize __n = __sb->egptr() - __sb->gptr(); +16166: if (__n > 1) +16166: { +16166: const _CharT* __p = traits_type::find(__sb->gptr(), +16166: __n, __val); +16166: if (__p) +16166: __n = __p - __sb->gptr(); +16166: __sb->__safe_gbump(__n); +16166: __c = __sb->sgetc(); +16166: } +16166: else +16166: __c = __sb->snextc(); +16166: } +16166: +16166: __first._M_c = __eof; +16166: } +16166: +16166: return __first; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, +16166: void>::__type +16166: advance(istreambuf_iterator<_CharT>& __i, _Distance __n) +16166: { +16166: if (__n == 0) +16166: return; +16166: +16166: do { if (std::__is_constant_evaluated() && !bool(__n > 0)) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: +16166: ; +16166: +16166: typedef istreambuf_iterator<_CharT> __is_iterator_type; +16166: typedef typename __is_iterator_type::traits_type traits_type; +16166: typedef typename __is_iterator_type::streambuf_type streambuf_type; +16166: typedef typename traits_type::int_type int_type; +16166: const int_type __eof = traits_type::eof(); +16166: +16166: streambuf_type* __sb = __i._M_sbuf; +16166: while (__n > 0) +16166: { +16166: streamsize __size = __sb->egptr() - __sb->gptr(); +16166: if (__size > __n) +16166: { +16166: __sb->__safe_gbump(__n); +16166: break; +16166: } +16166: +16166: __sb->__safe_gbump(__size); +16166: __n -= __size; +16166: if (traits_type::eq_int_type(__sb->underflow(), __eof)) +16166: { +16166: +16166: +16166: ; +16166: break; +16166: } +16166: } +16166: +16166: __i._M_c = __eof; +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: # 49 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 74 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template +16166: void +16166: __convert_to_v(const char*, _Tp&, ios_base::iostate&, +16166: const __c_locale&) throw(); +16166: +16166: +16166: template<> +16166: void +16166: __convert_to_v(const char*, float&, ios_base::iostate&, +16166: const __c_locale&) throw(); +16166: +16166: template<> +16166: void +16166: __convert_to_v(const char*, double&, ios_base::iostate&, +16166: const __c_locale&) throw(); +16166: +16166: template<> +16166: void +16166: __convert_to_v(const char*, long double&, ios_base::iostate&, +16166: const __c_locale&) throw(); +16166: +16166: +16166: +16166: template +16166: struct __pad +16166: { +16166: static void +16166: _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, +16166: const _CharT* __olds, streamsize __newlen, streamsize __oldlen); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: _CharT* +16166: __add_grouping(_CharT* __s, _CharT __sep, +16166: const char* __gbeg, size_t __gsize, +16166: const _CharT* __first, const _CharT* __last); +16166: +16166: +16166: +16166: +16166: template +16166: inline +16166: ostreambuf_iterator<_CharT> +16166: __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len) +16166: { +16166: __s._M_put(__ws, __len); +16166: return __s; +16166: } +16166: +16166: +16166: template +16166: inline +16166: _OutIter +16166: __write(_OutIter __s, const _CharT* __ws, int __len) +16166: { +16166: for (int __j = 0; __j < __len; __j++, ++__s) +16166: *__s = __ws[__j]; +16166: return __s; +16166: } +16166: # 152 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template +16166: class __ctype_abstract_base : public locale::facet, public ctype_base +16166: { +16166: public: +16166: +16166: +16166: typedef _CharT char_type; +16166: # 171 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: bool +16166: is(mask __m, char_type __c) const +16166: { return this->do_is(__m, __c); } +16166: # 188 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: is(const char_type *__lo, const char_type *__hi, mask *__vec) const +16166: { return this->do_is(__lo, __hi, __vec); } +16166: # 204 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: scan_is(mask __m, const char_type* __lo, const char_type* __hi) const +16166: { return this->do_scan_is(__m, __lo, __hi); } +16166: # 220 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: scan_not(mask __m, const char_type* __lo, const char_type* __hi) const +16166: { return this->do_scan_not(__m, __lo, __hi); } +16166: # 234 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: toupper(char_type __c) const +16166: { return this->do_toupper(__c); } +16166: # 249 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: toupper(char_type *__lo, const char_type* __hi) const +16166: { return this->do_toupper(__lo, __hi); } +16166: # 263 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: tolower(char_type __c) const +16166: { return this->do_tolower(__c); } +16166: # 278 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: tolower(char_type* __lo, const char_type* __hi) const +16166: { return this->do_tolower(__lo, __hi); } +16166: # 295 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: widen(char __c) const +16166: { return this->do_widen(__c); } +16166: # 314 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char* +16166: widen(const char* __lo, const char* __hi, char_type* __to) const +16166: { return this->do_widen(__lo, __hi, __to); } +16166: # 333 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char +16166: narrow(char_type __c, char __dfault) const +16166: { return this->do_narrow(__c, __dfault); } +16166: # 355 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: narrow(const char_type* __lo, const char_type* __hi, +16166: char __dfault, char* __to) const +16166: { return this->do_narrow(__lo, __hi, __dfault, __to); } +16166: +16166: protected: +16166: explicit +16166: __ctype_abstract_base(size_t __refs = 0): facet(__refs) { } +16166: +16166: virtual +16166: ~__ctype_abstract_base() { } +16166: # 380 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual bool +16166: do_is(mask __m, char_type __c) const = 0; +16166: # 399 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_is(const char_type* __lo, const char_type* __hi, +16166: mask* __vec) const = 0; +16166: # 418 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_scan_is(mask __m, const char_type* __lo, +16166: const char_type* __hi) const = 0; +16166: # 437 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_scan_not(mask __m, const char_type* __lo, +16166: const char_type* __hi) const = 0; +16166: # 455 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_toupper(char_type __c) const = 0; +16166: # 472 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_toupper(char_type* __lo, const char_type* __hi) const = 0; +16166: # 488 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_tolower(char_type __c) const = 0; +16166: # 505 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_tolower(char_type* __lo, const char_type* __hi) const = 0; +16166: # 524 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_widen(char __c) const = 0; +16166: # 545 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char* +16166: do_widen(const char* __lo, const char* __hi, char_type* __to) const = 0; +16166: # 566 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char +16166: do_narrow(char_type __c, char __dfault) const = 0; +16166: # 591 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_narrow(const char_type* __lo, const char_type* __hi, +16166: char __dfault, char* __to) const = 0; +16166: }; +16166: # 614 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template +16166: class ctype : public __ctype_abstract_base<_CharT> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef typename __ctype_abstract_base<_CharT>::mask mask; +16166: +16166: +16166: static locale::id id; +16166: +16166: explicit +16166: ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { } +16166: +16166: protected: +16166: virtual +16166: ~ctype(); +16166: +16166: virtual bool +16166: do_is(mask __m, char_type __c) const; +16166: +16166: virtual const char_type* +16166: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; +16166: +16166: virtual const char_type* +16166: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; +16166: +16166: virtual const char_type* +16166: do_scan_not(mask __m, const char_type* __lo, +16166: const char_type* __hi) const; +16166: +16166: virtual char_type +16166: do_toupper(char_type __c) const; +16166: +16166: virtual const char_type* +16166: do_toupper(char_type* __lo, const char_type* __hi) const; +16166: +16166: virtual char_type +16166: do_tolower(char_type __c) const; +16166: +16166: virtual const char_type* +16166: do_tolower(char_type* __lo, const char_type* __hi) const; +16166: +16166: virtual char_type +16166: do_widen(char __c) const; +16166: +16166: virtual const char* +16166: do_widen(const char* __lo, const char* __hi, char_type* __dest) const; +16166: +16166: virtual char +16166: do_narrow(char_type, char __dfault) const; +16166: +16166: virtual const char_type* +16166: do_narrow(const char_type* __lo, const char_type* __hi, +16166: char __dfault, char* __to) const; +16166: }; +16166: +16166: template +16166: locale::id ctype<_CharT>::id; +16166: +16166: +16166: +16166: template +16166: class ctype >; +16166: # 688 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template<> +16166: class ctype : public locale::facet, public ctype_base +16166: { +16166: public: +16166: +16166: +16166: typedef char char_type; +16166: +16166: protected: +16166: +16166: __c_locale _M_c_locale_ctype; +16166: bool _M_del; +16166: __to_type _M_toupper; +16166: __to_type _M_tolower; +16166: const mask* _M_table; +16166: mutable char _M_widen_ok; +16166: mutable char _M_widen[1 + static_cast(-1)]; +16166: mutable char _M_narrow[1 + static_cast(-1)]; +16166: mutable char _M_narrow_ok; +16166: +16166: +16166: public: +16166: +16166: static locale::id id; +16166: +16166: static const size_t table_size = 1 + static_cast(-1); +16166: # 725 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); +16166: # 738 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false, +16166: size_t __refs = 0); +16166: # 751 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: inline bool +16166: is(mask __m, char __c) const; +16166: # 766 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: inline const char* +16166: is(const char* __lo, const char* __hi, mask* __vec) const; +16166: # 780 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: inline const char* +16166: scan_is(mask __m, const char* __lo, const char* __hi) const; +16166: # 794 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: inline const char* +16166: scan_not(mask __m, const char* __lo, const char* __hi) const; +16166: # 809 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: toupper(char_type __c) const +16166: { return this->do_toupper(__c); } +16166: # 826 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: toupper(char_type *__lo, const char_type* __hi) const +16166: { return this->do_toupper(__lo, __hi); } +16166: # 842 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: tolower(char_type __c) const +16166: { return this->do_tolower(__c); } +16166: # 859 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: tolower(char_type* __lo, const char_type* __hi) const +16166: { return this->do_tolower(__lo, __hi); } +16166: # 879 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: widen(char __c) const +16166: { +16166: if (_M_widen_ok) +16166: return _M_widen[static_cast(__c)]; +16166: this->_M_widen_init(); +16166: return this->do_widen(__c); +16166: } +16166: # 906 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char* +16166: widen(const char* __lo, const char* __hi, char_type* __to) const +16166: { +16166: if (_M_widen_ok == 1) +16166: { +16166: if (__builtin_expect(__hi != __lo, true)) +16166: __builtin_memcpy(__to, __lo, __hi - __lo); +16166: return __hi; +16166: } +16166: if (!_M_widen_ok) +16166: _M_widen_init(); +16166: return this->do_widen(__lo, __hi, __to); +16166: } +16166: # 938 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char +16166: narrow(char_type __c, char __dfault) const +16166: { +16166: if (_M_narrow[static_cast(__c)]) +16166: return _M_narrow[static_cast(__c)]; +16166: const char __t = do_narrow(__c, __dfault); +16166: if (__t != __dfault) +16166: _M_narrow[static_cast(__c)] = __t; +16166: return __t; +16166: } +16166: # 971 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: const char_type* +16166: narrow(const char_type* __lo, const char_type* __hi, +16166: char __dfault, char* __to) const +16166: { +16166: if (__builtin_expect(_M_narrow_ok == 1, true)) +16166: { +16166: if (__builtin_expect(__hi != __lo, true)) +16166: __builtin_memcpy(__to, __lo, __hi - __lo); +16166: return __hi; +16166: } +16166: if (!_M_narrow_ok) +16166: _M_narrow_init(); +16166: return this->do_narrow(__lo, __hi, __dfault, __to); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: const mask* +16166: table() const throw() +16166: { return _M_table; } +16166: +16166: +16166: static const mask* +16166: classic_table() throw(); +16166: protected: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual +16166: ~ctype(); +16166: # 1021 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_toupper(char_type __c) const; +16166: # 1038 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_toupper(char_type* __lo, const char_type* __hi) const; +16166: # 1054 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_tolower(char_type __c) const; +16166: # 1071 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_tolower(char_type* __lo, const char_type* __hi) const; +16166: # 1091 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_widen(char __c) const +16166: { return __c; } +16166: # 1114 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char* +16166: do_widen(const char* __lo, const char* __hi, char_type* __to) const +16166: { +16166: if (__builtin_expect(__hi != __lo, true)) +16166: __builtin_memcpy(__to, __lo, __hi - __lo); +16166: return __hi; +16166: } +16166: # 1141 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char +16166: do_narrow(char_type __c, char __dfault __attribute__((__unused__))) const +16166: { return __c; } +16166: # 1167 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_narrow(const char_type* __lo, const char_type* __hi, +16166: char __dfault __attribute__((__unused__)), char* __to) const +16166: { +16166: if (__builtin_expect(__hi != __lo, true)) +16166: __builtin_memcpy(__to, __lo, __hi - __lo); +16166: return __hi; +16166: } +16166: +16166: private: +16166: void _M_narrow_init() const; +16166: void _M_widen_init() const; +16166: }; +16166: # 1193 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template<> +16166: class ctype : public __ctype_abstract_base +16166: { +16166: public: +16166: +16166: +16166: typedef wchar_t char_type; +16166: typedef wctype_t __wmask_type; +16166: +16166: protected: +16166: __c_locale _M_c_locale_ctype; +16166: +16166: +16166: bool _M_narrow_ok; +16166: char _M_narrow[128]; +16166: wint_t _M_widen[1 + static_cast(-1)]; +16166: +16166: +16166: mask _M_bit[16]; +16166: __wmask_type _M_wmask[16]; +16166: +16166: public: +16166: +16166: +16166: static locale::id id; +16166: # 1226 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: ctype(size_t __refs = 0); +16166: # 1237 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: ctype(__c_locale __cloc, size_t __refs = 0); +16166: +16166: protected: +16166: __wmask_type +16166: _M_convert_to_wmask(const mask __m) const throw(); +16166: +16166: +16166: virtual +16166: ~ctype(); +16166: # 1261 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual bool +16166: do_is(mask __m, char_type __c) const; +16166: # 1280 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const; +16166: # 1298 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const; +16166: # 1316 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_scan_not(mask __m, const char_type* __lo, +16166: const char_type* __hi) const; +16166: # 1333 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_toupper(char_type __c) const; +16166: # 1350 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_toupper(char_type* __lo, const char_type* __hi) const; +16166: # 1366 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_tolower(char_type __c) const; +16166: # 1383 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_tolower(char_type* __lo, const char_type* __hi) const; +16166: # 1403 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_widen(char __c) const; +16166: # 1425 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char* +16166: do_widen(const char* __lo, const char* __hi, char_type* __to) const; +16166: # 1448 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char +16166: do_narrow(char_type __c, char __dfault) const; +16166: # 1474 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual const char_type* +16166: do_narrow(const char_type* __lo, const char_type* __hi, +16166: char __dfault, char* __to) const; +16166: +16166: +16166: void +16166: _M_initialize_ctype() throw(); +16166: }; +16166: +16166: +16166: +16166: template +16166: class ctype_byname : public ctype<_CharT> +16166: { +16166: public: +16166: typedef typename ctype<_CharT>::mask mask; +16166: +16166: explicit +16166: ctype_byname(const char* __s, size_t __refs = 0); +16166: +16166: +16166: explicit +16166: ctype_byname(const string& __s, size_t __refs = 0) +16166: : ctype_byname(__s.c_str(), __refs) { } +16166: +16166: +16166: protected: +16166: virtual +16166: ~ctype_byname() { } +16166: }; +16166: +16166: +16166: template<> +16166: class ctype_byname : public ctype +16166: { +16166: public: +16166: explicit +16166: ctype_byname(const char* __s, size_t __refs = 0); +16166: +16166: +16166: explicit +16166: ctype_byname(const string& __s, size_t __refs = 0); +16166: +16166: +16166: protected: +16166: virtual +16166: ~ctype_byname(); +16166: }; +16166: +16166: +16166: template<> +16166: class ctype_byname : public ctype +16166: { +16166: public: +16166: explicit +16166: ctype_byname(const char* __s, size_t __refs = 0); +16166: +16166: +16166: explicit +16166: ctype_byname(const string& __s, size_t __refs = 0); +16166: +16166: +16166: protected: +16166: virtual +16166: ~ctype_byname(); +16166: }; +16166: +16166: +16166: +16166: } +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_inline.h" 1 3 +16166: # 37 "/usr/include/arm-linux-gnueabihf/c++/14/bits/ctype_inline.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: bool +16166: ctype:: +16166: is(mask __m, char __c) const +16166: { return _M_table[static_cast(__c)] & __m; } +16166: +16166: const char* +16166: ctype:: +16166: is(const char* __low, const char* __high, mask* __vec) const +16166: { +16166: while (__low < __high) +16166: *__vec++ = _M_table[static_cast(*__low++)]; +16166: return __high; +16166: } +16166: +16166: const char* +16166: ctype:: +16166: scan_is(mask __m, const char* __low, const char* __high) const +16166: { +16166: while (__low < __high +16166: && !(_M_table[static_cast(*__low)] & __m)) +16166: ++__low; +16166: return __low; +16166: } +16166: +16166: const char* +16166: ctype:: +16166: scan_not(mask __m, const char* __low, const char* __high) const +16166: { +16166: while (__low < __high +16166: && (_M_table[static_cast(*__low)] & __m) != 0) +16166: ++__low; +16166: return __low; +16166: } +16166: +16166: +16166: } +16166: # 1547 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: class __num_base +16166: { +16166: public: +16166: +16166: +16166: enum +16166: { +16166: _S_ominus, +16166: _S_oplus, +16166: _S_ox, +16166: _S_oX, +16166: _S_odigits, +16166: _S_odigits_end = _S_odigits + 16, +16166: _S_oudigits = _S_odigits_end, +16166: _S_oudigits_end = _S_oudigits + 16, +16166: _S_oe = _S_odigits + 14, +16166: _S_oE = _S_oudigits + 14, +16166: _S_oend = _S_oudigits_end +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: static const char* _S_atoms_out; +16166: +16166: +16166: +16166: static const char* _S_atoms_in; +16166: +16166: enum +16166: { +16166: _S_iminus, +16166: _S_iplus, +16166: _S_ix, +16166: _S_iX, +16166: _S_izero, +16166: _S_ie = _S_izero + 14, +16166: _S_iE = _S_izero + 20, +16166: _S_iend = 26 +16166: }; +16166: +16166: +16166: +16166: static void +16166: _S_format_float(const ios_base& __io, char* __fptr, char __mod) throw(); +16166: }; +16166: +16166: template +16166: struct __numpunct_cache : public locale::facet +16166: { +16166: const char* _M_grouping; +16166: size_t _M_grouping_size; +16166: bool _M_use_grouping; +16166: const _CharT* _M_truename; +16166: size_t _M_truename_size; +16166: const _CharT* _M_falsename; +16166: size_t _M_falsename_size; +16166: _CharT _M_decimal_point; +16166: _CharT _M_thousands_sep; +16166: +16166: +16166: +16166: +16166: +16166: _CharT _M_atoms_out[__num_base::_S_oend]; +16166: +16166: +16166: +16166: +16166: +16166: _CharT _M_atoms_in[__num_base::_S_iend]; +16166: +16166: bool _M_allocated; +16166: +16166: __numpunct_cache(size_t __refs = 0) +16166: : facet(__refs), _M_grouping(0), _M_grouping_size(0), +16166: _M_use_grouping(false), +16166: _M_truename(0), _M_truename_size(0), _M_falsename(0), +16166: _M_falsename_size(0), _M_decimal_point(_CharT()), +16166: _M_thousands_sep(_CharT()), _M_allocated(false) +16166: { } +16166: +16166: ~__numpunct_cache(); +16166: +16166: void +16166: _M_cache(const locale& __loc); +16166: +16166: private: +16166: __numpunct_cache& +16166: operator=(const __numpunct_cache&); +16166: +16166: explicit +16166: __numpunct_cache(const __numpunct_cache&); +16166: }; +16166: +16166: template +16166: __numpunct_cache<_CharT>::~__numpunct_cache() +16166: { +16166: if (_M_allocated) +16166: { +16166: delete [] _M_grouping; +16166: delete [] _M_truename; +16166: delete [] _M_falsename; +16166: } +16166: } +16166: +16166: namespace __cxx11 { +16166: # 1677 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template +16166: class numpunct : public locale::facet +16166: { +16166: public: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef basic_string<_CharT> string_type; +16166: +16166: typedef __numpunct_cache<_CharT> __cache_type; +16166: +16166: protected: +16166: __cache_type* _M_data; +16166: +16166: public: +16166: +16166: static locale::id id; +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: numpunct(size_t __refs = 0) +16166: : facet(__refs), _M_data(0) +16166: { _M_initialize_numpunct(); } +16166: # 1715 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: numpunct(__cache_type* __cache, size_t __refs = 0) +16166: : facet(__refs), _M_data(__cache) +16166: { _M_initialize_numpunct(); } +16166: # 1729 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: numpunct(__c_locale __cloc, size_t __refs = 0) +16166: : facet(__refs), _M_data(0) +16166: { _M_initialize_numpunct(__cloc); } +16166: # 1743 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: decimal_point() const +16166: { return this->do_decimal_point(); } +16166: # 1756 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: char_type +16166: thousands_sep() const +16166: { return this->do_thousands_sep(); } +16166: # 1787 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: string +16166: grouping() const +16166: { return this->do_grouping(); } +16166: # 1800 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: string_type +16166: truename() const +16166: { return this->do_truename(); } +16166: # 1813 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: string_type +16166: falsename() const +16166: { return this->do_falsename(); } +16166: +16166: protected: +16166: +16166: virtual +16166: ~numpunct(); +16166: # 1830 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_decimal_point() const +16166: { return _M_data->_M_decimal_point; } +16166: # 1842 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual char_type +16166: do_thousands_sep() const +16166: { return _M_data->_M_thousands_sep; } +16166: # 1855 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual string +16166: do_grouping() const +16166: { return _M_data->_M_grouping; } +16166: # 1868 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual string_type +16166: do_truename() const +16166: { return _M_data->_M_truename; } +16166: # 1881 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual string_type +16166: do_falsename() const +16166: { return _M_data->_M_falsename; } +16166: +16166: +16166: void +16166: _M_initialize_numpunct(__c_locale __cloc = 0); +16166: }; +16166: +16166: template +16166: locale::id numpunct<_CharT>::id; +16166: +16166: template<> +16166: numpunct::~numpunct(); +16166: +16166: template<> +16166: void +16166: numpunct::_M_initialize_numpunct(__c_locale __cloc); +16166: +16166: +16166: template<> +16166: numpunct::~numpunct(); +16166: +16166: template<> +16166: void +16166: numpunct::_M_initialize_numpunct(__c_locale __cloc); +16166: +16166: +16166: +16166: template +16166: class numpunct_byname : public numpunct<_CharT> +16166: { +16166: public: +16166: typedef _CharT char_type; +16166: typedef basic_string<_CharT> string_type; +16166: +16166: explicit +16166: numpunct_byname(const char* __s, size_t __refs = 0) +16166: : numpunct<_CharT>(__refs) +16166: { +16166: if (__builtin_strcmp(__s, "C") != 0 +16166: && __builtin_strcmp(__s, "POSIX") != 0) +16166: { +16166: __c_locale __tmp; +16166: this->_S_create_c_locale(__tmp, __s); +16166: this->_M_initialize_numpunct(__tmp); +16166: this->_S_destroy_c_locale(__tmp); +16166: } +16166: } +16166: +16166: +16166: explicit +16166: numpunct_byname(const string& __s, size_t __refs = 0) +16166: : numpunct_byname(__s.c_str(), __refs) { } +16166: +16166: +16166: protected: +16166: virtual +16166: ~numpunct_byname() { } +16166: }; +16166: +16166: } +16166: +16166: +16166: # 1959 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template +16166: class num_get : public locale::facet +16166: { +16166: public: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef _InIter iter_type; +16166: +16166: +16166: +16166: static locale::id id; +16166: # 1980 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: num_get(size_t __refs = 0) : facet(__refs) { } +16166: # 2006 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, bool& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: # 2043 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, long& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned short& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned int& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned long& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, long long& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned long long& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: #pragma GCC diagnostic pop +16166: # 2106 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, float& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, double& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, long double& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: # 2149 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: get(iter_type __in, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, void*& __v) const +16166: { return this->do_get(__in, __end, __io, __err, __v); } +16166: +16166: protected: +16166: +16166: virtual ~num_get() { } +16166: +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iter_type +16166: _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, +16166: string&) const; +16166: +16166: template +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iter_type +16166: _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, +16166: _ValueT&) const; +16166: +16166: template +16166: typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type +16166: _M_find(const _CharT2*, size_t __len, _CharT2 __c) const +16166: { +16166: int __ret = -1; +16166: if (__len <= 10) +16166: { +16166: if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len)) +16166: __ret = __c - _CharT2('0'); +16166: } +16166: else +16166: { +16166: if (__c >= _CharT2('0') && __c <= _CharT2('9')) +16166: __ret = __c - _CharT2('0'); +16166: else if (__c >= _CharT2('a') && __c <= _CharT2('f')) +16166: __ret = 10 + (__c - _CharT2('a')); +16166: else if (__c >= _CharT2('A') && __c <= _CharT2('F')) +16166: __ret = 10 + (__c - _CharT2('A')); +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename __gnu_cxx::__enable_if::__value, +16166: int>::__type +16166: _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const +16166: { +16166: int __ret = -1; +16166: const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c); +16166: if (__q) +16166: { +16166: __ret = __q - __zero; +16166: if (__ret > 15) +16166: __ret -= 6; +16166: } +16166: return __ret; +16166: } +16166: # 2222 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual iter_type +16166: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; +16166: +16166: virtual iter_type +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, long& __v) const +16166: { return _M_extract_int(__beg, __end, __io, __err, __v); } +16166: +16166: virtual iter_type +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned short& __v) const +16166: { return _M_extract_int(__beg, __end, __io, __err, __v); } +16166: +16166: virtual iter_type +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned int& __v) const +16166: { return _M_extract_int(__beg, __end, __io, __err, __v); } +16166: +16166: virtual iter_type +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned long& __v) const +16166: { return _M_extract_int(__beg, __end, __io, __err, __v); } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: virtual iter_type +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, long long& __v) const +16166: { return _M_extract_int(__beg, __end, __io, __err, __v); } +16166: +16166: virtual iter_type +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, unsigned long long& __v) const +16166: { return _M_extract_int(__beg, __end, __io, __err, __v); } +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: virtual iter_type +16166: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, float&) const; +16166: +16166: virtual iter_type +16166: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, +16166: double&) const; +16166: # 2277 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual iter_type +16166: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, +16166: long double&) const; +16166: +16166: +16166: virtual iter_type +16166: do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, void*&) const; +16166: # 2305 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: }; +16166: +16166: template +16166: locale::id num_get<_CharT, _InIter>::id; +16166: # 2323 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: template +16166: class num_put : public locale::facet +16166: { +16166: public: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef _OutIter iter_type; +16166: +16166: +16166: +16166: static locale::id id; +16166: # 2344 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: explicit +16166: num_put(size_t __refs = 0) : facet(__refs) { } +16166: # 2362 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: # 2404 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, long __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, +16166: unsigned long __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, +16166: unsigned long long __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: #pragma GCC diagnostic pop +16166: # 2470 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, double __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, +16166: long double __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: # 2495 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: iter_type +16166: put(iter_type __s, ios_base& __io, char_type __fill, +16166: const void* __v) const +16166: { return this->do_put(__s, __io, __fill, __v); } +16166: +16166: protected: +16166: template +16166: iter_type +16166: _M_insert_float(iter_type, ios_base& __io, char_type __fill, +16166: char __mod, _ValueT __v) const; +16166: +16166: void +16166: _M_group_float(const char* __grouping, size_t __grouping_size, +16166: char_type __sep, const char_type* __p, char_type* __new, +16166: char_type* __cs, int& __len) const; +16166: +16166: template +16166: iter_type +16166: _M_insert_int(iter_type, ios_base& __io, char_type __fill, +16166: _ValueT __v) const; +16166: +16166: void +16166: _M_group_int(const char* __grouping, size_t __grouping_size, +16166: char_type __sep, ios_base& __io, char_type* __new, +16166: char_type* __cs, int& __len) const; +16166: +16166: void +16166: _M_pad(char_type __fill, streamsize __w, ios_base& __io, +16166: char_type* __new, const char_type* __cs, int& __len) const; +16166: +16166: +16166: virtual +16166: ~num_put() { } +16166: # 2543 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: virtual iter_type +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const; +16166: +16166: virtual iter_type +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const +16166: { return _M_insert_int(__s, __io, __fill, __v); } +16166: +16166: virtual iter_type +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, +16166: unsigned long __v) const +16166: { return _M_insert_int(__s, __io, __fill, __v); } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: virtual iter_type +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, +16166: long long __v) const +16166: { return _M_insert_int(__s, __io, __fill, __v); } +16166: +16166: virtual iter_type +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, +16166: unsigned long long __v) const +16166: { return _M_insert_int(__s, __io, __fill, __v); } +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: virtual iter_type +16166: do_put(iter_type, ios_base&, char_type, double) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual iter_type +16166: do_put(iter_type, ios_base&, char_type, long double) const; +16166: +16166: +16166: virtual iter_type +16166: do_put(iter_type, ios_base&, char_type, const void*) const; +16166: # 2598 "/usr/include/c++/14/bits/locale_facets.h" 3 +16166: }; +16166: +16166: template +16166: locale::id num_put<_CharT, _OutIter>::id; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline bool +16166: isspace(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::space, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: isprint(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::print, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: iscntrl(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::cntrl, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: isupper(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::upper, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: islower(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::lower, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: isalpha(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::alpha, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: isdigit(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::digit, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: ispunct(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::punct, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: isxdigit(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::xdigit, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: isalnum(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::alnum, __c); } +16166: +16166: +16166: template +16166: inline bool +16166: isgraph(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::graph, __c); } +16166: +16166: +16166: +16166: template +16166: inline bool +16166: isblank(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).is(ctype_base::blank, __c); } +16166: +16166: +16166: +16166: template +16166: inline _CharT +16166: toupper(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).toupper(__c); } +16166: +16166: +16166: template +16166: inline _CharT +16166: tolower(_CharT __c, const locale& __loc) +16166: { return use_facet >(__loc).tolower(__c); } +16166: +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/locale_facets.tcc" 1 3 +16166: # 33 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template +16166: struct __use_cache +16166: { +16166: const _Facet* +16166: operator() (const locale& __loc) const; +16166: }; +16166: +16166: +16166: template +16166: struct __use_cache<__numpunct_cache<_CharT> > +16166: { +16166: const __numpunct_cache<_CharT>* +16166: operator() (const locale& __loc) const +16166: { +16166: const size_t __i = numpunct<_CharT>::id._M_id(); +16166: const locale::facet** __caches = __loc._M_impl->_M_caches; +16166: if (!__caches[__i]) +16166: { +16166: __numpunct_cache<_CharT>* __tmp = 0; +16166: try +16166: { +16166: __tmp = new __numpunct_cache<_CharT>; +16166: __tmp->_M_cache(__loc); +16166: } +16166: catch(...) +16166: { +16166: delete __tmp; +16166: throw; +16166: } +16166: __loc._M_impl->_M_install_cache(__tmp, __i); +16166: } +16166: return static_cast*>(__caches[__i]); +16166: } +16166: }; +16166: +16166: template +16166: void +16166: __numpunct_cache<_CharT>::_M_cache(const locale& __loc) +16166: { +16166: const numpunct<_CharT>& __np = use_facet >(__loc); +16166: +16166: char* __grouping = 0; +16166: _CharT* __truename = 0; +16166: _CharT* __falsename = 0; +16166: try +16166: { +16166: const string& __g = __np.grouping(); +16166: _M_grouping_size = __g.size(); +16166: __grouping = new char[_M_grouping_size]; +16166: __g.copy(__grouping, _M_grouping_size); +16166: _M_use_grouping = (_M_grouping_size +16166: && static_cast(__grouping[0]) > 0 +16166: && (__grouping[0] +16166: != __gnu_cxx::__numeric_traits::__max)); +16166: +16166: const basic_string<_CharT>& __tn = __np.truename(); +16166: _M_truename_size = __tn.size(); +16166: __truename = new _CharT[_M_truename_size]; +16166: __tn.copy(__truename, _M_truename_size); +16166: +16166: const basic_string<_CharT>& __fn = __np.falsename(); +16166: _M_falsename_size = __fn.size(); +16166: __falsename = new _CharT[_M_falsename_size]; +16166: __fn.copy(__falsename, _M_falsename_size); +16166: +16166: _M_decimal_point = __np.decimal_point(); +16166: _M_thousands_sep = __np.thousands_sep(); +16166: +16166: const ctype<_CharT>& __ct = use_facet >(__loc); +16166: __ct.widen(__num_base::_S_atoms_out, +16166: __num_base::_S_atoms_out +16166: + __num_base::_S_oend, _M_atoms_out); +16166: __ct.widen(__num_base::_S_atoms_in, +16166: __num_base::_S_atoms_in +16166: + __num_base::_S_iend, _M_atoms_in); +16166: +16166: _M_grouping = __grouping; +16166: _M_truename = __truename; +16166: _M_falsename = __falsename; +16166: _M_allocated = true; +16166: } +16166: catch(...) +16166: { +16166: delete [] __grouping; +16166: delete [] __truename; +16166: delete [] __falsename; +16166: throw; +16166: } +16166: } +16166: # 139 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: __attribute__ ((__pure__)) bool +16166: __verify_grouping(const char* __grouping, size_t __grouping_size, +16166: const string& __grouping_tmp) throw (); +16166: +16166: +16166: +16166: template +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: _InIter +16166: num_get<_CharT, _InIter>:: +16166: _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io, +16166: ios_base::iostate& __err, string& __xtrc) const +16166: { +16166: typedef char_traits<_CharT> __traits_type; +16166: typedef __numpunct_cache<_CharT> __cache_type; +16166: __use_cache<__cache_type> __uc; +16166: const locale& __loc = __io._M_getloc(); +16166: const __cache_type* __lc = __uc(__loc); +16166: const _CharT* __lit = __lc->_M_atoms_in; +16166: char_type __c = char_type(); +16166: +16166: +16166: bool __testeof = __beg == __end; +16166: +16166: +16166: if (!__testeof) +16166: { +16166: __c = *__beg; +16166: const bool __plus = __c == __lit[__num_base::_S_iplus]; +16166: if ((__plus || __c == __lit[__num_base::_S_iminus]) +16166: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +16166: && !(__c == __lc->_M_decimal_point)) +16166: { +16166: __xtrc += __plus ? '+' : '-'; +16166: if (++__beg != __end) +16166: __c = *__beg; +16166: else +16166: __testeof = true; +16166: } +16166: } +16166: +16166: +16166: bool __found_mantissa = false; +16166: int __sep_pos = 0; +16166: while (!__testeof) +16166: { +16166: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +16166: || __c == __lc->_M_decimal_point) +16166: break; +16166: else if (__c == __lit[__num_base::_S_izero]) +16166: { +16166: if (!__found_mantissa) +16166: { +16166: __xtrc += '0'; +16166: __found_mantissa = true; +16166: } +16166: ++__sep_pos; +16166: +16166: if (++__beg != __end) +16166: __c = *__beg; +16166: else +16166: __testeof = true; +16166: } +16166: else +16166: break; +16166: } +16166: +16166: +16166: bool __found_dec = false; +16166: bool __found_sci = false; +16166: string __found_grouping; +16166: if (__lc->_M_use_grouping) +16166: __found_grouping.reserve(32); +16166: const char_type* __lit_zero = __lit + __num_base::_S_izero; +16166: +16166: if (!__lc->_M_allocated) +16166: +16166: while (!__testeof) +16166: { +16166: const int __digit = _M_find(__lit_zero, 10, __c); +16166: if (__digit != -1) +16166: { +16166: __xtrc += '0' + __digit; +16166: __found_mantissa = true; +16166: } +16166: else if (__c == __lc->_M_decimal_point +16166: && !__found_dec && !__found_sci) +16166: { +16166: __xtrc += '.'; +16166: __found_dec = true; +16166: } +16166: else if ((__c == __lit[__num_base::_S_ie] +16166: || __c == __lit[__num_base::_S_iE]) +16166: && !__found_sci && __found_mantissa) +16166: { +16166: +16166: __xtrc += 'e'; +16166: __found_sci = true; +16166: +16166: +16166: if (++__beg != __end) +16166: { +16166: __c = *__beg; +16166: const bool __plus = __c == __lit[__num_base::_S_iplus]; +16166: if (__plus || __c == __lit[__num_base::_S_iminus]) +16166: __xtrc += __plus ? '+' : '-'; +16166: else +16166: continue; +16166: } +16166: else +16166: { +16166: __testeof = true; +16166: break; +16166: } +16166: } +16166: else +16166: break; +16166: +16166: if (++__beg != __end) +16166: __c = *__beg; +16166: else +16166: __testeof = true; +16166: } +16166: else +16166: while (!__testeof) +16166: { +16166: +16166: +16166: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +16166: { +16166: if (!__found_dec && !__found_sci) +16166: { +16166: +16166: +16166: if (__sep_pos) +16166: { +16166: __found_grouping += static_cast(__sep_pos); +16166: __sep_pos = 0; +16166: } +16166: else +16166: { +16166: +16166: +16166: __xtrc.clear(); +16166: break; +16166: } +16166: } +16166: else +16166: break; +16166: } +16166: else if (__c == __lc->_M_decimal_point) +16166: { +16166: if (!__found_dec && !__found_sci) +16166: { +16166: +16166: +16166: +16166: if (__found_grouping.size()) +16166: __found_grouping += static_cast(__sep_pos); +16166: __xtrc += '.'; +16166: __found_dec = true; +16166: } +16166: else +16166: break; +16166: } +16166: else +16166: { +16166: const char_type* __q = +16166: __traits_type::find(__lit_zero, 10, __c); +16166: if (__q) +16166: { +16166: __xtrc += '0' + (__q - __lit_zero); +16166: __found_mantissa = true; +16166: ++__sep_pos; +16166: } +16166: else if ((__c == __lit[__num_base::_S_ie] +16166: || __c == __lit[__num_base::_S_iE]) +16166: && !__found_sci && __found_mantissa) +16166: { +16166: +16166: if (__found_grouping.size() && !__found_dec) +16166: __found_grouping += static_cast(__sep_pos); +16166: __xtrc += 'e'; +16166: __found_sci = true; +16166: +16166: +16166: if (++__beg != __end) +16166: { +16166: __c = *__beg; +16166: const bool __plus = __c == __lit[__num_base::_S_iplus]; +16166: if ((__plus || __c == __lit[__num_base::_S_iminus]) +16166: && !(__lc->_M_use_grouping +16166: && __c == __lc->_M_thousands_sep) +16166: && !(__c == __lc->_M_decimal_point)) +16166: __xtrc += __plus ? '+' : '-'; +16166: else +16166: continue; +16166: } +16166: else +16166: { +16166: __testeof = true; +16166: break; +16166: } +16166: } +16166: else +16166: break; +16166: } +16166: +16166: if (++__beg != __end) +16166: __c = *__beg; +16166: else +16166: __testeof = true; +16166: } +16166: +16166: +16166: +16166: if (__found_grouping.size()) +16166: { +16166: +16166: if (!__found_dec && !__found_sci) +16166: __found_grouping += static_cast(__sep_pos); +16166: +16166: if (!std::__verify_grouping(__lc->_M_grouping, +16166: __lc->_M_grouping_size, +16166: __found_grouping)) +16166: __err = ios_base::failbit; +16166: } +16166: +16166: return __beg; +16166: } +16166: +16166: template +16166: template +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: _InIter +16166: num_get<_CharT, _InIter>:: +16166: _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, +16166: ios_base::iostate& __err, _ValueT& __v) const +16166: { +16166: typedef char_traits<_CharT> __traits_type; +16166: using __gnu_cxx::__add_unsigned; +16166: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; +16166: typedef __numpunct_cache<_CharT> __cache_type; +16166: __use_cache<__cache_type> __uc; +16166: const locale& __loc = __io._M_getloc(); +16166: const __cache_type* __lc = __uc(__loc); +16166: const _CharT* __lit = __lc->_M_atoms_in; +16166: char_type __c = char_type(); +16166: +16166: +16166: const ios_base::fmtflags __basefield = __io.flags() +16166: & ios_base::basefield; +16166: const bool __oct = __basefield == ios_base::oct; +16166: int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10); +16166: +16166: +16166: bool __testeof = __beg == __end; +16166: +16166: +16166: bool __negative = false; +16166: if (!__testeof) +16166: { +16166: __c = *__beg; +16166: __negative = __c == __lit[__num_base::_S_iminus]; +16166: if ((__negative || __c == __lit[__num_base::_S_iplus]) +16166: && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +16166: && !(__c == __lc->_M_decimal_point)) +16166: { +16166: if (++__beg != __end) +16166: __c = *__beg; +16166: else +16166: __testeof = true; +16166: } +16166: } +16166: +16166: +16166: +16166: bool __found_zero = false; +16166: int __sep_pos = 0; +16166: while (!__testeof) +16166: { +16166: if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +16166: || __c == __lc->_M_decimal_point) +16166: break; +16166: else if (__c == __lit[__num_base::_S_izero] +16166: && (!__found_zero || __base == 10)) +16166: { +16166: __found_zero = true; +16166: ++__sep_pos; +16166: if (__basefield == 0) +16166: __base = 8; +16166: if (__base == 8) +16166: __sep_pos = 0; +16166: } +16166: else if (__found_zero +16166: && (__c == __lit[__num_base::_S_ix] +16166: || __c == __lit[__num_base::_S_iX])) +16166: { +16166: if (__basefield == 0) +16166: __base = 16; +16166: if (__base == 16) +16166: { +16166: __found_zero = false; +16166: __sep_pos = 0; +16166: } +16166: else +16166: break; +16166: } +16166: else +16166: break; +16166: +16166: if (++__beg != __end) +16166: { +16166: __c = *__beg; +16166: if (!__found_zero) +16166: break; +16166: } +16166: else +16166: __testeof = true; +16166: } +16166: +16166: +16166: +16166: const size_t __len = (__base == 16 ? __num_base::_S_iend +16166: - __num_base::_S_izero : __base); +16166: +16166: +16166: typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; +16166: string __found_grouping; +16166: if (__lc->_M_use_grouping) +16166: __found_grouping.reserve(32); +16166: bool __testfail = false; +16166: bool __testoverflow = false; +16166: const __unsigned_type __max = +16166: (__negative && __num_traits::__is_signed) +16166: ? -static_cast<__unsigned_type>(__num_traits::__min) +16166: : __num_traits::__max; +16166: const __unsigned_type __smax = __max / __base; +16166: __unsigned_type __result = 0; +16166: int __digit = 0; +16166: const char_type* __lit_zero = __lit + __num_base::_S_izero; +16166: +16166: if (!__lc->_M_allocated) +16166: +16166: while (!__testeof) +16166: { +16166: __digit = _M_find(__lit_zero, __len, __c); +16166: if (__digit == -1) +16166: break; +16166: +16166: if (__result > __smax) +16166: __testoverflow = true; +16166: else +16166: { +16166: __result *= __base; +16166: __testoverflow |= __result > __max - __digit; +16166: __result += __digit; +16166: ++__sep_pos; +16166: } +16166: +16166: if (++__beg != __end) +16166: __c = *__beg; +16166: else +16166: __testeof = true; +16166: } +16166: else +16166: while (!__testeof) +16166: { +16166: +16166: +16166: if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) +16166: { +16166: +16166: +16166: if (__sep_pos) +16166: { +16166: __found_grouping += static_cast(__sep_pos); +16166: __sep_pos = 0; +16166: } +16166: else +16166: { +16166: __testfail = true; +16166: break; +16166: } +16166: } +16166: else if (__c == __lc->_M_decimal_point) +16166: break; +16166: else +16166: { +16166: const char_type* __q = +16166: __traits_type::find(__lit_zero, __len, __c); +16166: if (!__q) +16166: break; +16166: +16166: __digit = __q - __lit_zero; +16166: if (__digit > 15) +16166: __digit -= 6; +16166: if (__result > __smax) +16166: __testoverflow = true; +16166: else +16166: { +16166: __result *= __base; +16166: __testoverflow |= __result > __max - __digit; +16166: __result += __digit; +16166: ++__sep_pos; +16166: } +16166: } +16166: +16166: if (++__beg != __end) +16166: __c = *__beg; +16166: else +16166: __testeof = true; +16166: } +16166: +16166: +16166: +16166: if (__found_grouping.size()) +16166: { +16166: +16166: __found_grouping += static_cast(__sep_pos); +16166: +16166: if (!std::__verify_grouping(__lc->_M_grouping, +16166: __lc->_M_grouping_size, +16166: __found_grouping)) +16166: __err = ios_base::failbit; +16166: } +16166: +16166: +16166: +16166: if ((!__sep_pos && !__found_zero && !__found_grouping.size()) +16166: || __testfail) +16166: { +16166: __v = 0; +16166: __err = ios_base::failbit; +16166: } +16166: else if (__testoverflow) +16166: { +16166: if (__negative && __num_traits::__is_signed) +16166: __v = __num_traits::__min; +16166: else +16166: __v = __num_traits::__max; +16166: __err = ios_base::failbit; +16166: } +16166: else +16166: __v = __negative ? -__result : __result; +16166: +16166: if (__testeof) +16166: __err |= ios_base::eofbit; +16166: return __beg; +16166: } +16166: +16166: +16166: +16166: template +16166: _InIter +16166: num_get<_CharT, _InIter>:: +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, bool& __v) const +16166: { +16166: if (!(__io.flags() & ios_base::boolalpha)) +16166: { +16166: +16166: +16166: +16166: long __l = -1; +16166: __beg = _M_extract_int(__beg, __end, __io, __err, __l); +16166: if (__l == 0 || __l == 1) +16166: __v = bool(__l); +16166: else +16166: { +16166: +16166: +16166: __v = true; +16166: __err = ios_base::failbit; +16166: if (__beg == __end) +16166: __err |= ios_base::eofbit; +16166: } +16166: } +16166: else +16166: { +16166: +16166: typedef __numpunct_cache<_CharT> __cache_type; +16166: __use_cache<__cache_type> __uc; +16166: const locale& __loc = __io._M_getloc(); +16166: const __cache_type* __lc = __uc(__loc); +16166: +16166: bool __testf = true; +16166: bool __testt = true; +16166: bool __donef = __lc->_M_falsename_size == 0; +16166: bool __donet = __lc->_M_truename_size == 0; +16166: bool __testeof = false; +16166: size_t __n = 0; +16166: while (!__donef || !__donet) +16166: { +16166: if (__beg == __end) +16166: { +16166: __testeof = true; +16166: break; +16166: } +16166: +16166: const char_type __c = *__beg; +16166: +16166: if (!__donef) +16166: __testf = __c == __lc->_M_falsename[__n]; +16166: +16166: if (!__testf && __donet) +16166: break; +16166: +16166: if (!__donet) +16166: __testt = __c == __lc->_M_truename[__n]; +16166: +16166: if (!__testt && __donef) +16166: break; +16166: +16166: if (!__testt && !__testf) +16166: break; +16166: +16166: ++__n; +16166: ++__beg; +16166: +16166: __donef = !__testf || __n >= __lc->_M_falsename_size; +16166: __donet = !__testt || __n >= __lc->_M_truename_size; +16166: } +16166: if (__testf && __n == __lc->_M_falsename_size && __n) +16166: { +16166: __v = false; +16166: if (__testt && __n == __lc->_M_truename_size) +16166: __err = ios_base::failbit; +16166: else +16166: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; +16166: } +16166: else if (__testt && __n == __lc->_M_truename_size && __n) +16166: { +16166: __v = true; +16166: __err = __testeof ? ios_base::eofbit : ios_base::goodbit; +16166: } +16166: else +16166: { +16166: +16166: +16166: __v = false; +16166: __err = ios_base::failbit; +16166: if (__testeof) +16166: __err |= ios_base::eofbit; +16166: } +16166: } +16166: return __beg; +16166: } +16166: +16166: template +16166: _InIter +16166: num_get<_CharT, _InIter>:: +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, float& __v) const +16166: { +16166: string __xtrc; +16166: __xtrc.reserve(32); +16166: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); +16166: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); +16166: if (__beg == __end) +16166: __err |= ios_base::eofbit; +16166: return __beg; +16166: } +16166: +16166: template +16166: _InIter +16166: num_get<_CharT, _InIter>:: +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, double& __v) const +16166: { +16166: string __xtrc; +16166: __xtrc.reserve(32); +16166: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); +16166: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); +16166: if (__beg == __end) +16166: __err |= ios_base::eofbit; +16166: return __beg; +16166: } +16166: # 735 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: template +16166: _InIter +16166: num_get<_CharT, _InIter>:: +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, long double& __v) const +16166: { +16166: string __xtrc; +16166: __xtrc.reserve(32); +16166: __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc); +16166: std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale()); +16166: if (__beg == __end) +16166: __err |= ios_base::eofbit; +16166: return __beg; +16166: } +16166: +16166: template +16166: _InIter +16166: num_get<_CharT, _InIter>:: +16166: do_get(iter_type __beg, iter_type __end, ios_base& __io, +16166: ios_base::iostate& __err, void*& __v) const +16166: { +16166: +16166: typedef ios_base::fmtflags fmtflags; +16166: const fmtflags __fmt = __io.flags(); +16166: __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex); +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: typedef __gnu_cxx::__conditional_type<(sizeof(void*) +16166: <= sizeof(unsigned long)), +16166: unsigned long, unsigned long long>::__type _UIntPtrType; +16166: #pragma GCC diagnostic pop +16166: +16166: _UIntPtrType __ul; +16166: __beg = _M_extract_int(__beg, __end, __io, __err, __ul); +16166: +16166: +16166: __io.flags(__fmt); +16166: +16166: __v = reinterpret_cast(__ul); +16166: return __beg; +16166: } +16166: # 798 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: template +16166: void +16166: num_put<_CharT, _OutIter>:: +16166: _M_pad(_CharT __fill, streamsize __w, ios_base& __io, +16166: _CharT* __new, const _CharT* __cs, int& __len) const +16166: { +16166: +16166: +16166: __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new, +16166: __cs, __w, __len); +16166: __len = static_cast(__w); +16166: } +16166: +16166: +16166: +16166: template +16166: int +16166: __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, +16166: ios_base::fmtflags __flags, bool __dec) +16166: { +16166: _CharT* __buf = __bufend; +16166: if (__builtin_expect(__dec, true)) +16166: { +16166: +16166: do +16166: { +16166: *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; +16166: __v /= 10; +16166: } +16166: while (__v != 0); +16166: } +16166: else if ((__flags & ios_base::basefield) == ios_base::oct) +16166: { +16166: +16166: do +16166: { +16166: *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits]; +16166: __v >>= 3; +16166: } +16166: while (__v != 0); +16166: } +16166: else +16166: { +16166: +16166: const bool __uppercase = __flags & ios_base::uppercase; +16166: const int __case_offset = __uppercase ? __num_base::_S_oudigits +16166: : __num_base::_S_odigits; +16166: do +16166: { +16166: *--__buf = __lit[(__v & 0xf) + __case_offset]; +16166: __v >>= 4; +16166: } +16166: while (__v != 0); +16166: } +16166: return __bufend - __buf; +16166: } +16166: +16166: +16166: +16166: template +16166: void +16166: num_put<_CharT, _OutIter>:: +16166: _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep, +16166: ios_base&, _CharT* __new, _CharT* __cs, int& __len) const +16166: { +16166: _CharT* __p = std::__add_grouping(__new, __sep, __grouping, +16166: __grouping_size, __cs, __cs + __len); +16166: __len = __p - __new; +16166: } +16166: +16166: template +16166: template +16166: _OutIter +16166: num_put<_CharT, _OutIter>:: +16166: _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, +16166: _ValueT __v) const +16166: { +16166: using __gnu_cxx::__add_unsigned; +16166: typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; +16166: typedef __numpunct_cache<_CharT> __cache_type; +16166: __use_cache<__cache_type> __uc; +16166: const locale& __loc = __io._M_getloc(); +16166: const __cache_type* __lc = __uc(__loc); +16166: const _CharT* __lit = __lc->_M_atoms_out; +16166: const ios_base::fmtflags __flags = __io.flags(); +16166: +16166: +16166: const int __ilen = 5 * sizeof(_ValueT); +16166: _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * __ilen)); +16166: +16166: +16166: +16166: const ios_base::fmtflags __basefield = __flags & ios_base::basefield; +16166: const bool __dec = (__basefield != ios_base::oct +16166: && __basefield != ios_base::hex); +16166: const __unsigned_type __u = ((__v > 0 || !__dec) +16166: ? __unsigned_type(__v) +16166: : -__unsigned_type(__v)); +16166: int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec); +16166: __cs += __ilen - __len; +16166: +16166: +16166: if (__lc->_M_use_grouping) +16166: { +16166: +16166: +16166: _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * (__len + 1) +16166: * 2)); +16166: _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size, +16166: __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len); +16166: __cs = __cs2 + 2; +16166: } +16166: +16166: +16166: if (__builtin_expect(__dec, true)) +16166: { +16166: +16166: if (__v >= 0) +16166: { +16166: if (bool(__flags & ios_base::showpos) +16166: && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) +16166: *--__cs = __lit[__num_base::_S_oplus], ++__len; +16166: } +16166: else +16166: *--__cs = __lit[__num_base::_S_ominus], ++__len; +16166: } +16166: else if (bool(__flags & ios_base::showbase) && __v) +16166: { +16166: if (__basefield == ios_base::oct) +16166: *--__cs = __lit[__num_base::_S_odigits], ++__len; +16166: else +16166: { +16166: +16166: const bool __uppercase = __flags & ios_base::uppercase; +16166: *--__cs = __lit[__num_base::_S_ox + __uppercase]; +16166: +16166: *--__cs = __lit[__num_base::_S_odigits]; +16166: __len += 2; +16166: } +16166: } +16166: +16166: +16166: const streamsize __w = __io.width(); +16166: if (__w > static_cast(__len)) +16166: { +16166: _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * __w)); +16166: _M_pad(__fill, __w, __io, __cs3, __cs, __len); +16166: __cs = __cs3; +16166: } +16166: __io.width(0); +16166: +16166: +16166: +16166: return std::__write(__s, __cs, __len); +16166: } +16166: +16166: template +16166: void +16166: num_put<_CharT, _OutIter>:: +16166: _M_group_float(const char* __grouping, size_t __grouping_size, +16166: _CharT __sep, const _CharT* __p, _CharT* __new, +16166: _CharT* __cs, int& __len) const +16166: { +16166: +16166: +16166: +16166: const int __declen = __p ? __p - __cs : __len; +16166: _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping, +16166: __grouping_size, +16166: __cs, __cs + __declen); +16166: +16166: +16166: int __newlen = __p2 - __new; +16166: if (__p) +16166: { +16166: char_traits<_CharT>::copy(__p2, __p, __len - __declen); +16166: __newlen += __len - __declen; +16166: } +16166: __len = __newlen; +16166: } +16166: # 992 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: template +16166: template +16166: _OutIter +16166: num_put<_CharT, _OutIter>:: +16166: _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod, +16166: _ValueT __v) const +16166: { +16166: typedef __numpunct_cache<_CharT> __cache_type; +16166: __use_cache<__cache_type> __uc; +16166: const locale& __loc = __io._M_getloc(); +16166: const __cache_type* __lc = __uc(__loc); +16166: +16166: +16166: const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision(); +16166: +16166: const int __max_digits = +16166: __gnu_cxx::__numeric_traits<_ValueT>::__digits10; +16166: +16166: +16166: int __len; +16166: +16166: char __fbuf[16]; +16166: __num_base::_S_format_float(__io, __fbuf, __mod); +16166: +16166: +16166: +16166: const bool __use_prec = +16166: (__io.flags() & ios_base::floatfield) != ios_base::floatfield; +16166: +16166: +16166: +16166: int __cs_size = __max_digits * 3; +16166: char* __cs = static_cast(__builtin_alloca(__cs_size)); +16166: if (__use_prec) +16166: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +16166: __fbuf, __prec, __v); +16166: else +16166: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +16166: __fbuf, __v); +16166: +16166: +16166: if (__len >= __cs_size) +16166: { +16166: __cs_size = __len + 1; +16166: __cs = static_cast(__builtin_alloca(__cs_size)); +16166: if (__use_prec) +16166: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +16166: __fbuf, __prec, __v); +16166: else +16166: __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, +16166: __fbuf, __v); +16166: } +16166: # 1065 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: const ctype<_CharT>& __ctype = use_facet >(__loc); +16166: +16166: _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * __len)); +16166: __ctype.widen(__cs, __cs + __len, __ws); +16166: +16166: +16166: _CharT* __wp = 0; +16166: const char* __p = char_traits::find(__cs, __len, '.'); +16166: if (__p) +16166: { +16166: __wp = __ws + (__p - __cs); +16166: *__wp = __lc->_M_decimal_point; +16166: } +16166: +16166: +16166: +16166: +16166: if (__lc->_M_use_grouping +16166: && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9' +16166: && __cs[1] >= '0' && __cs[2] >= '0'))) +16166: { +16166: +16166: +16166: _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * __len * 2)); +16166: +16166: streamsize __off = 0; +16166: if (__cs[0] == '-' || __cs[0] == '+') +16166: { +16166: __off = 1; +16166: __ws2[0] = __ws[0]; +16166: __len -= 1; +16166: } +16166: +16166: _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size, +16166: __lc->_M_thousands_sep, __wp, __ws2 + __off, +16166: __ws + __off, __len); +16166: __len += __off; +16166: +16166: __ws = __ws2; +16166: } +16166: +16166: +16166: const streamsize __w = __io.width(); +16166: if (__w > static_cast(__len)) +16166: { +16166: _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * __w)); +16166: _M_pad(__fill, __w, __io, __ws3, __ws, __len); +16166: __ws = __ws3; +16166: } +16166: __io.width(0); +16166: +16166: +16166: +16166: return std::__write(__s, __ws, __len); +16166: } +16166: +16166: template +16166: _OutIter +16166: num_put<_CharT, _OutIter>:: +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const +16166: { +16166: const ios_base::fmtflags __flags = __io.flags(); +16166: if ((__flags & ios_base::boolalpha) == 0) +16166: { +16166: const long __l = __v; +16166: __s = _M_insert_int(__s, __io, __fill, __l); +16166: } +16166: else +16166: { +16166: typedef __numpunct_cache<_CharT> __cache_type; +16166: __use_cache<__cache_type> __uc; +16166: const locale& __loc = __io._M_getloc(); +16166: const __cache_type* __lc = __uc(__loc); +16166: +16166: const _CharT* __name = __v ? __lc->_M_truename +16166: : __lc->_M_falsename; +16166: int __len = __v ? __lc->_M_truename_size +16166: : __lc->_M_falsename_size; +16166: +16166: const streamsize __w = __io.width(); +16166: if (__w > static_cast(__len)) +16166: { +16166: const streamsize __plen = __w - __len; +16166: _CharT* __ps +16166: = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) +16166: * __plen)); +16166: +16166: char_traits<_CharT>::assign(__ps, __plen, __fill); +16166: __io.width(0); +16166: +16166: if ((__flags & ios_base::adjustfield) == ios_base::left) +16166: { +16166: __s = std::__write(__s, __name, __len); +16166: __s = std::__write(__s, __ps, __plen); +16166: } +16166: else +16166: { +16166: __s = std::__write(__s, __ps, __plen); +16166: __s = std::__write(__s, __name, __len); +16166: } +16166: return __s; +16166: } +16166: __io.width(0); +16166: __s = std::__write(__s, __name, __len); +16166: } +16166: return __s; +16166: } +16166: +16166: template +16166: _OutIter +16166: num_put<_CharT, _OutIter>:: +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const +16166: { return _M_insert_float(__s, __io, __fill, char(), __v); } +16166: # 1190 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: template +16166: _OutIter +16166: num_put<_CharT, _OutIter>:: +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, +16166: long double __v) const +16166: { return _M_insert_float(__s, __io, __fill, 'L', __v); } +16166: +16166: template +16166: _OutIter +16166: num_put<_CharT, _OutIter>:: +16166: do_put(iter_type __s, ios_base& __io, char_type __fill, +16166: const void* __v) const +16166: { +16166: const ios_base::fmtflags __flags = __io.flags(); +16166: const ios_base::fmtflags __fmt = ~(ios_base::basefield +16166: | ios_base::uppercase); +16166: __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase)); +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: typedef __gnu_cxx::__conditional_type<(sizeof(const void*) +16166: <= sizeof(unsigned long)), +16166: unsigned long, unsigned long long>::__type _UIntPtrType; +16166: #pragma GCC diagnostic pop +16166: +16166: __s = _M_insert_int(__s, __io, __fill, +16166: reinterpret_cast<_UIntPtrType>(__v)); +16166: __io.flags(__flags); +16166: return __s; +16166: } +16166: # 1230 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: +16166: # 1239 "/usr/include/c++/14/bits/locale_facets.tcc" 3 +16166: template +16166: void +16166: __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, +16166: _CharT* __news, const _CharT* __olds, +16166: streamsize __newlen, streamsize __oldlen) +16166: { +16166: const size_t __plen = static_cast(__newlen - __oldlen); +16166: const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; +16166: +16166: +16166: if (__adjust == ios_base::left) +16166: { +16166: _Traits::copy(__news, __olds, __oldlen); +16166: _Traits::assign(__news + __oldlen, __plen, __fill); +16166: return; +16166: } +16166: +16166: size_t __mod = 0; +16166: if (__adjust == ios_base::internal) +16166: { +16166: +16166: +16166: +16166: const locale& __loc = __io._M_getloc(); +16166: const ctype<_CharT>& __ctype = use_facet >(__loc); +16166: +16166: if (__ctype.widen('-') == __olds[0] +16166: || __ctype.widen('+') == __olds[0]) +16166: { +16166: __news[0] = __olds[0]; +16166: __mod = 1; +16166: ++__news; +16166: } +16166: else if (__ctype.widen('0') == __olds[0] +16166: && __oldlen > 1 +16166: && (__ctype.widen('x') == __olds[1] +16166: || __ctype.widen('X') == __olds[1])) +16166: { +16166: __news[0] = __olds[0]; +16166: __news[1] = __olds[1]; +16166: __mod = 2; +16166: __news += 2; +16166: } +16166: +16166: } +16166: _Traits::assign(__news, __plen, __fill); +16166: _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); +16166: } +16166: +16166: template +16166: _CharT* +16166: __add_grouping(_CharT* __s, _CharT __sep, +16166: const char* __gbeg, size_t __gsize, +16166: const _CharT* __first, const _CharT* __last) +16166: { +16166: size_t __idx = 0; +16166: size_t __ctr = 0; +16166: +16166: while (__last - __first > __gbeg[__idx] +16166: && static_cast(__gbeg[__idx]) > 0 +16166: && __gbeg[__idx] != __gnu_cxx::__numeric_traits::__max) +16166: { +16166: __last -= __gbeg[__idx]; +16166: __idx < __gsize - 1 ? ++__idx : ++__ctr; +16166: } +16166: +16166: while (__first != __last) +16166: *__s++ = *__first++; +16166: +16166: while (__ctr--) +16166: { +16166: *__s++ = __sep; +16166: for (char __i = __gbeg[__idx]; __i > 0; --__i) +16166: *__s++ = *__first++; +16166: } +16166: +16166: while (__idx--) +16166: { +16166: *__s++ = __sep; +16166: for (char __i = __gbeg[__idx]; __i > 0; --__i) +16166: *__s++ = *__first++; +16166: } +16166: +16166: return __s; +16166: } +16166: +16166: +16166: +16166: +16166: extern template class __cxx11:: numpunct; +16166: extern template class __cxx11:: numpunct_byname; +16166: extern template class num_get; +16166: extern template class num_put; +16166: extern template class ctype_byname; +16166: +16166: extern template +16166: const ctype* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const numpunct* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const num_put* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const num_get* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const ctype& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: const numpunct& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: const num_put& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: const num_get& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: +16166: extern template class __cxx11:: numpunct; +16166: extern template class __cxx11:: numpunct_byname; +16166: extern template class num_get; +16166: extern template class num_put; +16166: extern template class ctype_byname; +16166: +16166: extern template +16166: const ctype* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const numpunct* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const num_put* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const num_get* +16166: __try_use_facet >(const locale&) noexcept; +16166: +16166: extern template +16166: const ctype& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: const numpunct& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: const num_put& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: const num_get& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: +16166: +16166: +16166: } +16166: # 2700 "/usr/include/c++/14/bits/locale_facets.h" 2 3 +16166: # 38 "/usr/include/c++/14/bits/basic_ios.h" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: inline const _Facet& +16166: __check_facet(const _Facet* __f) +16166: { +16166: if (!__f) +16166: __throw_bad_cast(); +16166: return *__f; +16166: } +16166: # 66 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: template +16166: class basic_ios : public ios_base +16166: { +16166: +16166: +16166: +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef typename _Traits::int_type int_type; +16166: typedef typename _Traits::pos_type pos_type; +16166: typedef typename _Traits::off_type off_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef ctype<_CharT> __ctype_type; +16166: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > +16166: __num_put_type; +16166: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > +16166: __num_get_type; +16166: +16166: +16166: +16166: protected: +16166: basic_ostream<_CharT, _Traits>* _M_tie; +16166: mutable char_type _M_fill; +16166: mutable bool _M_fill_init; +16166: basic_streambuf<_CharT, _Traits>* _M_streambuf; +16166: +16166: +16166: const __ctype_type* _M_ctype; +16166: +16166: const __num_put_type* _M_num_put; +16166: +16166: const __num_get_type* _M_num_get; +16166: +16166: public: +16166: # 121 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: explicit operator bool() const +16166: { return !this->fail(); } +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: operator!() const +16166: { return this->fail(); } +16166: # 140 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: iostate +16166: rdstate() const +16166: { return _M_streambuf_state; } +16166: # 151 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: void +16166: clear(iostate __state = goodbit); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: setstate(iostate __state) +16166: { this->clear(this->rdstate() | __state); } +16166: +16166: +16166: +16166: +16166: void +16166: _M_setstate(iostate __state) +16166: { +16166: +16166: +16166: _M_streambuf_state |= __state; +16166: if (this->exceptions() & __state) +16166: throw; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: good() const +16166: { return this->rdstate() == 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: eof() const +16166: { return (this->rdstate() & eofbit) != 0; } +16166: # 204 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: bool +16166: fail() const +16166: { return (this->rdstate() & (badbit | failbit)) != 0; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: bad() const +16166: { return (this->rdstate() & badbit) != 0; } +16166: # 225 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: iostate +16166: exceptions() const +16166: { return _M_exception; } +16166: # 260 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: void +16166: exceptions(iostate __except) +16166: { +16166: _M_exception = __except; +16166: this->clear(_M_streambuf_state); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: basic_ios(basic_streambuf<_CharT, _Traits>* __sb) +16166: : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0), +16166: _M_ctype(0), _M_num_put(0), _M_num_get(0) +16166: { this->init(__sb); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual +16166: ~basic_ios() { } +16166: # 298 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: basic_ostream<_CharT, _Traits>* +16166: tie() const +16166: { return _M_tie; } +16166: # 310 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: basic_ostream<_CharT, _Traits>* +16166: tie(basic_ostream<_CharT, _Traits>* __tiestr) +16166: { +16166: basic_ostream<_CharT, _Traits>* __old = _M_tie; +16166: _M_tie = __tiestr; +16166: return __old; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_streambuf<_CharT, _Traits>* +16166: rdbuf() const +16166: { return _M_streambuf; } +16166: # 350 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: basic_streambuf<_CharT, _Traits>* +16166: rdbuf(basic_streambuf<_CharT, _Traits>* __sb); +16166: # 364 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: basic_ios& +16166: copyfmt(const basic_ios& __rhs); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: char_type +16166: fill() const +16166: { +16166: if (!_M_fill_init) +16166: { +16166: _M_fill = this->widen(' '); +16166: _M_fill_init = true; +16166: } +16166: return _M_fill; +16166: } +16166: # 393 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: char_type +16166: fill(char_type __ch) +16166: { +16166: char_type __old = this->fill(); +16166: _M_fill = __ch; +16166: return __old; +16166: } +16166: # 413 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: locale +16166: imbue(const locale& __loc); +16166: # 433 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: char +16166: narrow(char_type __c, char __dfault) const +16166: { return __check_facet(_M_ctype).narrow(__c, __dfault); } +16166: # 452 "/usr/include/c++/14/bits/basic_ios.h" 3 +16166: char_type +16166: widen(char __c) const +16166: { return __check_facet(_M_ctype).widen(__c); } +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_ios() +16166: : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false), +16166: _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0) +16166: { } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: init(basic_streambuf<_CharT, _Traits>* __sb); +16166: +16166: +16166: basic_ios(const basic_ios&) = delete; +16166: basic_ios& operator=(const basic_ios&) = delete; +16166: +16166: void +16166: move(basic_ios& __rhs) +16166: { +16166: ios_base::_M_move(__rhs); +16166: _M_cache_locale(_M_ios_locale); +16166: this->tie(__rhs.tie(nullptr)); +16166: _M_fill = __rhs._M_fill; +16166: _M_fill_init = __rhs._M_fill_init; +16166: _M_streambuf = nullptr; +16166: } +16166: +16166: void +16166: move(basic_ios&& __rhs) +16166: { this->move(__rhs); } +16166: +16166: void +16166: swap(basic_ios& __rhs) noexcept +16166: { +16166: ios_base::_M_swap(__rhs); +16166: _M_cache_locale(_M_ios_locale); +16166: __rhs._M_cache_locale(__rhs._M_ios_locale); +16166: std::swap(_M_tie, __rhs._M_tie); +16166: std::swap(_M_fill, __rhs._M_fill); +16166: std::swap(_M_fill_init, __rhs._M_fill_init); +16166: } +16166: +16166: void +16166: set_rdbuf(basic_streambuf<_CharT, _Traits>* __sb) +16166: { _M_streambuf = __sb; } +16166: +16166: +16166: void +16166: _M_cache_locale(const locale& __loc); +16166: }; +16166: +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/basic_ios.tcc" 1 3 +16166: # 33 "/usr/include/c++/14/bits/basic_ios.tcc" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/basic_ios.tcc" 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: void +16166: basic_ios<_CharT, _Traits>::clear(iostate __state) +16166: { +16166: if (this->rdbuf()) +16166: _M_streambuf_state = __state; +16166: else +16166: _M_streambuf_state = __state | badbit; +16166: if (this->exceptions() & this->rdstate()) +16166: __throw_ios_failure(("basic_ios::clear")); +16166: } +16166: +16166: template +16166: basic_streambuf<_CharT, _Traits>* +16166: basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb) +16166: { +16166: basic_streambuf<_CharT, _Traits>* __old = _M_streambuf; +16166: _M_streambuf = __sb; +16166: this->clear(); +16166: return __old; +16166: } +16166: +16166: template +16166: basic_ios<_CharT, _Traits>& +16166: basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) +16166: { +16166: +16166: +16166: if (this != std::__addressof(__rhs)) +16166: { +16166: +16166: +16166: +16166: +16166: _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ? +16166: _M_local_word : new _Words[__rhs._M_word_size]; +16166: +16166: +16166: _Callback_list* __cb = __rhs._M_callbacks; +16166: if (__cb) +16166: __cb->_M_add_reference(); +16166: _M_call_callbacks(erase_event); +16166: if (_M_word != _M_local_word) +16166: { +16166: delete [] _M_word; +16166: _M_word = 0; +16166: } +16166: _M_dispose_callbacks(); +16166: +16166: +16166: _M_callbacks = __cb; +16166: for (int __i = 0; __i < __rhs._M_word_size; ++__i) +16166: __words[__i] = __rhs._M_word[__i]; +16166: _M_word = __words; +16166: _M_word_size = __rhs._M_word_size; +16166: +16166: this->flags(__rhs.flags()); +16166: this->width(__rhs.width()); +16166: this->precision(__rhs.precision()); +16166: this->tie(__rhs.tie()); +16166: this->fill(__rhs.fill()); +16166: _M_ios_locale = __rhs.getloc(); +16166: _M_cache_locale(_M_ios_locale); +16166: +16166: _M_call_callbacks(copyfmt_event); +16166: +16166: +16166: this->exceptions(__rhs.exceptions()); +16166: } +16166: return *this; +16166: } +16166: +16166: +16166: template +16166: locale +16166: basic_ios<_CharT, _Traits>::imbue(const locale& __loc) +16166: { +16166: locale __old(this->getloc()); +16166: ios_base::imbue(__loc); +16166: _M_cache_locale(__loc); +16166: if (this->rdbuf() != 0) +16166: this->rdbuf()->pubimbue(__loc); +16166: return __old; +16166: } +16166: +16166: template +16166: void +16166: basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) +16166: { +16166: +16166: ios_base::_M_init(); +16166: +16166: +16166: _M_cache_locale(_M_ios_locale); +16166: # 146 "/usr/include/c++/14/bits/basic_ios.tcc" 3 +16166: _M_fill = _CharT(); +16166: _M_fill_init = false; +16166: +16166: _M_tie = 0; +16166: _M_exception = goodbit; +16166: _M_streambuf = __sb; +16166: _M_streambuf_state = __sb ? goodbit : badbit; +16166: } +16166: +16166: template +16166: void +16166: basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc) +16166: { +16166: _M_ctype = std::__try_use_facet<__ctype_type>(__loc); +16166: _M_num_put = std::__try_use_facet<__num_put_type>(__loc); +16166: _M_num_get = std::__try_use_facet<__num_get_type>(__loc); +16166: } +16166: +16166: +16166: +16166: +16166: extern template class basic_ios; +16166: +16166: +16166: extern template class basic_ios; +16166: +16166: +16166: +16166: +16166: } +16166: # 521 "/usr/include/c++/14/bits/basic_ios.h" 2 3 +16166: # 47 "/usr/include/c++/14/ios" 2 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 50 "/usr/include/c++/14/ios" 2 3 +16166: # 41 "/usr/include/c++/14/ostream" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 48 "/usr/include/c++/14/ostream" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 65 "/usr/include/c++/14/ostream" 3 +16166: template +16166: class basic_ostream : virtual public basic_ios<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef typename _Traits::int_type int_type; +16166: typedef typename _Traits::pos_type pos_type; +16166: typedef typename _Traits::off_type off_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +16166: typedef basic_ios<_CharT, _Traits> __ios_type; +16166: typedef basic_ostream<_CharT, _Traits> __ostream_type; +16166: typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > +16166: __num_put_type; +16166: typedef ctype<_CharT> __ctype_type; +16166: # 91 "/usr/include/c++/14/ostream" 3 +16166: explicit +16166: basic_ostream(__streambuf_type* __sb) +16166: { this->init(__sb); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual +16166: ~basic_ostream() { } +16166: +16166: +16166: class sentry; +16166: friend class sentry; +16166: # 115 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: operator<<(__ostream_type& (*__pf)(__ostream_type&)) +16166: { +16166: +16166: +16166: +16166: return __pf(*this); +16166: } +16166: +16166: __ostream_type& +16166: operator<<(__ios_type& (*__pf)(__ios_type&)) +16166: { +16166: +16166: +16166: +16166: __pf(*this); +16166: return *this; +16166: } +16166: +16166: __ostream_type& +16166: operator<<(ios_base& (*__pf) (ios_base&)) +16166: { +16166: +16166: +16166: +16166: __pf(*this); +16166: return *this; +16166: } +16166: # 173 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: operator<<(long __n) +16166: { return _M_insert(__n); } +16166: +16166: __ostream_type& +16166: operator<<(unsigned long __n) +16166: { return _M_insert(__n); } +16166: +16166: __ostream_type& +16166: operator<<(bool __n) +16166: { return _M_insert(__n); } +16166: +16166: __ostream_type& +16166: operator<<(short __n); +16166: +16166: __ostream_type& +16166: operator<<(unsigned short __n) +16166: { +16166: +16166: +16166: return _M_insert(static_cast(__n)); +16166: } +16166: +16166: __ostream_type& +16166: operator<<(int __n); +16166: +16166: __ostream_type& +16166: operator<<(unsigned int __n) +16166: { +16166: +16166: +16166: return _M_insert(static_cast(__n)); +16166: } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: __ostream_type& +16166: operator<<(long long __n) +16166: { return _M_insert(__n); } +16166: +16166: __ostream_type& +16166: operator<<(unsigned long long __n) +16166: { return _M_insert(__n); } +16166: #pragma GCC diagnostic pop +16166: # 230 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: operator<<(double __f) +16166: { return _M_insert(__f); } +16166: +16166: __ostream_type& +16166: operator<<(float __f) +16166: { +16166: +16166: +16166: return _M_insert(static_cast(__f)); +16166: } +16166: +16166: __ostream_type& +16166: operator<<(long double __f) +16166: { return _M_insert(__f); } +16166: # 300 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: operator<<(const void* __p) +16166: { return _M_insert(__p); } +16166: +16166: +16166: __ostream_type& +16166: operator<<(nullptr_t) +16166: { return *this << "nullptr"; } +16166: # 338 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: operator<<(__streambuf_type* __sb); +16166: # 371 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: put(char_type __c); +16166: # 390 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: write(const char_type* __s, streamsize __n); +16166: # 403 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: flush(); +16166: # 413 "/usr/include/c++/14/ostream" 3 +16166: pos_type +16166: tellp(); +16166: # 424 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: seekp(pos_type); +16166: # 436 "/usr/include/c++/14/ostream" 3 +16166: __ostream_type& +16166: seekp(off_type, ios_base::seekdir); +16166: +16166: protected: +16166: basic_ostream() +16166: { this->init(0); } +16166: +16166: +16166: +16166: basic_ostream(basic_iostream<_CharT, _Traits>&) { } +16166: +16166: basic_ostream(const basic_ostream&) = delete; +16166: +16166: basic_ostream(basic_ostream&& __rhs) +16166: : __ios_type() +16166: { __ios_type::move(__rhs); } +16166: +16166: +16166: +16166: basic_ostream& operator=(const basic_ostream&) = delete; +16166: +16166: basic_ostream& +16166: operator=(basic_ostream&& __rhs) +16166: { +16166: swap(__rhs); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_ostream& __rhs) +16166: { __ios_type::swap(__rhs); } +16166: +16166: +16166: template +16166: __ostream_type& +16166: _M_insert(_ValueT __v); +16166: +16166: private: +16166: +16166: void +16166: _M_write(const char_type* __s, streamsize __n) +16166: { std::__ostream_insert(*this, __s, __n); } +16166: +16166: }; +16166: # 488 "/usr/include/c++/14/ostream" 3 +16166: template +16166: class basic_ostream<_CharT, _Traits>::sentry +16166: { +16166: +16166: bool _M_ok; +16166: basic_ostream<_CharT, _Traits>& _M_os; +16166: +16166: public: +16166: # 507 "/usr/include/c++/14/ostream" 3 +16166: explicit +16166: sentry(basic_ostream<_CharT, _Traits>& __os); +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~sentry() +16166: { +16166: +16166: if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()) +16166: { +16166: +16166: if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1) +16166: _M_os.setstate(ios_base::badbit); +16166: } +16166: } +16166: #pragma GCC diagnostic pop +16166: # 539 "/usr/include/c++/14/ostream" 3 +16166: explicit +16166: +16166: operator bool() const +16166: { return _M_ok; } +16166: }; +16166: # 561 "/usr/include/c++/14/ostream" 3 +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) +16166: { +16166: if (__out.width() != 0) +16166: return __ostream_insert(__out, &__c, 1); +16166: __out.put(__c); +16166: return __out; +16166: } +16166: +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __out, char __c) +16166: { return (__out << __out.widen(__c)); } +16166: +16166: +16166: template +16166: inline basic_ostream& +16166: operator<<(basic_ostream& __out, char __c) +16166: { +16166: if (__out.width() != 0) +16166: return __ostream_insert(__out, &__c, 1); +16166: __out.put(__c); +16166: return __out; +16166: } +16166: +16166: +16166: template +16166: inline basic_ostream& +16166: operator<<(basic_ostream& __out, signed char __c) +16166: { return (__out << static_cast(__c)); } +16166: +16166: template +16166: inline basic_ostream& +16166: operator<<(basic_ostream& __out, unsigned char __c) +16166: { return (__out << static_cast(__c)); } +16166: # 652 "/usr/include/c++/14/ostream" 3 +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) +16166: { +16166: if (!__s) +16166: __out.setstate(ios_base::badbit); +16166: else +16166: __ostream_insert(__out, __s, +16166: static_cast(_Traits::length(__s))); +16166: return __out; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits> & +16166: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s); +16166: +16166: +16166: template +16166: inline basic_ostream& +16166: operator<<(basic_ostream& __out, const char* __s) +16166: { +16166: if (!__s) +16166: __out.setstate(ios_base::badbit); +16166: else +16166: __ostream_insert(__out, __s, +16166: static_cast(_Traits::length(__s))); +16166: return __out; +16166: } +16166: +16166: +16166: template +16166: inline basic_ostream& +16166: operator<<(basic_ostream& __out, const signed char* __s) +16166: { return (__out << reinterpret_cast(__s)); } +16166: +16166: template +16166: inline basic_ostream & +16166: operator<<(basic_ostream& __out, const unsigned char* __s) +16166: { return (__out << reinterpret_cast(__s)); } +16166: # 742 "/usr/include/c++/14/ostream" 3 +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: endl(basic_ostream<_CharT, _Traits>& __os) +16166: { return flush(__os.put(__os.widen('\n'))); } +16166: # 754 "/usr/include/c++/14/ostream" 3 +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: ends(basic_ostream<_CharT, _Traits>& __os) +16166: { return __os.put(_CharT()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline basic_ostream<_CharT, _Traits>& +16166: flush(basic_ostream<_CharT, _Traits>& __os) +16166: { return __os.flush(); } +16166: # 786 "/usr/include/c++/14/ostream" 3 +16166: template +16166: using _Require_derived_from_ios_base +16166: = _Require, __not_>, +16166: is_convertible::type, ios_base*>>; +16166: +16166: template, +16166: typename +16166: = decltype(std::declval<_Os&>() << std::declval())> +16166: using __rvalue_stream_insertion_t = _Os&&; +16166: # 808 "/usr/include/c++/14/ostream" 3 +16166: template +16166: inline __rvalue_stream_insertion_t<_Ostream, _Tp> +16166: operator<<(_Ostream&& __os, const _Tp& __x) +16166: { +16166: __os << __x; +16166: return std::move(__os); +16166: } +16166: # 1019 "/usr/include/c++/14/ostream" 3 +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/ostream.tcc" 1 3 +16166: # 37 "/usr/include/c++/14/bits/ostream.tcc" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/ostream.tcc" 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>::sentry:: +16166: sentry(basic_ostream<_CharT, _Traits>& __os) +16166: : _M_ok(false), _M_os(__os) +16166: { +16166: +16166: if (__os.tie() && __os.good()) +16166: __os.tie()->flush(); +16166: +16166: if (__os.good()) +16166: _M_ok = true; +16166: else if (__os.bad()) +16166: __os.setstate(ios_base::failbit); +16166: } +16166: +16166: template +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: _M_insert(_ValueT __v) +16166: { +16166: sentry __cerb(*this); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: +16166: const __num_put_type& __np = __check_facet(this->_M_num_put); +16166: +16166: +16166: +16166: +16166: if (__np.put(*this, *this, this->fill(), __v).failed()) +16166: __err |= ios_base::badbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: operator<<(short __n) +16166: { +16166: +16166: +16166: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; +16166: if (__fmt == ios_base::oct || __fmt == ios_base::hex) +16166: return _M_insert(static_cast(static_cast(__n))); +16166: else +16166: return _M_insert(static_cast(__n)); +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: operator<<(int __n) +16166: { +16166: +16166: +16166: const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield; +16166: if (__fmt == ios_base::oct || __fmt == ios_base::hex) +16166: return _M_insert(static_cast(static_cast(__n))); +16166: else +16166: return _M_insert(static_cast(__n)); +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: operator<<(__streambuf_type* __sbin) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: sentry __cerb(*this); +16166: if (__cerb && __sbin) +16166: { +16166: try +16166: { +16166: if (!__copy_streambufs(__sbin, this->rdbuf())) +16166: __err |= ios_base::failbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::failbit); } +16166: } +16166: else if (!__sbin) +16166: __err |= ios_base::badbit; +16166: if (__err) +16166: this->setstate(__err); +16166: return *this; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: put(char_type __c) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: sentry __cerb(*this); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const int_type __put = this->rdbuf()->sputc(__c); +16166: if (traits_type::eq_int_type(__put, traits_type::eof())) +16166: __err |= ios_base::badbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: write(const _CharT* __s, streamsize __n) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: sentry __cerb(*this); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: if (this->rdbuf()->sputn(__s, __n) != __n) +16166: __err = ios_base::badbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(ios_base::badbit); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: flush() +16166: { +16166: +16166: +16166: +16166: +16166: +16166: if (__streambuf_type* __buf = this->rdbuf()) +16166: { +16166: sentry __cerb(*this); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: if (this->rdbuf()->pubsync() == -1) +16166: __err |= ios_base::badbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: typename basic_ostream<_CharT, _Traits>::pos_type +16166: basic_ostream<_CharT, _Traits>:: +16166: tellp() +16166: { +16166: sentry __cerb(*this); +16166: pos_type __ret = pos_type(-1); +16166: if (!this->fail()) +16166: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); +16166: return __ret; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: seekp(pos_type __pos) +16166: { +16166: sentry __cerb(*this); +16166: if (!this->fail()) +16166: { +16166: +16166: +16166: const pos_type __p = this->rdbuf()->pubseekpos(__pos, ios_base::out); +16166: +16166: +16166: if (__p == pos_type(off_type(-1))) +16166: this->setstate(ios_base::failbit); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: basic_ostream<_CharT, _Traits>:: +16166: seekp(off_type __off, ios_base::seekdir __dir) +16166: { +16166: sentry __cerb(*this); +16166: if (!this->fail()) +16166: { +16166: +16166: +16166: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, +16166: ios_base::out); +16166: +16166: +16166: if (__p == pos_type(off_type(-1))) +16166: this->setstate(ios_base::failbit); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_ostream<_CharT, _Traits>& +16166: operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) +16166: { +16166: if (!__s) +16166: __out.setstate(ios_base::badbit); +16166: else +16166: { +16166: +16166: +16166: const size_t __clen = char_traits::length(__s); +16166: try +16166: { +16166: struct __ptr_guard +16166: { +16166: _CharT *__p; +16166: __ptr_guard (_CharT *__ip): __p(__ip) { } +16166: ~__ptr_guard() { delete[] __p; } +16166: _CharT* __get() { return __p; } +16166: } __pg (new _CharT[__clen]); +16166: +16166: _CharT *__ws = __pg.__get(); +16166: for (size_t __i = 0; __i < __clen; ++__i) +16166: __ws[__i] = __out.widen(__s[__i]); +16166: __ostream_insert(__out, __ws, __clen); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: __out._M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { __out._M_setstate(ios_base::badbit); } +16166: } +16166: return __out; +16166: } +16166: +16166: +16166: +16166: +16166: extern template class basic_ostream; +16166: extern template ostream& endl(ostream&); +16166: extern template ostream& ends(ostream&); +16166: extern template ostream& flush(ostream&); +16166: extern template ostream& operator<<(ostream&, char); +16166: extern template ostream& operator<<(ostream&, unsigned char); +16166: extern template ostream& operator<<(ostream&, signed char); +16166: extern template ostream& operator<<(ostream&, const char*); +16166: extern template ostream& operator<<(ostream&, const unsigned char*); +16166: extern template ostream& operator<<(ostream&, const signed char*); +16166: +16166: extern template ostream& ostream::_M_insert(long); +16166: extern template ostream& ostream::_M_insert(unsigned long); +16166: extern template ostream& ostream::_M_insert(bool); +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: extern template ostream& ostream::_M_insert(long long); +16166: extern template ostream& ostream::_M_insert(unsigned long long); +16166: #pragma GCC diagnostic pop +16166: +16166: extern template ostream& ostream::_M_insert(double); +16166: extern template ostream& ostream::_M_insert(long double); +16166: extern template ostream& ostream::_M_insert(const void*); +16166: +16166: +16166: extern template class basic_ostream; +16166: extern template wostream& endl(wostream&); +16166: extern template wostream& ends(wostream&); +16166: extern template wostream& flush(wostream&); +16166: extern template wostream& operator<<(wostream&, wchar_t); +16166: extern template wostream& operator<<(wostream&, char); +16166: extern template wostream& operator<<(wostream&, const wchar_t*); +16166: extern template wostream& operator<<(wostream&, const char*); +16166: +16166: extern template wostream& wostream::_M_insert(long); +16166: extern template wostream& wostream::_M_insert(unsigned long); +16166: extern template wostream& wostream::_M_insert(bool); +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: extern template wostream& wostream::_M_insert(long long); +16166: extern template wostream& wostream::_M_insert(unsigned long long); +16166: #pragma GCC diagnostic pop +16166: +16166: extern template wostream& wostream::_M_insert(double); +16166: extern template wostream& wostream::_M_insert(long double); +16166: extern template wostream& wostream::_M_insert(const void*); +16166: +16166: +16166: +16166: +16166: } +16166: # 1023 "/usr/include/c++/14/ostream" 2 3 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 2 +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: namespace rocksdb { +16166: +16166: class ColumnFamilyHandle; +16166: +16166: +16166: +16166: class WideColumn { +16166: public: +16166: WideColumn() = default; +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: template +16166: WideColumn(N&& name, V&& value) +16166: : name_(std::forward(name)), value_(std::forward(value)) {} +16166: # 49 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: template +16166: WideColumn(std::piecewise_construct_t, NTuple&& name_tuple, +16166: VTuple&& value_tuple) +16166: : name_(std::make_from_tuple(std::forward(name_tuple))), +16166: value_(std::make_from_tuple(std::forward(value_tuple))) { +16166: } +16166: +16166: const Slice& name() const { return name_; } +16166: const Slice& value() const { return value_; } +16166: +16166: Slice& name() { return name_; } +16166: Slice& value() { return value_; } +16166: +16166: private: +16166: Slice name_; +16166: Slice value_; +16166: }; +16166: +16166: +16166: inline bool operator==(const WideColumn& lhs, const WideColumn& rhs) { +16166: return lhs.name() == rhs.name() && lhs.value() == rhs.value(); +16166: } +16166: +16166: inline bool operator!=(const WideColumn& lhs, const WideColumn& rhs) { +16166: return !(lhs == rhs); +16166: } +16166: +16166: inline std::ostream& operator<<(std::ostream& os, const WideColumn& column) { +16166: const bool hex = +16166: (os.flags() & std::ios_base::basefield) == std::ios_base::hex; +16166: if (!column.name().empty()) { +16166: if (hex) { +16166: os << "0x"; +16166: } +16166: os << column.name().ToString(hex); +16166: } +16166: os << ':'; +16166: if (!column.value().empty()) { +16166: if (hex) { +16166: os << "0x"; +16166: } +16166: os << column.value().ToString(hex); +16166: } +16166: return os; +16166: } +16166: +16166: +16166: using WideColumns = std::vector; +16166: +16166: +16166: extern const Slice kDefaultWideColumnName; +16166: +16166: +16166: extern const WideColumns kNoWideColumns; +16166: +16166: +16166: +16166: class PinnableWideColumns { +16166: public: +16166: PinnableWideColumns() = default; +16166: +16166: PinnableWideColumns(const PinnableWideColumns&) = delete; +16166: PinnableWideColumns& operator=(const PinnableWideColumns&) = delete; +16166: +16166: PinnableWideColumns(PinnableWideColumns&&); +16166: PinnableWideColumns& operator=(PinnableWideColumns&&); +16166: +16166: ~PinnableWideColumns() = default; +16166: +16166: const WideColumns& columns() const { return columns_; } +16166: size_t serialized_size() const { return value_.size(); } +16166: +16166: void SetPlainValue(const Slice& value); +16166: void SetPlainValue(const Slice& value, Cleanable* cleanable); +16166: void SetPlainValue(PinnableSlice&& value); +16166: void SetPlainValue(std::string&& value); +16166: +16166: Status SetWideColumnValue(const Slice& value); +16166: Status SetWideColumnValue(const Slice& value, Cleanable* cleanable); +16166: Status SetWideColumnValue(PinnableSlice&& value); +16166: Status SetWideColumnValue(std::string&& value); +16166: +16166: void Reset(); +16166: +16166: private: +16166: void Move(PinnableWideColumns&& other); +16166: void CopyValue(const Slice& value); +16166: void PinOrCopyValue(const Slice& value, Cleanable* cleanable); +16166: void MoveValue(PinnableSlice&& value); +16166: void MoveValue(std::string&& value); +16166: +16166: void CreateIndexForPlainValue(); +16166: Status CreateIndexForWideColumns(); +16166: +16166: PinnableSlice value_; +16166: WideColumns columns_; +16166: }; +16166: +16166: inline void PinnableWideColumns::Reset() { +16166: value_.Reset(); +16166: columns_.clear(); +16166: } +16166: +16166: inline void PinnableWideColumns::Move(PinnableWideColumns&& other) { +16166: +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: (static_cast ( +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: columns_.empty() +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: "columns_.empty()" +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: ; +16166: +16166: if (other.columns_.empty()) { +16166: return; +16166: } +16166: +16166: const char* const data = other.value_.data(); +16166: const bool is_plain_value = +16166: other.columns_.size() == 1 && +16166: other.columns_.front().name() == kDefaultWideColumnName && +16166: other.columns_.front().value() == other.value_; +16166: +16166: MoveValue(std::move(other.value_)); +16166: +16166: if (value_.data() == data) { +16166: columns_ = std::move(other.columns_); +16166: } else { +16166: if (is_plain_value) { +16166: CreateIndexForPlainValue(); +16166: } else { +16166: const Status s = CreateIndexForWideColumns(); +16166: +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: (static_cast ( +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: s.ok() +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: "s.ok()" +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: ; +16166: +16166: s.PermitUncheckedError(); +16166: } +16166: } +16166: +16166: other.Reset(); +16166: } +16166: +16166: inline void PinnableWideColumns::CopyValue(const Slice& value) { +16166: value_.PinSelf(value); +16166: } +16166: +16166: inline void PinnableWideColumns::PinOrCopyValue(const Slice& value, +16166: Cleanable* cleanable) { +16166: if (!cleanable) { +16166: CopyValue(value); +16166: return; +16166: } +16166: +16166: value_.PinSlice(value, cleanable); +16166: } +16166: +16166: inline void PinnableWideColumns::MoveValue(PinnableSlice&& value) { +16166: value_ = std::move(value); +16166: } +16166: +16166: inline void PinnableWideColumns::MoveValue(std::string&& value) { +16166: std::string* const buf = value_.GetSelf(); +16166: +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: (static_cast ( +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: buf +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: "buf" +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" 3 4 +16166: , __builtin_F[ 24%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o +ILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/wide_columns.h" +16166: ; +16166: +16166: *buf = std::move(value); +16166: value_.PinSelf(); +16166: } +16166: +16166: inline void PinnableWideColumns::CreateIndexForPlainValue() { +16166: columns_ = WideColumns{{kDefaultWideColumnName, value_}}; +16166: } +16166: +16166: inline void PinnableWideColumns::SetPlainValue(const Slice& value) { +16166: CopyValue(value); +16166: CreateIndexForPlainValue(); +16166: } +16166: +16166: inline void PinnableWideColumns::SetPlainValue(const Slice& value, +16166: Cleanable* cleanable) { +16166: PinOrCopyValue(value, cleanable); +16166: CreateIndexForPlainValue(); +16166: } +16166: +16166: inline void PinnableWideColumns::SetPlainValue(PinnableSlice&& value) { +16166: MoveValue(std::move(value)); +16166: CreateIndexForPlainValue(); +16166: } +16166: +16166: inline void PinnableWideColumns::SetPlainValue(std::string&& value) { +16166: MoveValue(std::move(value)); +16166: CreateIndexForPlainValue(); +16166: } +16166: +16166: inline Status PinnableWideColumns::SetWideColumnValue(const Slice& value) { +16166: CopyValue(value); +16166: +16166: const Status s = CreateIndexForWideColumns(); +16166: if (!s.ok()) { +16166: Reset(); +16166: } +16166: +16166: return s; +16166: } +16166: +16166: inline Status PinnableWideColumns::SetWideColumnValue(const Slice& value, +16166: Cleanable* cleanable) { +16166: PinOrCopyValue(value, cleanable); +16166: +16166: const Status s = CreateIndexForWideColumns(); +16166: if (!s.ok()) { +16166: Reset(); +16166: } +16166: +16166: return s; +16166: } +16166: +16166: inline Status PinnableWideColumns::SetWideColumnValue(PinnableSlice&& value) { +16166: MoveValue(std::move(value)); +16166: +16166: const Status s = CreateIndexForWideColumns(); +16166: if (!s.ok()) { +16166: Reset(); +16166: } +16166: +16166: return s; +16166: } +16166: +16166: inline Status PinnableWideColumns::SetWideColumnValue(std::string&& value) { +16166: MoveValue(std::move(value)); +16166: +16166: const Status s = CreateIndexForWideColumns(); +16166: if (!s.ok()) { +16166: Reset(); +16166: } +16166: +16166: return s; +16166: } +16166: +16166: inline PinnableWideColumns::PinnableWideColumns(PinnableWideColumns&& other) { +16166: Move(std::move(other)); +16166: } +16166: +16166: inline PinnableWideColumns& PinnableWideColumns::operator=( +16166: PinnableWideColumns&& other) { +16166: if (this != &other) { +16166: Reset(); +16166: Move(std::move(other)); +16166: } +16166: +16166: return *this; +16166: } +16166: +16166: inline bool operator==(const PinnableWideColumns& lhs, +16166: const PinnableWideColumns& rhs) { +16166: return lhs.columns() == rhs.columns(); +16166: } +16166: +16166: inline bool operator!=(const PinnableWideColumns& lhs, +16166: const PinnableWideColumns& rhs) { +16166: return !(lhs == rhs); +16166: } +16166: +16166: } +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/attribute_groups.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class ColumnFamilyHandle; +16166: +16166: +16166: +16166: +16166: class AttributeGroup { +16166: public: +16166: explicit AttributeGroup(ColumnFamilyHandle* column_family, +16166: const WideColumns& columns) +16166: : column_family_(column_family), columns_(columns) {} +16166: +16166: ColumnFamilyHandle* column_family() const { return column_family_; } +16166: const WideColumns& columns() const { return columns_; } +16166: WideColumns& columns() { return columns_; } +16166: +16166: private: +16166: ColumnFamilyHandle* column_family_; +16166: WideColumns columns_; +16166: }; +16166: +16166: inline bool operator==(const AttributeGroup& lhs, const AttributeGroup& rhs) { +16166: return lhs.column_family() == rhs.column_family() && +16166: lhs.columns() == rhs.columns(); +16166: } +16166: +16166: inline bool operator!=(const AttributeGroup& lhs, const AttributeGroup& rhs) { +16166: return !(lhs == rhs); +16166: } +16166: +16166: +16166: using AttributeGroups = std::vector; +16166: +16166: +16166: extern const AttributeGroups kNoAttributeGroups; +16166: +16166: +16166: class PinnableAttributeGroup { +16166: public: +16166: explicit PinnableAttributeGroup(ColumnFamilyHandle* column_family) +16166: : column_family_(column_family), status_(Status::OK()) {} +16166: +16166: ColumnFamilyHandle* column_family() const { return column_family_; } +16166: const Status& status() const { return status_; } +16166: const WideColumns& columns() const { return columns_.columns(); } +16166: +16166: void SetStatus(const Status& status); +16166: void SetColumns(PinnableWideColumns&& columns); +16166: +16166: void Reset(); +16166: +16166: private: +16166: ColumnFamilyHandle* column_family_; +16166: Status status_; +16166: PinnableWideColumns columns_; +16166: }; +16166: +16166: inline void PinnableAttributeGroup::SetStatus(const Status& status) { +16166: status_ = status; +16166: } +16166: inline void PinnableAttributeGroup::SetColumns(PinnableWideColumns&& columns) { +16166: columns_ = std::move(columns); +16166: } +16166: +16166: inline void PinnableAttributeGroup::Reset() { +16166: SetStatus(Status::OK()); +16166: columns_.Reset(); +16166: } +16166: +16166: +16166: using PinnableAttributeGroups = std::vector; +16166: +16166: +16166: +16166: class IteratorAttributeGroup { +16166: public: +16166: explicit IteratorAttributeGroup(ColumnFamilyHandle* column_family, +16166: const WideColumns* columns) +16166: : column_family_(column_family), columns_(columns) {} +16166: +16166: explicit IteratorAttributeGroup(const AttributeGroup& attribute_group) +16166: : IteratorAttributeGroup(attribute_group.column_family(), +16166: &attribute_group.columns()) {} +16166: +16166: ColumnFamilyHandle* column_family() const { return column_family_; } +16166: const WideColumns& columns() const { return *columns_; } +16166: +16166: private: +16166: ColumnFamilyHandle* column_family_; +16166: const WideColumns* columns_; +16166: }; +16166: +16166: inline bool operator==(const IteratorAttributeGroup& lhs, +16166: const IteratorAttributeGroup& rhs) { +16166: return lhs.column_family() == rhs.column_family() && +16166: lhs.columns() == rhs.columns(); +16166: } +16166: +16166: inline bool operator!=(const IteratorAttributeGroup& lhs, +16166: const IteratorAttributeGroup& rhs) { +16166: return !(lhs == rhs); +16166: } +16166: +16166: using IteratorAttributeGroups = std::vector; +16166: +16166: extern const IteratorAttributeGroups kNoIteratorAttributeGroups; +16166: +16166: +16166: +16166: class AttributeGroupIterator : public IteratorBase { +16166: public: +16166: AttributeGroupIterator() {} +16166: ~AttributeGroupIterator() override {} +16166: +16166: +16166: AttributeGroupIterator(const AttributeGroupIterator&) = delete; +16166: AttributeGroupIterator& operator=(const AttributeGroupIterator&) = delete; +16166: +16166: virtual const IteratorAttributeGroups& attribute_groups() const = 0; +16166: }; +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 1 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum CompressionType : unsigned char { +16166: +16166: +16166: kNoCompression = 0x0, +16166: kSnappyCompression = 0x1, +16166: kZlibCompression = 0x2, +16166: kBZip2Compression = 0x3, +16166: kLZ4Compression = 0x4, +16166: kLZ4HCCompression = 0x5, +16166: kXpressCompression = 0x6, +16166: kZSTD = 0x7, +16166: +16166: +16166: +16166: +16166: +16166: +16166: kZSTDNotFinalCompression = 0x40, +16166: +16166: +16166: kDisableCompressionOption = 0xff, +16166: }; +16166: +16166: +16166: struct CompressionOptions { +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: static constexpr int kDefaultCompressionLevel = 32767; +16166: +16166: +16166: int window_bits = -14; +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: int level = kDefaultCompressionLevel; +16166: +16166: +16166: int strategy = 0; +16166: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: uint32_t max_dict_bytes = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint32_t zstd_max_train_bytes = 0; +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: uint32_t parallel_threads = 1; +16166: # 122 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: bool enabled = false; +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: uint64_t max_dict_buffer_bytes = 0; +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: bool use_zstd_dict_trainer = true; +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compression_type.h" +16166: int max_compressed_bytes_per_kb = 1024 * 7 / 8; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool checksum = false; +16166: +16166: +16166: +16166: +16166: void SetMinRatio(double min_ratio) { +16166: max_compressed_bytes_per_kb = static_cast(1024.0 / min_ratio + 0.5); +16166: } +16166: }; +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: namespace detail { +16166: int CountTrailingZeroBitsForSmallEnumSet(uint64_t); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: class SmallEnumSet { +16166: private: +16166: using StateT = uint64_t; +16166: static constexpr int kStateBits = sizeof(StateT) * 8; +16166: static constexpr int kMaxMax = kStateBits - 1; +16166: static constexpr int kMaxValue = static_cast(MAX_ENUMERATOR); +16166: static_assert(kMaxValue >= 0); +16166: static_assert(kMaxValue <= kMaxMax); +16166: +16166: public: +16166: +16166: SmallEnumSet() : state_(0) {} +16166: +16166: template +16166: constexpr SmallEnumSet(const ENUM_TYPE e, TRest... rest) { +16166: *this = SmallEnumSet(rest...).With(e); +16166: } +16166: +16166: +16166: +16166: static constexpr SmallEnumSet All() { +16166: StateT tmp = StateT{1} << kMaxValue; +16166: return SmallEnumSet(RawStateMarker(), tmp | (tmp - 1)); +16166: } +16166: +16166: +16166: bool operator==(const SmallEnumSet& that) const { +16166: return this->state_ == that.state_; +16166: } +16166: bool operator!=(const SmallEnumSet& that) const { return !(*this == that); } +16166: +16166: +16166: +16166: +16166: bool Contains(const ENUM_TYPE e) const { +16166: int value = static_cast(e); +16166: +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: (static_cast ( +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: value >= 0 && value <= kMaxValue +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: "value >= 0 && value <= kMaxValue" +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: ; +16166: StateT tmp = 1; +16166: return state_ & (tmp << value); +16166: } +16166: +16166: bool empty() const { return state_ == 0; } +16166: +16166: +16166: class const_iterator { +16166: public: +16166: +16166: const_iterator(const const_iterator& that) = default; +16166: const_iterator& operator=(const const_iterator& that) = default; +16166: +16166: +16166: const_iterator(const_iterator&& that) noexcept = default; +16166: const_iterator& operator=(const_iterator&& that) noexcept = default; +16166: +16166: +16166: bool operator==(const const_iterator& that) const { +16166: +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: (static_cast ( +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: set_ == that.set_ +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: "set_ == that.set_" +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: ; +16166: return this->pos_ == that.pos_; +16166: } +16166: +16166: bool operator!=(const const_iterator& that) const { +16166: return !(*this == that); +16166: } +16166: +16166: +16166: const_iterator& operator++() { +16166: if (pos_ < kMaxValue) { +16166: pos_ = set_->SkipUnset(pos_ + 1); +16166: } else { +16166: pos_ = kStateBits; +16166: } +16166: return *this; +16166: } +16166: +16166: +16166: const_iterator operator++(int) { +16166: auto old = *this; +16166: ++*this; +16166: return old; +16166: } +16166: +16166: ENUM_TYPE operator*() const { +16166: +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: (static_cast ( +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: pos_ <= kMaxValue +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: "pos_ <= kMaxValue" +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: ; +16166: return static_cast(pos_); +16166: } +16166: +16166: private: +16166: friend class SmallEnumSet; +16166: const_iterator(const SmallEnumSet* set, int pos) : set_(set), pos_(pos) {} +16166: const SmallEnumSet* set_; +16166: int pos_; +16166: }; +16166: +16166: const_iterator begin() const { return const_iterator(this, SkipUnset(0)); } +16166: +16166: const_iterator end() const { return const_iterator(this, kStateBits); } +16166: +16166: +16166: +16166: +16166: +16166: bool Add(const ENUM_TYPE e) { +16166: int value = static_cast(e); +16166: +16166: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: (static_cast ( +16166: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: value >= 0 && value <= kMaxValue +16166: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: "value >= 0 && value <= kMaxValue" +16166: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 129 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: ; +16166: StateT old_state = state_; +16166: state_ |= (StateT{1} << value); +16166: return old_state != state_; +16166: } +16166: +16166: +16166: +16166: bool Remove(const ENUM_TYPE e) { +16166: int value = static_cast(e); +16166: +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: (static_cast ( +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: value >= 0 && value <= kMaxValue +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: "value >= 0 && value <= kMaxValue" +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: ; +16166: StateT old_state = state_; +16166: state_ &= ~(StateT{1} << value); +16166: return old_state != state_; +16166: } +16166: +16166: +16166: +16166: +16166: constexpr SmallEnumSet With(const ENUM_TYPE e) const { +16166: int value = static_cast(e); +16166: +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: (static_cast ( +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: value >= 0 && value <= kMaxValue +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: "value >= 0 && value <= kMaxValue" +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: ; +16166: return SmallEnumSet(RawStateMarker(), state_ | (StateT{1} << value)); +16166: } +16166: template +16166: constexpr SmallEnumSet With(const ENUM_TYPE e1, const ENUM_TYPE e2, +16166: TRest... rest) const { +16166: return With(e1).With(e2, rest...); +16166: } +16166: +16166: +16166: constexpr SmallEnumSet Without(const ENUM_TYPE e) const { +16166: int value = static_cast(e); +16166: +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: (static_cast ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: value >= 0 && value <= kMaxValue +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: "value >= 0 && value <= kMaxValue" +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/data_structure.h" +16166: ; +16166: return SmallEnumSet(RawStateMarker(), state_ & ~(StateT{1} << value)); +16166: } +16166: template +16166: constexpr SmallEnumSet Without(const ENUM_TYPE e1, const ENUM_TYPE e2, +16166: TRest... rest) const { +16166: return Without(e1).Without(e2, rest...); +16166: } +16166: +16166: private: +16166: int SkipUnset(int pos) const { +16166: StateT tmp = state_ >> pos; +16166: if (tmp == 0) { +16166: return kStateBits; +16166: } else { +16166: return pos + detail::CountTrailingZeroBitsForSmallEnumSet(tmp); +16166: } +16166: } +16166: struct RawStateMarker {}; +16166: explicit SmallEnumSet(RawStateMarker, StateT state) : state_(state) {} +16166: +16166: StateT state_; +16166: }; +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memory_allocator.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: class MemoryAllocator : public Customizable { +16166: public: +16166: static const char* Type() { return "MemoryAllocator"; } +16166: static Status CreateFromString(const ConfigOptions& options, +16166: const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: +16166: virtual void* Allocate(size_t size) = 0; +16166: +16166: +16166: virtual void Deallocate(void* p) = 0; +16166: +16166: +16166: +16166: virtual size_t UsableSize(void* , size_t allocation_size) const { +16166: +16166: return allocation_size; +16166: } +16166: +16166: std::string GetId() const override { return GenerateIndividualId(); } +16166: }; +16166: +16166: struct JemallocAllocatorOptions { +16166: static const char* kName() { return "JemallocAllocatorOptions"; } +16166: +16166: +16166: +16166: +16166: +16166: bool limit_tcache_size = false; +16166: +16166: +16166: +16166: size_t tcache_size_lower_bound = 1024; +16166: +16166: +16166: +16166: size_t tcache_size_upper_bound = 16 * 1024; +16166: +16166: +16166: +16166: +16166: size_t num_arenas = 1; +16166: }; +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memory_allocator.h" +16166: Status NewJemallocNodumpAllocator( +16166: const JemallocAllocatorOptions& options, +16166: std::shared_ptr* memory_allocator); +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class Cache; +16166: struct ConfigOptions; +16166: class SecondaryCache; +16166: # 46 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: using BlockCache = Cache; +16166: using RowCache = Cache; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum class CacheEntryRole { +16166: +16166: kDataBlock, +16166: +16166: kFilterBlock, +16166: +16166: kFilterMetaBlock, +16166: +16166: kDeprecatedFilterBlock, +16166: +16166: kIndexBlock, +16166: +16166: kOtherBlock, +16166: +16166: kWriteBuffer, +16166: +16166: +16166: kCompressionDictionaryBuildingBuffer, +16166: +16166: +16166: kFilterConstruction, +16166: +16166: kBlockBasedTableReader, +16166: +16166: kFileMetadata, +16166: +16166: kBlobValue, +16166: +16166: +16166: kBlobCache, +16166: +16166: +16166: kMisc, +16166: }; +16166: constexpr uint32_t kNumCacheEntryRoles = +16166: static_cast(CacheEntryRole::kMisc) + 1; +16166: +16166: +16166: const std::string& GetCacheEntryRoleName(CacheEntryRole); +16166: +16166: +16166: using CacheEntryRoleSet = SmallEnumSet; +16166: +16166: +16166: +16166: +16166: struct BlockCacheEntryStatsMapKeys { +16166: static const std::string& CacheId(); +16166: static const std::string& CacheCapacityBytes(); +16166: static const std::string& LastCollectionDurationSeconds(); +16166: static const std::string& LastCollectionAgeSeconds(); +16166: +16166: static std::string EntryCount(CacheEntryRole); +16166: static std::string UsedBytes(CacheEntryRole); +16166: static std::string UsedPercent(CacheEntryRole); +16166: }; +16166: +16166: extern const bool kDefaultToAdaptiveMutex; +16166: +16166: enum CacheMetadataChargePolicy { +16166: +16166: +16166: kDontChargeCacheMetadata, +16166: +16166: +16166: +16166: kFullChargeCacheMetadata +16166: }; +16166: const CacheMetadataChargePolicy kDefaultCacheMetadataChargePolicy = +16166: kFullChargeCacheMetadata; +16166: +16166: +16166: +16166: struct ShardedCacheOptions { +16166: +16166: +16166: +16166: size_t capacity = 0; +16166: +16166: +16166: +16166: +16166: +16166: int num_shard_bits = -1; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool strict_capacity_limit = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::shared_ptr memory_allocator; +16166: +16166: +16166: CacheMetadataChargePolicy metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy; +16166: +16166: +16166: +16166: std::shared_ptr secondary_cache; +16166: +16166: +16166: static constexpr int32_t kQuasiRandomHashSeed = -1; +16166: static constexpr int32_t kHostHashSeed = -2; +16166: # 190 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: int32_t hash_seed = kHostHashSeed; +16166: +16166: ShardedCacheOptions() {} +16166: ShardedCacheOptions( +16166: size_t _capacity, int _num_shard_bits, bool _strict_capacity_limit, +16166: std::shared_ptr _memory_allocator = nullptr, +16166: CacheMetadataChargePolicy _metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy) +16166: : capacity(_capacity), +16166: num_shard_bits(_num_shard_bits), +16166: strict_capacity_limit(_strict_capacity_limit), +16166: memory_allocator(std::move(_memory_allocator)), +16166: metadata_charge_policy(_metadata_charge_policy) {} +16166: +16166: virtual ~ShardedCacheOptions() = default; +16166: }; +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: struct LRUCacheOptions : public ShardedCacheOptions { +16166: # 237 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: double high_pri_pool_ratio = 0.5; +16166: double low_pri_pool_ratio = 0.0; +16166: +16166: +16166: +16166: +16166: +16166: bool use_adaptive_mutex = kDefaultToAdaptiveMutex; +16166: +16166: LRUCacheOptions() {} +16166: LRUCacheOptions(size_t _capacity, int _num_shard_bits, +16166: bool _strict_capacity_limit, double _high_pri_pool_ratio, +16166: std::shared_ptr _memory_allocator = nullptr, +16166: bool _use_adaptive_mutex = kDefaultToAdaptiveMutex, +16166: CacheMetadataChargePolicy _metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy, +16166: double _low_pri_pool_ratio = 0.0) +16166: : ShardedCacheOptions(_capacity, _num_shard_bits, _strict_capacity_limit, +16166: std::move(_memory_allocator), +16166: _metadata_charge_policy), +16166: high_pri_pool_ratio(_high_pri_pool_ratio), +16166: low_pri_pool_ratio(_low_pri_pool_ratio), +16166: use_adaptive_mutex(_use_adaptive_mutex) {} +16166: +16166: +16166: std::shared_ptr MakeSharedCache() const; +16166: +16166: +16166: +16166: std::shared_ptr MakeSharedRowCache() const; +16166: }; +16166: +16166: +16166: inline std::shared_ptr NewLRUCache( +16166: size_t capacity, int num_shard_bits = -1, +16166: bool strict_capacity_limit = false, double high_pri_pool_ratio = 0.5, +16166: std::shared_ptr memory_allocator = nullptr, +16166: bool use_adaptive_mutex = kDefaultToAdaptiveMutex, +16166: CacheMetadataChargePolicy metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy, +16166: double low_pri_pool_ratio = 0.0) { +16166: return LRUCacheOptions(capacity, num_shard_bits, strict_capacity_limit, +16166: high_pri_pool_ratio, memory_allocator, +16166: use_adaptive_mutex, metadata_charge_policy, +16166: low_pri_pool_ratio) +16166: .MakeSharedCache(); +16166: } +16166: +16166: +16166: inline std::shared_ptr NewLRUCache(const LRUCacheOptions& cache_opts) { +16166: return cache_opts.MakeSharedCache(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: struct CompressedSecondaryCacheOptions : LRUCacheOptions { +16166: +16166: CompressionType compression_type = CompressionType::kLZ4Compression; +16166: +16166: +16166: CompressionOptions compression_opts; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint32_t compress_format_version = 2; +16166: +16166: +16166: +16166: bool enable_custom_split_merge = false; +16166: +16166: +16166: +16166: CacheEntryRoleSet do_not_compress_roles = {CacheEntryRole::kFilterBlock}; +16166: +16166: CompressedSecondaryCacheOptions() {} +16166: CompressedSecondaryCacheOptions( +16166: size_t _capacity, int _num_shard_bits, bool _strict_capacity_limit, +16166: double _high_pri_pool_ratio, double _low_pri_pool_ratio = 0.0, +16166: std::shared_ptr _memory_allocator = nullptr, +16166: bool _use_adaptive_mutex = kDefaultToAdaptiveMutex, +16166: CacheMetadataChargePolicy _metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy, +16166: CompressionType _compression_type = CompressionType::kLZ4Compression, +16166: uint32_t _compress_format_version = 2, +16166: bool _enable_custom_split_merge = false, +16166: const CacheEntryRoleSet& _do_not_compress_roles = +16166: {CacheEntryRole::kFilterBlock}) +16166: : LRUCacheOptions(_capacity, _num_shard_bits, _strict_capacity_limit, +16166: _high_pri_pool_ratio, std::move(_memory_allocator), +16166: _use_adaptive_mutex, _metadata_charge_policy, +16166: _low_pri_pool_ratio), +16166: compression_type(_compression_type), +16166: compress_format_version(_compress_format_version), +16166: enable_custom_split_merge(_enable_custom_split_merge), +16166: do_not_compress_roles(_do_not_compress_roles) {} +16166: +16166: +16166: std::shared_ptr MakeSharedSecondaryCache() const; +16166: +16166: +16166: std::shared_ptr MakeSharedCache() const = delete; +16166: }; +16166: +16166: +16166: inline std::shared_ptr NewCompressedSecondaryCache( +16166: size_t capacity, int num_shard_bits = -1, +16166: bool strict_capacity_limit = false, double high_pri_pool_ratio = 0.5, +16166: double low_pri_pool_ratio = 0.0, +16166: std::shared_ptr memory_allocator = nullptr, +16166: bool use_adaptive_mutex = kDefaultToAdaptiveMutex, +16166: CacheMetadataChargePolicy metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy, +16166: CompressionType compression_type = CompressionType::kLZ4Compression, +16166: uint32_t compress_format_version = 2, +16166: bool enable_custom_split_merge = false, +16166: const CacheEntryRoleSet& _do_not_compress_roles = { +16166: CacheEntryRole::kFilterBlock}) { +16166: return CompressedSecondaryCacheOptions( +16166: capacity, num_shard_bits, strict_capacity_limit, +16166: high_pri_pool_ratio, low_pri_pool_ratio, memory_allocator, +16166: use_adaptive_mutex, metadata_charge_policy, compression_type, +16166: compress_format_version, enable_custom_split_merge, +16166: _do_not_compress_roles) +16166: .MakeSharedSecondaryCache(); +16166: } +16166: +16166: +16166: inline std::shared_ptr NewCompressedSecondaryCache( +16166: const CompressedSecondaryCacheOptions& opts) { +16166: return opts.MakeSharedSecondaryCache(); +16166: } +16166: # 388 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: struct HyperClockCacheOptions : public ShardedCacheOptions { +16166: # 425 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: size_t estimated_entry_charge; +16166: # 442 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: size_t min_avg_entry_charge = 450; +16166: # 479 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: int eviction_effort_cap = 30; +16166: +16166: HyperClockCacheOptions( +16166: size_t _capacity, size_t _estimated_entry_charge, +16166: int _num_shard_bits = -1, bool _strict_capacity_limit = false, +16166: std::shared_ptr _memory_allocator = nullptr, +16166: CacheMetadataChargePolicy _metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy) +16166: : ShardedCacheOptions(_capacity, _num_shard_bits, _strict_capacity_limit, +16166: std::move(_memory_allocator), +16166: _metadata_charge_policy), +16166: estimated_entry_charge(_estimated_entry_charge) {} +16166: +16166: +16166: std::shared_ptr MakeSharedCache() const; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: std::shared_ptr NewClockCache( +16166: size_t capacity, int num_shard_bits = -1, +16166: bool strict_capacity_limit = false, +16166: CacheMetadataChargePolicy metadata_charge_policy = +16166: kDefaultCacheMetadataChargePolicy); +16166: +16166: enum PrimaryCacheType { +16166: kCacheTypeLRU, +16166: kCacheTypeHCC, +16166: kCacheTypeMax, +16166: }; +16166: +16166: enum TieredAdmissionPolicy { +16166: +16166: kAdmPolicyAuto, +16166: +16166: +16166: +16166: kAdmPolicyPlaceholder, +16166: +16166: +16166: kAdmPolicyAllowCacheHits, +16166: +16166: +16166: +16166: kAdmPolicyThreeQueue, +16166: +16166: +16166: +16166: +16166: kAdmPolicyAllowAll, +16166: kAdmPolicyMax, +16166: }; +16166: # 543 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: struct TieredCacheOptions { +16166: +16166: +16166: +16166: +16166: ShardedCacheOptions* cache_opts = nullptr; +16166: PrimaryCacheType cache_type = PrimaryCacheType::kCacheTypeLRU; +16166: TieredAdmissionPolicy adm_policy = TieredAdmissionPolicy::kAdmPolicyAuto; +16166: CompressedSecondaryCacheOptions comp_cache_opts; +16166: +16166: +16166: +16166: +16166: size_t total_capacity = 0; +16166: double compressed_secondary_ratio = 0.0; +16166: +16166: +16166: +16166: std::shared_ptr nvm_sec_cache; +16166: }; +16166: +16166: std::shared_ptr NewTieredCache(const TieredCacheOptions& cache_opts); +16166: # 575 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/cache.h" +16166: Status UpdateTieredCache( +16166: const std::shared_ptr& cache, int64_t total_capacity = -1, +16166: double compressed_secondary_ratio = std::numeric_limits::max(), +16166: TieredAdmissionPolicy adm_policy = TieredAdmissionPolicy::kAdmPolicyMax); +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 1 +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/stdlib.h" 1 3 +16166: # 36 "/usr/include/c++/14/stdlib.h" 3 +16166: # 1 "/usr/include/c++/14/cstdlib" 1 3 +16166: # 39 "/usr/include/c++/14/cstdlib" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdlib" 3 +16166: # 37 "/usr/include/c++/14/stdlib.h" 2 3 +16166: +16166: +16166: # 38 "/usr/include/c++/14/stdlib.h" 3 +16166: using std::abort; +16166: using std::atexit; +16166: using std::exit; +16166: +16166: +16166: using std::at_quick_exit; +16166: +16166: +16166: using std::quick_exit; +16166: +16166: +16166: using std::_Exit; +16166: +16166: +16166: +16166: +16166: using std::div_t; +16166: using std::ldiv_t; +16166: +16166: using std::abs; +16166: using std::atof; +16166: using std::atoi; +16166: using std::atol; +16166: using std::bsearch; +16166: using std::calloc; +16166: using std::div; +16166: using std::free; +16166: using std::getenv; +16166: using std::labs; +16166: using std::ldiv; +16166: using std::malloc; +16166: +16166: using std::mblen; +16166: using std::mbstowcs; +16166: using std::mbtowc; +16166: +16166: using std::qsort; +16166: using std::rand; +16166: using std::realloc; +16166: using std::srand; +16166: using std::strtod; +16166: using std::strtol; +16166: using std::strtoul; +16166: using std::system; +16166: +16166: using std::wcstombs; +16166: using std::wctomb; +16166: # 40 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 2 +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: namespace rocksdb { +16166: +16166: class Arena; +16166: class Allocator; +16166: class LookupKey; +16166: class SliceTransform; +16166: class Logger; +16166: struct DBOptions; +16166: +16166: using KeyHandle = void*; +16166: +16166: Slice GetLengthPrefixedSlice(const char* data); +16166: +16166: class MemTableRep { +16166: public: +16166: +16166: +16166: class KeyComparator { +16166: public: +16166: using DecodedType = rocksdb::Slice; +16166: +16166: virtual DecodedType decode_key(const char* key) const { +16166: +16166: +16166: return GetLengthPrefixedSlice(key); +16166: } +16166: +16166: +16166: +16166: virtual int operator()(const char* prefix_len_key1, +16166: const char* prefix_len_key2) const = 0; +16166: +16166: virtual int operator()(const char* prefix_len_key, +16166: const Slice& key) const = 0; +16166: +16166: virtual ~KeyComparator() {} +16166: }; +16166: +16166: explicit MemTableRep(Allocator* allocator) : allocator_(allocator) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual KeyHandle Allocate(const size_t len, char** buf); +16166: +16166: +16166: +16166: +16166: +16166: virtual void Insert(KeyHandle handle) = 0; +16166: +16166: +16166: +16166: +16166: virtual bool InsertKey(KeyHandle handle) { +16166: Insert(handle); +16166: return true; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void InsertWithHint(KeyHandle handle, void** ) { +16166: +16166: Insert(handle); +16166: } +16166: +16166: +16166: +16166: +16166: virtual bool InsertKeyWithHint(KeyHandle handle, void** hint) { +16166: InsertWithHint(handle, hint); +16166: return true; +16166: } +16166: # 137 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: virtual void InsertWithHintConcurrently(KeyHandle handle, void** ) { +16166: +16166: InsertConcurrently(handle); +16166: } +16166: +16166: +16166: +16166: +16166: virtual bool InsertKeyWithHintConcurrently(KeyHandle handle, void** hint) { +16166: InsertWithHintConcurrently(handle, hint); +16166: return true; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void InsertConcurrently(KeyHandle handle); +16166: +16166: +16166: +16166: +16166: virtual bool InsertKeyConcurrently(KeyHandle handle) { +16166: InsertConcurrently(handle); +16166: return true; +16166: } +16166: +16166: +16166: virtual bool Contains(const char* key) const = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void MarkReadOnly() {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void MarkFlushed() {} +16166: # 194 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: virtual void Get(const LookupKey& k, void* callback_args, +16166: bool (*callback_func)(void* arg, const char* entry)); +16166: +16166: +16166: virtual Status GetAndValidate(const LookupKey& , +16166: void* , +16166: bool (* )(void* arg, +16166: const char* entry), +16166: bool ) { +16166: return Status::NotSupported("GetAndValidate() not implemented."); +16166: } +16166: +16166: virtual uint64_t ApproximateNumEntries(const Slice& , +16166: const Slice& ) { +16166: return 0; +16166: } +16166: +16166: +16166: +16166: virtual void UniqueRandomSample(const uint64_t num_entries, +16166: const uint64_t target_sample_size, +16166: std::unordered_set* entries) { +16166: (void)num_entries; +16166: (void)target_sample_size; +16166: (void)entries; +16166: +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 3 4 +16166: (static_cast ( +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: false +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: "false" +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: ; +16166: } +16166: +16166: +16166: +16166: virtual size_t ApproximateMemoryUsage() = 0; +16166: +16166: virtual ~MemTableRep() {} +16166: +16166: +16166: class Iterator { +16166: public: +16166: +16166: +16166: +16166: virtual ~Iterator() {} +16166: +16166: +16166: virtual bool Valid() const = 0; +16166: +16166: +16166: +16166: virtual const char* key() const = 0; +16166: +16166: +16166: +16166: virtual void Next() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status NextAndValidate(bool ) { +16166: return Status::NotSupported("NextAndValidate() not implemented."); +16166: } +16166: +16166: +16166: +16166: virtual void Prev() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status PrevAndValidate(bool ) { +16166: return Status::NotSupported("PrevAndValidate() not implemented."); +16166: } +16166: +16166: +16166: virtual void Seek(const Slice& internal_key, const char* memtable_key) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status SeekAndValidate(const Slice& , +16166: const char* , +16166: bool ) { +16166: return Status::NotSupported("SeekAndValidate() not implemented."); +16166: } +16166: +16166: +16166: virtual void SeekForPrev(const Slice& internal_key, +16166: const char* memtable_key) = 0; +16166: +16166: virtual void RandomSeek() {} +16166: +16166: +16166: +16166: virtual void SeekToFirst() = 0; +16166: +16166: +16166: +16166: virtual void SeekToLast() = 0; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Iterator* GetIterator(Arena* arena = nullptr) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Iterator* GetDynamicPrefixIterator(Arena* arena = nullptr) { +16166: return GetIterator(arena); +16166: } +16166: +16166: +16166: +16166: virtual bool IsMergeOperatorSupported() const { return true; } +16166: +16166: +16166: +16166: virtual bool IsSnapshotSupported() const { return true; } +16166: +16166: protected: +16166: +16166: +16166: virtual Slice UserKey(const char* key) const; +16166: +16166: Allocator* allocator_; +16166: }; +16166: +16166: +16166: +16166: class MemTableRepFactory : public Customizable { +16166: public: +16166: ~MemTableRepFactory() override {} +16166: +16166: static const char* Type() { return "MemTableRepFactory"; } +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& id, +16166: std::unique_ptr* factory); +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& id, +16166: std::shared_ptr* factory); +16166: +16166: virtual MemTableRep* CreateMemTableRep(const MemTableRep::KeyComparator&, +16166: Allocator*, const SliceTransform*, +16166: Logger* logger) = 0; +16166: virtual MemTableRep* CreateMemTableRep( +16166: const MemTableRep::KeyComparator& key_cmp, Allocator* allocator, +16166: const SliceTransform* slice_transform, Logger* logger, +16166: uint32_t ) { +16166: return CreateMemTableRep(key_cmp, allocator, slice_transform, logger); +16166: } +16166: +16166: const char* Name() const override = 0; +16166: +16166: +16166: +16166: virtual bool IsInsertConcurrentlySupported() const { return false; } +16166: +16166: +16166: +16166: +16166: +16166: virtual bool CanHandleDuplicatedKey() const { return false; } +16166: }; +16166: # 371 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: class SkipListFactory : public MemTableRepFactory { +16166: public: +16166: explicit SkipListFactory(size_t lookahead = 0); +16166: +16166: +16166: static const char* kClassName() { return "SkipListFactory"; } +16166: static const char* kNickName() { return "skip_list"; } +16166: const char* Name() const override { return kClassName(); } +16166: const char* NickName() const override { return kNickName(); } +16166: std::string GetId() const override; +16166: +16166: +16166: using MemTableRepFactory::CreateMemTableRep; +16166: MemTableRep* CreateMemTableRep(const MemTableRep::KeyComparator&, Allocator*, +16166: const SliceTransform*, +16166: Logger* logger) override; +16166: +16166: bool IsInsertConcurrentlySupported() const override { return true; } +16166: +16166: bool CanHandleDuplicatedKey() const override { return true; } +16166: +16166: private: +16166: size_t lookahead_; +16166: }; +16166: # 404 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: class VectorRepFactory : public MemTableRepFactory { +16166: size_t count_; +16166: +16166: public: +16166: explicit VectorRepFactory(size_t count = 0); +16166: +16166: +16166: static const char* kClassName() { return "VectorRepFactory"; } +16166: static const char* kNickName() { return "vector"; } +16166: const char* Name() const override { return kClassName(); } +16166: const char* NickName() const override { return kNickName(); } +16166: +16166: +16166: using MemTableRepFactory::CreateMemTableRep; +16166: MemTableRep* CreateMemTableRep(const MemTableRep::KeyComparator&, Allocator*, +16166: const SliceTransform*, +16166: Logger* logger) override; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: MemTableRepFactory* NewHashSkipListRepFactory( +16166: size_t bucket_count = 1000000, int32_t skiplist_height = 4, +16166: int32_t skiplist_branching_factor = 4); +16166: # 449 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/memtablerep.h" +16166: MemTableRepFactory* NewHashLinkListRepFactory( +16166: size_t bucket_count = 50000, size_t huge_page_tlb_size = 0, +16166/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/trim_history_scheduler.cc +: int bucket_entries_logging_threshold = 4096, +16166: bool if_log_bucket_dist_when_flash = true, +16166: uint32_t threshold_use_skiplist = 256); +16166: +16166: } +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/climits" 1 3 +16166: # 39 "/usr/include/c++/14/climits" 3 +16166: +16166: # 40 "/usr/include/c++/14/climits" 3 +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +16166: # 34 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/syslimits.h" 1 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +16166: # 210 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 3 4 +16166: # 1 "/usr/include/limits.h" 1 3 4 +16166: # 26 "/usr/include/limits.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/libc-header-start.h" 1 3 4 +16166: # 27 "/usr/include/limits.h" 2 3 4 +16166: # 195 "/usr/include/limits.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 28 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 +16166: # 161 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 1 3 4 +16166: # 38 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 3 4 +16166: # 1 "/usr/include/linux/limits.h" 1 3 4 +16166: # 39 "/usr/include/arm-linux-gnueabihf/bits/local_lim.h" 2 3 4 +16166: # 162 "/usr/include/arm-linux-gnueabihf/bits/posix1_lim.h" 2 3 4 +16166: # 196 "/usr/include/limits.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix2_lim.h" 1 3 4 +16166: # 200 "/usr/include/limits.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 1 3 4 +16166: # 64 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio_lim.h" 1 3 4 +16166: # 65 "/usr/include/arm-linux-gnueabihf/bits/xopen_lim.h" 2 3 4 +16166: # 204 "/usr/include/limits.h" 2 3 4 +16166: # 211 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 2 3 4 +16166: # 8 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/syslimits.h" 2 3 4 +16166: # 35 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 2 3 4 +16166: # 43 "/usr/include/c++/14/climits" 2 3 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: enum CompactionStopStyle { +16166: kCompactionStopStyleSimilarSize, +16166: kCompactionStopStyleTotalSize +16166: }; +16166: +16166: class CompactionOptionsUniversal { +16166: public: +16166: +16166: +16166: +16166: unsigned int size_ratio; +16166: +16166: +16166: unsigned int min_merge_width; +16166: +16166: +16166: unsigned int max_merge_width; +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +16166: unsigned int max_size_amplification_percent; +16166: # 66 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +16166: int compression_size_percent; +16166: # 96 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +16166: int max_read_amp; +16166: +16166: +16166: +16166: CompactionStopStyle stop_style; +16166: +16166: +16166: +16166: +16166: bool allow_trivial_move; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool incremental; +16166: +16166: +16166: CompactionOptionsUniversal() +16166: : size_ratio(1), +16166: min_merge_width(2), +16166: max_merge_width( +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" 3 4 +16166: (0x7fffffff * 2U + 1U) +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/universal_compaction.h" +16166: ), +16166: max_size_amplification_percent(200), +16166: compression_size_percent(-1), +16166: max_read_amp(-1), +16166: stop_style(kCompactionStopStyleTotalSize), +16166: allow_trivial_move(false), +16166: incremental(false) {} +16166: }; +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: class SliceTransform; +16166: class TablePropertiesCollectorFactory; +16166: class TableFactory; +16166: struct Options; +16166: +16166: enum CompactionStyle : char { +16166: +16166: kCompactionStyleLevel = 0x0, +16166: +16166: kCompactionStyleUniversal = 0x1, +16166: +16166: kCompactionStyleFIFO = 0x2, +16166: +16166: +16166: kCompactionStyleNone = 0x3, +16166: }; +16166: +16166: +16166: +16166: +16166: enum CompactionPri : char { +16166: +16166: kByCompensatedSize = 0x0, +16166: +16166: +16166: kOldestLargestSeqFirst = 0x1, +16166: +16166: +16166: +16166: kOldestSmallestSeqFirst = 0x2, +16166: +16166: +16166: +16166: +16166: +16166: kMinOverlappingRatio = 0x3, +16166: +16166: +16166: +16166: +16166: kRoundRobin = 0x4, +16166: }; +16166: +16166: struct FileTemperatureAge { +16166: Temperature temperature = Temperature::kUnknown; +16166: uint64_t age = 0; +16166: }; +16166: +16166: struct CompactionOptionsFIFO { +16166: +16166: +16166: +16166: uint64_t max_table_files_size; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool allow_compaction = false; +16166: +16166: +16166: +16166: +16166: uint64_t age_for_warm = 0; +16166: # 113 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: std::vector file_temperature_age_thresholds{}; +16166: +16166: CompactionOptionsFIFO() : max_table_files_size(1 * 1024 * 1024 * 1024) {} +16166: CompactionOptionsFIFO(uint64_t _max_table_files_size, bool _allow_compaction) +16166: : max_table_files_size(_max_table_files_size), +16166: allow_compaction(_allow_compaction) {} +16166: }; +16166: +16166: +16166: +16166: +16166: enum class CacheTier : uint8_t { +16166: kVolatileTier = 0, +16166: kVolatileCompressedTier = 0x01, +16166: kNonVolatileBlockTier = 0x02, +16166: }; +16166: +16166: enum UpdateStatus { +16166: UPDATE_FAILED = 0, +16166: UPDATED_INPLACE = 1, +16166: UPDATED = 2, +16166: }; +16166: +16166: enum class PrepopulateBlobCache : uint8_t { +16166: kDisable = 0x0, +16166: kFlushOnly = 0x1, +16166: }; +16166: +16166: struct AdvancedColumnFamilyOptions { +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: int max_write_buffer_number = 2; +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: int min_write_buffer_number_to_merge = 1; +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: int max_write_buffer_number_to_maintain = 0; +16166: # 221 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: int64_t max_write_buffer_size_to_maintain = 0; +16166: # 242 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool inplace_update_support = false; +16166: +16166: +16166: +16166: +16166: +16166: size_t inplace_update_num_locks = 10000; +16166: # 265 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: double experimental_mempurge_threshold = 0.0; +16166: # 308 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: UpdateStatus (*inplace_callback)(char* existing_value, +16166: uint32_t* existing_value_size, +16166: Slice delta_value, +16166: std::string* merged_value) = nullptr; +16166: # 327 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: double memtable_prefix_bloom_size_ratio = 0.0; +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool memtable_whole_key_filtering = false; +16166: # 348 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: size_t memtable_huge_page_size = 0; +16166: # 369 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: std::shared_ptr +16166: memtable_insert_with_hint_prefix_extractor = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint32_t bloom_locality = 0; +16166: # 395 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: size_t arena_block_size = 0; +16166: # 426 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: std::vector compression_per_level; +16166: +16166: +16166: int num_levels = 7; +16166: # 438 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: int level0_slowdown_writes_trigger = 20; +16166: +16166: +16166: +16166: +16166: +16166: +16166: int level0_stop_writes_trigger = 36; +16166: # 459 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t target_file_size_base = 64 * 1048576; +16166: +16166: +16166: +16166: +16166: +16166: int target_file_size_multiplier = 1; +16166: # 546 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool level_compaction_dynamic_level_bytes = true; +16166: +16166: +16166: +16166: +16166: double max_bytes_for_level_multiplier = 10; +16166: # 562 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: std::vector max_bytes_for_level_multiplier_additional = +16166: std::vector(static_cast(num_levels), 1); +16166: # 572 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t max_compaction_bytes = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t soft_pending_compaction_bytes_limit = 64 * 1073741824ull; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t hard_pending_compaction_bytes_limit = 256 * 1073741824ull; +16166: +16166: +16166: CompactionStyle compaction_style = kCompactionStyleLevel; +16166: +16166: +16166: +16166: +16166: CompactionPri compaction_pri = kMinOverlappingRatio; +16166: +16166: +16166: +16166: +16166: +16166: +16166: CompactionOptionsUniversal compaction_options_universal; +16166: +16166: +16166: +16166: +16166: +16166: +16166: CompactionOptionsFIFO compaction_options_fifo; +16166: # 620 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t max_sequential_skip_in_iterations = 8; +16166: +16166: +16166: +16166: +16166: std::shared_ptr memtable_factory = +16166: std::shared_ptr(new SkipListFactory); +16166: # 645 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: using TablePropertiesCollectorFactories = +16166: std::vector>; +16166: TablePropertiesCollectorFactories table_properties_collector_factories; +16166: # 661 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: size_t max_successive_merges = 0; +16166: # 671 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool strict_max_successive_merges = false; +16166: # 687 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool optimize_filters_for_hits = false; +16166: # 696 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool paranoid_file_checks = false; +16166: # 706 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool force_consistency_checks = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool report_bg_io_stats = false; +16166: # 747 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t ttl = 0xfffffffffffffffe; +16166: # 795 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t periodic_compaction_seconds = 0xfffffffffffffffe; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t sample_for_compression = 0; +16166: # 810 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: Temperature last_level_temperature = Temperature::kUnknown; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Temperature default_write_temperature = Temperature::kUnknown; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Temperature default_temperature = Temperature::kUnknown; +16166: # 843 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t preclude_last_level_data_seconds = 0; +16166: # 866 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t preserve_internal_time_seconds = 0; +16166: # 880 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool enable_blob_files = false; +16166: # 892 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t min_blob_size = 0; +16166: # 901 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint64_t blob_file_size = 1ULL << 28; +16166: # 910 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: CompressionType blob_compression_type = kNoCompression; +16166: # 922 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool enable_blob_garbage_collection = false; +16166: # 933 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: double blob_garbage_collection_age_cutoff = 0.25; +16166: # 945 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: double blob_garbage_collection_force_threshold = 1.0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t blob_compaction_readahead_size = 0; +16166: # 967 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: int blob_file_starting_level = 0; +16166: # 977 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: std::shared_ptr blob_cache = nullptr; +16166: # 988 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: PrepopulateBlobCache prepopulate_blob_cache = PrepopulateBlobCache::kDisable; +16166: # 1004 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint32_t memtable_protection_bytes_per_key = 0; +16166: # 1054 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: bool persist_user_defined_timestamps = true; +16166: # 1069 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint8_t block_protection_bytes_per_key = 0; +16166: # 1081 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_options.h" +16166: uint32_t bottommost_file_compaction_delay = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool paranoid_memory_checks = false; +16166: +16166: +16166: AdvancedColumnFamilyOptions(); +16166: +16166: explicit AdvancedColumnFamilyOptions(const Options& options); +16166: +16166: +16166: }; +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 1 +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cstdarg" 1 3 +16166: # 39 "/usr/include/c++/14/cstdarg" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdarg" 3 +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stdarg.h" 1 3 4 +16166: # 44 "/usr/include/c++/14/cstdarg" 2 3 +16166: # 53 "/usr/include/c++/14/cstdarg" 3 +16166: +16166: # 53 "/usr/include/c++/14/cstdarg" 3 +16166: namespace std +16166: { +16166: using ::va_list; +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/functor_wrapper.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/functor_wrapper.h" +16166: namespace rocksdb { +16166: +16166: namespace detail { +16166: template +16166: struct IndexSequence {}; +16166: +16166: template +16166: struct IndexSequenceHelper +16166: : public IndexSequenceHelper {}; +16166: +16166: template +16166: struct IndexSequenceHelper<0U, Next...> { +16166: using type = IndexSequence; +16166: }; +16166: +16166: template +16166: using make_index_sequence = typename IndexSequenceHelper::type; +16166: +16166: template +16166: void call(Function f, Tuple t, IndexSequence) { +16166: f(std::get(t)...); +16166: } +16166: +16166: template +16166: void call(Function f, Tuple t) { +16166: static constexpr auto size = std::tuple_size::value; +16166: call(f, t, make_index_sequence{}); +16166: } +16166: } +16166: +16166: template +16166: class FunctorWrapper { +16166: public: +16166: explicit FunctorWrapper(std::function functor, Args &&...args) +16166: : functor_(std::move(functor)), args_(std::forward(args)...) {} +16166: +16166: void invoke() { detail::call(functor_, args_); } +16166: +16166: private: +16166: std::function functor_; +16166: std::tuple args_; +16166: }; +16166: } +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h" 1 +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h" +16166: +16166: # 29 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: template +16166: struct constexpr_max { +16166: static const int result = (A > B) ? A : B; +16166: }; +16166: +16166: +16166: +16166: +16166: struct ThreadStatus { +16166: +16166: enum ThreadType : int { +16166: HIGH_PRIORITY = 0, +16166: LOW_PRIORITY, +16166: USER, +16166: BOTTOM_PRIORITY, +16166: NUM_THREAD_TYPES +16166: }; +16166: +16166: +16166: +16166: +16166: enum OperationType : int { +16166: OP_UNKNOWN = 0, +16166: OP_COMPACTION, +16166: OP_FLUSH, +16166: OP_DBOPEN, +16166: OP_GET, +16166: OP_MULTIGET, +16166: OP_DBITERATOR, +16166: OP_VERIFY_DB_CHECKSUM, +16166: OP_VERIFY_FILE_CHECKSUMS, +16166: OP_GETENTITY, +16166: OP_MULTIGETENTITY, +16166: OP_READ_MANIFEST, +16166: NUM_OP_TYPES +16166: }; +16166: +16166: enum OperationStage : int { +16166: STAGE_UNKNOWN = 0, +16166: STAGE_FLUSH_RUN, +16166: STAGE_FLUSH_WRITE_L0, +16166: STAGE_COMPACTION_PREPARE, +16166: STAGE_COMPACTION_RUN, +16166: STAGE_COMPACTION_PROCESS_KV, +16166: STAGE_COMPACTION_INSTALL, +16166: STAGE_COMPACTION_SYNC_FILE, +16166: STAGE_PICK_MEMTABLES_TO_FLUSH, +16166: STAGE_MEMTABLE_ROLLBACK, +16166: STAGE_MEMTABLE_INSTALL_FLUSH_RESULTS, +16166: NUM_OP_STAGES +16166: }; +16166: +16166: enum CompactionPropertyType : int { +16166: COMPACTION_JOB_ID = 0, +16166: COMPACTION_INPUT_OUTPUT_LEVEL, +16166: COMPACTION_PROP_FLAGS, +16166: COMPACTION_TOTAL_INPUT_BYTES, +16166: COMPACTION_BYTES_READ, +16166: COMPACTION_BYTES_WRITTEN, +16166: NUM_COMPACTION_PROPERTIES +16166: }; +16166: +16166: enum FlushPropertyType : int { +16166: FLUSH_JOB_ID = 0, +16166: FLUSH_BYTES_MEMTABLES, +16166: FLUSH_BYTES_WRITTEN, +16166: NUM_FLUSH_PROPERTIES +16166: }; +16166: +16166: +16166: +16166: static const int kNumOperationProperties = +16166: constexpr_max::result; +16166: +16166: +16166: +16166: +16166: enum StateType : int { +16166: STATE_UNKNOWN = 0, +16166: STATE_MUTEX_WAIT = 1, +16166: NUM_STATE_TYPES +16166: }; +16166: +16166: ThreadStatus(const uint64_t _id, const ThreadType _thread_type, +16166: const std::string& _db_name, const std::string& _cf_name, +16166: const OperationType _operation_type, +16166: const uint64_t _op_elapsed_micros, +16166: const OperationStage _operation_stage, +16166: const uint64_t _op_props[], const StateType _state_type) +16166: : thread_id(_id), +16166: thread_type(_thread_type), +16166: db_name(_db_name), +16166: cf_name(_cf_name), +16166: operation_type(_operation_type), +16166: op_elapsed_micros(_op_elapsed_micros), +16166: operation_stage(_operation_stage), +16166: state_type(_state_type) { +16166: for (int i = 0; i < kNumOperationProperties; ++i) { +16166: op_properties[i] = _op_props[i]; +16166: } +16166: } +16166: +16166: +16166: const uint64_t thread_id; +16166: +16166: +16166: +16166: const ThreadType thread_type; +16166: +16166: +16166: +16166: +16166: const std::string db_name; +16166: +16166: +16166: +16166: +16166: const std::string cf_name; +16166: +16166: +16166: const OperationType operation_type; +16166: +16166: +16166: const uint64_t op_elapsed_micros; +16166: +16166: +16166: +16166: const OperationStage operation_stage; +16166: +16166: +16166: +16166: +16166: uint64_t op_properties[kNumOperationProperties]; +16166: +16166: +16166: const StateType state_type; +16166: +16166: +16166: +16166: +16166: static std::string GetThreadTypeName(ThreadType thread_type); +16166: +16166: +16166: static const std::string& GetOperationName(OperationType op_type); +16166: +16166: static const std::string MicrosToString(uint64_t op_elapsed_time); +16166: +16166: +16166: static const std::string& GetOperationStageName(OperationStage stage); +16166: +16166: +16166: +16166: static const std::string& GetOperationPropertyName(OperationType op_type, +16166: int i); +16166: +16166: +16166: +16166: static std::map InterpretOperationProperties( +16166: OperationType op_type, const uint64_t* op_properties); +16166: +16166: +16166: static const std::string& GetStateName(StateType state_type); +16166: }; +16166: +16166: } +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 2 +16166: # 49 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: namespace rocksdb { +16166: +16166: class DynamicLibrary; +16166: class FileLock; +16166: class Logger; +16166: class RandomAccessFile; +16166: class SequentialFile; +16166: class Slice; +16166: struct DataVerificationInfo; +16166: class WritableFile; +16166: class RandomRWFile; +16166: class MemoryMappedFileBuffer; +16166: class Directory; +16166: struct DBOptions; +16166: struct ImmutableDBOptions; +16166: struct MutableDBOptions; +16166: class RateLimiter; +16166: class ThreadStatusUpdater; +16166: struct ThreadStatus; +16166: class FileSystem; +16166: class SystemClock; +16166: struct ConfigOptions; +16166: struct IOOptions; +16166: +16166: const size_t kDefaultPageSize = 4 * 1024; +16166: +16166: +16166: struct EnvOptions { +16166: +16166: EnvOptions(); +16166: +16166: +16166: explicit EnvOptions(const DBOptions& options); +16166: +16166: +16166: +16166: bool use_mmap_reads = false; +16166: +16166: +16166: bool use_mmap_writes = true; +16166: +16166: +16166: bool use_direct_reads = false; +16166: +16166: +16166: bool use_direct_writes = false; +16166: +16166: +16166: bool allow_fallocate = true; +16166: +16166: +16166: bool set_fd_cloexec = true; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t bytes_per_sync = 0; +16166: # 123 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: bool strict_bytes_per_sync = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool fallocate_with_keep_size = true; +16166: +16166: +16166: size_t compaction_readahead_size = 0; +16166: +16166: +16166: size_t random_access_max_buffer_size = 0; +16166: +16166: +16166: size_t writable_file_max_buffer_size = 1024 * 1024; +16166: +16166: +16166: RateLimiter* rate_limiter = nullptr; +16166: }; +16166: # 154 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: class Env : public Customizable { +16166: public: +16166: static const char* kDefaultName() { return "DefaultEnv"; } +16166: struct FileAttributes { +16166: +16166: std::string name; +16166: +16166: +16166: uint64_t size_bytes; +16166: +16166: +16166: Temperature temperature = Temperature::kUnknown; +16166: }; +16166: +16166: Env(); +16166: +16166: +16166: explicit Env(const std::shared_ptr& fs); +16166: Env(const std::shared_ptr& fs, +16166: const std::shared_ptr& clock); +16166: +16166: Env(const Env&) = delete; +16166: void operator=(const Env&) = delete; +16166: +16166: ~Env() override; +16166: +16166: static const char* Type() { return "Environment"; } +16166: +16166: +16166: +16166: const char* Name() const override { return ""; } +16166: # 199 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& value, Env** result); +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& value, Env** result, +16166: std::shared_ptr* guard); +16166: +16166: +16166: +16166: +16166: +16166: static Status CreateFromUri(const ConfigOptions& options, +16166: const std::string& env_uri, +16166: const std::string& fs_uri, Env** result, +16166: std::shared_ptr* guard); +16166: +16166: +16166: +16166: +16166: +16166: +16166: static Env* Default(); +16166: +16166: +16166: virtual Status RegisterDbPaths(const std::vector& ) { +16166: return Status::OK(); +16166: } +16166: +16166: virtual Status UnregisterDbPaths(const std::vector& ) { +16166: return Status::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status NewSequentialFile(const std::string& fname, +16166: std::unique_ptr* result, +16166: const EnvOptions& options) = 0; +16166: # 247 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status NewRandomAccessFile(const std::string& fname, +16166: std::unique_ptr* result, +16166: const EnvOptions& options) = 0; +16166: +16166: +16166: enum WriteLifeTimeHint { +16166: WLTH_NOT_SET = 0, +16166: WLTH_NONE, +16166: WLTH_SHORT, +16166: WLTH_MEDIUM, +16166: WLTH_LONG, +16166: WLTH_EXTREME, +16166: }; +16166: # 268 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status NewWritableFile(const std::string& fname, +16166: std::unique_ptr* result, +16166: const EnvOptions& options) = 0; +16166: # 280 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status ReopenWritableFile(const std::string& , +16166: std::unique_ptr* , +16166: const EnvOptions& ) { +16166: return Status::NotSupported("Env::ReopenWritableFile() not supported."); +16166: } +16166: +16166: +16166: virtual Status ReuseWritableFile(const std::string& fname, +16166: const std::string& old_fname, +16166: std::unique_ptr* result, +16166: const EnvOptions& options); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status NewRandomRWFile(const std::string& , +16166: std::unique_ptr* , +16166: const EnvOptions& ) { +16166: return Status::NotSupported("RandomRWFile is not implemented in this Env"); +16166: } +16166: +16166: +16166: +16166: +16166: virtual Status NewMemoryMappedFileBuffer( +16166: const std::string& , +16166: std::unique_ptr* ) { +16166: return Status::NotSupported( +16166: "MemoryMappedFileBuffer is not implemented in this Env"); +16166: } +16166: # 320 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status NewDirectory(const std::string& name, +16166: std::unique_ptr* result) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status FileExists(const std::string& fname) = 0; +16166: # 338 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status GetChildren(const std::string& dir, +16166: std::vector* result) = 0; +16166: # 352 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status GetChildrenFileAttributes(const std::string& dir, +16166: std::vector* result); +16166: +16166: +16166: virtual Status DeleteFile(const std::string& fname) = 0; +16166: +16166: +16166: virtual Status Truncate(const std::string& , size_t ) { +16166: return Status::NotSupported("Truncate is not supported for this Env"); +16166: } +16166: +16166: +16166: virtual Status CreateDir(const std::string& dirname) = 0; +16166: +16166: +16166: +16166: virtual Status CreateDirIfMissing(const std::string& dirname) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status DeleteDir(const std::string& dirname) = 0; +16166: +16166: +16166: virtual Status GetFileSize(const std::string& fname, uint64_t* file_size) = 0; +16166: +16166: +16166: virtual Status GetFileModificationTime(const std::string& fname, +16166: uint64_t* file_mtime) = 0; +16166: +16166: virtual Status RenameFile(const std::string& src, +16166: const std::string& target) = 0; +16166: +16166: +16166: virtual Status LinkFile(const std::string& , +16166: const std::string& ) { +16166: return Status::NotSupported("LinkFile is not supported for this Env"); +16166: } +16166: +16166: virtual Status NumFileLinks(const std::string& , +16166: uint64_t* ) { +16166: return Status::NotSupported( +16166: "Getting number of file links is not supported for this Env"); +16166: } +16166: +16166: virtual Status AreFilesSame(const std::string& , +16166: const std::string& , bool* ) { +16166: return Status::NotSupported("AreFilesSame is not supported for this Env"); +16166: } +16166: # 416 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status LockFile(const std::string& fname, FileLock** lock) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status UnlockFile(FileLock* lock) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status LoadLibrary(const std::string& , +16166: const std::string& , +16166: std::shared_ptr* ) { +16166: return Status::NotSupported("LoadLibrary is not implemented in this Env"); +16166: } +16166: +16166: +16166: enum Priority { BOTTOM, LOW, HIGH, USER, TOTAL }; +16166: +16166: static std::string PriorityToString(Priority priority); +16166: +16166: +16166: enum IOPriority { +16166: IO_LOW = 0, +16166: IO_MID = 1, +16166: IO_HIGH = 2, +16166: IO_USER = 3, +16166: IO_TOTAL = 4 +16166: }; +16166: +16166: +16166: enum class IOActivity : uint8_t { +16166: kFlush = 0, +16166: kCompaction = 1, +16166: kDBOpen = 2, +16166: kGet = 3, +16166: kMultiGet = 4, +16166: kDBIterator = 5, +16166: kVerifyDBChecksum = 6, +16166: kVerifyFileChecksums = 7, +16166: kGetEntity = 8, +16166: kMultiGetEntity = 9, +16166: kReadManifest = 10, +16166: kUnknown, +16166: }; +16166: # 475 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual void Schedule(void (*function)(void* arg), void* arg, +16166: Priority pri = LOW, void* tag = nullptr, +16166: void (*unschedFunction)(void* arg) = nullptr) = 0; +16166: +16166: +16166: +16166: virtual int UnSchedule(void* , Priority ) { return 0; } +16166: +16166: +16166: +16166: virtual void StartThread(void (*function)(void* arg), void* arg) = 0; +16166: +16166: +16166: +16166: template +16166: void StartThreadTyped(FunctionT function, Args&&... args) { +16166: using FWType = FunctorWrapper; +16166: StartThread( +16166: [](void* arg) { +16166: auto* functor = static_cast(arg); +16166: functor->invoke(); +16166: delete functor; +16166: }, +16166: new FWType(std::function(function), +16166: std::forward(args)...)); +16166: } +16166: +16166: +16166: virtual void WaitForJoin() {} +16166: +16166: +16166: virtual int ReserveThreads(int , Priority ) { +16166: return 0; +16166: } +16166: +16166: +16166: +16166: virtual int ReleaseThreads(int , Priority ) { +16166: return 0; +16166: } +16166: +16166: +16166: virtual unsigned int GetThreadPoolQueueLen(Priority = LOW) const { +16166: return 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetTestDirectory(std::string* path) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status NewLogger(const std::string& fname, +16166: std::shared_ptr* result); +16166: +16166: +16166: +16166: +16166: virtual uint64_t NowMicros() = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual uint64_t NowNanos() { return NowMicros() * 1000; } +16166: +16166: +16166: virtual uint64_t NowCPUNanos() { return 0; } +16166: +16166: +16166: virtual void SleepForMicroseconds(int micros) = 0; +16166: +16166: +16166: +16166: virtual Status GetHostName(char* name, uint64_t len) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status GetHostNameString(std::string* result); +16166: +16166: +16166: +16166: virtual Status GetCurrentTime(int64_t* unix_time) = 0; +16166: +16166: +16166: virtual Status GetAbsolutePath(const std::string& db_path, +16166: std::string* output_path) = 0; +16166: +16166: +16166: +16166: +16166: virtual void SetBackgroundThreads(int number, Priority pri = LOW) = 0; +16166: virtual int GetBackgroundThreads(Priority pri = LOW) = 0; +16166: +16166: virtual Status SetAllowNonOwnerAccess(bool ) { +16166: return Status::NotSupported("Env::SetAllowNonOwnerAccess() not supported."); +16166: } +16166: +16166: +16166: +16166: +16166: virtual void IncBackgroundThreadsIfNeeded(int number, Priority pri) = 0; +16166: +16166: +16166: virtual void LowerThreadPoolIOPriority(Priority = LOW) {} +16166: +16166: +16166: virtual Status LowerThreadPoolCPUPriority(Priority , +16166: CpuPriority ) { +16166: return Status::NotSupported( +16166: "Env::LowerThreadPoolCPUPriority(Priority, CpuPriority) not supported"); +16166: } +16166: +16166: +16166: virtual void LowerThreadPoolCPUPriority(Priority = LOW) {} +16166: +16166: +16166: virtual std::string TimeToString(uint64_t time) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual std::string GenerateUniqueId(); +16166: +16166: +16166: +16166: virtual EnvOptions OptimizeForLogRead(const EnvOptions& env_options) const; +16166: +16166: +16166: +16166: +16166: virtual EnvOptions OptimizeForManifestRead( +16166: const EnvOptions& env_options) const; +16166: +16166: +16166: +16166: +16166: virtual EnvOptions OptimizeForLogWrite(const EnvOptions& env_options, +16166: const DBOptions& db_options) const; +16166: +16166: +16166: +16166: virtual EnvOptions OptimizeForManifestWrite( +16166: const EnvOptions& env_options) const; +16166: +16166: +16166: +16166: +16166: virtual EnvOptions OptimizeForCompactionTableWrite( +16166: const EnvOptions& env_options, +16166: const ImmutableDBOptions& immutable_ops) const; +16166: +16166: +16166: +16166: +16166: virtual EnvOptions OptimizeForCompactionTableRead( +16166: const EnvOptions& env_options, +16166: const ImmutableDBOptions& db_options) const; +16166: +16166: +16166: +16166: +16166: virtual EnvOptions OptimizeForBlobFileRead( +16166: const EnvOptions& env_options, +16166: const ImmutableDBOptions& db_options) const; +16166: +16166: +16166: virtual Status GetThreadList(std::vector* ) { +16166: return Status::NotSupported("Env::GetThreadList() not supported."); +16166: } +16166: +16166: +16166: +16166: +16166: virtual ThreadStatusUpdater* GetThreadStatusUpdater() const { +16166: return thread_status_updater_; +16166: } +16166: +16166: +16166: virtual uint64_t GetThreadID() const; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetFreeSpace(const std::string& , +16166: uint64_t* ) { +16166: return Status::NotSupported("Env::GetFreeSpace() not supported."); +16166: } +16166: +16166: +16166: virtual Status IsDirectory(const std::string& , bool* ) { +16166: return Status::NotSupported("Env::IsDirectory() not supported."); +16166: } +16166: +16166: virtual void SanitizeEnvOptions(EnvOptions* ) const {} +16166: +16166: +16166: +16166: const std::shared_ptr& GetFileSystem() const; +16166: +16166: +16166: +16166: const std::shared_ptr& GetSystemClock() const; +16166: +16166: +16166: +16166: protected: +16166: +16166: +16166: ThreadStatusUpdater* thread_status_updater_; +16166: +16166: +16166: std::shared_ptr file_system_; +16166: +16166: +16166: std::shared_ptr system_clock_; +16166: +16166: private: +16166: static const size_t kMaxHostNameLen = 256; +16166: }; +16166: +16166: +16166: +16166: +16166: ThreadStatusUpdater* CreateThreadStatusUpdater(); +16166: +16166: +16166: class SequentialFile { +16166: public: +16166: SequentialFile() {} +16166: virtual ~SequentialFile(); +16166: # 726 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status Read(size_t n, Slice* result, char* scratch) = 0; +16166: # 735 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status Skip(uint64_t n) = 0; +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: +16166: +16166: +16166: +16166: virtual Status InvalidateCache(size_t , size_t ) { +16166: return Status::NotSupported( +16166: "SequentialFile::InvalidateCache not supported."); +16166: } +16166: +16166: +16166: +16166: virtual Status PositionedRead(uint64_t , size_t , +16166: Slice* , char* ) { +16166: return Status::NotSupported( +16166: "SequentialFile::PositionedRead() not supported."); +16166: } +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: struct ReadRequest { +16166: +16166: uint64_t offset; +16166: +16166: +16166: +16166: size_t len; +16166: +16166: +16166: +16166: char* scratch; +16166: +16166: +16166: +16166: Slice result; +16166: +16166: +16166: Status status; +16166: }; +16166: +16166: +16166: class RandomAccessFile { +16166: public: +16166: RandomAccessFile() {} +16166: virtual ~RandomAccessFile(); +16166: # 806 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status Read(uint64_t offset, size_t n, Slice* result, +16166: char* scratch) const = 0; +16166: +16166: +16166: virtual Status Prefetch(uint64_t , size_t ) { +16166: return Status::OK(); +16166: } +16166: # 821 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status MultiRead(ReadRequest* reqs, size_t num_reqs) { +16166: +16166: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: (static_cast ( +16166: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: reqs != nullptr +16166: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: "reqs != nullptr" +16166: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: ; +16166: for (size_t i = 0; i < num_reqs; ++i) { +16166: ReadRequest& req = reqs[i]; +16166: req.status = Read(req.offset, req.len, &req.result, req.scratch); +16166: } +16166: return Status::OK(); +16166: } +16166: # 845 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual size_t GetUniqueId(char* , size_t ) const { +16166: return 0; +16166: +16166: } +16166: +16166: enum AccessPattern { NORMAL, RANDOM, SEQUENTIAL, WILLNEED, DONTNEED }; +16166: +16166: virtual void Hint(AccessPattern ) {} +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: +16166: +16166: +16166: +16166: virtual Status InvalidateCache(size_t , size_t ) { +16166: return Status::NotSupported( +16166: "RandomAccessFile::InvalidateCache not supported."); +16166: } +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: class WritableFile { +16166: public: +16166: WritableFile() +16166: : last_preallocated_block_(0), +16166: preallocation_block_size_(0), +16166: io_priority_(Env::IO_TOTAL), +16166: write_hint_(Env::WLTH_NOT_SET), +16166: strict_bytes_per_sync_(false) {} +16166: +16166: explicit WritableFile(const EnvOptions& options) +16166: : last_preallocated_block_(0), +16166: preallocation_block_size_(0), +16166: io_priority_(Env::IO_TOTAL), +16166: write_hint_(Env::WLTH_NOT_SET), +16166: strict_bytes_per_sync_(options.strict_bytes_per_sync) {} +16166: +16166: WritableFile(const WritableFile&) = delete; +16166: void operator=(const WritableFile&) = delete; +16166: +16166: +16166: +16166: +16166: virtual ~WritableFile(); +16166: +16166: +16166: +16166: +16166: virtual Status Append(const Slice& data) = 0; +16166: # 913 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status Append(const Slice& data, +16166: const DataVerificationInfo& ) { +16166: return Append(data); +16166: } +16166: # 938 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status PositionedAppend(const Slice& , +16166: uint64_t ) { +16166: return Status::NotSupported( +16166: "WritableFile::PositionedAppend() not supported."); +16166: } +16166: # 951 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status PositionedAppend( +16166: const Slice& , uint64_t , +16166: const DataVerificationInfo& ) { +16166: return Status::NotSupported("PositionedAppend"); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Truncate(uint64_t ) { return Status::OK(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Close() = 0; +16166: virtual Status Flush() = 0; +16166: virtual Status Sync() = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Fsync() { return Sync(); } +16166: +16166: +16166: +16166: virtual bool IsSyncThreadSafe() const { return false; } +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: # 1003 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual void SetIOPriority(Env::IOPriority pri) { io_priority_ = pri; } +16166: +16166: virtual Env::IOPriority GetIOPriority() { return io_priority_; } +16166: +16166: virtual void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) { +16166: write_hint_ = hint; +16166: } +16166: +16166: virtual Env::WriteLifeTimeHint GetWriteLifeTimeHint() { return write_hint_; } +16166: +16166: +16166: +16166: virtual uint64_t GetFileSize() = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void SetPreallocationBlockSize(size_t size) { +16166: preallocation_block_size_ = size; +16166: } +16166: +16166: virtual void GetPreallocationStatus(size_t* block_size, +16166: size_t* last_allocated_block) { +16166: *last_allocated_block = last_preallocated_block_; +16166: *block_size = preallocation_block_size_; +16166: } +16166: +16166: +16166: virtual size_t GetUniqueId(char* , size_t ) const { +16166: return 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual Status InvalidateCache(size_t , size_t ) { +16166: return Status::NotSupported("WritableFile::InvalidateCache not supported."); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status RangeSync(uint64_t , uint64_t ) { +16166: if (strict_bytes_per_sync_) { +16166: return Sync(); +16166: } +16166: return Status::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void PrepareWrite(size_t offset, size_t len) { +16166: if (preallocation_block_size_ == 0) { +16166: return; +16166: } +16166: +16166: +16166: +16166: const auto block_size = preallocation_block_size_; +16166: size_t new_last_preallocated_block = +16166: (offset + len + block_size - 1) / block_size; +16166: if (new_last_preallocated_block > last_preallocated_block_) { +16166: size_t num_spanned_blocks = +16166: new_last_preallocated_block - last_preallocated_block_; +16166: +16166: Allocate(block_size * last_preallocated_block_, +16166: block_size * num_spanned_blocks) +16166: .PermitUncheckedError(); +16166: last_preallocated_block_ = new_last_preallocated_block; +16166: } +16166: } +16166: +16166: +16166: virtual Status Allocate(uint64_t , uint64_t ) { +16166: return Status::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: protected: +16166: size_t preallocation_block_size() { return preallocation_block_size_; } +16166: +16166: private: +16166: size_t last_preallocated_block_; +16166: size_t preallocation_block_size_; +16166: +16166: protected: +16166: Env::IOPriority io_priority_; +16166: Env::WriteLifeTimeHint write_hint_; +16166: const bool strict_bytes_per_sync_; +16166: }; +16166: +16166: +16166: class RandomRWFile { +16166: public: +16166: RandomRWFile() {} +16166: +16166: RandomRWFile(const RandomRWFile&) = delete; +16166: RandomRWFile& operator=(const RandomRWFile&) = delete; +16166: +16166: +16166: +16166: +16166: virtual ~RandomRWFile() {} +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: +16166: +16166: +16166: virtual Status Write(uint64_t offset, const Slice& data) = 0; +16166: # 1139 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: virtual Status Read(uint64_t offset, size_t n, Slice* result, +16166: char* scratch) const = 0; +16166: +16166: virtual Status Flush() = 0; +16166: +16166: virtual Status Sync() = 0; +16166: +16166: virtual Status Fsync() { return Sync(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Close() = 0; +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: class MemoryMappedFileBuffer { +16166: public: +16166: MemoryMappedFileBuffer(void* _base, size_t _length) +16166: : base_(_base), length_(_length) {} +16166: +16166: virtual ~MemoryMappedFileBuffer() = 0; +16166: +16166: +16166: +16166: MemoryMappedFileBuffer(const MemoryMappedFileBuffer&) = delete; +16166: MemoryMappedFileBuffer& operator=(const MemoryMappedFileBuffer&) = delete; +16166: +16166: void* GetBase() const { return base_; } +16166: size_t GetLen() const { return length_; } +16166: +16166: protected: +16166: void* base_; +16166: const size_t length_; +16166: }; +16166: +16166: +16166: +16166: class Directory { +16166: public: +16166: +16166: +16166: virtual ~Directory() {} +16166: +16166: virtual Status Fsync() = 0; +16166: +16166: +16166: +16166: virtual Status Close() { return Status::NotSupported("Close"); } +16166: +16166: virtual size_t GetUniqueId(char* , size_t ) const { +16166: return 0; +16166: } +16166: +16166: +16166: +16166: }; +16166: +16166: enum InfoLogLevel : unsigned char { +16166: DEBUG_LEVEL = 0, +16166: INFO_LEVEL, +16166: WARN_LEVEL, +16166: ERROR_LEVEL, +16166: FATAL_LEVEL, +16166: HEADER_LEVEL, +16166: NUM_INFO_LOG_LEVELS, +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class Logger { +16166: public: +16166: static constexpr size_t kDoNotSupportGetLogFileSize = +16166: # 1220 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: (4294967295U) +16166: # 1220 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: ; +16166: +16166: +16166: +16166: static const InfoLogLevel kDefaultLogLevel; +16166: +16166: explicit Logger(const InfoLogLevel log_level = InfoLogLevel::INFO_LEVEL) +16166: : closed_(false), log_level_(log_level) {} +16166: +16166: Logger(const Logger&) = delete; +16166: void operator=(const Logger&) = delete; +16166: +16166: virtual ~Logger(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Close(); +16166: +16166: +16166: +16166: +16166: virtual void LogHeader(const char* format, va_list ap) { +16166: +16166: +16166: Logv(InfoLogLevel::INFO_LEVEL, format, ap); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void Logv(const char* , va_list ) { +16166: +16166: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: (static_cast ( +16166: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: false +16166: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: "false" +16166: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: ; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual void Logv(const InfoLogLevel log_level, const char* format, +16166: va_list ap); +16166: +16166: virtual size_t GetLogFileSize() const { return kDoNotSupportGetLogFileSize; } +16166: +16166: virtual void Flush() {} +16166: virtual InfoLogLevel GetInfoLogLevel() const { return log_level_; } +16166: virtual void SetInfoLogLevel(const InfoLogLevel log_level) { +16166: log_level_ = log_level; +16166: } +16166: +16166: +16166: +16166: protected: +16166: virtual Status CloseImpl(); +16166: bool closed_; +16166: +16166: private: +16166: InfoLogLevel log_level_; +16166: }; +16166: +16166: +16166: +16166: +16166: class FileLock { +16166: public: +16166: FileLock() {} +16166: virtual ~FileLock(); +16166: +16166: private: +16166: +16166: FileLock(const FileLock&) = delete; +16166: void operator=(const FileLock&) = delete; +16166: }; +16166: +16166: class DynamicLibrary { +16166: public: +16166: virtual ~DynamicLibrary() {} +16166: +16166: +16166: virtual const char* Name() const = 0; +16166: +16166: +16166: +16166: template +16166: Status LoadFunction(const std::string& sym_name, std::function* function) { +16166: +16166: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: (static_cast ( +16166: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: nullptr != function +16166: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: "nullptr != function" +16166: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1309 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: ; +16166: void* ptr = nullptr; +16166: Status s = LoadSymbol(sym_name, &ptr); +16166: *function = reinterpret_cast(ptr); +16166: return s; +16166: } +16166: +16166: virtual Status LoadSymbol(const std::string& sym_name, void** func) = 0; +16166: }; +16166: +16166: void LogFlush(const std::shared_ptr& info_log); +16166: +16166: void Log(const InfoLogLevel log_level, const std::shared_ptr& info_log, +16166: const char* format, ...) __attribute__((__format__(__printf__, 3, 4))); +16166: +16166: +16166: void Header(const std::shared_ptr& info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Debug(const std::shared_ptr& info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Info(const std::shared_ptr& info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Warn(const std::shared_ptr& info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Error(const std::shared_ptr& info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Fatal(const std::shared_ptr& info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: +16166: +16166: +16166: void Log(const std::shared_ptr& info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: +16166: void LogFlush(Logger* info_log); +16166: +16166: void Log(const InfoLogLevel log_level, Logger* info_log, const char* format, +16166: ...) __attribute__((__format__(__printf__, 3, 4))); +16166: +16166: +16166: void Log(Logger* info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: +16166: +16166: void Header(Logger* info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Debug(Logger* info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Info(Logger* info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Warn(Logger* info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Error(Logger* info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: void Fatal(Logger* info_log, const char* format, ...) +16166: __attribute__((__format__(__printf__, 2, 3))); +16166: +16166: +16166: Status WriteStringToFile(Env* env, const Slice& data, const std::string& fname, +16166: bool should_sync = false, +16166: const IOOptions* io_options = nullptr); +16166: +16166: +16166: Status ReadFileToString(Env* env, const std::string& fname, std::string* data); +16166: # 1402 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h" +16166: class EnvWrapper : public Env { +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: struct Target { +16166: Env* env; +16166: std::shared_ptr guard; +16166: +16166: +16166: explicit Target(Env* t) : env(t) {} +16166: +16166: +16166: explicit Target(std::unique_ptr&& t) : guard(t.release()) { +16166: env = guard.get(); +16166: } +16166: +16166: +16166: explicit Target(const std::shared_ptr& t) : guard(t) { +16166: env = guard.get(); +16166: } +16166: +16166: +16166: void Prepare() { +16166: if (guard.get() != nullptr) { +16166: env = guard.get(); +16166: } else if (env == nullptr) { +16166: env = Env::Default(); +16166: } +16166: } +16166: }; +16166: +16166: +16166: explicit EnvWrapper(Env* t); +16166: explicit EnvWrapper(std::unique_ptr&& t); +16166: explicit EnvWrapper(const std::shared_ptr& t); +16166: ~EnvWrapper() override; +16166: +16166: +16166: Env* target() const { return target_.env; } +16166: +16166: +16166: +16166: const char* Name() const override { return target_.env->Name(); } +16166: +16166: +16166: Status RegisterDbPaths(const std::vector& paths) override { +16166: return target_.env->RegisterDbPaths(paths); +16166: } +16166: +16166: Status UnregisterDbPaths(const std::vector& paths) override { +16166: return target_.env->UnregisterDbPaths(paths); +16166: } +16166: +16166: Status NewSequentialFile(const std::string& f, +16166: std::unique_ptr* r, +16166: const EnvOptions& options) override { +16166: return target_.env->NewSequentialFile(f, r, options); +16166: } +16166: Status NewRandomAccessFile(const std::string& f, +16166: std::unique_ptr* r, +16166: const EnvOptions& options) override { +16166: return target_.env->NewRandomAccessFile(f, r, options); +16166: } +16166: Status NewWritableFile(const std::string& f, std::unique_ptr* r, +16166: const EnvOptions& options) override { +16166: return target_.env->NewWritableFile(f, r, options); +16166: } +16166: Status ReopenWritableFile(const std::string& fname, +16166: std::unique_ptr* result, +16166: const EnvOptions& options) override { +16166: return target_.env->ReopenWritableFile(fname, result, options); +16166: } +16166: Status ReuseWritableFile(const std::string& fname, +16166: const std::string& old_fname, +16166: std::unique_ptr* r, +16166: const EnvOptions& options) override { +16166: return target_.env->ReuseWritableFile(fname, old_fname, r, options); +16166: } +16166: Status NewRandomRWFile(const std::string& fname, +16166: std::unique_ptr* result, +16166: const EnvOptions& options) override { +16166: return target_.env->NewRandomRWFile(fname, result, options); +16166: } +16166: Status NewMemoryMappedFileBuffer( +16166: const std::string& fname, +16166: std::unique_ptr* result) override { +16166: return target_.env->NewMemoryMappedFileBuffer(fname, result); +16166: } +16166: Status NewDirectory(const std::string& name, +16166: std::unique_ptr* result) override { +16166: return target_.env->NewDirectory(name, result); +16166: } +16166: Status FileExists(const std::string& f) override { +16166: return target_.env->FileExists(f); +16166: } +16166: Status GetChildren(const std::string& dir, +16166: std::vector* r) override { +16166: return target_.env->GetChildren(dir, r); +16166: } +16166: Status GetChildrenFileAttributes( +16166: const std::string& dir, std::vector* result) override { +16166: return target_.env->GetChildrenFileAttributes(dir, result); +16166: } +16166: Status DeleteFile(const std::string& f) override { +16166: return target_.env->DeleteFile(f); +16166: } +16166: Status Truncate(const std::string& fname, size_t size) override { +16166: return target_.env->Truncate(fname, size); +16166: } +16166: Status CreateDir(const std::string& d) override { +16166: return target_.env->CreateDir(d); +16166: } +16166: Status CreateDirIfMissing(const std::string& d) override { +16166: return target_.env->CreateDirIfMissing(d); +16166: } +16166: Status DeleteDir(const std::string& d) override { +16166: return target_.env->DeleteDir(d); +16166: } +16166: Status GetFileSize(const std::string& f, uint64_t* s) override { +16166: return target_.env->GetFileSize(f, s); +16166: } +16166: +16166: Status GetFileModificationTime(const std::string& fname, +16166: uint64_t* file_mtime) override { +16166: return target_.env->GetFileModificationTime(fname, file_mtime); +16166: } +16166: +16166: Status RenameFile(const std::string& s, const std::string& t) override { +16166: return target_.env->RenameFile(s, t); +16166: } +16166: +16166: Status LinkFile(const std::string& s, const std::string& t) override { +16166: return target_.env->LinkFile(s, t); +16166: } +16166: +16166: Status NumFileLinks(const std::string& fname, uint64_t* count) override { +16166: return target_.env->NumFileLinks(fname, count); +16166: } +16166: +16166: Status AreFilesSame(const std::string& first, const std::string& second, +16166: bool* res) override { +16166: return target_.env->AreFilesSame(first, second, res); +16166: } +16166: +16166: Status LockFile(const std::string& f, FileLock** l) override { +16166: return target_.env->LockFile(f, l); +16166: } +16166: +16166: Status UnlockFile(FileLock* l) override { return target_.env->UnlockFile(l); } +16166: +16166: Status IsDirectory(const std::string& path, bool* is_dir) override { +16166: return target_.env->IsDirectory(path, is_dir); +16166: } +16166: +16166: Status LoadLibrary(const std::string& lib_name, +16166: const std::string& search_path, +16166: std::shared_ptr* result) override { +16166: return target_.env->LoadLibrary(lib_name, search_path, result); +16166: } +16166: +16166: void Schedule(void (*f)(void* arg), void* a, Priority pri, +16166: void* tag = nullptr, void (*u)(void* arg) = nullptr) override { +16166: return target_.env->Schedule(f, a, pri, tag, u); +16166: } +16166: +16166: int UnSchedule(void* tag, Priority pri) override { +16166: return target_.env->UnSchedule(tag, pri); +16166: } +16166: +16166: void StartThread(void (*f)(void*), void* a) override { +16166: return target_.env->StartThread(f, a); +16166: } +16166: void WaitForJoin() override { return target_.env->WaitForJoin(); } +16166: unsigned int GetThreadPoolQueueLen(Priority pri = LOW) const override { +16166: return target_.env->GetThreadPoolQueueLen(pri); +16166: } +16166: +16166: int ReserveThreads(int threads_to_be_reserved, Priority pri) override { +16166: return target_.env->ReserveThreads(threads_to_be_reserved, pri); +16166: } +16166: +16166: int ReleaseThreads(int threads_to_be_released, Priority pri) override { +16166: return target_.env->ReleaseThreads(threads_to_be_released, pri); +16166: } +16166: +16166: Status GetTestDirectory(std::string* path) override { +16166: return target_.env->GetTestDirectory(path); +16166: } +16166: Status NewLogger(const std::string& fname, +16166: std::shared_ptr* result) override { +16166: return target_.env->NewLogger(fname, result); +16166: } +16166: uint64_t NowMicros() override { return target_.env->NowMicros(); } +16166: uint64_t NowNanos() override { return target_.env->NowNanos(); } +16166: uint64_t NowCPUNanos() override { return target_.env->NowCPUNanos(); } +16166: +16166: void SleepForMicroseconds(int micros) override { +16166: target_.env->SleepForMicroseconds(micros); +16166: } +16166: Status GetHostName(char* name, uint64_t len) override { +16166: return target_.env->GetHostName(name, len); +16166: } +16166: Status GetCurrentTime(int64_t* unix_time) override { +16166: return target_.env->GetCurrentTime(unix_time); +16166: } +16166: Status GetAbsolutePath(const std::string& db_path, +16166: std::string* output_path) override { +16166: return target_.env->GetAbsolutePath(db_path, output_path); +16166: } +16166: void SetBackgroundThreads(int num, Priority pri) override { +16166: return target_.env->SetBackgroundThreads(num, pri); +16166: } +16166: int GetBackgroundThreads(Priority pri) override { +16166: return target_.env->GetBackgroundThreads(pri); +16166: } +16166: +16166: Status SetAllowNonOwnerAccess(bool allow_non_owner_access) override { +16166: return target_.env->SetAllowNonOwnerAccess(allow_non_owner_access); +16166: } +16166: +16166: void IncBackgroundThreadsIfNeeded(int num, Priority pri) override { +16166: return target_.env->IncBackgroundThreadsIfNeeded(num, pri); +16166: } +16166: +16166: void LowerThreadPoolIOPriority(Priority pool) override { +16166: target_.env->LowerThreadPoolIOPriority(pool); +16166: } +16166: +16166: void LowerThreadPoolCPUPriority(Priority pool) override { +16166: target_.env->LowerThreadPoolCPUPriority(pool); +16166: } +16166: +16166: Status LowerThreadPoolCPUPriority(Priority pool, CpuPriority pri) override { +16166: return target_.env->LowerThreadPoolCPUPriority(pool, pri); +16166: } +16166: +16166: std::string TimeToString(uint64_t time) override { +16166: return target_.env->TimeToString(time); +16166: } +16166: +16166: Status GetThreadList(std::vector* thread_list) override { +16166: return target_.env->GetThreadList(thread_list); +16166: } +16166: +16166: ThreadStatusUpdater* GetThreadStatusUpdater() const override { +16166: return target_.env->GetThreadStatusUpdater(); +16166: } +16166: +16166: uint64_t GetThreadID() const override { return target_.env->GetThreadID(); } +16166: +16166: std::string GenerateUniqueId() override { +16166: return target_.env->GenerateUniqueId(); +16166: } +16166: +16166: EnvOptions OptimizeForLogRead(const EnvOptions& env_options) const override { +16166: return target_.env->OptimizeForLogRead(env_options); +16166: } +16166: EnvOptions OptimizeForManifestRead( +16166: const EnvOptions& env_options) const override { +16166: return target_.env->OptimizeForManifestRead(env_options); +16166: } +16166: EnvOptions OptimizeForLogWrite(const EnvOptions& env_options, +16166: const DBOptions& db_options) const override { +16166: return target_.env->OptimizeForLogWrite(env_options, db_options); +16166: } +16166: EnvOptions OptimizeForManifestWrite( +16166: const EnvOptions& env_options) const override { +16166: return target_.env->OptimizeForManifestWrite(env_options); +16166: } +16166: EnvOptions OptimizeForCompactionTableWrite( +16166: const EnvOptions& env_options, +16166: const ImmutableDBOptions& immutable_ops) const override { +16166: return target_.env->OptimizeForCompactionTableWrite(env_options, +16166: immutable_ops); +16166: } +16166: EnvOptions OptimizeForCompactionTableRead( +16166: const EnvOptions& env_options, +16166: const ImmutableDBOptions& db_options) const override { +16166: return target_.env->OptimizeForCompactionTableRead(env_options, db_options); +16166: } +16166: EnvOptions OptimizeForBlobFileRead( +16166: const EnvOptions& env_options, +16166: const ImmutableDBOptions& db_options) const override { +16166: return target_.env->OptimizeForBlobFileRead(env_options, db_options); +16166: } +16166: Status GetFreeSpace(const std::string& path, uint64_t* diskfree) override { +16166: return target_.env->GetFreeSpace(path, diskfree); +16166: } +16166: void SanitizeEnvOptions(EnvOptions* env_opts) const override { +16166: target_.env->SanitizeEnvOptions(env_opts); +16166: } +16166: Status PrepareOptions(const ConfigOptions& options) override; +16166: std::string SerializeOptions(const ConfigOptions& config_options, +16166: const std::string& header) const override; +16166: +16166: private: +16166: Target target_; +16166: }; +16166: +16166: class SequentialFileWrapper : public SequentialFile { +16166: public: +16166: explicit SequentialFileWrapper(SequentialFile* target) : target_(target) {} +16166: +16166: Status Read(size_t n, Slice* result, char* scratch) override { +16166: return target_->Read(n, result, scratch); +16166: } +16166: Status Skip(uint64_t n) override { return target_->Skip(n); } +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: Status InvalidateCache(size_t offset, size_t length) override { +16166: return target_->InvalidateCache(offset, length); +16166: } +16166: Status PositionedRead(uint64_t offset, size_t n, Slice* result, +16166: char* scratch) override { +16166: return target_->PositionedRead(offset, n, result, scratch); +16166: } +16166: +16166: private: +16166: SequentialFile* target_; +16166: }; +16166: +16166: class RandomAccessFileWrapper : public RandomAccessFile { +16166: public: +16166: explicit RandomAccessFileWrapper(RandomAccessFile* target) +16166: : target_(target) {} +16166: +16166: Status Read(uint64_t offset, size_t n, Slice* result, +16166: char* scratch) const override { +16166: return target_->Read(offset, n, result, scratch); +16166: } +16166: Status MultiRead(ReadRequest* reqs, size_t num_reqs) override { +16166: return target_->MultiRead(reqs, num_reqs); +16166: } +16166: Status Prefetch(uint64_t offset, size_t n) override { +16166: return target_->Prefetch(offset, n); +16166: } +16166: size_t GetUniqueId(char* id, size_t max_size) const override { +16166: return target_->GetUniqueId(id, max_size); +16166: } +16166: void Hint(AccessPattern pattern) override { target_->Hint(pattern); } +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: Status InvalidateCache(size_t offset, size_t length) override { +16166: return target_->InvalidateCache(offset, length); +16166: } +16166: +16166: private: +16166: RandomAccessFile* target_; +16166: }; +16166: +16166: class WritableFileWrapper : public WritableFile { +16166: public: +16166: explicit WritableFileWrapper(WritableFile* t) : target_(t) {} +16166: +16166: Status Append(const Slice& data) override { return target_->Append(data); } +16166: Status Append(const Slice& data, +16166: const DataVerificationInfo& verification_info) override { +16166: return target_->Append(data, verification_info); +16166: } +16166: Status PositionedAppend(const Slice& data, uint64_t offset) override { +16166: return target_->PositionedAppend(data, offset); +16166: } +16166: Status PositionedAppend( +16166: const Slice& data, uint64_t offset, +16166: const DataVerificationInfo& verification_info) override { +16166: return target_->PositionedAppend(data, offset, verification_info); +16166: } +16166: Status Truncate(uint64_t size) override { return target_->Truncate(size); } +16166: Status Close() override { return target_->Close(); } +16166: Status Flush() override { return target_->Flush(); } +16166: Status Sync() override { return target_->Sync(); } +16166: Status Fsync() override { return target_->Fsync(); } +16166: bool IsSyncThreadSafe() const override { return target_->IsSyncThreadSafe(); } +16166: +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: +16166: void SetIOPriority(Env::IOPriority pri) override { +16166: target_->SetIOPriority(pri); +16166: } +16166: +16166: Env::IOPriority GetIOPriority() override { return target_->GetIOPriority(); } +16166: +16166: void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) override { +16166: target_->SetWriteLifeTimeHint(hint); +16166: } +16166: +16166: Env::WriteLifeTimeHint GetWriteLifeTimeHint() override { +16166: return target_->GetWriteLifeTimeHint(); +16166: } +16166: +16166: uint64_t GetFileSize() override { return target_->GetFileSize(); } +16166: +16166: void SetPreallocationBlockSize(size_t size) override { +16166: target_->SetPreallocationBlockSize(size); +16166: } +16166: +16166: void GetPreallocationStatus(size_t* block_size, +16166: size_t* last_allocated_block) override { +16166: target_->GetPreallocationStatus(block_size, last_allocated_block); +16166: } +16166: +16166: size_t GetUniqueId(char* id, size_t max_size) const override { +16166: return target_->GetUniqueId(id, max_size); +16166: } +16166: +16166: Status InvalidateCache(size_t offset, size_t length) override { +16166: return target_->InvalidateCache(offset, length); +16166: } +16166: +16166: Status RangeSync(uint64_t offset, uint64_t nbytes) override { +16166: return target_->RangeSync(offset, nbytes); +16166: } +16166: +16166: void PrepareWrite(size_t offset, size_t len) override { +16166: target_->PrepareWrite(offset, len); +16166: } +16166: +16166: Status Allocate(uint64_t offset, uint64_t len) override { +16166: return target_->Allocate(offset, len); +16166: } +16166: +16166: private: +16166: WritableFile* target_; +16166: }; +16166: +16166: class RandomRWFileWrapper : public RandomRWFile { +16166: public: +16166: explicit RandomRWFileWrapper(RandomRWFile* target) : target_(target) {} +16166: +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: Status Write(uint64_t offset, const Slice& data) override { +16166: return target_->Write(offset, data); +16166: } +16166: Status Read(uint64_t offset, size_t n, Slice* result, +16166: char* scratch) const override { +16166: return target_->Read(offset, n, result, scratch); +16166: } +16166: Status Flush() override { return target_->Flush(); } +16166: Status Sync() override { return target_->Sync(); } +16166: Status Fsync() override { return target_->Fsync(); } +16166: Status Close() override { return target_->Close(); } +16166: +16166: private: +16166: RandomRWFile* target_; +16166: }; +16166: +16166: class DirectoryWrapper : public Directory { +16166: public: +16166: explicit DirectoryWrapper(Directory* target) : target_(target) {} +16166: +16166: Status Fsync() override { return target_->Fsync(); } +16166: Status Close() override { return target_->Close(); } +16166: size_t GetUniqueId(char* id, size_t max_size) const override { +16166: return target_->GetUniqueId(id, max_size); +16166: } +16166: +16166: private: +16166: Directory* target_; +16166: }; +16166: +16166: class LoggerWrapper : public Logger { +16166: public: +16166: explicit LoggerWrapper(Logger* target) : target_(target) {} +16166: +16166: Status Close() override { return target_->Close(); } +16166: void LogHeader(const char* format, va_list ap) override { +16166: return target_->LogHeader(format, ap); +16166: } +16166: void Logv(const char* format, va_list ap) override { +16166: return target_->Logv(format, ap); +16166: } +16166: void Logv(const InfoLogLevel log_level, const char* format, +16166: va_list ap) override { +16166: return target_->Logv(log_level, format, ap); +16166: } +16166: size_t GetLogFileSize() const override { return target_->GetLogFileSize(); } +16166: void Flush() override { return target_->Flush(); } +16166: InfoLogLevel GetInfoLogLevel() const override { +16166: return target_->GetInfoLogLevel(); +16166: } +16166: void SetInfoLogLevel(const InfoLogLevel log_level) override { +16166: return target_->SetInfoLogLevel(log_level); +16166: } +16166: +16166: private: +16166: Logger* target_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: Env* NewMemEnv(Env* base_env); +16166: +16166: +16166: +16166: +16166: Env* NewTimedEnv(Env* base_env); +16166: +16166: +16166: +16166: +16166: Status NewEnvLogger(const std::string& fname, Env* env, +16166: std::shared_ptr* result); +16166: +16166: +16166: +16166: std::unique_ptr NewCompositeEnv(const std::shared_ptr& fs); +16166: +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +16166: +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" 2 +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +16166: namespace rocksdb { +16166: +16166: +16166: constexpr char kUnknownFileChecksum[] = ""; +16166: +16166: constexpr char kUnknownFileChecksumFuncName[] = "Unknown"; +16166: +16166: +16166: +16166: constexpr char kStandardDbFileChecksumFuncName[] = "FileChecksumCrc32c"; +16166: +16166: struct FileChecksumGenContext { +16166: std::string file_name; +16166: +16166: +16166: +16166: +16166: std::string requested_checksum_func_name; +16166: }; +16166: # 50 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +16166: class FileChecksumGenerator { +16166: public: +16166: virtual ~FileChecksumGenerator() {} +16166: +16166: +16166: +16166: +16166: virtual void Update(const char* data, size_t n) = 0; +16166: +16166: +16166: virtual void Finalize() = 0; +16166: +16166: +16166: +16166: virtual std::string GetChecksum() const = 0; +16166: +16166: +16166: virtual const char* Name() const = 0; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FileChecksumGenFactory : public Customizable { +16166: public: +16166: ~FileChecksumGenFactory() override {} +16166: static const char* Type() { return "FileChecksumGenFactory"; } +16166: static Status CreateFromString( +16166: const ConfigOptions& options, const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: +16166: virtual std::unique_ptr CreateFileChecksumGenerator( +16166: const FileChecksumGenContext& context) = 0; +16166: +16166: +16166: const char* Name() const override = 0; +16166: }; +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +16166: class FileChecksumList { +16166: public: +16166: virtual ~FileChecksumList() {} +16166: +16166: +16166: virtual void reset() = 0; +16166: +16166: +16166: virtual size_t size() const = 0; +16166: +16166: +16166: +16166: +16166: virtual Status GetAllFileChecksums( +16166: std::vector* file_numbers, std::vector* checksums, +16166: std::vector* checksum_func_names) = 0; +16166: +16166: +16166: +16166: virtual Status SearchOneFileChecksum(uint64_t file_number, +16166: std::string* checksum, +16166: std::string* checksum_func_name) = 0; +16166: +16166: +16166: virtual Status InsertOneFileChecksum( +16166: uint64_t file_number, const std::string& checksum, +16166: const std::string& checksum_func_name) = 0; +16166: +16166: +16166: virtual Status RemoveOneFileChecksum(uint64_t file_number) = 0; +16166: }; +16166: +16166: +16166: FileChecksumList* NewFileChecksumList(); +16166: # 143 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_checksum.h" +16166: extern std::shared_ptr +16166: GetFileChecksumGenCrc32cFactory(); +16166: +16166: } +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_job_stats.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 8 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_job_stats.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: struct CompactionJobStats { +16166: CompactionJobStats() { Reset(); } +16166: void Reset(); +16166: +16166: void Add(const CompactionJobStats& stats); +16166: +16166: +16166: uint64_t elapsed_micros = 0; +16166: +16166: +16166: uint64_t cpu_micros = 0; +16166: +16166: +16166: +16166: bool has_num_input_records = false; +16166: +16166: uint64_t num_input_records = 0; +16166: +16166: uint64_t num_blobs_read = 0; +16166: +16166: size_t num_input_files = 0; +16166: +16166: size_t num_input_files_at_output_level = 0; +16166: +16166: +16166: size_t num_filtered_input_files = 0; +16166: +16166: +16166: size_t num_filtered_input_files_at_output_level = 0; +16166: +16166: +16166: uint64_t num_output_records = 0; +16166: +16166: size_t num_output_files = 0; +16166: +16166: size_t num_output_files_blob = 0; +16166: +16166: +16166: bool is_full_compaction = false; +16166: +16166: bool is_manual_compaction = false; +16166: +16166: bool is_remote_compaction = false; +16166: +16166: +16166: uint64_t total_input_bytes = 0; +16166: +16166: uint64_t total_blob_bytes_read = 0; +16166: +16166: uint64_t total_output_bytes = 0; +16166: +16166: uint64_t total_output_bytes_blob = 0; +16166: +16166: +16166: uint64_t total_skipped_input_bytes = 0; +16166: +16166: +16166: +16166: +16166: uint64_t num_records_replaced = 0; +16166: +16166: +16166: uint64_t total_input_raw_key_bytes = 0; +16166: +16166: uint64_t total_input_raw_value_bytes = 0; +16166: +16166: +16166: +16166: uint64_t num_input_deletion_records = 0; +16166: +16166: +16166: +16166: uint64_t num_expired_deletion_records = 0; +16166: +16166: +16166: +16166: uint64_t num_corrupt_keys = 0; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t file_write_nanos = 0; +16166: +16166: +16166: uint64_t file_range_sync_nanos = 0; +16166: +16166: +16166: uint64_t file_fsync_nanos = 0; +16166: +16166: +16166: uint64_t file_prepare_write_nanos = 0; +16166: +16166: +16166: +16166: static const size_t kMaxPrefixLength = 8; +16166: +16166: std::string smallest_output_key_prefix; +16166: std::string largest_output_key_prefix; +16166: +16166: +16166: uint64_t num_single_del_fallthru = 0; +16166: +16166: +16166: uint64_t num_single_del_mismatch = 0; +16166: +16166: +16166: }; +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 1 +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cstring" 1 3 +16166: # 39 "/usr/include/c++/14/cstring" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstring" 3 +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 43 "/usr/include/c++/14/cstring" 2 3 +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 2 +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class IOStatus : public Status { +16166: public: +16166: using Code = Status::Code; +16166: using SubCode = Status::SubCode; +16166: +16166: enum IOErrorScope : unsigned char { +16166: kIOErrorScopeFileSystem, +16166: kIOErrorScopeFile, +16166: kIOErrorScopeRange, +16166: kIOErrorScopeMax, +16166: }; +16166: +16166: +16166: IOStatus() : IOStatus(kOk, kNone) {} +16166: ~IOStatus() {} +16166: +16166: +16166: IOStatus(const IOStatus& s); +16166: IOStatus& operator=(const IOStatus& s); +16166: IOStatus(IOStatus&& s) noexcept; +16166: IOStatus& operator=(IOStatus&& s) noexcept; +16166: bool operator==(const IOStatus& rhs) const; +16166: bool operator!=(const IOStatus& rhs) const; +16166: +16166: void SetRetryable(bool retryable) { retryable_ = retryable; } +16166: void SetDataLoss(bool data_loss) { data_loss_ = data_loss; } +16166: void SetScope(IOErrorScope scope) { +16166: scope_ = static_cast(scope); +16166: } +16166: +16166: bool GetRetryable() const { return retryable_; } +16166: bool GetDataLoss() const { return data_loss_; } +16166: IOErrorScope GetScope() const { return static_cast(scope_); } +16166: +16166: +16166: static IOStatus OK() { return IOStatus(); } +16166: +16166: static IOStatus NotSupported(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kNotSupported, msg, msg2); +16166: } +16166: static IOStatus NotSupported(SubCode msg = kNone) { +16166: return IOStatus(kNotSupported, msg); +16166: } +16166: +16166: +16166: static IOStatus NotFound(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kNotFound, msg, msg2); +16166: } +16166: +16166: static IOStatus NotFound(SubCode msg = kNone) { +16166: return IOStatus(kNotFound, msg); +16166: } +16166: +16166: static IOStatus Corruption(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kCorruption, msg, msg2); +16166: } +16166: static IOStatus Corruption(SubCode msg = kNone) { +16166: return IOStatus(kCorruption, msg); +16166: } +16166: +16166: static IOStatus InvalidArgument(const Slice& msg, +16166: const Slice& msg2 = Slice()) { +16166: return IOStatus(kInvalidArgument, msg, msg2); +16166: } +16166: static IOStatus InvalidArgument(SubCode msg = kNone) { +16166: return IOStatus(kInvalidArgument, msg); +16166: } +16166: +16166: static IOStatus IOError(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kIOError, msg, msg2); +16166: } +16166: static IOStatus IOError(SubCode msg = kNone) { +16166: return IOStatus(kIOError, msg); +16166: } +16166: +16166: static IOStatus Busy(SubCode msg = kNone) { return IOStatus(kBusy, msg); } +16166: static IOStatus Busy(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kBusy, msg, msg2); +16166: } +16166: +16166: static IOStatus TimedOut(SubCode msg = kNone) { +16166: return IOStatus(kTimedOut, msg); +16166: } +16166: static IOStatus TimedOut(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kTimedOut, msg, msg2); +16166: } +16166: +16166: static IOStatus NoSpace() { return IOStatus(kIOError, kNoSpace); } +16166: static IOStatus NoSpace(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kIOError, kNoSpace, msg, msg2); +16166: } +16166: +16166: static IOStatus PathNotFound() { return IOStatus(kIOError, kPathNotFound); } +16166: static IOStatus PathNotFound(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kIOError, kPathNotFound, msg, msg2); +16166: } +16166: +16166: static IOStatus IOFenced() { return IOStatus(kIOError, kIOFenced); } +16166: static IOStatus IOFenced(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kIOError, kIOFenced, msg, msg2); +16166: } +16166: +16166: static IOStatus Aborted(SubCode msg = kNone) { +16166: return IOStatus(kAborted, msg); +16166: } +16166: static IOStatus Aborted(const Slice& msg, const Slice& msg2 = Slice()) { +16166: return IOStatus(kAborted, msg, msg2); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: private: +16166: friend IOStatus status_to_io_status(Status&&); +16166: +16166: explicit IOStatus(Code _code, SubCode _subcode = kNone) +16166: : Status(_code, _subcode, false, false, kIOErrorScopeFileSystem) {} +16166: +16166: IOStatus(Code _code, SubCode _subcode, const Slice& msg, const Slice& msg2); +16166: IOStatus(Code _code, const Slice& msg, const Slice& msg2) +16166: : IOStatus(_code, kNone, msg, msg2) {} +16166: }; +16166: +16166: inline IOStatus::IOStatus(Code _code, SubCode _subcode, const Slice& msg, +16166: const Slice& msg2) +16166: : Status(_code, _subcode, false, false, kIOErrorScopeFileSystem) { +16166: +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +16166: (static_cast ( +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +16166: code_ != kOk +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +16166: "code_ != kOk" +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +16166: ; +16166: +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +16166: (static_cast ( +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +16166: subcode_ != kMaxSubCode +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +16166: "subcode_ != kMaxSubCode" +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/io_status.h" +16166: ; +16166: const size_t len1 = msg.size(); +16166: const size_t len2 = msg2.size(); +16166: const size_t size = len1 + (len2 ? (2 + len2) : 0); +16166: char* const result = new char[size + 1]; +16166: memcpy(result, msg.data(), len1); +16166: if (len2) { +16166: result[len1] = ':'; +16166: result[len1 + 1] = ' '; +16166: memcpy(result + len1 + 2, msg2.data(), len2); +16166: } +16166: result[size] = '\0'; +16166: state_.reset(result); +16166: } +16166: +16166: inline IOStatus::IOStatus(const IOStatus& s) : Status(s.code_, s.subcode_) { +16166: +16166: +16166: +16166: retryable_ = s.retryable_; +16166: data_loss_ = s.data_loss_; +16166: scope_ = s.scope_; +16166: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +16166: } +16166: inline IOStatus& IOStatus::operator=(const IOStatus& s) { +16166: +16166: +16166: if (this != &s) { +16166: +16166: +16166: +16166: +16166: code_ = s.code_; +16166: subcode_ = s.subcode_; +16166: retryable_ = s.retryable_; +16166: data_loss_ = s.data_loss_; +16166: scope_ = s.scope_; +16166: state_ = (s.state_ == nullptr) ? nullptr : CopyState(s.state_.get()); +16166: } +16166: return *this; +16166: } +16166: +16166: inline IOStatus::IOStatus(IOStatus&& s) noexcept : IOStatus() { +16166: *this = std::move(s); +16166: } +16166: +16166: inline IOStatus& IOStatus::operator=(IOStatus&& s) noexcept { +16166: if (this != &s) { +16166: +16166: +16166: +16166: +16166: code_ = std::move(s.code_); +16166: s.code_ = kOk; +16166: subcode_ = std::move(s.subcode_); +16166: s.subcode_ = kNone; +16166: retryable_ = s.retryable_; +16166: data_loss_ = s.data_loss_; +16166: scope_ = s.scope_; +16166: s.scope_ = kIOErrorScopeFileSystem; +16166: state_ = std::move(s.state_); +16166: } +16166: return *this; +16166: } +16166: +16166: inline bool IOStatus::operator==(const IOStatus& rhs) const { +16166: +16166: +16166: +16166: +16166: return (code_ == rhs.code_); +16166: } +16166: +16166: inline bool IOStatus::operator!=(const IOStatus& rhs) const { +16166: +16166: +16166: +16166: +16166: return !(*this == rhs); +16166: } +16166: +16166: inline IOStatus status_to_io_status(Status&& status) { +16166: IOStatus io_s; +16166: Status& s = io_s; +16166: s = std::move(status); +16166: return io_s; +16166: } +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +16166: namespace rocksdb { +16166: +16166: class InternalTblPropColl; +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +16166: using UserCollectedProperties = std::map; +16166: +16166: +16166: struct TablePropertiesNames { +16166: static const std::string kDbId; +16166: static const std::string kDbSessionId; +16166: static const std::string kDbHostId; +16166: static const std::string kOriginalFileNumber; +16166: static const std::string kDataSize; +16166: static const std::string kIndexSize; +16166: static const std::string kIndexPartitions; +16166: static const std::string kTopLevelIndexSize; +16166: static const std::string kIndexKeyIsUserKey; +16166: static const std::string kIndexValueIsDeltaEncoded; +16166: static const std::string kFilterSize; +16166: static const std::string kRawKeySize; +16166: static const std::string kRawValueSize; +16166: static const std::string kNumDataBlocks; +16166: static const std::string kNumEntries; +16166: static const std::string kNumFilterEntries; +16166: static const std::string kDeletedKeys; +16166: static const std::string kMergeOperands; +16166: static const std::string kNumRangeDeletions; +16166: static const std::string kFormatVersion; +16166: static const std::string kFixedKeyLen; +16166: static const std::string kFilterPolicy; +16166: static const std::string kColumnFamilyName; +16166: static const std::string kColumnFamilyId; +16166: static const std::string kComparator; +16166: static const std::string kMergeOperator; +16166: static const std::string kPrefixExtractorName; +16166: static const std::string kPropertyCollectors; +16166: static const std::string kCompression; +16166: static const std::string kCompressionOptions; +16166: static const std::string kCreationTime; +16166: static const std::string kOldestKeyTime; +16166: static const std::string kNewestKeyTime; +16166: static const std::string kFileCreationTime; +16166: static const std::string kSlowCompressionEstimatedDataSize; +16166: static const std::string kFastCompressionEstimatedDataSize; +16166: static const std::string kSequenceNumberTimeMapping; +16166: static const std::string kTailStartOffset; +16166: static const std::string kUserDefinedTimestampsPersisted; +16166: static const std::string kKeyLargestSeqno; +16166: }; +16166: # 94 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +16166: class TablePropertiesCollector { +16166: public: +16166: virtual ~TablePropertiesCollector() {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Add(const Slice& , const Slice& ) { +16166: return Status::InvalidArgument( +16166: "TablePropertiesCollector::Add() deprecated."); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual Status AddUserKey(const Slice& key, const Slice& value, +16166: EntryType , SequenceNumber , +16166: uint64_t ) { +16166: +16166: return Add(key, value); +16166: } +16166: +16166: +16166: virtual void BlockAdd(uint64_t , +16166: uint64_t , +16166: uint64_t ) { +16166: +16166: return; +16166: } +16166: # 135 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +16166: virtual Status Finish(UserCollectedProperties* properties) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual UserCollectedProperties GetReadableProperties() const = 0; +16166: +16166: +16166: virtual const char* Name() const = 0; +16166: +16166: +16166: virtual bool NeedCompact() const { return false; } +16166: +16166: +16166: virtual InternalTblPropColl* AsInternal() { return nullptr; } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class TablePropertiesCollectorFactory : public Customizable { +16166: public: +16166: struct Context { +16166: uint32_t column_family_id; +16166: +16166: +16166: int level_at_creation = kUnknownLevelAtCreation; +16166: int num_levels = kUnknownNumLevels; +16166: +16166: +16166: +16166: +16166: SequenceNumber last_level_inclusive_max_seqno_threshold; +16166: static const uint32_t kUnknownColumnFamily; +16166: static const int kUnknownLevelAtCreation = -1; +16166: static const int kUnknownNumLevels = -1; +16166: +16166: Context() {} +16166: +16166: Context(uint32_t _column_family_id, int _level_at_creation, int _num_levels, +16166: SequenceNumber _last_level_inclusive_max_seqno_threshold) +16166: : column_family_id(_column_family_id), +16166: level_at_creation(_level_at_creation), +16166: num_levels(_num_levels), +16166: last_level_inclusive_max_seqno_threshold( +16166: _last_level_inclusive_max_seqno_threshold) {} +16166: }; +16166: +16166: ~TablePropertiesCollectorFactory() override {} +16166: static const char* Type() { return "TablePropertiesCollectorFactory"; } +16166: static Status CreateFromString( +16166: const ConfigOptions& options, const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual TablePropertiesCollector* CreateTablePropertiesCollector( +16166: TablePropertiesCollectorFactory::Context context) = 0; +16166: +16166: +16166: const char* Name() const override = 0; +16166: +16166: +16166: +16166: +16166: virtual std::string ToString() const { return Name(); } +16166: }; +16166: +16166: +16166: +16166: struct TableProperties { +16166: public: +16166: +16166: +16166: uint64_t orig_file_number = 0; +16166: +16166: uint64_t data_size = 0; +16166: +16166: uint64_t index_size = 0; +16166: +16166: uint64_t index_partitions = 0; +16166: +16166: uint64_t top_level_index_size = 0; +16166: +16166: +16166: uint64_t index_key_is_user_key = 0; +16166: +16166: uint64_t index_value_is_delta_encoded = 0; +16166: +16166: uint64_t filter_size = 0; +16166: +16166: uint64_t raw_key_size = 0; +16166: +16166: uint64_t raw_value_size = 0; +16166: +16166: uint64_t num_data_blocks = 0; +16166: +16166: uint64_t num_entries = 0; +16166: +16166: uint64_t num_filter_entries = 0; +16166: +16166: uint64_t num_deletions = 0; +16166: +16166: uint64_t num_merge_operands = 0; +16166: +16166: uint64_t num_range_deletions = 0; +16166: +16166: uint64_t format_version = 0; +16166: +16166: uint64_t fixed_key_len = 0; +16166: +16166: +16166: uint64_t column_family_id = rocksdb:: +16166: TablePropertiesCollectorFactory::Context::kUnknownColumnFamily; +16166: # 270 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +16166: uint64_t creation_time = 0; +16166: +16166: +16166: uint64_t oldest_key_time = 0; +16166: +16166: uint64_t newest_key_time = 0; +16166: +16166: uint64_t file_creation_time = 0; +16166: +16166: +16166: +16166: uint64_t slow_compression_estimated_data_size = 0; +16166: +16166: +16166: +16166: uint64_t fast_compression_estimated_data_size = 0; +16166: +16166: +16166: +16166: uint64_t external_sst_file_global_seqno_offset = 0; +16166: +16166: +16166: +16166: uint64_t tail_start_offset = 0; +16166: +16166: +16166: +16166: +16166: uint64_t user_defined_timestamps_persisted = 1; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t key_largest_seqno = +16166: # 304 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" 3 4 +16166: (18446744073709551615ULL) +16166: # 304 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +16166: ; +16166: +16166: +16166: +16166: +16166: std::string db_id; +16166: +16166: +16166: +16166: +16166: +16166: std::string db_session_id; +16166: +16166: +16166: +16166: +16166: +16166: std::string db_host_id; +16166: +16166: +16166: +16166: std::string column_family_name; +16166: +16166: +16166: +16166: std::string filter_policy_name; +16166: +16166: +16166: std::string comparator_name; +16166: +16166: +16166: +16166: std::string merge_operator_name; +16166: +16166: +16166: +16166: std::string prefix_extractor_name; +16166: +16166: +16166: +16166: +16166: std::string property_collectors_names; +16166: +16166: +16166: std::string compression_name; +16166: +16166: +16166: std::string compression_options; +16166: +16166: +16166: std::string seqno_to_time_mapping; +16166: +16166: +16166: UserCollectedProperties user_collected_properties; +16166: UserCollectedProperties readable_properties; +16166: +16166: +16166: +16166: std::string ToString(const std::string& prop_delim = "; ", +16166: const std::string& kv_delim = "=") const; +16166: +16166: +16166: +16166: void Add(const TableProperties& tp); +16166: +16166: +16166: +16166: +16166: std::map GetAggregatablePropertiesAsMap() const; +16166: +16166: +16166: +16166: std::size_t ApproximateMemoryUsage() const; +16166: +16166: +16166: Status Serialize(const ConfigOptions& opts, std::string* output) const; +16166: static Status Parse(const ConfigOptions& opts, const std::string& serialized, +16166: TableProperties* table_properties); +16166: bool AreEqual(const ConfigOptions& opts, +16166: const TableProperties* other_table_properties, +16166: std::string* mismatch) const; +16166: }; +16166: # 395 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h" +16166: uint64_t GetDeletedKeys(const UserCollectedProperties& props); +16166: uint64_t GetMergeOperands(const UserCollectedProperties& props, +16166: bool* property_present); +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: using TablePropertiesCollection = +16166: std::unordered_map>; +16166: +16166: class DB; +16166: class ColumnFamilyHandle; +16166: class Status; +16166: struct CompactionJobStats; +16166: +16166: struct FileCreationBriefInfo { +16166: FileCreationBriefInfo() = default; +16166: FileCreationBriefInfo(const std::string& _db_name, +16166: const std::string& _cf_name, +16166: const std::string& _file_path, int _job_id) +16166: : db_name(_db_name), +16166: cf_name(_cf_name), +16166: file_path(_file_path), +16166: job_id(_job_id) {} +16166: +16166: std::string db_name; +16166: +16166: std::string cf_name; +16166: +16166: std::string file_path; +16166: +16166: +16166: int job_id = 0; +16166: }; +16166: +16166: struct TableFileCreationBriefInfo : public FileCreationBriefInfo { +16166: +16166: TableFileCreationReason reason; +16166: }; +16166: +16166: struct TableFileCreationInfo : public TableFileCreationBriefInfo { +16166: TableFileCreationInfo() = default; +16166: explicit TableFileCreationInfo(TableProperties&& prop) +16166: : table_properties(prop) {} +16166: +16166: uint64_t file_size; +16166: +16166: TableProperties table_properties; +16166: +16166: Status status; +16166: +16166: std::string file_checksum; +16166: +16166: std::string file_checksum_func_name; +16166: }; +16166: +16166: struct BlobFileCreationBriefInfo : public FileCreationBriefInfo { +16166: BlobFileCreationBriefInfo(const std::string& _db_name, +16166: const std::string& _cf_name, +16166: const std::string& _file_path, int _job_id, +16166: BlobFileCreationReason _reason) +16166: : FileCreationBriefInfo(_db_name, _cf_name, _file_path, _job_id), +16166: reason(_reason) {} +16166: +16166: BlobFileCreationReason reason; +16166: }; +16166: +16166: struct BlobFileCreationInfo : public BlobFileCreationBriefInfo { +16166: BlobFileCreationInfo(const std::string& _db_name, const std::string& _cf_name, +16166: const std::string& _file_path, int _job_id, +16166: BlobFileCreationReason _reason, +16166: uint64_t _total_blob_count, uint64_t _total_blob_bytes, +16166: Status _status, const std::string& _file_checksum, +16166: const std::string& _file_checksum_func_name) +16166: : BlobFileCreationBriefInfo(_db_name, _cf_name, _file_path, _job_id, +16166: _reason), +16166: total_blob_count(_total_blob_count), +16166: total_blob_bytes(_total_blob_bytes), +16166: status(_status), +16166: file_checksum(_file_checksum), +16166: file_checksum_func_name(_file_checksum_func_name) {} +16166: +16166: +16166: uint64_t total_blob_count; +16166: +16166: uint64_t total_blob_bytes; +16166: +16166: Status status; +16166: +16166: std::string file_checksum; +16166: +16166: std::string file_checksum_func_name; +16166: }; +16166: +16166: enum class CompactionReason : int { +16166: kUnknown = 0, +16166: +16166: kLevelL0FilesNum, +16166: +16166: kLevelMaxLevelSize, +16166: +16166: kUniversalSizeAmplification, +16166: +16166: kUniversalSizeRatio, +16166: +16166: kUniversalSortedRunNum, +16166: +16166: kFIFOMaxSize, +16166: +16166: kFIFOReduceNumFiles, +16166: +16166: kFIFOTtl, +16166: +16166: kManualCompaction, +16166: +16166: kFilesMarkedForCompaction, +16166: +16166: +16166: kBottommostFiles, +16166: +16166: kTtl, +16166: +16166: +16166: kFlush, +16166: +16166: +16166: +16166: +16166: kExternalSstIngestion, +16166: +16166: kPeriodicCompaction, +16166: +16166: kChangeTemperature, +16166: +16166: kForcedBlobGC, +16166: +16166: +16166: kRoundRobinTtl, +16166: +16166: +16166: kRefitLevel, +16166: +16166: kNumOfReasons, +16166: }; +16166: +16166: const char* GetCompactionReasonString(CompactionReason compaction_reason); +16166: +16166: +16166: enum class FlushReason : int { +16166: kOthers = 0x00, +16166: kGetLiveFiles = 0x01, +16166: kShutDown = 0x02, +16166: kExternalFileIngestion = 0x03, +16166: kManualCompaction = 0x04, +16166: kWriteBufferManager = 0x05, +16166: kWriteBufferFull = 0x06, +16166: kTest = 0x07, +16166: kDeleteFiles = 0x08, +16166: kAutoCompaction = 0x09, +16166: kManualFlush = 0x0a, +16166: kErrorRecovery = 0xb, +16166: +16166: +16166: kErrorRecoveryRetryFlush = 0xc, +16166: kWalFull = 0xd, +16166: +16166: kCatchUpAfterErrorRecovery = 0xe, +16166: }; +16166: +16166: const char* GetFlushReasonString(FlushReason flush_reason); +16166: +16166: +16166: +16166: +16166: +16166: enum class BackgroundErrorReason { +16166: kFlush, +16166: kCompaction, +16166: kWriteCallback, +16166: kMemTable, +16166: kManifestWrite, +16166: kFlushNoWAL, +16166: kManifestWriteNoWAL, +16166: }; +16166: +16166: struct WriteStallInfo { +16166: +16166: std::string cf_name; +16166: +16166: struct { +16166: WriteStallCondition cur; +16166: WriteStallCondition prev; +16166: } condition; +16166: }; +16166: +16166: +16166: struct FileDeletionInfo { +16166: FileDeletionInfo() = default; +16166: +16166: FileDeletionInfo(const std::string& _db_name, const std::string& _file_path, +16166: int _job_id, Status _status) +16166: : db_name(_db_name), +16166: file_path(_file_path), +16166: job_id(_job_id), +16166: status(_status) {} +16166: +16166: std::string db_name; +16166: +16166: std::string file_path; +16166: +16166: int job_id = 0; +16166: +16166: Status status; +16166: }; +16166: +16166: struct TableFileDeletionInfo : public FileDeletionInfo {}; +16166: +16166: struct BlobFileDeletionInfo : public FileDeletionInfo { +16166: BlobFileDeletionInfo(const std::string& _db_name, +16166: const std::string& _file_path, int _job_id, +16166: Status _status) +16166: : FileDeletionInfo(_db_name, _file_path, _job_id, _status) {} +16166: }; +16166: +16166: enum class FileOperationType { +16166: kRead, +16166: kWrite, +16166: kTruncate, +16166: kClose, +16166: kFlush, +16166: kSync, +16166: kFsync, +16166: kRangeSync, +16166: kAppend, +16166: kPositionedAppend, +16166: kOpen, +16166: kVerify +16166: }; +16166: +16166: struct FileOperationInfo { +16166: using Duration = std::chrono::nanoseconds; +16166: using SteadyTimePoint = +16166: std::chrono::time_point; +16166: using SystemTimePoint = +16166: std::chrono::time_point; +16166: using StartTimePoint = std::pair; +16166: using FinishTimePoint = SteadyTimePoint; +16166: +16166: FileOperationType type; +16166: const std::string& path; +16166: +16166: +16166: Temperature temperature; +16166: uint64_t offset; +16166: size_t length; +16166: const Duration duration; +16166: const SystemTimePoint& start_ts; +16166: Status status; +16166: +16166: FileOperationInfo(const FileOperationType _type, const std::string& _path, +16166: const StartTimePoint& _start_ts, +16166: const FinishTimePoint& _finish_ts, const Status& _status, +16166: const Temperature _temperature = Temperature::kUnknown) +16166: : type(_type), +16166: path(_path), +16166: temperature(_temperature), +16166: duration(std::chrono::duration_cast( +16166: _finish_ts - _start_ts.second)), +16166: start_ts(_start_ts.first), +16166: status(_status) {} +16166: static StartTimePoint StartNow() { +16166: return std::make_pair( +16166: std::chrono::system_clock::now(), std::chrono::steady_clock::now()); +16166: } +16166: static FinishTimePoint FinishNow() { +16166: return std::chrono::steady_clock::now(); +16166: } +16166: }; +16166: +16166: struct BlobFileInfo { +16166: BlobFileInfo(const std::string& _blob_file_path, +16166: const uint64_t _blob_file_number) +16166: : blob_file_path(_blob_file_path), blob_file_number(_blob_file_number) {} +16166: +16166: std::string blob_file_path; +16166: uint64_t blob_file_number; +16166: }; +16166: +16166: struct BlobFileAdditionInfo : public BlobFileInfo { +16166: BlobFileAdditionInfo(const std::string& _blob_file_path, +16166: const uint64_t _blob_file_number, +16166: const uint64_t _total_blob_count, +16166: const uint64_t _total_blob_bytes) +16166: : BlobFileInfo(_blob_file_path, _blob_file_number), +16166: total_blob_count(_total_blob_count), +16166: total_blob_bytes(_total_blob_bytes) {} +16166: uint64_t total_blob_count; +16166: uint64_t total_blob_bytes; +16166: }; +16166: +16166: struct BlobFileGarbageInfo : public BlobFileInfo { +16166: BlobFileGarbageInfo(const std::string& _blob_file_path, +16166: const uint64_t _blob_file_number, +16166: const uint64_t _garbage_blob_count, +16166: const uint64_t _garbage_blob_bytes) +16166: : BlobFileInfo(_blob_file_path, _blob_file_number), +16166: garbage_blob_count(_garbage_blob_count), +16166: garbage_blob_bytes(_garbage_blob_bytes) {} +16166: uint64_t garbage_blob_count; +16166: uint64_t garbage_blob_bytes; +16166: }; +16166: +16166: struct ManualFlushInfo { +16166: +16166: uint32_t cf_id; +16166: +16166: std::string cf_name; +16166: +16166: FlushReason flush_reason; +16166: }; +16166: +16166: struct FlushJobInfo { +16166: +16166: uint32_t cf_id; +16166: +16166: std::string cf_name; +16166: +16166: std::string file_path; +16166: +16166: uint64_t file_number; +16166: +16166: uint64_t oldest_blob_file_number; +16166: +16166: uint64_t thread_id; +16166: +16166: int job_id; +16166: +16166: +16166: +16166: +16166: bool triggered_writes_slowdown; +16166: +16166: +16166: +16166: +16166: bool triggered_writes_stop; +16166: +16166: SequenceNumber smallest_seqno; +16166: +16166: SequenceNumber largest_seqno; +16166: +16166: TableProperties table_properties; +16166: +16166: FlushReason flush_reason; +16166: +16166: +16166: CompressionType blob_compression_type; +16166: +16166: +16166: std::vector blob_file_addition_infos; +16166: }; +16166: +16166: struct CompactionFileInfo { +16166: +16166: int level; +16166: +16166: +16166: uint64_t file_number; +16166: +16166: +16166: uint64_t oldest_blob_file_number; +16166: }; +16166: +16166: struct SubcompactionJobInfo { +16166: ~SubcompactionJobInfo() { status.PermitUncheckedError(); } +16166: +16166: uint32_t cf_id; +16166: +16166: std::string cf_name; +16166: +16166: Status status; +16166: +16166: uint64_t thread_id; +16166: +16166: int job_id; +16166: +16166: +16166: +16166: +16166: +16166: int subcompaction_job_id; +16166: +16166: int base_input_level; +16166: +16166: int output_level; +16166: +16166: +16166: CompactionReason compaction_reason; +16166: +16166: +16166: CompressionType compression; +16166: +16166: +16166: CompactionJobStats stats; +16166: +16166: +16166: CompressionType blob_compression_type; +16166: }; +16166: +16166: struct CompactionJobInfo { +16166: ~CompactionJobInfo() { status.PermitUncheckedError(); } +16166: +16166: uint32_t cf_id; +16166: +16166: std::string cf_name; +16166: +16166: Status status; +16166: +16166: uint64_t thread_id; +16166: +16166: int job_id; +16166: +16166: +16166: int base_input_level; +16166: +16166: int output_level; +16166: # 453 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: std::vector input_files; +16166: +16166: +16166: std::vector input_file_infos; +16166: +16166: +16166: std::vector output_files; +16166: +16166: +16166: std::vector output_file_infos; +16166: +16166: +16166: +16166: TablePropertiesCollection table_properties; +16166: +16166: +16166: CompactionReason compaction_reason; +16166: +16166: +16166: CompressionType compression; +16166: +16166: +16166: CompactionJobStats stats; +16166: +16166: +16166: CompressionType blob_compression_type; +16166: +16166: +16166: +16166: std::vector blob_file_addition_infos; +16166: +16166: +16166: +16166: std::vector blob_file_garbage_infos; +16166: }; +16166: +16166: struct MemTableInfo { +16166: +16166: std::string cf_name; +16166: +16166: +16166: SequenceNumber first_seqno; +16166: +16166: +16166: +16166: +16166: SequenceNumber earliest_seqno; +16166: +16166: uint64_t num_entries; +16166: +16166: uint64_t num_deletes; +16166: +16166: +16166: +16166: std::string newest_udt; +16166: }; +16166: +16166: struct ExternalFileIngestionInfo { +16166: +16166: std::string cf_name; +16166: +16166: std::string external_file_path; +16166: +16166: std::string internal_file_path; +16166: +16166: SequenceNumber global_seqno; +16166: +16166: TableProperties table_properties; +16166: }; +16166: +16166: +16166: struct BackgroundErrorRecoveryInfo { +16166: +16166: Status old_bg_error; +16166: +16166: +16166: +16166: Status new_bg_error; +16166: }; +16166: +16166: struct IOErrorInfo { +16166: IOErrorInfo(const IOStatus& _io_status, FileOperationType _operation, +16166: const std::string& _file_path, size_t _length, uint64_t _offset) +16166: : io_status(_io_status), +16166: operation(_operation), +16166: file_path(_file_path), +16166: length(_length), +16166: offset(_offset) {} +16166: +16166: IOStatus io_status; +16166: FileOperationType operation; +16166: std::string file_path; +16166: size_t length; +16166: uint64_t offset; +16166: }; +16166: # 580 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: class EventListener : public Customizable { +16166: public: +16166: static const char* Type() { return "EventListener"; } +16166: static Status CreateFromString(const ConfigOptions& options, +16166: const std::string& id, +16166: std::shared_ptr* result); +16166: const char* Name() const override { +16166: +16166: +16166: return ""; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnFlushCompleted(DB* , +16166: const FlushJobInfo& ) {} +16166: # 608 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnFlushBegin(DB* , +16166: const FlushJobInfo& ) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnManualFlushScheduled( +16166: DB* , const std::vector& ) {} +16166: # 630 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnTableFileDeleted(const TableFileDeletionInfo& ) {} +16166: # 639 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnCompactionBegin(DB* , const CompactionJobInfo& ) {} +16166: # 654 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnCompactionCompleted(DB* , +16166: const CompactionJobInfo& ) {} +16166: # 674 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnSubcompactionBegin(const SubcompactionJobInfo& ) {} +16166: # 692 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnSubcompactionCompleted(const SubcompactionJobInfo& ) {} +16166: # 709 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnTableFileCreated(const TableFileCreationInfo& ) {} +16166: # 718 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnTableFileCreationStarted( +16166: const TableFileCreationBriefInfo& ) {} +16166: # 731 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnMemTableSealed(const MemTableInfo& ) {} +16166: # 741 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnColumnFamilyHandleDeletionStarted( +16166: ColumnFamilyHandle* ) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnExternalFileIngested( +16166: DB* , const ExternalFileIngestionInfo& ) {} +16166: # 764 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnBackgroundError(BackgroundErrorReason , +16166: Status* ) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnStallConditionsChanged(const WriteStallInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnFileReadFinish(const FileOperationInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnFileWriteFinish(const FileOperationInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnFileFlushFinish(const FileOperationInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnFileSyncFinish(const FileOperationInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnFileRangeSyncFinish(const FileOperationInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnFileTruncateFinish(const FileOperationInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnFileCloseFinish(const FileOperationInfo& ) {} +16166: +16166: +16166: +16166: virtual bool ShouldBeNotifiedOnFileIO() { return false; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnErrorRecoveryBegin(BackgroundErrorReason , +16166: Status , +16166: bool* ) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnErrorRecoveryCompleted(Status old_bg_error) { +16166: old_bg_error.PermitUncheckedError(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnErrorRecoveryEnd(const BackgroundErrorRecoveryInfo& ) { +16166: } +16166: # 840 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnBlobFileCreationStarted( +16166: const BlobFileCreationBriefInfo& ) {} +16166: # 851 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/listener.h" +16166: virtual void OnBlobFileCreated(const BlobFileCreationInfo& ) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void OnBlobFileDeleted(const BlobFileDeletionInfo& ) {} +16166: +16166: +16166: +16166: virtual void OnIOError(const IOErrorInfo& ) {} +16166: +16166: ~EventListener() override {} +16166: }; +16166: +16166: +16166: } +16166: # 29 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_partitioner.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_partitioner.h" +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: +16166: enum PartitionerResult : char { +16166: +16166: kNotRequired = 0x0, +16166: +16166: kRequired = 0x1 +16166: +16166: }; +16166: +16166: struct PartitionerRequest { +16166: PartitionerRequest(const Slice& prev_user_key_, +16166: const Slice& current_user_key_, +16166: uint64_t current_output_file_size_) +16166: : prev_user_key(&prev_user_key_), +16166: current_user_key(¤t_user_key_), +16166: current_output_file_size(current_output_file_size_) {} +16166: const Slice* prev_user_key; +16166: const Slice* current_user_key; +16166: uint64_t current_output_file_size; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class SstPartitioner { +16166: public: +16166: virtual ~SstPartitioner() {} +16166: +16166: +16166: virtual const char* Name() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual PartitionerResult ShouldPartition( +16166: const PartitionerRequest& request) = 0; +16166: +16166: +16166: +16166: virtual bool CanDoTrivialMove(const Slice& smallest_user_key, +16166: const Slice& largest_user_key) = 0; +16166: +16166: +16166: struct Context { +16166: +16166: bool is_full_compaction; +16166: +16166: +16166: bool is_manual_compaction; +16166: +16166: int output_level; +16166: +16166: Slice smallest_user_key; +16166: +16166: Slice largest_user_key; +16166: }; +16166: }; +16166: +16166: +16166: +16166: +16166: class SstPartitionerFactory : public Customizable { +16166: public: +16166: ~SstPartitionerFactory() override {} +16166: static const char* Type() { return "SstPartitionerFactory"; } +16166: static Status CreateFromString( +16166: const ConfigOptions& options, const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: virtual std::unique_ptr CreatePartitioner( +16166: const SstPartitioner::Context& context) const = 0; +16166: +16166: +16166: const char* Name() const override = 0; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: class SstPartitionerFixedPrefix : public SstPartitioner { +16166: public: +16166: explicit SstPartitionerFixedPrefix(size_t len) : len_(len) {} +16166: +16166: ~SstPartitionerFixedPrefix() override {} +16166: +16166: const char* Name() const override { return "SstPartitionerFixedPrefix"; } +16166: +16166: PartitionerResult ShouldPartition(const PartitionerRequest& request) override; +16166: +16166: bool CanDoTrivialMove(const Slice& smallest_user_key, +16166: const Slice& largest_user_key) override; +16166: +16166: private: +16166: size_t len_; +16166: }; +16166: +16166: +16166: +16166: +16166: class SstPartitionerFixedPrefixFactory : public SstPartitionerFactory { +16166: public: +16166: explicit SstPartitionerFixedPrefixFactory(size_t len); +16166: +16166: ~SstPartitionerFixedPrefixFactory() override {} +16166: +16166: static const char* kClassName() { return "SstPartitionerFixedPrefixFactory"; } +16166: const char* Name() const override { return kClassName(); } +16166: +16166: std::unique_ptr CreatePartitioner( +16166: const SstPartitioner::Context& ) const override; +16166: +16166: private: +16166: size_t len_; +16166: }; +16166: +16166: std::shared_ptr NewSstPartitionerFixedPrefixFactory( +16166: size_t prefix_len); +16166: +16166: } +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/version.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/version.h" +16166: namespace rocksdb { +16166: +16166: +16166: const std::unordered_map& GetRocksBuildProperties(); +16166: +16166: +16166: +16166: +16166: std::string GetRocksVersionAsString(bool with_patch = true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::string GetRocksBuildInfoAsString(const std::string& program, +16166: bool verbose = false); +16166: } +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 1 +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/condition_variable" 1 3 +16166: # 32 "/usr/include/c++/14/condition_variable" 3 +16166: +16166: # 33 "/usr/include/c++/14/condition_variable" 3 +16166: # 54 "/usr/include/c++/14/condition_variable" 3 +16166: +16166: # 54 "/usr/include/c++/14/condition_variable" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 67 "/usr/include/c++/14/condition_variable" 3 +16166: enum class cv_status { no_timeout, timeout }; +16166: +16166: +16166: class condition_variable +16166: { +16166: using steady_clock = chrono::steady_clock; +16166: using system_clock = chrono::system_clock; +16166: +16166: using __clock_t = steady_clock; +16166: +16166: +16166: +16166: +16166: __condvar _M_cond; +16166: +16166: public: +16166: typedef __gthread_cond_t* native_handle_type; +16166: +16166: condition_variable() noexcept; +16166: ~condition_variable() noexcept; +16166: +16166: condition_variable(const condition_variable&) = delete; +16166: condition_variable& operator=(const condition_variable&) = delete; +16166: +16166: void +16166: notify_one() noexcept; +16166: +16166: void +16166: notify_all() noexcept; +16166: +16166: void +16166: wait(unique_lock& __lock); +16166: +16166: template +16166: void +16166: wait(unique_lock& __lock, _Predicate __p) +16166: { +16166: while (!__p()) +16166: wait(__lock); +16166: } +16166: +16166: +16166: template +16166: cv_status +16166: wait_until(unique_lock& __lock, +16166: const chrono::time_point& __atime) +16166: { return __wait_until_impl(__lock, __atime); } +16166: +16166: +16166: template +16166: cv_status +16166: wait_until(unique_lock& __lock, +16166: const chrono::time_point& __atime) +16166: { return __wait_until_impl(__lock, __atime); } +16166: +16166: template +16166: cv_status +16166: wait_until(unique_lock& __lock, +16166: const chrono::time_point<_Clock, _Duration>& __atime) +16166: { +16166: +16166: +16166: +16166: using __s_dur = typename __clock_t::duration; +16166: const typename _Clock::time_point __c_entry = _Clock::now(); +16166: const __clock_t::time_point __s_entry = __clock_t::now(); +16166: const auto __delta = __atime - __c_entry; +16166: const auto __s_atime = __s_entry + +16166: chrono::__detail::ceil<__s_dur>(__delta); +16166: +16166: if (__wait_until_impl(__lock, __s_atime) == cv_status::no_timeout) +16166: return cv_status::no_timeout; +16166: +16166: +16166: +16166: if (_Clock::now() < __atime) +16166: return cv_status::no_timeout; +16166: return cv_status::timeout; +16166: } +16166: +16166: template +16166: bool +16166: wait_until(unique_lock& __lock, +16166: const chrono::time_point<_Clock, _Duration>& __atime, +16166: _Predicate __p) +16166: { +16166: while (!__p()) +16166: if (wait_until(__lock, __atime) == cv_status::timeout) +16166: return __p(); +16166: return true; +16166: } +16166: +16166: template +16166: cv_status +16166: wait_for(unique_lock& __lock, +16166: const chrono::duration<_Rep, _Period>& __rtime) +16166: { +16166: using __dur = typename steady_clock::duration; +16166: return wait_until(__lock, +16166: steady_clock::now() + +16166: chrono::__detail::ceil<__dur>(__rtime)); +16166: } +16166: +16166: template +16166: bool +16166: wait_for(unique_lock& __lock, +16166: const chrono::duration<_Rep, _Period>& __rtime, +16166: _Predicate __p) +16166: { +16166: using __dur = typename steady_clock::duration; +16166: return wait_until(__lock, +16166: steady_clock::now() + +16166: chrono::__detail::ceil<__dur>(__rtime), +16166: std::move(__p)); +16166: } +16166: +16166: native_handle_type +16166: native_handle() +16166: { return _M_cond.native_handle(); } +16166: +16166: private: +16166: +16166: template +16166: cv_status +16166: __wait_until_impl(unique_lock& __lock, +16166: const chrono::time_point& __atime) +16166: { +16166: auto __s = chrono::time_point_cast(__atime); +16166: auto __ns = chrono::duration_cast(__atime - __s); +16166: +16166: __gthread_time_t __ts = +16166: { +16166: static_cast(__s.time_since_epoch().count()), +16166: static_cast(__ns.count()) +16166: }; +16166: +16166: _M_cond.wait_until(*__lock.mutex(), 1, __ts); +16166: +16166: return (steady_clock::now() < __atime +16166: ? cv_status::no_timeout : cv_status::timeout); +16166: } +16166: +16166: +16166: template +16166: cv_status +16166: __wait_until_impl(unique_lock& __lock, +16166: const chrono::time_point& __atime) +16166: { +16166: auto __s = chrono::time_point_cast(__atime); +16166: auto __ns = chrono::duration_cast(__atime - __s); +16166: +16166: __gthread_time_t __ts = +16166: { +16166: static_cast(__s.time_since_epoch().count()), +16166: static_cast(__ns.count()) +16166: }; +16166: +16166: _M_cond.wait_until(*__lock.mutex(), __ts); +16166: +16166: return (system_clock::now() < __atime +16166: ? cv_status::no_timeout : cv_status::timeout); +16166: } +16166: }; +16166: +16166: void +16166: notify_all_at_thread_exit(condition_variable&, unique_lock); +16166: +16166: struct __at_thread_exit_elt +16166: { +16166: __at_thread_exit_elt* _M_next; +16166: void (*_M_cb)(void*); +16166: }; +16166: +16166: inline namespace _V2 { +16166: +16166: +16166: +16166: class condition_variable_any +16166: { +16166: +16166: using __clock_t = chrono::steady_clock; +16166: +16166: +16166: +16166: condition_variable _M_cond; +16166: shared_ptr _M_mutex; +16166: +16166: +16166: template +16166: struct _Unlock +16166: { +16166: explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); } +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: ~_Unlock() noexcept(false) +16166: { +16166: if (uncaught_exception()) +16166: { +16166: try +16166: { _M_lock.lock(); } +16166: catch(const __cxxabiv1::__forced_unwind&) +16166: { throw; } +16166: catch(...) +16166: { } +16166: } +16166: else +16166: _M_lock.lock(); +16166: } +16166: #pragma GCC diagnostic pop +16166: +16166: _Unlock(const _Unlock&) = delete; +16166: _Unlock& operator=(const _Unlock&) = delete; +16166: +16166: _Lock& _M_lock; +16166: }; +16166: +16166: public: +16166: condition_variable_any() : _M_mutex(std::make_shared()) { } +16166: ~condition_variable_any() = default; +16166: +16166: condition_variable_any(const condition_variable_any&) = delete; +16166: condition_variable_any& operator=(const condition_variable_any&) = delete; +16166: +16166: void +16166: notify_one() noexcept +16166: { +16166: lock_guard __lock(*_M_mutex); +16166: _M_cond.notify_one(); +16166: } +16166: +16166: void +16166: notify_all() noexcept +16166: { +16166: lock_guard __lock(*_M_mutex); +16166: _M_cond.notify_all(); +16166: } +16166: +16166: template +16166: void +16166: wait(_Lock& __lock) +16166: { +16166: shared_ptr __mutex = _M_mutex; +16166: unique_lock __my_lock(*__mutex); +16166: _Unlock<_Lock> __unlock(__lock); +16166: +16166: +16166: unique_lock __my_lock2(std::move(__my_lock)); +16166: _M_cond.wait(__my_lock2); +16166: } +16166: +16166: +16166: template +16166: void +16166: wait(_Lock& __lock, _Predicate __p) +16166: { +16166: while (!__p()) +16166: wait(__lock); +16166: } +16166: +16166: template +16166: cv_status +16166: wait_until(_Lock& __lock, +16166: const chrono::time_point<_Clock, _Duration>& __atime) +16166: { +16166: shared_ptr __mutex = _M_mutex; +16166: unique_lock __my_lock(*__mutex); +16166: _Unlock<_Lock> __unlock(__lock); +16166: +16166: +16166: unique_lock __my_lock2(std::move(__my_lock)); +16166: return _M_cond.wait_until(__my_lock2, __atime); +16166: } +16166: +16166: template +16166: bool +16166: wait_until(_Lock& __lock, +16166: const chrono::time_point<_Clock, _Duration>& __atime, +16166: _Predicate __p) +16166: { +16166: while (!__p()) +16166: if (wait_until(__lock, __atime) == cv_status::timeout) +16166: return __p(); +16166: return true; +16166: } +16166: +16166: template +16166: cv_status +16166: wait_for(_Lock& __lock, const chrono::duration<_Rep, _Period>& __rtime) +16166: { return wait_until(__lock, __clock_t::now() + __rtime); } +16166: +16166: template +16166: bool +16166: wait_for(_Lock& __lock, +16166: const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p) +16166: { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); } +16166: # 443 "/usr/include/c++/14/condition_variable" 3 +16166: }; +16166: +16166: } +16166: +16166: +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 2 +16166: +16166: # 1 "/usr/include/c++/14/list" 1 3 +16166: # 58 "/usr/include/c++/14/list" 3 +16166: +16166: # 59 "/usr/include/c++/14/list" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_list.h" 1 3 +16166: # 68 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: namespace __detail +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct _List_node_base +16166: { +16166: _List_node_base* _M_next; +16166: _List_node_base* _M_prev; +16166: +16166: static void +16166: swap(_List_node_base& __x, _List_node_base& __y) noexcept; +16166: +16166: void +16166: _M_transfer(_List_node_base* const __first, +16166: _List_node_base* const __last) noexcept; +16166: +16166: void +16166: _M_reverse() noexcept; +16166: +16166: void +16166: _M_hook(_List_node_base* const __position) noexcept; +16166: +16166: void +16166: _M_unhook() noexcept; +16166: }; +16166: +16166: +16166: struct _List_node_header : public _List_node_base +16166: { +16166: +16166: std::size_t _M_size; +16166: +16166: +16166: _List_node_header() noexcept +16166: { _M_init(); } +16166: +16166: +16166: _List_node_header(_List_node_header&& __x) noexcept +16166: : _List_node_base{ __x._M_next, __x._M_prev } +16166: +16166: , _M_size(__x._M_size) +16166: +16166: { +16166: if (__x._M_base()->_M_next == __x._M_base()) +16166: this->_M_next = this->_M_prev = this; +16166: else +16166: { +16166: this->_M_next->_M_prev = this->_M_prev->_M_next = this->_M_base(); +16166: __x._M_init(); +16166: } +16166: } +16166: +16166: void +16166: _M_move_nodes(_List_node_header&& __x) +16166: { +16166: _List_node_base* const __xnode = __x._M_base(); +16166: if (__xnode->_M_next == __xnode) +16166: _M_init(); +16166: else +16166: { +16166: _List_node_base* const __node = this->_M_base(); +16166: __node->_M_next = __xnode->_M_next; +16166: __node->_M_prev = __xnode->_M_prev; +16166: __node->_M_next->_M_prev = __node->_M_prev->_M_next = __node; +16166: +16166: _M_size = __x._M_size; +16166: +16166: __x._M_init(); +16166: } +16166: } +16166: +16166: +16166: void +16166: _M_init() noexcept +16166: { +16166: this->_M_next = this->_M_prev = this; +16166: +16166: this->_M_size = 0; +16166: +16166: } +16166: +16166: private: +16166: _List_node_base* _M_base() { return this; } +16166: }; +16166: +16166: +16166: struct _Scratch_list : _List_node_base +16166: { +16166: _Scratch_list() { _M_next = _M_prev = this; } +16166: +16166: bool empty() const { return _M_next == this; } +16166: +16166: void swap(_List_node_base& __l) { _List_node_base::swap(*this, __l); } +16166: +16166: template +16166: struct _Ptr_cmp +16166: { +16166: _Cmp _M_cmp; +16166: +16166: bool +16166: operator()(__detail::_List_node_base* __lhs, +16166: __detail::_List_node_base* __rhs) +16166: { return _M_cmp(*_Iter(__lhs), *_Iter(__rhs)); } +16166: }; +16166: +16166: template +16166: struct _Ptr_cmp<_Iter, void> +16166: { +16166: bool +16166: operator()(__detail::_List_node_base* __lhs, +16166: __detail::_List_node_base* __rhs) const +16166: { return *_Iter(__lhs) < *_Iter(__rhs); } +16166: }; +16166: +16166: +16166: template +16166: void +16166: merge(_List_node_base& __x, _Cmp __comp) +16166: { +16166: _List_node_base* __first1 = _M_next; +16166: _List_node_base* const __last1 = this; +16166: _List_node_base* __first2 = __x._M_next; +16166: _List_node_base* const __last2 = std::__addressof(__x); +16166: +16166: while (__first1 != __last1 && __first2 != __last2) +16166: { +16166: if (__comp(__first2, __first1)) +16166: { +16166: _List_node_base* __next = __first2->_M_next; +16166: __first1->_M_transfer(__first2, __next); +16166: __first2 = __next; +16166: } +16166: else +16166: __first1 = __first1->_M_next; +16166: } +16166: if (__first2 != __last2) +16166: this->_M_transfer(__first2, __last2); +16166: } +16166: +16166: +16166: void _M_take_one(_List_node_base* __i) +16166: { this->_M_transfer(__i, __i->_M_next); } +16166: +16166: +16166: void _M_put_all(_List_node_base* __i) +16166: { +16166: if (!empty()) +16166: __i->_M_transfer(_M_next, this); +16166: } +16166: }; +16166: +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: struct _List_node : public __detail::_List_node_base +16166: { +16166: +16166: __gnu_cxx::__aligned_membuf<_Tp> _M_storage; +16166: _Tp* _M_valptr() { return _M_storage._M_ptr(); } +16166: _Tp const* _M_valptr() const { return _M_storage._M_ptr(); } +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _List_iterator +16166: { +16166: typedef _List_iterator<_Tp> _Self; +16166: typedef _List_node<_Tp> _Node; +16166: +16166: typedef ptrdiff_t difference_type; +16166: typedef std::bidirectional_iterator_tag iterator_category; +16166: typedef _Tp value_type; +16166: typedef _Tp* pointer; +16166: typedef _Tp& reference; +16166: +16166: _List_iterator() noexcept +16166: : _M_node() { } +16166: +16166: explicit +16166: _List_iterator(__detail::_List_node_base* __x) noexcept +16166: : _M_node(__x) { } +16166: +16166: _Self +16166: _M_const_cast() const noexcept +16166: { return *this; } +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: operator*() const noexcept +16166: { return *static_cast<_Node*>(_M_node)->_M_valptr(); } +16166: +16166: [[__nodiscard__]] +16166: pointer +16166: operator->() const noexcept +16166: { return static_cast<_Node*>(_M_node)->_M_valptr(); } +16166: +16166: _Self& +16166: operator++() noexcept +16166: { +16166: _M_node = _M_node->_M_next; +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator++(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _M_node->_M_next; +16166: return __tmp; +16166: } +16166: +16166: _Self& +16166: operator--() noexcept +16166: { +16166: _M_node = _M_node->_M_prev; +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator--(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _M_node->_M_prev; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator==(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node == __y._M_node; } +16166: +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator!=(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node != __y._M_node; } +16166: +16166: +16166: +16166: __detail::_List_node_base* _M_node; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _List_const_iterator +16166: { +16166: typedef _List_const_iterator<_Tp> _Self; +16166: typedef const _List_node<_Tp> _Node; +16166: typedef _List_iterator<_Tp> iterator; +16166: +16166: typedef ptrdiff_t difference_type; +16166: typedef std::bidirectional_iterator_tag iterator_category; +16166: typedef _Tp value_type; +16166: typedef const _Tp* pointer; +16166: typedef const _Tp& reference; +16166: +16166: _List_const_iterator() noexcept +16166: : _M_node() { } +16166: +16166: explicit +16166: _List_const_iterator(const __detail::_List_node_base* __x) +16166: noexcept +16166: : _M_node(__x) { } +16166: +16166: _List_const_iterator(const iterator& __x) noexcept +16166: : _M_node(__x._M_node) { } +16166: +16166: iterator +16166: _M_const_cast() const noexcept +16166: { return iterator(const_cast<__detail::_List_node_base*>(_M_node)); } +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: operator*() const noexcept +16166: { return *static_cast<_Node*>(_M_node)->_M_valptr(); } +16166: +16166: [[__nodiscard__]] +16166: pointer +16166: operator->() const noexcept +16166: { return static_cast<_Node*>(_M_node)->_M_valptr(); } +16166: +16166: _Self& +16166: operator++() noexcept +16166: { +16166: _M_node = _M_node->_M_next; +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator++(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _M_node->_M_next; +16166: return __tmp; +16166: } +16166: +16166: _Self& +16166: operator--() noexcept +16166: { +16166: _M_node = _M_node->_M_prev; +16166: return *this; +16166: } +16166: +16166: _Self +16166: operator--(int) noexcept +16166: { +16166: _Self __tmp = *this; +16166: _M_node = _M_node->_M_prev; +16166: return __tmp; +16166: } +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator==(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node == __y._M_node; } +16166: +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator!=(const _Self& __x, const _Self& __y) noexcept +16166: { return __x._M_node != __y._M_node; } +16166: +16166: +16166: +16166: const __detail::_List_node_base* _M_node; +16166: }; +16166: +16166: namespace __cxx11 { +16166: +16166: template +16166: class _List_base +16166: { +16166: protected: +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_Tp>::other _Tp_alloc_type; +16166: typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Tp_alloc_traits; +16166: typedef typename _Tp_alloc_traits::template +16166: rebind<_List_node<_Tp> >::other _Node_alloc_type; +16166: typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; +16166: +16166: +16166: static size_t +16166: _S_distance(const __detail::_List_node_base* __first, +16166: const __detail::_List_node_base* __last) +16166: { +16166: size_t __n = 0; +16166: while (__first != __last) +16166: { +16166: __first = __first->_M_next; +16166: ++__n; +16166: } +16166: return __n; +16166: } +16166: +16166: +16166: struct _List_impl +16166: : public _Node_alloc_type +16166: { +16166: __detail::_List_node_header _M_node; +16166: +16166: _List_impl() noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value) +16166: +16166: : _Node_alloc_type() +16166: { } +16166: +16166: _List_impl(const _Node_alloc_type& __a) noexcept +16166: : _Node_alloc_type(__a) +16166: { } +16166: +16166: +16166: _List_impl(_List_impl&&) = default; +16166: +16166: _List_impl(_Node_alloc_type&& __a, _List_impl&& __x) +16166: : _Node_alloc_type(std::move(__a)), _M_node(std::move(__x._M_node)) +16166: { } +16166: +16166: _List_impl(_Node_alloc_type&& __a) noexcept +16166: : _Node_alloc_type(std::move(__a)) +16166: { } +16166: +16166: }; +16166: +16166: _List_impl _M_impl; +16166: +16166: +16166: size_t _M_get_size() const { return _M_impl._M_node._M_size; } +16166: +16166: void _M_set_size(size_t __n) { _M_impl._M_node._M_size = __n; } +16166: +16166: void _M_inc_size(size_t __n) { _M_impl._M_node._M_size += __n; } +16166: +16166: void _M_dec_size(size_t __n) { _M_impl._M_node._M_size -= __n; } +16166: +16166: +16166: size_t +16166: _M_distance(const __detail::_List_node_base* __first, +16166: const __detail::_List_node_base* __last) const +16166: { return _S_distance(__first, __last); } +16166: +16166: +16166: size_t _M_node_count() const { return _M_get_size(); } +16166: # 516 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: typename _Node_alloc_traits::pointer +16166: _M_get_node() +16166: { return _Node_alloc_traits::allocate(_M_impl, 1); } +16166: +16166: void +16166: _M_put_node(typename _Node_alloc_traits::pointer __p) noexcept +16166: { _Node_alloc_traits::deallocate(_M_impl, __p, 1); } +16166: +16166: public: +16166: typedef _Alloc allocator_type; +16166: +16166: _Node_alloc_type& +16166: _M_get_Node_allocator() noexcept +16166: { return _M_impl; } +16166: +16166: const _Node_alloc_type& +16166: _M_get_Node_allocator() const noexcept +16166: { return _M_impl; } +16166: +16166: +16166: _List_base() = default; +16166: +16166: +16166: +16166: +16166: _List_base(const _Node_alloc_type& __a) noexcept +16166: : _M_impl(__a) +16166: { } +16166: +16166: +16166: _List_base(_List_base&&) = default; +16166: +16166: +16166: _List_base(_List_base&& __x, _Node_alloc_type&& __a) +16166: : _M_impl(std::move(__a)) +16166: { +16166: if (__x._M_get_Node_allocator() == _M_get_Node_allocator()) +16166: _M_move_nodes(std::move(__x)); +16166: +16166: } +16166: +16166: +16166: +16166: _List_base(_Node_alloc_type&& __a, _List_base&& __x) +16166: : _M_impl(std::move(__a), std::move(__x._M_impl)) +16166: { } +16166: +16166: +16166: _List_base(_Node_alloc_type&& __a) +16166: : _M_impl(std::move(__a)) +16166: { } +16166: +16166: void +16166: _M_move_nodes(_List_base&& __x) +16166: { _M_impl._M_node._M_move_nodes(std::move(__x._M_impl._M_node)); } +16166: +16166: +16166: +16166: ~_List_base() noexcept +16166: { _M_clear(); } +16166: +16166: void +16166: _M_clear() noexcept; +16166: +16166: void +16166: _M_init() noexcept +16166: { this->_M_impl._M_node._M_init(); } +16166: }; +16166: # 631 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template > +16166: class list : protected _List_base<_Tp, _Alloc> +16166: { +16166: # 644 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: static_assert(is_same::type, _Tp>::value, +16166: "std::list must have a non-const, non-volatile value_type"); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef _List_base<_Tp, _Alloc> _Base; +16166: typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; +16166: typedef typename _Base::_Tp_alloc_traits _Tp_alloc_traits; +16166: typedef typename _Base::_Node_alloc_type _Node_alloc_type; +16166: typedef typename _Base::_Node_alloc_traits _Node_alloc_traits; +16166: +16166: public: +16166: typedef _Tp value_type; +16166: typedef typename _Tp_alloc_traits::pointer pointer; +16166: typedef typename _Tp_alloc_traits::const_pointer const_pointer; +16166: typedef typename _Tp_alloc_traits::reference reference; +16166: typedef typename _Tp_alloc_traits::const_reference const_reference; +16166: typedef _List_iterator<_Tp> iterator; +16166: typedef _List_const_iterator<_Tp> const_iterator; +16166: typedef std::reverse_iterator const_reverse_iterator; +16166: typedef std::reverse_iterator reverse_iterator; +16166: typedef size_t size_type; +16166: typedef ptrdiff_t difference_type; +16166: typedef _Alloc allocator_type; +16166: +16166: protected: +16166: +16166: +16166: typedef _List_node<_Tp> _Node; +16166: +16166: using _Base::_M_impl; +16166: using _Base::_M_put_node; +16166: using _Base::_M_get_node; +16166: using _Base::_M_get_Node_allocator; +16166: # 706 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: _Node* +16166: _M_create_node(_Args&&... __args) +16166: { +16166: auto __p = this->_M_get_node(); +16166: auto& __alloc = _M_get_Node_allocator(); +16166: __allocated_ptr<_Node_alloc_type> __guard{__alloc, __p}; +16166: _Node_alloc_traits::construct(__alloc, __p->_M_valptr(), +16166: std::forward<_Args>(__args)...); +16166: __guard = nullptr; +16166: return __p; +16166: } +16166: +16166: +16166: +16166: static size_t +16166: _S_distance(const_iterator __first, const_iterator __last) +16166: { return std::distance(__first, __last); } +16166: +16166: +16166: size_t +16166: _M_node_count() const +16166: { return this->_M_get_size(); } +16166: # 741 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: list() = default; +16166: # 758 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: explicit +16166: list(const allocator_type& __a) noexcept +16166: : _Base(_Node_alloc_type(__a)) { } +16166: # 771 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: explicit +16166: list(size_type __n, const allocator_type& __a = allocator_type()) +16166: : _Base(_Node_alloc_type(__a)) +16166: { _M_default_initialize(__n); } +16166: # 784 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: list(size_type __n, const value_type& __value, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(_Node_alloc_type(__a)) +16166: { _M_fill_initialize(__n, __value); } +16166: # 811 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: list(const list& __x) +16166: : _Base(_Node_alloc_traits:: +16166: _S_select_on_copy(__x._M_get_Node_allocator())) +16166: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } +16166: # 824 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: list(list&&) = default; +16166: # 834 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: list(initializer_list __l, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(_Node_alloc_type(__a)) +16166: { _M_initialize_dispatch(__l.begin(), __l.end(), __false_type()); } +16166: +16166: list(const list& __x, const __type_identity_t& __a) +16166: : _Base(_Node_alloc_type(__a)) +16166: { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } +16166: +16166: private: +16166: list(list&& __x, const allocator_type& __a, true_type) noexcept +16166: : _Base(_Node_alloc_type(__a), std::move(__x)) +16166: { } +16166: +16166: list(list&& __x, const allocator_type& __a, false_type) +16166: : _Base(_Node_alloc_type(__a)) +16166: { +16166: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator()) +16166: this->_M_move_nodes(std::move(__x)); +16166: else +16166: insert(begin(), std::__make_move_if_noexcept_iterator(__x.begin()), +16166: std::__make_move_if_noexcept_iterator(__x.end())); +16166: } +16166: +16166: public: +16166: list(list&& __x, const __type_identity_t& __a) +16166: noexcept(_Node_alloc_traits::_S_always_equal()) +16166: : list(std::move(__x), __a, +16166: typename _Node_alloc_traits::is_always_equal{}) +16166: { } +16166: # 877 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template> +16166: list(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a = allocator_type()) +16166: : _Base(_Node_alloc_type(__a)) +16166: { _M_initialize_dispatch(__first, __last, __false_type()); } +16166: # 903 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: ~list() = default; +16166: # 914 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: list& +16166: operator=(const list& __x); +16166: # 928 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: list& +16166: operator=(list&& __x) +16166: noexcept(_Node_alloc_traits::_S_nothrow_move()) +16166: { +16166: constexpr bool __move_storage = +16166: _Node_alloc_traits::_S_propagate_on_move_assign() +16166: || _Node_alloc_traits::_S_always_equal(); +16166: _M_move_assign(std::move(__x), __bool_constant<__move_storage>()); +16166: return *this; +16166: } +16166: # 946 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: list& +16166: operator=(initializer_list __l) +16166: { +16166: this->assign(__l.begin(), __l.end()); +16166: return *this; +16166: } +16166: # 964 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: assign(size_type __n, const value_type& __val) +16166: { _M_fill_assign(__n, __val); } +16166: # 981 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template> +16166: void +16166: assign(_InputIterator __first, _InputIterator __last) +16166: { _M_assign_dispatch(__first, __last, __false_type()); } +16166: # 1005 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: assign(initializer_list __l) +16166: { this->_M_assign_dispatch(__l.begin(), __l.end(), __false_type()); } +16166: +16166: +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_Base::_M_get_Node_allocator()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: begin() noexcept +16166: { return iterator(this->_M_impl._M_node._M_next); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: begin() const noexcept +16166: { return const_iterator(this->_M_impl._M_node._M_next); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: iterator +16166: end() noexcept +16166: { return iterator(&this->_M_impl._M_node); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: end() const noexcept +16166: { return const_iterator(&this->_M_impl._M_node); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rbegin() noexcept +16166: { return reverse_iterator(end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reverse_iterator +16166: rend() noexcept +16166: { return reverse_iterator(begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: rend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cbegin() const noexcept +16166: { return const_iterator(this->_M_impl._M_node._M_next); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_iterator +16166: cend() const noexcept +16166: { return const_iterator(&this->_M_impl._M_node); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crbegin() const noexcept +16166: { return const_reverse_iterator(end()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reverse_iterator +16166: crend() const noexcept +16166: { return const_reverse_iterator(begin()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; } +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: size() const noexcept +16166: { return _M_node_count(); } +16166: +16166: +16166: [[__nodiscard__]] +16166: size_type +16166: max_size() const noexcept +16166: { return _Node_alloc_traits::max_size(_M_get_Node_allocator()); } +16166: # 1168 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: resize(size_type __new_size); +16166: # 1181 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: resize(size_type __new_size, const value_type& __x); +16166: # 1203 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: [[__nodiscard__]] +16166: reference +16166: front() noexcept +16166: { return *begin(); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: front() const noexcept +16166: { return *begin(); } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: reference +16166: back() noexcept +16166: { +16166: iterator __tmp = end(); +16166: --__tmp; +16166: return *__tmp; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: const_reference +16166: back() const noexcept +16166: { +16166: const_iterator __tmp = end(); +16166: --__tmp; +16166: return *__tmp; +16166: } +16166: # 1254 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: push_front(const value_type& __x) +16166: { this->_M_insert(begin(), __x); } +16166: +16166: +16166: void +16166: push_front(value_type&& __x) +16166: { this->_M_insert(begin(), std::move(__x)); } +16166: +16166: template +16166: +16166: reference +16166: +16166: +16166: +16166: emplace_front(_Args&&... __args) +16166: { +16166: this->_M_insert(begin(), std::forward<_Args>(__args)...); +16166: +16166: return front(); +16166: +16166: } +16166: # 1290 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: pop_front() noexcept +16166: { this->_M_erase(begin()); } +16166: # 1304 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: push_back(const value_type& __x) +16166: { this->_M_insert(end(), __x); } +16166: +16166: +16166: void +16166: push_back(value_type&& __x) +16166: { this->_M_insert(end(), std::move(__x)); } +16166: +16166: template +16166: +16166: reference +16166: +16166: +16166: +16166: emplace_back(_Args&&... __args) +16166: { +16166: this->_M_insert(end(), std::forward<_Args>(__args)...); +16166: +16166: return back(); +16166: +16166: } +16166: # 1339 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: pop_back() noexcept +16166: { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); } +16166: # 1356 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: iterator +16166: emplace(const_iterator __position, _Args&&... __args); +16166: # 1371 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: iterator +16166: insert(const_iterator __position, const value_type& __x); +16166: # 1401 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: iterator +16166: insert(const_iterator __position, value_type&& __x) +16166: { return emplace(__position, std::move(__x)); } +16166: # 1420 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: iterator +16166: insert(const_iterator __p, initializer_list __l) +16166: { return this->insert(__p, __l.begin(), __l.end()); } +16166: # 1440 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: iterator +16166: insert(const_iterator __position, size_type __n, const value_type& __x); +16166: # 1479 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template> +16166: iterator +16166: insert(const_iterator __position, _InputIterator __first, +16166: _InputIterator __last); +16166: # 1523 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: iterator +16166: +16166: erase(const_iterator __position) noexcept; +16166: # 1548 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: iterator +16166: +16166: erase(const_iterator __first, const_iterator __last) noexcept +16166: +16166: +16166: +16166: { +16166: while (__first != __last) +16166: __first = erase(__first); +16166: return __last._M_const_cast(); +16166: } +16166: # 1571 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: swap(list& __x) noexcept +16166: { +16166: __detail::_List_node_base::swap(this->_M_impl._M_node, +16166: __x._M_impl._M_node); +16166: +16166: size_t __xsize = __x._M_get_size(); +16166: __x._M_set_size(this->_M_get_size()); +16166: this->_M_set_size(__xsize); +16166: +16166: _Node_alloc_traits::_S_on_swap(this->_M_get_Node_allocator(), +16166: __x._M_get_Node_allocator()); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: clear() noexcept +16166: { +16166: _Base::_M_clear(); +16166: _Base::_M_init(); +16166: } +16166: # 1610 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: +16166: splice(const_iterator __position, list&& __x) noexcept +16166: +16166: +16166: +16166: { +16166: if (!__x.empty()) +16166: { +16166: _M_check_equal_allocators(__x); +16166: +16166: this->_M_transfer(__position._M_const_cast(), +16166: __x.begin(), __x.end()); +16166: +16166: this->_M_inc_size(__x._M_get_size()); +16166: __x._M_set_size(0); +16166: } +16166: } +16166: +16166: +16166: void +16166: splice(const_iterator __position, list& __x) noexcept +16166: { splice(__position, std::move(__x)); } +16166: # 1646 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: splice(const_iterator __position, list&& __x, const_iterator __i) noexcept +16166: # 1661 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: { +16166: iterator __j = __i._M_const_cast(); +16166: ++__j; +16166: if (__position == __i || __position == __j) +16166: return; +16166: +16166: if (this != std::__addressof(__x)) +16166: _M_check_equal_allocators(__x); +16166: +16166: this->_M_transfer(__position._M_const_cast(), +16166: __i._M_const_cast(), __j); +16166: +16166: this->_M_inc_size(1); +16166: __x._M_dec_size(1); +16166: } +16166: # 1688 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: splice(const_iterator __position, list& __x, const_iterator __i) noexcept +16166: { splice(__position, std::move(__x), __i); } +16166: # 1707 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: splice(const_iterator __position, list&& __x, const_iterator __first, +16166: const_iterator __last) noexcept +16166: # 1727 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: { +16166: if (__first != __last) +16166: { +16166: if (this != std::__addressof(__x)) +16166: _M_check_equal_allocators(__x); +16166: +16166: size_t __n = _S_distance(__first, __last); +16166: this->_M_inc_size(__n); +16166: __x._M_dec_size(__n); +16166: +16166: this->_M_transfer(__position._M_const_cast(), +16166: __first._M_const_cast(), +16166: __last._M_const_cast()); +16166: } +16166: } +16166: # 1757 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: splice(const_iterator __position, list& __x, const_iterator __first, +16166: const_iterator __last) noexcept +16166: { splice(__position, std::move(__x), __first, __last); } +16166: +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: +16166: typedef void __remove_return_type; +16166: +16166: +16166: public: +16166: # 1785 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: +16166: __remove_return_type +16166: remove(const _Tp& __value); +16166: # 1800 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: __remove_return_type +16166: remove_if(_Predicate); +16166: # 1814 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: +16166: __remove_return_type +16166: unique(); +16166: # 1830 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: __remove_return_type +16166: unique(_BinaryPredicate); +16166: # 1846 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: merge(list&& __x); +16166: +16166: void +16166: merge(list& __x) +16166: { merge(std::move(__x)); } +16166: # 1871 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: void +16166: merge(list&& __x, _StrictWeakOrdering __comp); +16166: +16166: template +16166: void +16166: merge(list& __x, _StrictWeakOrdering __comp) +16166: { merge(std::move(__x), __comp); } +16166: # 1890 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: void +16166: reverse() noexcept +16166: { this->_M_impl._M_node._M_reverse(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: sort(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: sort(_StrictWeakOrdering); +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: void +16166: _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) +16166: { _M_fill_initialize(static_cast(__n), __x); } +16166: +16166: +16166: template +16166: void +16166: _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, +16166: __false_type) +16166: { +16166: for (; __first != __last; ++__first) +16166: +16166: emplace_back(*__first); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: void +16166: _M_fill_initialize(size_type __n, const value_type& __x) +16166: { +16166: for (; __n; --__n) +16166: push_back(__x); +16166: } +16166: +16166: +16166: +16166: void +16166: _M_default_initialize(size_type __n) +16166: { +16166: for (; __n; --__n) +16166: emplace_back(); +16166: } +16166: +16166: +16166: void +16166: _M_default_append(size_type __n); +16166: # 1968 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: void +16166: _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) +16166: { _M_fill_assign(__n, __val); } +16166: +16166: +16166: template +16166: void +16166: _M_assign_dispatch(_InputIterator __first, _InputIterator __last, +16166: __false_type); +16166: +16166: +16166: +16166: void +16166: _M_fill_assign(size_type __n, const value_type& __val); +16166: +16166: +16166: +16166: void +16166: _M_transfer(iterator __position, iterator __first, iterator __last) +16166: { __position._M_node->_M_transfer(__first._M_node, __last._M_node); } +16166: # 2000 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: void +16166: _M_insert(iterator __position, _Args&&... __args) +16166: { +16166: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); +16166: __tmp->_M_hook(__position._M_node); +16166: this->_M_inc_size(1); +16166: } +16166: +16166: +16166: +16166: void +16166: _M_erase(iterator __position) noexcept +16166: { +16166: this->_M_dec_size(1); +16166: __position._M_node->_M_unhook(); +16166: _Node* __n = static_cast<_Node*>(__position._M_node); +16166: +16166: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __n->_M_valptr()); +16166: +16166: +16166: +16166: +16166: _M_put_node(__n); +16166: } +16166: +16166: +16166: void +16166: _M_check_equal_allocators(const list& __x) noexcept +16166: { +16166: if (_M_get_Node_allocator() != __x._M_get_Node_allocator()) +16166: __builtin_abort(); +16166: } +16166: +16166: +16166: const_iterator +16166: _M_resize_pos(size_type& __new_size) const; +16166: +16166: +16166: void +16166: _M_move_assign(list&& __x, true_type) noexcept +16166: { +16166: this->clear(); +16166: this->_M_move_nodes(std::move(__x)); +16166: std::__alloc_on_move(this->_M_get_Node_allocator(), +16166: __x._M_get_Node_allocator()); +16166: } +16166: +16166: void +16166: _M_move_assign(list&& __x, false_type) +16166: { +16166: if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator()) +16166: _M_move_assign(std::move(__x), true_type{}); +16166: else +16166: +16166: +16166: _M_assign_dispatch(std::make_move_iterator(__x.begin()), +16166: std::make_move_iterator(__x.end()), +16166: __false_type{}); +16166: } +16166: +16166: +16166: +16166: +16166: struct _Finalize_merge +16166: { +16166: explicit +16166: _Finalize_merge(list& __dest, list& __src, const iterator& __src_next) +16166: : _M_dest(__dest), _M_src(__src), _M_next(__src_next) +16166: { } +16166: +16166: ~_Finalize_merge() +16166: { +16166: +16166: +16166: +16166: const size_t __num_unmerged = std::distance(_M_next, _M_src.end()); +16166: const size_t __orig_size = _M_src._M_get_size(); +16166: _M_dest._M_inc_size(__orig_size - __num_unmerged); +16166: _M_src._M_set_size(__num_unmerged); +16166: } +16166: +16166: list& _M_dest; +16166: list& _M_src; +16166: const iterator& _M_next; +16166: +16166: +16166: _Finalize_merge(const _Finalize_merge&) = delete; +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: template::value_type, +16166: typename _Allocator = allocator<_ValT>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireAllocator<_Allocator>> +16166: list(_InputIterator, _InputIterator, _Allocator = _Allocator()) +16166: -> list<_ValT, _Allocator>; +16166: +16166: +16166: } +16166: # 2119 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +16166: { +16166: +16166: if (__x.size() != __y.size()) +16166: return false; +16166: +16166: +16166: typedef typename list<_Tp, _Alloc>::const_iterator const_iterator; +16166: const_iterator __end1 = __x.end(); +16166: const_iterator __end2 = __y.end(); +16166: +16166: const_iterator __i1 = __x.begin(); +16166: const_iterator __i2 = __y.begin(); +16166: while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) +16166: { +16166: ++__i1; +16166: ++__i2; +16166: } +16166: return __i1 == __end1 && __i2 == __end2; +16166: } +16166: # 2176 "/usr/include/c++/14/bits/stl_list.h" 3 +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +16166: { return std::lexicographical_compare(__x.begin(), __x.end(), +16166: __y.begin(), __y.end()); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: [[__nodiscard__]] +16166: inline bool +16166: operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline ptrdiff_t +16166: __distance(std::_List_iterator<_Tp> __first, +16166: std::_List_iterator<_Tp> __last, +16166: input_iterator_tag __tag) +16166: { +16166: typedef std::_List_const_iterator<_Tp> _CIter; +16166: return std::__distance(_CIter(__first), _CIter(__last), __tag); +16166: } +16166: +16166: template +16166: inline ptrdiff_t +16166: __distance(std::_List_const_iterator<_Tp> __first, +16166: std::_List_const_iterator<_Tp> __last, +16166: input_iterator_tag) +16166: { +16166: typedef __detail::_List_node_header _Sentinel; +16166: std::_List_const_iterator<_Tp> __beyond = __last; +16166: ++__beyond; +16166: const bool __whole = __first == __beyond; +16166: if (__builtin_constant_p (__whole) && __whole) +16166: return static_cast(__last._M_node)->_M_size; +16166: +16166: ptrdiff_t __n = 0; +16166: while (__first != __last) +16166: { +16166: ++__first; +16166: ++__n; +16166: } +16166: return __n; +16166: } +16166: +16166: +16166: +16166: } +16166: # 66 "/usr/include/c++/14/list" 2 3 +16166: # 1 "/usr/include/c++/14/bits/list.tcc" 1 3 +16166: # 59 "/usr/include/c++/14/bits/list.tcc" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: void +16166: _List_base<_Tp, _Alloc>:: +16166: _M_clear() noexcept +16166: { +16166: typedef _List_node<_Tp> _Node; +16166: __detail::_List_node_base* __cur = _M_impl._M_node._M_next; +16166: while (__cur != &_M_impl._M_node) +16166: { +16166: _Node* __tmp = static_cast<_Node*>(__cur); +16166: __cur = __tmp->_M_next; +16166: _Tp* __val = __tmp->_M_valptr(); +16166: +16166: _Node_alloc_traits::destroy(_M_get_Node_allocator(), __val); +16166: +16166: +16166: +16166: _M_put_node(__tmp); +16166: } +16166: } +16166: +16166: +16166: template +16166: template +16166: typename list<_Tp, _Alloc>::iterator +16166: list<_Tp, _Alloc>:: +16166: emplace(const_iterator __position, _Args&&... __args) +16166: { +16166: _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...); +16166: __tmp->_M_hook(__position._M_const_cast()._M_node); +16166: this->_M_inc_size(1); +16166: return iterator(__tmp); +16166: } +16166: +16166: +16166: template +16166: typename list<_Tp, _Alloc>::iterator +16166: list<_Tp, _Alloc>:: +16166: +16166: insert(const_iterator __position, const value_type& __x) +16166: +16166: +16166: +16166: { +16166: _Node* __tmp = _M_create_node(__x); +16166: __tmp->_M_hook(__position._M_const_cast()._M_node); +16166: this->_M_inc_size(1); +16166: return iterator(__tmp); +16166: } +16166: +16166: +16166: template +16166: typename list<_Tp, _Alloc>::iterator +16166: list<_Tp, _Alloc>:: +16166: insert(const_iterator __position, size_type __n, const value_type& __x) +16166: { +16166: if (__n) +16166: { +16166: list __tmp(__n, __x, get_allocator()); +16166: iterator __it = __tmp.begin(); +16166: splice(__position, __tmp); +16166: return __it; +16166: } +16166: return __position._M_const_cast(); +16166: } +16166: +16166: template +16166: template +16166: typename list<_Tp, _Alloc>::iterator +16166: list<_Tp, _Alloc>:: +16166: insert(const_iterator __position, _InputIterator __first, +16166: _InputIterator __last) +16166: { +16166: list __tmp(__first, __last, get_allocator()); +16166: if (!__tmp.empty()) +16166: { +16166: iterator __it = __tmp.begin(); +16166: splice(__position, __tmp); +16166: return __it; +16166: } +16166: return __position._M_const_cast(); +16166: } +16166: +16166: +16166: template +16166: typename list<_Tp, _Alloc>::iterator +16166: list<_Tp, _Alloc>:: +16166: +16166: erase(const_iterator __position) noexcept +16166: +16166: +16166: +16166: { +16166: iterator __ret = iterator(__position._M_node->_M_next); +16166: _M_erase(__position._M_const_cast()); +16166: return __ret; +16166: } +16166: # 173 "/usr/include/c++/14/bits/list.tcc" 3 +16166: template +16166: typename list<_Tp, _Alloc>::const_iterator +16166: list<_Tp, _Alloc>:: +16166: _M_resize_pos(size_type& __new_size) const +16166: { +16166: const_iterator __i; +16166: +16166: const size_type __len = size(); +16166: if (__new_size < __len) +16166: { +16166: if (__new_size <= __len / 2) +16166: { +16166: __i = begin(); +16166: std::advance(__i, __new_size); +16166: } +16166: else +16166: { +16166: __i = end(); +16166: ptrdiff_t __num_erase = __len - __new_size; +16166: std::advance(__i, -__num_erase); +16166: } +16166: __new_size = 0; +16166: return __i; +16166: } +16166: else +16166: __i = end(); +16166: +16166: +16166: +16166: +16166: +16166: __new_size -= __len; +16166: return __i; +16166: } +16166: +16166: +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: _M_default_append(size_type __n) +16166: { +16166: size_type __i = 0; +16166: try +16166: { +16166: for (; __i < __n; ++__i) +16166: emplace_back(); +16166: } +16166: catch(...) +16166: { +16166: for (; __i; --__i) +16166: pop_back(); +16166: throw; +16166: } +16166: } +16166: +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: resize(size_type __new_size) +16166: { +16166: const_iterator __i = _M_resize_pos(__new_size); +16166: if (__new_size) +16166: _M_default_append(__new_size); +16166: else +16166: erase(__i, end()); +16166: } +16166: +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: resize(size_type __new_size, const value_type& __x) +16166: { +16166: const_iterator __i = _M_resize_pos(__new_size); +16166: if (__new_size) +16166: insert(end(), __new_size, __x); +16166: else +16166: erase(__i, end()); +16166: } +16166: # 265 "/usr/include/c++/14/bits/list.tcc" 3 +16166: template +16166: list<_Tp, _Alloc>& +16166: list<_Tp, _Alloc>:: +16166: operator=(const list& __x) +16166: { +16166: if (this != std::__addressof(__x)) +16166: { +16166: +16166: if (_Node_alloc_traits::_S_propagate_on_copy_assign()) +16166: { +16166: auto& __this_alloc = this->_M_get_Node_allocator(); +16166: auto& __that_alloc = __x._M_get_Node_allocator(); +16166: if (!_Node_alloc_traits::_S_always_equal() +16166: && __this_alloc != __that_alloc) +16166: { +16166: +16166: clear(); +16166: } +16166: std::__alloc_on_copy(__this_alloc, __that_alloc); +16166: } +16166: +16166: _M_assign_dispatch(__x.begin(), __x.end(), __false_type()); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: _M_fill_assign(size_type __n, const value_type& __val) +16166: { +16166: iterator __i = begin(); +16166: for (; __i != end() && __n > 0; ++__i, --__n) +16166: *__i = __val; +16166: if (__n > 0) +16166: insert(end(), __n, __val); +16166: else +16166: erase(__i, end()); +16166: } +16166: +16166: template +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, +16166: __false_type) +16166: { +16166: iterator __first1 = begin(); +16166: iterator __last1 = end(); +16166: for (; __first1 != __last1 && __first2 != __last2; +16166: ++__first1, (void)++__first2) +16166: *__first1 = *__first2; +16166: if (__first2 == __last2) +16166: erase(__first1, __last1); +16166: else +16166: insert(__last1, __first2, __last2); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: typename list<_Tp, _Alloc>::__remove_return_type +16166: list<_Tp, _Alloc>:: +16166: remove(const value_type& __value) +16166: { +16166: +16166: +16166: +16166: list __to_destroy(get_allocator()); +16166: iterator __first = begin(); +16166: iterator __last = end(); +16166: while (__first != __last) +16166: { +16166: iterator __next = __first; +16166: ++__next; +16166: if (*__first == __value) +16166: { +16166: +16166: +16166: +16166: __to_destroy.splice(__to_destroy.begin(), *this, __first); +16166: +16166: +16166: +16166: } +16166: +16166: __first = __next; +16166: } +16166: +16166: +16166: +16166: +16166: return ; +16166: +16166: } +16166: +16166: template +16166: typename list<_Tp, _Alloc>::__remove_return_type +16166: list<_Tp, _Alloc>:: +16166: unique() +16166: { +16166: iterator __first = begin(); +16166: iterator __last = end(); +16166: if (__first == __last) +16166: return ; +16166: +16166: +16166: +16166: list __to_destroy(get_allocator()); +16166: iterator __next = __first; +16166: while (++__next != __last) +16166: { +16166: if (*__first == *__next) +16166: { +16166: __to_destroy.splice(__to_destroy.begin(), *this, __next); +16166: +16166: +16166: +16166: } +16166: else +16166: __first = __next; +16166: __next = __first; +16166: } +16166: +16166: +16166: +16166: +16166: return ; +16166: +16166: } +16166: +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: +16166: merge(list&& __x) +16166: +16166: +16166: +16166: { +16166: +16166: +16166: if (this != std::__addressof(__x)) +16166: { +16166: _M_check_equal_allocators(__x); +16166: +16166: iterator __first1 = begin(); +16166: iterator __last1 = end(); +16166: iterator __first2 = __x.begin(); +16166: iterator __last2 = __x.end(); +16166: +16166: const _Finalize_merge __fin(*this, __x, __first2); +16166: +16166: while (__first1 != __last1 && __first2 != __last2) +16166: if (*__first2 < *__first1) +16166: { +16166: iterator __next = __first2; +16166: _M_transfer(__first1, __first2, ++__next); +16166: __first2 = __next; +16166: } +16166: else +16166: ++__first1; +16166: if (__first2 != __last2) +16166: { +16166: _M_transfer(__last1, __first2, __last2); +16166: __first2 = __last2; +16166: } +16166: } +16166: } +16166: +16166: template +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: +16166: merge(list&& __x, _StrictWeakOrdering __comp) +16166: +16166: +16166: +16166: { +16166: +16166: +16166: if (this != std::__addressof(__x)) +16166: { +16166: _M_check_equal_allocators(__x); +16166: +16166: iterator __first1 = begin(); +16166: iterator __last1 = end(); +16166: iterator __first2 = __x.begin(); +16166: iterator __last2 = __x.end(); +16166: +16166: const _Finalize_merge __fin(*this, __x, __first2); +16166: +16166: while (__first1 != __last1 && __first2 != __last2) +16166: if (__comp(*__first2, *__first1)) +16166: { +16166: iterator __next = __first2; +16166: _M_transfer(__first1, __first2, ++__next); +16166: __first2 = __next; +16166: } +16166: else +16166: ++__first1; +16166: if (__first2 != __last2) +16166: { +16166: _M_transfer(__last1, __first2, __last2); +16166: __first2 = __last2; +16166: } +16166: } +16166: } +16166: +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: sort() +16166: { +16166: +16166: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node +16166: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) +16166: { +16166: using __detail::_Scratch_list; +16166: # 497 "/usr/include/c++/14/bits/list.tcc" 3 +16166: _Scratch_list __carry; +16166: _Scratch_list __tmp[64]; +16166: _Scratch_list* __fill = __tmp; +16166: _Scratch_list* __counter; +16166: +16166: _Scratch_list::_Ptr_cmp __ptr_comp; +16166: +16166: try +16166: { +16166: do +16166: { +16166: __carry._M_take_one(begin()._M_node); +16166: +16166: for(__counter = __tmp; +16166: __counter != __fill && !__counter->empty(); +16166: ++__counter) +16166: { +16166: +16166: __counter->merge(__carry, __ptr_comp); +16166: __carry.swap(*__counter); +16166: } +16166: __carry.swap(*__counter); +16166: if (__counter == __fill) +16166: ++__fill; +16166: } +16166: while ( !empty() ); +16166: +16166: for (__counter = __tmp + 1; __counter != __fill; ++__counter) +16166: __counter->merge(__counter[-1], __ptr_comp); +16166: __fill[-1].swap(this->_M_impl._M_node); +16166: } +16166: catch(...) +16166: { +16166: +16166: __carry._M_put_all(end()._M_node); +16166: for (int __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i) +16166: __tmp[__i]._M_put_all(end()._M_node); +16166: throw; +16166: } +16166: } +16166: } +16166: +16166: template +16166: template +16166: typename list<_Tp, _Alloc>::__remove_return_type +16166: list<_Tp, _Alloc>:: +16166: remove_if(_Predicate __pred) +16166: { +16166: +16166: +16166: +16166: list __to_destroy(get_allocator()); +16166: iterator __first = begin(); +16166: iterator __last = end(); +16166: while (__first != __last) +16166: { +16166: iterator __next = __first; +16166: ++__next; +16166: if (__pred(*__first)) +16166: { +16166: __to_destroy.splice(__to_destroy.begin(), *this, __first); +16166: +16166: +16166: +16166: } +16166: __first = __next; +16166: } +16166: +16166: +16166: +16166: +16166: return ; +16166: +16166: } +16166: +16166: template +16166: template +16166: typename list<_Tp, _Alloc>::__remove_return_type +16166: list<_Tp, _Alloc>:: +16166: unique(_BinaryPredicate __binary_pred) +16166: { +16166: iterator __first = begin(); +16166: iterator __last = end(); +16166: if (__first == __last) +16166: return ; +16166: +16166: +16166: +16166: list __to_destroy(get_allocator()); +16166: iterator __next = __first; +16166: while (++__next != __last) +16166: { +16166: if (__binary_pred(*__first, *__next)) +16166: { +16166: __to_destroy.splice(__to_destroy.begin(), *this, __next); +16166: +16166: +16166: +16166: } +16166: else +16166: __first = __next; +16166: __next = __first; +16166: } +16166: +16166: +16166: +16166: +16166: return ; +16166: +16166: } +16166: +16166: +16166: +16166: template +16166: template +16166: void +16166: list<_Tp, _Alloc>:: +16166: sort(_StrictWeakOrdering __comp) +16166: { +16166: +16166: if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node +16166: && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node) +16166: { +16166: using __detail::_Scratch_list; +16166: _Scratch_list __carry; +16166: _Scratch_list __tmp[64]; +16166: _Scratch_list* __fill = __tmp; +16166: _Scratch_list* __counter; +16166: +16166: _Scratch_list::_Ptr_cmp __ptr_comp +16166: = { __comp }; +16166: +16166: try +16166: { +16166: do +16166: { +16166: __carry._M_take_one(begin()._M_node); +16166: +16166: for(__counter = __tmp; +16166: __counter != __fill && !__counter->empty(); +16166: ++__counter) +16166: { +16166: +16166: __counter->merge(__carry, __ptr_comp); +16166: __carry.swap(*__counter); +16166: } +16166: __carry.swap(*__counter); +16166: if (__counter == __fill) +16166: ++__fill; +16166: } +16166: while ( !empty() ); +16166: +16166: for (__counter = __tmp + 1; __counter != __fill; ++__counter) +16166: __counter->merge(__counter[-1], __ptr_comp); +16166: __fill[-1].swap(this->_M_impl._M_node); +16166: } +16166: catch(...) +16166: { +16166: +16166: __carry._M_put_all(end()._M_node); +16166: for (size_t __i = 0; __i < sizeof(__tmp)/sizeof(__tmp[0]); ++__i) +16166: __tmp[__i]._M_put_all(end()._M_node); +16166: throw; +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: } +16166: # 67 "/usr/include/c++/14/list" 2 3 +16166: # 77 "/usr/include/c++/14/list" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 78 "/usr/include/c++/14/list" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr +16166: { +16166: template +16166: using list = std::list<_Tp, polymorphic_allocator<_Tp>>; +16166: } +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +16166: namespace rocksdb { +16166: class CacheReservationManager; +16166: +16166: +16166: +16166: class StallInterface { +16166: public: +16166: virtual ~StallInterface() {} +16166: +16166: virtual void Block() = 0; +16166: +16166: virtual void Signal() = 0; +16166: }; +16166: +16166: class WriteBufferManager final { +16166: public: +16166: # 50 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +16166: explicit WriteBufferManager(size_t _buffer_size, +16166: std::shared_ptr cache = {}, +16166: bool allow_stall = false); +16166: +16166: WriteBufferManager(const WriteBufferManager&) = delete; +16166: WriteBufferManager& operator=(const WriteBufferManager&) = delete; +16166: +16166: ~WriteBufferManager(); +16166: +16166: +16166: +16166: bool enabled() const { return buffer_size() > 0; } +16166: +16166: +16166: bool cost_to_cache() const { return cache_res_mgr_ != nullptr; } +16166: +16166: +16166: +16166: size_t memory_usage() const { +16166: return memory_used_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: size_t mutable_memtable_memory_usage() const { +16166: return memory_active_.load(std::memory_order_relaxed); +16166: } +16166: +16166: size_t dummy_entries_in_cache_usage() const; +16166: +16166: +16166: size_t buffer_size() const { +16166: return buffer_size_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: void SetBufferSize(size_t new_size) { +16166: +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 3 4 +16166: (static_cast ( +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +16166: new_size > 0 +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +16166: "new_size > 0" +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 86 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +16166: ; +16166: buffer_size_.store(new_size, std::memory_order_relaxed); +16166: mutable_limit_.store(new_size * 7 / 8, std::memory_order_relaxed); +16166: +16166: MaybeEndWriteStall(); +16166: } +16166: +16166: void SetAllowStall(bool new_allow_stall) { +16166: allow_stall_.store(new_allow_stall, std::memory_order_relaxed); +16166: MaybeEndWriteStall(); +16166: } +16166: +16166: +16166: +16166: +16166: bool ShouldFlush() const { +16166: if (enabled()) { +16166: if (mutable_memtable_memory_usage() > +16166: mutable_limit_.load(std::memory_order_relaxed)) { +16166: return true; +16166: } +16166: size_t local_size = buffer_size(); +16166: if (memory_usage() >= local_size && +16166: mutable_memtable_memory_usage() >= local_size / 2) { +16166: +16166: +16166: +16166: return true; +16166: } +16166: } +16166: return false; +16166: } +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_buffer_manager.h" +16166: bool ShouldStall() const { +16166: if (!allow_stall_.load(std::memory_order_relaxed) || !enabled()) { +16166: return false; +16166: } +16166: +16166: return IsStallActive() || IsStallThresholdExceeded(); +16166: } +16166: +16166: +16166: bool IsStallActive() const { +16166: return stall_active_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: bool IsStallThresholdExceeded() const { +16166: return memory_usage() >= buffer_size_; +16166: } +16166: +16166: void ReserveMem(size_t mem); +16166: +16166: +16166: +16166: void ScheduleFreeMem(size_t mem); +16166: +16166: void FreeMem(size_t mem); +16166: +16166: +16166: +16166: void BeginWriteStall(StallInterface* wbm_stall); +16166: +16166: +16166: +16166: void MaybeEndWriteStall(); +16166: +16166: void RemoveDBFromQueue(StallInterface* wbm_stall); +16166: +16166: private: +16166: std::atomic buffer_size_; +16166: std::atomic mutable_limit_; +16166: std::atomic memory_used_; +16166: +16166: std::atomic memory_active_; +16166: std::shared_ptr cache_res_mgr_; +16166: +16166: std::mutex cache_res_mgr_mu_; +16166: +16166: std::list queue_; +16166: +16166: std::mutex mu_; +16166: std::atomic allow_stall_; +16166: +16166: +16166: std::atomic stall_active_; +16166: +16166: void ReserveMemWithCache(size_t mem); +16166: void FreeMemWithCache(size_t mem); +16166: }; +16166: } +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Cache; +16166: class CompactionFilter; +16166: class CompactionFilterFactory; +16166: class Comparator; +16166: class ConcurrentTaskLimiter; +16166: class Env; +16166: enum InfoLogLevel : unsigned char; +16166: class SstFileManager; +16166: class FilterPolicy; +16166: class Logger; +16166: class MergeOperator; +16166: class Snapshot; +16166: class MemTableRepFactory; +16166: class RateLimiter; +16166: class Slice; +16166: class Statistics; +16166: class InternalKeyComparator; +16166: class WalFilter; +16166: class FileSystem; +16166: +16166: struct Options; +16166: struct DbPath; +16166: +16166: using FileTypeSet = SmallEnumSet; +16166: +16166: struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions { +16166: +16166: +16166: +16166: +16166: +16166: +16166: ColumnFamilyOptions* OldDefaults(int rocksdb_major_version = 4, +16166: int rocksdb_minor_version = 6); +16166: +16166: +16166: +16166: +16166: +16166: ColumnFamilyOptions* OptimizeForSmallDb( +16166: std::shared_ptr* cache = nullptr); +16166: +16166: +16166: +16166: +16166: ColumnFamilyOptions* OptimizeForPointLookup(uint64_t block_cache_size_mb); +16166: # 102 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: ColumnFamilyOptions* OptimizeLevelStyleCompaction( +16166: uint64_t memtable_memory_budget = 512 * 1024 * 1024); +16166: ColumnFamilyOptions* OptimizeUniversalStyleCompaction( +16166: uint64_t memtable_memory_budget = 512 * 1024 * 1024); +16166: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: const Comparator* comparator = BytewiseComparator(); +16166: # 128 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr merge_operator = nullptr; +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: const CompactionFilter* compaction_filter = nullptr; +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr compaction_filter_factory = nullptr; +16166: # 186 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: size_t write_buffer_size = 64 << 20; +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: CompressionType compression; +16166: # 223 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: CompressionType bottommost_compression = kDisableCompressionOption; +16166: +16166: +16166: +16166: +16166: +16166: CompressionOptions bottommost_compression_opts; +16166: +16166: +16166: CompressionOptions compression_opts; +16166: # 246 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: int level0_file_num_compaction_trigger = 4; +16166: # 280 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr prefix_extractor = nullptr; +16166: # 294 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t max_bytes_for_level_base = 256 * 1048576; +16166: +16166: +16166: uint64_t snap_refresh_nanos = 0; +16166: +16166: +16166: +16166: +16166: +16166: bool disable_auto_compactions = false; +16166: +16166: +16166: +16166: +16166: +16166: std::shared_ptr table_factory; +16166: # 323 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::vector cf_paths; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::shared_ptr compaction_thread_limiter = nullptr; +16166: # 340 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr sst_partitioner_factory = nullptr; +16166: # 351 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint32_t memtable_max_range_deletions = 0; +16166: # 395 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint32_t uncache_aggressiveness = 0; +16166: +16166: +16166: ColumnFamilyOptions(); +16166: +16166: explicit ColumnFamilyOptions(const Options& options); +16166: +16166: void Dump(Logger* log) const; +16166: }; +16166: +16166: enum class WALRecoveryMode : char { +16166: # 425 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: kTolerateCorruptedTailRecords = 0x00, +16166: +16166: +16166: +16166: +16166: kAbsoluteConsistency = 0x01, +16166: +16166: +16166: +16166: +16166: kPointInTimeRecovery = 0x02, +16166: +16166: +16166: +16166: +16166: +16166: kSkipAnyCorruptedRecords = 0x03, +16166: }; +16166: +16166: struct DbPath { +16166: std::string path; +16166: uint64_t target_size; +16166: +16166: DbPath() : target_size(0) {} +16166: DbPath(const std::string& p, uint64_t t) : path(p), target_size(t) {} +16166: }; +16166: +16166: extern const char* kHostnameForDbHostId; +16166: +16166: enum class CompactionServiceJobStatus : char { +16166: kSuccess, +16166: kFailure, +16166: kUseLocal, +16166: }; +16166: +16166: struct CompactionServiceJobInfo { +16166: std::string db_name; +16166: std::string db_id; +16166: std::string db_session_id; +16166: uint64_t job_id; +16166: +16166: +16166: +16166: +16166: Env::Priority priority; +16166: +16166: +16166: CompactionReason compaction_reason; +16166: bool is_full_compaction; +16166: bool is_manual_compaction; +16166: bool bottommost_level; +16166: +16166: CompactionServiceJobInfo(std::string db_name_, std::string db_id_, +16166: std::string db_session_id_, uint64_t job_id_, +16166: Env::Priority priority_, +16166: CompactionReason compaction_reason_, +16166: bool is_full_compaction_, bool is_manual_compaction_, +16166: bool bottommost_level_) +16166: : db_name(std::move(db_name_)), +16166: db_id(std::move(db_id_)), +16166: db_session_id(std::move(db_session_id_)), +16166: job_id(job_id_), +16166: priority(priority_), +16166: compaction_reason(compaction_reason_), +16166: is_full_compaction(is_full_compaction_), +16166: is_manual_compaction(is_manual_compaction_), +16166: bottommost_level(bottommost_level_) {} +16166: }; +16166: +16166: struct CompactionServiceScheduleResponse { +16166: std::string scheduled_job_id; +16166: +16166: CompactionServiceJobStatus status; +16166: CompactionServiceScheduleResponse(std::string scheduled_job_id_, +16166: CompactionServiceJobStatus status_) +16166: : scheduled_job_id(scheduled_job_id_), status(status_) {} +16166: explicit CompactionServiceScheduleResponse(CompactionServiceJobStatus status_) +16166: : status(status_) {} +16166: }; +16166: +16166: +16166: +16166: +16166: class CompactionService : public Customizable { +16166: public: +16166: static const char* Type() { return "CompactionService"; } +16166: +16166: +16166: const char* Name() const override = 0; +16166: +16166: +16166: virtual CompactionServiceScheduleResponse Schedule( +16166: const CompactionServiceJobInfo& , +16166: const std::string& ) { +16166: CompactionServiceScheduleResponse response( +16166: CompactionServiceJobStatus::kUseLocal); +16166: return response; +16166: } +16166: +16166: +16166: virtual CompactionServiceJobStatus Wait( +16166: const std::string& , std::string* ) { +16166: return CompactionServiceJobStatus::kUseLocal; +16166: } +16166: +16166: +16166: virtual void OnInstallation(const std::string& , +16166: CompactionServiceJobStatus ) {} +16166: +16166: ~CompactionService() override = default; +16166: }; +16166: +16166: struct DBOptions { +16166: +16166: +16166: +16166: +16166: +16166: DBOptions* OldDefaults(int rocksdb_major_version = 4, +16166: int rocksdb_minor_version = 6); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: DBOptions* OptimizeForSmallDb(std::shared_ptr* cache = nullptr); +16166: +16166: +16166: +16166: +16166: +16166: +16166: DBOptions* IncreaseParallelism(int total_threads = 16); +16166: +16166: +16166: +16166: bool create_if_missing = false; +16166: +16166: +16166: +16166: +16166: bool create_missing_column_families = false; +16166: +16166: +16166: +16166: bool error_if_exists = false; +16166: # 588 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool paranoid_checks = true; +16166: # 600 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool flush_verify_memtable_count = true; +16166: # 617 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool compaction_verify_record_count = true; +16166: # 633 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool track_and_verify_wals_in_manifest = false; +16166: # 653 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool verify_sst_unique_id_in_manifest = true; +16166: +16166: +16166: +16166: +16166: Env* env = Env::Default(); +16166: # 676 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr rate_limiter = nullptr; +16166: # 692 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr sst_file_manager = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: std::shared_ptr info_log = nullptr; +16166: +16166: +16166: +16166: +16166: InfoLogLevel info_log_level = Logger::kDefaultLogLevel; +16166: # 718 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: int max_open_files = -1; +16166: +16166: +16166: +16166: +16166: int max_file_opening_threads = 16; +16166: # 746 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t max_total_wal_size = 0; +16166: +16166: +16166: std::shared_ptr statistics = nullptr; +16166: # 759 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool use_fsync = false; +16166: # 785 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::vector db_paths; +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::string db_log_dir = ""; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::string wal_dir = ""; +16166: # 810 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t delete_obsolete_files_period_micros = 6ULL * 60 * 60 * 1000000; +16166: +16166: +16166: +16166: +16166: +16166: +16166: int max_background_jobs = 2; +16166: # 835 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: int max_background_compactions = -1; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint32_t max_subcompactions = 1; +16166: # 865 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: int max_background_flushes = -1; +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t max_log_file_size = 0; +16166: +16166: +16166: +16166: +16166: +16166: size_t log_file_time_to_roll = 0; +16166: +16166: +16166: +16166: size_t keep_log_file_num = 1000; +16166: # 892 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: size_t recycle_log_file_num = 0; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t max_manifest_file_size = 1024 * 1024 * 1024; +16166: +16166: +16166: int table_cache_numshardbits = 6; +16166: # 920 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t WAL_ttl_seconds = 0; +16166: uint64_t WAL_size_limit_MB = 0; +16166: +16166: +16166: +16166: +16166: +16166: size_t manifest_preallocation_size = 4 * 1024 * 1024; +16166: # 940 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool allow_mmap_reads = false; +16166: +16166: +16166: +16166: +16166: bool allow_mmap_writes = false; +16166: # 957 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool use_direct_reads = false; +16166: +16166: +16166: +16166: bool use_direct_io_for_flush_and_compaction = false; +16166: # 972 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool allow_fallocate = true; +16166: +16166: +16166: bool is_fd_close_on_exec = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: unsigned int stats_dump_period_sec = 600; +16166: +16166: +16166: +16166: unsigned int stats_persist_period_sec = 600; +16166: # 998 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool persist_stats_to_disk = false; +16166: +16166: +16166: +16166: +16166: size_t stats_history_buffer_size = 1024 * 1024; +16166: +16166: +16166: +16166: +16166: bool advise_random_on_open = true; +16166: # 1020 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: size_t db_write_buffer_size = 0; +16166: # 1037 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr write_buffer_manager = nullptr; +16166: # 1046 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: size_t compaction_readahead_size = 2 * 1024 * 1024; +16166: # 1063 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: size_t random_access_max_buffer_size = 1024 * 1024; +16166: # 1074 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: size_t writable_file_max_buffer_size = 1024 * 1024; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool use_adaptive_mutex = false; +16166: +16166: +16166: DBOptions(); +16166: +16166: explicit DBOptions(const Options& options); +16166: +16166: void Dump(Logger* log) const; +16166: # 1106 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t bytes_per_sync = 0; +16166: # 1116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t wal_bytes_per_sync = 0; +16166: # 1137 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool strict_bytes_per_sync = false; +16166: +16166: +16166: +16166: std::vector> listeners; +16166: +16166: +16166: +16166: +16166: +16166: bool enable_thread_tracking = false; +16166: # 1165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t delayed_write_rate = 0; +16166: # 1180 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool enable_pipelined_write = false; +16166: # 1206 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool unordered_write = false; +16166: # 1216 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool allow_concurrent_memtable_write = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool enable_write_thread_adaptive_yield = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t max_write_batch_group_size_bytes = 1 << 20; +16166: # 1240 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t write_thread_max_yield_usec = 100; +16166: # 1250 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t write_thread_slow_yield_usec = 3; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool skip_stats_update_on_db_open = false; +16166: # 1268 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool skip_checking_sst_file_sizes_on_db_open = false; +16166: +16166: +16166: +16166: WALRecoveryMode wal_recovery_mode = WALRecoveryMode::kPointInTimeRecovery; +16166: +16166: +16166: +16166: bool allow_2pc = false; +16166: +16166: +16166: +16166: +16166: +16166: std::shared_ptr row_cache = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: +16166: WalFilter* wal_filter = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool fail_if_options_file_error = true; +16166: +16166: +16166: +16166: +16166: bool dump_malloc_stats = false; +16166: # 1311 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool avoid_flush_during_recovery = false; +16166: # 1320 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool avoid_flush_during_shutdown = false; +16166: # 1335 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool allow_ingest_behind = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool two_write_queues = false; +16166: +16166: +16166: +16166: +16166: bool manual_wal_flush = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: CompressionType wal_compression = kNoCompression; +16166: # 1363 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool background_close_inactive_wals = false; +16166: # 1377 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool atomic_flush = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool avoid_unnecessary_blocking_io = false; +16166: # 1397 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool write_dbid_to_manifest = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool write_identity_file = true; +16166: # 1415 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool prefix_seek_opt_in_only = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t log_readahead_size = 0; +16166: # 1431 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr file_checksum_gen_factory = nullptr; +16166: # 1480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool best_efforts_recovery = false; +16166: # 1490 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: int max_bgerror_resume_count = 0x7fffffff +16166: # 1490 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t bgerror_resume_retry_interval = 1000000; +16166: # 1506 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool allow_data_in_errors = false; +16166: # 1519 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::string db_host_id = kHostnameForDbHostId; +16166: # 1529 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: FileTypeSet checksum_handoff_file_types; +16166: # 1538 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::shared_ptr compaction_service = nullptr; +16166: # 1550 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: CacheTier lowest_used_cache_tier = CacheTier::kNonVolatileBlockTier; +16166: # 1565 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool enforce_single_del_contracts = true; +16166: # 1582 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::string daily_offpeak_time_utc = ""; +16166: # 1592 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: uint64_t follower_refresh_catchup_period_ms = 10000; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t follower_catchup_retry_count = 10; +16166: +16166: +16166: +16166: uint64_t follower_catchup_retry_wait_ms = 100; +16166: +16166: +16166: +16166: +16166: +16166: Temperature metadata_write_temperature = Temperature::kUnknown; +16166: +16166: +16166: +16166: +16166: Temperature wal_write_temperature = Temperature::kUnknown; +16166: +16166: }; +16166: +16166: +16166: struct Options : public DBOptions, public ColumnFamilyOptions { +16166: +16166: Options() : DBOptions(), ColumnFamilyOptions() {} +16166: +16166: Options(const DBOptions& db_options, +16166: const ColumnFamilyOptions& column_family_options) +16166: : DBOptions(db_options), ColumnFamilyOptions(column_family_options) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: Options* OldDefaults(int rocksdb_major_version = 4, +16166: int rocksdb_minor_version = 6); +16166: +16166: void Dump(Logger* log) const; +16166: +16166: void DumpCFOptions(Logger* log) const; +16166: # 1650 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: Options* PrepareForBulkLoad(); +16166: +16166: +16166: +16166: Options* OptimizeForSmallDb(); +16166: +16166: +16166: +16166: +16166: +16166: Options* DisableExtraChecks(); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum ReadTier { +16166: kReadAllTier = 0x0, +16166: kBlockCacheTier = 0x1, +16166: kPersistedTier = 0x2, +16166: +16166: +16166: +16166: kMemtableTier = 0x3 +16166: }; +16166: +16166: +16166: struct ReadOptions { +16166: +16166: +16166: +16166: +16166: +16166: +16166: const Snapshot* snapshot = nullptr; +16166: # 1699 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: const Slice* timestamp = nullptr; +16166: const Slice* iter_start_ts = nullptr; +16166: # 1711 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: std::chrono::microseconds deadline = std::chrono::microseconds::zero(); +16166: +16166: +16166: +16166: +16166: +16166: std::chrono::microseconds io_timeout = std::chrono::microseconds::zero(); +16166: +16166: +16166: +16166: +16166: ReadTier read_tier = kReadAllTier; +16166: # 1736 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: Env::IOPriority rate_limiter_priority = Env::IO_TOTAL; +16166: +16166: +16166: +16166: +16166: uint64_t value_size_soft_limit = std::numeric_limits::max(); +16166: +16166: +16166: +16166: +16166: +16166: std::optional merge_operand_count_threshold; +16166: +16166: +16166: +16166: bool verify_checksums = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool fill_cache = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool ignore_range_deletions = false; +16166: +16166: +16166: +16166: +16166: bool async_io = false; +16166: # 1779 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool optimize_multiget_for_io = true; +16166: # 1792 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: size_t readahead_size = 0; +16166: +16166: +16166: +16166: +16166: uint64_t max_skippable_internal_keys = 0; +16166: # 1810 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: const Slice* iterate_lower_bound = nullptr; +16166: # 1830 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: const Slice* iterate_upper_bound = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: bool tailing = false; +16166: +16166: +16166: +16166: bool managed = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool total_order_seek = false; +16166: # 1863 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool auto_prefix_mode = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool prefix_same_as_start = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool pin_data = false; +16166: # 1888 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool adaptive_readahead = false; +16166: +16166: +16166: +16166: +16166: bool background_purge_on_iterator_cleanup = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::function table_filter; +16166: # 1928 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool auto_readahead_size = true; +16166: # 1941 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool allow_unprepared_value = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: Env::IOActivity io_activity = Env::IOActivity::kUnknown; +16166: +16166: +16166: +16166: ReadOptions() {} +16166: ReadOptions(bool _verify_checksums, bool _fill_cache); +16166: explicit ReadOptions(Env::IOActivity _io_activity); +16166: }; +16166: +16166: +16166: struct WriteOptions { +16166: # 1975 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool sync = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool disableWAL = false; +16166: +16166: +16166: +16166: +16166: +16166: bool ignore_missing_column_families = false; +16166: +16166: +16166: +16166: +16166: bool no_slowdown = false; +16166: # 2003 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool low_pri = false; +16166: # 2012 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool memtable_insert_hint_per_batch = false; +16166: # 2027 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: Env::IOPriority rate_limiter_priority = Env::IO_TOTAL; +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t protection_bytes_per_key = 0; +16166: +16166: +16166: +16166: +16166: Env::IOActivity io_activity = Env::IOActivity::kUnknown; +16166: +16166: WriteOptions() {} +16166: explicit WriteOptions(Env::IOActivity _io_activity); +16166: explicit WriteOptions( +16166: Env::IOPriority _rate_limiter_priority, +16166: Env::IOActivity _io_activity = Env::IOActivity::kUnknown); +16166: }; +16166: +16166: +16166: struct FlushOptions { +16166: +16166: +16166: bool wait; +16166: +16166: +16166: +16166: +16166: +16166: bool allow_write_stall; +16166: +16166: FlushOptions() : wait(true), allow_write_stall(false) {} +16166: }; +16166: +16166: +16166: Status CreateLoggerFromOptions(const std::string& dbname, +16166: const DBOptions& options, +16166: std::shared_ptr* logger); +16166: +16166: +16166: struct CompactionOptions { +16166: # 2082 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: CompressionType compression; +16166: +16166: +16166: +16166: uint64_t output_file_size_limit; +16166: +16166: +16166: uint32_t max_subcompactions; +16166: +16166: CompactionOptions() +16166: : compression(kDisableCompressionOption), +16166: output_file_size_limit(std::numeric_limits::max()), +16166: max_subcompactions(0) {} +16166: }; +16166: +16166: +16166: +16166: enum class BottommostLevelCompaction { +16166: +16166: kSkip, +16166: +16166: +16166: +16166: +16166: +16166: kIfHaveCompactionFilter, +16166: +16166: kForce, +16166: +16166: +16166: kForceOptimized, +16166: }; +16166: +16166: +16166: +16166: enum class BlobGarbageCollectionPolicy { +16166: +16166: kForce, +16166: +16166: kDisable, +16166: +16166: kUseDefault, +16166: }; +16166: +16166: +16166: struct CompactRangeOptions { +16166: +16166: +16166: +16166: +16166: bool exclusive_manual_compaction = false; +16166: +16166: +16166: +16166: bool change_level = false; +16166: +16166: +16166: int target_level = -1; +16166: +16166: +16166: uint32_t target_path_id = 0; +16166: +16166: +16166: BottommostLevelCompaction bottommost_level_compaction = +16166: BottommostLevelCompaction::kIfHaveCompactionFilter; +16166: +16166: +16166: bool allow_write_stall = false; +16166: +16166: uint32_t max_subcompactions = 0; +16166: +16166: +16166: const Slice* full_history_ts_low = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: std::atomic* canceled = nullptr; +16166: # 2173 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: BlobGarbageCollectionPolicy blob_garbage_collection_policy = +16166: BlobGarbageCollectionPolicy::kUseDefault; +16166: +16166: +16166: +16166: +16166: +16166: double blob_garbage_collection_age_cutoff = -1; +16166: }; +16166: +16166: +16166: struct IngestExternalFileOptions { +16166: +16166: +16166: +16166: +16166: +16166: bool move_files = false; +16166: +16166: +16166: bool link_files = false; +16166: +16166: +16166: bool failed_move_fall_back_to_copy = true; +16166: +16166: +16166: bool snapshot_consistency = true; +16166: +16166: +16166: +16166: +16166: bool allow_global_seqno = true; +16166: +16166: +16166: bool allow_blocking_flush = true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool ingest_behind = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool write_global_seqno = false; +16166: +16166: +16166: +16166: +16166: bool verify_checksums_before_ingest = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t verify_checksums_readahead_size = 0; +16166: # 2255 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool verify_file_checksum = true; +16166: # 2265 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool fail_if_not_bottommost_level = false; +16166: # 2278 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: bool allow_db_generated_files = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool fill_cache = true; +16166: }; +16166: +16166: enum TraceFilterType : uint64_t { +16166: +16166: kTraceFilterNone = 0x0, +16166: +16166: kTraceFilterGet = 0x1 << 0, +16166: +16166: kTraceFilterWrite = 0x1 << 1, +16166: +16166: kTraceFilterIteratorSeek = 0x1 << 2, +16166: +16166: kTraceFilterIteratorSeekForPrev = 0x1 << 3, +16166: +16166: kTraceFilterMultiGet = 0x1 << 4, +16166: }; +16166: +16166: +16166: struct TraceOptions { +16166: +16166: +16166: uint64_t max_trace_file_size = uint64_t{64} * 1024 * 1024 * 1024; +16166: +16166: +16166: uint64_t sampling_frequency = 1; +16166: +16166: uint64_t filter = kTraceFilterNone; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool preserve_write_order = false; +16166: }; +16166: +16166: +16166: struct ImportColumnFamilyOptions { +16166: +16166: bool move_files = false; +16166: }; +16166: +16166: +16166: struct SizeApproximationOptions { +16166: +16166: +16166: bool include_memtables = false; +16166: +16166: +16166: bool include_files = true; +16166: # 2346 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h" +16166: double files_size_error_margin = -1.0; +16166: }; +16166: +16166: struct CompactionServiceOptionsOverride { +16166: Env* env = Env::Default(); +16166: std::shared_ptr file_checksum_gen_factory = nullptr; +16166: +16166: const Comparator* comparator = BytewiseComparator(); +16166: std::shared_ptr merge_operator = nullptr; +16166: const CompactionFilter* compaction_filter = nullptr; +16166: std::shared_ptr compaction_filter_factory = nullptr; +16166: std::shared_ptr prefix_extractor = nullptr; +16166: std::shared_ptr table_factory; +16166: std::shared_ptr sst_partitioner_factory = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::vector> listeners; +16166: +16166: +16166: +16166: +16166: std::shared_ptr statistics = nullptr; +16166: +16166: +16166: +16166: std::vector> +16166: table_properties_collector_factories; +16166: }; +16166: +16166: struct OpenAndCompactOptions { +16166: +16166: std::atomic* canceled = nullptr; +16166: }; +16166: +16166: struct LiveFilesStorageInfoOptions { +16166: +16166: bool include_checksum_info = false; +16166: +16166: +16166: +16166: uint64_t wal_size_for_flush = 0; +16166: }; +16166: +16166: struct WaitForCompactOptions { +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool abort_on_pause = false; +16166: +16166: +16166: bool flush = false; +16166: +16166: +16166: bool wait_for_purge = false; +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool close_db = false; +16166: +16166: +16166: +16166: +16166: +16166: std::chrono::microseconds timeout = std::chrono::microseconds::zero(); +16166: }; +16166: +16166: } +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_reader_caller.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: enum TableReaderCaller : char { +16166: kUserGet = 1, +16166: kUserMultiGet = 2, +16166: kUserIterator = 3, +16166: kUserApproximateSize = 4, +16166: kUserVerifyChecksum = 5, +16166: kSSTDumpTool = 6, +16166: kExternalSSTIngestion = 7, +16166: kRepair = 8, +16166: kPrefetch = 9, +16166: kCompaction = 10, +16166: +16166: +16166: kCompactionRefill = 11, +16166: +16166: +16166: kFlush = 12, +16166: +16166: kSSTFileReader = 13, +16166: +16166: +16166: kUncategorized = 14, +16166: +16166: kMaxBlockCacheLookupCaller +16166: }; +16166: } +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_reader_writer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_reader_writer.h" +16166: class TraceWriter { +16166: public: +16166: virtual ~TraceWriter() = default; +16166: +16166: virtual Status Write(const Slice& data) = 0; +16166: virtual Status Close() = 0; +16166: virtual uint64_t GetFileSize() = 0; +16166: }; +16166: +16166: +16166: +16166: class TraceReader { +16166: public: +16166: virtual ~TraceReader() = default; +16166: +16166: virtual Status Read(std::string* data) = 0; +16166: virtual Status Close() = 0; +16166: +16166: +16166: +16166: virtual Status Reset() = 0; +16166: }; +16166: +16166: +16166: +16166: Status NewFileTraceWriter(Env* env, const EnvOptions& env_options, +16166: const std::string& trace_filename, +16166: std::unique_ptr* trace_writer); +16166: Status NewFileTraceReader(Env* env, const EnvOptions& env_options, +16166: const std::string& trace_filename, +16166: std::unique_ptr* trace_reader); +16166: +16166: } +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_record.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/trace_record.h" +16166: namespace rocksdb { +16166: +16166: class ColumnFamilyHandle; +16166: class DB; +16166: +16166: +16166: enum TraceType : char { +16166: kTraceNone = 0, +16166: kTraceBegin = 1, +16166: kTraceEnd = 2, +16166: +16166: kTraceWrite = 3, +16166: kTraceGet = 4, +16166: kTraceIteratorSeek = 5, +16166: kTraceIteratorSeekForPrev = 6, +16166: +16166: kBlockTraceIndexBlock = 7, +16166: +16166: kBlockTraceFilterBlock = 8, +16166: kBlockTraceDataBlock = 9, +16166: kBlockTraceUncompressionDictBlock = 10, +16166: kBlockTraceRangeDeletionBlock = 11, +16166: +16166: kIOTracer = 12, +16166: +16166: kTraceMultiGet = 13, +16166: +16166: kTraceMax, +16166: }; +16166: +16166: class GetQueryTraceRecord; +16166: class IteratorSeekQueryTraceRecord; +16166: class MultiGetQueryTraceRecord; +16166: class TraceRecordResult; +16166: class WriteQueryTraceRecord; +16166: +16166: +16166: class TraceRecord { +16166: public: +16166: explicit TraceRecord(uint64_t timestamp); +16166: +16166: virtual ~TraceRecord() = default; +16166: +16166: +16166: virtual TraceType GetTraceType() const = 0; +16166: +16166: +16166: virtual uint64_t GetTimestamp() const; +16166: +16166: class Handler { +16166: public: +16166: virtual ~Handler() = default; +16166: +16166: virtual Status Handle(const WriteQueryTraceRecord& record, +16166: std::unique_ptr* result) = 0; +16166: +16166: virtual Status Handle(const GetQueryTraceRecord& record, +16166: std::unique_ptr* result) = 0; +16166: +16166: virtual Status Handle(const IteratorSeekQueryTraceRecord& record, +16166: std::unique_ptr* result) = 0; +16166: +16166: virtual Status Handle(const MultiGetQueryTraceRecord& record, +16166: std::unique_ptr* result) = 0; +16166: }; +16166: +16166: +16166: virtual Status Accept(Handler* handler, +16166: std::unique_ptr* result) = 0; +16166: +16166: +16166: static Handler* NewExecutionHandler( +16166: DB* db, const std::vector& handles); +16166: +16166: private: +16166: uint64_t timestamp_; +16166: }; +16166: +16166: +16166: class QueryTraceRecord : public TraceRecord { +16166: public: +16166: explicit QueryTraceRecord(uint64_t timestamp); +16166: }; +16166: +16166: +16166: class WriteQueryTraceRecord : public QueryTraceRecord { +16166: public: +16166: WriteQueryTraceRecord(PinnableSlice&& write_batch_rep, uint64_t timestamp); +16166: +16166: WriteQueryTraceRecord(const std::string& write_batch_rep, uint64_t timestamp); +16166: +16166: ~WriteQueryTraceRecord() override; +16166: +16166: TraceType GetTraceType() const override { return kTraceWrite; } +16166: +16166: +16166: virtual Slice GetWriteBatchRep() const; +16166: +16166: Status Accept(Handler* handler, +16166: std::unique_ptr* result) override; +16166: +16166: private: +16166: PinnableSlice rep_; +16166: }; +16166: +16166: +16166: class GetQueryTraceRecord : public QueryTraceRecord { +16166: public: +16166: GetQueryTraceRecord(uint32_t column_family_id, PinnableSlice&& key, +16166: uint64_t timestamp); +16166: +16166: GetQueryTraceRecord(uint32_t column_family_id, const std::string& key, +16166: uint64_t timestamp); +16166: +16166: ~GetQueryTraceRecord() override; +16166: +16166: TraceType GetTraceType() const override { return kTraceGet; } +16166: +16166: +16166: virtual uint32_t GetColumnFamilyID() const; +16166: +16166: +16166: virtual Slice GetKey() const; +16166: +16166: Status Accept(Handler* handler, +16166: std::unique_ptr* result) override; +16166: +16166: private: +16166: uint32_t cf_id_; +16166: PinnableSlice key_; +16166: }; +16166: +16166: +16166: class IteratorQueryTraceRecord : public QueryTraceRecord { +16166: public: +16166: explicit IteratorQueryTraceRecord(uint64_t timestamp); +16166: +16166: IteratorQueryTraceRecord(PinnableSlice&& lower_bound, +16166: PinnableSlice&& upper_bound, uint64_t timestamp); +16166: +16166: IteratorQueryTraceRecord(const std::string& lower_bound, +16166: const std::string& upper_bound, uint64_t timestamp); +16166: +16166: ~IteratorQueryTraceRecord() override; +16166: +16166: +16166: +16166: virtual Slice GetLowerBound() const; +16166: virtual Slice GetUpperBound() const; +16166: +16166: private: +16166: PinnableSlice lower_; +16166: PinnableSlice upper_; +16166: }; +16166: +16166: +16166: class IteratorSeekQueryTraceRecord : public IteratorQueryTraceRecord { +16166: public: +16166: +16166: enum SeekType { +16166: kSeek = kTraceIteratorSeek, +16166: kSeekForPrev = kTraceIteratorSeekForPrev +16166: }; +16166: +16166: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +16166: PinnableSlice&& key, uint64_t timestamp); +16166: +16166: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +16166: const std::string& key, uint64_t timestamp); +16166: +16166: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +16166: PinnableSlice&& key, PinnableSlice&& lower_bound, +16166: PinnableSlice&& upper_bound, uint64_t timestamp); +16166: +16166: IteratorSeekQueryTraceRecord(SeekType seekType, uint32_t column_family_id, +16166: const std::string& key, +16166: const std::string& lower_bound, +16166: const std::string& upper_bound, +16166: uint64_t timestamp); +16166: +16166: ~IteratorSeekQueryTraceRecord() override; +16166: +16166: +16166: TraceType GetTraceType() const override; +16166: +16166: +16166: virtual SeekType GetSeekType() const; +16166: +16166: +16166: virtual uint32_t GetColumnFamilyID() const; +16166: +16166: +16166: virtual Slice GetKey() const; +16166: +16166: Status Accept(Handler* handler, +16166: std::unique_ptr* result) override; +16166: +16166: private: +16166: SeekType type_; +16166: uint32_t cf_id_; +16166: PinnableSlice key_; +16166: }; +16166: +16166: +16166: class MultiGetQueryTraceRecord : public QueryTraceRecord { +16166: public: +16166: MultiGetQueryTraceRecord(std::vector column_family_ids, +16166: std::vector&& keys, +16166: uint64_t timestamp); +16166: +16166: MultiGetQueryTraceRecord(std::vector column_family_ids, +16166: const std::vector& keys, +16166: uint64_t timestamp); +16166: +16166: ~MultiGetQueryTraceRecord() override; +16166: +16166: TraceType GetTraceType() const override { return kTraceMultiGet; } +16166: +16166: +16166: virtual std::vector GetColumnFamilyIDs() const; +16166: +16166: +16166: virtual std::vector GetKeys() const; +16166: +16166: Status Accept(Handler* handler, +16166: std::unique_ptr* result) override; +16166: +16166: private: +16166: std::vector cf_ids_; +16166: std::vector keys_; +16166: }; +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/block_cache_trace_writer.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: struct BlockCacheTraceRecord { +16166: +16166: uint64_t access_timestamp = 0; +16166: +16166: +16166: +16166: +16166: std::string block_key; +16166: +16166: +16166: TraceType block_type = TraceType::kTraceMax; +16166: +16166: +16166: uint64_t block_size = 0; +16166: +16166: +16166: +16166: +16166: uint64_t cf_id = 0; +16166: +16166: +16166: std::string cf_name; +16166: +16166: +16166: uint32_t level = 0; +16166: +16166: +16166: uint64_t sst_fd_number = 0; +16166: +16166: +16166: +16166: +16166: TableReaderCaller caller = TableReaderCaller::kMaxBlockCacheLookupCaller; +16166: +16166: +16166: bool is_cache_hit = false; +16166: +16166: +16166: bool no_insert = false; +16166: +16166: +16166: +16166: +16166: uint64_t get_id = kReservedGetId; +16166: +16166: +16166: bool get_from_user_specified_snapshot = false; +16166: +16166: +16166: std::string referenced_key; +16166: +16166: +16166: +16166: +16166: uint64_t referenced_data_size = 0; +16166: +16166: +16166: uint64_t num_keys_in_block = 0; +16166: +16166: +16166: bool referenced_key_exist_in_block = false; +16166: +16166: static const uint64_t kReservedGetId; +16166: +16166: BlockCacheTraceRecord() {} +16166: +16166: BlockCacheTraceRecord(uint64_t _access_timestamp, std::string _block_key, +16166: TraceType _block_type, uint64_t _block_size, +16166: uint64_t _cf_id, std::string _cf_name, uint32_t _level, +16166: uint64_t _sst_fd_number, TableReaderCaller _caller, +16166: bool _is_cache_hit, bool _no_insert, uint64_t _get_id, +16166: bool _get_from_user_specified_snapshot = false, +16166: std::string _referenced_key = "", +16166: uint64_t _referenced_data_size = 0, +16166: uint64_t _num_keys_in_block = 0, +16166: bool _referenced_key_exist_in_block = false) +16166: : access_timestamp(_access_timestamp), +16166: block_key(_block_key), +16166: block_type(_block_type), +16166: block_size(_block_size), +16166: cf_id(_cf_id), +16166: cf_name(_cf_name), +16166: level(_level), +16166: sst_fd_number(_sst_fd_number), +16166: caller(_caller), +16166: is_cache_hit(_is_cache_hit), +16166: no_insert(_no_insert), +16166: get_id(_get_id), +16166: get_from_user_specified_snapshot(_get_from_user_specified_snapshot), +16166: referenced_key(_referenced_key), +16166: referenced_data_size(_referenced_data_size), +16166: num_keys_in_block(_num_keys_in_block), +16166: referenced_key_exist_in_block(_referenced_key_exist_in_block) {} +16166: }; +16166: +16166: +16166: struct BlockCacheTraceOptions { +16166: +16166: +16166: uint64_t sampling_frequency = 1; +16166: }; +16166: +16166: +16166: struct BlockCacheTraceWriterOptions { +16166: uint64_t max_trace_file_size = uint64_t{64} * 1024 * 1024 * 1024; +16166: }; +16166: +16166: +16166: +16166: +16166: class BlockCacheTraceWriter { +16166: public: +16166: virtual ~BlockCacheTraceWriter() {} +16166: +16166: +16166: virtual Status WriteBlockAccess(const BlockCacheTraceRecord& record, +16166: const Slice& block_key, const Slice& cf_name, +16166: const Slice& referenced_key) = 0; +16166: +16166: +16166: +16166: virtual Status WriteHeader() = 0; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: std::unique_ptr NewBlockCacheTraceWriter( +16166: SystemClock* clock, const BlockCacheTraceWriterOptions& trace_options, +16166: std::unique_ptr&& trace_writer); +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 1 +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Iterator : public IteratorBase { +16166: public: +16166: Iterator() {} +16166: +16166: Iterator(const Iterator&) = delete; +16166: void operator=(const Iterator&) = delete; +16166: +16166: virtual ~Iterator() override {} +16166: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: virtual Slice value() const = 0; +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: virtual const WideColumns& columns() const { +16166: +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +16166: (static_cast ( +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: false +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: "false" +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: ; +16166: return kNoWideColumns; +16166: } +16166: # 90 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: virtual Status GetProperty(std::string prop_name, std::string* prop); +16166: +16166: virtual Slice timestamp() const { +16166: +16166: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +16166: (static_cast ( +16166: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: false +16166: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: "false" +16166: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 93 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/iterator.h" +16166: ; +16166: return Slice(); +16166: } +16166: }; +16166: +16166: +16166: Iterator* NewEmptyIterator(); +16166: +16166: +16166: Iterator* NewErrorIterator(const Status& status); +16166: +16166: } +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct FileStorageInfo { +16166: +16166: std::string relative_filename; +16166: +16166: +16166: std::string directory; +16166: +16166: +16166: +16166: uint64_t file_number = 0; +16166: +16166: FileType file_type = kTempFile; +16166: +16166: +16166: uint64_t size = 0; +16166: +16166: +16166: Temperature temperature = Temperature::kUnknown; +16166: +16166: +16166: +16166: +16166: +16166: std::string file_checksum; +16166: +16166: +16166: +16166: +16166: +16166: std::string file_checksum_func_name; +16166: }; +16166: +16166: +16166: +16166: struct LiveFileStorageInfo : public FileStorageInfo { +16166: +16166: +16166: +16166: +16166: +16166: std::string replacement_contents; +16166: +16166: +16166: +16166: +16166: bool trim_to_size = false; +16166: }; +16166: +16166: +16166: +16166: struct SstFileMetaData : public FileStorageInfo { +16166: SstFileMetaData() { file_type = kTableFile; } +16166: +16166: SstFileMetaData(const std::string& _file_name, uint64_t _file_number, +16166: const std::string& _directory, uint64_t _size, +16166: SequenceNumber _smallest_seqno, SequenceNumber _largest_seqno, +16166: const std::string& _smallestkey, +16166: const std::string& _largestkey, uint64_t _num_reads_sampled, +16166: bool _being_compacted, Temperature _temperature, +16166: uint64_t _oldest_blob_file_number, +16166: uint64_t _oldest_ancester_time, uint64_t _file_creation_time, +16166: uint64_t _epoch_number, std::string& _file_checksum, +16166: std::string& _file_checksum_func_name) +16166: : smallest_seqno(_smallest_seqno), +16166: largest_seqno(_largest_seqno), +16166: smallestkey(_smallestkey), +16166: largestkey(_largestkey), +16166: num_reads_sampled(_num_reads_sampled), +16166: being_compacted(_being_compacted), +16166: num_entries(0), +16166: num_deletions(0), +16166: oldest_blob_file_number(_oldest_blob_file_number), +16166: oldest_ancester_time(_oldest_ancester_time), +16166: file_creation_time(_file_creation_time), +16166: epoch_number(_epoch_number) { +16166: if (!_file_name.empty()) { +16166: if (_file_name[0] == '/') { +16166: relative_filename = _file_name.substr(1); +16166: name = _file_name; +16166: } else { +16166: relative_filename = _file_name; +16166: name = std::string("/") + _file_name; +16166: } +16166: +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: (static_cast ( +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: relative_filename.size() + 1 == name.size() +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: "relative_filename.size() + 1 == name.size()" +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: ; +16166: +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: (static_cast ( +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: relative_filename[0] != '/' +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: "relative_filename[0] != '/'" +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 108 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: ; +16166: +16166: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: (static_cast ( +16166: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: name[0] == '/' +16166: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: "name[0] == '/'" +16166: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 109 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: ; +16166: } +16166: directory = _directory; +16166: db_path = _directory; +16166: file_number = _file_number; +16166: file_type = kTableFile; +16166: size = _size; +16166: temperature = _temperature; +16166: file_checksum = _file_checksum; +16166: file_checksum_func_name = _file_checksum_func_name; +16166: } +16166: +16166: SequenceNumber smallest_seqno = 0; +16166: SequenceNumber largest_seqno = 0; +16166: std::string smallestkey; +16166: std::string largestkey; +16166: uint64_t num_reads_sampled = 0; +16166: bool being_compacted = +16166: false; +16166: +16166: uint64_t num_entries = 0; +16166: uint64_t num_deletions = 0; +16166: +16166: uint64_t oldest_blob_file_number = 0; +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/metadata.h" +16166: uint64_t oldest_ancester_time = 0; +16166: +16166: +16166: uint64_t file_creation_time = 0; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t epoch_number = 0; +16166: +16166: +16166: +16166: +16166: std::string smallest{}; +16166: std::string largest{}; +16166: +16166: +16166: +16166: +16166: std::string name; +16166: +16166: +16166: std::string db_path; +16166: }; +16166: +16166: +16166: struct LiveFileMetaData : SstFileMetaData { +16166: std::string column_family_name; +16166: int level; +16166: LiveFileMetaData() : column_family_name(), level(0) {} +16166: }; +16166: +16166: +16166: struct BlobMetaData { +16166: BlobMetaData() +16166: : blob_file_number(0), +16166: blob_file_size(0), +16166: total_blob_count(0), +16166: total_blob_bytes(0), +16166: garbage_blob_count(0), +16166: garbage_blob_bytes(0) {} +16166: +16166: BlobMetaData(uint64_t _file_number, const std::string& _file_name, +16166: const std::string& _file_path, uint64_t _file_size, +16166: uint64_t _total_blob_count, uint64_t _total_blob_bytes, +16166: uint64_t _garbage_blob_count, uint64_t _garbage_blob_bytes, +16166: const std::string& _file_checksum, +16166: const std::string& _file_checksum_func_name) +16166: : blob_file_number(_file_number), +16166: blob_file_name(_file_name), +16166: blob_file_path(_file_path), +16166: blob_file_size(_file_size), +16166: total_blob_count(_total_blob_count), +16166: total_blob_bytes(_total_blob_bytes), +16166: garbage_blob_count(_garbage_blob_count), +16166: garbage_blob_bytes(_garbage_blob_bytes), +16166: checksum_method(_file_checksum), +16166: checksum_value(_file_checksum_func_name) {} +16166: uint64_t blob_file_number; +16166: std::string blob_file_name; +16166: std::string blob_file_path; +16166: uint64_t blob_file_size; +16166: uint64_t total_blob_count; +16166: uint64_t total_blob_bytes; +16166: uint64_t garbage_blob_count; +16166: uint64_t garbage_blob_bytes; +16166: std::string checksum_method; +16166: std::string checksum_value; +16166: }; +16166: +16166: +16166: struct LevelMetaData { +16166: LevelMetaData(int _level, uint64_t _size, +16166: const std::vector&& _files) +16166: : level(_level), size(_size), files(_files) {} +16166: +16166: +16166: const int level; +16166: +16166: +16166: const uint64_t size; +16166: +16166: const std::vector files; +16166: }; +16166: +16166: +16166: struct ColumnFamilyMetaData { +16166: ColumnFamilyMetaData() : size(0), file_count(0), name("") {} +16166: ColumnFamilyMetaData(const std::string& _name, uint64_t _size, +16166: const std::vector&& _levels) +16166: : size(_size), name(_name), levels(_levels) {} +16166: +16166: +16166: +16166: uint64_t size; +16166: +16166: size_t file_count; +16166: +16166: std::string name; +16166: +16166: std::vector levels; +16166: +16166: +16166: uint64_t blob_file_size = 0; +16166: +16166: size_t blob_file_count = 0; +16166: +16166: std::vector blob_files; +16166: }; +16166: +16166: +16166: +16166: struct ExportImportFilesMetaData { +16166: std::string db_comparator_name; +16166: std::vector files; +16166: }; +16166: } +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/snapshot.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class DB; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class Snapshot { +16166: public: +16166: virtual SequenceNumber GetSequenceNumber() const = 0; +16166: +16166: +16166: +16166: virtual int64_t GetUnixTime() const = 0; +16166: +16166: virtual uint64_t GetTimestamp() const = 0; +16166: +16166: protected: +16166: virtual ~Snapshot(); +16166: }; +16166: +16166: +16166: +16166: +16166: class ManagedSnapshot { +16166: public: +16166: explicit ManagedSnapshot(DB* db); +16166: +16166: +16166: ManagedSnapshot(DB* db, const Snapshot* _snapshot); +16166: +16166: ~ManagedSnapshot(); +16166: +16166: const Snapshot* snapshot(); +16166: +16166: private: +16166: DB* db_; +16166: const Snapshot* snapshot_; +16166: }; +16166: +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +16166: namespace rocksdb { +16166: +16166: class Comparator; +16166: +16166: +16166: +16166: struct ExternalSstFileInfo { +16166: ExternalSstFileInfo() +16166: : file_path(""), +16166: smallest_key(""), +16166: largest_key(""), +16166: smallest_range_del_key(""), +16166: largest_range_del_key(""), +16166: file_checksum(""), +16166: file_checksum_func_name(""), +16166: sequence_number(0), +16166: file_size(0), +16166: num_entries(0), +16166: num_range_del_entries(0), +16166: version(0) {} +16166: +16166: ExternalSstFileInfo(const std::string& _file_path, +16166: const std::string& _smallest_key, +16166: const std::string& _largest_key, +16166: SequenceNumber _sequence_number, uint64_t _file_size, +16166: uint64_t _num_entries, int32_t _version) +16166: : file_path(_file_path), +16166: smallest_key(_smallest_key), +16166: largest_key(_largest_key), +16166: smallest_range_del_key(""), +16166: largest_range_del_key(""), +16166: file_checksum(""), +16166: file_checksum_func_name(""), +16166: sequence_number(_sequence_number), +16166: file_size(_file_size), +16166: num_entries(_num_entries), +16166: num_range_del_entries(0), +16166: version(_version) {} +16166: +16166: std::string file_path; +16166: std::string smallest_key; +16166: std::string largest_key; +16166: std::string +16166: smallest_range_del_key; +16166: std::string largest_range_del_key; +16166: std::string file_checksum; +16166: std::string file_checksum_func_name; +16166: SequenceNumber sequence_number; +16166: uint64_t file_size; +16166: uint64_t num_entries; +16166: uint64_t num_range_del_entries; +16166: int32_t version; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: class SstFileWriter { +16166: public: +16166: # 95 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +16166: SstFileWriter(const EnvOptions& env_options, const Options& options, +16166: ColumnFamilyHandle* column_family = nullptr, +16166: bool invalidate_page_cache = true, +16166: Env::IOPriority io_priority = Env::IOPriority::IO_TOTAL, +16166: bool skip_filters = false) +16166: : SstFileWriter(env_options, options, options.comparator, column_family, +16166: invalidate_page_cache, io_priority, skip_filters) {} +16166: +16166: +16166: SstFileWriter(const EnvOptions& env_options, const Options& options, +16166: const Comparator* user_comparator, +16166: ColumnFamilyHandle* column_family = nullptr, +16166: bool invalidate_page_cache = true, +16166: Env::IOPriority io_priority = Env::IOPriority::IO_TOTAL, +16166: bool skip_filters = false); +16166: +16166: ~SstFileWriter(); +16166: +16166: +16166: Status Open(const std::string& file_path, +16166: Temperature temp = Temperature::kUnknown); +16166: +16166: +16166: +16166: +16166: +16166: __attribute__((__deprecated__)) Status Add(const Slice& user_key, const Slice& value); +16166: +16166: +16166: +16166: +16166: +16166: Status Put(const Slice& user_key, const Slice& value); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status Put(const Slice& user_key, const Slice& timestamp, const Slice& value); +16166: +16166: +16166: +16166: Status PutEntity(const Slice& user_key, const WideColumns& columns); +16166: +16166: +16166: +16166: +16166: +16166: Status Merge(const Slice& user_key, const Slice& value); +16166: +16166: +16166: +16166: +16166: +16166: Status Delete(const Slice& user_key); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status Delete(const Slice& user_key, const Slice& timestamp); +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +16166: Status DeleteRange(const Slice& begin_key, const Slice& end_key); +16166: # 186 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/sst_file_writer.h" +16166: Status DeleteRange(const Slice& begin_key, const Slice& end_key, +16166: const Slice& timestamp); +16166: +16166: +16166: +16166: +16166: +16166: Status Finish(ExternalSstFileInfo* file_info = nullptr); +16166: +16166: +16166: uint64_t FileSize(); +16166: +16166: +16166: static bool CreatedBySstFileWriter(const TableProperties&); +16166: +16166: private: +16166: void InvalidatePageCache(bool closing); +16166: struct Rep; +16166: std::unique_ptr rep_; +16166: }; +16166: } +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/transaction_log.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" 1 +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +16166: +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: class Status; +16166: class ColumnFamilyHandle; +16166: class WriteBatch; +16166: struct SliceParts; +16166: +16166: +16166: +16166: +16166: class WriteBatchBase { +16166: public: +16166: virtual ~WriteBatchBase() {} +16166: +16166: +16166: virtual Status Put(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value) = 0; +16166: virtual Status Put(const Slice& key, const Slice& value) = 0; +16166: virtual Status Put(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts, const Slice& value) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status Put(ColumnFamilyHandle* column_family, const SliceParts& key, +16166: const SliceParts& value); +16166: virtual Status Put(const SliceParts& key, const SliceParts& value); +16166: # 58 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" +16166: virtual Status TimedPut(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value, uint64_t write_unix_time) = 0; +16166: +16166: +16166: +16166: virtual Status PutEntity(ColumnFamilyHandle* column_family, const Slice& key, +16166: const WideColumns& columns) = 0; +16166: +16166: +16166: +16166: virtual Status PutEntity(const Slice& key, +16166: const AttributeGroups& attribute_groups) = 0; +16166: +16166: +16166: +16166: virtual Status Merge(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value) = 0; +16166: virtual Status Merge(const Slice& key, const Slice& value) = 0; +16166: virtual Status Merge(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts, const Slice& value) = 0; +16166: +16166: +16166: virtual Status Merge(ColumnFamilyHandle* column_family, const SliceParts& key, +16166: const SliceParts& value); +16166: virtual Status Merge(const SliceParts& key, const SliceParts& value); +16166: +16166: +16166: virtual Status Delete(ColumnFamilyHandle* column_family, +16166: const Slice& key) = 0; +16166: virtual Status Delete(const Slice& key) = 0; +16166: virtual Status Delete(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts) = 0; +16166: +16166: +16166: virtual Status Delete(ColumnFamilyHandle* column_family, +16166: const SliceParts& key); +16166: virtual Status Delete(const SliceParts& key); +16166: +16166: +16166: +16166: virtual Status SingleDelete(ColumnFamilyHandle* column_family, +16166: const Slice& key) = 0; +16166: virtual Status SingleDelete(const Slice& key) = 0; +16166: virtual Status SingleDelete(ColumnFamilyHandle* column_family, +16166: const Slice& key, const Slice& ts) = 0; +16166: +16166: +16166: virtual Status SingleDelete(ColumnFamilyHandle* column_family, +16166: const SliceParts& key); +16166: virtual Status SingleDelete(const SliceParts& key); +16166: +16166: +16166: +16166: virtual Status DeleteRange(ColumnFamilyHandle* column_family, +16166: const Slice& begin_key, const Slice& end_key) = 0; +16166: virtual Status DeleteRange(const Slice& begin_key, const Slice& end_key) = 0; +16166: virtual Status DeleteRange(ColumnFamilyHandle* column_family, +16166: const Slice& begin_key, const Slice& end_key, +16166: const Slice& ts) = 0; +16166: +16166: +16166: virtual Status DeleteRange(ColumnFamilyHandle* column_family, +16166: const SliceParts& begin_key, +16166: const SliceParts& end_key); +16166: virtual Status DeleteRange(const SliceParts& begin_key, +16166: const SliceParts& end_key); +16166: # 135 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch_base.h" +16166: virtual Status PutLogData(const Slice& blob) = 0; +16166: +16166: +16166: virtual void Clear() = 0; +16166: +16166: +16166: +16166: +16166: virtual WriteBatch* GetWriteBatch() = 0; +16166: +16166: +16166: +16166: virtual void SetSavePoint() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status RollbackToSavePoint() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status PopSavePoint() = 0; +16166: +16166: +16166: virtual void SetMaxBytes(size_t max_bytes) = 0; +16166: }; +16166: +16166: } +16166: # 37 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: class ColumnFamilyHandle; +16166: struct SavePoints; +16166: struct SliceParts; +16166: +16166: struct SavePoint { +16166: size_t size; +16166: uint32_t count; +16166: uint32_t content_flags; +16166: +16166: SavePoint() : size(0), count(0), content_flags(0) {} +16166: +16166: SavePoint(size_t _size, uint32_t _count, uint32_t _flags) +16166: : size(_size), count(_count), content_flags(_flags) {} +16166: +16166: void clear() { +16166: size = 0; +16166: count = 0; +16166: content_flags = 0; +16166: } +16166: +16166: bool is_cleared() const { return (size | count | content_flags) == 0; } +16166: }; +16166: +16166: class WriteBatch : public WriteBatchBase { +16166: public: +16166: explicit WriteBatch(size_t reserved_bytes = 0, size_t max_bytes = 0) +16166: : WriteBatch(reserved_bytes, max_bytes, 0, 0) {} +16166: +16166: +16166: +16166: +16166: explicit WriteBatch(size_t reserved_bytes, size_t max_bytes, +16166: size_t protection_bytes_per_key, size_t default_cf_ts_sz); +16166: ~WriteBatch() override; +16166: +16166: using WriteBatchBase::Put; +16166: +16166: +16166: +16166: +16166: +16166: Status Put(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value) override; +16166: Status Put(const Slice& key, const Slice& value) override { +16166: return Put(nullptr, key, value); +16166: } +16166: Status Put(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts, const Slice& value) override; +16166: # 97 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +16166: Status Put(ColumnFamilyHandle* column_family, const SliceParts& key, +16166: const SliceParts& value) override; +16166: Status Put(const SliceParts& key, const SliceParts& value) override { +16166: return Put(nullptr, key, value); +16166: } +16166: +16166: using WriteBatchBase::TimedPut; +16166: +16166: +16166: +16166: +16166: Status TimedPut(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value, uint64_t write_unix_time) override; +16166: +16166: +16166: +16166: using WriteBatchBase::PutEntity; +16166: Status PutEntity(ColumnFamilyHandle* column_family, const Slice& key, +16166: const WideColumns& columns) override; +16166: +16166: +16166: +16166: Status PutEntity(const Slice& key, +16166: const AttributeGroups& attribute_groups) override; +16166: +16166: using WriteBatchBase::Delete; +16166: +16166: +16166: +16166: +16166: +16166: Status Delete(ColumnFamilyHandle* column_family, const Slice& key) override; +16166: Status Delete(const Slice& key) override { return Delete(nullptr, key); } +16166: Status Delete(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts) override; +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status Delete(ColumnFamilyHandle* column_family, +16166: const SliceParts& key) override; +16166: Status Delete(const SliceParts& key) override { return Delete(nullptr, key); } +16166: +16166: using WriteBatchBase::SingleDelete; +16166: +16166: Status SingleDelete(ColumnFamilyHandle* column_family, +16166: const Slice& key) override; +16166: Status SingleDelete(const Slice& key) override { +16166: return SingleDelete(nullptr, key); +16166: } +16166: Status SingleDelete(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts) override; +16166: +16166: +16166: Status SingleDelete(ColumnFamilyHandle* column_family, +16166: const SliceParts& key) override; +16166: Status SingleDelete(const SliceParts& key) override { +16166: return SingleDelete(nullptr, key); +16166: } +16166: +16166: using WriteBatchBase::DeleteRange; +16166: +16166: Status DeleteRange(ColumnFamilyHandle* column_family, const Slice& begin_key, +16166: const Slice& end_key) override; +16166: Status DeleteRange(const Slice& begin_key, const Slice& end_key) override { +16166: return DeleteRange(nullptr, begin_key, end_key); +16166: } +16166: +16166: Status DeleteRange(ColumnFamilyHandle* column_family, const Slice& begin_key, +16166: const Slice& end_key, const Slice& ts) override; +16166: +16166: +16166: Status DeleteRange(ColumnFamilyHandle* column_family, +16166: const SliceParts& begin_key, +16166: const SliceParts& end_key) override; +16166: Status DeleteRange(const SliceParts& begin_key, +16166: const SliceParts& end_key) override { +16166: return DeleteRange(nullptr, begin_key, end_key); +16166: } +16166: +16166: using WriteBatchBase::Merge; +16166: +16166: +16166: Status Merge(ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value) override; +16166: Status Merge(const Slice& key, const Slice& value) override { +16166: return Merge(nullptr, key, value); +16166: } +16166: Status Merge(ColumnFamilyHandle* , const Slice& , +16166: const Slice& , const Slice& ) override; +16166: +16166: +16166: Status Merge(ColumnFamilyHandle* column_family, const SliceParts& key, +16166: const SliceParts& value) override; +16166: Status Merge(const SliceParts& key, const SliceParts& value) override { +16166: return Merge(nullptr, key, value); +16166: } +16166: +16166: using WriteBatchBase::PutLogData; +16166: # 208 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +16166: Status PutLogData(const Slice& blob) override; +16166: +16166: using WriteBatchBase::Clear; +16166: +16166: +16166: +16166: void Clear() override; +16166: +16166: +16166: +16166: void SetSavePoint() override; +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status RollbackToSavePoint() override; +16166: +16166: +16166: +16166: +16166: +16166: Status PopSavePoint() override; +16166: +16166: +16166: +16166: class Handler { +16166: public: +16166: virtual ~Handler(); +16166: # 246 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +16166: virtual Status PutCF(uint32_t column_family_id, const Slice& key, +16166: const Slice& value) { +16166: if (column_family_id == 0) { +16166: +16166: +16166: +16166: Put(key, value); +16166: return Status::OK(); +16166: } +16166: return Status::InvalidArgument( +16166: "non-default column family and PutCF not implemented"); +16166: } +16166: +16166: virtual void Put(const Slice& , const Slice& ) {} +16166: +16166: +16166: virtual Status TimedPutCF(uint32_t , +16166: const Slice& , const Slice& , +16166: uint64_t ) { +16166: return Status::InvalidArgument("TimedPutCF not implemented"); +16166: } +16166: +16166: +16166: virtual Status PutEntityCF(uint32_t , +16166: const Slice& , +16166: const Slice& ) { +16166: return Status::NotSupported("PutEntityCF not implemented"); +16166: } +16166: +16166: +16166: virtual Status DeleteCF(uint32_t column_family_id, const Slice& key) { +16166: if (column_family_id == 0) { +16166: Delete(key); +16166: return Status::OK(); +16166: } +16166: return Status::InvalidArgument( +16166: "non-default column family and DeleteCF not implemented"); +16166: } +16166: +16166: virtual void Delete(const Slice& ) {} +16166: +16166: +16166: virtual Status SingleDeleteCF(uint32_t column_family_id, const Slice& key) { +16166: if (column_family_id == 0) { +16166: SingleDelete(key); +16166: return Status::OK(); +16166: } +16166: return Status::InvalidArgument( +16166: "non-default column family and SingleDeleteCF not implemented"); +16166: } +16166: +16166: virtual void SingleDelete(const Slice& ) {} +16166: +16166: +16166: +16166: virtual Status DeleteRangeCF(uint32_t , +16166: const Slice& , +16166: const Slice& ) { +16166: return Status::InvalidArgument("DeleteRangeCF not implemented"); +16166: } +16166: +16166: +16166: virtual Status MergeCF(uint32_t column_family_id, const Slice& key, +16166: const Slice& value) { +16166: if (column_family_id == 0) { +16166: Merge(key, value); +16166: return Status::OK(); +16166: } +16166: return Status::InvalidArgument( +16166: "non-default column family and MergeCF not implemented"); +16166: } +16166: +16166: virtual void Merge(const Slice& , const Slice& ) {} +16166: +16166: +16166: virtual Status PutBlobIndexCF(uint32_t , +16166: const Slice& , +16166: const Slice& ) { +16166: return Status::InvalidArgument("PutBlobIndexCF not implemented"); +16166: } +16166: +16166: +16166: virtual void LogData(const Slice& blob); +16166: +16166: virtual Status MarkBeginPrepare(bool = false) { +16166: return Status::InvalidArgument("MarkBeginPrepare() handler not defined."); +16166: } +16166: +16166: virtual Status MarkEndPrepare(const Slice& ) { +16166: return Status::InvalidArgument("MarkEndPrepare() handler not defined."); +16166: } +16166: +16166: virtual Status MarkNoop(bool ) { +16166: return Status::InvalidArgument("MarkNoop() handler not defined."); +16166: } +16166: +16166: virtual Status MarkRollback(const Slice& ) { +16166: return Status::InvalidArgument( +16166: "MarkRollbackPrepare() handler not defined."); +16166: } +16166: +16166: virtual Status MarkCommit(const Slice& ) { +16166: return Status::InvalidArgument("MarkCommit() handler not defined."); +16166: } +16166: +16166: virtual Status MarkCommitWithTimestamp(const Slice& , +16166: const Slice& ) { +16166: return Status::InvalidArgument( +16166: "MarkCommitWithTimestamp() handler not defined."); +16166: } +16166: +16166: +16166: +16166: +16166: virtual bool Continue(); +16166: +16166: protected: +16166: friend class WriteBatchInternal; +16166: enum class OptionState { +16166: kUnknown, +16166: kDisabled, +16166: kEnabled, +16166: }; +16166: virtual OptionState WriteAfterCommit() const { +16166: return OptionState::kUnknown; +16166: } +16166: virtual OptionState WriteBeforePrepare() const { +16166: return OptionState::kUnknown; +16166: } +16166: }; +16166: Status Iterate(Handler* handler) const; +16166: +16166: +16166: const std::string& Data() const { return rep_; } +16166: +16166: +16166: std::string Release(); +16166: +16166: +16166: size_t GetDataSize() const { return rep_.size(); } +16166: +16166: +16166: uint32_t Count() const; +16166: +16166: +16166: bool HasPut() const; +16166: +16166: +16166: bool HasTimedPut() const; +16166: +16166: +16166: bool HasPutEntity() const; +16166: +16166: +16166: bool HasDelete() const; +16166: +16166: +16166: bool HasSingleDelete() const; +16166: +16166: +16166: bool HasDeleteRange() const; +16166: +16166: +16166: bool HasMerge() const; +16166: +16166: +16166: bool HasBeginPrepare() const; +16166: +16166: +16166: bool HasEndPrepare() const; +16166: +16166: +16166: bool HasCommit() const; +16166: +16166: +16166: bool HasRollback() const; +16166: # 439 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +16166: Status UpdateTimestamps(const Slice& ts, +16166: std::function ts_sz_func); +16166: +16166: +16166: +16166: +16166: +16166: void SetTrackTimestampSize(bool track_timestamp_size) { +16166: track_timestamp_size_ = track_timestamp_size; +16166: } +16166: +16166: inline void MaybeTrackTimestampSize(uint32_t column_family_id, size_t ts_sz) { +16166: if (!track_timestamp_size_) { +16166: return; +16166: } +16166: auto iter = cf_id_to_ts_sz_.find(column_family_id); +16166: if (iter == cf_id_to_ts_sz_.end()) { +16166: cf_id_to_ts_sz_.emplace(column_family_id, ts_sz); +16166: } +16166: } +16166: +16166: +16166: +16166: const std::unordered_map& GetColumnFamilyToTimestampSize() { +16166: return cf_id_to_ts_sz_; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: Status VerifyChecksum() const; +16166: +16166: using WriteBatchBase::GetWriteBatch; +16166: WriteBatch* GetWriteBatch() override { return this; } +16166: +16166: +16166: explicit WriteBatch(const std::string& rep); +16166: explicit WriteBatch(std::string&& rep); +16166: +16166: WriteBatch(const WriteBatch& src); +16166: WriteBatch(WriteBatch&& src) noexcept; +16166: WriteBatch& operator=(const WriteBatch& src); +16166: WriteBatch& operator=(WriteBatch&& src); +16166: +16166: +16166: +16166: void MarkWalTerminationPoint(); +16166: const SavePoint& GetWalTerminationPoint() const { return wal_term_point_; } +16166: +16166: void SetMaxBytes(size_t max_bytes) override { max_bytes_ = max_bytes; } +16166: +16166: struct ProtectionInfo; +16166: size_t GetProtectionBytesPerKey() const; +16166: +16166: private: +16166: friend class WriteBatchInternal; +16166: friend class LocalSavePoint; +16166: +16166: +16166: +16166: friend class WriteBatchWithIndex; +16166: std::unique_ptr save_points_; +16166: +16166: +16166: +16166: +16166: SavePoint wal_term_point_; +16166: +16166: +16166: +16166: +16166: +16166: bool is_latest_persistent_state_ = false; +16166: # 521 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/write_batch.h" +16166: bool needs_in_place_update_ts_ = false; +16166: +16166: +16166: +16166: bool has_key_with_ts_ = false; +16166: +16166: +16166: mutable std::atomic content_flags_; +16166: +16166: +16166: uint32_t ComputeContentFlags() const; +16166: +16166: +16166: size_t max_bytes_; +16166: +16166: std::unique_ptr prot_info_; +16166: +16166: size_t default_cf_ts_sz_ = 0; +16166: +16166: bool track_timestamp_size_ = false; +16166: +16166: std::unordered_map cf_id_to_ts_sz_; +16166: +16166: protected: +16166: std::string rep_; +16166: }; +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/transaction_log.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class WalFile; +16166: using VectorWalPtr = std::vector>; +16166: +16166: using VectorLogPtr = VectorWalPtr; +16166: +16166: enum WalFileType { +16166: +16166: +16166: +16166: +16166: +16166: +16166: kArchivedLogFile = 0, +16166: +16166: +16166: kAliveLogFile = 1 +16166: }; +16166: +16166: class WalFile { +16166: public: +16166: WalFile() {} +16166: virtual ~WalFile() {} +16166: +16166: +16166: +16166: +16166: virtual std::string PathName() const = 0; +16166: +16166: +16166: +16166: virtual uint64_t LogNumber() const = 0; +16166: +16166: +16166: virtual WalFileType Type() const = 0; +16166: +16166: +16166: virtual SequenceNumber StartSequence() const = 0; +16166: +16166: +16166: +16166: virtual uint64_t SizeFileBytes() const = 0; +16166: }; +16166: +16166: +16166: using LogFile = WalFile; +16166: +16166: struct BatchResult { +16166: SequenceNumber sequence = 0; +16166: std::unique_ptr writeBatchPtr; +16166: +16166: +16166: +16166: +16166: BatchResult() {} +16166: +16166: ~BatchResult() {} +16166: +16166: BatchResult(const BatchResult&) = delete; +16166: +16166: BatchResult& operator=(const BatchResult&) = delete; +16166: +16166: BatchResult(BatchResult&& bResult) +16166: : sequence(std::move(bResult.sequence)), +16166: writeBatchPtr(std::move(bResult.writeBatchPtr)) {} +16166: +16166: BatchResult& operator=(BatchResult&& bResult) { +16166: sequence = std::move(bResult.sequence); +16166: writeBatchPtr = std::move(bResult.writeBatchPtr); +16166: return *this; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: class TransactionLogIterator { +16166: public: +16166: TransactionLogIterator() {} +16166: virtual ~TransactionLogIterator() {} +16166: +16166: +16166: +16166: +16166: virtual bool Valid() = 0; +16166: +16166: +16166: +16166: virtual void Next() = 0; +16166: +16166: +16166: +16166: virtual Status status() = 0; +16166: +16166: +16166: +16166: +16166: virtual BatchResult GetBatch() = 0; +16166: +16166: +16166: struct ReadOptions { +16166: +16166: +16166: +16166: bool verify_checksums_; +16166: +16166: ReadOptions() : verify_checksums_(true) {} +16166: +16166: explicit ReadOptions(bool verify_checksums) +16166: : verify_checksums_(verify_checksums) {} +16166: }; +16166: }; +16166: } +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/user_write_callback.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: class UserWriteCallback { +16166: public: +16166: virtual ~UserWriteCallback() {} +16166: +16166: +16166: virtual void OnWriteEnqueued() = 0; +16166: +16166: +16166: virtual void OnWalWriteFinish() = 0; +16166: }; +16166: +16166: } +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: class CompactOnDeletionCollectorFactory +16166: : public TablePropertiesCollectorFactory { +16166: public: +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +16166: CompactOnDeletionCollectorFactory(size_t sliding_window_size, +16166: size_t deletion_trigger, +16166: double deletion_ratio); +16166: +16166: ~CompactOnDeletionCollectorFactory() override {} +16166: +16166: TablePropertiesCollector* CreateTablePropertiesCollector( +16166: TablePropertiesCollectorFactory::Context context) override; +16166: +16166: +16166: +16166: void SetWindowSize(size_t sliding_window_size) { +16166: sliding_window_size_.store(sliding_window_size); +16166: } +16166: size_t GetWindowSize() const { return sliding_window_size_.load(); } +16166: +16166: +16166: void SetDeletionTrigger(size_t deletion_trigger) { +16166: deletion_trigger_.store(deletion_trigger); +16166: } +16166: +16166: size_t GetDeletionTrigger() const { return deletion_trigger_.load(); } +16166: +16166: +16166: +16166: void SetDeletionRatio(double deletion_ratio) { +16166: deletion_ratio_.store(deletion_ratio); +16166: } +16166: +16166: double GetDeletionRatio() const { return deletion_ratio_.load(); } +16166: static const char* kClassName() { return "CompactOnDeletionCollector"; } +16166: const char* Name() const override { return kClassName(); } +16166: +16166: std::string ToString() const override; +16166: +16166: private: +16166: std::atomic sliding_window_size_; +16166: std::atomic deletion_trigger_; +16166: std::atomic deletion_ratio_; +16166: }; +16166: # 85 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +16166: std::shared_ptr +16166: NewCompactOnDeletionCollectorFactory(size_t sliding_window_size, +16166: size_t deletion_trigger, +16166: double deletion_ratio = 0); +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +16166: class CompactForTieringCollectorFactory +16166: : public TablePropertiesCollectorFactory { +16166: public: +16166: +16166: +16166: +16166: CompactForTieringCollectorFactory(double compaction_trigger_ratio); +16166: +16166: ~CompactForTieringCollectorFactory() override {} +16166: +16166: TablePropertiesCollector* CreateTablePropertiesCollector( +16166: TablePropertiesCollectorFactory::Context context) override; +16166: +16166: void SetCompactionTriggerRatio(double new_ratio) { +16166: compaction_trigger_ratio_.store(new_ratio); +16166: } +16166: +16166: double GetCompactionTriggerRatio() const { +16166: return compaction_trigger_ratio_.load(); +16166: } +16166: +16166: static const char* kClassName() { return "CompactForTieringCollector"; } +16166: const char* Name() const override { return kClassName(); } +16166: +16166: std::string ToString() const override; +16166: +16166: private: +16166: std::atomic compaction_trigger_ratio_; +16166: }; +16166: +16166: std::shared_ptr +16166: NewCompactForTieringCollectorFactory(double compaction_trigger_ratio); +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct DataCollectionUnixWriteTimeInfo { +16166: +16166: uint64_t min_write_time = 0; +16166: +16166: uint64_t max_write_time = 0; +16166: +16166: uint64_t average_write_time = 0; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t num_entries_infinitely_old = 0; +16166: +16166: +16166: uint64_t num_entries_write_time_aggregated = 0; +16166: +16166: +16166: uint64_t num_entries_write_time_untracked = 0; +16166: +16166: DataCollectionUnixWriteTimeInfo() {} +16166: +16166: DataCollectionUnixWriteTimeInfo(uint64_t _min_write_time, +16166: uint64_t _max_write_time, +16166: uint64_t _average_write_time, +16166: uint64_t _num_entries_infinitely_old, +16166: uint64_t _num_entries_write_time_aggregated, +16166: uint64_t _num_entries_write_time_untracked) +16166: : min_write_time(_min_write_time), +16166: max_write_time(_max_write_time), +16166: average_write_time(_average_write_time), +16166: num_entries_infinitely_old(_num_entries_infinitely_old), +16166: num_entries_write_time_aggregated(_num_entries_write_time_aggregated), +16166: num_entries_write_time_untracked(_num_entries_write_time_untracked) {} +16166: +16166: +16166: +16166: bool DataCollectionIsEmpty() const { +16166: return num_entries_infinitely_old == 0 && +16166: num_entries_write_time_aggregated == 0 && +16166: num_entries_write_time_untracked == 0; +16166: } +16166: # 193 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/table_properties_collectors.h" +16166: double TrackedDataRatio() const { +16166: if (DataCollectionIsEmpty()) { +16166: return 0; +16166: } +16166: uint64_t num_entries_write_time_tracked = +16166: num_entries_infinitely_old + num_entries_write_time_aggregated; +16166: return num_entries_write_time_tracked / +16166: static_cast(num_entries_write_time_tracked + +16166: num_entries_write_time_untracked); +16166: } +16166: +16166: +16166: bool HasInfinitelyOldData() const { return num_entries_infinitely_old > 0; } +16166: }; +16166: +16166: +16166: +16166: Status GetDataCollectionUnixWriteTimeInfoForFile( +16166: const std::shared_ptr& table_properties, +16166: std::unique_ptr* file_info); +16166: +16166: +16166: +16166: Status GetDataCollectionUnixWriteTimeInfoForLevels( +16166: const std::vector>& +16166: levels_table_properties, +16166: std::vector>* levels_info); +16166: } +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 2 +16166: # 47 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: namespace rocksdb { +16166: +16166: struct ColumnFamilyOptions; +16166: struct CompactionOptions; +16166: struct CompactRangeOptions; +16166: struct DBOptions; +16166: struct ExternalSstFileInfo; +16166: struct FlushOptions; +16166: struct Options; +16166: struct ReadOptions; +16166: struct TableProperties; +16166: struct WriteOptions; +16166: struct WaitForCompactOptions; +16166: class Env; +16166: class EventListener; +16166: class FileSystem; +16166: class Replayer; +16166: class StatsHistoryIterator; +16166: class TraceReader; +16166: class TraceWriter; +16166: class WriteBatch; +16166: +16166: extern const std::string kDefaultColumnFamilyName; +16166: extern const std::string kPersistentStatsColumnFamilyName; +16166: struct ColumnFamilyDescriptor { +16166: std::string name; +16166: ColumnFamilyOptions options; +16166: ColumnFamilyDescriptor() +16166: : name(kDefaultColumnFamilyName), options(ColumnFamilyOptions()) {} +16166: ColumnFamilyDescriptor(const std::string& _name, +16166: const ColumnFamilyOptions& _options) +16166: : name(_name), options(_options) {} +16166: }; +16166: +16166: class ColumnFamilyHandle { +16166: public: +16166: virtual ~ColumnFamilyHandle() {} +16166: +16166: virtual const std::string& GetName() const = 0; +16166: +16166: virtual uint32_t GetID() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetDescriptor(ColumnFamilyDescriptor* desc) = 0; +16166: +16166: +16166: virtual const Comparator* GetComparator() const = 0; +16166: }; +16166: +16166: static const int kMajorVersion = 9; +16166: static const int kMinorVersion = 10; +16166: +16166: +16166: struct Range { +16166: +16166: +16166: Slice start; +16166: Slice limit; +16166: +16166: Range() {} +16166: Range(const Slice& s, const Slice& l) : start(s), limit(l) {} +16166: }; +16166: +16166: struct RangePtr { +16166: +16166: +16166: const Slice* start; +16166: const Slice* limit; +16166: +16166: RangePtr() : start(nullptr), limit(nullptr) {} +16166: RangePtr(const Slice* s, const Slice* l) : start(s), limit(l) {} +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct IngestExternalFileArg { +16166: ColumnFamilyHandle* column_family = nullptr; +16166: std::vector external_files; +16166: IngestExternalFileOptions options; +16166: std::vector files_checksums; +16166: std::vector files_checksum_func_names; +16166: +16166: Temperature file_temperature = Temperature::kUnknown; +16166: }; +16166: +16166: struct GetMergeOperandsOptions { +16166: using ContinueCallback = std::function; +16166: +16166: +16166: +16166: +16166: +16166: +16166: int expected_max_number_of_operands = 0; +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: ContinueCallback continue_cb; +16166: }; +16166: +16166: +16166: +16166: +16166: using TablePropertiesCollection = +16166: std::unordered_map>; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class DB { +16166: public: +16166: # 186 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status Open(const Options& options, const std::string& name, +16166: DB** dbptr); +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status Open(const DBOptions& db_options, const std::string& name, +16166: const std::vector& column_families, +16166: std::vector* handles, DB** dbptr); +16166: # 221 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status OpenForReadOnly(const Options& options, const std::string& name, +16166: DB** dbptr, +16166: bool error_if_wal_file_exists = false); +16166: # 232 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status OpenForReadOnly( +16166: const DBOptions& db_options, const std::string& name, +16166: const std::vector& column_families, +16166: std::vector* handles, DB** dbptr, +16166: bool error_if_wal_file_exists = false); +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status OpenAsSecondary(const Options& options, const std::string& name, +16166: const std::string& secondary_path, DB** dbptr); +16166: # 297 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status OpenAsSecondary( +16166: const DBOptions& db_options, const std::string& name, +16166: const std::string& secondary_path, +16166: const std::vector& column_families, +16166: std::vector* handles, DB** dbptr); +16166: # 314 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status OpenAsFollower(const Options& options, const std::string& name, +16166: const std::string& leader_path, +16166: std::unique_ptr* dbptr); +16166: +16166: +16166: static Status OpenAsFollower( +16166: const DBOptions& db_options, const std::string& name, +16166: const std::string& leader_path, +16166: const std::vector& column_families, +16166: std::vector* handles, std::unique_ptr* dbptr); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: static Status OpenAndCompact( +16166: const std::string& name, const std::string& output_directory, +16166: const std::string& input, std::string* output, +16166: const CompactionServiceOptionsOverride& override_options); +16166: +16166: static Status OpenAndCompact( +16166: const OpenAndCompactOptions& options, const std::string& name, +16166: const std::string& output_directory, const std::string& input, +16166: std::string* output, +16166: const CompactionServiceOptionsOverride& override_options); +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static Status OpenAndTrimHistory( +16166: const DBOptions& db_options, const std::string& dbname, +16166: const std::vector& column_families, +16166: std::vector* handles, DB** dbptr, +16166: std::string trim_ts); +16166: # 367 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status Resume() { return Status::NotSupported(); } +16166: # 386 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status Close() { return Status::NotSupported(); } +16166: +16166: +16166: +16166: +16166: +16166: static Status ListColumnFamilies(const DBOptions& db_options, +16166: const std::string& name, +16166: std::vector* column_families); +16166: +16166: +16166: DB() {} +16166: +16166: DB(const DB&) = delete; +16166: void operator=(const DB&) = delete; +16166: +16166: virtual ~DB(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status CreateColumnFamily(const ColumnFamilyOptions& options, +16166: const std::string& column_family_name, +16166: ColumnFamilyHandle** handle); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status CreateColumnFamilies( +16166: const ColumnFamilyOptions& options, +16166: const std::vector& column_family_names, +16166: std::vector* handles); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status CreateColumnFamilies( +16166: const std::vector& column_families, +16166: std::vector* handles); +16166: +16166: +16166: +16166: +16166: virtual Status DropColumnFamily(ColumnFamilyHandle* column_family); +16166: +16166: +16166: +16166: +16166: +16166: virtual Status DropColumnFamilies( +16166: const std::vector& column_families); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status DestroyColumnFamilyHandle(ColumnFamilyHandle* column_family); +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Put(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value) = 0; +16166: virtual Status Put(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts, const Slice& value) = 0; +16166: virtual Status Put(const WriteOptions& options, const Slice& key, +16166: const Slice& value) { +16166: return Put(options, DefaultColumnFamily(), key, value); +16166: } +16166: virtual Status Put(const WriteOptions& options, const Slice& key, +16166: const Slice& ts, const Slice& value) { +16166: return Put(options, DefaultColumnFamily(), key, ts, value); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status PutEntity(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: const WideColumns& columns); +16166: +16166: +16166: virtual Status PutEntity(const WriteOptions& options, const Slice& key, +16166: const AttributeGroups& attribute_groups); +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Delete(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const Slice& key) = 0; +16166: virtual Status Delete(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& ts) = 0; +16166: virtual Status Delete(const WriteOptions& options, const Slice& key) { +16166: return Delete(options, DefaultColumnFamily(), key); +16166: } +16166: virtual Status Delete(const WriteOptions& options, const Slice& key, +16166: const Slice& ts) { +16166: return Delete(options, DefaultColumnFamily(), key, ts); +16166: } +16166: # 518 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status SingleDelete(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const Slice& key) = 0; +16166: virtual Status SingleDelete(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const Slice& key, const Slice& ts) = 0; +16166: virtual Status SingleDelete(const WriteOptions& options, const Slice& key) { +16166: return SingleDelete(options, DefaultColumnFamily(), key); +16166: } +16166: virtual Status SingleDelete(const WriteOptions& options, const Slice& key, +16166: const Slice& ts) { +16166: return SingleDelete(options, DefaultColumnFamily(), key, ts); +16166: } +16166: # 548 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status DeleteRange(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const Slice& begin_key, const Slice& end_key); +16166: virtual Status DeleteRange(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const Slice& begin_key, const Slice& end_key, +16166: const Slice& ts); +16166: virtual Status DeleteRange(const WriteOptions& options, +16166: const Slice& begin_key, const Slice& end_key) { +16166: return DeleteRange(options, DefaultColumnFamily(), begin_key, end_key); +16166: } +16166: virtual Status DeleteRange(const WriteOptions& options, +16166: const Slice& begin_key, const Slice& end_key, +16166: const Slice& ts) { +16166: return DeleteRange(options, DefaultColumnFamily(), begin_key, end_key, ts); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Merge(const WriteOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: const Slice& value) = 0; +16166: virtual Status Merge(const WriteOptions& options, const Slice& key, +16166: const Slice& value) { +16166: return Merge(options, DefaultColumnFamily(), key, value); +16166: } +16166: virtual Status Merge(const WriteOptions& , +16166: ColumnFamilyHandle* , +16166: const Slice& , const Slice& , +16166: const Slice& ); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Write(const WriteOptions& options, WriteBatch* updates) = 0; +16166: +16166: +16166: +16166: virtual Status WriteWithCallback(const WriteOptions& , +16166: WriteBatch* , +16166: UserWriteCallback* ) { +16166: return Status::NotSupported( +16166: "WriteWithCallback not implemented for this interface."); +16166: } +16166: # 611 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status Get(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: PinnableSlice* value, std::string* timestamp) = 0; +16166: +16166: +16166: +16166: +16166: virtual inline Status Get(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: std::string* value, std::string* timestamp) final { +16166: +16166: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: (static_cast ( +16166: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: value != nullptr +16166: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: "value != nullptr" +16166: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 621 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: ; +16166: PinnableSlice pinnable_val(value); +16166: +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: (static_cast ( +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: !pinnable_val.IsPinned() +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: "!pinnable_val.IsPinned()" +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: ; +16166: auto s = Get(options, column_family, key, &pinnable_val, timestamp); +16166: if (s.ok() && pinnable_val.IsPinned()) { +16166: value->assign(pinnable_val.data(), pinnable_val.size()); +16166: } +16166: return s; +16166: } +16166: +16166: +16166: +16166: virtual Status Get(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: PinnableSlice* value) final { +16166: return Get(options, column_family, key, value, nullptr); +16166: } +16166: +16166: +16166: +16166: virtual inline Status Get(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: std::string* value) final { +16166: +16166: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: (static_cast ( +16166: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: value != nullptr +16166: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: "value != nullptr" +16166: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 644 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: ; +16166: PinnableSlice pinnable_val(value); +16166: +16166: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: (static_cast ( +16166: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: !pinnable_val.IsPinned() +16166: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: "!pinnable_val.IsPinned()" +16166: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 646 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: ; +16166: auto s = Get(options, column_family, key, &pinnable_val); +16166: if (s.ok() && pinnable_val.IsPinned()) { +16166: value->assign(pinnable_val.data(), pinnable_val.size()); +16166: } +16166: return s; +16166: } +16166: +16166: +16166: +16166: +16166: virtual Status Get(const ReadOptions& options, const Slice& key, +16166: std::string* value) final { +16166: return Get(options, DefaultColumnFamily(), key, value); +16166: } +16166: +16166: +16166: +16166: +16166: virtual Status Get(const ReadOptions& options, const Slice& key, +16166: std::string* value, std::string* timestamp) final { +16166: return Get(options, DefaultColumnFamily(), key, value, timestamp); +16166: } +16166: # 679 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status GetEntity(const ReadOptions& , +16166: ColumnFamilyHandle* , +16166: const Slice& , +16166: PinnableWideColumns* ) { +16166: return Status::NotSupported("GetEntity not supported"); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetEntity(const ReadOptions& , +16166: const Slice& , +16166: PinnableAttributeGroups* ) { +16166: return Status::NotSupported("GetEntity not supported"); +16166: } +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status GetMergeOperands( +16166: const ReadOptions& options, ColumnFamilyHandle* column_family, +16166: const Slice& key, PinnableSlice* merge_operands, +16166: GetMergeOperandsOptions* get_merge_operands_options, +16166: int* number_of_operands) = 0; +16166: # 741 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual std::vector MultiGet( +16166: const ReadOptions& options, +16166: const std::vector& column_families, +16166: const std::vector& keys, std::vector* values, +16166: std::vector* timestamps) final { +16166: size_t num_keys = keys.size(); +16166: std::vector statuses(num_keys); +16166: std::vector pin_values(num_keys); +16166: +16166: values->resize(num_keys); +16166: if (timestamps) { +16166: timestamps->resize(num_keys); +16166: } +16166: MultiGet(options, num_keys, +16166: const_cast(column_families.data()), +16166: keys.data(), pin_values.data(), +16166: timestamps ? timestamps->data() : nullptr, statuses.data(), +16166: false); +16166: for (size_t i = 0; i < num_keys; ++i) { +16166: if (statuses[i].ok()) { +16166: (*values)[i].assign(pin_values[i].data(), pin_values[i].size()); +16166: } +16166: } +16166: return statuses; +16166: } +16166: +16166: +16166: +16166: virtual std::vector MultiGet( +16166: const ReadOptions& options, +16166: const std::vector& column_family, +16166: const std::vector& keys, std::vector* values) final { +16166: values->resize(keys.size()); +16166: return MultiGet(options, column_family, keys, values, nullptr); +16166: } +16166: +16166: +16166: +16166: virtual std::vector MultiGet(const ReadOptions& options, +16166: const std::vector& keys, +16166: std::vector* values) final { +16166: values->resize(keys.size()); +16166: return MultiGet( +16166: options, +16166: std::vector(keys.size(), DefaultColumnFamily()), +16166: keys, values); +16166: } +16166: +16166: +16166: +16166: virtual std::vector MultiGet( +16166: const ReadOptions& options, const std::vector& keys, +16166: std::vector* values, +16166: std::vector* timestamps) final { +16166: values->resize(keys.size()); +16166: return MultiGet( +16166: options, +16166: std::vector(keys.size(), DefaultColumnFamily()), +16166: keys, values, timestamps); +16166: } +16166: # 830 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual void MultiGet(const ReadOptions& options, const size_t num_keys, +16166: ColumnFamilyHandle** column_families, const Slice* keys, +16166: PinnableSlice* values, std::string* timestamps, +16166: Status* statuses, const bool sorted_input = false) = 0; +16166: +16166: +16166: +16166: virtual void MultiGet(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const size_t num_keys, const Slice* keys, +16166: PinnableSlice* values, std::string* timestamps, +16166: Status* statuses, +16166: const bool sorted_input = false) final; +16166: +16166: +16166: +16166: virtual void MultiGet(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const size_t num_keys, const Slice* keys, +16166: PinnableSlice* values, Status* statuses, +16166: const bool sorted_input = false) final { +16166: MultiGet(options, column_family, num_keys, keys, values, nullptr, statuses, +16166: sorted_input); +16166: } +16166: +16166: +16166: +16166: virtual void MultiGet(const ReadOptions& options, const size_t num_keys, +16166: ColumnFamilyHandle** column_families, const Slice* keys, +16166: PinnableSlice* values, Status* statuses, +16166: const bool sorted_input = false) final { +16166: MultiGet(options, num_keys, column_families, keys, values, nullptr, +16166: statuses, sorted_input); +16166: } +16166: # 884 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual void MultiGetEntity(const ReadOptions& , +16166: ColumnFamilyHandle* , +16166: size_t num_keys, const Slice* , +16166: PinnableWideColumns* , +16166: Status* statuses, +16166: bool = false) { +16166: for (size_t i = 0; i < num_keys; ++i) { +16166: statuses[i] = Status::NotSupported("MultiGetEntity not supported"); +16166: } +16166: } +16166: # 916 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual void MultiGetEntity(const ReadOptions& , size_t num_keys, +16166: ColumnFamilyHandle** , +16166: const Slice* , +16166: PinnableWideColumns* , +16166: Status* statuses, +16166: bool = false) { +16166: for (size_t i = 0; i < num_keys; ++i) { +16166: statuses[i] = Status::NotSupported("MultiGetEntity not supported"); +16166: } +16166: } +16166: # 944 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual void MultiGetEntity(const ReadOptions& , size_t num_keys, +16166: const Slice* , +16166: PinnableAttributeGroups* results) { +16166: for (size_t i = 0; i < num_keys; ++i) { +16166: for (size_t j = 0; j < results[i].size(); ++j) { +16166: results[i][j].SetStatus( +16166: Status::NotSupported("MultiGetEntity not supported")); +16166: } +16166: } +16166: } +16166: # 962 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual bool KeyMayExist(const ReadOptions& , +16166: ColumnFamilyHandle* , +16166: const Slice& , std::string* , +16166: std::string* , +16166: bool* value_found = nullptr) { +16166: if (value_found != nullptr) { +16166: *value_found = false; +16166: } +16166: return true; +16166: } +16166: +16166: virtual bool KeyMayExist(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family, const Slice& key, +16166: std::string* value, bool* value_found = nullptr) { +16166: return KeyMayExist(options, column_family, key, value, +16166: nullptr, value_found); +16166: } +16166: +16166: virtual bool KeyMayExist(const ReadOptions& options, const Slice& key, +16166: std::string* value, bool* value_found = nullptr) { +16166: return KeyMayExist(options, DefaultColumnFamily(), key, value, value_found); +16166: } +16166: +16166: virtual bool KeyMayExist(const ReadOptions& options, const Slice& key, +16166: std::string* value, std::string* timestamp, +16166: bool* value_found = nullptr) { +16166: return KeyMayExist(options, DefaultColumnFamily(), key, value, timestamp, +16166: value_found); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Iterator* NewIterator(const ReadOptions& options, +16166: ColumnFamilyHandle* column_family) = 0; +16166: virtual Iterator* NewIterator(const ReadOptions& options) { +16166: return NewIterator(options, DefaultColumnFamily()); +16166: } +16166: +16166: +16166: +16166: virtual Status NewIterators( +16166: const ReadOptions& options, +16166: const std::vector& column_families, +16166: std::vector* iterators) = 0; +16166: # 1024 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual std::unique_ptr NewCoalescingIterator( +16166: const ReadOptions& options, +16166: const std::vector& column_families) = 0; +16166: +16166: +16166: +16166: virtual std::unique_ptr NewAttributeGroupIterator( +16166: const ReadOptions& options, +16166: const std::vector& column_families) = 0; +16166: # 1041 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual const Snapshot* GetSnapshot() = 0; +16166: +16166: +16166: +16166: virtual void ReleaseSnapshot(const Snapshot* snapshot) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct Properties { +16166: +16166: +16166: +16166: static const std::string kNumFilesAtLevelPrefix; +16166: +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kCompressionRatioAtLevelPrefix; +16166: +16166: +16166: +16166: static const std::string kStats; +16166: +16166: +16166: +16166: static const std::string kSSTables; +16166: +16166: +16166: +16166: static const std::string kCFStats; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kCFStatsNoFileHistogram; +16166: +16166: +16166: +16166: static const std::string kCFFileHistogram; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kCFWriteStallStats; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kDBWriteStallStats; +16166: +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kDBStats; +16166: +16166: +16166: +16166: static const std::string kLevelStats; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kBlockCacheEntryStats; +16166: +16166: +16166: +16166: static const std::string kFastBlockCacheEntryStats; +16166: +16166: +16166: +16166: static const std::string kNumImmutableMemTable; +16166: +16166: +16166: +16166: static const std::string kNumImmutableMemTableFlushed; +16166: +16166: +16166: +16166: static const std::string kMemTableFlushPending; +16166: +16166: +16166: +16166: static const std::string kNumRunningFlushes; +16166: +16166: +16166: +16166: static const std::string kCompactionPending; +16166: +16166: +16166: +16166: static const std::string kNumRunningCompactions; +16166: +16166: +16166: +16166: static const std::string kBackgroundErrors; +16166: +16166: +16166: +16166: static const std::string kCurSizeActiveMemTable; +16166: +16166: +16166: +16166: static const std::string kCurSizeAllMemTables; +16166: +16166: +16166: +16166: static const std::string kSizeAllMemTables; +16166: +16166: +16166: +16166: static const std::string kNumEntriesActiveMemTable; +16166: +16166: +16166: +16166: static const std::string kNumEntriesImmMemTables; +16166: +16166: +16166: +16166: static const std::string kNumDeletesActiveMemTable; +16166: +16166: +16166: +16166: static const std::string kNumDeletesImmMemTables; +16166: +16166: +16166: +16166: static const std::string kEstimateNumKeys; +16166: +16166: +16166: +16166: +16166: static const std::string kEstimateTableReadersMem; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kIsFileDeletionsEnabled; +16166: +16166: +16166: +16166: static const std::string kNumSnapshots; +16166: +16166: +16166: +16166: static const std::string kOldestSnapshotTime; +16166: +16166: +16166: +16166: static const std::string kOldestSnapshotSequence; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kNumLiveVersions; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kCurrentSuperVersionNumber; +16166: +16166: +16166: +16166: +16166: static const std::string kEstimateLiveDataSize; +16166: +16166: +16166: +16166: static const std::string kMinLogNumberToKeep; +16166: +16166: +16166: +16166: +16166: static const std::string kMinObsoleteSstNumberToKeep; +16166: +16166: +16166: +16166: +16166: static const std::string kTotalSstFilesSize; +16166: +16166: +16166: +16166: static const std::string kLiveSstFilesSize; +16166: # 1246 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static const std::string kObsoleteSstFilesSize; +16166: +16166: +16166: +16166: static const std::string kLiveSstFilesSizeAtTemperature; +16166: +16166: +16166: +16166: static const std::string kBaseLevel; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kEstimatePendingCompactionBytes; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kAggregatedTableProperties; +16166: +16166: +16166: +16166: +16166: static const std::string kAggregatedTablePropertiesAtLevel; +16166: +16166: +16166: +16166: static const std::string kActualDelayedWriteRate; +16166: +16166: +16166: static const std::string kIsWriteStopped; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kEstimateOldestKeyTime; +16166: +16166: +16166: static const std::string kBlockCacheCapacity; +16166: +16166: +16166: +16166: static const std::string kBlockCacheUsage; +16166: +16166: +16166: +16166: static const std::string kBlockCachePinnedUsage; +16166: +16166: +16166: +16166: static const std::string kOptionsStatistics; +16166: +16166: +16166: +16166: static const std::string kNumBlobFiles; +16166: +16166: +16166: +16166: +16166: static const std::string kBlobStats; +16166: +16166: +16166: +16166: static const std::string kTotalBlobFileSize; +16166: +16166: +16166: +16166: static const std::string kLiveBlobFileSize; +16166: +16166: +16166: +16166: static const std::string kLiveBlobFileGarbageSize; +16166: +16166: +16166: static const std::string kBlobCacheCapacity; +16166: +16166: +16166: +16166: static const std::string kBlobCacheUsage; +16166: +16166: +16166: +16166: static const std::string kBlobCachePinnedUsage; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool GetProperty(ColumnFamilyHandle* column_family, +16166: const Slice& property, std::string* value) = 0; +16166: virtual bool GetProperty(const Slice& property, std::string* value) { +16166: return GetProperty(DefaultColumnFamily(), property, value); +16166: } +16166: +16166: +16166: +16166: virtual bool GetMapProperty(ColumnFamilyHandle* column_family, +16166: const Slice& property, +16166: std::map* value) = 0; +16166: virtual bool GetMapProperty(const Slice& property, +16166: std::map* value) { +16166: return GetMapProperty(DefaultColumnFamily(), property, value); +16166: } +16166: # 1401 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual bool GetIntProperty(ColumnFamilyHandle* column_family, +16166: const Slice& property, uint64_t* value) = 0; +16166: virtual bool GetIntProperty(const Slice& property, uint64_t* value) { +16166: return GetIntProperty(DefaultColumnFamily(), property, value); +16166: } +16166: +16166: +16166: +16166: +16166: virtual Status ResetStats() { +16166: return Status::NotSupported("Not implemented"); +16166: } +16166: +16166: +16166: +16166: virtual bool GetAggregatedIntProperty(const Slice& property, +16166: uint64_t* value) = 0; +16166: +16166: +16166: +16166: enum class SizeApproximationFlags : uint8_t { +16166: NONE = 0, +16166: INCLUDE_MEMTABLES = 1 << 0, +16166: INCLUDE_FILES = 1 << 1 +16166: }; +16166: # 1434 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status GetApproximateSizes(const SizeApproximationOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const Range* ranges, int n, +16166: uint64_t* sizes) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status GetApproximateSizes(ColumnFamilyHandle* column_family, +16166: const Range* ranges, int n, +16166: uint64_t* sizes, +16166: SizeApproximationFlags include_flags = +16166: SizeApproximationFlags::INCLUDE_FILES); +16166: +16166: virtual Status GetApproximateSizes( +16166: const Range* ranges, int n, uint64_t* sizes, +16166: SizeApproximationFlags include_flags = +16166: SizeApproximationFlags::INCLUDE_FILES) { +16166: return GetApproximateSizes(DefaultColumnFamily(), ranges, n, sizes, +16166: include_flags); +16166: } +16166: +16166: +16166: +16166: virtual void GetApproximateMemTableStats(ColumnFamilyHandle* column_family, +16166: const Range& range, +16166: uint64_t* const count, +16166: uint64_t* const size) = 0; +16166: virtual void GetApproximateMemTableStats(const Range& range, +16166: uint64_t* const count, +16166: uint64_t* const size) { +16166: GetApproximateMemTableStats(DefaultColumnFamily(), range, count, size); +16166: } +16166: # 1493 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status CompactRange(const CompactRangeOptions& options, +16166: ColumnFamilyHandle* column_family, +16166: const Slice* begin, const Slice* end) = 0; +16166: virtual Status CompactRange(const CompactRangeOptions& options, +16166: const Slice* begin, const Slice* end) { +16166: return CompactRange(options, DefaultColumnFamily(), begin, end); +16166: } +16166: # 1519 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status SetOptions( +16166: ColumnFamilyHandle* , +16166: const std::unordered_map& ) { +16166: return Status::NotSupported("Not implemented"); +16166: } +16166: +16166: virtual Status SetOptions( +16166: const std::unordered_map& new_options) { +16166: return SetOptions(DefaultColumnFamily(), new_options); +16166: } +16166: # 1539 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status SetDBOptions( +16166: const std::unordered_map& new_options) = 0; +16166: # 1549 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status CompactFiles( +16166: const CompactionOptions& compact_options, +16166: ColumnFamilyHandle* column_family, +16166: const std::vector& input_file_names, const int output_level, +16166: const int output_path_id = -1, +16166: std::vector* const output_file_names = nullptr, +16166: CompactionJobInfo* compaction_job_info = nullptr) = 0; +16166: +16166: virtual Status CompactFiles( +16166: const CompactionOptions& compact_options, +16166: const std::vector& input_file_names, const int output_level, +16166: const int output_path_id = -1, +16166: std::vector* const output_file_names = nullptr, +16166: CompactionJobInfo* compaction_job_info = nullptr) { +16166: return CompactFiles(compact_options, DefaultColumnFamily(), +16166: input_file_names, output_level, output_path_id, +16166: output_file_names, compaction_job_info); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual Status PauseBackgroundWork() = 0; +16166: virtual Status ContinueBackgroundWork() = 0; +16166: # 1584 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status EnableAutoCompaction( +16166: const std::vector& column_family_handles) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void DisableManualCompaction() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void EnableManualCompaction() = 0; +16166: # 1608 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status WaitForCompact( +16166: const WaitForCompactOptions& ) = 0; +16166: +16166: +16166: virtual int NumberLevels(ColumnFamilyHandle* column_family) = 0; +16166: virtual int NumberLevels() { return NumberLevels(DefaultColumnFamily()); } +16166: +16166: +16166: +16166: virtual int MaxMemCompactionLevel(ColumnFamilyHandle* column_family) = 0; +16166: virtual int MaxMemCompactionLevel() { +16166: return MaxMemCompactionLevel(DefaultColumnFamily()); +16166: } +16166: +16166: +16166: virtual int Level0StopWriteTrigger(ColumnFamilyHandle* column_family) = 0; +16166: virtual int Level0StopWriteTrigger() { +16166: return Level0StopWriteTrigger(DefaultColumnFamily()); +16166: } +16166: +16166: +16166: +16166: virtual const std::string& GetName() const = 0; +16166: +16166: +16166: virtual Env* GetEnv() const = 0; +16166: +16166: +16166: +16166: virtual FileSystem* GetFileSystem() const; +16166: +16166: +16166: +16166: +16166: +16166: virtual Options GetOptions(ColumnFamilyHandle* column_family) const = 0; +16166: virtual Options GetOptions() const { +16166: return GetOptions(DefaultColumnFamily()); +16166: } +16166: +16166: virtual DBOptions GetDBOptions() const = 0; +16166: +16166: +16166: +16166: +16166: virtual Status Flush(const FlushOptions& options, +16166: ColumnFamilyHandle* column_family) = 0; +16166: virtual Status Flush(const FlushOptions& options) { +16166: return Flush(options, DefaultColumnFamily()); +16166: } +16166: # 1666 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status Flush( +16166: const FlushOptions& options, +16166: const std::vector& column_families) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status FlushWAL(bool ) { +16166: return Status::NotSupported("FlushWAL not implemented"); +16166: } +16166: # 1687 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status SyncWAL() = 0; +16166: # 1698 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status LockWAL() { +16166: return Status::NotSupported("LockWAL not implemented"); +16166: } +16166: +16166: +16166: +16166: +16166: virtual Status UnlockWAL() { +16166: return Status::NotSupported("UnlockWAL not implemented"); +16166: } +16166: +16166: +16166: virtual SequenceNumber GetLatestSequenceNumber() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status IncreaseFullHistoryTsLow(ColumnFamilyHandle* column_family, +16166: std::string ts_low) = 0; +16166: +16166: +16166: virtual Status GetFullHistoryTsLow(ColumnFamilyHandle* column_f[ 25%] Building CXX object CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o +amily, +16166: std::string* ts_low) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Status DisableFileDeletions() = 0; +16166: # 1740 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status EnableFileDeletions() = 0; +16166: # 1752 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status GetCreationTimeOfOldestFile(uint64_t* creation_time) = 0; +16166: # 1766 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status GetUpdatesSince( +16166: SequenceNumber seq_number, std::unique_ptr* iter, +16166: const TransactionLogIterator::ReadOptions& read_options = +16166: TransactionLogIterator::ReadOptions()) = 0; +16166: # 1784 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status DeleteFile(std::string name) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void GetLiveFilesMetaData( +16166: std::vector* ) {} +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetLiveFilesChecksumInfo(FileChecksumList* checksum_list) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetLiveFilesStorageInfo( +16166: const LiveFilesStorageInfoOptions& opts, +16166: std::vector* files) = 0; +16166: +16166: +16166: +16166: virtual void GetColumnFamilyMetaData(ColumnFamilyHandle* , +16166: ColumnFamilyMetaData* ) {} +16166: +16166: +16166: void GetColumnFamilyMetaData(ColumnFamilyMetaData* metadata) { +16166: GetColumnFamilyMetaData(DefaultColumnFamily(), metadata); +16166: } +16166: +16166: +16166: +16166: virtual void GetAllColumnFamilyMetaData( +16166: std::vector* ) {} +16166: # 1839 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status GetLiveFiles(std::vector&, +16166: uint64_t* manifest_file_size, +16166: bool flush_memtable = true) = 0; +16166: +16166: +16166: virtual Status GetSortedWalFiles(VectorWalPtr& files) = 0; +16166: # 1853 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status GetCurrentWalFile( +16166: std::unique_ptr* current_log_file) = 0; +16166: # 1897 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status IngestExternalFile( +16166: ColumnFamilyHandle* column_family, +16166: const std::vector& external_files, +16166: const IngestExternalFileOptions& options) = 0; +16166: +16166: virtual Status IngestExternalFile( +16166: const std::vector& external_files, +16166: const IngestExternalFileOptions& options) { +16166: return IngestExternalFile(DefaultColumnFamily(), external_files, options); +16166: } +16166: # 1923 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status IngestExternalFiles( +16166: const std::vector& args) = 0; +16166: # 1943 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status CreateColumnFamilyWithImport( +16166: const ColumnFamilyOptions& options, const std::string& column_family_name, +16166: const ImportColumnFamilyOptions& import_options, +16166: const ExportImportFilesMetaData& metadata, ColumnFamilyHandle** handle) { +16166: const std::vector& metadatas{&metadata}; +16166: return CreateColumnFamilyWithImport(options, column_family_name, +16166: import_options, metadatas, handle); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status CreateColumnFamilyWithImport( +16166: const ColumnFamilyOptions& options, const std::string& column_family_name, +16166: const ImportColumnFamilyOptions& import_options, +16166: const std::vector& metadatas, +16166: ColumnFamilyHandle** handle) = 0; +16166: # 1976 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status ClipColumnFamily(ColumnFamilyHandle* column_family, +16166: const Slice& begin_key, +16166: const Slice& end_key) = 0; +16166: +16166: +16166: +16166: virtual Status VerifyFileChecksums(const ReadOptions& ) { +16166: return Status::NotSupported("File verification not supported"); +16166: } +16166: +16166: +16166: +16166: virtual Status VerifyChecksum(const ReadOptions& read_options) = 0; +16166: +16166: virtual Status VerifyChecksum() { return VerifyChecksum(ReadOptions()); } +16166: +16166: +16166: +16166: +16166: virtual Status GetDbIdentity(std::string& identity) const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetDbSessionId(std::string& session_id) const = 0; +16166: +16166: +16166: virtual ColumnFamilyHandle* DefaultColumnFamily() const = 0; +16166: +16166: virtual Status GetPropertiesOfAllTables(ColumnFamilyHandle* column_family, +16166: TablePropertiesCollection* props) = 0; +16166: virtual Status GetPropertiesOfAllTables(TablePropertiesCollection* props) { +16166: return GetPropertiesOfAllTables(DefaultColumnFamily(), props); +16166: } +16166: virtual Status GetPropertiesOfTablesInRange( +16166: ColumnFamilyHandle* column_family, const Range* range, std::size_t n, +16166: TablePropertiesCollection* props) = 0; +16166: +16166: +16166: virtual Status GetPropertiesOfTablesForLevels( +16166: ColumnFamilyHandle* , +16166: std::vector< +16166: std::unique_ptr>* ) { +16166: return Status::NotSupported( +16166: "GetPropertiesOfTablesForLevels() is not implemented."); +16166: } +16166: +16166: virtual Status SuggestCompactRange(ColumnFamilyHandle* , +16166: const Slice* , +16166: const Slice* ) { +16166: return Status::NotSupported("SuggestCompactRange() is not implemented."); +16166: } +16166: +16166: +16166: +16166: virtual Status PromoteL0(ColumnFamilyHandle* , +16166: int ) { +16166: return Status::NotSupported("PromoteL0() is not implemented."); +16166: } +16166: +16166: +16166: virtual Status StartTrace(const TraceOptions& , +16166: std::unique_ptr&& ) { +16166: return Status::NotSupported("StartTrace() is not implemented."); +16166: } +16166: +16166: virtual Status EndTrace() { +16166: return Status::NotSupported("EndTrace() is not implemented."); +16166: } +16166: +16166: +16166: virtual Status StartIOTrace(const TraceOptions& , +16166: std::unique_ptr&& ) { +16166: return Status::NotSupported("StartIOTrace() is not implemented."); +16166: } +16166: +16166: virtual Status EndIOTrace() { +16166: return Status::NotSupported("EndIOTrace() is not implemented."); +16166: } +16166: +16166: +16166: virtual Status StartBlockCacheTrace( +16166: const TraceOptions& , +16166: std::unique_ptr&& ) { +16166: return Status::NotSupported("StartBlockCacheTrace() is not implemented."); +16166: } +16166: +16166: virtual Status StartBlockCacheTrace( +16166: const BlockCacheTraceOptions& , +16166: std::unique_ptr&& ) { +16166: return Status::NotSupported("StartBlockCacheTrace() is not implemented."); +16166: } +16166: +16166: virtual Status EndBlockCacheTrace() { +16166: return Status::NotSupported("EndBlockCacheTrace() is not implemented."); +16166: } +16166: +16166: +16166: virtual Status NewDefaultReplayer( +16166: const std::vector& , +16166: std::unique_ptr&& , +16166: std::unique_ptr* ) { +16166: return Status::NotSupported("NewDefaultReplayer() is not implemented."); +16166: } +16166: +16166: +16166: virtual DB* GetRootDB() { return this; } +16166: +16166: +16166: +16166: +16166: virtual Status GetStatsHistory( +16166: uint64_t , uint64_t , +16166: std::unique_ptr* ) { +16166: return Status::NotSupported("GetStatsHistory() is not implemented."); +16166: } +16166: # 2105 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: virtual Status TryCatchUpWithPrimary() { +16166: return Status::NotSupported("Supported only by secondary instance"); +16166: } +16166: }; +16166: +16166: struct WriteStallStatsMapKeys { +16166: static const std::string& TotalStops(); +16166: static const std::string& TotalDelays(); +16166: +16166: static const std::string& CFL0FileCountLimitDelaysWithOngoingCompaction(); +16166: static const std::string& CFL0FileCountLimitStopsWithOngoingCompaction(); +16166: # 2124 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: static std::string CauseConditionCount(WriteStallCause cause, +16166: WriteStallCondition condition); +16166: }; +16166: +16166: +16166: inline DB::SizeApproximationFlags operator&(DB::SizeApproximationFlags lhs, +16166: DB::SizeApproximationFlags rhs) { +16166: return static_cast(static_cast(lhs) & +16166: static_cast(rhs)); +16166: } +16166: inline DB::SizeApproximationFlags operator|(DB::SizeApproximationFlags lhs, +16166: DB::SizeApproximationFlags rhs) { +16166: return static_cast(static_cast(lhs) | +16166: static_cast(rhs)); +16166: } +16166: +16166: inline Status DB::GetApproximateSizes(ColumnFamilyHandle* column_family, +16166: const Range* ranges, int n, +16166: uint64_t* sizes, +16166: SizeApproximationFlags include_flags) { +16166: SizeApproximationOptions options; +16166: options.include_memtables = +16166: ((include_flags & SizeApproximationFlags::INCLUDE_MEMTABLES) != +16166: SizeApproximationFlags::NONE); +16166: options.include_files = +16166: ((include_flags & SizeApproximationFlags::INCLUDE_FILES) != +16166: SizeApproximationFlags::NONE); +16166: return GetApproximateSizes(options, column_family, ranges, n, sizes); +16166: } +16166: +16166: +16166: +16166: Status DestroyDB(const std::string& name, const Options& options, +16166: const std::vector& column_families = +16166: std::vector()); +16166: # 2169 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/db.h" +16166: Status RepairDB(const std::string& dbname, const DBOptions& db_options, +16166: const std::vector& column_families); +16166: +16166: +16166: +16166: Status RepairDB(const std::string& dbname, const DBOptions& db_options, +16166: const std::vector& column_families, +16166: const ColumnFamilyOptions& unknown_cf_opts); +16166: +16166: +16166: +16166: Status RepairDB(const std::string& dbname, const Options& options); +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: const std::vector empty_operand_list; +16166: +16166: +16166: +16166: +16166: +16166: class MergeContext { +16166: public: +16166: GetMergeOperandsOptions* get_merge_operands_options = nullptr; +16166: +16166: +16166: void Clear() { +16166: if (operand_list_) { +16166: operand_list_->clear(); +16166: copied_operands_->clear(); +16166: } +16166: } +16166: +16166: +16166: void PushOperand(const Slice& operand_slice, bool operand_pinned = false) { +16166: Initialize(); +16166: SetDirectionBackward(); +16166: +16166: if (operand_pinned) { +16166: operand_list_->push_back(operand_slice); +16166: } else { +16166: +16166: copied_operands_->emplace_back( +16166: new std::string(operand_slice.data(), operand_slice.size())); +16166: operand_list_->push_back(*copied_operands_->back()); +16166: } +16166: } +16166: +16166: +16166: void PushOperandBack(const Slice& operand_slice, +16166: bool operand_pinned = false) { +16166: Initialize(); +16166: SetDirectionForward(); +16166: +16166: if (operand_pinned) { +16166: operand_list_->push_back(operand_slice); +16166: } else { +16166: +16166: copied_operands_->emplace_back( +16166: new std::string(operand_slice.data(), operand_slice.size())); +16166: operand_list_->push_back(*copied_operands_->back()); +16166: } +16166: } +16166: +16166: +16166: size_t GetNumOperands() const { +16166: if (!operand_list_) { +16166: return 0; +16166: } +16166: return operand_list_->size(); +16166: } +16166: +16166: +16166: Slice GetOperand(int index) const { +16166: +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 3 4 +16166: (static_cast ( +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" +16166: operand_list_ +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" +16166: "operand_list_" +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/db/merge_context.h" +16166: ; +16166: +16166: SetDirectionForward(); +16166: return (*operand_list_)[index]; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: const std::vector& GetOperands() const { +16166: return GetOperandsDirectionForward(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: const std::vector& GetOperandsDirectionForward() const { +16166: if (!operand_list_) { +16166: return empty_operand_list; +16166: } +16166: +16166: SetDirectionForward(); +16166: return *operand_list_; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: const std::vector& GetOperandsDirectionBackward() const { +16166: if (!operand_list_) { +16166: return empty_operand_list; +16166: } +16166: +16166: SetDirectionBackward(); +16166: return *operand_list_; +16166: } +16166: +16166: private: +16166: void Initialize() { +16166: if (!operand_list_) { +16166: operand_list_.reset(new std::vector()); +16166: copied_operands_.reset(new std::vector>()); +16166: } +16166: } +16166: +16166: void SetDirectionForward() const { +16166: if (operands_reversed_ == true) { +16166: std::reverse(operand_list_->begin(), operand_list_->end()); +16166: operands_reversed_ = false; +16166: } +16166: } +16166: +16166: void SetDirectionBackward() const { +16166: if (operands_reversed_ == false) { +16166: std::reverse(operand_list_->begin(), operand_list_->end()); +16166: operands_reversed_ = true; +16166: } +16166: } +16166: +16166: +16166: mutable std::unique_ptr> operand_list_; +16166: +16166: std::unique_ptr>> copied_operands_; +16166: mutable bool operands_reversed_ = true; +16166: }; +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/iterator" 1 3 +16166: # 58 "/usr/include/c++/14/iterator" 3 +16166: +16166: # 59 "/usr/include/c++/14/iterator" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stream_iterator.h" 1 3 +16166: # 33 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: +16166: # 34 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 40 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 50 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wdeprecated-declarations" +16166: +16166: +16166: template, typename _Dist = ptrdiff_t> +16166: class istream_iterator +16166: : public iterator +16166: { +16166: public: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef basic_istream<_CharT, _Traits> istream_type; +16166: +16166: private: +16166: istream_type* _M_stream; +16166: _Tp _M_value; +16166: +16166: +16166: +16166: bool _M_ok; +16166: +16166: public: +16166: +16166: constexpr istream_iterator() +16166: noexcept(is_nothrow_default_constructible<_Tp>::value) +16166: : _M_stream(0), _M_value(), _M_ok(false) {} +16166: +16166: +16166: istream_iterator(istream_type& __s) +16166: : _M_stream(std::__addressof(__s)), _M_ok(true) +16166: { _M_read(); } +16166: +16166: constexpr +16166: istream_iterator(const istream_iterator& __obj) +16166: noexcept(is_nothrow_copy_constructible<_Tp>::value) +16166: : _M_stream(__obj._M_stream), _M_value(__obj._M_value), +16166: _M_ok(__obj._M_ok) +16166: { } +16166: # 98 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: istream_iterator& operator=(const istream_iterator&) = default; +16166: ~istream_iterator() = default; +16166: +16166: +16166: [[__nodiscard__]] +16166: const _Tp& +16166: operator*() const noexcept +16166: { +16166: +16166: +16166: ; +16166: return _M_value; +16166: } +16166: +16166: [[__nodiscard__]] +16166: const _Tp* +16166: operator->() const noexcept +16166: { return std::__addressof((operator*())); } +16166: +16166: istream_iterator& +16166: operator++() +16166: { +16166: +16166: +16166: ; +16166: _M_read(); +16166: return *this; +16166: } +16166: +16166: istream_iterator +16166: operator++(int) +16166: { +16166: +16166: +16166: ; +16166: istream_iterator __tmp = *this; +16166: _M_read(); +16166: return __tmp; +16166: } +16166: +16166: private: +16166: bool +16166: _M_equal(const istream_iterator& __x) const noexcept +16166: { +16166: +16166: +16166: return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); +16166: } +16166: +16166: void +16166: _M_read() +16166: { +16166: if (_M_stream && !(*_M_stream >> _M_value)) +16166: { +16166: _M_stream = 0; +16166: _M_ok = false; +16166: } +16166: } +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator==(const istream_iterator& __x, const istream_iterator& __y) +16166: noexcept +16166: { return __x._M_equal(__y); } +16166: +16166: +16166: +16166: +16166: [[__nodiscard__]] +16166: friend bool +16166: operator!=(const istream_iterator& __x, const istream_iterator& __y) +16166: noexcept +16166: { return !__x._M_equal(__y); } +16166: # 181 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: }; +16166: # 194 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: template > +16166: class ostream_iterator +16166: : public iterator +16166: { +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef basic_ostream<_CharT, _Traits> ostream_type; +16166: +16166: +16166: private: +16166: ostream_type* _M_stream; +16166: const _CharT* _M_string; +16166: +16166: public: +16166: +16166: ostream_iterator(ostream_type& __s) noexcept +16166: : _M_stream(std::__addressof(__s)), _M_string(0) {} +16166: # 229 "/usr/include/c++/14/bits/stream_iterator.h" 3 +16166: ostream_iterator(ostream_type& __s, const _CharT* __c) noexcept +16166: : _M_stream(std::__addressof(__s)), _M_string(__c) { } +16166: +16166: +16166: ostream_iterator(const ostream_iterator& __obj) noexcept +16166: : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { } +16166: +16166: +16166: ostream_iterator& operator=(const ostream_iterator&) = default; +16166: +16166: +16166: +16166: +16166: ostream_iterator& +16166: operator=(const _Tp& __value) +16166: { +16166: +16166: +16166: ; +16166: *_M_stream << __value; +16166: if (_M_string) +16166: *_M_stream << _M_string; +16166: return *this; +16166: } +16166: +16166: [[__nodiscard__]] +16166: ostream_iterator& +16166: operator*() noexcept +16166: { return *this; } +16166: +16166: ostream_iterator& +16166: operator++() noexcept +16166: { return *this; } +16166: +16166: ostream_iterator& +16166: operator++(int) noexcept +16166: { return *this; } +16166: }; +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: +16166: } +16166: # 66 "/usr/include/c++/14/iterator" 2 3 +16166: # 78 "/usr/include/c++/14/iterator" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 79 "/usr/include/c++/14/iterator" 2 3 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: +16166: +16166: # 1 "/usr/include/c++/14/set" 1 3 +16166: # 58 "/usr/include/c++/14/set" 3 +16166: +16166: # 59 "/usr/include/c++/14/set" 3 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/stl_set.h" 1 3 +16166: # 64 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: class multiset; +16166: # 94 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template, +16166: typename _Alloc = std::allocator<_Key> > +16166: class set +16166: { +16166: # 110 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: static_assert(is_same::type, _Key>::value, +16166: "std::set must have a non-const, non-volatile value_type"); +16166: +16166: +16166: +16166: +16166: +16166: +16166: public: +16166: +16166: +16166: +16166: typedef _Key key_type; +16166: typedef _Key value_type; +16166: typedef _Compare key_compare; +16166: typedef _Compare value_compare; +16166: typedef _Alloc allocator_type; +16166: +16166: +16166: private: +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_Key>::other _Key_alloc_type; +16166: +16166: typedef _Rb_tree, +16166: key_compare, _Key_alloc_type> _Rep_type; +16166: _Rep_type _M_t; +16166: +16166: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; +16166: +16166: public: +16166: +16166: +16166: typedef typename _Alloc_traits::pointer pointer; +16166: typedef typename _Alloc_traits::const_pointer const_pointer; +16166: typedef typename _Alloc_traits::reference reference; +16166: typedef typename _Alloc_traits::const_reference const_reference; +16166: +16166: +16166: +16166: typedef typename _Rep_type::const_iterator iterator; +16166: typedef typename _Rep_type::const_iterator const_iterator; +16166: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; +16166: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +16166: typedef typename _Rep_type::size_type size_type; +16166: typedef typename _Rep_type::difference_type difference_type; +16166: +16166: +16166: +16166: using node_type = typename _Rep_type::node_type; +16166: using insert_return_type = typename _Rep_type::insert_return_type; +16166: # 169 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: set() = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: set(const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Key_alloc_type(__a)) { } +16166: # 192 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template +16166: set(_InputIterator __first, _InputIterator __last) +16166: : _M_t() +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: # 209 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template +16166: set(_InputIterator __first, _InputIterator __last, +16166: const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: # 225 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: set(const set&) = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: set(set&&) = default; +16166: # 245 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: set(initializer_list __l, +16166: const _Compare& __comp = _Compare(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +16166: +16166: +16166: explicit +16166: set(const allocator_type& __a) +16166: : _M_t(_Key_alloc_type(__a)) { } +16166: +16166: +16166: set(const set& __x, const __type_identity_t& __a) +16166: : _M_t(__x._M_t, _Key_alloc_type(__a)) { } +16166: +16166: +16166: set(set&& __x, const __type_identity_t& __a) +16166: noexcept(is_nothrow_copy_constructible<_Compare>::value +16166: && _Alloc_traits::_S_always_equal()) +16166: : _M_t(std::move(__x._M_t), _Key_alloc_type(__a)) { } +16166: +16166: +16166: set(initializer_list __l, const allocator_type& __a) +16166: : _M_t(_Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__l.begin(), __l.end()); } +16166: +16166: +16166: template +16166: set(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a) +16166: : _M_t(_Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~set() = default; +16166: # 299 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: set& +16166: operator=(const set&) = default; +16166: +16166: +16166: set& +16166: operator=(set&&) = default; +16166: # 317 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: set& +16166: operator=(initializer_list __l) +16166: { +16166: _M_t._M_assign_unique(__l.begin(), __l.end()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: key_compare +16166: key_comp() const +16166: { return _M_t.key_comp(); } +16166: +16166: value_compare +16166: value_comp() const +16166: { return _M_t.key_comp(); } +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_t.get_allocator()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: begin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: cbegin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: cend() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: crbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: crend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_t.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_t.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_t.max_size(); } +16166: # 442 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: void +16166: swap(set& __x) +16166: noexcept(__is_nothrow_swappable<_Compare>::value) +16166: { _M_t.swap(__x._M_t); } +16166: # 462 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template +16166: std::pair +16166: emplace(_Args&&... __args) +16166: { return _M_t._M_emplace_unique(std::forward<_Args>(__args)...); } +16166: # 488 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { +16166: return _M_t._M_emplace_hint_unique(__pos, +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 510 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: std::pair +16166: insert(const value_type& __x) +16166: { +16166: std::pair __p = +16166: _M_t._M_insert_unique(__x); +16166: return std::pair(__p.first, __p.second); +16166: } +16166: +16166: +16166: std::pair +16166: insert(value_type&& __x) +16166: { +16166: std::pair __p = +16166: _M_t._M_insert_unique(std::move(__x)); +16166: return std::pair(__p.first, __p.second); +16166: } +16166: # 547 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: iterator +16166: insert(const_iterator __position, const value_type& __x) +16166: { return _M_t._M_insert_unique_(__position, __x); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __position, value_type&& __x) +16166: { return _M_t._M_insert_unique_(__position, std::move(__x)); } +16166: # 566 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_t._M_insert_range_unique(__first, __last); } +16166: # 579 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: void +16166: insert(initializer_list __l) +16166: { this->insert(__l.begin(), __l.end()); } +16166: +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_t.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __x) +16166: { return _M_t.extract(__x); } +16166: +16166: +16166: insert_return_type +16166: insert(node_type&& __nh) +16166: { return _M_t._M_reinsert_node_unique(std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, node_type&& __nh) +16166: { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } +16166: +16166: template +16166: friend struct std::_Rb_tree_merge_helper; +16166: +16166: template +16166: void +16166: merge(set<_Key, _Compare1, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(set<_Key, _Compare1, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(multiset<_Key, _Compare1, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(multiset<_Key, _Compare1, _Alloc>&& __source) +16166: { merge(__source); } +16166: # 654 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_t.erase(__position); } +16166: # 685 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_t.erase(__x); } +16166: # 706 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_t.erase(__first, __last); } +16166: # 734 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: void +16166: clear() noexcept +16166: { _M_t.clear(); } +16166: # 749 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } +16166: +16166: +16166: template +16166: auto +16166: count(const _Kt& __x) const +16166: -> decltype(_M_t._M_count_tr(__x)) +16166: { return _M_t._M_count_tr(__x); } +16166: # 795 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_t.find(__x); } +16166: +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_t.find(__x); } +16166: +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) +16166: -> decltype(iterator{_M_t._M_find_tr(__x)}) +16166: { return iterator{_M_t._M_find_tr(__x)}; } +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) const +16166: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) +16166: { return const_iterator{_M_t._M_find_tr(__x)}; } +16166: # 830 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: iterator +16166: lower_bound(const key_type& __x) +16166: { return _M_t.lower_bound(__x); } +16166: +16166: const_iterator +16166: lower_bound(const key_type& __x) const +16166: { return _M_t.lower_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return iterator(_M_t._M_lower_bound_tr(__x)); } +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) const +16166: -> decltype(const_iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return const_iterator(_M_t._M_lower_bound_tr(__x)); } +16166: # 860 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: iterator +16166: upper_bound(const key_type& __x) +16166: { return _M_t.upper_bound(__x); } +16166: +16166: const_iterator +16166: upper_bound(const key_type& __x) const +16166: { return _M_t.upper_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return iterator(_M_t._M_upper_bound_tr(__x)); } +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) const +16166: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return const_iterator(_M_t._M_upper_bound_tr(__x)); } +16166: # 899 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_t.equal_range(__x); } +16166: +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_t.equal_range(__x); } +16166: +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) +16166: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +16166: { return pair(_M_t._M_equal_range_tr(__x)); } +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) const +16166: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +16166: { return pair(_M_t._M_equal_range_tr(__x)); } +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); +16166: +16166: }; +16166: +16166: +16166: +16166: template::value_type>, +16166: typename _Allocator = +16166: allocator::value_type>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: set(_InputIterator, _InputIterator, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> set::value_type, +16166: _Compare, _Allocator>; +16166: +16166: template, +16166: typename _Allocator = allocator<_Key>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: set(initializer_list<_Key>, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> set<_Key, _Compare, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: set(_InputIterator, _InputIterator, _Allocator) +16166: -> set::value_type, +16166: less::value_type>, +16166: _Allocator>; +16166: +16166: template> +16166: set(initializer_list<_Key>, _Allocator) +16166: -> set<_Key, less<_Key>, _Allocator>; +16166: # 985 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template +16166: inline bool +16166: operator==(const set<_Key, _Compare, _Alloc>& __x, +16166: const set<_Key, _Compare, _Alloc>& __y) +16166: { return __x._M_t == __y._M_t; } +16166: # 1023 "/usr/include/c++/14/bits/stl_set.h" 3 +16166: template +16166: inline bool +16166: operator<(const set<_Key, _Compare, _Alloc>& __x, +16166: const set<_Key, _Compare, _Alloc>& __y) +16166: { return __x._M_t < __y._M_t; } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const set<_Key, _Compare, _Alloc>& __x, +16166: const set<_Key, _Compare, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>(const set<_Key, _Compare, _Alloc>& __x, +16166: const set<_Key, _Compare, _Alloc>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: inline bool +16166: operator<=(const set<_Key, _Compare, _Alloc>& __x, +16166: const set<_Key, _Compare, _Alloc>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>=(const set<_Key, _Compare, _Alloc>& __x, +16166: const set<_Key, _Compare, _Alloc>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct +16166: _Rb_tree_merge_helper, _Cmp2> +16166: { +16166: private: +16166: friend class std::set<_Val, _Cmp1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set) +16166: { return __set._M_t; } +16166: +16166: static auto& +16166: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set) +16166: { return __set._M_t; } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 64 "/usr/include/c++/14/set" 2 3 +16166: # 1 "/usr/include/c++/14/bits/stl_multiset.h" 1 3 +16166: # 64 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: class set; +16166: # 95 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template , +16166: typename _Alloc = std::allocator<_Key> > +16166: class multiset +16166: { +16166: # 111 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: static_assert(is_same::type, _Key>::value, +16166: "std::multiset must have a non-const, non-volatile value_type"); +16166: +16166: +16166: +16166: +16166: +16166: +16166: public: +16166: +16166: typedef _Key key_type; +16166: typedef _Key value_type; +16166: typedef _Compare key_compare; +16166: typedef _Compare value_compare; +16166: typedef _Alloc allocator_type; +16166: +16166: private: +16166: +16166: typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template +16166: rebind<_Key>::other _Key_alloc_type; +16166: +16166: typedef _Rb_tree, +16166: key_compare, _Key_alloc_type> _Rep_type; +16166: +16166: _Rep_type _M_t; +16166: +16166: typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits; +16166: +16166: public: +16166: typedef typename _Alloc_traits::pointer pointer; +16166: typedef typename _Alloc_traits::const_pointer const_pointer; +16166: typedef typename _Alloc_traits::reference reference; +16166: typedef typename _Alloc_traits::const_reference const_reference; +16166: +16166: +16166: +16166: typedef typename _Rep_type::const_iterator iterator; +16166: typedef typename _Rep_type::const_iterator const_iterator; +16166: typedef typename _Rep_type::const_reverse_iterator reverse_iterator; +16166: typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; +16166: typedef typename _Rep_type::size_type size_type; +16166: typedef typename _Rep_type::difference_type difference_type; +16166: +16166: +16166: using node_type = typename _Rep_type::node_type; +16166: # 165 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: multiset() = default; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: multiset(const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Key_alloc_type(__a)) { } +16166: # 187 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template +16166: multiset(_InputIterator __first, _InputIterator __last) +16166: : _M_t() +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: # 203 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template +16166: multiset(_InputIterator __first, _InputIterator __last, +16166: const _Compare& __comp, +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: # 219 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: multiset(const multiset&) = default; +16166: # 228 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: multiset(multiset&&) = default; +16166: # 240 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: multiset(initializer_list __l, +16166: const _Compare& __comp = _Compare(), +16166: const allocator_type& __a = allocator_type()) +16166: : _M_t(__comp, _Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +16166: +16166: +16166: explicit +16166: multiset(const allocator_type& __a) +16166: : _M_t(_Key_alloc_type(__a)) { } +16166: +16166: +16166: multiset(const multiset& __m, +16166: const __type_identity_t& __a) +16166: : _M_t(__m._M_t, _Key_alloc_type(__a)) { } +16166: +16166: +16166: multiset(multiset&& __m, const __type_identity_t& __a) +16166: noexcept(is_nothrow_copy_constructible<_Compare>::value +16166: && _Alloc_traits::_S_always_equal()) +16166: : _M_t(std::move(__m._M_t), _Key_alloc_type(__a)) { } +16166: +16166: +16166: multiset(initializer_list __l, const allocator_type& __a) +16166: : _M_t(_Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__l.begin(), __l.end()); } +16166: +16166: +16166: template +16166: multiset(_InputIterator __first, _InputIterator __last, +16166: const allocator_type& __a) +16166: : _M_t(_Key_alloc_type(__a)) +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~multiset() = default; +16166: # 295 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: multiset& +16166: operator=(const multiset&) = default; +16166: +16166: +16166: multiset& +16166: operator=(multiset&&) = default; +16166: # 313 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: multiset& +16166: operator=(initializer_list __l) +16166: { +16166: _M_t._M_assign_equal(__l.begin(), __l.end()); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: key_compare +16166: key_comp() const +16166: { return _M_t.key_comp(); } +16166: +16166: value_compare +16166: value_comp() const +16166: { return _M_t.key_comp(); } +16166: +16166: allocator_type +16166: get_allocator() const noexcept +16166: { return allocator_type(_M_t.get_allocator()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: begin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: end() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: rend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: cbegin() const noexcept +16166: { return _M_t.begin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: iterator +16166: cend() const noexcept +16166: { return _M_t.end(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: crbegin() const noexcept +16166: { return _M_t.rbegin(); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: reverse_iterator +16166: crend() const noexcept +16166: { return _M_t.rend(); } +16166: +16166: +16166: +16166: [[__nodiscard__]] bool +16166: empty() const noexcept +16166: { return _M_t.empty(); } +16166: +16166: +16166: size_type +16166: size() const noexcept +16166: { return _M_t.size(); } +16166: +16166: +16166: size_type +16166: max_size() const noexcept +16166: { return _M_t.max_size(); } +16166: # 438 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: void +16166: swap(multiset& __x) +16166: noexcept(__is_nothrow_swappable<_Compare>::value) +16166: { _M_t.swap(__x._M_t); } +16166: # 457 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template +16166: iterator +16166: emplace(_Args&&... __args) +16166: { return _M_t._M_emplace_equal(std::forward<_Args>(__args)...); } +16166: # 483 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template +16166: iterator +16166: emplace_hint(const_iterator __pos, _Args&&... __args) +16166: { +16166: return _M_t._M_emplace_hint_equal(__pos, +16166: std::forward<_Args>(__args)...); +16166: } +16166: # 503 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: iterator +16166: insert(const value_type& __x) +16166: { return _M_t._M_insert_equal(__x); } +16166: +16166: +16166: iterator +16166: insert(value_type&& __x) +16166: { return _M_t._M_insert_equal(std::move(__x)); } +16166: # 533 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: iterator +16166: insert(const_iterator __position, const value_type& __x) +16166: { return _M_t._M_insert_equal_(__position, __x); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __position, value_type&& __x) +16166: { return _M_t._M_insert_equal_(__position, std::move(__x)); } +16166: # 551 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template +16166: void +16166: insert(_InputIterator __first, _InputIterator __last) +16166: { _M_t._M_insert_range_equal(__first, __last); } +16166: # 564 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: void +16166: insert(initializer_list __l) +16166: { this->insert(__l.begin(), __l.end()); } +16166: +16166: +16166: +16166: +16166: node_type +16166: extract(const_iterator __pos) +16166: { +16166: do { if (std::__is_constant_evaluated() && !bool(__pos != end())) std::__glibcxx_assert_fail(); } while (false); +16166: return _M_t.extract(__pos); +16166: } +16166: +16166: +16166: node_type +16166: extract(const key_type& __x) +16166: { return _M_t.extract(__x); } +16166: +16166: +16166: iterator +16166: insert(node_type&& __nh) +16166: { return _M_t._M_reinsert_node_equal(std::move(__nh)); } +16166: +16166: +16166: iterator +16166: insert(const_iterator __hint, node_type&& __nh) +16166: { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } +16166: +16166: template +16166: friend struct std::_Rb_tree_merge_helper; +16166: +16166: template +16166: void +16166: merge(multiset<_Key, _Compare1, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(multiset<_Key, _Compare1, _Alloc>&& __source) +16166: { merge(__source); } +16166: +16166: template +16166: void +16166: merge(set<_Key, _Compare1, _Alloc>& __source) +16166: { +16166: using _Merge_helper = _Rb_tree_merge_helper; +16166: _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); +16166: } +16166: +16166: template +16166: void +16166: merge(set<_Key, _Compare1, _Alloc>&& __source) +16166: { merge(__source); } +16166: # 639 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(const_iterator __position) +16166: { return _M_t.erase(__position); } +16166: # 670 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: size_type +16166: erase(const key_type& __x) +16166: { return _M_t.erase(__x); } +16166: # 691 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: __attribute ((__abi_tag__ ("cxx11"))) +16166: iterator +16166: erase(const_iterator __first, const_iterator __last) +16166: { return _M_t.erase(__first, __last); } +16166: # 719 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: void +16166: clear() noexcept +16166: { _M_t.clear(); } +16166: # 731 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: size_type +16166: count(const key_type& __x) const +16166: { return _M_t.count(__x); } +16166: +16166: +16166: template +16166: auto +16166: count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x)) +16166: { return _M_t._M_count_tr(__x); } +16166: # 776 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: iterator +16166: find(const key_type& __x) +16166: { return _M_t.find(__x); } +16166: +16166: const_iterator +16166: find(const key_type& __x) const +16166: { return _M_t.find(__x); } +16166: +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) +16166: -> decltype(iterator{_M_t._M_find_tr(__x)}) +16166: { return iterator{_M_t._M_find_tr(__x)}; } +16166: +16166: template +16166: auto +16166: find(const _Kt& __x) const +16166: -> decltype(const_iterator{_M_t._M_find_tr(__x)}) +16166: { return const_iterator{_M_t._M_find_tr(__x)}; } +16166: # 811 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: iterator +16166: lower_bound(const key_type& __x) +16166: { return _M_t.lower_bound(__x); } +16166: +16166: const_iterator +16166: lower_bound(const key_type& __x) const +16166: { return _M_t.lower_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return iterator(_M_t._M_lower_bound_tr(__x)); } +16166: +16166: template +16166: auto +16166: lower_bound(const _Kt& __x) const +16166: -> decltype(iterator(_M_t._M_lower_bound_tr(__x))) +16166: { return iterator(_M_t._M_lower_bound_tr(__x)); } +16166: # 841 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: iterator +16166: upper_bound(const key_type& __x) +16166: { return _M_t.upper_bound(__x); } +16166: +16166: const_iterator +16166: upper_bound(const key_type& __x) const +16166: { return _M_t.upper_bound(__x); } +16166: +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) +16166: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return iterator(_M_t._M_upper_bound_tr(__x)); } +16166: +16166: template +16166: auto +16166: upper_bound(const _Kt& __x) const +16166: -> decltype(iterator(_M_t._M_upper_bound_tr(__x))) +16166: { return iterator(_M_t._M_upper_bound_tr(__x)); } +16166: # 880 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: std::pair +16166: equal_range(const key_type& __x) +16166: { return _M_t.equal_range(__x); } +16166: +16166: std::pair +16166: equal_range(const key_type& __x) const +16166: { return _M_t.equal_range(__x); } +16166: +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) +16166: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +16166: { return pair(_M_t._M_equal_range_tr(__x)); } +16166: +16166: template +16166: auto +16166: equal_range(const _Kt& __x) const +16166: -> decltype(pair(_M_t._M_equal_range_tr(__x))) +16166: { return pair(_M_t._M_equal_range_tr(__x)); } +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator==(const multiset<_K1, _C1, _A1>&, +16166: const multiset<_K1, _C1, _A1>&); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: friend bool +16166: operator< (const multiset<_K1, _C1, _A1>&, +16166: const multiset<_K1, _C1, _A1>&); +16166: +16166: }; +16166: +16166: +16166: +16166: template::value_type>, +16166: typename _Allocator = +16166: allocator::value_type>, +16166: typename = _RequireInputIter<_InputIterator>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: multiset(_InputIterator, _InputIterator, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> multiset::value_type, +16166: _Compare, _Allocator>; +16166: +16166: template, +16166: typename _Allocator = allocator<_Key>, +16166: typename = _RequireNotAllocator<_Compare>, +16166: typename = _RequireAllocator<_Allocator>> +16166: multiset(initializer_list<_Key>, +16166: _Compare = _Compare(), _Allocator = _Allocator()) +16166: -> multiset<_Key, _Compare, _Allocator>; +16166: +16166: template, +16166: typename = _RequireAllocator<_Allocator>> +16166: multiset(_InputIterator, _InputIterator, _Allocator) +16166: -> multiset::value_type, +16166: less::value_type>, +16166: _Allocator>; +16166: +16166: template> +16166: multiset(initializer_list<_Key>, _Allocator) +16166: -> multiset<_Key, less<_Key>, _Allocator>; +16166: # 971 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template +16166: inline bool +16166: operator==(const multiset<_Key, _Compare, _Alloc>& __x, +16166: const multiset<_Key, _Compare, _Alloc>& __y) +16166: { return __x._M_t == __y._M_t; } +16166: # 1009 "/usr/include/c++/14/bits/stl_multiset.h" 3 +16166: template +16166: inline bool +16166: operator<(const multiset<_Key, _Compare, _Alloc>& __x, +16166: const multiset<_Key, _Compare, _Alloc>& __y) +16166: { return __x._M_t < __y._M_t; } +16166: +16166: +16166: template +16166: inline bool +16166: operator!=(const multiset<_Key, _Compare, _Alloc>& __x, +16166: const multiset<_Key, _Compare, _Alloc>& __y) +16166: { return !(__x == __y); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>(const multiset<_Key,_Compare,_Alloc>& __x, +16166: const multiset<_Key,_Compare,_Alloc>& __y) +16166: { return __y < __x; } +16166: +16166: +16166: template +16166: inline bool +16166: operator<=(const multiset<_Key, _Compare, _Alloc>& __x, +16166: const multiset<_Key, _Compare, _Alloc>& __y) +16166: { return !(__y < __x); } +16166: +16166: +16166: template +16166: inline bool +16166: operator>=(const multiset<_Key, _Compare, _Alloc>& __x, +16166: const multiset<_Key, _Compare, _Alloc>& __y) +16166: { return !(__x < __y); } +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(multiset<_Key, _Compare, _Alloc>& __x, +16166: multiset<_Key, _Compare, _Alloc>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct +16166: _Rb_tree_merge_helper, +16166: _Cmp2> +16166: { +16166: private: +16166: friend class std::multiset<_Val, _Cmp1, _Alloc>; +16166: +16166: static auto& +16166: _S_get_tree(std::set<_Val, _Cmp2, _Alloc>& __set) +16166: { return __set._M_t; } +16166: +16166: static auto& +16166: _S_get_tree(std::multiset<_Val, _Cmp2, _Alloc>& __set) +16166: { return __set._M_t; } +16166: }; +16166: +16166: +16166: +16166: } +16166: # 65 "/usr/include/c++/14/set" 2 3 +16166: # 77 "/usr/include/c++/14/set" 3 +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 78 "/usr/include/c++/14/set" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace pmr +16166: { +16166: template> +16166: using set = std::set<_Key, _Cmp, polymorphic_allocator<_Key>>; +16166: template> +16166: using multiset = std::multiset<_Key, _Cmp, polymorphic_allocator<_Key>>; +16166: } +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iteration_stats.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/db/compaction/compaction_iteration_stats.h" +16166: namespace rocksdb { +16166: +16166: struct CompactionIterationStats { +16166: +16166: +16166: +16166: +16166: int64_t num_record_drop_user = 0; +16166: +16166: int64_t num_record_drop_hidden = 0; +16166: int64_t num_record_drop_obsolete = 0; +16166: int64_t num_record_drop_range_del = 0; +16166: int64_t num_range_del_drop_obsolete = 0; +16166: +16166: int64_t num_optimized_del_drop_obsolete = 0; +16166: uint64_t total_filter_time = 0; +16166: +16166: +16166: +16166: +16166: uint64_t num_input_records = 0; +16166: uint64_t num_input_deletion_records = 0; +16166: uint64_t num_input_corrupt_records = 0; +16166: uint64_t total_input_raw_key_bytes = 0; +16166: uint64_t total_input_raw_value_bytes = 0; +16166: +16166: +16166: uint64_t num_single_del_fallthru = 0; +16166: uint64_t num_single_del_mismatch = 0; +16166: +16166: +16166: uint64_t num_blobs_read = 0; +16166: uint64_t total_blob_bytes_read = 0; +16166: uint64_t num_blobs_relocated = 0; +16166: uint64_t total_blob_bytes_relocated = 0; +16166: +16166: +16166: +16166: uint64_t num_input_timed_put_records = 0; +16166: +16166: +16166: uint64_t num_timed_put_swap_preferred_seqno = 0; +16166: }; +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/readahead_file_info.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct Readahea/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -march=armv8-a+crc+crypto -Wno-unused-function -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc +dFileInfo { +16166: struct ReadaheadInfo { +16166: size_t readahead_size = 0; +16166: int64_t num_file_reads = 0; +16166: }; +16166: +16166: +16166: ReadaheadInfo data_block_readahead_info; +16166: +16166: +16166: ReadaheadInfo index_block_readahead_info; +16166: }; +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 2 +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/sstream" 1 3 +16166: # 36 "/usr/include/c++/14/sstream" 3 +16166: +16166: # 37 "/usr/include/c++/14/sstream" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/istream" 1 3 +16166: # 36 "/usr/include/c++/14/istream" 3 +16166: +16166: # 37 "/usr/include/c++/14/istream" 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 43 "/usr/include/c++/14/istream" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: # 59 "/usr/include/c++/14/istream" 3 +16166: template +16166: class basic_istream : virtual public basic_ios<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef typename _Traits::int_type int_type; +16166: typedef typename _Traits::pos_type pos_type; +16166: typedef typename _Traits::off_type off_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +16166: typedef basic_ios<_CharT, _Traits> __ios_type; +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > +16166: __num_get_type; +16166: typedef ctype<_CharT> __ctype_type; +16166: +16166: protected: +16166: +16166: +16166: +16166: +16166: +16166: streamsize _M_gcount; +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: basic_istream(__streambuf_type* __sb) +16166: : _M_gcount(streamsize(0)) +16166: { this->init(__sb); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual +16166: ~basic_istream() +16166: { _M_gcount = streamsize(0); } +16166: +16166: +16166: class sentry; +16166: friend class sentry; +16166: # 121 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: operator>>(__istream_type& (*__pf)(__istream_type&)) +16166: { return __pf(*this); } +16166: +16166: __istream_type& +16166: operator>>(__ios_type& (*__pf)(__ios_type&)) +16166: { +16166: __pf(*this); +16166: return *this; +16166: } +16166: +16166: __istream_type& +16166: operator>>(ios_base& (*__pf)(ios_base&)) +16166: { +16166: __pf(*this); +16166: return *this; +16166: } +16166: # 169 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: operator>>(bool& __n) +16166: { return _M_extract(__n); } +16166: +16166: __istream_type& +16166: operator>>(short& __n); +16166: +16166: __istream_type& +16166: operator>>(unsigned short& __n) +16166: { return _M_extract(__n); } +16166: +16166: __istream_type& +16166: operator>>(int& __n); +16166: +16166: __istream_type& +16166: operator>>(unsigned int& __n) +16166: { return _M_extract(__n); } +16166: +16166: __istream_type& +16166: operator>>(long& __n) +16166: { return _M_extract(__n); } +16166: +16166: __istream_type& +16166: operator>>(unsigned long& __n) +16166: { return _M_extract(__n); } +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: __istream_type& +16166: operator>>(long long& __n) +16166: { return _M_extract(__n); } +16166: +16166: __istream_type& +16166: operator>>(unsigned long long& __n) +16166: { return _M_extract(__n); } +16166: #pragma GCC diagnostic pop +16166: # 218 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: operator>>(float& __f) +16166: { return _M_extract(__f); } +16166: +16166: __istream_type& +16166: operator>>(double& __f) +16166: { return _M_extract(__f); } +16166: +16166: __istream_type& +16166: operator>>(long double& __f) +16166: { return _M_extract(__f); } +16166: # 327 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: operator>>(void*& __p) +16166: { return _M_extract(__p); } +16166: # 351 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: operator>>(__streambuf_type* __sb); +16166: # 361 "/usr/include/c++/14/istream" 3 +16166: streamsize +16166: gcount() const +16166: { return _M_gcount; } +16166: # 394 "/usr/include/c++/14/istream" 3 +16166: int_type +16166: get(); +16166: # 408 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: get(char_type& __c); +16166: # 435 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: get(char_type* __s, streamsize __n, char_type __delim); +16166: # 446 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: get(char_type* __s, streamsize __n) +16166: { return this->get(__s, __n, this->widen('\n')); } +16166: # 469 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: get(__streambuf_type& __sb, char_type __delim); +16166: # 479 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: get(__streambuf_type& __sb) +16166: { return this->get(__sb, this->widen('\n')); } +16166: # 508 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: getline(char_type* __s, streamsize __n, char_type __delim); +16166: # 519 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: getline(char_type* __s, streamsize __n) +16166: { return this->getline(__s, __n, this->widen('\n')); } +16166: # 543 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: ignore(streamsize __n, int_type __delim); +16166: +16166: __istream_type& +16166: ignore(streamsize __n); +16166: +16166: __istream_type& +16166: ignore(); +16166: # 560 "/usr/include/c++/14/istream" 3 +16166: int_type +16166: peek(); +16166: # 578 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: read(char_type* __s, streamsize __n); +16166: # 597 "/usr/include/c++/14/istream" 3 +16166: streamsize +16166: readsome(char_type* __s, streamsize __n); +16166: # 614 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: putback(char_type __c); +16166: # 630 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: unget(); +16166: # 648 "/usr/include/c++/14/istream" 3 +16166: int +16166: sync(); +16166: # 663 "/usr/include/c++/14/istream" 3 +16166: pos_type +16166: tellg(); +16166: # 678 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: seekg(pos_type); +16166: # 694 "/usr/include/c++/14/istream" 3 +16166: __istream_type& +16166: seekg(off_type, ios_base::seekdir); +16166: +16166: +16166: protected: +16166: basic_istream() +16166: : _M_gcount(streamsize(0)) +16166: { this->init(0); } +16166: +16166: +16166: basic_istream(const basic_istream&) = delete; +16166: +16166: basic_istream(basic_istream&& __rhs) +16166: : __ios_type(), _M_gcount(__rhs._M_gcount) +16166: { +16166: __ios_type::move(__rhs); +16166: __rhs._M_gcount = 0; +16166: } +16166: +16166: +16166: +16166: basic_istream& operator=(const basic_istream&) = delete; +16166: +16166: basic_istream& +16166: operator=(basic_istream&& __rhs) +16166: { +16166: swap(__rhs); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_istream& __rhs) +16166: { +16166: __ios_type::swap(__rhs); +16166: std::swap(_M_gcount, __rhs._M_gcount); +16166: } +16166: +16166: +16166: template +16166: __istream_type& +16166: _M_extract(_ValueT& __v); +16166: }; +16166: +16166: +16166: template<> +16166: basic_istream& +16166: basic_istream:: +16166: getline(char_type* __s, streamsize __n, char_type __delim); +16166: +16166: template<> +16166: basic_istream& +16166: basic_istream:: +16166: ignore(streamsize __n); +16166: +16166: template<> +16166: basic_istream& +16166: basic_istream:: +16166: ignore(streamsize __n, int_type __delim); +16166: +16166: +16166: template<> +16166: basic_istream& +16166: basic_istream:: +16166: getline(char_type* __s, streamsize __n, char_type __delim); +16166: +16166: template<> +16166: basic_istream& +16166: basic_istream:: +16166: ignore(streamsize __n); +16166: +16166: template<> +16166: basic_istream& +16166: basic_istream:: +16166: ignore(streamsize __n, int_type __delim); +16166: # 778 "/usr/include/c++/14/istream" 3 +16166: template +16166: class basic_istream<_CharT, _Traits>::sentry +16166: { +16166: +16166: bool _M_ok; +16166: +16166: public: +16166: +16166: typedef _Traits traits_type; +16166: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef typename __istream_type::__ctype_type __ctype_type; +16166: typedef typename _Traits::int_type __int_type; +16166: # 814 "/usr/include/c++/14/istream" 3 +16166: explicit +16166: sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); +16166: # 825 "/usr/include/c++/14/istream" 3 +16166: explicit +16166: +16166: operator bool() const +16166: { return _M_ok; } +16166: }; +16166: # 843 "/usr/include/c++/14/istream" 3 +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c); +16166: +16166: template +16166: inline basic_istream& +16166: operator>>(basic_istream& __in, unsigned char& __c) +16166: { return (__in >> reinterpret_cast(__c)); } +16166: +16166: template +16166: inline basic_istream& +16166: operator>>(basic_istream& __in, signed char& __c) +16166: { return (__in >> reinterpret_cast(__c)); } +16166: +16166: +16166: +16166: template +16166: void +16166: __istream_extract(basic_istream<_CharT, _Traits>&, _CharT*, streamsize); +16166: +16166: void __istream_extract(istream&, char*, streamsize); +16166: # 893 "/usr/include/c++/14/istream" 3 +16166: template +16166: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) +16166: inline basic_istream<_CharT, _Traits>& +16166: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) +16166: { +16166: +16166: +16166: +16166: size_t __n = __builtin_object_size(__s, 0); +16166: if (__n < sizeof(_CharT)) +16166: { +16166: +16166: do { if (std::__is_constant_evaluated() && !bool(__n >= sizeof(_CharT))) std::__glibcxx_assert_fail(); } while (false); +16166: +16166: __in.width(0); +16166: __in.setstate(ios_base::failbit); +16166: } +16166: else if (__n != (size_t)-1) +16166: { +16166: __n /= sizeof(_CharT); +16166: streamsize __w = __in.width(); +16166: std::__istream_extract(__in, __s, __n); +16166: if (__in.good() && (__w <= 0 || __n < (size_t)__w)) +16166: { +16166: +16166: +16166: const typename _Traits::int_type __c = __in.rdbuf()->sgetc(); +16166: const bool __eof = _Traits::eq_int_type(__c, _Traits::eof()); +16166: if (__builtin_expect(__eof, true)) +16166: __in.setstate(ios_base::eofbit); +16166: } +16166: } +16166: else +16166: +16166: { +16166: +16166: streamsize __n = __gnu_cxx::__numeric_traits::__max; +16166: __n /= sizeof(_CharT); +16166: std::__istream_extract(__in, __s, __n); +16166: } +16166: return __in; +16166: } +16166: +16166: template +16166: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) +16166: inline basic_istream& +16166: operator>>(basic_istream& __in, unsigned char* __s) +16166: { return __in >> reinterpret_cast(__s); } +16166: +16166: template +16166: __attribute__((__nonnull__(2), __access__(__write_only__, 2))) +16166: inline basic_istream& +16166: operator>>(basic_istream& __in, signed char* __s) +16166: { return __in >> reinterpret_cast(__s); } +16166: # 982 "/usr/include/c++/14/istream" 3 +16166: template +16166: class basic_iostream +16166: : public basic_istream<_CharT, _Traits>, +16166: public basic_ostream<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: +16166: +16166: typedef _CharT char_type; +16166: typedef typename _Traits::int_type int_type; +16166: typedef typename _Traits::pos_type pos_type; +16166: typedef typename _Traits::off_type off_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef basic_ostream<_CharT, _Traits> __ostream_type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: basic_iostream(basic_streambuf<_CharT, _Traits>* __sb) +16166: : __istream_type(__sb), __ostream_type(__sb) { } +16166: +16166: +16166: +16166: +16166: virtual +16166: ~basic_iostream() { } +16166: +16166: protected: +16166: basic_iostream() +16166: : __istream_type(), __ostream_type() { } +16166: +16166: +16166: basic_iostream(const basic_iostream&) = delete; +16166: +16166: basic_iostream(basic_iostream&& __rhs) +16166: : __istream_type(std::move(__rhs)), __ostream_type(*this) +16166: { } +16166: +16166: +16166: +16166: basic_iostream& operator=(const basic_iostream&) = delete; +16166: +16166: basic_iostream& +16166: operator=(basic_iostream&& __rhs) +16166: { +16166: swap(__rhs); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_iostream& __rhs) +16166: { __istream_type::swap(__rhs); } +16166: +16166: }; +16166: # 1065 "/usr/include/c++/14/istream" 3 +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: ws(basic_istream<_CharT, _Traits>& __is); +16166: # 1081 "/usr/include/c++/14/istream" 3 +16166: template, +16166: typename = decltype(std::declval<_Is&>() >> std::declval<_Tp>())> +16166: using __rvalue_stream_extraction_t = _Is&&; +16166: # 1097 "/usr/include/c++/14/istream" 3 +16166: template +16166: inline __rvalue_stream_extraction_t<_Istream, _Tp> +16166: operator>>(_Istream&& __is, _Tp&& __x) +16166: { +16166: __is >> std::forward<_Tp>(__x); +16166: return std::move(__is); +16166: } +16166: +16166: +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/istream.tcc" 1 3 +16166: # 37 "/usr/include/c++/14/bits/istream.tcc" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/istream.tcc" 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: basic_istream<_CharT, _Traits>::sentry:: +16166: sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: if (__in.good()) +16166: { +16166: try +16166: { +16166: if (__in.tie()) +16166: __in.tie()->flush(); +16166: if (!__noskip && bool(__in.flags() & ios_base::skipws)) +16166: { +16166: const __int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = __in.rdbuf(); +16166: __int_type __c = __sb->sgetc(); +16166: +16166: const __ctype_type& __ct = __check_facet(__in._M_ctype); +16166: while (!traits_type::eq_int_type(__c, __eof) +16166: && __ct.is(ctype_base::space, +16166: traits_type::to_char_type(__c))) +16166: __c = __sb->snextc(); +16166: +16166: +16166: +16166: +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: } +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: __in._M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { __in._M_setstate(ios_base::badbit); } +16166: } +16166: +16166: if (__in.good() && __err == ios_base::goodbit) +16166: _M_ok = true; +16166: else +16166: { +16166: __err |= ios_base::failbit; +16166: __in.setstate(__err); +16166: } +16166: } +16166: +16166: template +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: _M_extract(_ValueT& __v) +16166: { +16166: sentry __cerb(*this, false); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: +16166: const __num_get_type& __ng = __check_facet(this->_M_num_get); +16166: +16166: +16166: +16166: +16166: __ng.get(*this, 0, *this, __err, __v); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: operator>>(short& __n) +16166: { +16166: +16166: +16166: sentry __cerb(*this, false); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: long __l; +16166: +16166: const __num_get_type& __ng = __check_facet(this->_M_num_get); +16166: +16166: +16166: +16166: +16166: __ng.get(*this, 0, *this, __err, __l); +16166: +16166: +16166: +16166: if (__l < __gnu_cxx::__numeric_traits::__min) +16166: { +16166: __err |= ios_base::failbit; +16166: __n = __gnu_cxx::__numeric_traits::__min; +16166: } +16166: else if (__l > __gnu_cxx::__numeric_traits::__max) +16166: { +16166: __err |= ios_base::failbit; +16166: __n = __gnu_cxx::__numeric_traits::__max; +16166: } +16166: else +16166: __n = short(__l); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: operator>>(int& __n) +16166: { +16166: +16166: +16166: sentry __cerb(*this, false); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: long __l; +16166: +16166: const __num_get_type& __ng = __check_facet(this->_M_num_get); +16166: +16166: +16166: +16166: +16166: __ng.get(*this, 0, *this, __err, __l); +16166: +16166: +16166: +16166: if (__l < __gnu_cxx::__numeric_traits::__min) +16166: { +16166: __err |= ios_base::failbit; +16166: __n = __gnu_cxx::__numeric_traits::__min; +16166: } +16166: else if (__l > __gnu_cxx::__numeric_traits::__max) +16166: { +16166: __err |= ios_base::failbit; +16166: __n = __gnu_cxx::__numeric_traits::__max; +16166: } +16166: else +16166: __n = int(__l); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: operator>>(__streambuf_type* __sbout) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: sentry __cerb(*this, false); +16166: if (__cerb && __sbout) +16166: { +16166: try +16166: { +16166: bool __ineof; +16166: if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof)) +16166: __err |= ios_base::failbit; +16166: if (__ineof) +16166: __err |= ios_base::eofbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::failbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::failbit); } +16166: } +16166: else if (!__sbout) +16166: __err |= ios_base::failbit; +16166: if (__err) +16166: this->setstate(__err); +16166: return *this; +16166: } +16166: +16166: template +16166: typename basic_istream<_CharT, _Traits>::int_type +16166: basic_istream<_CharT, _Traits>:: +16166: get(void) +16166: { +16166: const int_type __eof = traits_type::eof(); +16166: int_type __c = __eof; +16166: _M_gcount = 0; +16166: ios_base::iostate __err = ios_base::goodbit; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: __c = this->rdbuf()->sbumpc(); +16166: +16166: if (!traits_type::eq_int_type(__c, __eof)) +16166: _M_gcount = 1; +16166: else +16166: __err |= ios_base::eofbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: } +16166: if (!_M_gcount) +16166: __err |= ios_base::failbit; +16166: if (__err) +16166: this->setstate(__err); +16166: return __c; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: get(char_type& __c) +16166: { +16166: _M_gcount = 0; +16166: ios_base::iostate __err = ios_base::goodbit; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: const int_type __cb = this->rdbuf()->sbumpc(); +16166: +16166: if (!traits_type::eq_int_type(__cb, traits_type::eof())) +16166: { +16166: _M_gcount = 1; +16166: __c = traits_type::to_char_type(__cb); +16166: } +16166: else +16166: __err |= ios_base::eofbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: } +16166: if (!_M_gcount) +16166: __err |= ios_base::failbit; +16166: if (__err) +16166: this->setstate(__err); +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: get(char_type* __s, streamsize __n, char_type __delim) +16166: { +16166: _M_gcount = 0; +16166: ios_base::iostate __err = ios_base::goodbit; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: const int_type __idelim = traits_type::to_int_type(__delim); +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = this->rdbuf(); +16166: int_type __c = __sb->sgetc(); +16166: +16166: while (_M_gcount + 1 < __n +16166: && !traits_type::eq_int_type(__c, __eof) +16166: && !traits_type::eq_int_type(__c, __idelim)) +16166: { +16166: *__s++ = traits_type::to_char_type(__c); +16166: ++_M_gcount; +16166: __c = __sb->snextc(); +16166: } +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: } +16166: +16166: +16166: if (__n > 0) +16166: *__s = char_type(); +16166: if (!_M_gcount) +16166: __err |= ios_base::failbit; +16166: if (__err) +16166: this->setstate(__err); +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: get(__streambuf_type& __sb, char_type __delim) +16166: { +16166: _M_gcount = 0; +16166: ios_base::iostate __err = ios_base::goodbit; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: const int_type __idelim = traits_type::to_int_type(__delim); +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __this_sb = this->rdbuf(); +16166: int_type __c = __this_sb->sgetc(); +16166: char_type __c2 = traits_type::to_char_type(__c); +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: unsigned long long __gcount = 0; +16166: #pragma GCC diagnostic pop +16166: +16166: while (!traits_type::eq_int_type(__c, __eof) +16166: && !traits_type::eq_int_type(__c, __idelim) +16166: && !traits_type::eq_int_type(__sb.sputc(__c2), __eof)) +16166: { +16166: ++__gcount; +16166: __c = __this_sb->snextc(); +16166: __c2 = traits_type::to_char_type(__c); +16166: } +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: +16166: +16166: if (__gcount <= __gnu_cxx::__numeric_traits::__max) +16166: _M_gcount = __gcount; +16166: else +16166: _M_gcount = __gnu_cxx::__numeric_traits::__max; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: } +16166: if (!_M_gcount) +16166: __err |= ios_base::failbit; +16166: if (__err) +16166: this->setstate(__err); +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: getline(char_type* __s, streamsize __n, char_type __delim) +16166: { +16166: _M_gcount = 0; +16166: ios_base::iostate __err = ios_base::goodbit; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: const int_type __idelim = traits_type::to_int_type(__delim); +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = this->rdbuf(); +16166: int_type __c = __sb->sgetc(); +16166: +16166: while (_M_gcount + 1 < __n +16166: && !traits_type::eq_int_type(__c, __eof) +16166: && !traits_type::eq_int_type(__c, __idelim)) +16166: { +16166: *__s++ = traits_type::to_char_type(__c); +16166: __c = __sb->snextc(); +16166: ++_M_gcount; +16166: } +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: else +16166: { +16166: if (traits_type::eq_int_type(__c, __idelim)) +16166: { +16166: __sb->sbumpc(); +16166: ++_M_gcount; +16166: } +16166: else +16166: __err |= ios_base::failbit; +16166: } +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: } +16166: +16166: +16166: if (__n > 0) +16166: *__s = char_type(); +16166: if (!_M_gcount) +16166: __err |= ios_base::failbit; +16166: if (__err) +16166: this->setstate(__err); +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: ignore(void) +16166: { +16166: _M_gcount = 0; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = this->rdbuf(); +16166: +16166: if (traits_type::eq_int_type(__sb->sbumpc(), __eof)) +16166: __err |= ios_base::eofbit; +16166: else +16166: _M_gcount = 1; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: ignore(streamsize __n) +16166: { +16166: _M_gcount = 0; +16166: sentry __cerb(*this, true); +16166: if (__cerb && __n > 0) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = this->rdbuf(); +16166: int_type __c = __sb->sgetc(); +16166: # 548 "/usr/include/c++/14/bits/istream.tcc" 3 +16166: bool __large_ignore = false; +16166: while (true) +16166: { +16166: while (_M_gcount < __n +16166: && !traits_type::eq_int_type(__c, __eof)) +16166: { +16166: ++_M_gcount; +16166: __c = __sb->snextc(); +16166: } +16166: if (__n == __gnu_cxx::__numeric_traits::__max +16166: && !traits_type::eq_int_type(__c, __eof)) +16166: { +16166: _M_gcount = +16166: __gnu_cxx::__numeric_traits::__min; +16166: __large_ignore = true; +16166: } +16166: else +16166: break; +16166: } +16166: +16166: if (__n == __gnu_cxx::__numeric_traits::__max) +16166: { +16166: if (__large_ignore) +16166: _M_gcount = __gnu_cxx::__numeric_traits::__max; +16166: +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: } +16166: else if (_M_gcount < __n) +16166: { +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: } +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: ignore(streamsize __n, int_type __delim) +16166: { +16166: _M_gcount = 0; +16166: sentry __cerb(*this, true); +16166: if (__cerb && __n > 0) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = this->rdbuf(); +16166: int_type __c = __sb->sgetc(); +16166: +16166: +16166: bool __large_ignore = false; +16166: while (true) +16166: { +16166: while (_M_gcount < __n +16166: && !traits_type::eq_int_type(__c, __eof) +16166: && !traits_type::eq_int_type(__c, __delim)) +16166: { +16166: ++_M_gcount; +16166: __c = __sb->snextc(); +16166: } +16166: if (__n == __gnu_cxx::__numeric_traits::__max +16166: && !traits_type::eq_int_type(__c, __eof) +16166: && !traits_type::eq_int_type(__c, __delim)) +16166: { +16166: _M_gcount = +16166: __gnu_cxx::__numeric_traits::__min; +16166: __large_ignore = true; +16166: } +16166: else +16166: break; +16166: } +16166: +16166: if (__n == __gnu_cxx::__numeric_traits::__max) +16166: { +16166: if (__large_ignore) +16166: _M_gcount = __gnu_cxx::__numeric_traits::__max; +16166: +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: else +16166: { +16166: if (_M_gcount != __n) +16166: ++_M_gcount; +16166: __sb->sbumpc(); +16166: } +16166: } +16166: else if (_M_gcount < __n) +16166: { +16166: if (traits_type::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: else +16166: { +16166: ++_M_gcount; +16166: __sb->sbumpc(); +16166: } +16166: } +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: typename basic_istream<_CharT, _Traits>::int_type +16166: basic_istream<_CharT, _Traits>:: +16166: peek(void) +16166: { +16166: int_type __c = traits_type::eof(); +16166: _M_gcount = 0; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: __c = this->rdbuf()->sgetc(); +16166: if (traits_type::eq_int_type(__c, traits_type::eof())) +16166: __err |= ios_base::eofbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return __c; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: read(char_type* __s, streamsize __n) +16166: { +16166: _M_gcount = 0; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: _M_gcount = this->rdbuf()->sgetn(__s, __n); +16166: if (_M_gcount != __n) +16166: __err |= (ios_base::eofbit | ios_base::failbit); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: streamsize +16166: basic_istream<_CharT, _Traits>:: +16166: readsome(char_type* __s, streamsize __n) +16166: { +16166: _M_gcount = 0; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: +16166: const streamsize __num = this->rdbuf()->in_avail(); +16166: if (__num > 0) +16166: _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n)); +16166: else if (__num == -1) +16166: __err |= ios_base::eofbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return _M_gcount; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: putback(char_type __c) +16166: { +16166: +16166: +16166: _M_gcount = 0; +16166: +16166: this->clear(this->rdstate() & ~ios_base::eofbit); +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = this->rdbuf(); +16166: if (!__sb +16166: || traits_type::eq_int_type(__sb->sputbackc(__c), __eof)) +16166: __err |= ios_base::badbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: unget(void) +16166: { +16166: +16166: +16166: _M_gcount = 0; +16166: +16166: this->clear(this->rdstate() & ~ios_base::eofbit); +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const int_type __eof = traits_type::eof(); +16166: __streambuf_type* __sb = this->rdbuf(); +16166: if (!__sb +16166: || traits_type::eq_int_type(__sb->sungetc(), __eof)) +16166: __err |= ios_base::badbit; +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: int +16166: basic_istream<_CharT, _Traits>:: +16166: sync(void) +16166: { +16166: +16166: +16166: int __ret = -1; +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: __streambuf_type* __sb = this->rdbuf(); +16166: if (__sb) +16166: { +16166: if (__sb->pubsync() == -1) +16166: __err |= ios_base::badbit; +16166: else +16166: __ret = 0; +16166: } +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_istream<_CharT, _Traits>::pos_type +16166: basic_istream<_CharT, _Traits>:: +16166: tellg(void) +16166: { +16166: +16166: +16166: pos_type __ret = pos_type(-1); +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: if (!this->fail()) +16166: __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, +16166: ios_base::in); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: seekg(pos_type __pos) +16166: { +16166: +16166: +16166: +16166: this->clear(this->rdstate() & ~ios_base::eofbit); +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: if (!this->fail()) +16166: { +16166: +16166: const pos_type __p = this->rdbuf()->pubseekpos(__pos, +16166: ios_base::in); +16166: +16166: +16166: if (__p == pos_type(off_type(-1))) +16166: __err |= ios_base::failbit; +16166: } +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: basic_istream<_CharT, _Traits>:: +16166: seekg(off_type __off, ios_base::seekdir __dir) +16166: { +16166: +16166: +16166: +16166: this->clear(this->rdstate() & ~ios_base::eofbit); +16166: sentry __cerb(*this, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: if (!this->fail()) +16166: { +16166: +16166: const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, +16166: ios_base::in); +16166: +16166: +16166: if (__p == pos_type(off_type(-1))) +16166: __err |= ios_base::failbit; +16166: } +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: this->_M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { this->_M_setstate(ios_base::badbit); } +16166: if (__err) +16166: this->setstate(__err); +16166: } +16166: return *this; +16166: } +16166: +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c) +16166: { +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef typename __istream_type::int_type __int_type; +16166: +16166: typename __istream_type::sentry __cerb(__in, false); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const __int_type __cb = __in.rdbuf()->sbumpc(); +16166: if (!_Traits::eq_int_type(__cb, _Traits::eof())) +16166: __c = _Traits::to_char_type(__cb); +16166: else +16166: __err |= (ios_base::eofbit | ios_base::failbit); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: __in._M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { __in._M_setstate(ios_base::badbit); } +16166: if (__err) +16166: __in.setstate(__err); +16166: } +16166: return __in; +16166: } +16166: +16166: template +16166: void +16166: __istream_extract(basic_istream<_CharT, _Traits>& __in, _CharT* __s, +16166: streamsize __num) +16166: { +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +16166: typedef typename _Traits::int_type int_type; +16166: typedef _CharT char_type; +16166: typedef ctype<_CharT> __ctype_type; +16166: +16166: streamsize __extracted = 0; +16166: ios_base::iostate __err = ios_base::goodbit; +16166: typename __istream_type::sentry __cerb(__in, false); +16166: if (__cerb) +16166: { +16166: try +16166: { +16166: +16166: streamsize __width = __in.width(); +16166: if (0 < __width && __width < __num) +16166: __num = __width; +16166: +16166: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); +16166: +16166: const int_type __eof = _Traits::eof(); +16166: __streambuf_type* __sb = __in.rdbuf(); +16166: int_type __c = __sb->sgetc(); +16166: +16166: while (__extracted < __num - 1 +16166: && !_Traits::eq_int_type(__c, __eof) +16166: && !__ct.is(ctype_base::space, +16166: _Traits::to_char_type(__c))) +16166: { +16166: *__s++ = _Traits::to_char_type(__c); +16166: ++__extracted; +16166: __c = __sb->snextc(); +16166: } +16166: +16166: if (__extracted < __num - 1 +16166: && _Traits::eq_int_type(__c, __eof)) +16166: __err |= ios_base::eofbit; +16166: +16166: +16166: +16166: *__s = char_type(); +16166: __in.width(0); +16166: } +16166: catch(__cxxabiv1::__forced_unwind&) +16166: { +16166: __in._M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { __in._M_setstate(ios_base::badbit); } +16166: } +16166: if (!__extracted) +16166: __err |= ios_base::failbit; +16166: if (__err) +16166: __in.setstate(__err); +16166: } +16166: +16166: +16166: template +16166: basic_istream<_CharT, _Traits>& +16166: ws(basic_istream<_CharT, _Traits>& __in) +16166: { +16166: typedef basic_istream<_CharT, _Traits> __istream_type; +16166: typedef basic_streambuf<_CharT, _Traits> __streambuf_type; +16166: typedef typename __istream_type::int_type __int_type; +16166: typedef ctype<_CharT> __ctype_type; +16166: +16166: +16166: +16166: typename __istream_type::sentry __cerb(__in, true); +16166: if (__cerb) +16166: { +16166: ios_base::iostate __err = ios_base::goodbit; +16166: try +16166: { +16166: const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc()); +16166: const __int_type __eof = _Traits::eof(); +16166: __streambuf_type* __sb = __in.rdbuf(); +16166: __int_type __c = __sb->sgetc(); +16166: +16166: while (true) +16166: { +16166: if (_Traits::eq_int_type(__c, __eof)) +16166: { +16166: __err = ios_base::eofbit; +16166: break; +16166: } +16166: if (!__ct.is(ctype_base::space, _Traits::to_char_type(__c))) +16166: break; +16166: __c = __sb->snextc(); +16166: } +16166: } +16166: catch(const __cxxabiv1::__forced_unwind&) +16166: { +16166: __in._M_setstate(ios_base::badbit); +16166: throw; +16166: } +16166: catch(...) +16166: { +16166: __in._M_setstate(ios_base::badbit); +16166: } +16166: if (__err) +16166: __in.setstate(__err); +16166: } +16166: return __in; +16166: } +16166: +16166: +16166: +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wc++11-extensions" +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: extern template class basic_istream; +16166: extern template istream& ws(istream&); +16166: extern template istream& operator>>(istream&, char&); +16166: extern template istream& operator>>(istream&, unsigned char&); +16166: extern template istream& operator>>(istream&, signed char&); +16166: +16166: extern template istream& istream::_M_extract(unsigned short&); +16166: extern template istream& istream::_M_extract(unsigned int&); +16166: extern template istream& istream::_M_extract(long&); +16166: extern template istream& istream::_M_extract(unsigned long&); +16166: extern template istream& istream::_M_extract(bool&); +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wlong-long" +16166: extern template istream& istream::_M_extract(long long&); +16166: extern template istream& istream::_M_extract(unsigned long long&); +16166: #pragma GCC diagnostic pop +16166: +16166: extern template istream& istream::_M_extract(float&); +16166: extern template istream& istream::_M_extract(double&); +16166: extern template istream& istream::_M_extract(long double&); +16166: extern template istream& istream::_M_extract(void*&); +16166: +16166: extern template class basic_iostream; +16166: +16166: +16166: extern template class basic_istream; +16166: extern template wistream& ws(wistream&); +16166: extern template wistream& operator>>(wistream&, wchar_t&); +16166: extern template void __istream_extract(wistream&, wchar_t*, streamsize); +16166: +16166: extern template wistream& wistream::_M_extract(unsigned short&); +16166: extern template wistream& wistream::_M_extract(unsigned int&); +16166: extern template wistream& wistream::_M_extract(long&); +16166: extern template wistream& wistream::_M_extract(unsigned long&); +16166: extern template wistream& wistream::_M_extract(bool&); +16166: +16166: extern template wistream& wistream::_M_extract(long long&); +16166: extern template wistream& wistream::_M_extract(unsigned long long&); +16166: +16166: extern template wistream& wistream::_M_extract(float&); +16166: extern template wistream& wistream::_M_extract(double&); +16166: extern template wistream& wistream::_M_extract(long double&); +16166: extern template wistream& wistream::_M_extract(void*&); +16166: +16166: extern template class basic_iostream; +16166: +16166: #pragma GCC diagnostic pop +16166: +16166: +16166: +16166: } +16166: # 1110 "/usr/include/c++/14/istream" 2 3 +16166: # 41 "/usr/include/c++/14/sstream" 2 3 +16166: # 55 "/usr/include/c++/14/sstream" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: namespace __cxx11 { +16166: # 78 "/usr/include/c++/14/sstream" 3 +16166: template +16166: class basic_stringbuf : public basic_streambuf<_CharT, _Traits> +16166: { +16166: struct __xfer_bufptrs; +16166: +16166: +16166: using allocator_traits = std::allocator_traits<_Alloc>; +16166: using _Noexcept_swap +16166: = __or_; +16166: +16166: +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: typedef _Alloc allocator_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: typedef basic_streambuf __streambuf_type; +16166: typedef basic_string __string_type; +16166: typedef typename __string_type::size_type __size_type; +16166: +16166: protected: +16166: +16166: ios_base::openmode _M_mode; +16166: +16166: +16166: __string_type _M_string; +16166: +16166: public: +16166: # 121 "/usr/include/c++/14/sstream" 3 +16166: basic_stringbuf() +16166: : __streambuf_type(), _M_mode(ios_base::in | ios_base::out), _M_string() +16166: { } +16166: # 132 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_stringbuf(ios_base::openmode __mode) +16166: : __streambuf_type(), _M_mode(__mode), _M_string() +16166: { } +16166: # 145 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_stringbuf(const __string_type& __str, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: : __streambuf_type(), _M_mode(), +16166: _M_string(__str.data(), __str.size(), __str.get_allocator()) +16166: { _M_stringbuf_init(__mode); } +16166: +16166: +16166: basic_stringbuf(const basic_stringbuf&) = delete; +16166: +16166: basic_stringbuf(basic_stringbuf&& __rhs) +16166: : basic_stringbuf(std::move(__rhs), __xfer_bufptrs(__rhs, this)) +16166: { __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); } +16166: # 209 "/usr/include/c++/14/sstream" 3 +16166: basic_stringbuf& +16166: operator=(const basic_stringbuf&) = delete; +16166: +16166: basic_stringbuf& +16166: operator=(basic_stringbuf&& __rhs) +16166: { +16166: __xfer_bufptrs __st{__rhs, this}; +16166: const __streambuf_type& __base = __rhs; +16166: __streambuf_type::operator=(__base); +16166: this->pubimbue(__rhs.getloc()); +16166: _M_mode = __rhs._M_mode; +16166: _M_string = std::move(__rhs._M_string); +16166: __rhs._M_sync(const_cast(__rhs._M_string.data()), 0, 0); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_stringbuf& __rhs) noexcept(_Noexcept_swap::value) +16166: { +16166: __xfer_bufptrs __l_st{*this, std::__addressof(__rhs)}; +16166: __xfer_bufptrs __r_st{__rhs, this}; +16166: __streambuf_type& __base = __rhs; +16166: __streambuf_type::swap(__base); +16166: __rhs.pubimbue(this->pubimbue(__rhs.getloc())); +16166: std::swap(_M_mode, __rhs._M_mode); +16166: std::swap(_M_string, __rhs._M_string); +16166: } +16166: # 248 "/usr/include/c++/14/sstream" 3 +16166: __string_type +16166: str() const +16166: { +16166: __string_type __ret(_M_string.get_allocator()); +16166: if (char_type* __hi = _M_high_mark()) +16166: __ret.assign(this->pbase(), __hi); +16166: else +16166: __ret = _M_string; +16166: return __ret; +16166: } +16166: # 304 "/usr/include/c++/14/sstream" 3 +16166: void +16166: str(const __string_type& __s) +16166: { +16166: +16166: +16166: _M_string.assign(__s.data(), __s.size()); +16166: _M_stringbuf_init(_M_mode); +16166: } +16166: # 333 "/usr/include/c++/14/sstream" 3 +16166: protected: +16166: +16166: void +16166: _M_stringbuf_init(ios_base::openmode __mode) +16166: { +16166: _M_mode = __mode; +16166: __size_type __len = 0; +16166: if (_M_mode & (ios_base::ate | ios_base::app)) +16166: __len = _M_string.size(); +16166: _M_sync(const_cast(_M_string.data()), 0, __len); +16166: } +16166: +16166: virtual streamsize +16166: showmanyc() +16166: { +16166: streamsize __ret = -1; +16166: if (_M_mode & ios_base::in) +16166: { +16166: _M_update_egptr(); +16166: __ret = this->egptr() - this->gptr(); +16166: } +16166: return __ret; +16166: } +16166: +16166: virtual int_type +16166: underflow(); +16166: +16166: virtual int_type +16166: pbackfail(int_type __c = traits_type::eof()); +16166: +16166: virtual int_type +16166: overflow(int_type __c = traits_type::eof()); +16166: # 377 "/usr/include/c++/14/sstream" 3 +16166: virtual __streambuf_type* +16166: setbuf(char_type* __s, streamsize __n) +16166: { +16166: if (__s && __n >= 0) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: _M_string.clear(); +16166: +16166: +16166: _M_sync(__s, __n, 0); +16166: } +16166: return this; +16166: } +16166: +16166: virtual pos_type +16166: seekoff(off_type __off, ios_base::seekdir __way, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out); +16166: +16166: virtual pos_type +16166: seekpos(pos_type __sp, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out); +16166: +16166: +16166: +16166: +16166: void +16166: _M_sync(char_type* __base, __size_type __i, __size_type __o); +16166: +16166: +16166: +16166: void +16166: _M_update_egptr() +16166: { +16166: if (char_type* __pptr = this->pptr()) +16166: { +16166: char_type* __egptr = this->egptr(); +16166: if (!__egptr || __pptr > __egptr) +16166: { +16166: if (_M_mode & ios_base::in) +16166: this->setg(this->eback(), this->gptr(), __pptr); +16166: else +16166: this->setg(__pptr, __pptr, __pptr); +16166: } +16166: } +16166: } +16166: +16166: +16166: +16166: void +16166: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off); +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: __attribute__((__always_inline__)) +16166: char_type* +16166: _M_high_mark() const noexcept +16166: { +16166: if (char_type* __pptr = this->pptr()) +16166: { +16166: char_type* __egptr = this->egptr(); +16166: if (!__egptr || __pptr > __egptr) +16166: return __pptr; +16166: else +16166: return __egptr; +16166: } +16166: return 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: struct __xfer_bufptrs +16166: { +16166: __xfer_bufptrs(const basic_stringbuf& __from, basic_stringbuf* __to) +16166: : _M_to{__to}, _M_goff{-1, -1, -1}, _M_poff{-1, -1, -1} +16166: { +16166: const _CharT* const __str = __from._M_string.data(); +16166: const _CharT* __end = nullptr; +16166: if (__from.eback()) +16166: { +16166: _M_goff[0] = __from.eback() - __str; +16166: _M_goff[1] = __from.gptr() - __str; +16166: _M_goff[2] = __from.egptr() - __str; +16166: __end = __from.egptr(); +16166: } +16166: if (__from.pbase()) +16166: { +16166: _M_poff[0] = __from.pbase() - __str; +16166: _M_poff[1] = __from.pptr() - __from.pbase(); +16166: _M_poff[2] = __from.epptr() - __str; +16166: if (!__end || __from.pptr() > __end) +16166: __end = __from.pptr(); +16166: } +16166: +16166: +16166: if (__end) +16166: { +16166: +16166: +16166: auto& __mut_from = const_cast(__from); +16166: __mut_from._M_string._M_length(__end - __str); +16166: } +16166: } +16166: +16166: ~__xfer_bufptrs() +16166: { +16166: char_type* __str = const_cast(_M_to->_M_string.data()); +16166: if (_M_goff[0] != -1) +16166: _M_to->setg(__str+_M_goff[0], __str+_M_goff[1], __str+_M_goff[2]); +16166: if (_M_poff[0] != -1) +16166: _M_to->_M_pbump(__str+_M_poff[0], __str+_M_poff[2], _M_poff[1]); +16166: } +16166: +16166: basic_stringbuf* _M_to; +16166: off_type _M_goff[3]; +16166: off_type _M_poff[3]; +16166: }; +16166: # 513 "/usr/include/c++/14/sstream" 3 +16166: basic_stringbuf(basic_stringbuf&& __rhs, __xfer_bufptrs&&) +16166: : __streambuf_type(static_cast(__rhs)), +16166: _M_mode(__rhs._M_mode), _M_string(std::move(__rhs._M_string)) +16166: { } +16166: # 528 "/usr/include/c++/14/sstream" 3 +16166: }; +16166: # 546 "/usr/include/c++/14/sstream" 3 +16166: template +16166: class basic_istringstream : public basic_istream<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: typedef _Alloc allocator_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: +16166: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +16166: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; +16166: typedef basic_istream __istream_type; +16166: +16166: private: +16166: __stringbuf_type _M_stringbuf; +16166: +16166: public: +16166: # 580 "/usr/include/c++/14/sstream" 3 +16166: basic_istringstream() +16166: : __istream_type(), _M_stringbuf(ios_base::in) +16166: { this->init(&_M_stringbuf); } +16166: # 596 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_istringstream(ios_base::openmode __mode) +16166: : __istream_type(), _M_stringbuf(__mode | ios_base::in) +16166: { this->init(&_M_stringbuf); } +16166: # 614 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_istringstream(const __string_type& __str, +16166: ios_base::openmode __mode = ios_base::in) +16166: : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in) +16166: { this->init(&_M_stringbuf); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~basic_istringstream() +16166: { } +16166: +16166: +16166: basic_istringstream(const basic_istringstream&) = delete; +16166: +16166: basic_istringstream(basic_istringstream&& __rhs) +16166: : __istream_type(std::move(__rhs)), +16166: _M_stringbuf(std::move(__rhs._M_stringbuf)) +16166: { __istream_type::set_rdbuf(&_M_stringbuf); } +16166: # 671 "/usr/include/c++/14/sstream" 3 +16166: basic_istringstream& +16166: operator=(const basic_istringstream&) = delete; +16166: +16166: basic_istringstream& +16166: operator=(basic_istringstream&& __rhs) +16166: { +16166: __istream_type::operator=(std::move(__rhs)); +16166: _M_stringbuf = std::move(__rhs._M_stringbuf); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_istringstream& __rhs) +16166: { +16166: __istream_type::swap(__rhs); +16166: _M_stringbuf.swap(__rhs._M_stringbuf); +16166: } +16166: # 697 "/usr/include/c++/14/sstream" 3 +16166: __stringbuf_type* +16166: rdbuf() const +16166: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } +16166: +16166: +16166: +16166: +16166: +16166: __string_type +16166: str() const +16166: { return _M_stringbuf.str(); } +16166: # 735 "/usr/include/c++/14/sstream" 3 +16166: void +16166: str(const __string_type& __s) +16166: { _M_stringbuf.str(__s); } +16166: # 752 "/usr/include/c++/14/sstream" 3 +16166: }; +16166: # 770 "/usr/include/c++/14/sstream" 3 +16166: template +16166: class basic_ostringstream : public basic_ostream<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: typedef _Alloc allocator_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: +16166: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +16166: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; +16166: typedef basic_ostream __ostream_type; +16166: +16166: private: +16166: __stringbuf_type _M_stringbuf; +16166: +16166: public: +16166: # 804 "/usr/include/c++/14/sstream" 3 +16166: basic_ostringstream() +16166: : __ostream_type(), _M_stringbuf(ios_base::out) +16166: { this->init(&_M_stringbuf); } +16166: # 820 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_ostringstream(ios_base::openmode __mode) +16166: : __ostream_type(), _M_stringbuf(__mode | ios_base::out) +16166: { this->init(&_M_stringbuf); } +16166: # 838 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_ostringstream(const __string_type& __str, +16166: ios_base::openmode __mode = ios_base::out) +16166: : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out) +16166: { this->init(&_M_stringbuf); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~basic_ostringstream() +16166: { } +16166: +16166: +16166: basic_ostringstream(const basic_ostringstream&) = delete; +16166: +16166: basic_ostringstream(basic_ostringstream&& __rhs) +16166: : __ostream_type(std::move(__rhs)), +16166: _M_stringbuf(std::move(__rhs._M_stringbuf)) +16166: { __ostream_type::set_rdbuf(&_M_stringbuf); } +16166: # 895 "/usr/include/c++/14/sstream" 3 +16166: basic_ostringstream& +16166: operator=(const basic_ostringstream&) = delete; +16166: +16166: basic_ostringstream& +16166: operator=(basic_ostringstream&& __rhs) +16166: { +16166: __ostream_type::operator=(std::move(__rhs)); +16166: _M_stringbuf = std::move(__rhs._M_stringbuf); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_ostringstream& __rhs) +16166: { +16166: __ostream_type::swap(__rhs); +16166: _M_stringbuf.swap(__rhs._M_stringbuf); +16166: } +16166: # 921 "/usr/include/c++/14/sstream" 3 +16166: __stringbuf_type* +16166: rdbuf() const +16166: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } +16166: +16166: +16166: +16166: +16166: +16166: __string_type +16166: str() const +16166: { return _M_stringbuf.str(); } +16166: # 959 "/usr/include/c++/14/sstream" 3 +16166: void +16166: str(const __string_type& __s) +16166: { _M_stringbuf.str(__s); } +16166: # 976 "/usr/include/c++/14/sstream" 3 +16166: }; +16166: # 994 "/usr/include/c++/14/sstream" 3 +16166: template +16166: class basic_stringstream : public basic_iostream<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: +16166: +16166: typedef _Alloc allocator_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: +16166: typedef basic_string<_CharT, _Traits, _Alloc> __string_type; +16166: typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type; +16166: typedef basic_iostream __iostream_type; +16166: +16166: private: +16166: __stringbuf_type _M_stringbuf; +16166: +16166: public: +16166: # 1028 "/usr/include/c++/14/sstream" 3 +16166: basic_stringstream() +16166: : __iostream_type(), _M_stringbuf(ios_base::out | ios_base::in) +16166: { this->init(&_M_stringbuf); } +16166: # 1042 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_stringstream(ios_base::openmode __m) +16166: : __iostream_type(), _M_stringbuf(__m) +16166: { this->init(&_M_stringbuf); } +16166: # 1058 "/usr/include/c++/14/sstream" 3 +16166: explicit +16166: basic_stringstream(const __string_type& __str, +16166: ios_base::openmode __m = ios_base::out | ios_base::in) +16166: : __iostream_type(), _M_stringbuf(__str, __m) +16166: { this->init(&_M_stringbuf); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ~basic_stringstream() +16166: { } +16166: +16166: +16166: basic_stringstream(const basic_stringstream&) = delete; +16166: +16166: basic_stringstream(basic_stringstream&& __rhs) +16166: : __iostream_type(std::move(__rhs)), +16166: _M_stringbuf(std::move(__rhs._M_stringbuf)) +16166: { __iostream_type::set_rdbuf(&_M_stringbuf); } +16166: # 1117 "/usr/include/c++/14/sstream" 3 +16166: basic_stringstream& +16166: operator=(const basic_stringstream&) = delete; +16166: +16166: basic_stringstream& +16166: operator=(basic_stringstream&& __rhs) +16166: { +16166: __iostream_type::operator=(std::move(__rhs)); +16166: _M_stringbuf = std::move(__rhs._M_stringbuf); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_stringstream& __rhs) +16166: { +16166: __iostream_type::swap(__rhs); +16166: _M_stringbuf.swap(__rhs._M_stringbuf); +16166: } +16166: # 1143 "/usr/include/c++/14/sstream" 3 +16166: __stringbuf_type* +16166: rdbuf() const +16166: { return const_cast<__stringbuf_type*>(&_M_stringbuf); } +16166: +16166: +16166: +16166: +16166: +16166: __string_type +16166: str() const +16166: { return _M_stringbuf.str(); } +16166: # 1181 "/usr/include/c++/14/sstream" 3 +16166: void +16166: str(const __string_type& __s) +16166: { _M_stringbuf.str(__s); } +16166: # 1198 "/usr/include/c++/14/sstream" 3 +16166: }; +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_stringbuf<_CharT, _Traits, _Allocator>& __x, +16166: basic_stringbuf<_CharT, _Traits, _Allocator>& __y) +16166: noexcept(noexcept(__x.swap(__y))) +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_istringstream<_CharT, _Traits, _Allocator>& __x, +16166: basic_istringstream<_CharT, _Traits, _Allocator>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_ostringstream<_CharT, _Traits, _Allocator>& __x, +16166: basic_ostringstream<_CharT, _Traits, _Allocator>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_stringstream<_CharT, _Traits, _Allocator>& __x, +16166: basic_stringstream<_CharT, _Traits, _Allocator>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: } +16166: +16166: } +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/sstream.tcc" 1 3 +16166: # 37 "/usr/include/c++/14/bits/sstream.tcc" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/sstream.tcc" 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type +16166: basic_stringbuf<_CharT, _Traits, _Alloc>:: +16166: pbackfail(int_type __c) +16166: { +16166: int_type __ret = traits_type::eof(); +16166: if (this->eback() < this->gptr()) +16166: { +16166: +16166: +16166: const bool __testeof = traits_type::eq_int_type(__c, __ret); +16166: if (!__testeof) +16166: { +16166: const bool __testeq = traits_type::eq(traits_type:: +16166: to_char_type(__c), +16166: this->gptr()[-1]); +16166: const bool __testout = this->_M_mode & ios_base::out; +16166: if (__testeq || __testout) +16166: { +16166: this->gbump(-1); +16166: if (!__testeq) +16166: *this->gptr() = traits_type::to_char_type(__c); +16166: __ret = __c; +16166: } +16166: } +16166: else +16166: { +16166: this->gbump(-1); +16166: __ret = traits_type::not_eof(__c); +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type +16166: basic_stringbuf<_CharT, _Traits, _Alloc>:: +16166: overflow(int_type __c) +16166: { +16166: const bool __testout = this->_M_mode & ios_base::out; +16166: if (__builtin_expect(!__testout, false)) +16166: return traits_type::eof(); +16166: +16166: const bool __testeof = traits_type::eq_int_type(__c, traits_type::eof()); +16166: if (__builtin_expect(__testeof, false)) +16166: return traits_type::not_eof(__c); +16166: +16166: const __size_type __capacity = _M_string.capacity(); +16166: +16166: +16166: if (size_t(this->epptr() - this->pbase()) < __capacity) +16166: { +16166: +16166: char_type* __base = const_cast(_M_string.data()); +16166: _M_pbump(__base, __base + __capacity, this->pptr() - this->pbase()); +16166: if (_M_mode & ios_base::in) +16166: { +16166: const __size_type __nget = this->gptr() - this->eback(); +16166: const __size_type __eget = this->egptr() - this->eback(); +16166: this->setg(__base, __base + __nget, __base + __eget + 1); +16166: } +16166: *this->pptr() = traits_type::to_char_type(__c); +16166: this->pbump(1); +16166: return __c; +16166: } +16166: +16166: +16166: const __size_type __max_size = _M_string.max_size(); +16166: const bool __testput = this->pptr() < this->epptr(); +16166: if (__builtin_expect(!__testput && __capacity == __max_size, false)) +16166: return traits_type::eof(); +16166: +16166: +16166: +16166: const char_type __conv = traits_type::to_char_type(__c); +16166: if (!__testput) +16166: { +16166: # 129 "/usr/include/c++/14/bits/sstream.tcc" 3 +16166: const __size_type __opt_len = std::max(__size_type(2 * __capacity), +16166: __size_type(512)); +16166: const __size_type __len = std::min(__opt_len, __max_size); +16166: __string_type __tmp(_M_string.get_allocator()); +16166: __tmp.reserve(__len); +16166: if (this->pbase()) +16166: __tmp.assign(this->pbase(), this->epptr() - this->pbase()); +16166: __tmp.push_back(__conv); +16166: _M_string.swap(__tmp); +16166: _M_sync(const_cast(_M_string.data()), +16166: this->gptr() - this->eback(), this->pptr() - this->pbase()); +16166: } +16166: else +16166: *this->pptr() = __conv; +16166: this->pbump(1); +16166: return __c; +16166: } +16166: +16166: template +16166: typename basic_stringbuf<_CharT, _Traits, _Alloc>::int_type +16166: basic_stringbuf<_CharT, _Traits, _Alloc>:: +16166: underflow() +16166: { +16166: int_type __ret = traits_type::eof(); +16166: const bool __testin = this->_M_mode & ios_base::in; +16166: if (__testin) +16166: { +16166: +16166: _M_update_egptr(); +16166: +16166: if (this->gptr() < this->egptr()) +16166: __ret = traits_type::to_int_type(*this->gptr()); +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type +16166: basic_stringbuf<_CharT, _Traits, _Alloc>:: +16166: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __mode) +16166: { +16166: pos_type __ret = pos_type(off_type(-1)); +16166: bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; +16166: bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; +16166: const bool __testboth = __testin && __testout && __way != ios_base::cur; +16166: __testin &= !(__mode & ios_base::out); +16166: __testout &= !(__mode & ios_base::in); +16166: +16166: +16166: +16166: const char_type* __beg = __testin ? this->eback() : this->pbase(); +16166: if ((__beg || !__off) && (__testin || __testout || __testboth)) +16166: { +16166: _M_update_egptr(); +16166: +16166: off_type __newoffi = __off; +16166: off_type __newoffo = __newoffi; +16166: if (__way == ios_base::cur) +16166: { +16166: __newoffi += this->gptr() - __beg; +16166: __newoffo += this->pptr() - __beg; +16166: } +16166: else if (__way == ios_base::end) +16166: __newoffo = __newoffi += this->egptr() - __beg; +16166: +16166: if ((__testin || __testboth) +16166: && __newoffi >= 0 +16166: && this->egptr() - __beg >= __newoffi) +16166: { +16166: this->setg(this->eback(), this->eback() + __newoffi, +16166: this->egptr()); +16166: __ret = pos_type(__newoffi); +16166: } +16166: if ((__testout || __testboth) +16166: && __newoffo >= 0 +16166: && this->egptr() - __beg >= __newoffo) +16166: { +16166: _M_pbump(this->pbase(), this->epptr(), __newoffo); +16166: __ret = pos_type(__newoffo); +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type +16166: basic_stringbuf<_CharT, _Traits, _Alloc>:: +16166: seekpos(pos_type __sp, ios_base::openmode __mode) +16166: { +16166: pos_type __ret = pos_type(off_type(-1)); +16166: const bool __testin = (ios_base::in & this->_M_mode & __mode) != 0; +16166: const bool __testout = (ios_base::out & this->_M_mode & __mode) != 0; +16166: +16166: const char_type* __beg = __testin ? this->eback() : this->pbase(); +16166: if ((__beg || !off_type(__sp)) && (__testin || __testout)) +16166: { +16166: _M_update_egptr(); +16166: +16166: const off_type __pos(__sp); +16166: const bool __testpos = (0 <= __pos +16166: && __pos <= this->egptr() - __beg); +16166: if (__testpos) +16166: { +16166: if (__testin) +16166: this->setg(this->eback(), this->eback() + __pos, +16166: this->egptr()); +16166: if (__testout) +16166: _M_pbump(this->pbase(), this->epptr(), __pos); +16166: __ret = __sp; +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: void +16166: basic_stringbuf<_CharT, _Traits, _Alloc>:: +16166: _M_sync(char_type* __base, __size_type __i, __size_type __o) +16166: { +16166: const bool __testin = _M_mode & ios_base::in; +16166: const bool __testout = _M_mode & ios_base::out; +16166: char_type* __endg = __base + _M_string.size(); +16166: char_type* __endp = __base + _M_string.capacity(); +16166: +16166: if (__base != _M_string.data()) +16166: { +16166: +16166: __endg += __i; +16166: __i = 0; +16166: __endp = __endg; +16166: } +16166: +16166: if (__testin) +16166: this->setg(__base, __base + __i, __endg); +16166: if (__testout) +16166: { +16166: _M_pbump(__base, __endp, __o); +16166: +16166: +16166: +16166: if (!__testin) +16166: this->setg(__endg, __endg, __endg); +16166: } +16166: } +16166: +16166: template +16166: void +16166: basic_stringbuf<_CharT, _Traits, _Alloc>:: +16166: _M_pbump(char_type* __pbeg, char_type* __pend, off_type __off) +16166: { +16166: this->setp(__pbeg, __pend); +16166: while (__off > __gnu_cxx::__numeric_traits::__max) +16166: { +16166: this->pbump(__gnu_cxx::__numeric_traits::__max); +16166: __off -= __gnu_cxx::__numeric_traits::__max; +16166: } +16166: this->pbump(__off); +16166: } +16166: +16166: +16166: +16166: +16166: extern template class basic_stringbuf; +16166: extern template class basic_istringstream; +16166: extern template class basic_ostringstream; +16166: extern template class basic_stringstream; +16166: +16166: +16166: extern template class basic_stringbuf; +16166: extern template class basic_istringstream; +16166: extern template class basic_ostringstream; +16166: extern template class basic_stringstream; +16166: +16166: +16166: +16166: +16166: } +16166: # 1239 "/usr/include/c++/14/sstream" 2 3 +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 1 +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cstdarg" 1 3 +16166: # 39 "/usr/include/c++/14/cstdarg" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdarg" 3 +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 2 +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" 1 +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: namespace rocksdb { +16166: +16166: +16166: class Cache; +16166: class FilterPolicy; +16166: class FlushBlockPolicyFactory; +16166: class PersistentCache; +16166: class RandomAccessFile; +16166: struct TableReaderOptions; +16166: struct TableBuilderOptions; +16166: class TableBuilder; +16166: class TableFactory; +16166: class TableReader; +16166: class WritableFileWriter; +16166: struct ConfigOptions; +16166: struct EnvOptions; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum ChecksumType : char { +16166: kNoChecksum = 0x0, +16166: kCRC32c = 0x1, +16166: kxxHash = 0x2, +16166: kxxHash64 = 0x3, +16166: kXXH3 = 0x4, +16166: }; +16166: +16166: +16166: +16166: +16166: enum class PinningTier { +16166: +16166: +16166: +16166: +16166: kFallback, +16166: +16166: +16166: kNone, +16166: +16166: +16166: +16166: +16166: +16166: +16166: kFlushedAndSimilar, +16166: +16166: +16166: kAll, +16166: }; +16166: +16166: +16166: +16166: struct MetadataCacheOptions { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: PinningTier top_level_index_pinning = PinningTier::kFallback; +16166: +16166: +16166: +16166: PinningTier partition_pinning = PinningTier::kFallback; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: PinningTier unpartitioned_pinning = PinningTier::kFallback; +16166: }; +16166: +16166: struct CacheEntryRoleOptions { +16166: enum class Decision { +16166: kEnabled, +16166: kDisabled, +16166: kFallback, +16166: }; +16166: Decision charged = Decision::kFallback; +16166: bool operator==(const CacheEntryRoleOptions& other) const { +16166: return charged == other.charged; +16166: } +16166: }; +16166: +16166: struct CacheUsageOptions { +16166: CacheEntryRoleOptions options; +16166: std::map options_overrides; +16166: }; +16166: # 147 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: struct BlockBasedTableOptions { +16166: static const char* kName() { return "BlockTableOptions"; } +16166: +16166: +16166: +16166: +16166: +16166: std::shared_ptr flush_block_policy_factory; +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: bool cache_index_and_filter_blocks = false; +16166: +16166: +16166: +16166: +16166: +16166: bool cache_index_and_filter_blocks_with_high_priority = true; +16166: # 196 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: bool pin_l0_filter_and_index_blocks_in_cache = false; +16166: # 218 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: bool pin_top_level_index_and_filter = true; +16166: +16166: +16166: +16166: +16166: +16166: MetadataCacheOptions metadata_cache_options; +16166: +16166: +16166: enum IndexType : char { +16166: +16166: +16166: kBinarySearch = 0x00, +16166: +16166: +16166: +16166: kHashSearch = 0x01, +16166: +16166: +16166: +16166: +16166: kTwoLevelIndexSearch = 0x02, +16166: # 252 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: kBinarySearchWithFirstKey = 0x03, +16166: }; +16166: +16166: IndexType index_type = kBinarySearch; +16166: +16166: +16166: enum DataBlockIndexType : char { +16166: kDataBlockBinarySearch = 0, +16166: kDataBlockBinaryAndHash = 1, +16166: }; +16166: +16166: DataBlockIndexType data_block_index_type = kDataBlockBinarySearch; +16166: +16166: +16166: +16166: double data_block_hash_table_util_ratio = 0.75; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ChecksumType checksum = kXXH3; +16166: +16166: +16166: +16166: +16166: +16166: bool no_block_cache = false; +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: std::shared_ptr block_cache = nullptr; +16166: +16166: +16166: +16166: std::shared_ptr persistent_cache = nullptr; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t block_size = 4 * 1024; +16166: +16166: +16166: +16166: +16166: +16166: +16166: int block_size_deviation = 10; +16166: +16166: +16166: +16166: +16166: +16166: int block_restart_interval = 16; +16166: +16166: +16166: int index_block_restart_interval = 1; +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t metadata_block_size = 4096; +16166: # 412 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: CacheUsageOptions cache_usage_options; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool partition_filters = false; +16166: # 437 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: bool decouple_partitioned_filters = false; +16166: # 472 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: bool optimize_filters_for_memory = true; +16166: +16166: +16166: +16166: +16166: +16166: bool use_delta_encoding = true; +16166: +16166: +16166: +16166: +16166: std::shared_ptr filter_policy = nullptr; +16166: +16166: +16166: +16166: bool whole_key_filtering = true; +16166: # 497 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: bool detect_filter_construct_corruption = false; +16166: +16166: +16166: +16166: +16166: bool verify_compression = false; +16166: # 525 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: uint32_t read_amp_bytes_per_bit = 0; +16166: # 563 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: uint32_t format_version = 6; +16166: +16166: +16166: +16166: +16166: bool enable_index_compression = true; +16166: +16166: +16166: bool block_align = false; +16166: # 595 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: enum class IndexShorteningMode : char { +16166: +16166: kNoShortening, +16166: +16166: +16166: kShortenSeparators, +16166: +16166: kShortenSeparatorsAndSuccessor, +16166: }; +16166: +16166: IndexShorteningMode index_shortening = +16166: IndexShorteningMode::kShortenSeparators; +16166: # 627 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: size_t max_auto_readahead_size = 256 * 1024; +16166: # 637 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: enum class PrepopulateBlockCache : char { +16166: +16166: kDisable, +16166: +16166: kFlushOnly, +16166: }; +16166: +16166: PrepopulateBlockCache prepopulate_block_cache = +16166: PrepopulateBlockCache::kDisable; +16166: # 667 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: size_t initial_auto_readahead_size = 8 * 1024; +16166: # 687 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: uint64_t num_file_reads_for_auto_readahead = 2; +16166: }; +16166: +16166: +16166: struct BlockBasedTablePropertyNames { +16166: +16166: static const std::string kIndexType; +16166: +16166: static const std::string kWholeKeyFiltering; +16166: +16166: static const std::string kPrefixFiltering; +16166: +16166: +16166: +16166: +16166: static const std::string kDecoupledPartitionedFilters; +16166: }; +16166: +16166: +16166: TableFactory* NewBlockBasedTableFactory( +16166: const BlockBasedTableOptions& table_options = BlockBasedTableOptions()); +16166: +16166: enum EncodingType : char { +16166: +16166: kPlain, +16166: # 723 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: kPrefix, +16166: }; +16166: +16166: +16166: struct PlainTablePropertyNames { +16166: static const std::string kEncodingType; +16166: static const std::string kBloomVersion; +16166: static const std::string kNumBloomBlocks; +16166: }; +16166: +16166: const uint32_t kPlainTableVariableLength = 0; +16166: +16166: struct PlainTableOptions { +16166: static const char* kName() { return "PlainTableOptions"; } +16166: +16166: +16166: +16166: +16166: uint32_t user_key_len = kPlainTableVariableLength; +16166: +16166: +16166: +16166: int bloom_bits_per_key = 10; +16166: +16166: +16166: +16166: +16166: +16166: double hash_table_ratio = 0.75; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t index_sparseness = 16; +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t huge_page_tlb_size = 0; +16166: # 776 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: EncodingType encoding_type = kPlain; +16166: +16166: +16166: +16166: bool full_scan_mode = false; +16166: +16166: +16166: +16166: +16166: bool store_index_in_file = false; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: TableFactory* NewPlainTableFactory( +16166: const PlainTableOptions& options = PlainTableOptions()); +16166: +16166: struct CuckooTablePropertyNames { +16166: +16166: static const std::string kEmptyKey; +16166: +16166: static const std::string kValueLength; +16166: +16166: static const std::string kNumHashFunc; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kCuckooBlockSize; +16166: +16166: +16166: +16166: +16166: +16166: static const std::string kHashTableSize; +16166: +16166: +16166: static const std::string kIsLastLevel; +16166: +16166: static const std::string kIdentityAsFirstHash; +16166: +16166: static const std::string kUseModuleHash; +16166: +16166: static const std::string kUserKeyLength; +16166: }; +16166: +16166: struct CuckooTableOptions { +16166: static const char* kName() { return "CuckooTableOptions"; } +16166: +16166: +16166: +16166: double hash_table_ratio = 0.9; +16166: +16166: +16166: +16166: +16166: +16166: uint32_t max_search_depth = 100; +16166: +16166: +16166: +16166: +16166: +16166: uint32_t cuckoo_block_size = 5; +16166: +16166: +16166: +16166: +16166: bool identity_as_first_hash = false; +16166: +16166: +16166: +16166: +16166: +16166: bool use_module_hash = true; +16166: }; +16166: +16166: +16166: TableFactory* NewCuckooTableFactory( +16166: const CuckooTableOptions& table_options = CuckooTableOptions()); +16166: +16166: class RandomAccessFileReader; +16166: +16166: +16166: class TableFactory : public Customizable { +16166: public: +16166: ~TableFactory() override {} +16166: +16166: static const char* kBlockCacheOpts() { return "BlockCache"; } +16166: static const char* kBlockBasedTableName() { return "BlockBasedTable"; } +16166: static const char* kPlainTableName() { return "PlainTable"; } +16166: static const char* kCuckooTableName() { return "CuckooTable"; } +16166: +16166: +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& id, +16166: std::shared_ptr* factory); +16166: +16166: static const char* Type() { return "TableFactory"; } +16166: # 900 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: virtual Status NewTableReader( +16166: const TableReaderOptions& table_reader_options, +16166: std::unique_ptr&& file, uint64_t file_size, +16166: std::unique_ptr* table_reader, +16166: bool prefetch_index_and_filter_in_cache = true) const { +16166: ReadOptions ro; +16166: return NewTableReader(ro, table_reader_options, std::move(file), file_size, +16166: table_reader, prefetch_index_and_filter_in_cache); +16166: } +16166: +16166: +16166: +16166: virtual Status NewTableReader( +16166: const ReadOptions& ro, const TableReaderOptions& table_reader_options, +16166: std::unique_ptr&& file, uint64_t file_size, +16166: std::unique_ptr* table_reader, +16166: bool prefetch_index_and_filter_in_cache) const = 0; +16166: # 936 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: virtual TableBuilder* NewTableBuilder( +16166: const TableBuilderOptions& table_builder_options, +16166: WritableFileWriter* file) const = 0; +16166: +16166: +16166: +16166: +16166: virtual std::unique_ptr Clone() const = 0; +16166: +16166: +16166: virtual bool IsDeleteRangeSupported() const { return false; } +16166: }; +16166: # 958 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table.h" +16166: TableFactory* NewAdaptiveTableFactory( +16166: std::shared_ptr table_factory_to_write = nullptr, +16166: std::shared_ptr block_based_table_factory = nullptr, +16166: std::shared_ptr plain_table_factory = nullptr, +16166: std::shared_ptr cuckoo_table_factory = nullptr); +16166: +16166: } +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class FileLock; +16166: class FSDirectory; +16166: class FSRandomAccessFile; +16166: class FSRandomRWFile; +16166: class FSSequentialFile; +16166: class FSWritableFile; +16166: class Logger; +16166: class Slice; +16166: struct ImmutableDBOptions; +16166: struct MutableDBOptions; +16166: class RateLimiter; +16166: struct ConfigOptions; +16166: +16166: using AccessPattern = RandomAccessFile::AccessPattern; +16166: using FileAttributes = Env::FileAttributes; +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum class IOPriority : uint8_t { +16166: kIOLow, +16166: kIOHigh, +16166: kIOTotal, +16166: }; +16166: +16166: +16166: +16166: +16166: enum class IOType : uint8_t { +16166: kData, +16166: kFilter, +16166: kIndex, +16166: kMetadata, +16166: kWAL, +16166: kManifest, +16166: kLog, +16166: kUnknown, +16166: kInvalid, +16166: }; +16166: +16166: +16166: +16166: enum FSSupportedOps { +16166: kAsyncIO, +16166: kFSBuffer, +16166: +16166: kVerifyAndReconstructRead, +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: struct IOOptions { +16166: +16166: std::chrono::microseconds timeout; +16166: +16166: +16166: +16166: IOPriority prio; +16166: +16166: +16166: +16166: +16166: +16166: Env::IOPriority rate_limiter_priority; +16166: +16166: +16166: IOType type; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::unordered_map property_bag; +16166: +16166: +16166: +16166: bool force_dir_fsync; +16166: +16166: +16166: +16166: bool do_not_recurse; +16166: # 140 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: bool verify_and_reconstruct_read; +16166: +16166: +16166: Env::IOActivity io_activity = Env::IOActivity::kUnknown; +16166: +16166: IOOptions() : IOOptions(false) {} +16166: +16166: explicit IOOptions(bool force_dir_fsync_) +16166: : timeout(std::chrono::microseconds::zero()), +16166: prio(IOPriority::kIOLow), +16166: rate_limiter_priority(Env::IO_TOTAL), +16166: type(IOType::kUnknown), +16166: force_dir_fsync(force_dir_fsync_), +16166: do_not_recurse(false), +16166: verify_and_reconstruct_read(false) {} +16166: }; +16166: +16166: struct DirFsyncOptions { +16166: enum FsyncReason : uint8_t { +16166: kNewFileSynced, +16166: kFileRenamed, +16166: kDirRenamed, +16166: kFileDeleted, +16166: kDefault, +16166: } reason; +16166: +16166: std::string renamed_new_name; +16166: +16166: +16166: DirFsyncOptions(); +16166: +16166: explicit DirFsyncOptions(std::string file_renamed_new_name); +16166: +16166: explicit DirFsyncOptions(FsyncReason fsync_reason); +16166: }; +16166: +16166: +16166: +16166: +16166: struct FileOptions : EnvOptions { +16166: +16166: +16166: IOOptions io_options; +16166: +16166: +16166: +16166: +16166: +16166: +16166: Temperature temperature = Temperature::kUnknown; +16166: +16166: +16166: +16166: ChecksumType handoff_checksum_type; +16166: +16166: FileOptions() : EnvOptions(), handoff_checksum_type(ChecksumType::kCRC32c) {} +16166: +16166: FileOptions(const DBOptions& opts) +16166: : EnvOptions(opts), +16166: temperature(opts.metadata_write_temperature), +16166: handoff_checksum_type(ChecksumType::kCRC32c) {} +16166: +16166: FileOptions(const EnvOptions& opts) +16166: : EnvOptions(opts), handoff_checksum_type(ChecksumType::kCRC32c) {} +16166: +16166: FileOptions(const FileOptions& opts) +16166: : EnvOptions(opts), +16166: io_options(opts.io_options), +16166: temperature(opts.temperature), +16166: handoff_checksum_type(opts.handoff_checksum_type) {} +16166: +16166: FileOptions& operator=(const FileOptions&) = default; +16166: }; +16166: +16166: +16166: +16166: struct IODebugContext { +16166: +16166: std::string file_path; +16166: +16166: +16166: std::map counters; +16166: +16166: +16166: std::string msg; +16166: +16166: +16166: std::string request_id; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum TraceData : char { +16166: +16166: +16166: +16166: kRequestID = 0, +16166: }; +16166: uint64_t trace_data = 0; +16166: +16166: IODebugContext() {} +16166: +16166: void AddCounter(std::string& name, uint64_t value) { +16166: counters.emplace(name, value); +16166: } +16166: +16166: +16166: +16166: void SetRequestId(const std::string& _request_id) { +16166: request_id = _request_id; +16166: trace_data |= (1 << TraceData::kRequestID); +16166: } +16166: +16166: std::string ToString() { +16166: std::ostringstream ss; +16166: ss << file_path << ", "; +16166: for (auto counter : counters) { +16166: ss << counter.first << " = " << counter.second << ","; +16166: } +16166: ss << msg; +16166: return ss.str(); +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: using IOHandleDeleter = std::function; +16166: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: class FileSystem : public Customizable { +16166: public: +16166: FileSystem(); +16166: +16166: +16166: FileSystem(const FileSystem&) = delete; +16166: +16166: virtual ~FileSystem(); +16166: +16166: static const char* Type() { return "FileSystem"; } +16166: static const char* kDefaultName() { return "DefaultFileSystem"; } +16166: # 313 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: static Status CreateFromString(const ConfigOptions& options, +16166: const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: +16166: +16166: static std::shared_ptr Default(); +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual Status RegisterDbPaths(const std::vector& ) { +16166: return Status::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status UnregisterDbPaths(const std::vector& ) { +16166: return Status::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus NewSequentialFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) = 0; +16166: # 368 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus NewRandomAccessFile( +16166: const std::string& fname, const FileOptions& file_opts, +16166: std::unique_ptr* result, IODebugContext* dbg) = 0; +16166: +16166: +16166: enum WriteLifeTimeHint { +16166: kWLTHNotSet = 0, +16166: kWLTHNone, +16166: kWLTHShort, +16166: kWLTHMedium, +16166: kWLTHLong, +16166: kWLTHExtreme, +16166: }; +16166: # 389 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus NewWritableFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) = 0; +16166: # 402 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus ReopenWritableFile( +16166: const std::string& , const FileOptions& , +16166: std::unique_ptr* , IODebugContext* ) { +16166: return IOStatus::NotSupported("ReopenWritableFile"); +16166: } +16166: +16166: +16166: virtual IOStatus ReuseWritableFile(const std::string& fname, +16166: const std::string& old_fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus NewRandomRWFile(const std::string& , +16166: const FileOptions& , +16166: std::unique_ptr* , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported( +16166: "RandomRWFile is not implemented in this FileSystem"); +16166: } +16166: +16166: +16166: +16166: +16166: virtual IOStatus NewMemoryMappedFileBuffer( +16166: const std::string& , +16166: std::unique_ptr* ) { +16166: return IOStatus::NotSupported( +16166: "MemoryMappedFileBuffer is not implemented in this FileSystem"); +16166: } +16166: # 445 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus NewDirectory(const std::string& name, +16166: const IOOptions& io_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus FileExists(const std::string& fname, +16166: const IOOptions& options, +16166: IODebugContext* dbg) = 0; +16166: # 466 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus GetChildren(const std::string& dir, const IOOptions& options, +16166: std::vector* result, +16166: IODebugContext* dbg) = 0; +16166: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus GetChildrenFileAttributes( +16166: const std::string& dir, const IOOptions& options, +16166: std::vector* result, IODebugContext* dbg) { +16166: +16166: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +16166: (static_cast ( +16166: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: result != nullptr +16166: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: "result != nullptr" +16166: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 483 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: ; +16166: std::vector child_fnames; +16166: IOStatus s = GetChildren(dir, options, &child_fnames, dbg); +16166: if (!s.ok()) { +16166: return s; +16166: } +16166: result->resize(child_fnames.size()); +16166: size_t result_size = 0; +16166: for (size_t i = 0; i < child_fnames.size(); ++i) { +16166: const std::string path = dir + "/" + child_fnames[i]; +16166: if (!(s = GetFileSize(path, options, &(*result)[result_size].size_bytes, +16166: dbg)) +16166: .ok()) { +16166: if (FileExists(path, options, dbg).IsNotFound()) { +16166: +16166: continue; +16166: } +16166: return s; +16166: } +16166: (*result)[result_size].name = std::move(child_fnames[i]); +16166: result_size++; +16166: } +16166: result->resize(result_size); +16166: return IOStatus::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus DeleteFile(const std::string& fname, +16166: const IOOptions& options, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: virtual IOStatus Truncate(const std::string& , size_t , +16166: const IOOptions& , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported( +16166: "Truncate is not supported for this FileSystem"); +16166: } +16166: +16166: +16166: virtual IOStatus CreateDir(const std::string& dirname, +16166: const IOOptions& options, IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: virtual IOStatus CreateDirIfMissing(const std::string& dirname, +16166: const IOOptions& options, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: virtual IOStatus DeleteDir(const std::string& dirname, +16166: const IOOptions& options, IODebugContext* dbg) = 0; +16166: +16166: +16166: virtual IOStatus GetFileSize(const std::string& fname, +16166: const IOOptions& options, uint64_t* file_size, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: virtual IOStatus GetFileModificationTime(const std::string& fname, +16166: const IOOptions& options, +16166: uint64_t* file_mtime, +16166: IODebugContext* dbg) = 0; +16166: +16166: virtual IOStatus RenameFile(const std::string& src, const std::string& target, +16166: const IOOptions& options, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: virtual IOStatus LinkFile(const std::string& , +16166: const std::string& , +16166: const IOOptions& , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported( +16166: "LinkFile is not supported for this FileSystem"); +16166: } +16166: +16166: virtual IOStatus NumFileLinks(const std::string& , +16166: const IOOptions& , +16166: uint64_t* , IODebugContext* ) { +16166: return IOStatus::NotSupported( +16166: "Getting number of file links is not supported for this FileSystem"); +16166: } +16166: +16166: virtual IOStatus AreFilesSame(const std::string& , +16166: const std::string& , +16166: const IOOptions& , bool* , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported( +16166: "AreFilesSame is not supported for this FileSystem"); +16166: } +16166: # 593 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus LockFile(const std::string& fname, const IOOptions& options, +16166: FileLock** lock, IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: +16166: virtual IOStatus UnlockFile(FileLock* lock, const IOOptions& options, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus GetTestDirectory(const IOOptions& options, std::string* path, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: +16166: virtual IOStatus NewLogger(const std::string& fname, const IOOptions& io_opts, +16166: std::shared_ptr* result, +16166: IODebugContext* dbg); +16166: +16166: +16166: virtual IOStatus GetAbsolutePath(const std::string& db_path, +16166: const IOOptions& options, +16166: std::string* output_path, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: virtual void SanitizeFileOptions(FileOptions* ) const {} +16166: +16166: +16166: +16166: virtual FileOptions OptimizeForLogRead(const FileOptions& file_options) const; +16166: +16166: +16166: +16166: +16166: virtual FileOptions OptimizeForManifestRead( +16166: const FileOptions& file_options) const; +16166: +16166: +16166: +16166: +16166: virtual FileOptions OptimizeForLogWrite(const FileOptions& file_options, +16166: const DBOptions& db_options) const; +16166: +16166: +16166: +16166: +16166: +16166: virtual FileOptions OptimizeForManifestWrite( +16166: const FileOptions& file_options) const; +16166: +16166: +16166: +16166: +16166: virtual FileOptions OptimizeForCompactionTableWrite( +16166: const FileOptions& file_options, +16166: const ImmutableDBOptions& immutable_ops) const; +16166: +16166: +16166: +16166: +16166: virtual FileOptions OptimizeForCompactionTableRead( +16166: const FileOptions& file_options, +16166: const ImmutableDBOptions& db_options) const; +16166: +16166: +16166: +16166: +16166: virtual FileOptions OptimizeForBlobFileRead( +16166: const FileOptions& file_options, +16166: const ImmutableDBOptions& db_options) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus GetFreeSpace(const std::string& , +16166: const IOOptions& , +16166: uint64_t* , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported("GetFreeSpace"); +16166: } +16166: +16166: virtual IOStatus IsDirectory(const std::string& , +16166: const IOOptions& options, bool* is_dir, +16166: IODebugContext* ) = 0; +16166: # 694 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus Poll(std::vector& , +16166: size_t ) { +16166: return IOStatus::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus AbortIO(std::vector& ) { +16166: return IOStatus::OK(); +16166: } +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual void DiscardCacheForDirectory(const std::string& ) {} +16166: # 727 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual void SupportedOps(int64_t& supported_ops) { +16166: supported_ops = 0; +16166: supported_ops |= (1 << FSSupportedOps::kAsyncIO); +16166: } +16166: +16166: +16166: +16166: private: +16166: void operator=(const FileSystem&); +16166: }; +16166: +16166: +16166: class FSSequentialFile { +16166: public: +16166: FSSequentialFile() {} +16166: +16166: virtual ~FSSequentialFile() {} +16166: # 757 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus Read(size_t n, const IOOptions& options, Slice* result, +16166: char* scratch, IODebugContext* dbg) = 0; +16166: # 767 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus Skip(uint64_t n) = 0; +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: +16166: +16166: +16166: +16166: virtual IOStatus InvalidateCache(size_t , size_t ) { +16166: return IOStatus::NotSupported("InvalidateCache not supported."); +16166: } +16166: +16166: +16166: +16166: virtual IOStatus PositionedRead(uint64_t , size_t , +16166: const IOOptions& , +16166: Slice* , char* , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported("PositionedRead"); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Temperature GetTemperature() const { return Temperature::kUnknown; } +16166: +16166: +16166: +16166: }; +16166: +16166: using FSAllocationPtr = std::unique_ptr>; +16166: +16166: +16166: struct FSReadRequest { +16166: +16166: uint64_t offset; +16166: +16166: +16166: +16166: size_t len; +16166: # 822 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: char* scratch; +16166: # 836 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: Slice result; +16166: +16166: +16166: +16166: IOStatus status; +16166: # 865 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: FSAllocationPtr fs_scratch; +16166: }; +16166: +16166: +16166: class FSRandomAccessFile { +16166: public: +16166: FSRandomAccessFile() {} +16166: +16166: virtual ~FSRandomAccessFile() {} +16166: # 889 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const = 0; +16166: +16166: +16166: +16166: +16166: virtual IOStatus Prefetch(uint64_t , size_t , +16166: const IOOptions& , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported("Prefetch"); +16166: } +16166: # 910 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +16166: const IOOptions& options, IODebugContext* dbg) { +16166: +16166: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +16166: (static_cast ( +16166: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: reqs != nullptr +16166: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: "reqs != nullptr" +16166: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 912 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: ; +16166: for (size_t i = 0; i < num_reqs; ++i) { +16166: FSReadRequest& req = reqs[i]; +16166: req.status = +16166: Read(req.offset, req.len, options, &req.result, req.scratch, dbg); +16166: } +16166: return IOStatus::OK(); +16166: } +16166: # 936 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual size_t GetUniqueId(char* , size_t ) const { +16166: return 0; +16166: +16166: } +16166: +16166: enum AccessPattern { kNormal, kRandom, kSequential, kWillNeed, kWontNeed }; +16166: +16166: virtual void Hint(AccessPattern ) {} +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: +16166: +16166: +16166: +16166: virtual IOStatus InvalidateCache(size_t , size_t ) { +16166: return IOStatus::NotSupported("InvalidateCache not supported."); +16166: } +16166: # 992 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +16166: std::function cb, +16166: void* cb_arg, void** , +16166: IOHandleDeleter* , IODebugContext* dbg) { +16166: req.status = +16166: Read(req.offset, req.len, opts, &(req.result), req.scratch, dbg); +16166: cb(req, cb_arg); +16166: return IOStatus::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Temperature GetTemperature() const { return Temperature::kUnknown; } +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: struct DataVerificationInfo { +16166: +16166: Slice checksum; +16166: }; +16166: +16166: +16166: +16166: +16166: class FSWritableFile { +16166: public: +16166: FSWritableFile() +16166: : last_preallocated_block_(0), +16166: preallocation_block_size_(0), +16166: io_priority_(Env::IO_TOTAL), +16166: write_hint_(Env::WLTH_NOT_SET), +16166: strict_bytes_per_sync_(false) {} +16166: +16166: explicit FSWritableFile(const FileOptions& options) +16166: : last_preallocated_block_(0), +16166: preallocation_block_size_(0), +16166: io_priority_(Env::IO_TOTAL), +16166: write_hint_(Env::WLTH_NOT_SET), +16166: strict_bytes_per_sync_(options.strict_bytes_per_sync) {} +16166: +16166: +16166: +16166: +16166: virtual ~FSWritableFile() {} +16166: +16166: +16166: +16166: +16166: virtual IOStatus Append(const Slice& data, const IOOptions& options, +16166: IODebugContext* dbg) = 0; +16166: # 1058 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus Append(const Slice& data, const IOOptions& options, +16166: const DataVerificationInfo& , +16166: IODebugContext* dbg) { +16166: return Append(data, options, dbg); +16166: } +16166: # 1084 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus PositionedAppend(const Slice& , +16166: uint64_t , +16166: const IOOptions& , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported("PositionedAppend"); +16166: } +16166: # 1099 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus PositionedAppend( +16166: const Slice& , uint64_t , +16166: const IOOptions& , +16166: const DataVerificationInfo& , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported("PositionedAppend"); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus Truncate(uint64_t , const IOOptions& , +16166: IODebugContext* ) { +16166: return IOStatus::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus Close(const IOOptions& , +16166: IODebugContext* ) = 0; +16166: +16166: virtual IOStatus Flush(const IOOptions& options, IODebugContext* dbg) = 0; +16166: virtual IOStatus Sync(const IOOptions& options, +16166: IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) { +16166: return Sync(options, dbg); +16166: } +16166: +16166: +16166: +16166: virtual bool IsSyncThreadSafe() const { return false; } +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: +16166: virtual void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) { +16166: write_hint_ = hint; +16166: } +16166: # 1165 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual void SetIOPriority(Env::IOPriority pri) { io_priority_ = pri; } +16166: +16166: virtual Env::IOPriority GetIOPriority() { return io_priority_; } +16166: +16166: virtual Env::WriteLifeTimeHint GetWriteLifeTimeHint() { return write_hint_; } +16166: +16166: +16166: +16166: virtual uint64_t GetFileSize(const IOOptions& , +16166: IODebugContext* ) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void SetPreallocationBlockSize(size_t size) { +16166: preallocation_block_size_ = size; +16166: } +16166: +16166: virtual void GetPreallocationStatus(size_t* block_size, +16166: size_t* last_allocated_block) { +16166: *last_allocated_block = last_preallocated_block_; +16166: *block_size = preallocation_block_size_; +16166: } +16166: +16166: +16166: virtual size_t GetUniqueId(char* , size_t ) const { +16166: return 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus InvalidateCache(size_t , size_t ) { +16166: return IOStatus::NotSupported("InvalidateCache not supported."); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus RangeSync(uint64_t , uint64_t , +16166: const IOOptions& options, IODebugContext* dbg) { +16166: if (strict_bytes_per_sync_) { +16166: return Sync(options, dbg); +16166: } +16166: return IOStatus::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void PrepareWrite(size_t offset, size_t len, const IOOptions& options, +16166: IODebugContext* dbg) { +16166: if (preallocation_block_size_ == 0) { +16166: return; +16166: } +16166: +16166: +16166: +16166: const auto block_size = preallocation_block_size_; +16166: size_t new_last_preallocated_block = +16166: (offset + len + block_size - 1) / block_size; +16166: if (new_last_preallocated_block > last_preallocated_block_) { +16166: size_t num_spanned_blocks = +16166: new_last_preallocated_block - last_preallocated_block_; +16166: Allocate(block_size * last_preallocated_block_, +16166: block_size * num_spanned_blocks, options, dbg) +16166: .PermitUncheckedError(); +16166: last_preallocated_block_ = new_last_preallocated_block; +16166: } +16166: } +16166: +16166: +16166: virtual IOStatus Allocate(uint64_t , uint64_t , +16166: const IOOptions& , +16166: IODebugContext* ) { +16166: return IOStatus::OK(); +16166: } +16166: +16166: +16166: +16166: +16166: protected: +16166: size_t preallocation_block_size() { return preallocation_block_size_; } +16166: +16166: private: +16166: size_t last_preallocated_block_; +16166: size_t preallocation_block_size_; +16166: +16166: FSWritableFile(const FSWritableFile&); +16166: void operator=(const FSWritableFile&); +16166: +16166: protected: +16166: Env::IOPriority io_priority_; +16166: Env::WriteLifeTimeHint write_hint_; +16166: const bool strict_bytes_per_sync_; +16166: }; +16166: +16166: +16166: class FSRandomRWFile { +16166: public: +16166: FSRandomRWFile() {} +16166: +16166: +16166: +16166: +16166: virtual ~FSRandomRWFile() {} +16166: +16166: +16166: +16166: virtual bool use_direct_io() const { return false; } +16166: +16166: +16166: +16166: virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; } +16166: +16166: +16166: +16166: virtual IOStatus Write(uint64_t offset, const Slice& data, +16166: const IOOptions& options, IODebugContext* dbg) = 0; +16166: # 1302 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: virtual IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const = 0; +16166: +16166: virtual IOStatus Flush(const IOOptions& options, IODebugContext* dbg) = 0; +16166: +16166: virtual IOStatus Sync(const IOOptions& options, IODebugContext* dbg) = 0; +16166: +16166: virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) { +16166: return Sync(options, dbg); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IOStatus Close(const IOOptions& options, IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Temperature GetTemperature() const { return Temperature::kUnknown; } +16166: +16166: +16166: +16166: +16166: +16166: FSRandomRWFile(const RandomRWFile&) = delete; +16166: FSRandomRWFile& operator=(const RandomRWFile&) = delete; +16166: }; +16166: +16166: +16166: +16166: class FSMemoryMappedFileBuffer { +16166: public: +16166: FSMemoryMappedFileBuffer(void* _base, size_t _length) +16166: : base_(_base), length_(_length) {} +16166: +16166: virtual ~FSMemoryMappedFileBuffer() = 0; +16166: +16166: +16166: +16166: FSMemoryMappedFileBuffer(const FSMemoryMappedFileBuffer&) = delete; +16166: FSMemoryMappedFileBuffer& operator=(const FSMemoryMappedFileBuffer&) = delete; +16166: +16166: void* GetBase() const { return base_; } +16166: size_t GetLen() const { return length_; } +16166: +16166: protected: +16166: void* base_; +16166: const size_t length_; +16166: }; +16166: +16166: +16166: +16166: class FSDirectory { +16166: public: +16166: +16166: +16166: +16166: virtual ~FSDirectory() {} +16166: +16166: virtual IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) = 0; +16166: +16166: +16166: +16166: +16166: virtual IOStatus FsyncWithDirOptions( +16166: const IOOptions& options, IODebugContext* dbg, +16166: const DirFsyncOptions& ) { +16166: return Fsync(options, dbg); +16166: } +16166: +16166: +16166: +16166: +16166: virtual IOStatus Close(const IOOptions& , +16166: IODebugContext* ) { +16166: return IOStatus::NotSupported("Close"); +16166: } +16166: +16166: virtual size_t GetUniqueId(char* , size_t ) const { +16166: return 0; +16166: } +16166: +16166: +16166: +16166: }; +16166: # 1424 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/file_system.h" +16166: class FileSystemWrapper : public FileSystem { +16166: public: +16166: +16166: explicit FileSystemWrapper(const std::shared_ptr& t); +16166: ~FileSystemWrapper() override {} +16166: +16166: +16166: FileSystem* target() const { return target_.get(); } +16166: +16166: +16166: IOStatus NewSequentialFile(const std::string& f, const FileOptions& file_opts, +16166: std::unique_ptr* r, +16166: IODebugContext* dbg) override { +16166: return target_->NewSequentialFile(f, file_opts, r, dbg); +16166: } +16166: IOStatus NewRandomAccessFile(const std::string& f, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* r, +16166: IODebugContext* dbg) override { +16166: return target_->NewRandomAccessFile(f, file_opts, r, dbg); +16166: } +16166: IOStatus NewWritableFile(const std::string& f, const FileOptions& file_opts, +16166: std::unique_ptr* r, +16166: IODebugContext* dbg) override { +16166: return target_->NewWritableFile(f, file_opts, r, dbg); +16166: } +16166: IOStatus ReopenWritableFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override { +16166: return target_->ReopenWritableFile(fname, file_opts, result, dbg); +16166: } +16166: IOStatus ReuseWritableFile(const std::string& fname, +16166: const std::string& old_fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* r, +16166: IODebugContext* dbg) override { +16166: return target_->ReuseWritableFile(fname, old_fname, file_opts, r, dbg); +16166: } +16166: IOStatus NewRandomRWFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override { +16166: return target_->NewRandomRWFile(fname, file_opts, result, dbg); +16166: } +16166: IOStatus NewMemoryMappedFileBuffer( +16166: const std::string& fname, +16166: std::unique_ptr* result) override { +16166: return target_->NewMemoryMappedFileBuffer(fname, result); +16166: } +16166: IOStatus NewDirectory(const std::string& name, const IOOptions& io_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override { +16166: return target_->NewDirectory(name, io_opts, result, dbg); +16166: } +16166: IOStatus FileExists(const std::string& f, const IOOptions& io_opts, +16166: IODebugContext* dbg) override { +16166: return target_->FileExists(f, io_opts, dbg); +16166: } +16166: IOStatus GetChildren(const std::string& dir, const IOOptions& io_opts, +16166: std::vector* r, +16166: IODebugContext* dbg) override { +16166: return target_->GetChildren(dir, io_opts, r, dbg); +16166: } +16166: IOStatus GetChildrenFileAttributes(const std::string& dir, +16166: const IOOptions& options, +16166: std::vector* result, +16166: IODebugContext* dbg) override { +16166: return target_->GetChildrenFileAttributes(dir, options, result, dbg); +16166: } +16166: IOStatus DeleteFile(const std::string& f, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->DeleteFile(f, options, dbg); +16166: } +16166: IOStatus Truncate(const std::string& fname, size_t size, +16166: const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Truncate(fname, size, options, dbg); +16166: } +16166: IOStatus CreateDir(const std::string& d, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->CreateDir(d, options, dbg); +16166: } +16166: IOStatus CreateDirIfMissing(const std::string& d, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->CreateDirIfMissing(d, options, dbg); +16166: } +16166: IOStatus DeleteDir(const std::string& d, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->DeleteDir(d, options, dbg); +16166: } +16166: IOStatus GetFileSize(const std::string& f, const IOOptions& options, +16166: uint64_t* s, IODebugContext* dbg) override { +16166: return target_->GetFileSize(f, options, s, dbg); +16166: } +16166: +16166: IOStatus GetFileModificationTime(const std::string& fname, +16166: const IOOptions& options, +16166: uint64_t* file_mtime, +16166: IODebugContext* dbg) override { +16166: return target_->GetFileModificationTime(fname, options, file_mtime, dbg); +16166: } +16166: +16166: IOStatus GetAbsolutePath(const std::string& db_path, const IOOptions& options, +16166: std::string* output_path, +16166: IODebugContext* dbg) override { +16166: return target_->GetAbsolutePath(db_path, options, output_path, dbg); +16166: } +16166: +16166: IOStatus RenameFile(const std::string& s, const std::string& t, +16166: const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->RenameFile(s, t, options, dbg); +16166: } +16166: +16166: IOStatus LinkFile(const std::string& s, const std::string& t, +16166: const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->LinkFile(s, t, options, dbg); +16166: } +16166: +16166: IOStatus NumFileLinks(const std::string& fname, const IOOptions& options, +16166: uint64_t* count, IODebugContext* dbg) override { +16166: return target_->NumFileLinks(fname, options, count, dbg); +16166: } +16166: +16166: IOStatus AreFilesSame(const std::string& first, const std::string& second, +16166: const IOOptions& options, bool* res, +16166: IODebugContext* dbg) override { +16166: return target_->AreFilesSame(first, second, options, res, dbg); +16166: } +16166: +16166: IOStatus LockFile(const std::string& f, const IOOptions& options, +16166: FileLock** l, IODebugContext* dbg) override { +16166: return target_->LockFile(f, options, l, dbg); +16166: } +16166: +16166: IOStatus UnlockFile(FileLock* l, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->UnlockFile(l, options, dbg); +16166: } +16166: +16166: IOStatus GetTestDirectory(const IOOptions& options, std::string* path, +16166: IODebugContext* dbg) override { +16166: return target_->GetTestDirectory(options, path, dbg); +16166: } +16166: IOStatus NewLogger(const std::string& fname, const IOOptions& options, +16166: std::shared_ptr* result, +16166: IODebugContext* dbg) override { +16166: return target_->NewLogger(fname, options, result, dbg); +16166: } +16166: +16166: void SanitizeFileOptions(FileOptions* opts) const override { +16166: target_->SanitizeFileOptions(opts); +16166: } +16166: +16166: FileOptions OptimizeForLogRead( +16166: const FileOptions& file_options) const override { +16166: return target_->OptimizeForLogRead(file_options); +16166: } +16166: FileOptions OptimizeForManifestRead( +16166: const FileOptions& file_options) const override { +16166: return target_->OptimizeForManifestRead(file_options); +16166: } +16166: FileOptions OptimizeForLogWrite(const FileOptions& file_options, +16166: const DBOptions& db_options) const override { +16166: return target_->OptimizeForLogWrite(file_options, db_options); +16166: } +16166: FileOptions OptimizeForManifestWrite( +16166: const FileOptions& file_options) const override { +16166: return target_->OptimizeForManifestWrite(file_options); +16166: } +16166: FileOptions OptimizeForCompactionTableWrite( +16166: const FileOptions& file_options, +16166: const ImmutableDBOptions& immutable_ops) const override { +16166: return target_->OptimizeForCompactionTableWrite(file_options, +16166: immutable_ops); +16166: } +16166: FileOptions OptimizeForCompactionTableRead( +16166: const FileOptions& file_options, +16166: const ImmutableDBOptions& db_options) const override { +16166: return target_->OptimizeForCompactionTableRead(file_options, db_options); +16166: } +16166: FileOptions OptimizeForBlobFileRead( +16166: const FileOptions& file_options, +16166: const ImmutableDBOptions& db_options) const override { +16166: return target_->OptimizeForBlobFileRead(file_options, db_options); +16166: } +16166: IOStatus GetFreeSpace(const std::string& path, const IOOptions& options, +16166: uint64_t* diskfree, IODebugContext* dbg) override { +16166: return target_->GetFreeSpace(path, options, diskfree, dbg); +16166: } +16166: IOStatus IsDirectory(const std::string& path, const IOOptions& options, +16166: bool* is_dir, IODebugContext* dbg) override { +16166: return target_->IsDirectory(path, options, is_dir, dbg); +16166: } +16166: +16166: const Customizable* Inner() const override { return target_.get(); } +16166: Status PrepareOptions(const ConfigOptions& options) override; +16166: std::string SerializeOptions(const ConfigOptions& config_options, +16166: const std::string& header) const override; +16166: +16166: IOStatus Poll(std::vector& io_handles, +16166: size_t min_completions) override { +16166: return target_->Poll(io_handles, min_completions); +16166: } +16166: +16166: IOStatus AbortIO(std::vector& io_handles) override { +16166: return target_->AbortIO(io_handles); +16166: } +16166: +16166: void DiscardCacheForDirectory(const std::string& path) override { +16166: target_->DiscardCacheForDirectory(path); +16166: } +16166: +16166: void SupportedOps(int64_t& supported_ops) override { +16166: return target_->SupportedOps(supported_ops); +16166: } +16166: +16166: protected: +16166: std::shared_ptr target_; +16166: }; +16166: +16166: class FSSequentialFileWrapper : public FSSequentialFile { +16166: public: +16166: +16166: +16166: explicit FSSequentialFileWrapper(FSSequentialFile* t) : target_(t) {} +16166: +16166: FSSequentialFile* target() const { return target_; } +16166: +16166: IOStatus Read(size_t n, const IOOptions& options, Slice* result, +16166: char* scratch, IODebugContext* dbg) override { +16166: return target_->Read(n, options, result, scratch, dbg); +16166: } +16166: IOStatus Skip(uint64_t n) override { return target_->Skip(n); } +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: IOStatus InvalidateCache(size_t offset, size_t length) override { +16166: return target_->InvalidateCache(offset, length); +16166: } +16166: IOStatus PositionedRead(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) override { +16166: return target_->PositionedRead(offset, n, options, result, scratch, dbg); +16166: } +16166: Temperature GetTemperature() const override { +16166: return target_->GetTemperature(); +16166: } +16166: +16166: private: +16166: FSSequentialFile* target_; +16166: }; +16166: +16166: class FSSequentialFileOwnerWrapper : public FSSequentialFileWrapper { +16166: public: +16166: +16166: +16166: explicit FSSequentialFileOwnerWrapper(std::unique_ptr&& t) +16166: : FSSequentialFileWrapper(t.get()), guard_(std::move(t)) {} +16166: +16166: private: +16166: std::unique_ptr guard_; +16166: }; +16166: +16166: class FSRandomAccessFileWrapper : public FSRandomAccessFile { +16166: public: +16166: +16166: +16166: explicit FSRandomAccessFileWrapper(FSRandomAccessFile* t) : target_(t) {} +16166: +16166: FSRandomAccessFile* target() const { return target_; } +16166: +16166: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const override { +16166: return target_->Read(offset, n, options, result, scratch, dbg); +16166: } +16166: IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +16166: const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->MultiRead(reqs, num_reqs, options, dbg); +16166: } +16166: IOStatus Prefetch(uint64_t offset, size_t n, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->Prefetch(offset, n, options, dbg); +16166: } +16166: size_t GetUniqueId(char* id, size_t max_size) const override { +16166: return target_->GetUniqueId(id, max_size); +16166: } +16166: void Hint(AccessPattern pattern) override { target_->Hint(pattern); } +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: IOStatus InvalidateCache(size_t offset, size_t length) override { +16166: return target_->InvalidateCache(offset, length); +16166: } +16166: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +16166: std::function cb, +16166: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +16166: IODebugContext* dbg) override { +16166: return target()->ReadAsync(req, opts, cb, cb_arg, io_handle, del_fn, dbg); +16166: } +16166: Temperature GetTemperature() const override { +16166: return target_->GetTemperature(); +16166: } +16166: +16166: private: +16166: std::unique_ptr guard_; +16166: FSRandomAccessFile* target_; +16166: }; +16166: +16166: class FSRandomAccessFileOwnerWrapper : public FSRandomAccessFileWrapper { +16166: public: +16166: +16166: +16166: explicit FSRandomAccessFileOwnerWrapper( +16166: std::unique_ptr&& t) +16166: : FSRandomAccessFileWrapper(t.get()), guard_(std::move(t)) {} +16166: +16166: private: +16166: std::unique_ptr guard_; +16166: }; +16166: +16166: class FSWritableFileWrapper : public FSWritableFile { +16166: public: +16166: +16166: +16166: explicit FSWritableFileWrapper(FSWritableFile* t) : target_(t) {} +16166: +16166: FSWritableFile* target() const { return target_; } +16166: +16166: IOStatus Append(const Slice& data, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->Append(data, options, dbg); +16166: } +16166: IOStatus Append(const Slice& data, const IOOptions& options, +16166: const DataVerificationInfo& verification_info, +16166: IODebugContext* dbg) override { +16166: return target_->Append(data, options, verification_info, dbg); +16166: } +16166: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +16166: const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->PositionedAppend(data, offset, options, dbg); +16166: } +16166: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +16166: const IOOptions& options, +16166: const DataVerificationInfo& verification_info, +16166: IODebugContext* dbg) override { +16166: return target_->PositionedAppend(data, offset, options, verification_info, +16166: dbg); +16166: } +16166: IOStatus Truncate(uint64_t size, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->Truncate(size, options, dbg); +16166: } +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Close(options, dbg); +16166: } +16166: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Flush(options, dbg); +16166: } +16166: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Sync(options, dbg); +16166: } +16166: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Fsync(options, dbg); +16166: } +16166: bool IsSyncThreadSafe() const override { return target_->IsSyncThreadSafe(); } +16166: +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: +16166: void SetWriteLifeTimeHint(Env::WriteLifeTimeHint hint) override { +16166: target_->SetWriteLifeTimeHint(hint); +16166: } +16166: +16166: Env::WriteLifeTimeHint GetWriteLifeTimeHint() override { +16166: return target_->GetWriteLifeTimeHint(); +16166: } +16166: +16166: uint64_t GetFileSize(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->GetFileSize(options, dbg); +16166: } +16166: +16166: void SetPreallocationBlockSize(size_t size) override { +16166: target_->SetPreallocationBlockSize(size); +16166: } +16166: +16166: void GetPreallocationStatus(size_t* block_size, +16166: size_t* last_allocated_block) override { +16166: target_->GetPreallocationStatus(block_size, last_allocated_block); +16166: } +16166: +16166: size_t GetUniqueId(char* id, size_t max_size) const override { +16166: return target_->GetUniqueId(id, max_size); +16166: } +16166: +16166: IOStatus InvalidateCache(size_t offset, size_t length) override { +16166: return target_->InvalidateCache(offset, length); +16166: } +16166: +16166: IOStatus RangeSync(uint64_t offset, uint64_t nbytes, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->RangeSync(offset, nbytes, options, dbg); +16166: } +16166: +16166: void PrepareWrite(size_t offset, size_t len, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: target_->PrepareWrite(offset, len, options, dbg); +16166: } +16166: +16166: IOStatus Allocate(uint64_t offset, uint64_t len, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->Allocate(offset, len, options, dbg); +16166: } +16166: +16166: private: +16166: FSWritableFile* target_; +16166: }; +16166: +16166: class FSWritableFileOwnerWrapper : public FSWritableFileWrapper { +16166: public: +16166: +16166: +16166: explicit FSWritableFileOwnerWrapper(std::unique_ptr&& t) +16166: : FSWritableFileWrapper(t.get()), guard_(std::move(t)) {} +16166: +16166: private: +16166: std::unique_ptr guard_; +16166: }; +16166: +16166: class FSRandomRWFileWrapper : public FSRandomRWFile { +16166: public: +16166: +16166: +16166: explicit FSRandomRWFileWrapper(FSRandomRWFile* t) : target_(t) {} +16166: +16166: FSRandomRWFile* target() const { return target_; } +16166: +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: IOStatus Write(uint64_t offset, const Slice& data, const IOOptions& options, +16166: IODebugContext* dbg) override { +16166: return target_->Write(offset, data, options, dbg); +16166: } +16166: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const override { +16166: return target_->Read(offset, n, options, result, scratch, dbg); +16166: } +16166: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Flush(options, dbg); +16166: } +16166: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Sync(options, dbg); +16166: } +16166: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Fsync(options, dbg); +16166: } +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Close(options, dbg); +16166: } +16166: Temperature GetTemperature() const override { +16166: return target_->GetTemperature(); +16166: } +16166: +16166: private: +16166: FSRandomRWFile* target_; +16166: }; +16166: +16166: class FSRandomRWFileOwnerWrapper : public FSRandomRWFileWrapper { +16166: public: +16166: +16166: +16166: explicit FSRandomRWFileOwnerWrapper(std::unique_ptr&& t) +16166: : FSRandomRWFileWrapper(t.get()), guard_(std::move(t)) {} +16166: +16166: private: +16166: std::unique_ptr guard_; +16166: }; +16166: +16166: class FSDirectoryWrapper : public FSDirectory { +16166: public: +16166: +16166: +16166: explicit FSDirectoryWrapper(std::unique_ptr&& t) +16166: : guard_(std::move(t)) { +16166: target_ = guard_.get(); +16166: } +16166: +16166: +16166: +16166: explicit FSDirectoryWrapper(FSDirectory* t) : target_(t) {} +16166: +16166: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Fsync(options, dbg); +16166: } +16166: +16166: IOStatus FsyncWithDirOptions( +16166: const IOOptions& options, IODebugContext* dbg, +16166: const DirFsyncOptions& dir_fsync_options) override { +16166: return target_->FsyncWithDirOptions(options, dbg, dir_fsync_options); +16166: } +16166: +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override { +16166: return target_->Close(options, dbg); +16166: } +16166: +16166: size_t GetUniqueId(char* id, size_t max_size) const override { +16166: return target_->GetUniqueId(id, max_size); +16166: } +16166: +16166: private: +16166: std::unique_ptr guard_; +16166: FSDirectory* target_; +16166: }; +16166: +16166: +16166: IOStatus WriteStringToFile(FileSystem* fs, const Slice& data, +16166: const std::string& fname, bool should_sync = false, +16166: const IOOptions& io_options = IOOptions(), +16166: const FileOptions& file_options = FileOptions()); +16166: +16166: +16166: IOStatus ReadFileToString(FileSystem* fs, const std::string& fname, +16166: std::string* data); +16166: +16166: +16166: IOStatus ReadFileToString(FileSystem* fs, const std::string& fname, +16166: const IOOptions& opts, std::string* data); +16166: +16166: } +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/fstream" 1 3 +16166: # 36 "/usr/include/c++/14/fstream" 3 +16166: +16166: # 37 "/usr/include/c++/14/fstream" 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/codecvt.h" 1 3 +16166: # 39 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: +16166: # 40 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: +16166: +16166: +16166: +16166: +16166: # 44 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: class codecvt_base +16166: { +16166: public: +16166: enum result +16166: { +16166: ok, +16166: partial, +16166: error, +16166: noconv +16166: }; +16166: }; +16166: # 70 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: template +16166: class __codecvt_abstract_base +16166: : public locale::facet, public codecvt_base +16166: { +16166: public: +16166: +16166: typedef codecvt_base::result result; +16166: typedef _InternT intern_type; +16166: typedef _ExternT extern_type; +16166: typedef _StateT state_type; +16166: # 118 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: result +16166: out(state_type& __state, const intern_type* __from, +16166: const intern_type* __from_end, const intern_type*& __from_next, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const +16166: { +16166: return this->do_out(__state, __from, __from_end, __from_next, +16166: __to, __to_end, __to_next); +16166: } +16166: # 157 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: result +16166: unshift(state_type& __state, extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const +16166: { return this->do_unshift(__state, __to,__to_end,__to_next); } +16166: # 198 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: result +16166: in(state_type& __state, const extern_type* __from, +16166: const extern_type* __from_end, const extern_type*& __from_next, +16166: intern_type* __to, intern_type* __to_end, +16166: intern_type*& __to_next) const +16166: { +16166: return this->do_in(__state, __from, __from_end, __from_next, +16166: __to, __to_end, __to_next); +16166: } +16166: +16166: int +16166: encoding() const throw() +16166: { return this->do_encoding(); } +16166: +16166: bool +16166: always_noconv() const throw() +16166: { return this->do_always_noconv(); } +16166: +16166: int +16166: length(state_type& __state, const extern_type* __from, +16166: const extern_type* __end, size_t __max) const +16166: { return this->do_length(__state, __from, __end, __max); } +16166: +16166: int +16166: max_length() const throw() +16166: { return this->do_max_length(); } +16166: +16166: protected: +16166: explicit +16166: __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { } +16166: +16166: virtual +16166: ~__codecvt_abstract_base() { } +16166: # 239 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: virtual result +16166: do_out(state_type& __state, const intern_type* __from, +16166: const intern_type* __from_end, const intern_type*& __from_next, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const = 0; +16166: +16166: virtual result +16166: do_unshift(state_type& __state, extern_type* __to, +16166: extern_type* __to_end, extern_type*& __to_next) const = 0; +16166: +16166: virtual result +16166: do_in(state_type& __state, const extern_type* __from, +16166: const extern_type* __from_end, const extern_type*& __from_next, +16166: intern_type* __to, intern_type* __to_end, +16166: intern_type*& __to_next) const = 0; +16166: +16166: virtual int +16166: do_encoding() const throw() = 0; +16166: +16166: virtual bool +16166: do_always_noconv() const throw() = 0; +16166: +16166: virtual int +16166: do_length(state_type&, const extern_type* __from, +16166: const extern_type* __end, size_t __max) const = 0; +16166: +16166: virtual int +16166: do_max_length() const throw() = 0; +16166: }; +16166: # 276 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: template +16166: class codecvt +16166: : public __codecvt_abstract_base<_InternT, _ExternT, _StateT> +16166: { +16166: public: +16166: +16166: typedef codecvt_base::result result; +16166: typedef _InternT intern_type; +16166: typedef _ExternT extern_type; +16166: typedef _StateT state_type; +16166: +16166: protected: +16166: __c_locale _M_c_locale_codecvt; +16166: +16166: public: +16166: static locale::id id; +16166: +16166: explicit +16166: codecvt(size_t __refs = 0) +16166: : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs), +16166: _M_c_locale_codecvt(0) +16166: { } +16166: +16166: explicit +16166: codecvt(__c_locale __cloc, size_t __refs = 0); +16166: +16166: protected: +16166: virtual +16166: ~codecvt() { } +16166: +16166: virtual result +16166: do_out(state_type& __state, const intern_type* __from, +16166: const intern_type* __from_end, const intern_type*& __from_next, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_unshift(state_type& __state, extern_type* __to, +16166: extern_type* __to_end, extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_in(state_type& __state, const extern_type* __from, +16166: const extern_type* __from_end, const extern_type*& __from_next, +16166: intern_type* __to, intern_type* __to_end, +16166: intern_type*& __to_next) const; +16166: +16166: virtual int +16166: do_encoding() const throw(); +16166: +16166: virtual bool +16166: do_always_noconv() const throw(); +16166: +16166: virtual int +16166: do_length(state_type&, const extern_type* __from, +16166: const extern_type* __end, size_t __max) const; +16166: +16166: virtual int +16166: do_max_length() const throw(); +16166: }; +16166: +16166: template +16166: locale::id codecvt<_InternT, _ExternT, _StateT>::id; +16166: +16166: +16166: template<> +16166: class codecvt +16166: : public __codecvt_abstract_base +16166: { +16166: friend class messages; +16166: +16166: public: +16166: +16166: typedef char intern_type; +16166: typedef char extern_type; +16166: typedef mbstate_t state_type; +16166: +16166: protected: +16166: __c_locale _M_c_locale_codecvt; +16166: +16166: public: +16166: static locale::id id; +16166: +16166: explicit +16166: codecvt(size_t __refs = 0); +16166: +16166: explicit +16166: codecvt(__c_locale __cloc, size_t __refs = 0); +16166: +16166: protected: +16166: virtual +16166: ~codecvt(); +16166: +16166: virtual result +16166: do_out(state_type& __state, const intern_type* __from, +16166: const intern_type* __from_end, const intern_type*& __from_next, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_unshift(state_type& __state, extern_type* __to, +16166: extern_type* __to_end, extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_in(state_type& __state, const extern_type* __from, +16166: const extern_type* __from_end, const extern_type*& __from_next, +16166: intern_type* __to, intern_type* __to_end, +16166: intern_type*& __to_next) const; +16166: +16166: virtual int +16166: do_encoding() const throw(); +16166: +16166: virtual bool +16166: do_always_noconv() const throw(); +16166: +16166: virtual int +16166: do_length(state_type&, const extern_type* __from, +16166: const extern_type* __end, size_t __max) const; +16166: +16166: virtual int +16166: do_max_length() const throw(); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: class codecvt +16166: : public __codecvt_abstract_base +16166: { +16166: friend class messages; +16166: +16166: public: +16166: +16166: typedef wchar_t intern_type; +16166: typedef char extern_type; +16166: typedef mbstate_t state_type; +16166: +16166: protected: +16166: __c_locale _M_c_locale_codecvt; +16166: +16166: public: +16166: static locale::id id; +16166: +16166: explicit +16166: codecvt(size_t __refs = 0); +16166: +16166: explicit +16166: codecvt(__c_locale __cloc, size_t __refs = 0); +16166: +16166: protected: +16166: virtual +16166: ~codecvt(); +16166: +16166: virtual result +16166: do_out(state_type& __state, const intern_type* __from, +16166: const intern_type* __from_end, const intern_type*& __from_next, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_unshift(state_type& __state, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_in(state_type& __state, +16166: const extern_type* __from, const extern_type* __from_end, +16166: const extern_type*& __from_next, +16166: intern_type* __to, intern_type* __to_end, +16166: intern_type*& __to_next) const; +16166: +16166: virtual +16166: int do_encoding() const throw(); +16166: +16166: virtual +16166: bool do_always_noconv() const throw(); +16166: +16166: virtual +16166: int do_length(state_type&, const extern_type* __from, +16166: const extern_type* __end, size_t __max) const; +16166: +16166: virtual int +16166: do_max_length() const throw(); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: class codecvt +16166: : public __codecvt_abstract_base +16166: { +16166: public: +16166: +16166: typedef char16_t intern_type; +16166: typedef char extern_type; +16166: typedef mbstate_t state_type; +16166: +16166: public: +16166: static locale::id id; +16166: +16166: explicit +16166: codecvt(size_t __refs = 0) +16166: : __codecvt_abstract_base(__refs) { } +16166: +16166: protected: +16166: virtual +16166: ~codecvt(); +16166: +16166: virtual result +16166: do_out(state_type& __state, const intern_type* __from, +16166: const intern_type* __from_end, const intern_type*& __from_next, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_unshift(state_type& __state, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_in(state_type& __state, +16166: const extern_type* __from, const extern_type* __from_end, +16166: const extern_type*& __from_next, +16166: intern_type* __to, intern_type* __to_end, +16166: intern_type*& __to_next) const; +16166: +16166: virtual +16166: int do_encoding() const throw(); +16166: +16166: virtual +16166: bool do_always_noconv() const throw(); +16166: +16166: virtual +16166: int do_length(state_type&, const extern_type* __from, +16166: const extern_type* __end, size_t __max) const; +16166: +16166: virtual int +16166: do_max_length() const throw(); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: template<> +16166: class codecvt +16166: : public __codecvt_abstract_base +16166: { +16166: public: +16166: +16166: typedef char32_t intern_type; +16166: typedef char extern_type; +16166: typedef mbstate_t state_type; +16166: +16166: public: +16166: static locale::id id; +16166: +16166: explicit +16166: codecvt(size_t __refs = 0) +16166: : __codecvt_abstract_base(__refs) { } +16166: +16166: protected: +16166: virtual +16166: ~codecvt(); +16166: +16166: virtual result +16166: do_out(state_type& __state, const intern_type* __from, +16166: const intern_type* __from_end, const intern_type*& __from_next, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_unshift(state_type& __state, +16166: extern_type* __to, extern_type* __to_end, +16166: extern_type*& __to_next) const; +16166: +16166: virtual result +16166: do_in(state_type& __state, +16166: const extern_type* __from, const extern_type* __from_end, +16166: const extern_type*& __from_next, +16166: intern_type* __to, intern_type* __to_end, +16166: intern_type*& __to_next) const; +16166: +16166: virtual +16166: int do_encoding() const throw(); +16166: +16166: virtual +16166: bool do_always_noconv() const throw(); +16166: +16166: virtual +16166: int do_length(state_type&, const extern_type* __from, +16166: const extern_type* __end, size_t __max) const; +16166: +16166: virtual int +16166: do_max_length() const throw(); +16166: }; +16166: # 698 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: template +16166: class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> +16166: { +16166: public: +16166: explicit +16166: codecvt_byname(const char* __s, size_t __refs = 0) +16166: : codecvt<_InternT, _ExternT, _StateT>(__refs) +16166: { +16166: if (__builtin_strcmp(__s, "C") != 0 +16166: && __builtin_strcmp(__s, "POSIX") != 0) +16166: { +16166: this->_S_destroy_c_locale(this->_M_c_locale_codecvt); +16166: this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); +16166: } +16166: } +16166: +16166: +16166: explicit +16166: codecvt_byname(const string& __s, size_t __refs = 0) +16166: : codecvt_byname(__s.c_str(), __refs) { } +16166: +16166: +16166: protected: +16166: virtual +16166: ~codecvt_byname() { } +16166: }; +16166: +16166: +16166: template<> +16166: class codecvt_byname +16166: : public codecvt +16166: { +16166: public: +16166: explicit +16166: codecvt_byname(const char*, size_t __refs = 0) +16166: : codecvt(__refs) { } +16166: +16166: explicit +16166: codecvt_byname(const string& __s, size_t __refs = 0) +16166: : codecvt_byname(__s.c_str(), __refs) { } +16166: +16166: protected: +16166: virtual +16166: ~codecvt_byname() { } +16166: }; +16166: +16166: template<> +16166: class codecvt_byname +16166: : public codecvt +16166: { +16166: public: +16166: explicit +16166: codecvt_byname(const char*, size_t __refs = 0) +16166: : codecvt(__refs) { } +16166: +16166: explicit +16166: codecvt_byname(const string& __s, size_t __refs = 0) +16166: : codecvt_byname(__s.c_str(), __refs) { } +16166: +16166: protected: +16166: virtual +16166: ~codecvt_byname() { } +16166: }; +16166: # 805 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: extern template class codecvt_byname; +16166: +16166: extern template +16166: const codecvt& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: +16166: extern template class codecvt_byname; +16166: +16166: extern template +16166: const codecvt& +16166: use_facet >(const locale&); +16166: +16166: extern template +16166: bool +16166: has_facet >(const locale&); +16166: +16166: +16166: +16166: extern template class codecvt_byname; +16166: extern template class codecvt_byname; +16166: # 840 "/usr/include/c++/14/bits/codecvt.h" 3 +16166: +16166: } +16166: # 43 "/usr/include/c++/14/fstream" 2 3 +16166: # 1 "/usr/include/c++/14/cstdio" 1 3 +16166: # 39 "/usr/include/c++/14/cstdio" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdio" 3 +16166: # 44 "/usr/include/c++/14/fstream" 2 3 +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 1 3 +16166: # 37 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 3 +16166: +16166: # 38 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 3 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++io.h" 1 3 +16166: # 35 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++io.h" 3 +16166: # 1 "/usr/include/c++/14/cstdio" 1 3 +16166: # 39 "/usr/include/c++/14/cstdio" 3 +16166: +16166: # 40 "/usr/include/c++/14/cstdio" 3 +16166: # 36 "/usr/include/arm-linux-gnueabihf/c++/14/bits/c++io.h" 2 3 +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef __gthread_mutex_t __c_lock; +16166: +16166: +16166: +16166: typedef FILE __c_file; +16166: +16166: +16166: } +16166: # 41 "/usr/include/arm-linux-gnueabihf/c++/14/bits/basic_file.h" 2 3 +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: template +16166: class __basic_file; +16166: +16166: +16166: template<> +16166: class __basic_file +16166: { +16166: +16166: __c_file* _M_cfile; +16166: +16166: +16166: bool _M_cfile_created; +16166: +16166: public: +16166: __basic_file(__c_lock* __lock = 0) throw (); +16166: +16166: +16166: __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept +16166: : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) +16166: { +16166: __rv._M_cfile = nullptr; +16166: __rv._M_cfile_created = false; +16166: } +16166: +16166: __basic_file& operator=(const __basic_file&) = delete; +16166: __basic_file& operator=(__basic_file&&) = delete; +16166: +16166: void +16166: swap(__basic_file& __f) noexcept +16166: { +16166: std::swap(_M_cfile, __f._M_cfile); +16166: std::swap(_M_cfile_created, __f._M_cfile_created); +16166: } +16166: +16166: +16166: __basic_file* +16166: open(const char* __name, ios_base::openmode __mode, int __prot = 0664); +16166: +16166: +16166: +16166: +16166: +16166: +16166: __basic_file* +16166: sys_open(__c_file* __file, ios_base::openmode); +16166: +16166: __basic_file* +16166: sys_open(int __fd, ios_base::openmode __mode) throw (); +16166: +16166: __basic_file* +16166: close(); +16166: +16166: __attribute__ ((__pure__)) bool +16166: is_open() const throw (); +16166: +16166: __attribute__ ((__pure__)) int +16166: fd() throw (); +16166: +16166: __attribute__ ((__pure__)) __c_file* +16166: file() throw (); +16166: +16166: ~__basic_file(); +16166: +16166: streamsize +16166: xsputn(const char* __s, streamsize __n); +16166: +16166: streamsize +16166: xsputn_2(const char* __s1, streamsize __n1, +16166: const char* __s2, streamsize __n2); +16166: +16166: streamsize +16166: xsgetn(char* __s, streamsize __n); +16166: +16166: streamoff +16166: seekoff(streamoff __off, ios_base::seekdir __way) throw (); +16166: +16166: int +16166: sync(); +16166: +16166: streamsize +16166: showmanyc(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using native_handle_type = int; +16166: +16166: +16166: native_handle_type +16166: native_handle() const noexcept; +16166: +16166: }; +16166: +16166: +16166: } +16166: # 45 "/usr/include/c++/14/fstream" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 51 "/usr/include/c++/14/fstream" 2 3 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: +16166: +16166: template().make_preferred().filename())> +16166: using _If_fs_path = enable_if_t, _Result>; +16166: # 89 "/usr/include/c++/14/fstream" 3 +16166: template +16166: class basic_filebuf : public basic_streambuf<_CharT, _Traits> +16166: { +16166: +16166: template +16166: using __chk_state = __and_, +16166: is_copy_constructible<_Tp>, +16166: is_default_constructible<_Tp>>; +16166: +16166: static_assert(__chk_state::value, +16166: "state_type must be CopyAssignable, CopyConstructible" +16166: " and DefaultConstructible"); +16166: +16166: static_assert(is_same>::value, +16166: "pos_type must be fpos"); +16166: +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: typedef basic_streambuf __streambuf_type; +16166: typedef basic_filebuf __filebuf_type; +16166: typedef __basic_file __file_type; +16166: typedef typename traits_type::state_type __state_type; +16166: typedef codecvt __codecvt_type; +16166: +16166: friend class ios_base; +16166: +16166: protected: +16166: +16166: +16166: __c_lock _M_lock; +16166: +16166: +16166: __file_type _M_file; +16166: +16166: +16166: ios_base::openmode _M_mode; +16166: +16166: +16166: __state_type _M_state_beg; +16166: +16166: +16166: +16166: +16166: __state_type _M_state_cur; +16166: +16166: +16166: +16166: __state_type _M_state_last; +16166: +16166: +16166: char_type* _M_buf; +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t _M_buf_size; +16166: +16166: +16166: bool _M_buf_allocated; +16166: # 165 "/usr/include/c++/14/fstream" 3 +16166: bool _M_reading; +16166: bool _M_writing; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: char_type _M_pback; +16166: char_type* _M_pback_cur_save; +16166: char_type* _M_pback_end_save; +16166: bool _M_pback_init; +16166: +16166: +16166: +16166: const __codecvt_type* _M_codecvt; +16166: +16166: +16166: +16166: +16166: +16166: +16166: char* _M_ext_buf; +16166: +16166: +16166: +16166: +16166: streamsize _M_ext_buf_size; +16166: +16166: +16166: +16166: +16166: +16166: +16166: const char* _M_ext_next; +16166: char* _M_ext_end; +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: _M_create_pback() +16166: { +16166: if (!_M_pback_init) +16166: { +16166: _M_pback_cur_save = this->gptr(); +16166: _M_pback_end_save = this->egptr(); +16166: this->setg(&_M_pback, &_M_pback, &_M_pback + 1); +16166: _M_pback_init = true; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void +16166: _M_destroy_pback() throw() +16166: { +16166: if (_M_pback_init) +16166: { +16166: +16166: _M_pback_cur_save += this->gptr() != this->eback(); +16166: this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save); +16166: _M_pback_init = false; +16166: } +16166: } +16166: +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: basic_filebuf(); +16166: +16166: +16166: basic_filebuf(const basic_filebuf&) = delete; +16166: basic_filebuf(basic_filebuf&&); +16166: +16166: +16166: +16166: +16166: +16166: virtual +16166: ~basic_filebuf() +16166: { +16166: try +16166: { this->close(); } +16166: catch(...) +16166: { } +16166: } +16166: +16166: +16166: basic_filebuf& operator=(const basic_filebuf&) = delete; +16166: basic_filebuf& operator=(basic_filebuf&&); +16166: void swap(basic_filebuf&); +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: is_open() const throw() +16166: { return _M_file.is_open(); } +16166: # 319 "/usr/include/c++/14/fstream" 3 +16166: __filebuf_type* +16166: open(const char* __s, ios_base::openmode __mode); +16166: # 340 "/usr/include/c++/14/fstream" 3 +16166: __filebuf_type* +16166: open(const std::string& __s, ios_base::openmode __mode) +16166: { return open(__s.c_str(), __mode); } +16166: # 351 "/usr/include/c++/14/fstream" 3 +16166: template +16166: _If_fs_path<_Path, __filebuf_type*> +16166: open(const _Path& __s, ios_base::openmode __mode) +16166: { return open(__s.c_str(), __mode); } +16166: # 370 "/usr/include/c++/14/fstream" 3 +16166: __filebuf_type* +16166: close(); +16166: # 403 "/usr/include/c++/14/fstream" 3 +16166: protected: +16166: void +16166: _M_allocate_internal_buffer(); +16166: +16166: void +16166: _M_destroy_internal_buffer() throw(); +16166: +16166: +16166: virtual streamsize +16166: showmanyc(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual int_type +16166: underflow(); +16166: +16166: virtual int_type +16166: pbackfail(int_type __c = _Traits::eof()); +16166: # 432 "/usr/include/c++/14/fstream" 3 +16166: virtual int_type +16166: overflow(int_type __c = _Traits::eof()); +16166: +16166: +16166: +16166: bool +16166: _M_convert_to_external(char_type*, streamsize); +16166: # 452 "/usr/include/c++/14/fstream" 3 +16166: virtual __streambuf_type* +16166: setbuf(char_type* __s, streamsize __n); +16166: +16166: virtual pos_type +16166: seekoff(off_type __off, ios_base::seekdir __way, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out); +16166: +16166: virtual pos_type +16166: seekpos(pos_type __pos, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out); +16166: +16166: +16166: pos_type +16166: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state); +16166: +16166: int +16166: _M_get_ext_pos(__state_type &__state); +16166: +16166: virtual int +16166: sync(); +16166: +16166: virtual void +16166: imbue(const locale& __loc); +16166: +16166: virtual streamsize +16166: xsgetn(char_type* __s, streamsize __n); +16166: +16166: virtual streamsize +16166: xsputn(const char_type* __s, streamsize __n); +16166: +16166: +16166: bool +16166: _M_terminate_output(); +16166: # 498 "/usr/include/c++/14/fstream" 3 +16166: void +16166: _M_set_buffer(streamsize __off) +16166: { +16166: const bool __testin = _M_mode & ios_base::in; +16166: const bool __testout = (_M_mode & ios_base::out +16166: || _M_mode & ios_base::app); +16166: +16166: if (__testin && __off > 0) +16166: this->setg(_M_buf, _M_buf, _M_buf + __off); +16166: else +16166: this->setg(_M_buf, _M_buf, _M_buf); +16166: +16166: if (__testout && __off == 0 && _M_buf_size > 1 ) +16166: this->setp(_M_buf, _M_buf + _M_buf_size - 1); +16166: else +16166: this->setp(0, 0); +16166: } +16166: }; +16166: # 531 "/usr/include/c++/14/fstream" 3 +16166: template +16166: class basic_ifstream : public basic_istream<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: +16166: typedef basic_filebuf __filebuf_type; +16166: typedef basic_istream __istream_type; +16166: +16166: private: +16166: __filebuf_type _M_filebuf; +16166: +16166: public: +16166: # 558 "/usr/include/c++/14/fstream" 3 +16166: basic_ifstream() : __istream_type(), _M_filebuf() +16166: { this->init(&_M_filebuf); } +16166: # 568 "/usr/include/c++/14/fstream" 3 +16166: explicit +16166: basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) +16166: : __istream_type(), _M_filebuf() +16166: { +16166: this->init(&_M_filebuf); +16166: this->open(__s, __mode); +16166: } +16166: # 601 "/usr/include/c++/14/fstream" 3 +16166: explicit +16166: basic_ifstream(const std::string& __s, +16166: ios_base::openmode __mode = ios_base::in) +16166: : __istream_type(), _M_filebuf() +16166: { +16166: this->init(&_M_filebuf); +16166: this->open(__s, __mode); +16166: } +16166: # 618 "/usr/include/c++/14/fstream" 3 +16166: template> +16166: basic_ifstream(const _Path& __s, +16166: ios_base::openmode __mode = ios_base::in) +16166: : basic_ifstream(__s.c_str(), __mode) +16166: { } +16166: +16166: +16166: basic_ifstream(const basic_ifstream&) = delete; +16166: +16166: basic_ifstream(basic_ifstream&& __rhs) +16166: : __istream_type(std::move(__rhs)), +16166: _M_filebuf(std::move(__rhs._M_filebuf)) +16166: { __istream_type::set_rdbuf(&_M_filebuf); } +16166: # 639 "/usr/include/c++/14/fstream" 3 +16166: ~basic_ifstream() +16166: { } +16166: +16166: +16166: +16166: +16166: basic_ifstream& +16166: operator=(const basic_ifstream&) = delete; +16166: +16166: basic_ifstream& +16166: operator=(basic_ifstream&& __rhs) +16166: { +16166: __istream_type::operator=(std::move(__rhs)); +16166: _M_filebuf = std::move(__rhs._M_filebuf); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_ifstream& __rhs) +16166: { +16166: __istream_type::swap(__rhs); +16166: _M_filebuf.swap(__rhs._M_filebuf); +16166: } +16166: # 671 "/usr/include/c++/14/fstream" 3 +16166: __filebuf_type* +16166: rdbuf() const +16166: { return const_cast<__filebuf_type*>(&_M_filebuf); } +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: is_open() +16166: { return _M_filebuf.is_open(); } +16166: +16166: +16166: +16166: bool +16166: is_open() const +16166: { return _M_filebuf.is_open(); } +16166: # 697 "/usr/include/c++/14/fstream" 3 +16166: void +16166: open(const char* __s, ios_base::openmode __mode = ios_base::in) +16166: { +16166: if (!_M_filebuf.open(__s, __mode | ios_base::in)) +16166: this->setstate(ios_base::failbit); +16166: else +16166: +16166: +16166: this->clear(); +16166: } +16166: # 736 "/usr/include/c++/14/fstream" 3 +16166: void +16166: open(const std::string& __s, ios_base::openmode __mode = ios_base::in) +16166: { +16166: if (!_M_filebuf.open(__s, __mode | ios_base::in)) +16166: this->setstate(ios_base::failbit); +16166: else +16166: +16166: +16166: this->clear(); +16166: } +16166: # 756 "/usr/include/c++/14/fstream" 3 +16166: template +16166: _If_fs_path<_Path, void> +16166: open(const _Path& __s, ios_base::openmode __mode = ios_base::in) +16166: { open(__s.c_str(), __mode); } +16166: # 769 "/usr/include/c++/14/fstream" 3 +16166: void +16166: close() +16166: { +16166: if (!_M_filebuf.close()) +16166: this->setstate(ios_base::failbit); +16166: } +16166: # 784 "/usr/include/c++/14/fstream" 3 +16166: }; +16166: # 801 "/usr/include/c++/14/fstream" 3 +16166: template +16166: class basic_ofstream : public basic_ostream<_CharT,_Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: +16166: typedef basic_filebuf __filebuf_type; +16166: typedef basic_ostream __ostream_type; +16166: +16166: private: +16166: __filebuf_type _M_filebuf; +16166: +16166: public: +16166: # 828 "/usr/include/c++/14/fstream" 3 +16166: basic_ofstream(): __ostream_type(), _M_filebuf() +16166: { this->init(&_M_filebuf); } +16166: # 838 "/usr/include/c++/14/fstream" 3 +16166: explicit +16166: basic_ofstream(const char* __s, +16166: ios_base::openmode __mode = ios_base::out) +16166: : __ostream_type(), _M_filebuf() +16166: { +16166: this->init(&_M_filebuf); +16166: this->open(__s, __mode); +16166: } +16166: # 873 "/usr/include/c++/14/fstream" 3 +16166: explicit +16166: basic_ofstream(const std::string& __s, +16166: ios_base::openmode __mode = ios_base::out) +16166: : __ostream_type(), _M_filebuf() +16166: { +16166: this->init(&_M_filebuf); +16166: this->open(__s, __mode); +16166: } +16166: # 890 "/usr/include/c++/14/fstream" 3 +16166: template> +16166: basic_ofstream(const _Path& __s, +16166: ios_base::openmode __mode = ios_base::out) +16166: : basic_ofstream(__s.c_str(), __mode) +16166: { } +16166: +16166: +16166: basic_ofstream(const basic_ofstream&) = delete; +16166: +16166: basic_ofstream(basic_ofstream&& __rhs) +16166: : __ostream_type(std::move(__rhs)), +16166: _M_filebuf(std::move(__rhs._M_filebuf)) +16166: { __ostream_type::set_rdbuf(&_M_filebuf); } +16166: # 911 "/usr/include/c++/14/fstream" 3 +16166: ~basic_ofstream() +16166: { } +16166: +16166: +16166: +16166: +16166: basic_ofstream& +16166: operator=(const basic_ofstream&) = delete; +16166: +16166: basic_ofstream& +16166: operator=(basic_ofstream&& __rhs) +16166: { +16166: __ostream_type::operator=(std::move(__rhs)); +16166: _M_filebuf = std::move(__rhs._M_filebuf); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_ofstream& __rhs) +16166: { +16166: __ostream_type::swap(__rhs); +16166: _M_filebuf.swap(__rhs._M_filebuf); +16166: } +16166: # 943 "/usr/include/c++/14/fstream" 3 +16166: __filebuf_type* +16166: rdbuf() const +16166: { return const_cast<__filebuf_type*>(&_M_filebuf); } +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: is_open() +16166: { return _M_filebuf.is_open(); } +16166: +16166: +16166: +16166: bool +16166: is_open() const +16166: { return _M_filebuf.is_open(); } +16166: # 969 "/usr/include/c++/14/fstream" 3 +16166: void +16166: open(const char* __s, ios_base::openmode __mode = ios_base::out) +16166: { +16166: if (!_M_filebuf.open(__s, __mode | ios_base::out)) +16166: this->setstate(ios_base::failbit); +16166: else +16166: +16166: +16166: this->clear(); +16166: } +16166: # 1008 "/usr/include/c++/14/fstream" 3 +16166: void +16166: open(const std::string& __s, ios_base::openmode __mode = ios_base::out) +16166: { +16166: if (!_M_filebuf.open(__s, __mode | ios_base::out)) +16166: this->setstate(ios_base::failbit); +16166: else +16166: +16166: +16166: this->clear(); +16166: } +16166: # 1028 "/usr/include/c++/14/fstream" 3 +16166: template +16166: _If_fs_path<_Path, void> +16166: open(const _Path& __s, ios_base::openmode __mode = ios_base::out) +16166: { open(__s.c_str(), __mode); } +16166: # 1041 "/usr/include/c++/14/fstream" 3 +16166: void +16166: close() +16166: { +16166: if (!_M_filebuf.close()) +16166: this->setstate(ios_base::failbit); +16166: } +16166: # 1056 "/usr/include/c++/14/fstream" 3 +16166: }; +16166: # 1073 "/usr/include/c++/14/fstream" 3 +16166: template +16166: class basic_fstream : public basic_iostream<_CharT, _Traits> +16166: { +16166: public: +16166: +16166: typedef _CharT char_type; +16166: typedef _Traits traits_type; +16166: typedef typename traits_type::int_type int_type; +16166: typedef typename traits_type::pos_type pos_type; +16166: typedef typename traits_type::off_type off_type; +16166: +16166: +16166: typedef basic_filebuf __filebuf_type; +16166: typedef basic_ios __ios_type; +16166: typedef basic_iostream __iostream_type; +16166: +16166: private: +16166: __filebuf_type _M_filebuf; +16166: +16166: public: +16166: # 1101 "/usr/include/c++/14/fstream" 3 +16166: basic_fstream() +16166: : __iostream_type(), _M_filebuf() +16166: { this->init(&_M_filebuf); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit +16166: basic_fstream(const char* __s, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: : __iostream_type(0), _M_filebuf() +16166: { +16166: this->init(&_M_filebuf); +16166: this->open(__s, __mode); +16166: } +16166: # 1140 "/usr/include/c++/14/fstream" 3 +16166: explicit +16166: basic_fstream(const std::string& __s, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: : __iostream_type(0), _M_filebuf() +16166: { +16166: this->init(&_M_filebuf); +16166: this->open(__s, __mode); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: basic_fstream(const _Path& __s, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: : basic_fstream(__s.c_str(), __mode) +16166: { } +16166: +16166: +16166: basic_fstream(const basic_fstream&) = delete; +16166: +16166: basic_fstream(basic_fstream&& __rhs) +16166: : __iostream_type(std::move(__rhs)), +16166: _M_filebuf(std::move(__rhs._M_filebuf)) +16166: { __iostream_type::set_rdbuf(&_M_filebuf); } +16166: # 1176 "/usr/include/c++/14/fstream" 3 +16166: ~basic_fstream() +16166: { } +16166: +16166: +16166: +16166: +16166: basic_fstream& +16166: operator=(const basic_fstream&) = delete; +16166: +16166: basic_fstream& +16166: operator=(basic_fstream&& __rhs) +16166: { +16166: __iostream_type::operator=(std::move(__rhs)); +16166: _M_filebuf = std::move(__rhs._M_filebuf); +16166: return *this; +16166: } +16166: +16166: void +16166: swap(basic_fstream& __rhs) +16166: { +16166: __iostream_type::swap(__rhs); +16166: _M_filebuf.swap(__rhs._M_filebuf); +16166: } +16166: # 1208 "/usr/include/c++/14/fstream" 3 +16166: __filebuf_type* +16166: rdbuf() const +16166: { return const_cast<__filebuf_type*>(&_M_filebuf); } +16166: +16166: +16166: +16166: +16166: +16166: bool +16166: is_open() +16166: { return _M_filebuf.is_open(); } +16166: +16166: +16166: +16166: bool +16166: is_open() const +16166: { return _M_filebuf.is_open(); } +16166: # 1234 "/usr/include/c++/14/fstream" 3 +16166: void +16166: open(const char* __s, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: { +16166: if (!_M_filebuf.open(__s, __mode)) +16166: this->setstate(ios_base::failbit); +16166: else +16166: +16166: +16166: this->clear(); +16166: } +16166: # 1275 "/usr/include/c++/14/fstream" 3 +16166: void +16166: open(const std::string& __s, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: { +16166: if (!_M_filebuf.open(__s, __mode)) +16166: this->setstate(ios_base::failbit); +16166: else +16166: +16166: +16166: this->clear(); +16166: } +16166: # 1296 "/usr/include/c++/14/fstream" 3 +16166: template +16166: _If_fs_path<_Path, void> +16166: open(const _Path& __s, +16166: ios_base::openmode __mode = ios_base::in | ios_base::out) +16166: { open(__s.c_str(), __mode); } +16166: # 1310 "/usr/include/c++/14/fstream" 3 +16166: void +16166: close() +16166: { +16166: if (!_M_filebuf.close()) +16166: this->setstate(ios_base::failbit); +16166: } +16166: # 1325 "/usr/include/c++/14/fstream" 3 +16166: }; +16166: +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_filebuf<_CharT, _Traits>& __x, +16166: basic_filebuf<_CharT, _Traits>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_ifstream<_CharT, _Traits>& __x, +16166: basic_ifstream<_CharT, _Traits>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_ofstream<_CharT, _Traits>& __x, +16166: basic_ofstream<_CharT, _Traits>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: template +16166: inline void +16166: swap(basic_fstream<_CharT, _Traits>& __x, +16166: basic_fstream<_CharT, _Traits>& __y) +16166: { __x.swap(__y); } +16166: +16166: +16166: +16166: } +16166: +16166: # 1 "/usr/include/c++/14/bits/fstream.tcc" 1 3 +16166: # 37 "/usr/include/c++/14/bits/fstream.tcc" 3 +16166: +16166: # 38 "/usr/include/c++/14/bits/fstream.tcc" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cerrno" 1 3 +16166: # 39 "/usr/include/c++/14/cerrno" 3 +16166: +16166: # 40 "/usr/include/c++/14/cerrno" 3 +16166: # 42 "/usr/include/c++/14/bits/fstream.tcc" 2 3 +16166: +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template +16166: void +16166: basic_filebuf<_CharT, _Traits>:: +16166: _M_allocate_internal_buffer() +16166: { +16166: +16166: +16166: if (!_M_buf_allocated && !_M_buf) +16166: { +16166: _M_buf = new char_type[_M_buf_size]; +16166: _M_buf_allocated = true; +16166: } +16166: } +16166: +16166: template +16166: void +16166: basic_filebuf<_CharT, _Traits>:: +16166: _M_destroy_internal_buffer() throw() +16166: { +16166: if (_M_buf_allocated) +16166: { +16166: delete [] _M_buf; +16166: _M_buf = 0; +16166: _M_buf_allocated = false; +16166: } +16166: delete [] _M_ext_buf; +16166: _M_ext_buf = 0; +16166: _M_ext_buf_size = 0; +16166: _M_ext_next = 0; +16166: _M_ext_end = 0; +16166: } +16166: +16166: template +16166: basic_filebuf<_CharT, _Traits>:: +16166: basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock), +16166: _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(), +16166: _M_state_last(), _M_buf(0), _M_buf_size(8192), +16166: _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(), +16166: _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false), +16166: _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0), +16166: _M_ext_end(0) +16166: { +16166: _M_codecvt = std::__try_use_facet<__codecvt_type>(this->_M_buf_locale); +16166: } +16166: +16166: +16166: template +16166: basic_filebuf<_CharT, _Traits>:: +16166: basic_filebuf(basic_filebuf&& __rhs) +16166: : __streambuf_type(__rhs), +16166: _M_lock(), _M_file(std::move(__rhs._M_file), &_M_lock), +16166: _M_mode(std::__exchange(__rhs._M_mode, ios_base::openmode(0))), +16166: _M_state_beg(std::move(__rhs._M_state_beg)), +16166: _M_state_cur(std::move(__rhs._M_state_cur)), +16166: _M_state_last(std::move(__rhs._M_state_last)), +16166: _M_buf(std::__exchange(__rhs._M_buf, nullptr)), +16166: _M_buf_size(std::__exchange(__rhs._M_buf_size, 1)), +16166: _M_buf_allocated(std::__exchange(__rhs._M_buf_allocated, false)), +16166: _M_reading(std::__exchange(__rhs._M_reading, false)), +16166: _M_writing(std::__exchange(__rhs._M_writing, false)), +16166: _M_pback(__rhs._M_pback), +16166: _M_pback_cur_save(std::__exchange(__rhs._M_pback_cur_save, nullptr)), +16166: _M_pback_end_save(std::__exchange(__rhs._M_pback_end_save, nullptr)), +16166: _M_pback_init(std::__exchange(__rhs._M_pback_init, false)), +16166: _M_codecvt(__rhs._M_codecvt), +16166: _M_ext_buf(std::__exchange(__rhs._M_ext_buf, nullptr)), +16166: _M_ext_buf_size(std::__exchange(__rhs._M_ext_buf_size, 0)), +16166: _M_ext_next(std::__exchange(__rhs._M_ext_next, nullptr)), +16166: _M_ext_end(std::__exchange(__rhs._M_ext_end, nullptr)) +16166: { +16166: __rhs._M_set_buffer(-1); +16166: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; +16166: } +16166: +16166: template +16166: basic_filebuf<_CharT, _Traits>& +16166: basic_filebuf<_CharT, _Traits>:: +16166: operator=(basic_filebuf&& __rhs) +16166: { +16166: this->close(); +16166: __streambuf_type::operator=(__rhs); +16166: _M_file.swap(__rhs._M_file); +16166: _M_mode = std::__exchange(__rhs._M_mode, ios_base::openmode(0)); +16166: _M_state_beg = std::move(__rhs._M_state_beg); +16166: _M_state_cur = std::move(__rhs._M_state_cur); +16166: _M_state_last = std::move(__rhs._M_state_last); +16166: _M_buf = std::__exchange(__rhs._M_buf, nullptr); +16166: _M_buf_size = std::__exchange(__rhs._M_buf_size, 1); +16166: _M_buf_allocated = std::__exchange(__rhs._M_buf_allocated, false); +16166: _M_ext_buf = std::__exchange(__rhs._M_ext_buf, nullptr); +16166: _M_ext_buf_size = std::__exchange(__rhs._M_ext_buf_size, 0); +16166: _M_ext_next = std::__exchange(__rhs._M_ext_next, nullptr); +16166: _M_ext_end = std::__exchange(__rhs._M_ext_end, nullptr); +16166: _M_reading = std::__exchange(__rhs._M_reading, false); +16166: _M_writing = std::__exchange(__rhs._M_writing, false); +16166: _M_pback_cur_save = std::__exchange(__rhs._M_pback_cur_save, nullptr); +16166: _M_pback_end_save = std::__exchange(__rhs._M_pback_end_save, nullptr); +16166: _M_pback_init = std::__exchange(__rhs._M_pback_init, false); +16166: __rhs._M_set_buffer(-1); +16166: __rhs._M_state_last = __rhs._M_state_cur = __rhs._M_state_beg; +16166: return *this; +16166: } +16166: +16166: template +16166: void +16166: basic_filebuf<_CharT, _Traits>:: +16166: swap(basic_filebuf& __rhs) +16166: { +16166: __streambuf_type::swap(__rhs); +16166: _M_file.swap(__rhs._M_file); +16166: std::swap(_M_mode, __rhs._M_mode); +16166: std::swap(_M_state_beg, __rhs._M_state_beg); +16166: std::swap(_M_state_cur, __rhs._M_state_cur); +16166: std::swap(_M_state_last, __rhs._M_state_last); +16166: std::swap(_M_buf, __rhs._M_buf); +16166: std::swap(_M_buf_size, __rhs._M_buf_size); +16166: std::swap(_M_buf_allocated, __rhs._M_buf_allocated); +16166: std::swap(_M_ext_buf, __rhs._M_ext_buf); +16166: std::swap(_M_ext_buf_size, __rhs._M_ext_buf_size); +16166: std::swap(_M_ext_next, __rhs._M_ext_next); +16166: std::swap(_M_ext_end, __rhs._M_ext_end); +16166: std::swap(_M_reading, __rhs._M_reading); +16166: std::swap(_M_writing, __rhs._M_writing); +16166: std::swap(_M_pback_cur_save, __rhs._M_pback_cur_save); +16166: std::swap(_M_pback_end_save, __rhs._M_pback_end_save); +16166: std::swap(_M_pback_init, __rhs._M_pback_init); +16166: } +16166: +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* +16166: basic_filebuf<_CharT, _Traits>:: +16166: open(const char* __s, ios_base::openmode __mode) +16166: { +16166: __filebuf_type *__ret = 0; +16166: if (!this->is_open()) +16166: { +16166: _M_file.open(__s, __mode); +16166: if (this->is_open()) +16166: { +16166: _M_allocate_internal_buffer(); +16166: _M_mode = __mode; +16166: +16166: +16166: _M_reading = false; +16166: _M_writing = false; +16166: _M_set_buffer(-1); +16166: +16166: +16166: _M_state_last = _M_state_cur = _M_state_beg; +16166: +16166: +16166: if ((__mode & ios_base::ate) +16166: && this->seekoff(0, ios_base::end, __mode) +16166: == pos_type(off_type(-1))) +16166: this->close(); +16166: else +16166: __ret = this; +16166: } +16166: } +16166: return __ret; +16166: } +16166: # 246 "/usr/include/c++/14/bits/fstream.tcc" 3 +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::__filebuf_type* +16166: basic_filebuf<_CharT, _Traits>:: +16166: close() +16166: { +16166: if (!this->is_open()) +16166: return 0; +16166: +16166: bool __testfail = false; +16166: { +16166: +16166: struct __close_sentry +16166: { +16166: basic_filebuf *__fb; +16166: __close_sentry (basic_filebuf *__fbi): __fb(__fbi) { } +16166: ~__close_sentry () +16166: { +16166: __fb->_M_mode = ios_base::openmode(0); +16166: __fb->_M_pback_init = false; +16166: __fb->_M_destroy_internal_buffer(); +16166: __fb->_M_reading = false; +16166: __fb->_M_writing = false; +16166: __fb->_M_set_buffer(-1); +16166: __fb->_M_state_last = __fb->_M_state_cur = __fb->_M_state_beg; +16166: } +16166: } __cs (this); +16166: +16166: try +16166: { +16166: if (!_M_terminate_output()) +16166: __testfail = true; +16166: } +16166: catch(...) +16166: { +16166: _M_file.close(); +16166: throw; +16166: } +16166: } +16166: +16166: if (!_M_file.close()) +16166: __testfail = true; +16166: +16166: if (__testfail) +16166: return 0; +16166: else +16166: return this; +16166: } +16166: +16166: template +16166: streamsize +16166: basic_filebuf<_CharT, _Traits>:: +16166: showmanyc() +16166: { +16166: streamsize __ret = -1; +16166: const bool __testin = _M_mode & ios_base::in; +16166: if (__testin && this->is_open()) +16166: { +16166: +16166: +16166: __ret = this->egptr() - this->gptr(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if (__check_facet(_M_codecvt).encoding() >= 0) +16166: +16166: __ret += _M_file.showmanyc() / _M_codecvt->max_length(); +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::int_type +16166: basic_filebuf<_CharT, _Traits>:: +16166: underflow() +16166: { +16166: int_type __ret = traits_type::eof(); +16166: const bool __testin = _M_mode & ios_base::in; +16166: if (__testin) +16166: { +16166: if (_M_writing) +16166: { +16166: if (overflow() == traits_type::eof()) +16166: return __ret; +16166: _M_set_buffer(-1); +16166: _M_writing = false; +16166: } +16166: +16166: +16166: +16166: _M_destroy_pback(); +16166: +16166: if (this->gptr() < this->egptr()) +16166: return traits_type::to_int_type(*this->gptr()); +16166: +16166: +16166: const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; +16166: +16166: +16166: bool __got_eof = false; +16166: +16166: streamsize __ilen = 0; +16166: codecvt_base::result __r = codecvt_base::ok; +16166: if (__check_facet(_M_codecvt).always_noconv()) +16166: { +16166: __ilen = _M_file.xsgetn(reinterpret_cast(this->eback()), +16166: __buflen); +16166: if (__ilen == 0) +16166: __got_eof = true; +16166: } +16166: else +16166: { +16166: +16166: +16166: const int __enc = _M_codecvt->encoding(); +16166: streamsize __blen; +16166: streamsize __rlen; +16166: if (__enc > 0) +16166: __blen = __rlen = __buflen * __enc; +16166: else +16166: { +16166: __blen = __buflen + _M_codecvt->max_length() - 1; +16166: __rlen = __buflen; +16166: } +16166: const streamsize __remainder = _M_ext_end - _M_ext_next; +16166: __rlen = __rlen > __remainder ? __rlen - __remainder : 0; +16166: +16166: +16166: +16166: if (_M_reading && this->egptr() == this->eback() && __remainder) +16166: __rlen = 0; +16166: +16166: +16166: +16166: if (_M_ext_buf_size < __blen) +16166: { +16166: char* __buf = new char[__blen]; +16166: if (__remainder) +16166: __builtin_memcpy(__buf, _M_ext_next, __remainder); +16166: +16166: delete [] _M_ext_buf; +16166: _M_ext_buf = __buf; +16166: _M_ext_buf_size = __blen; +16166: } +16166: else if (__remainder) +16166: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); +16166: +16166: _M_ext_next = _M_ext_buf; +16166: _M_ext_end = _M_ext_buf + __remainder; +16166: _M_state_last = _M_state_cur; +16166: +16166: do +16166: { +16166: if (__rlen > 0) +16166: { +16166: +16166: +16166: +16166: if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size) +16166: { +16166: __throw_ios_failure(("basic_filebuf::underflow " "codecvt::max_length() " "is not valid") +16166: +16166: ); +16166: } +16166: streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen); +16166: if (__elen == 0) +16166: __got_eof = true; +16166: else if (__elen == -1) +16166: break; +16166: _M_ext_end += __elen; +16166: } +16166: +16166: char_type* __iend = this->eback(); +16166: if (_M_ext_next < _M_ext_end) +16166: __r = _M_codecvt->in(_M_state_cur, _M_ext_next, +16166: _M_ext_end, _M_ext_next, +16166: this->eback(), +16166: this->eback() + __buflen, __iend); +16166: if (__r == codecvt_base::noconv) +16166: { +16166: size_t __avail = _M_ext_end - _M_ext_buf; +16166: __ilen = std::min(__avail, __buflen); +16166: traits_type::copy(this->eback(), +16166: reinterpret_cast +16166: (_M_ext_buf), __ilen); +16166: _M_ext_next = _M_ext_buf + __ilen; +16166: } +16166: else +16166: __ilen = __iend - this->eback(); +16166: +16166: +16166: +16166: +16166: if (__r == codecvt_base::error) +16166: break; +16166: +16166: __rlen = 1; +16166: } +16166: while (__ilen == 0 && !__got_eof); +16166: } +16166: +16166: if (__ilen > 0) +16166: { +16166: _M_set_buffer(__ilen); +16166: _M_reading = true; +16166: __ret = traits_type::to_int_type(*this->gptr()); +16166: } +16166: else if (__got_eof) +16166: { +16166: +16166: +16166: +16166: _M_set_buffer(-1); +16166: _M_reading = false; +16166: +16166: +16166: if (__r == codecvt_base::partial) +16166: __throw_ios_failure(("basic_filebuf::underflow " "incomplete character in file") +16166: ); +16166: } +16166: else if (__r == codecvt_base::error) +16166: __throw_ios_failure(("basic_filebuf::underflow " "invalid byte sequence in file") +16166: ); +16166: else +16166: __throw_ios_failure(("basic_filebuf::underflow " "error reading the file") +16166: , (*__errno_location ())); +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::int_type +16166: basic_filebuf<_CharT, _Traits>:: +16166: pbackfail(int_type __i) +16166: { +16166: int_type __ret = traits_type::eof(); +16166: const bool __testin = _M_mode & ios_base::in; +16166: if (__testin) +16166: { +16166: if (_M_writing) +16166: { +16166: if (overflow() == traits_type::eof()) +16166: return __ret; +16166: _M_set_buffer(-1); +16166: _M_writing = false; +16166: } +16166: +16166: +16166: const bool __testpb = _M_pback_init; +16166: const bool __testeof = traits_type::eq_int_type(__i, __ret); +16166: int_type __tmp; +16166: if (this->eback() < this->gptr()) +16166: { +16166: this->gbump(-1); +16166: __tmp = traits_type::to_int_type(*this->gptr()); +16166: } +16166: else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1))) +16166: { +16166: __tmp = this->underflow(); +16166: if (traits_type::eq_int_type(__tmp, __ret)) +16166: return __ret; +16166: } +16166: else +16166: { +16166: +16166: +16166: +16166: +16166: +16166: return __ret; +16166: } +16166: +16166: +16166: +16166: if (!__testeof && traits_type::eq_int_type(__i, __tmp)) +16166: __ret = __i; +16166: else if (__testeof) +16166: __ret = traits_type::not_eof(__i); +16166: else if (!__testpb) +16166: { +16166: _M_create_pback(); +16166: _M_reading = true; +16166: *this->gptr() = traits_type::to_char_type(__i); +16166: __ret = __i; +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::int_type +16166: basic_filebuf<_CharT, _Traits>:: +16166: overflow(int_type __c) +16166: { +16166: int_type __ret = traits_type::eof(); +16166: const bool __testeof = traits_type::eq_int_type(__c, __ret); +16166: const bool __testout = (_M_mode & ios_base::out +16166: || _M_mode & ios_base::app); +16166: if (__testout) +16166: { +16166: if (_M_reading) +16166: { +16166: _M_destroy_pback(); +16166: const int __gptr_off = _M_get_ext_pos(_M_state_last); +16166: if (_M_seek(__gptr_off, ios_base::cur, _M_state_last) +16166: == pos_type(off_type(-1))) +16166: return __ret; +16166: } +16166: if (this->pbase() < this->pptr()) +16166: { +16166: +16166: if (!__testeof) +16166: { +16166: *this->pptr() = traits_type::to_char_type(__c); +16166: this->pbump(1); +16166: } +16166: +16166: +16166: +16166: if (_M_convert_to_external(this->pbase(), +16166: this->pptr() - this->pbase())) +16166: { +16166: _M_set_buffer(0); +16166: __ret = traits_type::not_eof(__c); +16166: } +16166: } +16166: else if (_M_buf_size > 1) +16166: { +16166: +16166: +16166: +16166: _M_set_buffer(0); +16166: _M_writing = true; +16166: if (!__testeof) +16166: { +16166: *this->pptr() = traits_type::to_char_type(__c); +16166: this->pbump(1); +16166: } +16166: __ret = traits_type::not_eof(__c); +16166: } +16166: else +16166: { +16166: +16166: char_type __conv = traits_type::to_char_type(__c); +16166: if (__testeof || _M_convert_to_external(&__conv, 1)) +16166: { +16166: _M_writing = true; +16166: __ret = traits_type::not_eof(__c); +16166: } +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: bool +16166: basic_filebuf<_CharT, _Traits>:: +16166: _M_convert_to_external(_CharT* __ibuf, streamsize __ilen) +16166: { +16166: +16166: streamsize __elen; +16166: streamsize __plen; +16166: if (__check_facet(_M_codecvt).always_noconv()) +16166: { +16166: __elen = _M_file.xsputn(reinterpret_cast(__ibuf), __ilen); +16166: __plen = __ilen; +16166: } +16166: else +16166: { +16166: +16166: +16166: streamsize __blen = __ilen * _M_codecvt->max_length(); +16166: char* __buf = static_cast(__builtin_alloca(__blen)); +16166: +16166: char* __bend; +16166: const char_type* __iend; +16166: codecvt_base::result __r; +16166: __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen, +16166: __iend, __buf, __buf + __blen, __bend); +16166: +16166: if (__r == codecvt_base::ok || __r == codecvt_base::partial) +16166: __blen = __bend - __buf; +16166: else if (__r == codecvt_base::noconv) +16166: { +16166: +16166: __buf = reinterpret_cast(__ibuf); +16166: __blen = __ilen; +16166: } +16166: else +16166: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") +16166: ); +16166: +16166: __elen = _M_file.xsputn(__buf, __blen); +16166: __plen = __blen; +16166: +16166: +16166: if (__r == codecvt_base::partial && __elen == __plen) +16166: { +16166: const char_type* __iresume = __iend; +16166: streamsize __rlen = this->pptr() - __iend; +16166: __r = _M_codecvt->out(_M_state_cur, __iresume, +16166: __iresume + __rlen, __iend, __buf, +16166: __buf + __blen, __bend); +16166: if (__r != codecvt_base::error) +16166: { +16166: __rlen = __bend - __buf; +16166: __elen = _M_file.xsputn(__buf, __rlen); +16166: __plen = __rlen; +16166: } +16166: else +16166: __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error") +16166: ); +16166: } +16166: } +16166: return __elen == __plen; +16166: } +16166: +16166: template +16166: streamsize +16166: basic_filebuf<_CharT, _Traits>:: +16166: xsgetn(_CharT* __s, streamsize __n) +16166: { +16166: +16166: streamsize __ret = 0; +16166: if (_M_pback_init) +16166: { +16166: if (__n > 0 && this->gptr() == this->eback()) +16166: { +16166: *__s++ = *this->gptr(); +16166: this->gbump(1); +16166: __ret = 1; +16166: --__n; +16166: } +16166: _M_destroy_pback(); +16166: } +16166: else if (_M_writing) +16166: { +16166: if (overflow() == traits_type::eof()) +16166: return __ret; +16166: _M_set_buffer(-1); +16166: _M_writing = false; +16166: } +16166: +16166: +16166: +16166: +16166: const bool __testin = _M_mode & ios_base::in; +16166: const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; +16166: +16166: if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() +16166: && __testin) +16166: { +16166: +16166: const streamsize __avail = this->egptr() - this->gptr(); +16166: if (__avail != 0) +16166: { +16166: traits_type::copy(__s, this->gptr(), __avail); +16166: __s += __avail; +16166: this->setg(this->eback(), this->gptr() + __avail, this->egptr()); +16166: __ret += __avail; +16166: __n -= __avail; +16166: } +16166: +16166: +16166: +16166: streamsize __len; +16166: for (;;) +16166: { +16166: __len = _M_file.xsgetn(reinterpret_cast(__s), __n); +16166: if (__len == -1) +16166: __throw_ios_failure(("basic_filebuf::xsgetn " "error reading the file") +16166: , (*__errno_location ())); +16166: if (__len == 0) +16166: break; +16166: +16166: __n -= __len; +16166: __ret += __len; +16166: if (__n == 0) +16166: break; +16166: +16166: __s += __len; +16166: } +16166: +16166: if (__n == 0) +16166: { +16166: +16166: _M_reading = true; +16166: } +16166: else if (__len == 0) +16166: { +16166: +16166: +16166: +16166: _M_set_buffer(-1); +16166: _M_reading = false; +16166: } +16166: } +16166: else +16166: __ret += __streambuf_type::xsgetn(__s, __n); +16166: +16166: return __ret; +16166: } +16166: +16166: template +16166: streamsize +16166: basic_filebuf<_CharT, _Traits>:: +16166: xsputn(const _CharT* __s, streamsize __n) +16166: { +16166: streamsize __ret = 0; +16166: +16166: +16166: +16166: const bool __testout = (_M_mode & ios_base::out +16166: || _M_mode & ios_base::app); +16166: if (__check_facet(_M_codecvt).always_noconv() +16166: && __testout && !_M_reading) +16166: { +16166: streamsize __bufavail = this->epptr() - this->pptr(); +16166: +16166: +16166: if (!_M_writing && _M_buf_size > 1) +16166: __bufavail = _M_buf_size - 1; +16166: +16166: if (__n >= __bufavail) +16166: { +16166: const streamsize __buffill = this->pptr() - this->pbase(); +16166: const char* __buf = reinterpret_cast(this->pbase()); +16166: __ret = _M_file.xsputn_2(__buf, __buffill, +16166: reinterpret_cast(__s), +16166: __n); +16166: if (__ret == __buffill + __n) +16166: { +16166: _M_set_buffer(0); +16166: _M_writing = true; +16166: } +16166: if (__ret > __buffill) +16166: __ret -= __buffill; +16166: else +16166: __ret = 0; +16166: } +16166: else +16166: __ret = __streambuf_type::xsputn(__s, __n); +16166: } +16166: else +16166: __ret = __streambuf_type::xsputn(__s, __n); +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::__streambuf_type* +16166: basic_filebuf<_CharT, _Traits>:: +16166: setbuf(char_type* __s, streamsize __n) +16166: { +16166: if (!this->is_open()) +16166: { +16166: if (__s == 0 && __n == 0) +16166: _M_buf_size = 1; +16166: else if (__s && __n > 0) +16166: { +16166: # 816 "/usr/include/c++/14/bits/fstream.tcc" 3 +16166: _M_buf = __s; +16166: _M_buf_size = __n; +16166: } +16166: } +16166: return this; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::pos_type +16166: basic_filebuf<_CharT, _Traits>:: +16166: seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode) +16166: { +16166: int __width = 0; +16166: if (_M_codecvt) +16166: __width = _M_codecvt->encoding(); +16166: if (__width < 0) +16166: __width = 0; +16166: +16166: pos_type __ret = pos_type(off_type(-1)); +16166: const bool __testfail = __off != 0 && __width <= 0; +16166: if (this->is_open() && !__testfail) +16166: { +16166: +16166: +16166: +16166: +16166: bool __no_movement = __way == ios_base::cur && __off == 0 +16166: && (!_M_writing || _M_codecvt->always_noconv()); +16166: +16166: +16166: if (!__no_movement) +16166: _M_destroy_pback(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: __state_type __state = _M_state_beg; +16166: off_type __computed_off = __off * __width; +16166: if (_M_reading && __way == ios_base::cur) +16166: { +16166: __state = _M_state_last; +16166: __computed_off += _M_get_ext_pos(__state); +16166: } +16166: if (!__no_movement) +16166: __ret = _M_seek(__computed_off, __way, __state); +16166: else +16166: { +16166: if (_M_writing) +16166: __computed_off = this->pptr() - this->pbase(); +16166: +16166: off_type __file_off = _M_file.seekoff(0, ios_base::cur); +16166: if (__file_off != off_type(-1)) +16166: { +16166: __ret = __file_off + __computed_off; +16166: __ret.state(__state); +16166: } +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::pos_type +16166: basic_filebuf<_CharT, _Traits>:: +16166: seekpos(pos_type __pos, ios_base::openmode) +16166: { +16166: pos_type __ret = pos_type(off_type(-1)); +16166: if (this->is_open()) +16166: { +16166: +16166: _M_destroy_pback(); +16166: __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state()); +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: typename basic_filebuf<_CharT, _Traits>::pos_type +16166: basic_filebuf<_CharT, _Traits>:: +16166: _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state) +16166: { +16166: pos_type __ret = pos_type(off_type(-1)); +16166: if (_M_terminate_output()) +16166: { +16166: off_type __file_off = _M_file.seekoff(__off, __way); +16166: if (__file_off != off_type(-1)) +16166: { +16166: _M_reading = false; +16166: _M_writing = false; +16166: _M_ext_next = _M_ext_end = _M_ext_buf; +16166: _M_set_buffer(-1); +16166: _M_state_cur = __state; +16166: __ret = __file_off; +16166: __ret.state(_M_state_cur); +16166: } +16166: } +16166: return __ret; +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: int basic_filebuf<_CharT, _Traits>:: +16166: _M_get_ext_pos(__state_type& __state) +16166: { +16166: if (_M_codecvt->always_noconv()) +16166: return this->gptr() - this->egptr(); +16166: else +16166: { +16166: +16166: +16166: +16166: const int __gptr_off = +16166: _M_codecvt->length(__state, _M_ext_buf, _M_ext_next, +16166: this->gptr() - this->eback()); +16166: return _M_ext_buf + __gptr_off - _M_ext_end; +16166: } +16166: } +16166: +16166: template +16166: bool +16166: basic_filebuf<_CharT, _Traits>:: +16166: _M_terminate_output() +16166: { +16166: +16166: bool __testvalid = true; +16166: if (this->pbase() < this->pptr()) +16166: { +16166: const int_type __tmp = this->overflow(); +16166: if (traits_type::eq_int_type(__tmp, traits_type::eof())) +16166: __testvalid = false; +16166: } +16166: +16166: +16166: if (_M_writing && !__check_facet(_M_codecvt).always_noconv() +16166: && __testvalid) +16166: { +16166: +16166: +16166: +16166: const size_t __blen = 128; +16166: char __buf[__blen]; +16166: codecvt_base::result __r; +16166: streamsize __ilen = 0; +16166: +16166: do +16166: { +16166: char* __next; +16166: __r = _M_codecvt->unshift(_M_state_cur, __buf, +16166: __buf + __blen, __next); +16166: if (__r == codecvt_base::error) +16166: __testvalid = false; +16166: else if (__r == codecvt_base::ok || +16166: __r == codecvt_base::partial) +16166: { +16166: __ilen = __next - __buf; +16166: if (__ilen > 0) +16166: { +16166: const streamsize __elen = _M_file.xsputn(__buf, __ilen); +16166: if (__elen != __ilen) +16166: __testvalid = false; +16166: } +16166: } +16166: } +16166: while (__r == codecvt_base::partial && __ilen > 0 && __testvalid); +16166: +16166: if (__testvalid) +16166: { +16166: +16166: +16166: +16166: +16166: const int_type __tmp = this->overflow(); +16166: if (traits_type::eq_int_type(__tmp, traits_type::eof())) +16166: __testvalid = false; +16166: } +16166: } +16166: return __testvalid; +16166: } +16166: +16166: template +16166: int +16166: basic_filebuf<_CharT, _Traits>:: +16166: sync() +16166: { +16166: +16166: +16166: int __ret = 0; +16166: if (this->pbase() < this->pptr()) +16166: { +16166: const int_type __tmp = this->overflow(); +16166: if (traits_type::eq_int_type(__tmp, traits_type::eof())) +16166: __ret = -1; +16166: } +16166: return __ret; +16166: } +16166: +16166: template +16166: void +16166: basic_filebuf<_CharT, _Traits>:: +16166: imbue(const locale& __loc) +16166: { +16166: bool __testvalid = true; +16166: +16166: const __codecvt_type* const _M_codecvt_tmp +16166: = __try_use_facet<__codecvt_type>(__loc); +16166: +16166: if (this->is_open()) +16166: { +16166: +16166: if ((_M_reading || _M_writing) +16166: && __check_facet(_M_codecvt).encoding() == -1) +16166: __testvalid = false; +16166: else +16166: { +16166: if (_M_reading) +16166: { +16166: if (__check_facet(_M_codecvt).always_noconv()) +16166: { +16166: if (_M_codecvt_tmp +16166: && !__check_facet(_M_codecvt_tmp).always_noconv()) +16166: __testvalid = this->seekoff(0, ios_base::cur, _M_mode) +16166: != pos_type(off_type(-1)); +16166: } +16166: else +16166: { +16166: +16166: _M_ext_next = _M_ext_buf +16166: + _M_codecvt->length(_M_state_last, _M_ext_buf, +16166: _M_ext_next, +16166: this->gptr() - this->eback()); +16166: const streamsize __remainder = _M_ext_end - _M_ext_next; +16166: if (__remainder) +16166: __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); +16166: +16166: _M_ext_next = _M_ext_buf; +16166: _M_ext_end = _M_ext_buf + __remainder; +16166: _M_set_buffer(-1); +16166: _M_state_last = _M_state_cur = _M_state_beg; +16166: } +16166: } +16166: else if (_M_writing && (__testvalid = _M_terminate_output())) +16166: _M_set_buffer(-1); +16166: } +16166: } +16166: +16166: if (__testvalid) +16166: _M_codecvt = _M_codecvt_tmp; +16166: else +16166: _M_codecvt = 0; +16166: } +16166: +16166: +16166: +16166: +16166: extern template class basic_filebuf; +16166: extern template class basic_ifstream; +16166: extern template class basic_ofstream; +16166: extern template class basic_fstream; +16166: +16166: +16166: extern template class basic_filebuf; +16166: extern template class basic_ifstream; +16166: extern template class basic_ofstream; +16166: extern template class basic_fstream; +16166: +16166: +16166: +16166: +16166: } +16166: # 1361 "/usr/include/c++/14/fstream" 2 3 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" +16166: +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" +16166: namespace rocksdb { +16166: class InstrumentedCondVar; +16166: +16166: +16166: +16166: class InstrumentedMutex { +16166: public: +16166: explicit InstrumentedMutex(bool adaptive = false) +16166: : mutex_(adaptive), stats_(nullptr), clock_(nullptr), stats_code_(0) {} +16166: +16166: explicit InstrumentedMutex(SystemClock* clock, bool adaptive = false) +16166: : mutex_(adaptive), stats_(nullptr), clock_(clock), stats_code_(0) {} +16166: +16166: InstrumentedMutex(Statistics* stats, SystemClock* clock, int stats_code, +16166: bool adaptive = false) +16166: : mutex_(adaptive), +16166: stats_(stats), +16166: clock_(clock), +16166: stats_code_(stats_code) {} +16166: # 45 "/build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.h" +16166: void Lock(); +16166: +16166: void Unlock() { mutex_.Unlock(); } +16166: +16166: void AssertHeld() const { mutex_.AssertHeld(); } +16166: +16166: private: +16166: void LockInternal(); +16166: friend class InstrumentedCondVar; +16166: port::Mutex mutex_; +16166: Statistics* stats_; +16166: SystemClock* clock_; +16166: int stats_code_; +16166: +16166: +16166: +16166: }; +16166: +16166: class alignas(64U) CacheAlignedInstrumentedMutex +16166: : public InstrumentedMutex { +16166: using InstrumentedMutex::InstrumentedMutex; +16166: }; +16166: static_assert(alignof(CacheAlignedInstrumentedMutex) != 64U || +16166: sizeof(CacheAlignedInstrumentedMutex) % 64U == 0); +16166: +16166: +16166: class InstrumentedMutexLock { +16166: public: +16166: explicit InstrumentedMutexLock(InstrumentedMutex* mutex) : mutex_(mutex) { +16166: mutex_->Lock(); +16166: } +16166: +16166: ~InstrumentedMutexLock() { mutex_->Unlock(); } +16166: +16166: private: +16166: InstrumentedMutex* const mutex_; +16166: InstrumentedMutexLock(const InstrumentedMutexLock&) = delete; +16166: void operator=(const InstrumentedMutexLock&) = delete; +16166: }; +16166: +16166: +16166: +16166: class InstrumentedMutexUnlock { +16166: public: +16166: explicit InstrumentedMutexUnlock(InstrumentedMutex* mutex) : mutex_(mutex) { +16166: mutex_->Unlock(); +16166: } +16166: +16166: ~InstrumentedMutexUnlock() { mutex_->Lock(); } +16166: +16166: private: +16166: InstrumentedMutex* const mutex_; +16166: InstrumentedMutexUnlock(const InstrumentedMutexUnlock&) = delete; +16166: void operator=(const InstrumentedMutexUnlock&) = delete; +16166: }; +16166: +16166: class InstrumentedCondVar { +16166: public: +16166: explicit InstrumentedCondVar(InstrumentedMutex* instrumented_mutex) +16166: : cond_(&(instrumented_mutex->mutex_)), +16166: stats_(instrumented_mutex->stats_), +16166: clock_(instrumented_mutex->clock_), +16166: stats_code_(instrumented_mutex->stats_code_) {} +16166: +16166: void Wait(); +16166: +16166: bool TimedWait(uint64_t abs_time_us); +16166: +16166: void Signal() { cond_.Signal(); } +16166: +16166: void SignalAll() { cond_.SignalAll(); } +16166: +16166: private: +16166: void WaitInternal(); +16166: bool TimedWaitInternal(uint64_t abs_time_us); +16166: port::CondVar cond_; +16166: Statistics* stats_; +16166: SystemClock* clock_; +16166: int stats_code_; +16166: }; +16166: +16166: } +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 2 +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/replayer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class TraceRecord; +16166: class TraceRecordResult; +16166: +16166: struct ReplayOptions { +16166: +16166: +16166: uint32_t num_threads; +16166: +16166: +16166: +16166: +16166: +16166: +16166: double fast_forward; +16166: +16166: ReplayOptions() : num_threads(1), fast_forward(1.0) {} +16166: +16166: ReplayOptions(uint32_t num_of_threads, double fast_forward_ratio) +16166: : num_threads(num_of_threads), fast_forward(fast_forward_ratio) {} +16166: }; +16166: +16166: +16166: +16166: +16166: class Replayer { +16166: public: +16166: virtual ~Replayer() = default; +16166: +16166: +16166: +16166: virtual Status Prepare() = 0; +16166: +16166: +16166: virtual uint64_t GetHeaderTimestamp() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Next(std::unique_ptr* record) = 0; +16166: # 71 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/replayer.h" +16166: virtual Status Execute(const std::unique_ptr& record, +16166: std::unique_ptr* result) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status Replay( +16166: const ReplayOptions& options, +16166: const std::function&&)>& +16166: result_callback) = 0; +16166: }; +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: class ColumnFamilyHandle; +16166: class ColumnFamilyData; +16166: class DB; +16166: class DBImpl; +16166: class Env; +16166: class Slice; +16166: class SystemClock; +16166: class TraceReader; +16166: class TraceWriter; +16166: class WriteBatch; +16166: +16166: struct ReadOptions; +16166: struct TraceOptions; +16166: struct WriteOptions; +16166: +16166: extern const std::string kTraceMagic; +16166: const unsigned int kTraceTimestampSize = 8; +16166: const unsigned int kTraceTypeSize = 1; +16166: const unsigned int kTracePayloadLengthSize = 4; +16166: const unsigned int kTraceMetadataSize = +16166: kTraceTimestampSize + kTraceTypeSize + kTracePayloadLengthSize; +16166: +16166: static const int kTraceFileMajorVersion = 0; +16166: static const int kTraceFileMinorVersion = 2; +16166: +16166: +16166: struct Trace { +16166: uint64_t ts; +16166: TraceType type; +16166: +16166: +16166: +16166: +16166: uint64_t payload_map = 0; +16166: +16166: +16166: std::string payload; +16166: +16166: void reset() { +16166: ts = 0; +16166: type = kTraceMax; +16166: payload_map = 0; +16166: payload.clear(); +16166: } +16166: }; +16166: +16166: enum TracePayloadType : char { +16166: +16166: +16166: kEmptyPayload = 0, +16166: kWriteBatchData = 1, +16166: kGetCFID = 2, +16166: kGetKey = 3, +16166: kIterCFID = 4, +16166: kIterKey = 5, +16166: kIterLowerBound = 6, +16166: kIterUpperBound = 7, +16166: kMultiGetSize = 8, +16166: kMultiGetCFIDs = 9, +16166: kMultiGetKeys = 10, +16166: }; +16166: +16166: class TracerHelper { +16166: public: +16166: +16166: static Status ParseVersionStr(std::string& v_string, int* v_num); +16166: +16166: +16166: static Status ParseTraceHeader(const Trace& header, int* trace_version, +16166: int* db_version); +16166: +16166: +16166: static void EncodeTrace(const Trace& trace, std::string* encoded_trace); +16166: +16166: +16166: static Status DecodeTrace(const std::string& encoded_trace, Trace* trace); +16166: +16166: +16166: static Status DecodeHeader(const std::string& encoded_trace, Trace* header); +16166: +16166: +16166: static bool SetPayloadMap(uint64_t& payload_map, +16166: const TracePayloadType payload_type); +16166: +16166: +16166: +16166: +16166: +16166: static Status DecodeTraceRecord(Trace* trace, int trace_file_version, +16166: std::unique_ptr* record); +16166: }; +16166: +16166: +16166: +16166: +16166: class Tracer { +16166: public: +16166: Tracer(SystemClock* clock, const TraceOptions& trace_options, +16166: std::unique_ptr&& trace_writer); +16166: ~Tracer(); +16166: +16166: +16166: Status Write(WriteBatch* write_batch); +16166: +16166: +16166: Status Get(ColumnFamilyHandle* cfname, const Slice& key); +16166: +16166: +16166: Status IteratorSeek(const uint32_t& cf_id, const Slice& key, +16166: const Slice& lower_bound, const Slice upper_bound); +16166: Status IteratorSeekForPrev(const uint32_t& cf_id, const Slice& key, +16166: const Slice& lower_bound, const Slice upper_bound); +16166: +16166: +16166: +16166: Status MultiGet(const size_t num_keys, ColumnFamilyHandle** column_families, +16166: const Slice* keys); +16166: +16166: Status MultiGet(const size_t num_keys, ColumnFamilyHandle* column_family, +16166: const Slice* keys); +16166: +16166: Status MultiGet(const std::vector& column_family, +16166: const std::vector& keys); +16166: +16166: +16166: +16166: bool IsTraceFileOverMax(); +16166: +16166: +16166: +16166: bool IsWriteOrderPreserved() { return trace_options_.preserve_write_order; } +16166: +16166: +16166: Status Close(); +16166: +16166: private: +16166: +16166: +16166: +16166: Status WriteHeader(); +16166: +16166: +16166: Status WriteFooter(); +16166: +16166: +16166: +16166: Status WriteTrace(const Trace& trace); +16166: +16166: +16166: +16166: bool ShouldSkipTrace(const TraceType& type); +16166: +16166: SystemClock* clock_; +16166: TraceOptions trace_options_; +16166: std::unique_ptr trace_writer_; +16166: uint64_t trace_request_count_; +16166: Status trace_write_status_; +16166: }; +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" 2 +16166: +16166: namespace rocksdb { +16166: class SystemClock; +16166: class TraceReader; +16166: class TraceWriter; +16166: # 32 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" +16166: enum IOTraceOp : char { +16166: +16166: +16166: kIOFileSize = 0, +16166: kIOLen = 1, +16166: kIOOffset = 2, +16166: }; +16166: +16166: struct IOTraceRecord { +16166: +16166: uint64_t access_timestamp = 0; +16166: TraceType trace_type = TraceType::kTraceMax; +16166: +16166: +16166: +16166: uint64_t io_op_data = 0; +16166: std::string file_operation; +16166: uint64_t latency = 0; +16166: std::string io_status; +16166: +16166: std::string file_name; +16166: +16166: +16166: uint64_t len = 0; +16166: uint64_t offset = 0; +16166: uint64_t file_size = 0; +16166: +16166: +16166: uint64_t trace_data = 0; +16166: std::string request_id; +16166: +16166: IOTraceRecord() {} +16166: +16166: IOTraceRecord(const uint64_t& _access_timestamp, const TraceType& _trace_type, +16166: const uint64_t& _io_op_data, const std::string& _file_operation, +16166: const uint64_t& _latency, const std::string& _io_status, +16166: const std::string& _file_name, const uint64_t& _file_size = 0) +16166: : access_timestamp(_access_timestamp), +16166: trace_type(_trace_type), +16166: io_op_data(_io_op_data), +16166: file_operation(_file_operation), +16166: latency(_latency), +16166: io_status(_io_status), +16166: file_name(_file_name), +16166: file_size(_file_size) {} +16166: +16166: IOTraceRecord(const uint64_t& _access_timestamp, const TraceType& _trace_type, +16166: const uint64_t& _io_op_data, const std::string& _file_operation, +16166: const uint64_t& _latency, const std::string& _io_status, +16166: const std::string& _file_name, const uint64_t& _len, +16166: const uint64_t& _offset) +16166: : access_timestamp(_access_timestamp), +16166: trace_type(_trace_type), +16166: io_op_data(_io_op_data), +16166: file_operation(_file_operation), +16166: latency(_latency), +16166: io_status(_io_status), +16166: file_name(_file_name), +16166: len(_len), +16166: offset(_offset) {} +16166: }; +16166: +16166: struct IOTraceHeader { +16166: uint64_t start_time; +16166: uint32_t rocksdb_major_version; +16166: uint32_t rocksdb_minor_version; +16166: }; +16166: +16166: +16166: +16166: class IOTraceWriter { +16166: public: +16166: IOTraceWriter(SystemClock* clock, const TraceOptions& trace_options, +16166: std::unique_ptr&& trace_writer); +16166: ~IOTraceWriter() = default; +16166: +16166: IOTraceWriter(const IOTraceWriter&) = delete; +16166: IOTraceWriter& operator=(const IOTraceWriter&) = delete; +16166: IOTraceWriter(IOTraceWriter&&) = delete; +16166: IOTraceWriter& operator=(IOTraceWriter&&) = delete; +16166: +16166: Status WriteIOOp(const IOTraceRecord& record, IODebugContext* dbg); +16166: +16166: +16166: +16166: Status WriteHeader(); +16166: +16166: private: +16166: SystemClock* clock_; +16166: TraceOptions trace_options_; +16166: std::unique_ptr trace_writer_; +16166: }; +16166: +16166: +16166: class IOTraceReader { +16166: public: +16166: explicit IOTraceReader(std::unique_ptr&& reader); +16166: ~IOTraceReader() = default; +16166: +16166: IOTraceReader(const IOTraceReader&) = delete; +16166: IOTraceReader& operator=(const IOTraceReader&) = delete; +16166: IOTraceReader(IOTraceReader&&) = delete; +16166: IOTraceReader& operator=(IOTraceReader&&) = delete; +16166: +16166: Status ReadHeader(IOTraceHeader* header); +16166: +16166: Status ReadIOOp(IOTraceRecord* record); +16166: +16166: private: +16166: std::unique_ptr trace_reader_; +16166: }; +16166: +16166: +16166: +16166: class IOTracer { +16166: public: +16166: IOTracer(); +16166: ~IOTracer(); +16166: +16166: IOTracer(const IOTracer&) = delete; +16166: IOTracer& operator=(const IOTracer&) = delete; +16166: IOTracer(IOTracer&&) = delete; +16166: IOTracer& operator=(IOTracer&&) = delete; +16166: # 163 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.h" +16166: Status +16166: StartIOTrace(SystemClock* clock, const TraceOptions& trace_options, +16166: std::unique_ptr&& trace_writer); +16166: +16166: +16166: void EndIOTrace(); +16166: +16166: bool is_tracing_enabled() const { return tracing_enabled; } +16166: +16166: void WriteIOOp(const IOTraceRecord& record, IODebugContext* dbg); +16166: +16166: private: +16166: TraceOptions trace_options_; +16166: +16166: InstrumentedMutex trace_writer_mutex_; +16166: std::atomic writer_; +16166: +16166: +16166: +16166: bool tracing_enabled; +16166: }; +16166: +16166: } +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FileSystemTracingWrapper : public FileSystemWrapper { +16166: public: +16166: FileSystemTracingWrapper(const std::shared_ptr& t, +16166: const std::shared_ptr& io_tracer) +16166: : FileSystemWrapper(t), +16166: io_tracer_(io_tracer), +16166: clock_(SystemClock::Default().get()) {} +16166: +16166: ~FileSystemTracingWrapper() override {} +16166: +16166: static const char* kClassName() { return "FileSystemTracing"; } +16166: const char* Name() const override { return kClassName(); } +16166: +16166: IOStatus NewSequentialFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus NewRandomAccessFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus NewWritableFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus ReopenWritableFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus ReuseWritableFile(const std::string& fname, +16166: const std::string& old_fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus NewRandomRWFile(const std::string& fname, const FileOptions& options, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus NewDirectory(const std::string& name, const IOOptions& io_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus GetChildren(const std::string& dir, const IOOptions& io_opts, +16166: std::vector* r, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus DeleteFile(const std::string& fname, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus CreateDir(const std::string& dirname, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus CreateDirIfMissing(const std::string& dirname, +16166: const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus DeleteDir(const std::string& dirname, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus GetFileSize(const std::string& fname, const IOOptions& options, +16166: uint64_t* file_size, IODebugContext* dbg) override; +16166: +16166: IOStatus Truncate(const std::string& fname, size_t size, +16166: const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: SystemClock* clock_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FileSystemPtr { +16166: public: +16166: FileSystemPtr(std::shared_ptr fs, +16166: const std::shared_ptr& io_tracer) +16166: : fs_(fs), io_tracer_(io_tracer) { +16166: fs_tracer_ = std::make_shared(fs_, io_tracer_); +16166: } +16166: +16166: std::shared_ptr operator->() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return fs_tracer_; +16166: } else { +16166: return fs_; +16166: } +16166: } +16166: +16166: +16166: FileSystem* get() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return fs_tracer_.get(); +16166: } else { +16166: return fs_.get(); +16166: } +16166: } +16166: +16166: private: +16166: std::shared_ptr fs_; +16166: std::shared_ptr io_tracer_; +16166: std::shared_ptr fs_tracer_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSSequentialFileTracingWrapper : public FSSequentialFileOwnerWrapper { +16166: public: +16166: FSSequentialFileTracingWrapper(std::unique_ptr&& t, +16166: std::shared_ptr io_tracer, +16166: const std::string& file_name) +16166: : FSSequentialFileOwnerWrapper(std::move(t)), +16166: io_tracer_(io_tracer), +16166: clock_(SystemClock::Default().get()), +16166: file_name_(file_name) {} +16166: +16166: ~FSSequentialFileTracingWrapper() override {} +16166: +16166: IOStatus Read(size_t n, const IOOptions& options, Slice* result, +16166: char* scratch, IODebugContext* dbg) override; +16166: +16166: IOStatus InvalidateCache(size_t offset, size_t length) override; +16166: +16166: IOStatus PositionedRead(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) override; +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: SystemClock* clock_; +16166: std::string file_name_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSSequentialFilePtr { +16166: public: +16166: FSSequentialFilePtr() = delete; +16166: FSSequentialFilePtr(std::unique_ptr&& fs, +16166: const std::shared_ptr& io_tracer, +16166: const std::string& file_name) +16166: : io_tracer_(io_tracer), +16166: fs_tracer_(std::move(fs), io_tracer_, +16166: file_name.substr(file_name.find_last_of("/\\") + +16166: 1) ) {} +16166: +16166: FSSequentialFile* operator->() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return const_cast(&fs_tracer_); +16166: } else { +16166: return fs_tracer_.target(); +16166: } +16166: } +16166: +16166: FSSequentialFile* get() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return const_cast(&fs_tracer_); +16166: } else { +16166: return fs_tracer_.target(); +16166: } +16166: } +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: FSSequentialFileTracingWrapper fs_tracer_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSRandomAccessFileTracingWrapper : public FSRandomAccessFileOwnerWrapper { +16166: public: +16166: FSRandomAccessFileTracingWrapper(std::unique_ptr&& t, +16166: std::shared_ptr io_tracer, +16166: const std::string& file_name) +16166: : FSRandomAccessFileOwnerWrapper(std::move(t)), +16166: io_tracer_(io_tracer), +16166: clock_(SystemClock::Default().get()), +16166: file_name_(file_name) {} +16166: +16166: ~FSRandomAccessFileTracingWrapper() override {} +16166: +16166: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const override; +16166: +16166: IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +16166: const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus Prefetch(uint64_t offset, size_t n, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus InvalidateCache(size_t offset, size_t length) override; +16166: +16166: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +16166: std::function cb, +16166: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +16166: IODebugContext* dbg) override; +16166: +16166: void ReadAsyncCallback(FSReadRequest& req, void* cb_arg); +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: SystemClock* clock_; +16166: +16166: std::string file_name_; +16166: +16166: struct ReadAsyncCallbackInfo { +16166: uint64_t start_time_; +16166: std::function cb_; +16166: void* cb_arg_; +16166: std::string file_op_; +16166: }; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSRandomAccessFilePtr { +16166: public: +16166: FSRandomAccessFilePtr(std::unique_ptr&& fs, +16166: const std::shared_ptr& io_tracer, +16166: const std::string& file_name) +16166: : io_tracer_(io_tracer), +16166: fs_tracer_(std::move(fs), io_tracer_, +16166: file_name.substr(file_name.find_last_of("/\\") + +16166: 1) ) {} +16166: +16166: FSRandomAccessFile* operator->() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return const_cast(&fs_tracer_); +16166: } else { +16166: return fs_tracer_.target(); +16166: } +16166: } +16166: +16166: FSRandomAccessFile* get() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return const_cast(&fs_tracer_); +16166: } else { +16166: return fs_tracer_.target(); +16166: } +16166: } +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: FSRandomAccessFileTracingWrapper fs_tracer_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSWritableFileTracingWrapper : public FSWritableFileOwnerWrapper { +16166: public: +16166: FSWritableFileTracingWrapper(std::unique_ptr&& t, +16166: std::shared_ptr io_tracer, +16166: const std::string& file_name) +16166: : FSWritableFileOwnerWrapper(std::move(t)), +16166: io_tracer_(io_tracer), +16166: clock_(SystemClock::Default().get()), +16166: file_name_(file_name) {} +16166: +16166: ~FSWritableFileTracingWrapper() override {} +16166: +16166: IOStatus Append(const Slice& data, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: IOStatus Append(const Slice& data, const IOOptions& options, +16166: const DataVerificationInfo& , +16166: IODebugContext* dbg) override { +16166: return Append(data, options, dbg); +16166: } +16166: +16166: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +16166: const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +16166: const IOOptions& options, +16166: const DataVerificationInfo& , +16166: IODebugContext* dbg) override { +16166: return PositionedAppend(data, offset, options, dbg); +16166: } +16166: +16166: IOStatus Truncate(uint64_t size, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: uint64_t GetFileSize(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus InvalidateCache(size_t offset, size_t length) override; +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: SystemClock* clock_; +16166: +16166: std::string file_name_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSWritableFilePtr { +16166: public: +16166: FSWritableFilePtr(std::unique_ptr&& fs, +16166: const std::shared_ptr& io_tracer, +16166: const std::string& file_name) +16166: : io_tracer_(io_tracer) { +16166: fs_tracer_.reset(new FSWritableFileTracingWrapper( +16166: std::move(fs), io_tracer_, +16166: file_name.substr(file_name.find_last_of("/\\") + +16166: 1) )); +16166: } +16166: +16166: FSWritableFile* operator->() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return fs_tracer_.get(); +16166: } else { +16166: return fs_tracer_->target(); +16166: } +16166: } +16166: +16166: FSWritableFile* get() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return fs_tracer_.get(); +16166: } else if (fs_tracer_) { +16166: return fs_tracer_->target(); +16166: } else { +16166: return nullptr; +16166: } +16166: } +16166: +16166: void reset() { +16166: fs_tracer_.reset(); +16166: io_tracer_ = nullptr; +16166: } +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: std::unique_ptr fs_tracer_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSRandomRWFileTracingWrapper : public FSRandomRWFileOwnerWrapper { +16166: public: +16166: FSRandomRWFileTracingWrapper(std::unique_ptr&& t, +16166: std::shared_ptr io_tracer, +16166: const std::string& file_name) +16166: : FSRandomRWFileOwnerWrapper(std::move(t)), +16166: io_tracer_(io_tracer), +16166: clock_(SystemClock::Default().get()), +16166: file_name_(file_name) {} +16166: +16166: ~FSRandomRWFileTracingWrapper() override {} +16166: +16166: IOStatus Write(uint64_t offset, const Slice& data, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const override; +16166: +16166: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: SystemClock* clock_; +16166: +16166: std::string file_name_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class FSRandomRWFilePtr { +16166: public: +16166: FSRandomRWFilePtr(std::unique_ptr&& fs, +16166: std::shared_ptr io_tracer, +16166: const std::string& file_name) +16166: : io_tracer_(io_tracer), +16166: fs_tracer_(std::move(fs), io_tracer_, +16166: file_name.substr(file_name.find_last_of("/\\") + +16166: 1) ) {} +16166: +16166: FSRandomRWFile* operator->() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return const_cast(&fs_tracer_); +16166: } else { +16166: return fs_tracer_.target(); +16166: } +16166: } +16166: +16166: FSRandomRWFile* get() const { +16166: if (io_tracer_ && io_tracer_->is_tracing_enabled()) { +16166: return const_cast(&fs_tracer_); +16166: } else { +16166: return fs_tracer_.target(); +16166: } +16166: } +16166: +16166: private: +16166: std::shared_ptr io_tracer_; +16166: FSRandomRWFileTracingWrapper fs_tracer_; +16166: }; +16166: +16166: } +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 2 +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: class RateLimiter { +16166: public: +16166: enum class OpType { +16166: kRead, +16166: kWrite, +16166: }; +16166: +16166: enum class Mode { +16166: kReadsOnly = 0, +16166: kWritesOnly = 1, +16166: kAllIo = 2, +16166: }; +16166: +16166: +16166: explicit RateLimiter(Mode mode = Mode::kWritesOnly) : mode_(mode) {} +16166: +16166: virtual ~RateLimiter() {} +16166: +16166: +16166: +16166: virtual void SetBytesPerSecond(int64_t bytes_per_second) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status SetSingleBurstBytes(int64_t ) { +16166: return Status::NotSupported(); +16166: } +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: virtual void Request(const int64_t , const Env::IOPriority ) { +16166: +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +16166: (static_cast ( +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: false +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: "false" +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: ; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual void Request(const int64_t bytes, const Env::IOPriority pri, +16166: Statistics* ) { +16166: +16166: +16166: Request(bytes, pri); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void Request(const int64_t bytes, const Env::IOPriority pri, +16166: Statistics* stats, OpType op_type) { +16166: if (IsRateLimited(op_type)) { +16166: Request(bytes, pri, stats); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual size_t RequestToken(size_t bytes, size_t alignment, +16166: Env::IOPriority io_priority, Statistics* stats, +16166: RateLimiter::OpType op_type); +16166: +16166: +16166: virtual int64_t GetSingleBurstBytes() const = 0; +16166: +16166: +16166: virtual int64_t GetTotalBytesThrough( +16166: const Env::IOPriority pri = Env::IO_TOTAL) const = 0; +16166: +16166: +16166: virtual int64_t GetTotalRequests( +16166: const Env::IOPriority pri = Env::IO_TOTAL) const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual Status GetTotalPendingRequests( +16166: int64_t* total_pending_requests, +16166: const Env::IOPriority pri = Env::IO_TOTAL) const { +16166: +16166: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +16166: (static_cast ( +16166: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: total_pending_requests != nullptr +16166: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: "total_pending_requests != nullptr" +16166: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 116 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: ; +16166: (void)total_pending_requests; +16166: (void)pri; +16166: return Status::NotSupported(); +16166: } +16166: +16166: virtual int64_t GetBytesPerSecond() const = 0; +16166: +16166: virtual bool IsRateLimited(OpType op_type) { +16166: if ((mode_ == RateLimiter::Mode::kWritesOnly && +16166: op_type == RateLimiter::OpType::kRead) || +16166: (mode_ == RateLimiter::Mode::kReadsOnly && +16166: op_type == RateLimiter::OpType::kWrite)) { +16166: return false; +16166: } +16166: return true; +16166: } +16166: +16166: protected: +16166: Mode GetMode() { return mode_; } +16166: +16166: private: +16166: const Mode mode_; +16166: }; +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/rate_limiter.h" +16166: RateLimiter* NewGenericRateLimiter( +16166: int64_t rate_bytes_per_sec, int64_t refill_period_us = 100 * 1000, +16166: int32_t fairness = 10, +16166: RateLimiter::Mode mode = RateLimiter::Mode::kWritesOnly, +16166: bool auto_tuned = false, int64_t single_burst_bytes = 0); +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 2 +16166: +16166: +16166: +16166: namespace rocksdb { +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: inline size_t TruncateToPageBoundary(size_t page_size, size_t s) { +16166: s -= (s & (page_size - 1)); +16166: +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: (s % page_size) == 0 +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "(s % page_size) == 0" +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: return s; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: inline size_t Roundup(size_t x, size_t y) { return ((x + y - 1) / y) * y; } +16166: +16166: +16166: +16166: +16166: +16166: inline size_t Rounddown(size_t x, size_t y) { return (x / y) * y; } +16166: # 57 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: class AlignedBuffer { +16166: size_t alignment_; +16166: FSAllocationPtr buf_; +16166: size_t capacity_; +16166: size_t cursize_; +16166: char* bufstart_; +16166: +16166: public: +16166: AlignedBuffer() +16166: : alignment_(), capacity_(0), cursize_(0), bufstart_(nullptr) {} +16166: +16166: AlignedBuffer(AlignedBuffer&& o) noexcept { *this = std::move(o); } +16166: +16166: AlignedBuffer& operator=(AlignedBuffer&& o) noexcept { +16166: alignment_ = std::move(o.alignment_); +16166: buf_ = std::move(o.buf_); +16166: capacity_ = std::move(o.capacity_); +16166: cursize_ = std::move(o.cursize_); +16166: bufstart_ = std::move(o.bufstart_); +16166: return *this; +16166: } +16166: +16166: AlignedBuffer(const AlignedBuffer&) = delete; +16166: +16166: AlignedBuffer& operator=(const AlignedBuffer&) = delete; +16166: +16166: static bool isAligned(const void* ptr, size_t alignment) { +16166: return reinterpret_cast(ptr) % alignment == 0; +16166: } +16166: +16166: static bool isAligned(size_t n, size_t alignment) { +16166: return n % alignment == 0; +16166: } +16166: +16166: size_t Alignment() const { return alignment_; } +16166: +16166: size_t Capacity() const { return capacity_; } +16166: +16166: size_t CurrentSize() const { return cursize_; } +16166: +16166: const char* BufferStart() const { return bufstart_; } +16166: +16166: char* BufferStart() { return bufstart_; } +16166: +16166: void Clear() { cursize_ = 0; } +16166: +16166: FSAllocationPtr Release() { +16166: cursize_ = 0; +16166: capacity_ = 0; +16166: bufstart_ = nullptr; +16166: return std::move(buf_); +16166: } +16166: +16166: void Alignment(size_t alignment) { +16166: +16166: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: alignment > 0 +16166: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "alignment > 0" +16166: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 111 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: (alignment & (alignment - 1)) == 0 +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "(alignment & (alignment - 1)) == 0" +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: alignment_ = alignment; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: void SetBuffer(Slice& result, FSAllocationPtr new_buf) { +16166: alignment_ = 1; +16166: capacity_ = result.size(); +16166: cursize_ = result.size(); +16166: buf_ = std::move(new_buf); +16166: +16166: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: buf_.get() != nullptr +16166: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "buf_.get() != nullptr" +16166: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 125 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: +16166: +16166: bufstart_ = const_cast(result.data()); +16166: } +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: void AllocateNewBuffer(size_t requested_capacity, bool copy_data = false, +16166: uint64_t copy_offset = 0, size_t copy_len = 0) { +16166: +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: alignment_ > 0 +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "alignment_ > 0" +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: +16166: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: (alignment_ & (alignment_ - 1)) == 0 +16166: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "(alignment_ & (alignment_ - 1)) == 0" +16166: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 149 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: +16166: copy_len = copy_len > 0 ? copy_len : cursize_; +16166: if (copy_data && requested_capacity < copy_len) { +16166: +16166: +16166: return; +16166: } +16166: +16166: size_t new_capacity = Roundup(requested_capacity, alignment_); +16166: char* new_buf = new char[new_capacity + alignment_]; +16166: char* new_bufstart = reinterpret_cast( +16166: (reinterpret_cast(new_buf) + (alignment_ - 1)) & +16166: ~static_cast(alignment_ - 1)); +16166: +16166: if (copy_data) { +16166: +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: bufstart_ + copy_offset + copy_len <= bufstart_ + cursize_ +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "bufstart_ + copy_offset + copy_len <= bufstart_ + cursize_" +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 165 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: memcpy(new_bufstart, bufstart_ + copy_offset, copy_len); +16166: cursize_ = copy_len; +16166: } else { +16166: cursize_ = 0; +16166: } +16166: +16166: bufstart_ = new_bufstart; +16166: capacity_ = new_capacity; +16166: +16166: +16166: buf_ = std::unique_ptr>( +16166: static_cast(new_buf), +16166: [](void* p) { delete[] static_cast(p); }); +16166: } +16166: # 189 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: size_t Append(const char* src, size_t append_size) { +16166: size_t buffer_remaining = capacity_ - cursize_; +16166: size_t to_copy = std::min(append_size, buffer_remaining); +16166: +16166: if (to_copy > 0) { +16166: memcpy(bufstart_ + cursize_, src, to_copy); +16166: cursize_ += to_copy; +16166: } +16166: return to_copy; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t Read(char* dest, size_t offset, size_t read_size) const { +16166: +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: offset < cursize_ +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "offset < cursize_" +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: +16166: size_t to_read = 0; +16166: if (offset < cursize_) { +16166: to_read = std::min(cursize_ - offset, read_size); +16166: } +16166: if (to_read > 0) { +16166: memcpy(dest, bufstart_ + offset, to_read); +16166: } +16166: return to_read; +16166: } +16166: +16166: +16166: void PadToAlignmentWith(int padding) { +16166: size_t total_size = Roundup(cursize_, alignment_); +16166: size_t pad_size = total_size - cursize_; +16166: +16166: if (pad_size > 0) { +16166: +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: (pad_size + cursize_) <= capacity_ +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "(pad_size + cursize_) <= capacity_" +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: memset(bufstart_ + cursize_, padding, pad_size); +16166: cursize_ += pad_size; +16166: } +16166: } +16166: +16166: void PadWith(size_t pad_size, int padding) { +16166: +16166: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: (static_cast ( +16166: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: (pad_size + cursize_) <= capacity_ +16166: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: "(pad_size + cursize_) <= capacity_" +16166: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 232 "/build/reproducible-path/rocksdb-9.10.0/util/aligned_buffer.h" +16166: ; +16166: memset(bufstart_ + cursize_, padding, pad_size); +16166: cursize_ += pad_size; +16166: } +16166: +16166: +16166: void RefitTail(size_t tail_offset, size_t tail_size) { +16166: if (tail_size > 0) { +16166: memmove(bufstart_, bufstart_ + tail_offset, tail_size); +16166: } +16166: cursize_ = tail_size; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: char* Destination() { return bufstart_ + cursize_; } +16166: +16166: void Size(size_t cursize) { cursize_ = cursize; } +16166: }; +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" 2 +16166: +16166: namespace rocksdb { +16166: class Statistics; +16166: class HistogramImpl; +16166: class SystemClock; +16166: +16166: using AlignedBuf = FSAllocationPtr; +16166: +16166: +16166: FSReadRequest Align(const FSReadRequest& r, size_t alignment); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool TryMerge(FSReadRequest* dest, const FSReadRequest& src); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class RandomAccessFileReader { +16166: private: +16166: void NotifyOnFileReadFinish( +16166: uint64_t offset, size_t length, +16166: const FileOperationInfo::StartTimePoint& start_ts, +16166: const FileOperationInfo::FinishTimePoint& finish_ts, +16166: const Status& status) const { +16166: FileOperationInfo info(FileOperationType::kRead, file_name_, start_ts, +16166: finish_ts, status, file_temperature_); +16166: info.offset = offset; +16166: info.length = length; +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnFileReadFinish(info); +16166: } +16166: info.status.PermitUncheckedError(); +16166: } +16166: +16166: void NotifyOnIOError(const IOStatus& io_status, FileOperationType operation, +16166: const std::string& file_path, size_t length, +16166: uint64_t offset) const { +16166: if (listeners_.empty()) { +16166: return; +16166: } +16166: IOErrorInfo io_error_info(io_status, operation, file_path, length, offset); +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnIOError(io_error_info); +16166: } +16166: io_status.PermitUncheckedError(); +16166: } +16166: +16166: +16166: bool ShouldNotifyListeners() const { return !listeners_.empty(); } +16166: +16166: FSRandomAccessFilePtr file_; +16166: std::string file_name_; +16166: SystemClock* clock_; +16166: Statistics* stats_; +16166: uint32_t hist_type_; +16166: HistogramImpl* file_read_hist_; +16166: RateLimiter* rate_limiter_; +16166: std::vector> listeners_; +16166: const Temperature file_temperature_; +16166: const bool is_last_level_; +16166: +16166: struct ReadAsyncInfo { +16166: ReadAsyncInfo(std::function cb, void* cb_arg, +16166: uint64_t start_time) +16166: : cb_(cb), +16166: cb_arg_(cb_arg), +16166: start_time_(start_time), +16166: user_scratch_(nullptr), +16166: user_aligned_buf_(nullptr), +16166: user_offset_(0), +16166: user_len_(0), +16166: is_aligned_(false) {} +16166: +16166: std::function cb_; +16166: void* cb_arg_; +16166: uint64_t start_time_; +16166: FileOperationInfo::StartTimePoint fs_start_ts_; +16166: +16166: char* user_scratch_; +16166: AlignedBuf* user_aligned_buf_; +16166: uint64_t user_offset_; +16166: size_t user_len_; +16166: Slice user_result_; +16166: +16166: AlignedBuffer buf_; +16166: bool is_aligned_; +16166: }; +16166: +16166: public: +16166: explicit RandomAccessFileReader( +16166: std::unique_ptr&& raf, const std::string& _file_name, +16166: SystemClock* clock = nullptr, +16166: const std::shared_ptr& io_tracer = nullptr, +16166: Statistics* stats = nullptr, +16166: uint32_t hist_type = Histograms::HISTOGRAM_ENUM_MAX, +16166: HistogramImpl* file_read_hist = nullptr, +16166: RateLimiter* rate_limiter = nullptr, +16166: const std::vector>& listeners = {}, +16166: Temperature file_temperature = Temperature::kUnknown, +16166: bool is_last_level = false) +16166: : file_(std::move(raf), io_tracer, _file_name), +16166: file_name_(std::move(_file_name)), +16166: clock_(clock), +16166: stats_(stats), +16166: hist_type_(hist_type), +16166: file_read_hist_(file_read_hist), +16166: rate_limiter_(rate_limiter), +16166: listeners_(), +16166: file_temperature_(file_temperature), +16166: is_last_level_(is_last_level) { +16166: std::for_each(listeners.begin(), listeners.end(), +16166: [this](const std::shared_ptr& e) { +16166: if (e->ShouldBeNotifiedOnFileIO()) { +16166: listeners_.emplace_back(e); +16166: } +16166: }); +16166: } +16166: +16166: static IOStatus Create(const std::shared_ptr& fs, +16166: const std::string& fname, const FileOptions& file_opts, +16166: std::unique_ptr* reader, +16166: IODebugContext* dbg); +16166: RandomAccessFileReader(const RandomAccessFileReader&) = delete; +16166: RandomAccessFileReader& operator=(const RandomAccessFileReader&) = delete; +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.h" +16166: IOStatus Read(const IOOptions& opts, uint64_t offset, size_t n, Slice* result, +16166: char* scratch, AlignedBuf* aligned_buf) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: IOStatus MultiRead(const IOOptions& opts, FSReadRequest* reqs, +16166: size_t num_reqs, AlignedBuf* aligned_buf) const; +16166: +16166: IOStatus Prefetch(const IOOptions& opts, uint64_t offset, size_t n) const { +16166: return file_->Prefetch(offset, n, opts, nullptr); +16166: } +16166: +16166: FSRandomAccessFile* file() { return file_.get(); } +16166: +16166: const std::string& file_name() const { return file_name_; } +16166: +16166: bool use_direct_io() const { return file_->use_direct_io(); } +16166: +16166: IOStatus PrepareIOOptions(const ReadOptions& ro, IOOptions& opts) const; +16166: +16166: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +16166: std::function cb, +16166: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +16166: AlignedBuf* aligned_buf); +16166: +16166: void ReadAsyncCallback(FSReadRequest& req, void* cb_arg); +16166: }; +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/file_util.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/filename.h" 1 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/file/filename.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/options/db_options.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: class SystemClock; +16166: +16166: struct ImmutableDBOptions { +16166: static const char* kName() { return "ImmutableDBOptions"; } +16166: ImmutableDBOptions(); +16166: explicit ImmutableDBOptions(const DBOptions& options); +16166: +16166: void Dump(Logger* log) const; +16166: +16166: bool create_if_missing; +16166: bool create_missing_column_families; +16166: bool error_if_exists; +16166: bool paranoid_checks; +16166: bool flush_verify_memtable_count; +16166: bool compaction_verify_record_count; +16166: bool track_and_verify_wals_in_manifest; +16166: bool verify_sst_unique_id_in_manifest; +16166: Env* env; +16166: std::shared_ptr rate_limiter; +16166: std::shared_ptr sst_file_manager; +16166: std::shared_ptr info_log; +16166: InfoLogLevel info_log_level; +16166: int max_file_opening_threads; +16166: std::shared_ptr statistics; +16166: bool use_fsync; +16166: std::vector db_paths; +16166: std::string db_log_dir; +16166: +16166: +16166: +16166: std::string wal_dir; +16166: size_t max_log_file_size; +16166: size_t log_file_time_to_roll; +16166: size_t keep_log_file_num; +16166: size_t recycle_log_file_num; +16166: uint64_t max_manifest_file_size; +16166: int table_cache_numshardbits; +16166: uint64_t WAL_ttl_seconds; +16166: uint64_t WAL_size_limit_MB; +16166: uint64_t max_write_batch_group_size_bytes; +16166: size_t manifest_preallocation_size; +16166: bool allow_mmap_reads; +16166: bool allow_mmap_writes; +16166: bool use_direct_reads; +16166: bool use_direct_io_for_flush_and_compaction; +16166: bool allow_fallocate; +16166: bool is_fd_close_on_exec; +16166: bool advise_random_on_open; +16166: size_t db_write_buffer_size; +16166: std::shared_ptr write_buffer_manager; +16166: size_t random_access_max_buffer_size; +16166: bool use_adaptive_mutex; +16166: std::vector> listeners; +16166: bool enable_thread_tracking; +16166: bool enable_pipelined_write; +16166: bool unordered_write; +16166: bool allow_concurrent_memtable_write; +16166: bool enable_write_thread_adaptive_yield; +16166: uint64_t write_thread_max_yield_usec; +16166: uint64_t write_thread_slow_yield_usec; +16166: bool skip_stats_update_on_db_open; +16166: bool skip_checking_sst_file_sizes_on_db_open; +16166: WALRecoveryMode wal_recovery_mode; +16166: bool allow_2pc; +16166: std::shared_ptr row_cache; +16166: WalFilter* wal_filter; +16166: bool fail_if_options_file_error; +16166: bool dump_malloc_stats; +16166: bool avoid_flush_during_recovery; +16166: bool allow_ingest_behind; +16166: bool two_write_queues; +16166: bool manual_wal_flush; +16166: CompressionType wal_compression; +16166: bool background_close_inactive_wals; +16166: bool atomic_flush; +16166: bool avoid_unnecessary_blocking_io; +16166: bool prefix_seek_opt_in_only; +16166: bool persist_stats_to_disk; +16166: bool write_dbid_to_manifest; +16166: bool write_identity_file; +16166: size_t log_readahead_size; +16166: std::shared_ptr file_checksum_gen_factory; +16166: bool best_efforts_recovery; +16166: int max_bgerror_resume_count; +16166: uint64_t bgerror_resume_retry_interval; +16166: bool allow_data_in_errors; +16166: std::string db_host_id; +16166: FileTypeSet checksum_handoff_file_types; +16166: CacheTier lowest_used_cache_tier; +16166: std::shared_ptr compaction_service; +16166: bool enforce_single_del_contracts; +16166: uint64_t follower_refresh_catchup_period_ms; +16166: uint64_t follower_catchup_retry_count; +16166: uint64_t follower_catchup_retry_wait_ms; +16166: Temperature metadata_write_temperature; +16166: Temperature wal_write_temperature; +16166: +16166: +16166: +16166: std::shared_ptr fs; +16166: SystemClock* clock; +16166: Statistics* stats; +16166: Logger* logger; +16166: +16166: +16166: bool IsWalDirSameAsDBPath() const; +16166: bool IsWalDirSameAsDBPath(const std::string& path) const; +16166: const std::string& GetWalDir() const; +16166: const std::string& GetWalDir(const std::string& path) const; +16166: }; +16166: +16166: struct MutableDBOptions { +16166: static const char* kName() { return "MutableDBOptions"; } +16166: MutableDBOptions(); +16166: explicit MutableDBOptions(const DBOptions& options); +16166: +16166: void Dump(Logger* log) const; +16166: +16166: int max_background_jobs; +16166: int max_background_compactions; +16166: uint32_t max_subcompactions; +16166: bool avoid_flush_during_shutdown; +16166: size_t writable_file_max_buffer_size; +16166: uint64_t delayed_write_rate; +16166: uint64_t max_total_wal_size; +16166: uint64_t delete_obsolete_files_period_micros; +16166: unsigned int stats_dump_period_sec; +16166: unsigned int stats_persist_period_sec; +16166: size_t stats_history_buffer_size; +16166: int max_open_files; +16166: uint64_t bytes_per_sync; +16166: uint64_t wal_bytes_per_sync; +16166: bool strict_bytes_per_sync; +16166: size_t compaction_readahead_size; +16166: int max_background_flushes; +16166: std::string daily_offpeak_time_utc; +16166: }; +16166: +16166: Status GetStringFromMutableDBOptions(const ConfigOptions& config_options, +16166: const MutableDBOptions& mutable_opts, +16166: std::string* opt_string); +16166: +16166: Status GetMutableDBOptionsFromStrings( +16166: const MutableDBOptions& base_options, +16166: const std::unordered_map& options_map, +16166: MutableDBOptions* new_options); +16166: +16166: bool MutableDBOptionsAreEqual(const MutableDBOptions& this_options, +16166: const MutableDBOptions& that_options); +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/file/filename.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Env; +16166: class Directory; +16166: class SystemClock; +16166: class WritableFileWriter; +16166: +16166: +16166: +16166: +16166: constexpr char kFilePathSeparator = '/'; +16166: +16166: +16166: +16166: +16166: +16166: std::string LogFileName(const std::string& dbname, uint64_t number); +16166: +16166: std::string LogFileName(uint64_t number); +16166: +16166: std::string BlobFileName(uint64_t number); +16166: +16166: std::string BlobFileName(const std::string& bdirname, uint64_t number); +16166: +16166: std::string BlobFileName(const std::string& dbname, const std::string& blob_dir, +16166: uint64_t number); +16166: +16166: std::string ArchivalDirectory(const std::string& dbname); +16166: +16166: +16166: +16166: std::string ArchivedLogFileName(const std::string& dbname, uint64_t num); +16166: +16166: std::string MakeTableFileName(const std::string& name, uint64_t number); +16166: +16166: std::string MakeTableFileName(uint64_t number); +16166: +16166: +16166: +16166: std::string Rocks2LevelTableFileName(const std::string& fullname); +16166: +16166: +16166: +16166: uint64_t TableFileNameToNumber(const std::string& name); +16166: +16166: +16166: +16166: +16166: std::string TableFileName(const std::vector& db_paths, uint64_t number, +16166: uint32_t path_id); +16166: +16166: +16166: const size_t kFormatFileNumberBufSize = 38; +16166: +16166: void FormatFileNumber(uint64_t number, uint32_t path_id, char* out_buf, +16166: size_t out_buf_size); +16166: +16166: +16166: +16166: +16166: std::string DescriptorFileName(const std::string& dbname, uint64_t number); +16166: +16166: std::string DescriptorFileName(uint64_t number); +16166: +16166: extern const std::string kCurrentFileName; +16166: +16166: +16166: +16166: +16166: std::string CurrentFileName(const std::string& dbname); +16166: +16166: +16166: +16166: std::string LockFileName(const std::string& dbname); +16166: +16166: +16166: +16166: std::string TempFileName(const std::string& dbname, uint64_t number); +16166: +16166: +16166: struct InfoLogPrefix { +16166: char buf[260]; +16166: Slice prefix; +16166: +16166: explicit InfoLogPrefix(bool has_log_dir, const std::string& db_absolute_path); +16166: +16166: explicit InfoLogPrefix(); +16166: }; +16166: +16166: +16166: std::string InfoLogFileName(const std::string& dbname, +16166: const std::string& db_path = "", +16166: const std::string& log_dir = ""); +16166: +16166: +16166: std::string OldInfoLogFileName(const std::string& dbname, uint64_t ts, +16166: const std::string& db_path = "", +16166: const std::string& log_dir = ""); +16166: +16166: extern const std::string kOptionsFileNamePrefix; +16166: extern const std::string kTempFileNameSuffix; +16166: +16166: +16166: +16166: std::string OptionsFileName(const std::string& dbname, uint64_t file_num); +16166: std::string OptionsFileName(uint64_t file_num); +16166: +16166: +16166: +16166: std::string TempOptionsFileName(const std::string& dbname, uint64_t file_num); +16166: +16166: +16166: +16166: std::string MetaDatabaseName(const std::string& dbname, uint64_t number); +16166: +16166: +16166: +16166: +16166: std::string IdentityFileName(const std::string& dbname); +16166: +16166: +16166: +16166: +16166: +16166: bool ParseFileName(const std::string& filename, uint64_t* number, +16166: const Slice& info_log_name_prefix, FileType* type, +16166: WalFileType* log_type = nullptr); +16166: +16166: bool ParseFileName(const std::string& filename, uint64_t* number, +16166: FileType* type, WalFileType* log_type = nullptr); +16166: +16166: +16166: +16166: +16166: +16166: IOStatus SetCurrentFile(const WriteOptions& write_options, FileSystem* fs, +16166: const std::string& dbname, uint64_t descriptor_number, +16166: Temperature temp, +16166: FSDirectory* dir_contains_current_file); +16166: +16166: +16166: Status SetIdentityFile(const WriteOptions& write_options, Env* env, +16166: const std::string& dbname, Temperature temp, +16166: const std::string& db_id = {}); +16166: +16166: +16166: IOStatus SyncManifest(const ImmutableDBOptions* db_options, +16166: const WriteOptions& write_options, +16166: WritableFileWriter* file); +16166: +16166: +16166: +16166: +16166: +16166: Status GetInfoLogFiles(const std::shared_ptr& fs, +16166: const std::string& db_log_dir, const std::string& dbname, +16166: std::string* parent_dir, +16166: std::vector* file_names); +16166: +16166: std::string NormalizePath(const std::string& path); +16166: } +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/file_util.h" 2 +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/file/file_util.h" +16166: namespace rocksdb { +16166: +16166: +16166: IOStatus CopyFile(FileSystem* fs, const std::string& source, +16166: Temperature src_temp_hint, +16166: std::unique_ptr& dest_writer, +16166: uint64_t size, bool use_fsync, +16166: const std::shared_ptr& io_tracer); +16166: IOStatus CopyFile(FileSystem* fs, const std::string& source, +16166: Temperature src_temp_hint, const std::string& destination, +16166: Temperature dst_temp, uint64_t size, bool use_fsync, +16166: const std::shared_ptr& io_tracer); +16166: inline IOStatus CopyFile(const std::shared_ptr& fs, +16166: const std::string& source, Temperature src_temp_hint, +16166: const std::string& destination, Temperature dst_temp, +16166: uint64_t size, bool use_fsync, +16166: const std::shared_ptr& io_tracer) { +16166: return CopyFile(fs.get(), source, src_temp_hint, destination, dst_temp, size, +16166: use_fsync, io_tracer); +16166: } +16166: IOStatus CreateFile(FileSystem* fs, const std::string& destination, +16166: const std::string& contents, bool use_fsync); +16166: +16166: inline IOStatus CreateFile(const std::shared_ptr& fs, +16166: const std::string& destination, +16166: const std::string& contents, bool use_fsync) { +16166: return CreateFile(fs.get(), destination, contents, use_fsync); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status DeleteDBFile(const ImmutableDBOptions* db_options, +16166: const std::string& fname, const std::string& path_to_sync, +16166: const bool force_bg, const bool force_fg); +16166: +16166: +16166: +16166: +16166: +16166: Status DeleteUnaccountedDBFile(const ImmutableDBOptions* db_options, +16166: const std::string& fname, +16166: const std::string& dir_to_sync, +16166: const bool force_bg, const bool force_fg, +16166: std::optional bucket); +16166: +16166: +16166: IOStatus GenerateOneFileChecksum( +16166: FileSystem* fs, const std::string& file_path, +16166: FileChecksumGenFactory* checksum_factory, +16166: const std::string& requested_checksum_func_name, std::string* file_checksum, +16166: std::string* file_checksum_func_name, +16166: size_t verify_checksums_readahead_size, bool allow_mmap_reads, +16166: std::shared_ptr& io_tracer, RateLimiter* rate_limiter, +16166: const ReadOptions& read_options, Statistics* stats, SystemClock* clock); +16166: +16166: inline IOStatus PrepareIOFromReadOptions(const ReadOptions& ro, +16166: SystemClock* clock, IOOptions& opts) { +16166: if (ro.deadline.count()) { +16166: std::chrono::microseconds now = +16166: std::chrono::microseconds(clock->NowMicros()); +16166: +16166: +16166: if (now >= ro.deadline) { +16166: return IOStatus::TimedOut("Deadline exceeded"); +16166: } +16166: opts.timeout = ro.deadline - now; +16166: } +16166: +16166: if (ro.io_timeout.count() && +16166: (!opts.timeout.count() || ro.io_timeout < opts.timeout)) { +16166: opts.timeout = ro.io_timeout; +16166: } +16166: +16166: opts.rate_limiter_priority = ro.rate_limiter_priority; +16166: opts.io_activity = ro.io_activity; +16166: +16166: return IOStatus::OK(); +16166: } +16166: +16166: inline IOStatus PrepareIOFromWriteOptions(const WriteOptions& wo, +16166: IOOptions& opts) { +16166: opts.rate_limiter_priority = wo.rate_limiter_priority; +16166: opts.io_activity = wo.io_activity; +16166: +16166: return IOStatus::OK(); +16166: } +16166: +16166: +16166: +16166: Status DestroyDir(Env* env, const std::string& dir); +16166: +16166: inline bool CheckFSFeatureSupport(FileSystem* fs, FSSupportedOps feat) { +16166: int64_t supported_ops = 0; +16166: fs->SupportedOps(supported_ops); +16166: if (supported_ops & (1ULL << feat)) { +16166: return true; +16166: } +16166: return false; +16166: } +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 2 +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: namespace rocksdb { +16166: # 39 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: template +16166: class autovector { +16166: public: +16166: +16166: using value_type = T; +16166: using difference_type = typename std::vector::difference_type; +16166: using size_type = typename std::vector::size_type; +16166: using reference = value_type&; +16166: using const_reference = const value_type&; +16166: using pointer = value_type*; +16166: using const_pointer = const value_type*; +16166: +16166: +16166: template +16166: class iterator_impl { +16166: public: +16166: +16166: using self_type = iterator_impl; +16166: using value_type = TValueType; +16166: using reference = TValueType&; +16166: using pointer = TValueType*; +16166: using difference_type = typename TAutoVector::difference_type; +16166: using iterator_category = std::random_access_iterator_tag; +16166: +16166: iterator_impl(TAutoVector* vect, size_t index) +16166: : vect_(vect), index_(index){} +16166: iterator_impl(const iterator_impl&) = default; +16166: ~iterator_impl() {} +16166: iterator_impl& operator=(const iterator_impl&) = default; +16166: +16166: +16166: +16166: self_type& operator++() { +16166: ++index_; +16166: return *this; +16166: } +16166: +16166: +16166: self_type operator++(int) { +16166: auto old = *this; +16166: ++index_; +16166: return old; +16166: } +16166: +16166: +16166: self_type& operator--() { +16166: --index_; +16166: return *this; +16166: } +16166: +16166: +16166: self_type operator--(int) { +16166: auto old = *this; +16166: --index_; +16166: return old; +16166: } +16166: +16166: self_type operator-(difference_type len) const { +16166: return self_type(vect_, index_ - len); +16166: } +16166: +16166: difference_type operator-(const self_type& other) const { +16166: +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_ == other.vect_ +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_ == other.vect_" +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return index_ - other.index_; +16166: } +16166: +16166: self_type operator+(difference_type len) const { +16166: return self_type(vect_, index_ + len); +16166: } +16166: +16166: self_type& operator+=(difference_type len) { +16166: index_ += len; +16166: return *this; +16166: } +16166: +16166: self_type& operator-=(difference_type len) { +16166: index_ -= len; +16166: return *this; +16166: } +16166: +16166: +16166: reference operator*() const { +16166: +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_->size() >= index_ +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_->size() >= index_" +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return (*vect_)[index_]; +16166: } +16166: +16166: pointer operator->() const { +16166: +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_->size() >= index_ +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_->size() >= index_" +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return &(*vect_)[index_]; +16166: } +16166: +16166: reference operator[](difference_type len) const { return *(*this + len); } +16166: +16166: +16166: bool operator==(const self_type& other) const { +16166: +16166: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_ == other.vect_ +16166: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_ == other.vect_" +16166: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 134 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return index_ == other.index_; +16166: } +16166: +16166: bool operator!=(const self_type& other) const { return !(*this == other); } +16166: +16166: bool operator>(const self_type& other) const { +16166: +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_ == other.vect_ +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_ == other.vect_" +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return index_ > other.index_; +16166: } +16166: +16166: bool operator<(const self_type& other) const { +16166: +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_ == other.vect_ +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_ == other.vect_" +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return index_ < other.index_; +16166: } +16166: +16166: bool operator>=(const self_type& other) const { +16166: +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_ == other.vect_ +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_ == other.vect_" +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return index_ >= other.index_; +16166: } +16166: +16166: bool operator<=(const self_type& other) const { +16166: +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: vect_ == other.vect_ +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "vect_ == other.vect_" +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return index_ <= other.index_; +16166: } +16166: +16166: private: +16166: TAutoVector* vect_ = nullptr; +16166: size_t index_ = 0; +16166: }; +16166: +16166: using iterator = iterator_impl; +16166: using const_iterator = iterator_impl; +16166: using reverse_iterator = std::reverse_iterator; +16166: using const_reverse_iterator = std::reverse_iterator; +16166: +16166: autovector() : values_(reinterpret_cast(buf_)) {} +16166: +16166: autovector(std::initializer_list init_list) +16166: : values_(reinterpret_cast(buf_)) { +16166: for (const T& item : init_list) { +16166: push_back(item); +16166: } +16166: } +16166: +16166: ~autovector() { clear(); } +16166: +16166: +16166: +16166: bool only_in_stack() const { +16166: +16166: return vect_.capacity() == 0; +16166: } +16166: +16166: size_type size() const { return num_stack_items_ + vect_.size(); } +16166: +16166: +16166: +16166: void resize(size_type n) { +16166: if (n > kSize) { +16166: vect_.resize(n - kSize); +16166: while (num_stack_items_ < kSize) { +16166: new ((void*)(&values_[num_stack_items_++])) value_type(); +16166: } +16166: num_stack_items_ = kSize; +16166: } else { +16166: vect_.clear(); +16166: while (num_stack_items_ < n) { +16166: new ((void*)(&values_[num_stack_items_++])) value_type(); +16166: } +16166: while (num_stack_items_ > n) { +16166: values_[--num_stack_items_].~value_type(); +16166: } +16166: } +16166: } +16166: +16166: bool empty() const { return size() == 0; } +16166: +16166: size_type capacity() const { return kSize + vect_.capacity(); } +16166: +16166: void reserve(size_t cap) { +16166: if (cap > kSize) { +16166: vect_.reserve(cap - kSize); +16166: } +16166: +16166: +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: cap <= capacity() +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "cap <= capacity()" +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 219 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: } +16166: +16166: const_reference operator[](size_type n) const { +16166: +16166: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: n < size() +16166: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "n < size()" +16166: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 223 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: if (n < kSize) { +16166: return values_[n]; +16166: } +16166: return vect_[n - kSize]; +16166: } +16166: +16166: reference operator[](size_type n) { +16166: +16166: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: n < size() +16166: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "n < size()" +16166: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 231 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: if (n < kSize) { +16166: return values_[n]; +16166: } +16166: return vect_[n - kSize]; +16166: } +16166: +16166: const_reference at(size_type n) const { +16166: +16166: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: n < size() +16166: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "n < size()" +16166: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 239 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return (*this)[n]; +16166: } +16166: +16166: reference at(size_type n) { +16166: +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: n < size() +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "n < size()" +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return (*this)[n]; +16166: } +16166: +16166: reference front() { +16166: +16166: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: !empty() +16166: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "!empty()" +16166: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 249 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return *begin(); +16166: } +16166: +16166: const_reference front() const { +16166: +16166: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: !empty() +16166: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "!empty()" +16166: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return *begin(); +16166: } +16166: +16166: reference back() { +16166: +16166: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: !empty() +16166: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "!empty()" +16166: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 259 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return *(end() - 1); +16166: } +16166: +16166: const_reference back() const { +16166: +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: !empty() +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "!empty()" +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: return *(end() - 1); +16166: } +16166: +16166: +16166: void push_back(T&& item) { +16166: if (num_stack_items_ < kSize) { +16166: new ((void*)(&values_[num_stack_items_])) value_type(); +16166: values_[num_stack_items_++] = std::move(item); +16166: } else { +16166: vect_.push_back(item); +16166: } +16166: } +16166: +16166: void push_back(const T& item) { +16166: if (num_stack_items_ < kSize) { +16166: new ((void*)(&values_[num_stack_items_])) value_type(); +16166: values_[num_stack_items_++] = item; +16166: } else { +16166: vect_.push_back(item); +16166: } +16166: } +16166: +16166: template +16166: # 298 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: void emplace_back(Args&&... args) { +16166: if (num_stack_items_ < kSize) { +16166: new ((void*)(&values_[num_stack_items_++])) +16166: value_type(std::forward(args)...); +16166: } else { +16166: vect_.emplace_back(std::forward(args)...); +16166: } +16166: } +16166: +16166: +16166: void pop_back() { +16166: +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: (static_cast ( +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: !empty() +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: "!empty()" +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/util/autovector.h" +16166: ; +16166: if (!vect_.empty()) { +16166: vect_.pop_back(); +16166: } else { +16166: values_[--num_stack_items_].~value_type(); +16166: } +16166: } +16166: +16166: void clear() { +16166: while (num_stack_items_ > 0) { +16166: values_[--num_stack_items_].~value_type(); +16166: } +16166: vect_.clear(); +16166: } +16166: +16166: +16166: autovector& assign(const autovector& other); +16166: +16166: autovector(const autovector& other) { assign(other); } +16166: +16166: autovector& operator=(const autovector& other) { return assign(other); } +16166: +16166: autovector(autovector&& other) noexcept { *this = std::move(other); } +16166: autovector& operator=(autovector&& other); +16166: +16166: +16166: iterator begin() { return iterator(this, 0); } +16166: +16166: const_iterator begin() const { return const_iterator(this, 0); } +16166: +16166: iterator end() { return iterator(this, this->size()); } +16166: +16166: const_iterator end() const { return const_iterator(this, this->size()); } +16166: +16166: reverse_iterator rbegin() { return reverse_iterator(end()); } +16166: +16166: const_reverse_iterator rbegin() const { +16166: return const_reverse_iterator(end()); +16166: } +16166: +16166: reverse_iterator rend() { return reverse_iterator(begin()); } +16166: +16166: const_reverse_iterator rend() const { +16166: return const_reverse_iterator(begin()); +16166: } +16166: +16166: private: +16166: size_type num_stack_items_ = 0; +16166: alignas(alignof( +16166: value_type)) char buf_[kSize * +16166: sizeof(value_type)]; +16166: pointer values_; +16166: +16166: std::vector vect_; +16166: }; +16166: +16166: template +16166: autovector& autovector::assign( +16166: const autovector& other) { +16166: values_ = reinterpret_cast(buf_); +16166: +16166: vect_.assign(other.vect_.begin(), other.vect_.end()); +16166: +16166: +16166: num_stack_items_ = other.num_stack_items_; +16166: for (size_t i = 0; i < num_stack_items_; ++i) { +16166: new ((void*)(&values_[i])) value_type(); +16166: } +16166: std::copy(other.values_, other.values_ + num_stack_items_, values_); +16166: +16166: return *this; +16166: } +16166: +16166: template +16166: autovector& autovector::operator=( +16166: autovector&& other) { +16166: values_ = reinterpret_cast(buf_); +16166: vect_ = std::move(other.vect_); +16166: size_t n = other.num_stack_items_; +16166: num_stack_items_ = n; +16166: other.num_stack_items_ = 0; +16166: for (size_t i = 0; i < n; ++i) { +16166: new ((void*)(&values_[i])) value_type(); +16166: values_[i] = std::move(other.values_[i]); +16166: } +16166: return *this; +16166: } +16166: +16166: } +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: struct IOOptions; +16166: class RandomAccessFileReader; +16166: +16166: struct ReadaheadParams { +16166: ReadaheadParams() {} +16166: +16166: +16166: size_t initial_readahead_size = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t max_readahead_size = 0; +16166: +16166: +16166: +16166: bool implicit_auto_readahead = false; +16166: +16166: +16166: uint64_t num_file_reads = 0; +16166: uint64_t num_file_reads_for_auto_readahead = 0; +16166: +16166: +16166: +16166: size_t num_buffers = 1; +16166: }; +16166: +16166: struct BufferInfo { +16166: void ClearBuffer() { +16166: buffer_.Clear(); +16166: initial_end_offset_ = 0; +16166: async_req_len_ = 0; +16166: } +16166: +16166: AlignedBuffer buffer_; +16166: +16166: uint64_t offset_ = 0; +16166: +16166: +16166: +16166: size_t async_req_len_ = 0; +16166: +16166: +16166: +16166: bool async_read_in_progress_ = false; +16166: +16166: +16166: +16166: void* io_handle_ = nullptr; +16166: +16166: IOHandleDeleter del_fn_ = nullptr; +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: uint64_t initial_end_offset_ = 0; +16166: +16166: bool IsDataBlockInBuffer(uint64_t offset, size_t length) { +16166: +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: (static_cast ( +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: async_read_in_progress_ == false +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: "async_read_in_progress_ == false" +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: ; +16166: return (offset >= offset_ && +16166: offset + length <= offset_ + buffer_.CurrentSize()); +16166: } +16166: +16166: bool IsOffsetInBuffer(uint64_t offset) { +16166: +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: (static_cast ( +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: async_read_in_progress_ == false +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: "async_read_in_progress_ == false" +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 107 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: ; +16166: return (offset >= offset_ && offset < offset_ + buffer_.CurrentSize()); +16166: } +16166: +16166: bool DoesBufferContainData() { +16166: +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: (static_cast ( +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: async_read_in_progress_ == false +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: "async_read_in_progress_ == false" +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 112 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: ; +16166: return buffer_.CurrentSize() > 0; +16166: } +16166: +16166: bool IsBufferOutdated(uint64_t offset) { +16166: return (!async_read_in_progress_ && DoesBufferContainData() && +16166: offset >= offset_ + buffer_.CurrentSize()); +16166: } +16166: +16166: bool IsBufferOutdatedWithAsyncProgress(uint64_t offset) { +16166: return (async_read_in_progress_ && io_handle_ != nullptr && +16166: offset >= offset_ + async_req_len_); +16166: } +16166: +16166: bool IsOffsetInBufferWithAsyncProgress(uint64_t offset) { +16166: return (async_read_in_progress_ && offset >= offset_ && +16166: offset < offset_ + async_req_len_); +16166: } +16166: +16166: size_t CurrentSize() { return buffer_.CurrentSize(); } +16166: }; +16166: +16166: enum class FilePrefetchBufferUsage { +16166: kTableOpenPrefetchTail, +16166: kUserScanPrefetch, +16166: kUnknown, +16166: }; +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: class FilePrefetchBuffer { +16166: public: +16166: # 186 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: FilePrefetchBuffer( +16166: const ReadaheadParams& readahead_params = {}, bool enable = true, +16166: bool track_min_offset = false, FileSystem* fs = nullptr, +16166: SystemClock* clock = nullptr, Statistics* stats = nullptr, +16166: const std::function& cb = nullptr, +16166: FilePrefetchBufferUsage usage = FilePrefetchBufferUsage::kUnknown) +16166: : readahead_size_(readahead_params.initial_readahead_size), +16166: initial_auto_readahead_size_(readahead_params.initial_readahead_size), +16166: max_readahead_size_(readahead_params.max_readahead_size), +16166: min_offset_read_(std::numeric_limits::max()), +16166: enable_(enable), +16166: track_min_offset_(track_min_offset), +16166: implicit_auto_readahead_(readahead_params.implicit_auto_readahead), +16166: prev_offset_(0), +16166: prev_len_(0), +16166: num_file_reads_for_auto_readahead_( +16166: readahead_params.num_file_reads_for_auto_readahead), +16166: num_file_reads_(readahead_params.num_file_reads), +16166: explicit_prefetch_submitted_(false), +16166: fs_(fs), +16166: clock_(clock), +16166: stats_(stats), +16166: usage_(usage), +16166: readaheadsize_cb_(cb), +16166: num_buffers_(readahead_params.num_buffers) { +16166: +16166: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: (static_cast ( +16166: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: (num_file_reads_ >= num_file_reads_for_auto_readahead_ + 1) || (num_file_reads_ == 0) +16166: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: "(num_file_reads_ >= num_file_reads_for_auto_readahead_ + 1) || (num_file_reads_ == 0)" +16166: # 211 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: +16166: # 212 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: if (num_buffers_ > 1 || +16166: (fs_ != nullptr && +16166: CheckFSFeatureSupport(fs_, FSSupportedOps::kFSBuffer))) { +16166: overlap_buf_ = new BufferInfo(); +16166: } +16166: +16166: free_bufs_.resize(num_buffers_); +16166: for (uint32_t i = 0; i < num_buffers_; i++) { +16166: free_bufs_[i] = new BufferInfo(); +16166: } +16166: } +16166: +16166: ~FilePrefetchBuffer() { +16166: +16166: if (fs_ != nullptr) { +16166: std::vector handles; +16166: for (auto& buf : bufs_) { +16166: if (buf->async_read_in_progress_ && buf->io_handle_ != nullptr) { +16166: handles.emplace_back(buf->io_handle_); +16166: } +16166: } +16166: if (!handles.empty()) { +16166: StopWatch sw(clock_, stats_, ASYNC_PREFETCH_ABORT_MICROS); +16166: Status s = fs_->AbortIO(handles); +16166: +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: (static_cast ( +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: s.ok() +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: "s.ok()" +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 244 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: ; +16166: } +16166: +16166: for (auto& buf : bufs_) { +16166: if (buf->io_handle_ != nullptr) { +16166: DestroyAndClearIOHandle(buf); +16166: buf->ClearBuffer(); +16166: } +16166: buf->async_read_in_progress_ = false; +16166: } +16166: } +16166: +16166: +16166: uint64_t bytes_discarded = 0; +16166: +16166: for (auto& buf : bufs_) { +16166: if (buf->DoesBufferContainData()) { +16166: +16166: if (prev_offset_ >= buf->offset_ && +16166: prev_offset_ + prev_len_ < buf->offset_ + buf->CurrentSize()) { +16166: bytes_discarded += +16166: buf->CurrentSize() - (prev_offset_ + prev_len_ - buf->offset_); +16166: } +16166: +16166: else if (prev_offset_ < buf->offset_ && +16166: prev_offset_ + prev_len_ <= buf->offset_) { +16166: bytes_discarded += buf->CurrentSize(); +16166: } +16166: } +16166: } +16166: +16166: RecordInHistogram(stats_, PREFETCHED_BYTES_DISCARDED, bytes_discarded); +16166: +16166: for (auto& buf : bufs_) { +16166: delete buf; +16166: buf = nullptr; +16166: } +16166: +16166: for (auto& buf : free_bufs_) { +16166: delete buf; +16166: buf = nullptr; +16166: } +16166: +16166: if (overlap_buf_ != nullptr) { +16166: delete overlap_buf_; +16166: overlap_buf_ = nullptr; +16166: } +16166: } +16166: +16166: bool Enabled() const { return enable_; } +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: Status Prefetch(const IOOptions& opts, RandomAccessFileReader* reader, +16166: uint64_t offset, size_t n); +16166: # 316 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: Status PrefetchAsync(const IOOptions& opts, RandomAccessFileReader* reader, +16166: uint64_t offset, size_t n, Slice* result); +16166: # 332 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: bool TryReadFromCache(const IOOptions& opts, RandomAccessFileReader* reader, +16166: uint64_t offset, size_t n, Slice* result, Status* s, +16166: bool for_compaction = false); +16166: +16166: +16166: +16166: size_t min_offset_read() const { return min_offset_read_; } +16166: +16166: size_t GetPrefetchOffset() const { return bufs_.front()->offset_; } +16166: +16166: +16166: void UpdateReadPattern(const uint64_t& offset, const size_t& len, +16166: bool decrease_readaheadsize) { +16166: if (decrease_readaheadsize) { +16166: DecreaseReadAheadIfEligible(offset, len); +16166: } +16166: prev_offset_ = offset; +16166: prev_len_ = len; +16166: explicit_prefetch_submitted_ = false; +16166: } +16166: +16166: void GetReadaheadState(ReadaheadFileInfo::ReadaheadInfo* readahead_info) { +16166: readahead_info->readahead_size = readahead_size_; +16166: readahead_info->num_file_reads = num_file_reads_; +16166: } +16166: +16166: void DecreaseReadAheadIfEligible(uint64_t offset, size_t size, +16166: size_t value = 8 * 1024) { +16166: if (bufs_.empty()) { +16166: return; +16166: } +16166: # 374 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: size_t curr_size = bufs_.front()->async_read_in_progress_ +16166: ? bufs_.front()->async_req_len_ +16166: : bufs_.front()->CurrentSize(); +16166: if (implicit_auto_readahead_ && readahead_size_ > 0) { +16166: if ((offset + size > bufs_.front()->offset_ + curr_size) && +16166: IsBlockSequential(offset) && +16166: (num_file_reads_ + 1 > num_file_reads_for_auto_readahead_)) { +16166: readahead_size_ = +16166: std::max(initial_auto_readahead_size_, +16166: (readahead_size_ >= value ? readahead_size_ - value : 0)); +16166: } +16166: } +16166: } +16166: +16166: +16166: void PrefetchAsyncCallback(FSReadRequest& req, void* cb_arg); +16166: +16166: void TEST_GetBufferOffsetandSize( +16166: std::vector>& buffer_info) { +16166: for (size_t i = 0; i < bufs_.size(); i++) { +16166: std::get<0>(buffer_info[i]) = bufs_[i]->offset_; +16166: std::get<1>(buffer_info[i]) = bufs_[i]->async_read_in_progress_ +16166: ? bufs_[i]->async_req_len_ +16166: : bufs_[i]->CurrentSize(); +16166: std::get<2>(buffer_info[i]) = bufs_[i]->async_read_in_progress_; +16166: } +16166: } +16166: +16166: void TEST_GetOverlapBufferOffsetandSize( +16166: std::pair& buffer_info) { +16166: if (overlap_buf_ != nullptr) { +16166: buffer_info.first = overlap_buf_->offset_; +16166: buffer_info.second = overlap_buf_->CurrentSize(); +16166: } +16166: } +16166: +16166: private: +16166: +16166: +16166: +16166: void PrepareBufferForRead(BufferInfo* buf, size_t alignment, uint64_t offset, +16166: size_t roundup_len, bool refit_tail, +16166: bool use_fs_buffer, uint64_t& aligned_useful_len); +16166: +16166: void AbortOutdatedIO(uint64_t offset); +16166: +16166: void AbortAllIOs(); +16166: +16166: void ClearOutdatedData(uint64_t offset, size_t len); +16166: +16166: +16166: void PollIfNeeded(uint64_t offset, size_t len); +16166: +16166: Status PrefetchInternal(const IOOptions& opts, RandomAccessFileReader* reader, +16166: uint64_t offset, size_t length, size_t readahead_size, +16166: bool& copy_to_third_buffer); +16166: +16166: Status Read(BufferInfo* buf, const IOOptions& opts, +16166: RandomAccessFileReader* reader, uint64_t read_len, +16166: uint64_t aligned_useful_len, uint64_t start_offset, +16166: bool use_fs_buffer); +16166: +16166: Status ReadAsync(BufferInfo* buf, const IOOptions& opts, +16166: RandomAccessFileReader* reader, uint64_t read_len, +16166: uint64_t start_offset); +16166: +16166: +16166: void CopyDataToOverlapBuffer(BufferInfo* src, uint64_t& offset, +16166: size_t& length); +16166: +16166: bool IsBlockSequential(const size_t& offset) { +16166: return (prev_len_ == 0 || (prev_offset_ + prev_len_ == offset)); +16166: } +16166: +16166: +16166: void ResetValues() { +16166: num_file_reads_ = 1; +16166: readahead_size_ = initial_auto_readahead_size_; +16166: } +16166: +16166: +16166: bool IsEligibleForPrefetch(uint64_t offset, size_t n) { +16166: +16166: +16166: if (!IsBlockSequential(offset)) { +16166: UpdateReadPattern(offset, n, false ); +16166: ResetValues(); +16166: return false; +16166: } +16166: num_file_reads_++; +16166: +16166: +16166: +16166: +16166: if (explicit_prefetch_submitted_) { +16166: return true; +16166: } +16166: if (num_file_reads_ <= num_file_reads_for_auto_readahead_) { +16166: UpdateReadPattern(offset, n, false ); +16166: return false; +16166: } +16166: return true; +16166: } +16166: +16166: bool IsEligibleForFurtherPrefetching() { +16166: if (free_bufs_.empty()) { +16166: return false; +16166: } +16166: +16166: if (readahead_size_ == 0) { +16166: return false; +16166: } +16166: return true; +16166: } +16166: +16166: +16166: +16166: +16166: bool UseFSBuffer(RandomAccessFileReader* reader) { +16166: return reader->file() != nullptr && !reader->use_direct_io() && +16166: fs_ != nullptr && +16166: CheckFSFeatureSupport(fs_, FSSupportedOps::kFSBuffer) && +16166: num_buffers_ == 1; +16166: } +16166: +16166: +16166: +16166: +16166: size_t GetRequiredBufferAlignment(RandomAccessFileReader* reader) { +16166: if (UseFSBuffer(reader)) { +16166: return 1; +16166: } +16166: return reader->file()->GetRequiredBufferAlignment(); +16166: } +16166: +16166: +16166: IOStatus FSBufferDirectRead(RandomAccessFileReader* reader, BufferInfo* buf, +16166: const IOOptions& opts, uint64_t offset, size_t n, +16166: Slice& result) { +16166: FSReadRequest read_req; +16166: read_req.offset = offset; +16166: read_req.len = n; +16166: read_req.scratch = nullptr; +16166: IOStatus s = reader->MultiRead(opts, &read_req, 1, nullptr); +16166: if (!s.ok()) { +16166: return s; +16166: } +16166: s = read_req.status; +16166: if (!s.ok()) { +16166: return s; +16166: } +16166: buf->buffer_.SetBuffer(read_req.result, std::move(read_req.fs_scratch)); +16166: buf->offset_ = offset; +16166: buf->initial_end_offset_ = offset + read_req.result.size(); +16166: result = read_req.result; +16166: return s; +16166: } +16166: +16166: void DestroyAndClearIOHandle(BufferInfo* buf) { +16166: if (buf->io_handle_ != nullptr && buf->del_fn_ != nullptr) { +16166: buf->del_fn_(buf->io_handle_); +16166: buf->io_handle_ = nullptr; +16166: buf->del_fn_ = nullptr; +16166: } +16166: buf->async_read_in_progress_ = false; +16166: } +16166: +16166: void HandleOverlappingSyncData(uint64_t offset, size_t length, +16166: uint64_t& tmp_offset, size_t& tmp_length, +16166: bool& use_overlap_buffer); +16166: +16166: Status HandleOverlappingAsyncData(const IOOptions& opts, +16166: RandomAccessFileReader* reader, +16166: uint64_t offset, size_t length, +16166: size_t readahead_size, +16166: bool& copy_to_third_buffer, +16166: uint64_t& tmp_offset, size_t& tmp_length); +16166: +16166: bool TryReadFromCacheUntracked(const IOOptions& opts, +16166: RandomAccessFileReader* reader, +16166: uint64_t offset, size_t n, Slice* result, +16166: Status* s, bool for_compaction = false); +16166: +16166: void ReadAheadSizeTuning(BufferInfo* buf, bool read_curr_block, +16166: bool refit_tail, bool use_fs_buffer, +16166: uint64_t prev_buf_end_offset, size_t alignment, +16166: size_t length, size_t readahead_size, +16166: uint64_t& offset, uint64_t& end_offset, +16166: size_t& read_len, uint64_t& aligned_useful_len); +16166: +16166: void UpdateStats(bool found_in_buffer, size_t length_found) { +16166: if (found_in_buffer) { +16166: RecordTick(stats_, PREFETCH_HITS); +16166: } +16166: if (length_found > 0) { +16166: RecordTick(stats_, PREFETCH_BYTES_USEFUL, length_found); +16166: } +16166: } +16166: +16166: void UpdateReadAheadTrimmedStat(size_t initial_length, +16166: size_t updated_length) { +16166: if (initial_length != updated_length) { +16166: RecordTick(stats_, READAHEAD_TRIMMED); +16166: } +16166: } +16166: +16166: Status PrefetchRemBuffers(const IOOptions& opts, +16166: RandomAccessFileReader* reader, +16166: uint64_t end_offset1, size_t alignment, +16166: size_t readahead_size); +16166: +16166: +16166: bool IsBufferQueueEmpty() { return bufs_.empty(); } +16166: +16166: BufferInfo* GetFirstBuffer() { return bufs_.front(); } +16166: +16166: BufferInfo* GetLastBuffer() { return bufs_.back(); } +16166: +16166: size_t NumBuffersAllocated() { return bufs_.size(); } +16166: +16166: void AllocateBuffer() { +16166: +16166: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: (static_cast ( +16166: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: !free_bufs_.empty() +16166: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: "!free_bufs_.empty()" +16166: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 595 "/build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.h" +16166: ; +16166: BufferInfo* buf = free_bufs_.front(); +16166: free_bufs_.pop_front(); +16166: bufs_.emplace_back(buf); +16166: } +16166: +16166: void AllocateBufferIfEmpty() { +16166: if (bufs_.empty()) { +16166: AllocateBuffer(); +16166: } +16166: } +16166: +16166: void FreeFrontBuffer() { +16166: BufferInfo* buf = bufs_.front(); +16166: buf->ClearBuffer(); +16166: bufs_.pop_front(); +16166: free_bufs_.emplace_back(buf); +16166: } +16166: +16166: void FreeLastBuffer() { +16166: BufferInfo* buf = bufs_.back(); +16166: buf->ClearBuffer(); +16166: bufs_.pop_back(); +16166: free_bufs_.emplace_back(buf); +16166: } +16166: +16166: void FreeAllBuffers() { +16166: while (!bufs_.empty()) { +16166: BufferInfo* buf = bufs_.front(); +16166: buf->ClearBuffer(); +16166: bufs_.pop_front(); +16166: free_bufs_.emplace_back(buf); +16166: } +16166: } +16166: +16166: void FreeEmptyBuffers() { +16166: if (bufs_.empty()) { +16166: return; +16166: } +16166: +16166: std::deque tmp_buf; +16166: while (!bufs_.empty()) { +16166: BufferInfo* buf = bufs_.front(); +16166: bufs_.pop_front(); +16166: if (buf->async_read_in_progress_ || buf->DoesBufferContainData()) { +16166: tmp_buf.emplace_back(buf); +16166: } else { +16166: free_bufs_.emplace_back(buf); +16166: } +16166: } +16166: bufs_ = tmp_buf; +16166: } +16166: +16166: +16166: +16166: std::deque bufs_; +16166: std::deque free_bufs_; +16166: BufferInfo* overlap_buf_ = nullptr; +16166: +16166: size_t readahead_size_; +16166: size_t initial_auto_readahead_size_; +16166: +16166: +16166: size_t max_readahead_size_; +16166: +16166: +16166: size_t min_offset_read_; +16166: +16166: +16166: bool enable_; +16166: +16166: +16166: bool track_min_offset_; +16166: +16166: +16166: +16166: bool implicit_auto_readahead_; +16166: uint64_t prev_offset_; +16166: size_t prev_len_; +16166: +16166: +16166: uint64_t num_file_reads_for_auto_readahead_; +16166: uint64_t num_file_reads_; +16166: +16166: +16166: +16166: +16166: +16166: bool explicit_prefetch_submitted_; +16166: +16166: FileSystem* fs_; +16166: SystemClock* clock_; +16166: Statistics* stats_; +16166: +16166: FilePrefetchBufferUsage usage_; +16166: +16166: std::function readaheadsize_cb_; +16166: +16166: +16166: +16166: size_t num_buffers_; +16166: }; +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_allocator_impl.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: struct CustomDeleter { +16166: CustomDeleter(MemoryAllocator* a = nullptr) : allocator(a) {} +16166: +16166: void operator()(char* ptr) const { +16166: if (allocator) { +16166: allocator->Deallocate(ptr); +16166: } else { +16166: delete[] ptr; +16166: } +16166: } +16166: +16166: MemoryAllocator* allocator; +16166: }; +16166: +16166: using CacheAllocationPtr = std::unique_ptr; +16166: +16166: inline CacheAllocationPtr AllocateBlock(size_t size, +16166: MemoryAllocator* allocator) { +16166: if (allocator) { +16166: auto block = reinterpret_cast(allocator->Allocate(size)); +16166: return CacheAllocationPtr(block, allocator); +16166: } +16166: return CacheAllocationPtr(new char[size]); +16166: } +16166: +16166: inline CacheAllocationPtr AllocateAndCopyBlock(const Slice& data, +16166: MemoryAllocator* allocator) { +16166: CacheAllocationPtr cap = AllocateBlock(data.size(), allocator); +16166: std::copy_n(data.data(), data.size(), cap.get()); +16166: return cap; +16166: } +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/options/cf_options.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/malloc.h" 1 3 4 +16166: # 24 "/usr/include/malloc.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 25 "/usr/include/malloc.h" 2 3 4 +16166: # 36 "/usr/include/malloc.h" 3 4 +16166: +16166: # 36 "/usr/include/malloc.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: extern void *malloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +16166: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: extern void *calloc (size_t __nmemb, size_t __size) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern void *realloc (void *__ptr, size_t __size) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2, 3))) +16166: __attribute__ ((__malloc__ (__builtin_free, 1))); +16166: +16166: +16166: extern void free (void *__ptr) noexcept (true); +16166: +16166: +16166: extern void *memalign (size_t __alignment, size_t __size) +16166: noexcept (true) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) +16166: __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +16166: +16166: +16166: extern void *valloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +16166: __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +16166: +16166: +16166: +16166: extern void *pvalloc (size_t __size) noexcept (true) __attribute__ ((__malloc__)) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); +16166: +16166: +16166: +16166: struct mallinfo +16166: { +16166: int arena; +16166: int ordblks; +16166: int smblks; +16166: int hblks; +16166: int hblkhd; +16166: int usmblks; +16166: int fsmblks; +16166: int uordblks; +16166: int fordblks; +16166: int keepcost; +16166: }; +16166: +16166: +16166: +16166: +16166: struct mallinfo2 +16166: { +16166: size_t arena; +16166: size_t ordblks; +16166: size_t smblks; +16166: size_t hblks; +16166: size_t hblkhd; +16166: size_t usmblks; +16166: size_t fsmblks; +16166: size_t uordblks; +16166: size_t fordblks; +16166: size_t keepcost; +16166: }; +16166: +16166: +16166: extern struct mallinfo mallinfo (void) noexcept (true) __attribute__ ((__deprecated__)); +16166: +16166: +16166: extern struct mallinfo2 mallinfo2 (void) noexcept (true); +16166: # 144 "/usr/include/malloc.h" 3 4 +16166: extern int mallopt (int __param, int __val) noexcept (true); +16166: +16166: +16166: +16166: extern int malloc_trim (size_t __pad) noexcept (true); +16166: +16166: +16166: +16166: extern size_t malloc_usable_size (void *__ptr) noexcept (true); +16166: +16166: +16166: extern void malloc_stats (void) noexcept (true); +16166: +16166: +16166: extern int malloc_info (int __options, FILE *__fp) noexcept (true); +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/block_based/block_type.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/table/block_based/block_type.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: enum class BlockType : uint8_t { +16166: kData, +16166: kFilter, +16166: kFilterPartitionIndex, +16166: kProperties, +16166: kCompressionDictionary, +16166: kRangeDeletion, +16166: kHashIndexPrefixes, +16166: kHashIndexMetadata, +16166: kMetaIndex, +16166: kIndex, +16166: +16166: kInvalid +16166: }; +16166: +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 8 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 2 +16166: # 24 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct KillPoint { +16166: public: +16166: +16166: +16166: int rocksdb_kill_odds = 0; +16166: +16166: std::vector rocksdb_kill_exclude_prefixes; +16166: +16166: void TestKillRandom(std::string kill_point, int odds, +16166: const std::string& srcfile, int srcline); +16166: +16166: static KillPoint* GetInstance(); +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +16166: namespace rocksdb { +16166: # 74 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +16166: class SyncPoint { +16166: public: +16166: static SyncPoint* GetInstance(); +16166: +16166: SyncPoint(const SyncPoint&) = delete; +16166: SyncPoint& operator=(const SyncPoint&) = delete; +16166: ~SyncPoint(); +16166: +16166: struct SyncPointPair { +16166: std::string predecessor; +16166: std::string successor; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: void LoadDependency(const std::vector& dependencies); +16166: +16166: +16166: +16166: +16166: +16166: void LoadDependencyAndMarkers(const std::vector& dependencies, +16166: const std::vector& markers); +16166: +16166: +16166: +16166: +16166: void SetCallBack(const std::string& point, +16166: const std::function& callback); +16166: +16166: +16166: void ClearCallBack(const std::string& point); +16166: +16166: +16166: void ClearAllCallBacks(); +16166: +16166: +16166: void EnableProcessing(); +16166: +16166: +16166: void DisableProcessing(); +16166: +16166: +16166: void ClearTrace(); +16166: +16166: +16166: +16166: +16166: void Process(const Slice& point, void* cb_arg = nullptr); +16166: +16166: +16166: +16166: template +16166: void Process(const char (&point)[kLen], void* cb_arg = nullptr) { +16166: static_assert(kLen > 0, "Must not be empty"); +16166: +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 3 4 +16166: (static_cast ( +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +16166: point[kLen - 1] == '\0' +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +16166: "point[kLen - 1] == '\\0'" +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.h" +16166: ; +16166: Process(Slice(point, kLen - 1), cb_arg); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct Data; +16166: +16166: private: +16166: +16166: SyncPoint(); +16166: Data* impl_; +16166: }; +16166: +16166: +16166: +16166: void SetupSyncPointsToMockDirectIO(); +16166: } +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/compression_context_cache.h" 1 +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/compression_context_cache.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: class ZSTDUncompressCachedData; +16166: +16166: class CompressionContextCache { +16166: public: +16166: +16166: static CompressionContextCache* Instance(); +16166: static void InitSingleton(); +16166: CompressionContextCache(const CompressionContextCache&) = delete; +16166: CompressionContextCache& operator=(const CompressionContextCache&) = delete; +16166: +16166: ZSTDUncompressCachedData GetCachedZSTDUncompressData(); +16166: void ReturnCachedZSTDUncompressData(int64_t idx); +16166: +16166: private: +16166: +16166: CompressionContextCache(); +16166: ~CompressionContextCache(); +16166: +16166: class Rep; +16166: Rep* rep_; +16166: }; +16166: +16166: } +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: +16166: std::vector StringSplit(const std::string& arg, char delim); +16166: +16166: +16166: void AppendNumberTo(std::string* str, uint64_t num); +16166: +16166: +16166: +16166: void AppendEscapedStringTo(std::string* str, const Slice& value); +16166: +16166: +16166: +16166: template +16166: inline void PutBaseChars(char** buf, size_t n, uint64_t v, bool uppercase) { +16166: const char* digitChars = uppercase ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" +16166: : "0123456789abcdefghijklmnopqrstuvwxyz"; +16166: for (size_t i = n; i > 0; --i) { +16166: (*buf)[i - 1] = digitChars[static_cast(v % kBase)]; +16166: v /= kBase; +16166: } +16166: *buf += n; +16166: } +16166: # 52 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" +16166: template +16166: inline bool ParseBaseChars(const char** buf, size_t n, uint64_t* v) { +16166: while (n) { +16166: char c = **buf; +16166: *v *= static_cast(kBase); +16166: if (c >= '0' && (kBase >= 10 ? c <= '9' : c < '0' + kBase)) { +16166: *v += static_cast(c - '0'); +16166: } else if (kBase > 10 && c >= 'A' && c < 'A' + kBase - 10) { +16166: *v += static_cast(c - 'A' + 10); +16166: } else if (kBase > 10 && c >= 'a' && c < 'a' + kBase - 10) { +16166: *v += static_cast(c - 'a' + 10); +16166: } else { +16166: return false; +16166: } +16166: --n; +16166: ++*buf; +16166: } +16166: return true; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: std::string NumberToHumanString(int64_t num); +16166: +16166: +16166: +16166: std::string BytesToHumanString(uint64_t bytes); +16166: +16166: +16166: +16166: std::string TimeToHumanString(int unixtime); +16166: +16166: +16166: int AppendHumanMicros(uint64_t micros, char* output, int len, +16166: bool fixed_format); +16166: +16166: +16166: int AppendHumanBytes(uint64_t bytes, char* output, int len); +16166: +16166: +16166: +16166: std::string EscapeString(const Slice& value); +16166: +16166: +16166: +16166: +16166: +16166: bool ConsumeDecimalNumber(Slice* in, uint64_t* val); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool isSpecialChar(const char c); +16166: +16166: +16166: +16166: +16166: char UnescapeChar(const char c); +16166: +16166: +16166: +16166: +16166: char EscapeChar(const char c); +16166: # 130 "/build/reproducible-path/rocksdb-9.10.0/util/string_util.h" +16166: std::string EscapeOptionString(const std::string& raw_string); +16166: +16166: +16166: +16166: +16166: +16166: +16166: std::string UnescapeOptionString(const std::string& escaped_string); +16166: +16166: std::string trim(const std::string& str); +16166: +16166: +16166: bool EndsWith(const std::string& string, const std::string& pattern); +16166: +16166: +16166: bool StartsWith(const std::string& string, const std::string& pattern); +16166: +16166: bool ParseBoolean(const std::string& type, const std::string& value); +16166: +16166: uint8_t ParseUint8(const std::string& value); +16166: +16166: uint32_t ParseUint32(const std::string& value); +16166: +16166: int32_t ParseInt32(const std::string& value); +16166: +16166: uint64_t ParseUint64(const std::string& value); +16166: +16166: int ParseInt(const std::string& value); +16166: +16166: int64_t ParseInt64(const std::string& value); +16166: +16166: double ParseDouble(const std::string& value); +16166: +16166: size_t ParseSizeT(const std::string& value); +16166: +16166: std::vector ParseVectorInt(const std::string& value); +16166: +16166: bool SerializeIntVector(const std::vector& vec, std::string* value); +16166: +16166: +16166: +16166: int ParseTimeStringToSeconds(const std::string& value); +16166: +16166: +16166: +16166: +16166: bool TryParseTimeRangeString(const std::string& value, int& start_time, +16166: int& end_time); +16166: +16166: extern const std::string kNullptrString; +16166: +16166: +16166: +16166: std::string errnoStr(int err); +16166: +16166: } +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: +16166: # 1 "/usr/include/snappy.h" 1 3 4 +16166: # 42 "/usr/include/snappy.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 43 "/usr/include/snappy.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/snappy-stubs-public.h" 1 3 4 +16166: # 41 "/usr/include/snappy-stubs-public.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 2 3 4 +16166: +16166: +16166: +16166: # 26 "/usr/include/arm-linux-gnueabihf/bits/types/struct_iovec.h" 3 4 +16166: struct iovec +16166: { +16166: void *iov_base; +16166: size_t iov_len; +16166: }; +16166: # 24 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern "C" { +16166: # 41 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: extern ssize_t readv (int __fd, const struct iovec *__iovec, int __count) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 52 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: extern ssize_t writev (int __fd, const struct iovec *__iovec, int __count) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 86 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: extern ssize_t preadv (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "preadv64") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: extern ssize_t pwritev (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset) __asm__ ("" "pwritev64") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 110 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: extern ssize_t preadv64 (int __fd, const struct iovec *__iovec, int __count, +16166: __off64_t __offset) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 123 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: extern ssize_t pwritev64 (int __fd, const struct iovec *__iovec, int __count, +16166: __off64_t __offset) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 143 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: extern ssize_t pwritev2 (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset, int __flags) __asm__ ("" "pwritev64v2") +16166: +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: extern ssize_t preadv2 (int __fd, const struct iovec *__iovec, int __count, __off64_t __offset, int __flags) __asm__ ("" "preadv64v2") +16166: +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 161 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 3 4 +16166: extern ssize_t preadv64v2 (int __fp, const struct iovec *__iovec, +16166: int __count, __off64_t __offset, +16166: int ___flags) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: +16166: +16166: extern ssize_t pwritev64v2 (int __fd, const struct iovec *__iodev, +16166: int __count, __off64_t __offset, +16166: int __flags) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/uio-ext.h" 1 3 4 +16166: # 26 "/usr/include/arm-linux-gnueabihf/bits/uio-ext.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec, +16166: unsigned long int __liovcnt, +16166: const struct iovec *__rvec, +16166: unsigned long int __riovcnt, +16166: unsigned long int __flags) +16166: noexcept (true); +16166: +16166: +16166: extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec, +16166: unsigned long int __liovcnt, +16166: const struct iovec *__rvec, +16166: unsigned long int __riovcnt, +16166: unsigned long int __flags) +16166: noexcept (true); +16166: # 52 "/usr/include/arm-linux-gnueabihf/bits/uio-ext.h" 3 4 +16166: } +16166: # 180 "/usr/include/arm-linux-gnueabihf/sys/uio.h" 2 3 4 +16166: # 42 "/usr/include/snappy-stubs-public.h" 2 3 4 +16166: # 50 "/usr/include/snappy-stubs-public.h" 3 4 +16166: namespace snappy { +16166: # 61 "/usr/include/snappy-stubs-public.h" 3 4 +16166: } +16166: # 48 "/usr/include/snappy.h" 2 3 4 +16166: +16166: namespace snappy { +16166: class Source; +16166: class Sink; +16166: +16166: struct CompressionOptions { +16166: # 65 "/usr/include/snappy.h" 3 4 +16166: int level = DefaultCompressionLevel(); +16166: +16166: constexpr CompressionOptions() = default; +16166: constexpr CompressionOptions(int compression_level) +16166: : level(compression_level) {} +16166: static constexpr int MinCompressionLevel() { return 1; } +16166: static constexpr int MaxCompressionLevel() { return 2; } +16166: static constexpr int DefaultCompressionLevel() { return 1; } +16166: }; +16166: # 82 "/usr/include/snappy.h" 3 4 +16166: size_t Compress(Source* reader, Sink* writer); +16166: size_t Compress(Source* reader, Sink* writer, +16166: CompressionOptions options); +16166: # 93 "/usr/include/snappy.h" 3 4 +16166: bool GetUncompressedLength(Source* source, uint32_t* result); +16166: # 104 "/usr/include/snappy.h" 3 4 +16166: size_t Compress(const char* input, size_t input_length, +16166: std::string* compressed); +16166: size_t Compress(const char* input, size_t input_length, +16166: std::string* compressed, CompressionOptions options); +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t CompressFromIOVec(const struct iovec* iov, size_t iov_cnt, +16166: std::string* compressed); +16166: size_t CompressFromIOVec(const struct iovec* iov, size_t iov_cnt, +16166: std::string* compressed, +16166: CompressionOptions options); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool Uncompress(const char* compressed, size_t compressed_length, +16166: std::string* uncompressed); +16166: +16166: +16166: +16166: +16166: bool Uncompress(Source* compressed, Sink* uncompressed); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t UncompressAsMuchAsPossible(Source* compressed, Sink* uncompressed); +16166: # 161 "/usr/include/snappy.h" 3 4 +16166: void RawCompress(const char* input, size_t input_length, char* compressed, +16166: size_t* compressed_length); +16166: void RawCompress(const char* input, size_t input_length, char* compressed, +16166: size_t* compressed_length, CompressionOptions options); +16166: +16166: +16166: +16166: +16166: void RawCompressFromIOVec(const struct iovec* iov, size_t uncompressed_length, +16166: char* compressed, size_t* compressed_length); +16166: void RawCompressFromIOVec(const struct iovec* iov, size_t uncompressed_length, +16166: char* compressed, size_t* compressed_length, +16166: CompressionOptions options); +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool RawUncompress(const char* compressed, size_t compressed_length, +16166: char* uncompressed); +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool RawUncompress(Source* compressed, char* uncompressed); +16166: # 198 "/usr/include/snappy.h" 3 4 +16166: bool RawUncompressToIOVec(const char* compressed, size_t compressed_length, +16166: const struct iovec* iov, size_t iov_cnt); +16166: # 209 "/usr/include/snappy.h" 3 4 +16166: bool RawUncompressToIOVec(Source* compressed, const struct iovec* iov, +16166: size_t iov_cnt); +16166: +16166: +16166: +16166: size_t MaxCompressedLength(size_t source_bytes); +16166: +16166: +16166: +16166: +16166: +16166: bool GetUncompressedLength(const char* compressed, size_t compressed_length, +16166: size_t* result); +16166: +16166: +16166: +16166: +16166: +16166: bool IsValidCompressedBuffer(const char* compressed, +16166: size_t compressed_length); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool IsValidCompressed(Source* compressed); +16166: # 247 "/usr/include/snappy.h" 3 4 +16166: static constexpr int kBlockLog = 16; +16166: static constexpr size_t kBlockSize = 1 << kBlockLog; +16166: +16166: static constexpr int kMinHashTableBits = 8; +16166: static constexpr size_t kMinHashTableSize = 1 << kMinHashTableBits; +16166: +16166: static constexpr int kMaxHashTableBits = 15; +16166: static constexpr size_t kMaxHashTableSize = 1 << kMaxHashTableBits; +16166: } +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: +16166: +16166: # 1 "/usr/include/zlib.h" 1 3 4 +16166: # 34 "/usr/include/zlib.h" 3 4 +16166: # 1 "/usr/include/zconf.h" 1 3 4 +16166: # 254 "/usr/include/zconf.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 255 "/usr/include/zconf.h" 2 3 4 +16166: typedef size_t z_size_t; +16166: # 393 "/usr/include/zconf.h" 3 4 +16166: typedef unsigned char Byte; +16166: +16166: typedef unsigned int uInt; +16166: typedef unsigned long uLong; +16166: +16166: +16166: +16166: +16166: +16166: typedef Byte Bytef; +16166: +16166: typedef char charf; +16166: typedef int intf; +16166: typedef uInt uIntf; +16166: typedef uLong uLongf; +16166: +16166: +16166: typedef void const *voidpc; +16166: typedef void *voidpf; +16166: typedef void *voidp; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +16166: # 421 "/usr/include/zconf.h" 2 3 4 +16166: # 431 "/usr/include/zconf.h" 3 4 +16166: typedef unsigned z_crc_t; +16166: # 484 "/usr/include/zconf.h" 3 4 +16166: # 1 "/usr/include/unistd.h" 1 3 4 +16166: # 27 "/usr/include/unistd.h" 3 4 +16166: extern "C" { +16166: # 202 "/usr/include/unistd.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/posix_opt.h" 1 3 4 +16166: # 203 "/usr/include/unistd.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 1 3 4 +16166: # 22 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/wordsize.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/environments.h" 2 3 4 +16166: # 207 "/usr/include/unistd.h" 2 3 4 +16166: # 226 "/usr/include/unistd.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 227 "/usr/include/unistd.h" 2 3 4 +16166: # 274 "/usr/include/unistd.h" 3 4 +16166: typedef __socklen_t socklen_t; +16166: # 287 "/usr/include/unistd.h" 3 4 +16166: extern int access (const char *__name, int __type) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: extern int euidaccess (const char *__name, int __type) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int eaccess (const char *__name, int __type) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern int execveat (int __fd, const char *__path, char *const __argv[], +16166: char *const __envp[], int __flags) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int faccessat (int __fd, const char *__file, int __type, int __flag) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); +16166: # 342 "/usr/include/unistd.h" 3 4 +16166: extern __off64_t lseek (int __fd, __off64_t __offset, int __whence) noexcept (true) __asm__ ("" "lseek64") +16166: +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int close (int __fd); +16166: +16166: +16166: +16166: +16166: extern void closefrom (int __lowfd) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: +16166: +16166: +16166: +16166: +16166: extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 404 "/usr/include/unistd.h" 3 4 +16166: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") +16166: +16166: __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pwrite64") +16166: +16166: __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: # 422 "/usr/include/unistd.h" 3 4 +16166: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, +16166: __off64_t __offset) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: +16166: +16166: extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, +16166: __off64_t __offset) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__read_only__, 2, 3))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int pipe (int __pipedes[2]) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int pipe2 (int __pipedes[2], int __flags) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: # 452 "/usr/include/unistd.h" 3 4 +16166: extern unsigned int alarm (unsigned int __seconds) noexcept (true); +16166: # 464 "/usr/include/unistd.h" 3 4 +16166: extern unsigned int sleep (unsigned int __seconds); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int usleep (__useconds_t __useconds); +16166: # 489 "/usr/include/unistd.h" 3 4 +16166: extern int pause (void); +16166: +16166: +16166: +16166: extern int chown (const char *__file, __uid_t __owner, __gid_t __group) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fchownat (int __fd, const char *__file, __uid_t __owner, +16166: __gid_t __group, int __flag) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern int chdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern int fchdir (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: # 531 "/usr/include/unistd.h" 3 4 +16166: extern char *getcwd (char *__buf, size_t __size) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern char *get_current_dir_name (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *getwd (char *__buf) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 1))); +16166: +16166: +16166: +16166: +16166: extern int dup (int __fd) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: extern int dup2 (int __fd, int __fd2) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int dup3 (int __fd, int __fd2, int __flags) noexcept (true); +16166: +16166: +16166: +16166: extern char **__environ; +16166: +16166: extern char **environ; +16166: +16166: +16166: +16166: +16166: +16166: extern int execve (const char *__path, char *const __argv[], +16166: char *const __envp[]) noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: +16166: extern int execv (const char *__path, char *const __argv[]) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern int execle (const char *__path, const char *__arg, ...) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern int execl (const char *__path, const char *__arg, ...) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: extern int execvp (const char *__file, char *const __argv[]) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern int execlp (const char *__file, const char *__arg, ...) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: extern int execvpe (const char *__file, char *const __argv[], +16166: char *const __envp[]) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: extern int nice (int __inc) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern void _exit (int __status) __attribute__ ((__noreturn__)); +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/confname.h" 3 4 +16166: enum +16166: { +16166: _PC_LINK_MAX, +16166: +16166: _PC_MAX_CANON, +16166: +16166: _PC_MAX_INPUT, +16166: +16166: _PC_NAME_MAX, +16166: +16166: _PC_PATH_MAX, +16166: +16166: _PC_PIPE_BUF, +16166: +16166: _PC_CHOWN_RESTRICTED, +16166: +16166: _PC_NO_TRUNC, +16166: +16166: _PC_VDISABLE, +16166: +16166: _PC_SYNC_IO, +16166: +16166: _PC_ASYNC_IO, +16166: +16166: _PC_PRIO_IO, +16166: +16166: _PC_SOCK_MAXBUF, +16166: +16166: _PC_FILESIZEBITS, +16166: +16166: _PC_REC_INCR_XFER_SIZE, +16166: +16166: _PC_REC_MAX_XFER_SIZE, +16166: +16166: _PC_REC_MIN_XFER_SIZE, +16166: +16166: _PC_REC_XFER_ALIGN, +16166: +16166: _PC_ALLOC_SIZE_MIN, +16166: +16166: _PC_SYMLINK_MAX, +16166: +16166: _PC_2_SYMLINKS +16166: +16166: }; +16166: +16166: +16166: enum +16166: { +16166: _SC_ARG_MAX, +16166: +16166: _SC_CHILD_MAX, +16166: +16166: _SC_CLK_TCK, +16166: +16166: _SC_NGROUPS_MAX, +16166: +16166: _SC_OPEN_MAX, +16166: +16166: _SC_STREAM_MAX, +16166: +16166: _SC_TZNAME_MAX, +16166: +16166: _SC_JOB_CONTROL, +16166: +16166: _SC_SAVED_IDS, +16166: +16166: _SC_REALTIME_SIGNALS, +16166: +16166: _SC_PRIORITY_SCHEDULING, +16166: +16166: _SC_TIMERS, +16166: +16166: _SC_ASYNCHRONOUS_IO, +16166: +16166: _SC_PRIORITIZED_IO, +16166: +16166: _SC_SYNCHRONIZED_IO, +16166: +16166: _SC_FSYNC, +16166: +16166: _SC_MAPPED_FILES, +16166: +16166: _SC_MEMLOCK, +16166: +16166: _SC_MEMLOCK_RANGE, +16166: +16166: _SC_MEMORY_PROTECTION, +16166: +16166: _SC_MESSAGE_PASSING, +16166: +16166: _SC_SEMAPHORES, +16166: +16166: _SC_SHARED_MEMORY_OBJECTS, +16166: +16166: _SC_AIO_LISTIO_MAX, +16166: +16166: _SC_AIO_MAX, +16166: +16166: _SC_AIO_PRIO_DELTA_MAX, +16166: +16166: _SC_DELAYTIMER_MAX, +16166: +16166: _SC_MQ_OPEN_MAX, +16166: +16166: _SC_MQ_PRIO_MAX, +16166: +16166: _SC_VERSION, +16166: +16166: _SC_PAGESIZE, +16166: +16166: +16166: _SC_RTSIG_MAX, +16166: +16166: _SC_SEM_NSEMS_MAX, +16166: +16166: _SC_SEM_VALUE_MAX, +16166: +16166: _SC_SIGQUEUE_MAX, +16166: +16166: _SC_TIMER_MAX, +16166: +16166: +16166: +16166: +16166: _SC_BC_BASE_MAX, +16166: +16166: _SC_BC_DIM_MAX, +16166: +16166: _SC_BC_SCALE_MAX, +16166: +16166: _SC_BC_STRING_MAX, +16166: +16166: _SC_COLL_WEIGHTS_MAX, +16166: +16166: _SC_EQUIV_CLASS_MAX, +16166: +16166: _SC_EXPR_NEST_MAX, +16166: +16166: _SC_LINE_MAX, +16166: +16166: _SC_RE_DUP_MAX, +16166: +16166: _SC_CHARCLASS_NAME_MAX, +16166: +16166: +16166: _SC_2_VERSION, +16166: +16166: _SC_2_C_BIND, +16166: +16166: _SC_2_C_DEV, +16166: +16166: _SC_2_FORT_DEV, +16166: +16166: _SC_2_FORT_RUN, +16166: +16166: _SC_2_SW_DEV, +16166: +16166: _SC_2_LOCALEDEF, +16166: +16166: +16166: _SC_PII, +16166: +16166: _SC_PII_XTI, +16166: +16166: _SC_PII_SOCKET, +16166: +16166: _SC_PII_INTERNET, +16166: +16166: _SC_PII_OSI, +16166: +16166: _SC_POLL, +16166: +16166: _SC_SELECT, +16166: +16166: _SC_UIO_MAXIOV, +16166: +16166: _SC_IOV_MAX = _SC_UIO_MAXIOV, +16166: +16166: _SC_PII_INTERNET_STREAM, +16166: +16166: _SC_PII_INTERNET_DGRAM, +16166: +16166: _SC_PII_OSI_COTS, +16166: +16166: _SC_PII_OSI_CLTS, +16166: +16166: _SC_PII_OSI_M, +16166: +16166: _SC_T_IOV_MAX, +16166: +16166: +16166: +16166: _SC_THREADS, +16166: +16166: _SC_THREAD_SAFE_FUNCTIONS, +16166: +16166: _SC_GETGR_R_SIZE_MAX, +16166: +16166: _SC_GETPW_R_SIZE_MAX, +16166: +16166: _SC_LOGIN_NAME_MAX, +16166: +16166: _SC_TTY_NAME_MAX, +16166: +16166: _SC_THREAD_DESTRUCTOR_ITERATIONS, +16166: +16166: _SC_THREAD_KEYS_MAX, +16166: +16166: _SC_THREAD_STACK_MIN, +16166: +16166: _SC_THREAD_THREADS_MAX, +16166: +16166: _SC_THREAD_ATTR_STACKADDR, +16166: +16166: _SC_THREAD_ATTR_STACKSIZE, +16166: +16166: _SC_THREAD_PRIORITY_SCHEDULING, +16166: +16166: _SC_THREAD_PRIO_INHERIT, +16166: +16166: _SC_THREAD_PRIO_PROTECT, +16166: +16166: _SC_THREAD_PROCESS_SHARED, +16166: +16166: +16166: _SC_NPROCESSORS_CONF, +16166: +16166: _SC_NPROCESSORS_ONLN, +16166: +16166: _SC_PHYS_PAGES, +16166: +16166: _SC_AVPHYS_PAGES, +16166: +16166: _SC_ATEXIT_MAX, +16166: +16166: _SC_PASS_MAX, +16166: +16166: +16166: _SC_XOPEN_VERSION, +16166: +16166: _SC_XOPEN_XCU_VERSION, +16166: +16166: _SC_XOPEN_UNIX, +16166: +16166: _SC_XOPEN_CRYPT, +16166: +16166: _SC_XOPEN_ENH_I18N, +16166: +16166: _SC_XOPEN_SHM, +16166: +16166: +16166: _SC_2_CHAR_TERM, +16166: +16166: _SC_2_C_VERSION, +16166: +16166: _SC_2_UPE, +16166: +16166: +16166: _SC_XOPEN_XPG2, +16166: +16166: _SC_XOPEN_XPG3, +16166: +16166: _SC_XOPEN_XPG4, +16166: +16166: +16166: _SC_CHAR_BIT, +16166: +16166: _SC_CHAR_MAX, +16166: +16166: _SC_CHAR_MIN, +16166: +16166: _SC_INT_MAX, +16166: +16166: _SC_INT_MIN, +16166: +16166: _SC_LONG_BIT, +16166: +16166: _SC_WORD_BIT, +16166: +16166: _SC_MB_LEN_MAX, +16166: +16166: _SC_NZERO, +16166: +16166: _SC_SSIZE_MAX, +16166: +16166: _SC_SCHAR_MAX, +16166: +16166: _SC_SCHAR_MIN, +16166: +16166: _SC_SHRT_MAX, +16166: +16166: _SC_SHRT_MIN, +16166: +16166: _SC_UCHAR_MAX, +16166: +16166: _SC_UINT_MAX, +16166: +16166: _SC_ULONG_MAX, +16166: +16166: _SC_USHRT_MAX, +16166: +16166: +16166: _SC_NL_ARGMAX, +16166: +16166: _SC_NL_LANGMAX, +16166: +16166: _SC_NL_MSGMAX, +16166: +16166: _SC_NL_NMAX, +16166: +16166: _SC_NL_SETMAX, +16166: +16166: _SC_NL_TEXTMAX, +16166: +16166: +16166: _SC_XBS5_ILP32_OFF32, +16166: +16166: _SC_XBS5_ILP32_OFFBIG, +16166: +16166: _SC_XBS5_LP64_OFF64, +16166: +16166: _SC_XBS5_LPBIG_OFFBIG, +16166: +16166: +16166: _SC_XOPEN_LEGACY, +16166: +16166: _SC_XOPEN_REALTIME, +16166: +16166: _SC_XOPEN_REALTIME_THREADS, +16166: +16166: +16166: _SC_ADVISORY_INFO, +16166: +16166: _SC_BARRIERS, +16166: +16166: _SC_BASE, +16166: +16166: _SC_C_LANG_SUPPORT, +16166: +16166: _SC_C_LANG_SUPPORT_R, +16166: +16166: _SC_CLOCK_SELECTION, +16166: +16166: _SC_CPUTIME, +16166: +16166: _SC_THREAD_CPUTIME, +16166: +16166: _SC_DEVICE_IO, +16166: +16166: _SC_DEVICE_SPECIFIC, +16166: +16166: _SC_DEVICE_SPECIFIC_R, +16166: +16166: _SC_FD_MGMT, +16166: +16166: _SC_FIFO, +16166: +16166: _SC_PIPE, +16166: +16166: _SC_FILE_ATTRIBUTES, +16166: +16166: _SC_FILE_LOCKING, +16166: +16166: _SC_FILE_SYSTEM, +16166: +16166: _SC_MONOTONIC_CLOCK, +16166: +16166: _SC_MULTI_PROCESS, +16166: +16166: _SC_SINGLE_PROCESS, +16166: +16166: _SC_NETWORKING, +16166: +16166: _SC_READER_WRITER_LOCKS, +16166: +16166: _SC_SPIN_LOCKS, +16166: +16166: _SC_REGEXP, +16166: +16166: _SC_REGEX_VERSION, +16166: +16166: _SC_SHELL, +16166: +16166: _SC_SIGNALS, +16166: +16166: _SC_SPAWN, +16166: +16166: _SC_SPORADIC_SERVER, +16166: +16166: _SC_THREAD_SPORADIC_SERVER, +16166: +16166: _SC_SYSTEM_DATABASE, +16166: +16166: _SC_SYSTEM_DATABASE_R, +16166: +16166: _SC_TIMEOUTS, +16166: +16166: _SC_TYPED_MEMORY_OBJECTS, +16166: +16166: _SC_USER_GROUPS, +16166: +16166: _SC_USER_GROUPS_R, +16166: +16166: _SC_2_PBS, +16166: +16166: _SC_2_PBS_ACCOUNTING, +16166: +16166: _SC_2_PBS_LOCATE, +16166: +16166: _SC_2_PBS_MESSAGE, +16166: +16166: _SC_2_PBS_TRACK, +16166: +16166: _SC_SYMLOOP_MAX, +16166: +16166: _SC_STREAMS, +16166: +16166: _SC_2_PBS_CHECKPOINT, +16166: +16166: +16166: _SC_V6_ILP32_OFF32, +16166: +16166: _SC_V6_ILP32_OFFBIG, +16166: +16166: _SC_V6_LP64_OFF64, +16166: +16166: _SC_V6_LPBIG_OFFBIG, +16166: +16166: +16166: _SC_HOST_NAME_MAX, +16166: +16166: _SC_TRACE, +16166: +16166: _SC_TRACE_EVENT_FILTER, +16166: +16166: _SC_TRACE_INHERIT, +16166: +16166: _SC_TRACE_LOG, +16166: +16166: +16166: _SC_LEVEL1_ICACHE_SIZE, +16166: +16166: _SC_LEVEL1_ICACHE_ASSOC, +16166: +16166: _SC_LEVEL1_ICACHE_LINESIZE, +16166: +16166: _SC_LEVEL1_DCACHE_SIZE, +16166: +16166: _SC_LEVEL1_DCACHE_ASSOC, +16166: +16166: _SC_LEVEL1_DCACHE_LINESIZE, +16166: +16166: _SC_LEVEL2_CACHE_SIZE, +16166: +16166: _SC_LEVEL2_CACHE_ASSOC, +16166: +16166: _SC_LEVEL2_CACHE_LINESIZE, +16166: +16166: _SC_LEVEL3_CACHE_SIZE, +16166: +16166: _SC_LEVEL3_CACHE_ASSOC, +16166: +16166: _SC_LEVEL3_CACHE_LINESIZE, +16166: +16166: _SC_LEVEL4_CACHE_SIZE, +16166: +16166: _SC_LEVEL4_CACHE_ASSOC, +16166: +16166: _SC_LEVEL4_CACHE_LINESIZE, +16166: +16166: +16166: +16166: _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, +16166: +16166: _SC_RAW_SOCKETS, +16166: +16166: +16166: _SC_V7_ILP32_OFF32, +16166: +16166: _SC_V7_ILP32_OFFBIG, +16166: +16166: _SC_V7_LP64_OFF64, +16166: +16166: _SC_V7_LPBIG_OFFBIG, +16166: +16166: +16166: _SC_SS_REPL_MAX, +16166: +16166: +16166: _SC_TRACE_EVENT_NAME_MAX, +16166: +16166: _SC_TRACE_NAME_MAX, +16166: +16166: _SC_TRACE_SYS_MAX, +16166: +16166: _SC_TRACE_USER_EVENT_MAX, +16166: +16166: +16166: _SC_XOPEN_STREAMS, +16166: +16166: +16166: _SC_THREAD_ROBUST_PRIO_INHERIT, +16166: +16166: _SC_THREAD_ROBUST_PRIO_PROTECT, +16166: +16166: +16166: _SC_MINSIGSTKSZ, +16166: +16166: +16166: _SC_SIGSTKSZ +16166: +16166: }; +16166: +16166: +16166: enum +16166: { +16166: _CS_PATH, +16166: +16166: +16166: _CS_V6_WIDTH_RESTRICTED_ENVS, +16166: +16166: +16166: +16166: _CS_GNU_LIBC_VERSION, +16166: +16166: _CS_GNU_LIBPTHREAD_VERSION, +16166: +16166: +16166: _CS_V5_WIDTH_RESTRICTED_ENVS, +16166: +16166: +16166: +16166: _CS_V7_WIDTH_RESTRICTED_ENVS, +16166: +16166: +16166: +16166: _CS_LFS_CFLAGS = 1000, +16166: +16166: _CS_LFS_LDFLAGS, +16166: +16166: _CS_LFS_LIBS, +16166: +16166: _CS_LFS_LINTFLAGS, +16166: +16166: _CS_LFS64_CFLAGS, +16166: +16166: _CS_LFS64_LDFLAGS, +16166: +16166: _CS_LFS64_LIBS, +16166: +16166: _CS_LFS64_LINTFLAGS, +16166: +16166: +16166: _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, +16166: +16166: _CS_XBS5_ILP32_OFF32_LDFLAGS, +16166: +16166: _CS_XBS5_ILP32_OFF32_LIBS, +16166: +16166: _CS_XBS5_ILP32_OFF32_LINTFLAGS, +16166: +16166: _CS_XBS5_ILP32_OFFBIG_CFLAGS, +16166: +16166: _CS_XBS5_ILP32_OFFBIG_LDFLAGS, +16166: +16166: _CS_XBS5_ILP32_OFFBIG_LIBS, +16166: +16166: _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, +16166: +16166: _CS_XBS5_LP64_OFF64_CFLAGS, +16166: +16166: _CS_XBS5_LP64_OFF64_LDFLAGS, +16166: +16166: _CS_XBS5_LP64_OFF64_LIBS, +16166: +16166: _CS_XBS5_LP64_OFF64_LINTFLAGS, +16166: +16166: _CS_XBS5_LPBIG_OFFBIG_CFLAGS, +16166: +16166: _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, +16166: +16166: _CS_XBS5_LPBIG_OFFBIG_LIBS, +16166: +16166: _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, +16166: +16166: +16166: _CS_POSIX_V6_ILP32_OFF32_CFLAGS, +16166: +16166: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, +16166: +16166: _CS_POSIX_V6_ILP32_OFF32_LIBS, +16166: +16166: _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, +16166: +16166: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, +16166: +16166: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, +16166: +16166: _CS_POSIX_V6_ILP32_OFFBIG_LIBS, +16166: +16166: _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, +16166: +16166: _CS_POSIX_V6_LP64_OFF64_CFLAGS, +16166: +16166: _CS_POSIX_V6_LP64_OFF64_LDFLAGS, +16166: +16166: _CS_POSIX_V6_LP64_OFF64_LIBS, +16166: +16166: _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, +16166: +16166: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, +16166: +16166: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, +16166: +16166: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, +16166: +16166: _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, +16166: +16166: +16166: _CS_POSIX_V7_ILP32_OFF32_CFLAGS, +16166: +16166: _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, +16166: +16166: _CS_POSIX_V7_ILP32_OFF32_LIBS, +16166: +16166: _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, +16166: +16166: _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, +16166: +16166: _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, +16166: +16166: _CS_POSIX_V7_ILP32_OFFBIG_LIBS, +16166: +16166: _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, +16166: +16166: _CS_POSIX_V7_LP64_OFF64_CFLAGS, +16166: +16166: _CS_POSIX_V7_LP64_OFF64_LDFLAGS, +16166: +16166: _CS_POSIX_V7_LP64_OFF64_LIBS, +16166: +16166: _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, +16166: +16166: _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, +16166: +16166: _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, +16166: +16166: _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, +16166: +16166: _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, +16166: +16166: +16166: _CS_V6_ENV, +16166: +16166: _CS_V7_ENV +16166: +16166: }; +16166: # 631 "/usr/include/unistd.h" 2 3 4 +16166: +16166: +16166: extern long int pathconf (const char *__path, int __name) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: extern long int fpathconf (int __fd, int __name) noexcept (true); +16166: +16166: +16166: extern long int sysconf (int __name) noexcept (true); +16166: +16166: +16166: +16166: extern size_t confstr (int __name, char *__buf, size_t __len) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: +16166: +16166: +16166: +16166: extern __pid_t getpid (void) noexcept (true); +16166: +16166: +16166: extern __pid_t getppid (void) noexcept (true); +16166: +16166: +16166: extern __pid_t getpgrp (void) noexcept (true); +16166: +16166: +16166: extern __pid_t __getpgid (__pid_t __pid) noexcept (true); +16166: +16166: extern __pid_t getpgid (__pid_t __pid) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int setpgid (__pid_t __pid, __pid_t __pgid) noexcept (true); +16166: # 682 "/usr/include/unistd.h" 3 4 +16166: extern int setpgrp (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern __pid_t setsid (void) noexcept (true); +16166: +16166: +16166: +16166: extern __pid_t getsid (__pid_t __pid) noexcept (true); +16166: +16166: +16166: +16166: extern __uid_t getuid (void) noexcept (true); +16166: +16166: +16166: extern __uid_t geteuid (void) noexcept (true); +16166: +16166: +16166: extern __gid_t getgid (void) noexcept (true); +16166: +16166: +16166: extern __gid_t getegid (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int getgroups (int __size, __gid_t __list[]) noexcept (true) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 2, 1))); +16166: +16166: +16166: extern int group_member (__gid_t __gid) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int setuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int setreuid (__uid_t __ruid, __uid_t __euid) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int seteuid (__uid_t __uid) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int setgid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int setregid (__gid_t __rgid, __gid_t __egid) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int setegid (__gid_t __gid) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) +16166: noexcept (true); +16166: +16166: +16166: +16166: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) +16166: noexcept (true); +16166: +16166: +16166: +16166: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern __pid_t fork (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern __pid_t vfork (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern __pid_t _Fork (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern char *ttyname (int __fd) noexcept (true); +16166: +16166: +16166: +16166: extern int ttyname_r (int __fd, char *__buf, size_t __buflen) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: +16166: +16166: +16166: extern int isatty (int __fd) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int ttyslot (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int link (const char *__from, const char *__to) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int linkat (int __fromfd, const char *__from, int __tofd, +16166: const char *__to, int __flags) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern int symlink (const char *__from, const char *__to) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: extern ssize_t readlink (const char *__restrict __path, +16166: char *__restrict __buf, size_t __len) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: +16166: +16166: +16166: +16166: +16166: extern int symlinkat (const char *__from, int __tofd, +16166: const char *__to) noexcept (true) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: extern ssize_t readlinkat (int __fd, const char *__restrict __path, +16166: char *__restrict __buf, size_t __len) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 3, 4))); +16166: +16166: +16166: +16166: extern int unlink (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern int unlinkat (int __fd, const char *__name, int __flag) +16166: noexcept (true) __attribute__ ((__nonnull__ (2))); +16166: +16166: +16166: +16166: extern int rmdir (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: extern __pid_t tcgetpgrp (int __fd) noexcept (true); +16166: +16166: +16166: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *getlogin (void); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: +16166: +16166: +16166: +16166: extern int setlogin (const char *__name) noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 1 3 4 +16166: # 27 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 1 3 4 +16166: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char *optarg; +16166: # 50 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 +16166: extern int optind; +16166: +16166: +16166: +16166: +16166: extern int opterr; +16166: +16166: +16166: +16166: extern int optopt; +16166: # 91 "/usr/include/arm-linux-gnueabihf/bits/getopt_core.h" 3 4 +16166: extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 3))); +16166: +16166: } +16166: # 28 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 2 3 4 +16166: +16166: extern "C" { +16166: # 49 "/usr/include/arm-linux-gnueabihf/bits/getopt_posix.h" 3 4 +16166: } +16166: # 904 "/usr/include/unistd.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int gethostname (char *__name, size_t __len) noexcept (true) __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int sethostname (const char *__name, size_t __len) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); +16166: +16166: +16166: +16166: extern int sethostid (long int __id) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int getdomainname (char *__name, size_t __len) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern int setdomainname (const char *__name, size_t __len) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); +16166: +16166: +16166: +16166: +16166: extern int vhangup (void) noexcept (true); +16166: +16166: +16166: extern int revoke (const char *__file) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int profil (unsigned short int *__sample_buffer, size_t __size, +16166: size_t __offset, unsigned int __scale) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: extern int acct (const char *__name) noexcept (true); +16166: +16166: +16166: +16166: extern char *getusershell (void) noexcept (true); +16166: extern void endusershell (void) noexcept (true); +16166: extern void setusershell (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern int daemon (int __nochdir, int __noclose) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int chroot (const char *__path) noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int fsync (int __fd); +16166: +16166: +16166: +16166: +16166: +16166: extern int syncfs (int __fd) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern long int gethostid (void); +16166: +16166: +16166: extern void sync (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern int getpagesize (void) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: +16166: +16166: extern int getdtablesize (void) noexcept (true); +16166: # 1030 "/usr/include/unistd.h" 3 4 +16166: extern int truncate (const char *__file, __off64_t __length) noexcept (true) __asm__ ("" "truncate64") +16166: +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int truncate64 (const char *__file, __off64_t __length) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); +16166: # 1052 "/usr/include/unistd.h" 3 4 +16166: extern int ftruncate (int __fd, __off64_t __length) noexcept (true) __asm__ ("" "ftruncate64") +16166: __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int ftruncate64 (int __fd, __off64_t __length) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: # 1070 "/usr/include/unistd.h" 3 4 +16166: extern int brk (void *__addr) noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern void *sbrk (intptr_t __delta) noexcept (true); +16166: # 1091 "/usr/include/unistd.h" 3 4 +16166: extern long int syscall (long int __sysno, ...) noexcept (true); +16166: # 1117 "/usr/include/unistd.h" 3 4 +16166: extern int lockf (int __fd, int __cmd, __off64_t __len) __asm__ ("" "lockf64") +16166: __attribute__ ((__warn_unused_result__)); +16166: +16166: +16166: +16166: +16166: +16166: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__)); +16166: # 1142 "/usr/include/unistd.h" 3 4 +16166: ssize_t copy_file_range (int __infd, __off64_t *__pinoff, +16166: int __outfd, __off64_t *__poutoff, +16166: size_t __length, unsigned int __flags); +16166: +16166: +16166: +16166: +16166: +16166: extern int fdatasync (int __fildes); +16166: # 1162 "/usr/include/unistd.h" 3 4 +16166: extern char *crypt (const char *__key, const char *__salt) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern void swab (const void *__restrict __from, void *__restrict __to, +16166: ssize_t __n) noexcept (true) __attribute__ ((__nonnull__ (1, 2))) +16166: __attribute__ ((__access__ (__read_only__, 1, 3))) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: # 1201 "/usr/include/unistd.h" 3 4 +16166: int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)) +16166: __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: # 1211 "/usr/include/unistd.h" 3 4 +16166: extern int close_range (unsigned int __fd, unsigned int __max_fd, +16166: int __flags) noexcept (true); +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 1 3 4 +16166: # 23 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 1 3 4 +16166: # 26 "/usr/include/arm-linux-gnueabihf/bits/unistd-decl.h" 3 4 +16166: extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, +16166: size_t __buflen) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) +16166: ; +16166: +16166: +16166: extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, +16166: __off_t __offset, size_t __bufsize) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, +16166: __off64_t __offset, size_t __bufsize) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) +16166: ; +16166: extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") +16166: +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) +16166: ; +16166: +16166: +16166: +16166: extern ssize_t __readlink_chk (const char *__restrict __path, +16166: char *__restrict __buf, size_t __len, +16166: size_t __buflen) +16166: noexcept (true) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlink") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__readlink_chk") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) +16166: ; +16166: +16166: +16166: +16166: extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, +16166: char *__restrict __buf, size_t __len, +16166: size_t __buflen) +16166: noexcept (true) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); +16166: extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) noexcept (true) __asm__ ("" "readlinkat") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); +16166: 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") +16166: +16166: +16166: +16166: __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) +16166: +16166: ; +16166: +16166: +16166: extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)); +16166: extern char *__getcwd_alias (char *__buf, size_t __size) noexcept (true) __asm__ ("" "getcwd") +16166: __attribute__ ((__warn_unused_result__)); +16166: extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) noexcept (true) __asm__ ("" "__getcwd_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) +16166: ; +16166: +16166: +16166: extern char *__getwd_chk (char *__buf, size_t buflen) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern char *__getwd_warn (char *__buf) noexcept (true) __asm__ ("" "getwd") +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) +16166: ; +16166: +16166: +16166: extern size_t __confstr_chk (int __name, char *__buf, size_t __len, +16166: size_t __buflen) noexcept (true) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern size_t __confstr_alias (int __name, char *__buf, size_t __len) noexcept (true) __asm__ ("" "confstr") +16166: +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) noexcept (true) __asm__ ("" "__confstr_chk") +16166: +16166: +16166: __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) +16166: ; +16166: +16166: +16166: extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) +16166: noexcept (true) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); +16166: extern int __getgroups_alias (int __size, __gid_t __list[]) noexcept (true) __asm__ ("" "getgroups") +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); +16166: extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) noexcept (true) __asm__ ("" "__getgroups_chk") +16166: +16166: +16166: __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) +16166: ; +16166: +16166: +16166: extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, +16166: size_t __nreal) noexcept (true) __attribute__ ((__nonnull__ (2))) +16166: __attribute__ ((__access__ (__write_only__, 2, 3))); +16166: extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "ttyname_r") +16166: +16166: __attribute__ ((__nonnull__ (2))); +16166: extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__ttyname_r_chk") +16166: +16166: +16166: __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) +16166: ; +16166: +16166: +16166: +16166: extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") +16166: __attribute__ ((__nonnull__ (1))); +16166: extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) +16166: ; +16166: +16166: +16166: +16166: +16166: extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern int __gethostname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "gethostname") +16166: +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__gethostname_chk") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) +16166: ; +16166: +16166: +16166: +16166: +16166: extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) +16166: noexcept (true) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern int __getdomainname_alias (char *__buf, size_t __buflen) noexcept (true) __asm__ ("" "getdomainname") +16166: +16166: __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); +16166: extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) noexcept (true) __asm__ ("" "__getdomainname_chk") +16166: +16166: +16166: __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) +16166: +16166: ; +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 2 3 4 +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +16166: read (int __fd, void * __buf, size_t __nbytes) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_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_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_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_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)) : __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)))) +16166: +16166: ; +16166: } +16166: # 51 "/usr/include/arm-linux-gnueabihf/bits/unistd.h" 3 4 +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +16166: pread (int __fd, void * __buf, +16166: size_t __nbytes, __off64_t __offset) +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_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_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_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_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t +16166: pread64 (int __fd, void * __buf, +16166: size_t __nbytes, __off64_t __offset) +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_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_object_size (__buf, 0))) / ((sizeof (char))))) && (((unsigned int) (__nbytes)) <= ((__builtin_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_object_size (__buf, 0)) / (sizeof (char)))) && !(((unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t +16166: __attribute__ ((__leaf__)) readlink (const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t +16166: __attribute__ ((__leaf__)) readlinkat (int __fd, const char *__restrict __path, char * __restrict __buf, size_t __len) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __readlinkat_chk_warn (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * +16166: __attribute__ ((__leaf__)) getcwd (char * __buf, size_t __size) noexcept (true) +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__size)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)) : __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) +16166: __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * +16166: __attribute__ ((__leaf__)) getwd (char * __buf) noexcept (true) +16166: { +16166: if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) +16166: return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); +16166: return __getwd_warn (__buf); +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t +16166: __attribute__ ((__leaf__)) confstr (int __name, char * __buf, size_t __len) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) getgroups (int __size, __gid_t * __list) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__list, 2 > 1)) && (__builtin_object_size (__list, 2 > 1)) == (unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((unsigned int) (__size)) <= ((__builtin_object_size (__list, 2 > 1))) / ((sizeof (__gid_t))))) && (((unsigned int) (__size)) <= ((__builtin_object_size (__list, 2 > 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_object_size (__list, 2 > 1)) / (sizeof (__gid_t)))) && !(((unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (sizeof (__gid_t)))) ? __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)) : __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) ttyname_r (int __fd, char * __buf, size_t __buflen) noexcept (true) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: getlogin_r (char * __buf, size_t __buflen) +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) gethostname (char * __buf, size_t __buflen) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: +16166: +16166: +16166: +16166: extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int +16166: __attribute__ ((__leaf__)) getdomainname (char * __buf, size_t __buflen) noexcept (true) +16166: +16166: +16166: +16166: +16166: { +16166: return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 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_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) +16166: +16166: ; +16166: } +16166: # 1218 "/usr/include/unistd.h" 2 3 4 +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 1 3 4 +16166: # 34 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 3 4 +16166: extern __pid_t gettid (void) noexcept (true); +16166: +16166: +16166: +16166: # 1 "/usr/include/linux/close_range.h" 1 3 4 +16166: # 39 "/usr/include/arm-linux-gnueabihf/bits/unistd_ext.h" 2 3 4 +16166: # 1222 "/usr/include/unistd.h" 2 3 4 +16166: +16166: } +16166: # 485 "/usr/include/zconf.h" 2 3 4 +16166: # 35 "/usr/include/zlib.h" 2 3 4 +16166: +16166: +16166: extern "C" { +16166: # 81 "/usr/include/zlib.h" 3 4 +16166: typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); +16166: typedef void (*free_func)(voidpf opaque, voidpf address); +16166: +16166: struct internal_state; +16166: +16166: typedef struct z_stream_s { +16166: Bytef *next_in; +16166: uInt avail_in; +16166: uLong total_in; +16166: +16166: Bytef *next_out; +16166: uInt avail_out; +16166: uLong total_out; +16166: +16166: char *msg; +16166: struct internal_state *state; +16166: +16166: alloc_func zalloc; +16166: free_func zfree; +16166: voidpf opaque; +16166: +16166: int data_type; +16166: +16166: uLong adler; +16166: uLong reserved; +16166: } z_stream; +16166: +16166: typedef z_stream *z_streamp; +16166: +16166: +16166: +16166: +16166: +16166: typedef struct gz_header_s { +16166: int text; +16166: uLong time; +16166: int xflags; +16166: int os; +16166: Bytef *extra; +16166: uInt extra_len; +16166: uInt extra_max; +16166: Bytef *name; +16166: uInt name_max; +16166: Bytef *comment; +16166: uInt comm_max; +16166: int hcrc; +16166: int done; +16166: +16166: } gz_header; +16166: +16166: typedef gz_header *gz_headerp; +16166: # 220 "/usr/include/zlib.h" 3 4 +16166: extern const char * zlibVersion(void); +16166: # 250 "/usr/include/zlib.h" 3 4 +16166: extern int deflate(z_streamp strm, int flush); +16166: # 363 "/usr/include/zlib.h" 3 4 +16166: extern int deflateEnd(z_streamp strm); +16166: # 401 "/usr/include/zlib.h" 3 4 +16166: extern int inflate(z_streamp strm, int flush); +16166: # 521 "/usr/include/zlib.h" 3 4 +16166: extern int inflateEnd(z_streamp strm); +16166: # 611 "/usr/include/zlib.h" 3 4 +16166: extern int deflateSetDictionary(z_streamp strm, +16166: const Bytef *dictionary, +16166: uInt dictLength); +16166: # 655 "/usr/include/zlib.h" 3 4 +16166: extern int deflateGetDictionary(z_streamp strm, +16166: Bytef *dictionary, +16166: uInt *dictLength); +16166: # 677 "/usr/include/zlib.h" 3 4 +16166: extern int deflateCopy(z_streamp dest, +16166: z_streamp source); +16166: # 695 "/usr/include/zlib.h" 3 4 +16166: extern int deflateReset(z_streamp strm); +16166: # 706 "/usr/include/zlib.h" 3 4 +16166: extern int deflateParams(z_streamp strm, +16166: int level, +16166: int strategy); +16166: # 744 "/usr/include/zlib.h" 3 4 +16166: extern int deflateTune(z_streamp strm, +16166: int good_length, +16166: int max_lazy, +16166: int nice_length, +16166: int max_chain); +16166: # 761 "/usr/include/zlib.h" 3 4 +16166: extern uLong deflateBound(z_streamp strm, +16166: uLong sourceLen); +16166: # 776 "/usr/include/zlib.h" 3 4 +16166: extern int deflatePending(z_streamp strm, +16166: unsigned *pending, +16166: int *bits); +16166: # 791 "/usr/include/zlib.h" 3 4 +16166: extern int deflatePrime(z_streamp strm, +16166: int bits, +16166: int value); +16166: # 808 "/usr/include/zlib.h" 3 4 +16166: extern int deflateSetHeader(z_streamp strm, +16166: gz_headerp head); +16166: # 888 "/usr/include/zlib.h" 3 4 +16166: extern int inflateSetDictionary(z_streamp strm, +16166: const Bytef *dictionary, +16166: uInt dictLength); +16166: # 911 "/usr/include/zlib.h" 3 4 +16166: extern int inflateGetDictionary(z_streamp strm, +16166: Bytef *dictionary, +16166: uInt *dictLength); +16166: # 926 "/usr/include/zlib.h" 3 4 +16166: extern int inflateSync(z_streamp strm); +16166: # 945 "/usr/include/zlib.h" 3 4 +16166: extern int inflateCopy(z_streamp dest, +16166: z_streamp source); +16166: # 961 "/usr/include/zlib.h" 3 4 +16166: extern int inflateReset(z_streamp strm); +16166: # 972 "/usr/include/zlib.h" 3 4 +16166: extern int inflateReset2(z_streamp strm, +16166: int windowBits); +16166: # 986 "/usr/include/zlib.h" 3 4 +16166: extern int inflatePrime(z_streamp strm, +16166: int bits, +16166: int value); +16166: # 1007 "/usr/include/zlib.h" 3 4 +16166: extern long inflateMark(z_streamp strm); +16166: # 1035 "/usr/include/zlib.h" 3 4 +16166: extern int inflateGetHeader(z_streamp strm, +16166: gz_headerp head); +16166: # 1097 "/usr/include/zlib.h" 3 4 +16166: typedef unsigned (*in_func)(void *, +16166: unsigned char * *); +16166: typedef int (*out_func)(void *, unsigned char *, unsigned); +16166: +16166: extern int inflateBack(z_streamp strm, +16166: in_func in, void *in_desc, +16166: out_func out, void *out_desc); +16166: # 1171 "/usr/include/zlib.h" 3 4 +16166: extern int inflateBackEnd(z_streamp strm); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern uLong zlibCompileFlags(void); +16166: # 1232 "/usr/include/zlib.h" 3 4 +16166: extern int compress(Bytef *dest, uLongf *destLen, +16166: const Bytef *source, uLong sourceLen); +16166: # 1247 "/usr/include/zlib.h" 3 4 +16166: extern int compress2(Bytef *dest, uLongf *destLen, +16166: const Bytef *source, uLong sourceLen, +16166: int level); +16166: # 1263 "/usr/include/zlib.h" 3 4 +16166: extern uLong compressBound(uLong sourceLen); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int uncompress(Bytef *dest, uLongf *destLen, +16166: const Bytef *source, uLong sourceLen); +16166: # 1288 "/usr/include/zlib.h" 3 4 +16166: extern int uncompress2(Bytef *dest, uLongf *destLen, +16166: const Bytef *source, uLong *sourceLen); +16166: # 1305 "/usr/include/zlib.h" 3 4 +16166: typedef struct gzFile_s *gzFile; +16166: # 1345 "/usr/include/zlib.h" 3 4 +16166: extern gzFile gzdopen(int fd, const char *mode); +16166: # 1368 "/usr/include/zlib.h" 3 4 +16166: extern int gzbuffer(gzFile file, unsigned size); +16166: # 1384 "/usr/include/zlib.h" 3 4 +16166: extern int gzsetparams(gzFile file, int level, int strategy); +16166: # 1395 "/usr/include/zlib.h" 3 4 +16166: extern int gzread(gzFile file, voidp buf, unsigned len); +16166: # 1425 "/usr/include/zlib.h" 3 4 +16166: extern z_size_t gzfread(voidp buf, z_size_t size, z_size_t nitems, +16166: gzFile file); +16166: # 1451 "/usr/include/zlib.h" 3 4 +16166: extern int gzwrite(gzFile file, voidpc buf, unsigned len); +16166: +16166: +16166: +16166: +16166: +16166: extern z_size_t gzfwrite(voidpc buf, z_size_t size, +16166: z_size_t nitems, gzFile file); +16166: # 1471 "/usr/include/zlib.h" 3 4 +16166: extern int gzprintf(gzFile file, const char *format, ...); +16166: # 1486 "/usr/include/zlib.h" 3 4 +16166: extern int gzputs(gzFile file, const char *s); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern char * gzgets(gzFile file, char *buf, int len); +16166: # 1508 "/usr/include/zlib.h" 3 4 +16166: extern int gzputc(gzFile file, int c); +16166: +16166: +16166: +16166: +16166: +16166: extern int gzgetc(gzFile file); +16166: # 1523 "/usr/include/zlib.h" 3 4 +16166: extern int gzungetc(int c, gzFile file); +16166: # 1535 "/usr/include/zlib.h" 3 4 +16166: extern int gzflush(gzFile file, int flush); +16166: # 1570 "/usr/include/zlib.h" 3 4 +16166: extern int gzrewind(gzFile file); +16166: # 1598 "/usr/include/zlib.h" 3 4 +16166: extern int gzeof(gzFile file); +16166: # 1613 "/usr/include/zlib.h" 3 4 +16166: extern int gzdirect(gzFile file); +16166: # 1634 "/usr/include/zlib.h" 3 4 +16166: extern int gzclose(gzFile file); +16166: # 1647 "/usr/include/zlib.h" 3 4 +16166: extern int gzclose_r(gzFile file); +16166: extern int gzclose_w(gzFile file); +16166: # 1659 "/usr/include/zlib.h" 3 4 +16166: extern const char * gzerror(gzFile file, int *errnum); +16166: # 1675 "/usr/include/zlib.h" 3 4 +16166: extern void gzclearerr(gzFile file); +16166: # 1692 "/usr/include/zlib.h" 3 4 +16166: extern uLong adler32(uLong adler, const Bytef *buf, uInt len); +16166: # 1712 "/usr/include/zlib.h" 3 4 +16166: extern uLong adler32_z(uLong adler, const Bytef *buf, +16166: z_size_t len); +16166: # 1730 "/usr/include/zlib.h" 3 4 +16166: extern uLong crc32(uLong crc, const Bytef *buf, uInt len); +16166: # 1748 "/usr/include/zlib.h" 3 4 +16166: extern uLong crc32_z(uLong crc, const Bytef *buf, +16166: z_size_t len); +16166: # 1771 "/usr/include/zlib.h" 3 4 +16166: extern uLong crc32_combine_op(uLong crc1, uLong crc2, uLong op); +16166: # 1784 "/usr/include/zlib.h" 3 4 +16166: extern int deflateInit_(z_streamp strm, int level, +16166: const char *version, int stream_size); +16166: extern int inflateInit_(z_streamp strm, +16166: const char *version, int stream_size); +16166: extern int deflateInit2_(z_streamp strm, int level, int method, +16166: int windowBits, int memLevel, +16166: int strategy, const char *version, +16166: int stream_size); +16166: extern int inflateInit2_(z_streamp strm, int windowBits, +16166: const char *version, int stream_size); +16166: extern int inflateBackInit_(z_streamp strm, int windowBits, +16166: unsigned char *window, +16166: const char *version, +16166: int stream_size); +16166: # 1837 "/usr/include/zlib.h" 3 4 +16166: struct gzFile_s { +16166: unsigned have; +16166: unsigned char *next; +16166: off64_t pos; +16166: }; +16166: extern int gzgetc_(gzFile file); +16166: # 1859 "/usr/include/zlib.h" 3 4 +16166: extern gzFile gzopen64(const char *, const char *); +16166: extern off64_t gzseek64(gzFile, off64_t, int); +16166: extern off64_t gztell64(gzFile); +16166: extern off64_t gzoffset64(gzFile); +16166: extern uLong adler32_combine64(uLong, uLong, off64_t); +16166: extern uLong crc32_combine64(uLong, uLong, off64_t); +16166: extern uLong crc32_combine_gen64(off64_t); +16166: # 1914 "/usr/include/zlib.h" 3 4 +16166: extern const char * zError(int); +16166: extern int inflateSyncPoint(z_streamp); +16166: extern const z_crc_t * get_crc_table(void); +16166: extern int inflateUndermine(z_streamp, int); +16166: extern int inflateValidate(z_streamp, int); +16166: extern unsigned long inflateCodesUsed(z_streamp); +16166: extern int inflateResetKeep(z_streamp); +16166: extern int deflateResetKeep(z_streamp); +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int gzvprintf(gzFile file, +16166: const char *format, +16166: va_list va); +16166: +16166: +16166: +16166: +16166: } +16166: # 38 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: +16166: +16166: # 1 "/usr/include/bzlib.h" 1 3 4 +16166: # 26 "/usr/include/bzlib.h" 3 4 +16166: extern "C" { +16166: # 48 "/usr/include/bzlib.h" 3 4 +16166: typedef +16166: struct { +16166: char *next_in; +16166: unsigned int avail_in; +16166: unsigned int total_in_lo32; +16166: unsigned int total_in_hi32; +16166: +16166: char *next_out; +16166: unsigned int avail_out; +16166: unsigned int total_out_lo32; +16166: unsigned int total_out_hi32; +16166: +16166: void *state; +16166: +16166: void *(*bzalloc)(void *,int,int); +16166: void (*bzfree)(void *,void *); +16166: void *opaque; +16166: } +16166: bz_stream; +16166: # 100 "/usr/include/bzlib.h" 3 4 +16166: extern int BZ2_bzCompressInit ( +16166: bz_stream* strm, +16166: int blockSize100k, +16166: int verbosity, +16166: int workFactor +16166: ); +16166: +16166: extern int BZ2_bzCompress ( +16166: bz_stream* strm, +16166: int action +16166: ); +16166: +16166: extern int BZ2_bzCompressEnd ( +16166: bz_stream* strm +16166: ); +16166: +16166: extern int BZ2_bzDecompressInit ( +16166: bz_stream *strm, +16166: int verbosity, +16166: int small +16166: ); +16166: +16166: extern int BZ2_bzDecompress ( +16166: bz_stream* strm +16166: ); +16166: +16166: extern int BZ2_bzDecompressEnd ( +16166: bz_stream *strm +16166: ); +16166: # 137 "/usr/include/bzlib.h" 3 4 +16166: typedef void BZFILE; +16166: +16166: extern BZFILE* BZ2_bzReadOpen ( +16166: int* bzerror, +16166: FILE* f, +16166: int verbosity, +16166: int small, +16166: void* unused, +16166: int nUnused +16166: ); +16166: +16166: extern void BZ2_bzReadClose ( +16166: int* bzerror, +16166: BZFILE* b +16166: ); +16166: +16166: extern void BZ2_bzReadGetUnused ( +16166: int* bzerror, +16166: BZFILE* b, +16166: void** unused, +16166: int* nUnused +16166: ); +16166: +16166: extern int BZ2_bzRead ( +16166: int* bzerror, +16166: BZFILE* b, +16166: void* buf, +16166: int len +16166: ); +16166: +16166: extern BZFILE* BZ2_bzWriteOpen ( +16166: int* bzerror, +16166: FILE* f, +16166: int blockSize100k, +16166: int verbosity, +16166: int workFactor +16166: ); +16166: +16166: extern void BZ2_bzWrite ( +16166: int* bzerror, +16166: BZFILE* b, +16166: void* buf, +16166: int len +16166: ); +16166: +16166: extern void BZ2_bzWriteClose ( +16166: int* bzerror, +16166: BZFILE* b, +16166: int abandon, +16166: unsigned int* nbytes_in, +16166: unsigned int* nbytes_out +16166: ); +16166: +16166: extern void BZ2_bzWriteClose64 ( +16166: int* bzerror, +16166: BZFILE* b, +16166: int abandon, +16166: unsigned int* nbytes_in_lo32, +16166: unsigned int* nbytes_in_hi32, +16166: unsigned int* nbytes_out_lo32, +16166: unsigned int* nbytes_out_hi32 +16166: ); +16166: +16166: +16166: +16166: +16166: +16166: extern int BZ2_bzBuffToBuffCompress ( +16166: char* dest, +16166: unsigned int* destLen, +16166: char* source, +16166: unsigned int sourceLen, +16166: int blockSize100k, +16166: int verbosity, +16166: int workFactor +16166: ); +16166: +16166: extern int BZ2_bzBuffToBuffDecompress ( +16166: char* dest, +16166: unsigned int* destLen, +16166: char* source, +16166: unsigned int sourceLen, +16166: int small, +16166: int verbosity +16166: ); +16166: # 233 "/usr/include/bzlib.h" 3 4 +16166: extern const char * BZ2_bzlibVersion ( +16166: void +16166: ); +16166: +16166: +16166: extern BZFILE * BZ2_bzopen ( +16166: const char *path, +16166: const char *mode +16166: ); +16166: +16166: extern BZFILE * BZ2_bzdopen ( +16166: int fd, +16166: const char *mode +16166: ); +16166: +16166: extern int BZ2_bzread ( +16166: BZFILE* b, +16166: void* buf, +16166: int len +16166: ); +16166: +16166: extern int BZ2_bzwrite ( +16166: BZFILE* b, +16166: void* buf, +16166: int len +16166: ); +16166: +16166: extern int BZ2_bzflush ( +16166: BZFILE* b +16166: ); +16166: +16166: extern void BZ2_bzclose ( +16166: BZFILE* b +16166: ); +16166: +16166: extern const char * BZ2_bzerror ( +16166: BZFILE *b, +16166: int *errnum +16166: ); +16166: +16166: +16166: +16166: } +16166: # 42 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: +16166: +16166: # 1 "/usr/include/lz4.h" 1 3 4 +16166: # 36 "/usr/include/lz4.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 44 "/usr/include/lz4.h" 2 3 4 +16166: # 142 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_versionNumber (void); +16166: __attribute__ ((visibility ("default"))) const char* LZ4_versionString (void); +16166: # 191 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); +16166: # 208 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_decompress_safe (const char* src, char* dst, int compressedSize, int dstCapacity); +16166: # 226 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compressBound(int inputSize); +16166: # 236 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +16166: # 245 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_sizeofState(void); +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_fast_extState (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +16166: # 272 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize); +16166: # 308 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_decompress_safe_partial (const char* src, char* dst, int srcSize, int targetOutputSize, int dstCapacity); +16166: +16166: +16166: +16166: +16166: +16166: typedef union LZ4_stream_u LZ4_stream_t; +16166: # 331 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) LZ4_stream_t* LZ4_createStream(void); +16166: __attribute__ ((visibility ("default"))) int LZ4_freeStream (LZ4_stream_t* streamPtr); +16166: # 358 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); +16166: # 371 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); +16166: # 380 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_loadDictSlow(LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); +16166: # 414 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) void +16166: LZ4_attach_dictionary(LZ4_stream_t* workingStream, +16166: const LZ4_stream_t* dictionaryStream); +16166: # 441 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +16166: # 450 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int maxDictSize); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef union LZ4_streamDecode_u LZ4_streamDecode_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) LZ4_streamDecode_t* LZ4_createStreamDecode(void); +16166: __attribute__ ((visibility ("default"))) int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); +16166: # 477 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); +16166: # 490 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_decoderRingBufferSize(int maxBlockSize); +16166: # 531 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int +16166: LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, +16166: const char* src, char* dst, +16166: int srcSize, int dstCapacity); +16166: # 545 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int +16166: LZ4_decompress_safe_usingDict(const char* src, char* dst, +16166: int srcSize, int dstCapacity, +16166: const char* dictStart, int dictSize); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) int +16166: LZ4_decompress_safe_partial_usingDict(const char* src, char* dst, +16166: int compressedSize, +16166: int targetOutputSize, int maxOutputSize, +16166: const char* dictStart, int dictSize); +16166: # 701 "/usr/include/lz4.h" 3 4 +16166: typedef int8_t LZ4_i8; +16166: typedef uint8_t LZ4_byte; +16166: typedef uint16_t LZ4_u16; +16166: typedef uint32_t LZ4_u32; +16166: # 718 "/usr/include/lz4.h" 3 4 +16166: typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; +16166: struct LZ4_stream_t_internal { +16166: LZ4_u32 hashTable[(1 << (14 -2))]; +16166: const LZ4_byte* dictionary; +16166: const LZ4_stream_t_internal* dictCtx; +16166: LZ4_u32 currentOffset; +16166: LZ4_u32 tableType; +16166: LZ4_u32 dictSize; +16166: +16166: }; +16166: +16166: +16166: union LZ4_stream_u { +16166: char minStateSize[((1UL << (14)) + 32)]; +16166: LZ4_stream_t_internal internal_donotuse; +16166: }; +16166: # 750 "/usr/include/lz4.h" 3 4 +16166: __attribute__ ((visibility ("default"))) LZ4_stream_t* LZ4_initStream (void* stateBuffer, size_t size); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef struct { +16166: const LZ4_byte* externalDict; +16166: const LZ4_byte* prefixEnd; +16166: size_t extDictSize; +16166: size_t prefixSize; +16166: } LZ4_streamDecode_t_internal; +16166: +16166: +16166: union LZ4_streamDecode_u { +16166: char minStateSize[32]; +16166: LZ4_streamDecode_t_internal internal_donotuse; +16166: } ; +16166: # 806 "/usr/include/lz4.h" 3 4 +16166: [[deprecated("use LZ4_compress_default() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress (const char* src, char* dest, int srcSize); +16166: [[deprecated("use LZ4_compress_default() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_limitedOutput (const char* src, char* dest, int srcSize, int maxOutputSize); +16166: [[deprecated("use LZ4_compress_fast_extState() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); +16166: [[deprecated("use LZ4_compress_fast_extState() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +16166: [[deprecated("use LZ4_compress_fast_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); +16166: [[deprecated("use LZ4_compress_fast_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); +16166: +16166: +16166: [[deprecated("use LZ4_decompress_fast() instead")]] __attribute__ ((visibility ("default"))) int LZ4_uncompress (const char* source, char* dest, int outputSize); +16166: [[deprecated("use LZ4_decompress_safe() instead")]] __attribute__ ((visibility ("default"))) int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); +16166: # 827 "/usr/include/lz4.h" 3 4 +16166: [[deprecated("Use LZ4_createStream() instead")]] __attribute__ ((visibility ("default"))) void* LZ4_create (char* inputBuffer); +16166: [[deprecated("Use LZ4_createStream() instead")]] __attribute__ ((visibility ("default"))) int LZ4_sizeofStreamState(void); +16166: [[deprecated("Use LZ4_resetStream() instead")]] __attribute__ ((visibility ("default"))) int LZ4_resetStreamState(void* state, char* inputBuffer); +16166: [[deprecated("Use LZ4_saveDict() instead")]] __attribute__ ((visibility ("default"))) char* LZ4_slideInputBuffer (void* state); +16166: +16166: +16166: [[deprecated("use LZ4_decompress_safe_usingDict() instead")]] __attribute__ ((visibility ("default"))) int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); +16166: [[deprecated("use LZ4_decompress_fast_usingDict() instead")]] __attribute__ ((visibility ("default"))) int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); +16166: # 862 "/usr/include/lz4.h" 3 4 +16166: [[deprecated("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_partial() instead")]] +16166: __attribute__ ((visibility ("default"))) int LZ4_decompress_fast (const char* src, char* dst, int originalSize); +16166: [[deprecated("This function is deprecated and unsafe. Consider migrating towards LZ4_decompress_safe_continue() instead. " "Note that the contract will change (requires block's compressed size, instead of decompressed size)")]] +16166: +16166: __attribute__ ((visibility ("default"))) int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int originalSize); +16166: [[deprecated("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_partial_usingDict() instead")]] +16166: __attribute__ ((visibility ("default"))) int LZ4_decompress_fast_usingDict (const char* src, char* dst, int originalSize, const char* dictStart, int dictSize); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) void LZ4_resetStream (LZ4_stream_t* streamPtr); +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: # 46 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: # 1 "/usr/include/lz4hc.h" 1 3 4 +16166: # 38 "/usr/include/lz4hc.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/lz4.h" 1 3 4 +16166: # 36 "/usr/include/lz4.h" 3 4 +16166: extern "C" { +16166: # 883 "/usr/include/lz4.h" 3 4 +16166: } +16166: # 44 "/usr/include/lz4hc.h" 2 3 4 +16166: # 66 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_HC (const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel); +16166: # 79 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_sizeofStateHC(void); +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_extStateHC(void* stateHC, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel); +16166: # 91 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_destSize(void* stateHC, +16166: const char* src, char* dst, +16166: int* srcSizePtr, int targetDstSize, +16166: int compressionLevel); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef union LZ4_streamHC_u LZ4_streamHC_t; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) LZ4_streamHC_t* LZ4_createStreamHC(void); +16166: __attribute__ ((visibility ("default"))) int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr); +16166: # 157 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) void LZ4_resetStreamHC_fast(LZ4_streamHC_t* streamHCPtr, int compressionLevel); +16166: __attribute__ ((visibility ("default"))) int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize); +16166: +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, +16166: const char* src, char* dst, +16166: int srcSize, int maxDstSize); +16166: # 174 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t* LZ4_streamHCPtr, +16166: const char* src, char* dst, +16166: int* srcSizePtr, int targetDstSize); +16166: +16166: __attribute__ ((visibility ("default"))) int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize); +16166: # 205 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) void +16166: LZ4_attach_HC_dictionary(LZ4_streamHC_t* working_stream, +16166: const LZ4_streamHC_t* dictionary_stream); +16166: # 234 "/usr/include/lz4hc.h" 3 4 +16166: typedef struct LZ4HC_CCtx_internal LZ4HC_CCtx_internal; +16166: struct LZ4HC_CCtx_internal +16166: { +16166: LZ4_u32 hashTable[(1 << 15)]; +16166: LZ4_u16 chainTable[(1<<16)]; +16166: const LZ4_byte* end; +16166: const LZ4_byte* prefixStart; +16166: const LZ4_byte* dictStart; +16166: LZ4_u32 dictLimit; +16166: LZ4_u32 lowLimit; +16166: LZ4_u32 nextToUpdate; +16166: short compressionLevel; +16166: LZ4_i8 favorDecSpeed; +16166: +16166: LZ4_i8 dirty; +16166: const LZ4HC_CCtx_internal* dictCtx; +16166: }; +16166: +16166: +16166: union LZ4_streamHC_u { +16166: char minStateSize[262200]; +16166: LZ4HC_CCtx_internal internal_donotuse; +16166: }; +16166: # 275 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) LZ4_streamHC_t* LZ4_initStreamHC(void* buffer, size_t size); +16166: # 284 "/usr/include/lz4hc.h" 3 4 +16166: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC (const char* source, char* dest, int inputSize); +16166: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize); +16166: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2 (const char* source, char* dest, int inputSize, int compressionLevel); +16166: [[deprecated("use LZ4_compress_HC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +16166: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_withStateHC (void* state, const char* source, char* dest, int inputSize); +16166: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +16166: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_withStateHC (void* state, const char* source, char* dest, int inputSize, int compressionLevel); +16166: [[deprecated("use LZ4_compress_HC_extStateHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_limitedOutput_withStateHC(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +16166: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize); +16166: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize); +16166: # 304 "/usr/include/lz4hc.h" 3 4 +16166: [[deprecated("use LZ4_createStreamHC() instead")]] __attribute__ ((visibility ("default"))) void* LZ4_createHC (const char* inputBuffer); +16166: [[deprecated("use LZ4_freeStreamHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_freeHC (void* LZ4HC_Data); +16166: +16166: [[deprecated("use LZ4_saveDictHC() instead")]] __attribute__ ((visibility ("default"))) char* LZ4_slideInputBufferHC (void* LZ4HC_Data); +16166: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel); +16166: [[deprecated("use LZ4_compress_HC_continue() instead")]] __attribute__ ((visibility ("default"))) int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +16166: [[deprecated("use LZ4_createStreamHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_sizeofStreamStateHC(void); +16166: [[deprecated("use LZ4_initStreamHC() instead")]] __attribute__ ((visibility ("default"))) int LZ4_resetStreamStateHC(void* state, char* inputBuffer); +16166: # 322 "/usr/include/lz4hc.h" 3 4 +16166: __attribute__ ((visibility ("default"))) void LZ4_resetStreamHC (LZ4_streamHC_t* streamHCPtr, int compressionLevel); +16166: +16166: +16166: +16166: } +16166: # 47 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: +16166: +16166: # 1 "/usr/include/zstd.h" 1 3 4 +16166: # 11 "/usr/include/zstd.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/limits.h" 1 3 4 +16166: # 19 "/usr/include/zstd.h" 2 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 20 "/usr/include/zstd.h" 2 3 4 +16166: # 114 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) unsigned ZSTD_versionNumber(void); +16166: # 123 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) const char* ZSTD_versionString(void); +16166: # 155 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compress( void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize, +16166: int compressionLevel); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_decompress( void* dst, size_t dstCapacity, +16166: const void* src, size_t compressedSize); +16166: # 193 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: [[deprecated("Replaced by ZSTD_getFrameContentSize")]] +16166: __attribute__ ((visibility ("default"))) +16166: unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize); +16166: # 233 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compressBound(size_t srcSize); +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) unsigned ZSTD_isError(size_t code); +16166: __attribute__ ((visibility ("default"))) const char* ZSTD_getErrorName(size_t code); +16166: __attribute__ ((visibility ("default"))) int ZSTD_minCLevel(void); +16166: __attribute__ ((visibility ("default"))) int ZSTD_maxCLevel(void); +16166: __attribute__ ((visibility ("default"))) int ZSTD_defaultCLevel(void); +16166: # 259 "/usr/include/zstd.h" 3 4 +16166: typedef struct ZSTD_CCtx_s ZSTD_CCtx; +16166: __attribute__ ((visibility ("default"))) ZSTD_CCtx* ZSTD_createCCtx(void); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); +16166: # 271 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compressCCtx(ZSTD_CCtx* cctx, +16166: void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize, +16166: int compressionLevel); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef struct ZSTD_DCtx_s ZSTD_DCtx; +16166: __attribute__ ((visibility ("default"))) ZSTD_DCtx* ZSTD_createDCtx(void); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_decompressDCtx(ZSTD_DCtx* dctx, +16166: void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize); +16166: # 315 "/usr/include/zstd.h" 3 4 +16166: typedef enum { ZSTD_fast=1, +16166: ZSTD_dfast=2, +16166: ZSTD_greedy=3, +16166: ZSTD_lazy=4, +16166: ZSTD_lazy2=5, +16166: ZSTD_btlazy2=6, +16166: ZSTD_btopt=7, +16166: ZSTD_btultra=8, +16166: ZSTD_btultra2=9 +16166: +16166: +16166: } ZSTD_strategy; +16166: +16166: typedef enum { +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_compressionLevel=100, +16166: # 347 "/usr/include/zstd.h" 3 4 +16166: ZSTD_c_windowLog=101, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_hashLog=102, +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_chainLog=103, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_searchLog=104, +16166: +16166: +16166: +16166: ZSTD_c_minMatch=105, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_targetLength=106, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_strategy=107, +16166: +16166: +16166: +16166: +16166: ZSTD_c_targetCBlockSize=130, +16166: # 407 "/usr/include/zstd.h" 3 4 +16166: ZSTD_c_enableLongDistanceMatching=160, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_ldmHashLog=161, +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_ldmMinMatch=162, +16166: +16166: +16166: +16166: ZSTD_c_ldmBucketSizeLog=163, +16166: +16166: +16166: +16166: ZSTD_c_ldmHashRateLog=164, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_contentSizeFlag=200, +16166: +16166: +16166: +16166: ZSTD_c_checksumFlag=201, +16166: ZSTD_c_dictIDFlag=202, +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: ZSTD_c_nbWorkers=400, +16166: # 459 "/usr/include/zstd.h" 3 4 +16166: ZSTD_c_jobSize=401, +16166: +16166: +16166: +16166: +16166: ZSTD_c_overlapLog=402, +16166: # 500 "/usr/include/zstd.h" 3 4 +16166: ZSTD_c_experimentalParam1=500, +16166: ZSTD_c_experimentalParam2=10, +16166: ZSTD_c_experimentalParam3=1000, +16166: ZSTD_c_experimentalParam4=1001, +16166: ZSTD_c_experimentalParam5=1002, +16166: +16166: ZSTD_c_experimentalParam7=1004, +16166: ZSTD_c_experimentalParam8=1005, +16166: ZSTD_c_experimentalParam9=1006, +16166: ZSTD_c_experimentalParam10=1007, +16166: ZSTD_c_experimentalParam11=1008, +16166: ZSTD_c_experimentalParam12=1009, +16166: ZSTD_c_experimentalParam13=1010, +16166: ZSTD_c_experimentalParam14=1011, +16166: ZSTD_c_experimentalParam15=1012, +16166: ZSTD_c_experimentalParam16=1013, +16166: ZSTD_c_experimentalParam17=1014, +16166: ZSTD_c_experimentalParam18=1015, +16166: ZSTD_c_experimentalParam19=1016 +16166: } ZSTD_cParameter; +16166: +16166: typedef struct { +16166: size_t error; +16166: int lowerBound; +16166: int upperBound; +16166: } ZSTD_bounds; +16166: # 534 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) ZSTD_bounds ZSTD_cParam_getBounds(ZSTD_cParameter cParam); +16166: # 547 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value); +16166: # 564 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize); +16166: +16166: typedef enum { +16166: ZSTD_reset_session_only = 1, +16166: ZSTD_reset_parameters = 2, +16166: ZSTD_reset_session_and_parameters = 3 +16166: } ZSTD_ResetDirective; +16166: # 586 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_reset(ZSTD_CCtx* cctx, ZSTD_ResetDirective reset); +16166: # 600 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compress2( ZSTD_CCtx* cctx, +16166: void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize); +16166: # 617 "/usr/include/zstd.h" 3 4 +16166: typedef enum { +16166: +16166: ZSTD_d_windowLogMax=100, +16166: # 638 "/usr/include/zstd.h" 3 4 +16166: ZSTD_d_experimentalParam1=1000, +16166: ZSTD_d_experimentalParam2=1001, +16166: ZSTD_d_experimentalParam3=1002, +16166: ZSTD_d_experimentalParam4=1003, +16166: ZSTD_d_experimentalParam5=1004, +16166: ZSTD_d_experimentalParam6=1005 +16166: +16166: } ZSTD_dParameter; +16166: # 654 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) ZSTD_bounds ZSTD_dParam_getBounds(ZSTD_dParameter dParam); +16166: # 663 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_setParameter(ZSTD_DCtx* dctx, ZSTD_dParameter param, int value); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_reset(ZSTD_DCtx* dctx, ZSTD_ResetDirective reset); +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef struct ZSTD_inBuffer_s { +16166: const void* src; +16166: size_t size; +16166: size_t pos; +16166: } ZSTD_inBuffer; +16166: +16166: typedef struct ZSTD_outBuffer_s { +16166: void* dst; +16166: size_t size; +16166: size_t pos; +16166: } ZSTD_outBuffer; +16166: # 753 "/usr/include/zstd.h" 3 4 +16166: typedef ZSTD_CCtx ZSTD_CStream; +16166: +16166: +16166: __attribute__ ((visibility ("default"))) ZSTD_CStream* ZSTD_createCStream(void); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_freeCStream(ZSTD_CStream* zcs); +16166: +16166: +16166: typedef enum { +16166: ZSTD_e_continue=0, +16166: ZSTD_e_flush=1, +16166: +16166: +16166: +16166: ZSTD_e_end=2 +16166: +16166: +16166: +16166: +16166: } ZSTD_EndDirective; +16166: # 800 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compressStream2( ZSTD_CCtx* cctx, +16166: ZSTD_outBuffer* output, +16166: ZSTD_inBuffer* input, +16166: ZSTD_EndDirective endOp); +16166: # 819 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CStreamInSize(void); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CStreamOutSize(void); +16166: # 839 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_initCStream(ZSTD_CStream* zcs, int compressionLevel); +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compressStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output, ZSTD_inBuffer* input); +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_flushStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); +16166: # 880 "/usr/include/zstd.h" 3 4 +16166: typedef ZSTD_DCtx ZSTD_DStream; +16166: +16166: +16166: __attribute__ ((visibility ("default"))) ZSTD_DStream* ZSTD_createDStream(void); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_freeDStream(ZSTD_DStream* zds); +16166: # 896 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_initDStream(ZSTD_DStream* zds); +16166: # 919 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inBuffer* input); +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_DStreamInSize(void); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_DStreamOutSize(void); +16166: # 935 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, +16166: void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize, +16166: const void* dict,size_t dictSize, +16166: int compressionLevel); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_decompress_usingDict(ZSTD_DCtx* dctx, +16166: void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize, +16166: const void* dict,size_t dictSize); +16166: +16166: +16166: +16166: +16166: +16166: typedef struct ZSTD_CDict_s ZSTD_CDict; +16166: # 970 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) ZSTD_CDict* ZSTD_createCDict(const void* dictBuffer, size_t dictSize, +16166: int compressionLevel); +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_freeCDict(ZSTD_CDict* CDict); +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx, +16166: void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize, +16166: const ZSTD_CDict* cdict); +16166: +16166: +16166: typedef struct ZSTD_DDict_s ZSTD_DDict; +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize); +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_freeDDict(ZSTD_DDict* ddict); +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_decompress_usingDDict(ZSTD_DCtx* dctx, +16166: void* dst, size_t dstCapacity, +16166: const void* src, size_t srcSize, +16166: const ZSTD_DDict* ddict); +16166: # 1018 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize); +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromCDict(const ZSTD_CDict* cdict); +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict); +16166: # 1042 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize); +16166: # 1079 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize); +16166: # 1093 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); +16166: # 1114 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, +16166: const void* prefix, size_t prefixSize); +16166: # 1132 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); +16166: # 1151 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); +16166: # 1169 "/usr/include/zstd.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx, +16166: const void* prefix, size_t prefixSize); +16166: +16166: +16166: +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_DCtx(const ZSTD_DCtx* dctx); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_CStream(const ZSTD_CStream* zcs); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_DStream(const ZSTD_DStream* zds); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict); +16166: __attribute__ ((visibility ("default"))) size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); +16166: # 3088 "/usr/include/zstd.h" 3 4 +16166: } +16166: # 51 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: +16166: +16166: # 1 "/usr/include/zdict.h" 1 3 4 +16166: # 12 "/usr/include/zdict.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 20 "/usr/include/zdict.h" 2 3 4 +16166: # 210 "/usr/include/zdict.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZDICT_trainFromBuffer(void* dictBuffer, size_t dictBufferCapacity, +16166: const void* samplesBuffer, +16166: const size_t* samplesSizes, unsigned nbSamples); +16166: +16166: typedef struct { +16166: int compressionLevel; +16166: unsigned notificationLevel; +16166: unsigned dictID; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } ZDICT_params_t; +16166: # 262 "/usr/include/zdict.h" 3 4 +16166: __attribute__ ((visibility ("default"))) size_t ZDICT_finalizeDictionary(void* dstDictBuffer, size_t maxDictSize, +16166: const void* dictContent, size_t dictContentSize, +16166: const void* samplesBuffer, const size_t* samplesSizes, unsigned nbSamples, +16166: ZDICT_params_t parameters); +16166: +16166: +16166: +16166: __attribute__ ((visibility ("default"))) unsigned ZDICT_getDictID(const void* dictBuffer, size_t dictSize); +16166: __attribute__ ((visibility ("default"))) size_t ZDICT_getDictHeaderSize(const void* dictBuffer, size_t dictSize); +16166: __attribute__ ((visibility ("default"))) unsigned ZDICT_isError(size_t errorCode); +16166: __attribute__ ((visibility ("default"))) const char* ZDICT_getErrorName(size_t errorCode); +16166: # 473 "/usr/include/zdict.h" 3 4 +16166: } +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 2 +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: namespace rocksdb { +16166: # 88 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: class ZSTDUncompressCachedData { +16166: public: +16166: using ZSTDNativeContext = ZSTD_DCtx*; +16166: ZSTDUncompressCachedData() {} +16166: +16166: ZSTDUncompressCachedData(const ZSTDUncompressCachedData& o) = delete; +16166: ZSTDUncompressCachedData& operator=(const ZSTDUncompressCachedData&) = delete; +16166: ZSTDUncompressCachedData(ZSTDUncompressCachedData&& o) noexcept +16166: : ZSTDUncompressCachedData() { +16166: *this = std::move(o); +16166: } +16166: ZSTDUncompressCachedData& operator=(ZSTDUncompressCachedData&& o) noexcept { +16166: +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: zstd_ctx_ == nullptr +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "zstd_ctx_ == nullptr" +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: std::swap(zstd_ctx_, o.zstd_ctx_); +16166: std::swap(cache_idx_, o.cache_idx_); +16166: return *this; +16166: } +16166: ZSTDNativeContext Get() const { return zstd_ctx_; } +16166: int64_t GetCacheIndex() const { return cache_idx_; } +16166: void CreateIfNeeded() { +16166: if (zstd_ctx_ == nullptr) { +16166: +16166: +16166: +16166: +16166: zstd_ctx_ = ZSTD_createDCtx(); +16166: +16166: cache_idx_ = -1; +16166: } +16166: } +16166: void InitFromCache(const ZSTDUncompressCachedData& o, int64_t idx) { +16166: zstd_ctx_ = o.zstd_ctx_; +16166: cache_idx_ = idx; +16166: } +16166: ~ZSTDUncompressCachedData() { +16166: if (zstd_ctx_ != nullptr && cache_idx_ == -1) { +16166: ZSTD_freeDCtx(zstd_ctx_); +16166: } +16166: } +16166: +16166: private: +16166: ZSTDNativeContext zstd_ctx_ = nullptr; +16166: int64_t cache_idx_ = -1; +16166: }; +16166: +16166: } +16166: # 163 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: struct CompressionDict { +16166: +16166: ZSTD_CDict* zstd_cdict_ = nullptr; +16166: +16166: std::string dict_; +16166: +16166: public: +16166: +16166: CompressionDict(std::string dict, CompressionType type, int level) { +16166: +16166: +16166: +16166: dict_ = std::move(dict); +16166: +16166: zstd_cdict_ = nullptr; +16166: if (!dict_.empty() && (type == kZSTD || type == kZSTDNotFinalCompression)) { +16166: if (level == CompressionOptions::kDefaultCompressionLevel) { +16166: +16166: +16166: +16166: +16166: +16166: level = 3; +16166: } +16166: +16166: +16166: zstd_cdict_ = ZSTD_createCDict(dict_.data(), dict_.size(), level); +16166: +16166: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: zstd_cdict_ != nullptr +16166: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "zstd_cdict_ != nullptr" +16166: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 194 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: } +16166: +16166: } +16166: +16166: ~CompressionDict() { +16166: +16166: size_t res = 0; +16166: if (zstd_cdict_ != nullptr) { +16166: res = ZSTD_freeCDict(zstd_cdict_); +16166: } +16166: +16166: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: res == 0 +16166: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "res == 0" +16166: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 205 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: (void)res; +16166: +16166: } +16166: +16166: +16166: const ZSTD_CDict* GetDigestedZstdCDict() const { return zstd_cdict_; } +16166: +16166: +16166: Slice GetRawDict() const { return dict_; } +16166: +16166: static const CompressionDict& GetEmptyDict() { +16166: static CompressionDict empty_dict{}; +16166: return empty_dict; +16166: } +16166: +16166: CompressionDict() = default; +16166: +16166: CompressionDict(const CompressionDict&) = delete; +16166: CompressionDict& operator=(const CompressionDict&) = delete; +16166: CompressionDict(CompressionDict&&) = delete; +16166: CompressionDict& operator=(CompressionDict&&) = delete; +16166: }; +16166: +16166: +16166: +16166: struct UncompressionDict { +16166: +16166: +16166: std::string dict_; +16166: +16166: +16166: +16166: +16166: CacheAllocationPtr allocation_; +16166: +16166: +16166: +16166: +16166: Slice slice_; +16166: # 254 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: UncompressionDict(std::string dict, bool ) +16166: +16166: : dict_(std::move(dict)), slice_(dict_) { +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: UncompressionDict(Slice slice, CacheAllocationPtr&& allocation, +16166: bool ) +16166: +16166: : allocation_(std::move(allocation)), slice_(std::move(slice)) { +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: UncompressionDict(UncompressionDict&& rhs) +16166: : dict_(std::move(rhs.dict_)), +16166: allocation_(std::move(rhs.allocation_)), +16166: slice_(std::move(rhs.slice_)) +16166: +16166: +16166: +16166: +16166: { +16166: +16166: +16166: +16166: } +16166: +16166: ~UncompressionDict() { +16166: # 304 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: UncompressionDict& operator=(UncompressionDict&& rhs) { +16166: if (this == &rhs) { +16166: return *this; +16166: } +16166: +16166: dict_ = std::move(rhs.dict_); +16166: allocation_ = std::move(rhs.allocation_); +16166: slice_ = std::move(rhs.slice_); +16166: +16166: +16166: +16166: +16166: +16166: +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: bool own_bytes() const { return !dict_.empty() || allocation_; } +16166: +16166: const Slice& GetRawDict() const { return slice_; } +16166: +16166: +16166: const Slice& ContentSlice() const { return slice_; } +16166: static constexpr CacheEntryRole kCacheEntryRole = CacheEntryRole::kOtherBlock; +16166: static constexpr BlockType kBlockType = BlockType::kCompressionDictionary; +16166: +16166: +16166: +16166: +16166: +16166: static const UncompressionDict& GetEmptyDict() { +16166: static UncompressionDict empty_dict{}; +16166: return empty_dict; +16166: } +16166: +16166: size_t ApproximateMemoryUsage() const { +16166: size_t usage = sizeof(struct UncompressionDict); +16166: usage += dict_.size(); +16166: if (allocation_) { +16166: auto allocator = allocation_.get_deleter().allocator; +16166: if (allocator) { +16166: usage += allocator->UsableSize(allocation_.get(), slice_.size()); +16166: } else { +16166: usage += slice_.size(); +16166: } +16166: } +16166: +16166: +16166: +16166: return usage; +16166: } +16166: +16166: UncompressionDict() = default; +16166: +16166: UncompressionDict(const CompressionDict&) = delete; +16166: UncompressionDict& operator=(const CompressionDict&) = delete; +16166: }; +16166: +16166: class CompressionContext { +16166: private: +16166: +16166: ZSTD_CCtx* zstd_ctx_ = nullptr; +16166: +16166: ZSTD_CCtx* CreateZSTDContext() { +16166: +16166: +16166: +16166: return ZSTD_createCCtx(); +16166: +16166: } +16166: +16166: void CreateNativeContext(CompressionType type, int level, bool checksum) { +16166: if (type == kZSTD || type == kZSTDNotFinalCompression) { +16166: zstd_ctx_ = CreateZSTDContext(); +16166: +16166: if (level == CompressionOptions::kDefaultCompressionLevel) { +16166: +16166: +16166: level = 3; +16166: } +16166: size_t err = +16166: ZSTD_CCtx_setParameter(zstd_ctx_, ZSTD_c_compressionLevel, level); +16166: if (ZSTD_isError(err)) { +16166: +16166: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: false +16166: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "false" +16166: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 393 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: ZSTD_freeCCtx(zstd_ctx_); +16166: zstd_ctx_ = CreateZSTDContext(); +16166: } +16166: if (checksum) { +16166: err = ZSTD_CCtx_setParameter(zstd_ctx_, ZSTD_c_checksumFlag, 1); +16166: if (ZSTD_isError(err)) { +16166: +16166: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: false +16166: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "false" +16166: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 400 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: ZSTD_freeCCtx(zstd_ctx_); +16166: zstd_ctx_ = CreateZSTDContext(); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: } +16166: } +16166: void DestroyNativeContext() { +16166: if (zstd_ctx_ != nullptr) { +16166: ZSTD_freeCCtx(zstd_ctx_); +16166: } +16166: } +16166: +16166: public: +16166: +16166: ZSTD_CCtx* ZSTDPreallocCtx() const { +16166: +16166: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: zstd_ctx_ != nullptr +16166: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "zstd_ctx_ != nullptr" +16166: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 420 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: return zstd_ctx_; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: public: +16166: explicit CompressionContext(CompressionType type, +16166: const CompressionOptions& options) { +16166: CreateNativeContext(type, options.level, options.checksum); +16166: } +16166: ~CompressionContext() { DestroyNativeContext(); } +16166: CompressionContext(const CompressionContext&) = delete; +16166: CompressionContext& operator=(const CompressionContext&) = delete; +16166: }; +16166: +16166: class CompressionInfo { +16166: const CompressionOptions& opts_; +16166: const CompressionContext& context_; +16166: const CompressionDict& dict_; +16166: const CompressionType type_; +16166: const uint64_t sample_for_compression_; +16166: +16166: public: +16166: CompressionInfo(const CompressionOptions& _opts, +16166: const CompressionContext& _context, +16166: const CompressionDict& _dict, CompressionType _type, +16166: uint64_t _sample_for_compression) +16166: : opts_(_opts), +16166: context_(_context), +16166: dict_(_dict), +16166: type_(_type), +16166: sample_for_compression_(_sample_for_compression) {} +16166: +16166: const CompressionOptions& options() const { return opts_; } +16166: const CompressionContext& context() const { return context_; } +16166: const CompressionDict& dict() const { return dict_; } +16166: CompressionType type() const { return type_; } +16166: uint64_t SampleForCompression() const { return sample_for_compression_; } +16166: }; +16166: +16166: class UncompressionContext { +16166: private: +16166: CompressionContextCache* ctx_cache_ = nullptr; +16166: ZSTDUncompressCachedData uncomp_cached_data_; +16166: +16166: public: +16166: explicit UncompressionContext(CompressionType type) { +16166: if (type == kZSTD || type == kZSTDNotFinalCompression) { +16166: ctx_cache_ = CompressionContextCache::Instance(); +16166: uncomp_cached_data_ = ctx_cache_->GetCachedZSTDUncompressData(); +16166: } +16166: } +16166: ~UncompressionContext() { +16166: if (uncomp_cached_data_.GetCacheIndex() != -1) { +16166: +16166: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ctx_cache_ != nullptr +16166: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "ctx_cache_ != nullptr" +16166: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 479 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: ctx_cache_->ReturnCachedZSTDUncompressData( +16166: uncomp_cached_data_.GetCacheIndex()); +16166: } +16166: } +16166: UncompressionContext(const UncompressionContext&) = delete; +16166: UncompressionContext& operator=(const UncompressionContext&) = delete; +16166: +16166: ZSTDUncompressCachedData::ZSTDNativeContext GetZSTDContext() const { +16166: return uncomp_cached_data_.Get(); +16166: } +16166: }; +16166: +16166: class UncompressionInfo { +16166: const UncompressionContext& context_; +16166: const UncompressionDict& dict_; +16166: const CompressionType type_; +16166: +16166: public: +16166: UncompressionInfo(const UncompressionContext& _context, +16166: const UncompressionDict& _dict, CompressionType _type) +16166: : context_(_context), dict_(_dict), type_(_type) {} +16166: +16166: const UncompressionContext& context() const { return context_; } +16166: const UncompressionDict& dict() const { return dict_; } +16166: CompressionType type() const { return type_; } +16166: }; +16166: +16166: inline bool Snappy_Supported() { +16166: +16166: return true; +16166: +16166: +16166: +16166: } +16166: +16166: inline bool Zlib_Supported() { +16166: +16166: return true; +16166: +16166: +16166: +16166: } +16166: +16166: inline bool BZip2_Supported() { +16166: +16166: return true; +16166: +16166: +16166: +16166: } +16166: +16166: inline bool LZ4_Supported() { +16166: +16166: return true; +16166: +16166: +16166: +16166: } +16166: +16166: inline bool XPRESS_Supported() { +16166: +16166: +16166: +16166: return false; +16166: +16166: } +16166: +16166: inline bool ZSTD_Supported() { +16166: +16166: +16166: return (ZSTD_versionNumber() >= 800); +16166: +16166: +16166: +16166: } +16166: +16166: inline bool ZSTDNotFinal_Supported() { +16166: +16166: return true; +16166: +16166: +16166: +16166: } +16166: +16166: inline bool ZSTD_Streaming_Supported() { +16166: +16166: return true; +16166: +16166: +16166: +16166: } +16166: +16166: inline bool StreamingCompressionTypeSupported( +16166: CompressionType compression_type) { +16166: switch (compression_type) { +16166: case kNoCompression: +16166: return true; +16166: case kZSTD: +16166: return ZSTD_Streaming_Supported(); +16166: default: +16166: return false; +16166: } +16166: } +16166: +16166: inline bool CompressionTypeSupported(CompressionType compression_type) { +16166: switch (compression_type) { +16166: case kNoCompression: +16166: return true; +16166: case kSnappyCompression: +16166: return Snappy_Supported(); +16166: case kZlibCompression: +16166: return Zlib_Supported(); +16166: case kBZip2Compression: +16166: return BZip2_Supported(); +16166: case kLZ4Compression: +16166: return LZ4_Supported(); +16166: case kLZ4HCCompression: +16166: return LZ4_Supported(); +16166: case kXpressCompression: +16166: return XPRESS_Supported(); +16166: case kZSTDNotFinalCompression: +16166: return ZSTDNotFinal_Supported(); +16166: case kZSTD: +16166: return ZSTD_Supported(); +16166: default: +16166: +16166: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: false +16166: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "false" +16166: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 605 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: return false; +16166: } +16166: } +16166: +16166: inline bool DictCompressionTypeSupported(CompressionType compression_type) { +16166: switch (compression_type) { +16166: case kNoCompression: +16166: return false; +16166: case kSnappyCompression: +16166: return false; +16166: case kZlibCompression: +16166: return Zlib_Supported(); +16166: case kBZip2Compression: +16166: return false; +16166: case kLZ4Compression: +16166: case kLZ4HCCompression: +16166: +16166: return LZ4_Supported(); +16166: +16166: +16166: +16166: case kXpressCompression: +16166: return false; +16166: case kZSTDNotFinalCompression: +16166: +16166: return ZSTDNotFinal_Supported(); +16166: +16166: +16166: +16166: case kZSTD: +16166: +16166: return ZSTD_Supported(); +16166: +16166: +16166: +16166: default: +16166: +16166: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: false +16166: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "false" +16166: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 642 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: return false; +16166: } +16166: } +16166: +16166: inline std::string CompressionTypeToString(CompressionType compression_type) { +16166: switch (compression_type) { +16166: case kNoCompression: +16166: return "NoCompression"; +16166: case kSnappyCompression: +16166: return "Snappy"; +16166: case kZlibCompression: +16166: return "Zlib"; +16166: case kBZip2Compression: +16166: return "BZip2"; +16166: case kLZ4Compression: +16166: return "LZ4"; +16166: case kLZ4HCCompression: +16166: return "LZ4HC"; +16166: case kXpressCompression: +16166: return "Xpress"; +16166: case kZSTD: +16166: return "ZSTD"; +16166: case kZSTDNotFinalCompression: +16166: return "ZSTDNotFinal"; +16166: case kDisableCompressionOption: +16166: return "DisableOption"; +16166: default: +16166: +16166: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: false +16166: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "false" +16166: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 670 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: return ""; +16166: } +16166: } +16166: +16166: inline std::string CompressionOptionsToString( +16166: CompressionOptions& compression_options) { +16166: std::string result; +16166: result.reserve(512); +16166: result.append("window_bits=") +16166: .append(std::to_string(compression_options.window_bits)) +16166: .append("; "); +16166: result.append("level=") +16166: .append(std::to_string(compression_options.level)) +16166: .append("; "); +16166: result.append("strategy=") +16166: .append(std::to_string(compression_options.strategy)) +16166: .append("; "); +16166: result.append("max_dict_bytes=") +16166: .append(std::to_string(compression_options.max_dict_bytes)) +16166: .append("; "); +16166: result.append("zstd_max_train_bytes=") +16166: .append(std::to_string(compression_options.zstd_max_train_bytes)) +16166: .append("; "); +16166: result.append("enabled=") +16166: .append(std::to_string(compression_options.enabled)) +16166: .append("; "); +16166: result.append("max_dict_buffer_bytes=") +16166: .append(std::to_string(compression_options.max_dict_buffer_bytes)) +16166: .append("; "); +16166: result.append("use_zstd_dict_trainer=") +16166: .append(std::to_string(compression_options.use_zstd_dict_trainer)) +16166: .append("; "); +16166: return result; +16166: } +16166: # 713 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: inline bool Snappy_Compress(const CompressionInfo& , const char* input, +16166: size_t length, ::std::string* output) { +16166: +16166: output->resize(snappy::MaxCompressedLength(length)); +16166: size_t outlen; +16166: snappy::RawCompress(input, length, &(*output)[0], &outlen); +16166: output->resize(outlen); +16166: return true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: inline CacheAllocationPtr Snappy_Uncompress( +16166: const char* input, size_t length, size_t* uncompressed_size, +16166: MemoryAllocator* allocator = nullptr) { +16166: +16166: size_t uncompressed_length = 0; +16166: if (!snappy::GetUncompressedLength(input, length, &uncompressed_length)) { +16166: return nullptr; +16166: } +16166: +16166: CacheAllocationPtr output = AllocateBlock(uncompressed_length, allocator); +16166: +16166: if (!snappy::RawUncompress(input, length, output.get())) { +16166: return nullptr; +16166: } +16166: +16166: *uncompressed_size = uncompressed_length; +16166: +16166: return output; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: namespace compression { +16166: +16166: inline size_t PutDecompressedSizeInfo(std::string* output, uint32_t length) { +16166: PutVarint32(output, length); +16166: return output->size(); +16166: } +16166: +16166: inline bool GetDecompressedSizeInfo(const char** input_data, +16166: size_t* input_length, +16166: uint32_t* output_len) { +16166: auto new_input_data = +16166: GetVarint32Ptr(*input_data, *input_data + *input_length, output_len); +16166: if (new_input_data == nullptr) { +16166: return false; +16166: } +16166: *input_length -= (new_input_data - *input_data); +16166: *input_data = new_input_data; +16166: return true; +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline bool Zlib_Compress(const CompressionInfo& info, +16166: uint32_t compress_format_version, const char* input, +16166: size_t length, ::std::string* output) { +16166: +16166: if (length > std::numeric_limits::max()) { +16166: +16166: return false; +16166: } +16166: +16166: size_t output_header_len = 0; +16166: if (compress_format_version == 2) { +16166: output_header_len = compression::PutDecompressedSizeInfo( +16166: output, static_cast(length)); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: static const int memLevel = 8; +16166: int level; +16166: if (info.options().level == CompressionOptions::kDefaultCompressionLevel) { +16166: level = +16166: # 806 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (-1) +16166: # 806 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: } else { +16166: level = info.options().level; +16166: } +16166: z_stream _stream; +16166: memset(&_stream, 0, sizeof(z_stream)); +16166: int st = +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: deflateInit2_(( +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: &_stream +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ),( +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: level +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ),(8),( +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: info.options().window_bits +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ),( +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: memLevel +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ), ( +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: info.options().strategy +16166: # 812 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ), "1.3.1", (int)sizeof(z_stream)) +16166: +16166: # 813 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: if (st != +16166: # 814 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 814 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: return false; +16166: } +16166: +16166: Slice compression_dict = info.dict().GetRawDict(); +16166: if (compression_dict.size()) { +16166: +16166: st = deflateSetDictionary( +16166: &_stream, reinterpret_cast(compression_dict.data()), +16166: static_cast(compression_dict.size())); +16166: if (st != +16166: # 824 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 824 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: deflateEnd(&_stream); +16166: return false; +16166: } +16166: } +16166: +16166: +16166: size_t upper_bound = +16166: deflateBound(&_stream, static_cast(length)); +16166: output->resize(output_header_len + upper_bound); +16166: +16166: +16166: _stream.next_in = (Bytef*)input; +16166: _stream.avail_in = static_cast(length); +16166: +16166: +16166: _stream.avail_out = static_cast(upper_bound); +16166: _stream.next_out = reinterpret_cast(&(*output)[output_header_len]); +16166: +16166: bool compressed = false; +16166: st = deflate(&_stream, +16166: # 844 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 4 +16166: # 844 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ); +16166: if (st == +16166: # 845 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 1 +16166: # 845 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: compressed = true; +16166: output->resize(output->size() - _stream.avail_out); +16166: } +16166: +16166: +16166: +16166: +16166: deflateEnd(&_stream); +16166: return compressed; +16166: # 863 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline CacheAllocationPtr Zlib_Uncompress( +16166: const UncompressionInfo& info, const char* input_data, size_t input_length, +16166: size_t* uncompressed_size, uint32_t compress_format_version, +16166: MemoryAllocator* allocator = nullptr, int windowBits = -14) { +16166: +16166: uint32_t output_len = 0; +16166: if (compress_format_version == 2) { +16166: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +16166: &output_len)) { +16166: return nullptr; +16166: } +16166: } else { +16166: +16166: +16166: size_t proposed_output_len = ((input_length * 5) & (~(4096 - 1))) + 4096; +16166: output_len = static_cast( +16166: std::min(proposed_output_len, +16166: static_cast(std::numeric_limits::max()))); +16166: } +16166: +16166: z_stream _stream; +16166: memset(&_stream, 0, sizeof(z_stream)); +16166: +16166: +16166: +16166: +16166: int st = +16166: +16166: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: inflateInit2_(( +16166: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: &_stream +16166: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ), ( +16166: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: windowBits > 0 ? windowBits + 32 : windowBits +16166: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ), "1.3.1", (int)sizeof(z_stream)) +16166: # 898 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: if (st != +16166: # 899 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 899 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: return nullptr; +16166: } +16166: +16166: const Slice& compression_dict = info.dict().GetRawDict(); +16166: if (compression_dict.size()) { +16166: +16166: st = inflateSetDictionary( +16166: &_stream, reinterpret_cast(compression_dict.data()), +16166: static_cast(compression_dict.size())); +16166: if (st != +16166: # 909 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 909 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: return nullptr; +16166: } +16166: } +16166: +16166: _stream.next_in = (Bytef*)input_data; +16166: _stream.avail_in = static_cast(input_length); +16166: +16166: auto output = AllocateBlock(output_len, allocator); +16166: +16166: _stream.next_out = (Bytef*)output.get(); +16166: _stream.avail_out = static_cast(output_len); +16166: +16166: bool done = false; +16166: while (!done) { +16166: st = inflate(&_stream, +16166: # 924 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 2 +16166: # 924 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ); +16166: switch (st) { +16166: case +16166: # 926 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 1 +16166: # 926 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: : +16166: done = true; +16166: break; +16166: case +16166: # 929 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 929 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: : { +16166: +16166: +16166: +16166: +16166: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: compress_format_version != 2 +16166: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "compress_format_version != 2" +16166: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 933 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: size_t old_sz = output_len; +16166: uint32_t output_len_delta = output_len / 5; +16166: output_len += output_len_delta < 10 ? 10 : output_len_delta; +16166: auto tmp = AllocateBlock(output_len, allocator); +16166: memcpy(tmp.get(), output.get(), old_sz); +16166: output = std::move(tmp); +16166: +16166: +16166: _stream.next_out = (Bytef*)(output.get() + old_sz); +16166: _stream.avail_out = static_cast(output_len - old_sz); +16166: break; +16166: } +16166: case +16166: # 946 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (-5) +16166: # 946 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: : +16166: default: +16166: inflateEnd(&_stream); +16166: return nullptr; +16166: } +16166: } +16166: +16166: +16166: +16166: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: compress_format_version != 2 || _stream.avail_out == 0 +16166: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "compress_format_version != 2 || _stream.avail_out == 0" +16166: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 954 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: +16166: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: output_len >= _stream.avail_out +16166: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "output_len >= _stream.avail_out" +16166: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 955 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: *uncompressed_size = output_len - _stream.avail_out; +16166: inflateEnd(&_stream); +16166: return output; +16166: # 969 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: +16166: +16166: +16166: +16166: inline bool BZip2_Compress(const CompressionInfo& , +16166: uint32_t compress_format_version, const char* input, +16166: size_t length, ::std::string* output) { +16166: +16166: if (length > std::numeric_limits::max()) { +16166: +16166: return false; +16166: } +16166: size_t output_header_len = 0; +16166: if (compress_format_version == 2) { +16166: output_header_len = compression::PutDecompressedSizeInfo( +16166: output, static_cast(length)); +16166: } +16166: +16166: +16166: output->resize(output_header_len + length); +16166: +16166: bz_stream _stream; +16166: memset(&_stream, 0, sizeof(bz_stream)); +16166: +16166: +16166: +16166: +16166: int st = BZ2_bzCompressInit(&_stream, 1, 0, 30); +16166: if (st != +16166: # 999 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 999 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: return false; +16166: } +16166: +16166: +16166: _stream.next_in = (char*)input; +16166: _stream.avail_in = static_cast(length); +16166: +16166: +16166: _stream.avail_out = static_cast(length); +16166: _stream.next_out = reinterpret_cast(&(*output)[output_header_len]); +16166: +16166: bool compressed = false; +16166: st = BZ2_bzCompress(&_stream, +16166: # 1012 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 2 +16166: # 1012 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ); +16166: if (st == +16166: # 1013 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 4 +16166: # 1013 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: compressed = true; +16166: output->resize(output->size() - _stream.avail_out); +16166: } +16166: +16166: +16166: +16166: +16166: BZ2_bzCompressEnd(&_stream); +16166: return compressed; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: inline CacheAllocationPtr BZip2_Uncompress( +16166: const char* input_data, size_t input_length, size_t* uncompressed_size, +16166: uint32_t compress_format_version, MemoryAllocator* allocator = nullptr) { +16166: +16166: uint32_t output_len = 0; +16166: if (compress_format_version == 2) { +16166: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +16166: &output_len)) { +16166: return nullptr; +16166: } +16166: } else { +16166: +16166: +16166: size_t proposed_output_len = ((input_length * 5) & (~(4096 - 1))) + 4096; +16166: output_len = static_cast( +16166: std::min(proposed_output_len, +16166: static_cast(std::numeric_limits::max()))); +16166: } +16166: +16166: bz_stream _stream; +16166: memset(&_stream, 0, sizeof(bz_stream)); +16166: +16166: int st = BZ2_bzDecompressInit(&_stream, 0, 0); +16166: if (st != +16166: # 1059 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 1059 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ) { +16166: return nullptr; +16166: } +16166: +16166: _stream.next_in = (char*)input_data; +16166: _stream.avail_in = static_cast(input_length); +16166: +16166: auto output = AllocateBlock(output_len, allocator); +16166: +16166: _stream.next_out = (char*)output.get(); +16166: _stream.avail_out = static_cast(output_len); +16166: +16166: bool done = false; +16166: while (!done) { +16166: st = BZ2_bzDecompress(&_stream); +16166: switch (st) { +16166: case +16166: # 1075 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 4 +16166: # 1075 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: : +16166: done = true; +16166: break; +16166: case +16166: # 1078 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: 0 +16166: # 1078 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: : { +16166: +16166: +16166: +16166: +16166: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: compress_format_version != 2 +16166: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "compress_format_version != 2" +16166: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1082 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: uint32_t old_sz = output_len; +16166: output_len = output_len * 1.2; +16166: auto tmp = AllocateBlock(output_len, allocator); +16166: memcpy(tmp.get(), output.get(), old_sz); +16166: output = std::move(tmp); +16166: +16166: +16166: _stream.next_out = (char*)(output.get() + old_sz); +16166: _stream.avail_out = static_cast(output_len - old_sz); +16166: break; +16166: } +16166: default: +16166: BZ2_bzDecompressEnd(&_stream); +16166: return nullptr; +16166: } +16166: } +16166: +16166: +16166: +16166: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: compress_format_version != 2 || _stream.avail_out == 0 +16166: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "compress_format_version != 2 || _stream.avail_out == 0" +16166: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1101 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: +16166: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: output_len >= _stream.avail_out +16166: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "output_len >= _stream.avail_out" +16166: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1102 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: *uncompressed_size = output_len - _stream.avail_out; +16166: BZ2_bzDecompressEnd(&_stream); +16166: return output; +16166: # 1114 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline bool LZ4_Compress(const CompressionInfo& info, +16166: uint32_t compress_format_version, const char* input, +16166: size_t length, ::std::string* output) { +16166: +16166: if (length > std::numeric_limits::max()) { +16166: +16166: return false; +16166: } +16166: +16166: size_t output_header_len = 0; +16166: if (compress_format_version == 2) { +16166: +16166: output_header_len = compression::PutDecompressedSizeInfo( +16166: output, static_cast(length)); +16166: } else { +16166: +16166: +16166: output_header_len = 8; +16166: output->resize(output_header_len); +16166: char* p = const_cast(output->c_str()); +16166: memcpy(p, &length, sizeof(length)); +16166: } +16166: int compress_bound = LZ4_compressBound(static_cast(length)); +16166: output->resize(static_cast(output_header_len + compress_bound)); +16166: +16166: int outlen; +16166: +16166: LZ4_stream_t* stream = LZ4_createStream(); +16166: Slice compression_dict = info.dict().GetRawDict(); +16166: if (compression_dict.size()) { +16166: LZ4_loadDict(stream, compression_dict.data(), +16166: static_cast(compression_dict.size())); +16166: } +16166: +16166: int acceleration; +16166: if (info.options().level < 0) { +16166: acceleration = -info.options().level; +16166: } else { +16166: acceleration = 1; +16166: } +16166: outlen = LZ4_compress_fast_continue( +16166: stream, input, &(*output)[output_header_len], static_cast(length), +16166: compress_bound, acceleration); +16166: +16166: +16166: +16166: +16166: +16166: LZ4_freeStream(stream); +16166: +16166: +16166: +16166: +16166: +16166: if (outlen == 0) { +16166: return false; +16166: } +16166: output->resize(static_cast(output_header_len + outlen)); +16166: return true; +16166: # 1189 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline CacheAllocationPtr LZ4_Uncompress(const UncompressionInfo& info, +16166: const char* input_data, +16166: size_t input_length, +16166: size_t* uncompressed_size, +16166: uint32_t compress_format_version, +16166: MemoryAllocator* allocator = nullptr) { +16166: +16166: uint32_t output_len = 0; +16166: if (compress_format_version == 2) { +16166: +16166: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +16166: &output_len)) { +16166: return nullptr; +16166: } +16166: } else { +16166: +16166: +16166: if (input_length < 8) { +16166: return nullptr; +16166: } +16166: if (port::kLittleEndian) { +16166: memcpy(&output_len, input_data, sizeof(output_len)); +16166: } else { +16166: memcpy(&output_len, input_data + 4, sizeof(output_len)); +16166: } +16166: input_length -= 8; +16166: input_data += 8; +16166: } +16166: +16166: auto output = AllocateBlock(output_len, allocator); +16166: +16166: int decompress_bytes = 0; +16166: +16166: +16166: LZ4_streamDecode_t* stream = LZ4_createStreamDecode(); +16166: const Slice& compression_dict = info.dict().GetRawDict(); +16166: if (compression_dict.size()) { +16166: LZ4_setStreamDecode(stream, compression_dict.data(), +16166: static_cast(compression_dict.size())); +16166: } +16166: decompress_bytes = LZ4_decompress_safe_continue( +16166: stream, input_data, output.get(), static_cast(input_length), +16166: static_cast(output_len)); +16166: LZ4_freeStreamDecode(stream); +16166: +16166: +16166: +16166: +16166: +16166: +16166: if (decompress_bytes < 0) { +16166: return nullptr; +16166: } +16166: +16166: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: decompress_bytes == static_cast(output_len) +16166: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "decompress_bytes == static_cast(output_len)" +16166: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1250 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: *uncompressed_size = decompress_bytes; +16166: return output; +16166: # 1262 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline bool LZ4HC_Compress(const CompressionInfo& info, +16166: uint32_t compress_format_version, const char* input, +16166: size_t length, ::std::string* output) { +16166: +16166: if (length > std::numeric_limits::max()) { +16166: +16166: return false; +16166: } +16166: +16166: size_t output_header_len = 0; +16166: if (compress_format_version == 2) { +16166: +16166: output_header_len = compression::PutDecompressedSizeInfo( +16166: output, static_cast(length)); +16166: } else { +16166: +16166: +16166: output_header_len = 8; +16166: output->resize(output_header_len); +16166: char* p = const_cast(output->c_str()); +16166: memcpy(p, &length, sizeof(length)); +16166: } +16166: int compress_bound = LZ4_compressBound(static_cast(length)); +16166: output->resize(static_cast(output_header_len + compress_bound)); +16166: +16166: int outlen; +16166: int level; +16166: if (info.options().level == CompressionOptions::kDefaultCompressionLevel) { +16166: level = 0; +16166: } else { +16166: level = info.options().level; +16166: } +16166: +16166: LZ4_streamHC_t* stream = LZ4_createStreamHC(); +16166: LZ4_resetStreamHC(stream, level); +16166: Slice compression_dict = info.dict().GetRawDict(); +16166: const char* compression_dict_data = +16166: compression_dict.size() > 0 ? compression_dict.data() : nullptr; +16166: size_t compression_dict_size = compression_dict.size(); +16166: if (compression_dict_data != nullptr) { +16166: LZ4_loadDictHC(stream, compression_dict_data, +16166: static_cast(compression_dict_size)); +16166: } +16166: +16166: +16166: outlen = +16166: LZ4_compress_HC_continue(stream, input, &(*output)[output_header_len], +16166: static_cast(length), compress_bound); +16166: +16166: +16166: +16166: +16166: +16166: LZ4_freeStreamHC(stream); +16166: # 1335 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: if (outlen == 0) { +16166: return false; +16166: } +16166: output->resize(static_cast(output_header_len + outlen)); +16166: return true; +16166: # 1348 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline bool XPRESS_Compress(const char* , size_t , +16166: std::string* ) { +16166: return false; +16166: } +16166: # 1368 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: inline char* XPRESS_Uncompress(const char* , +16166: size_t , +16166: size_t* ) { +16166: return nullptr; +16166: } +16166: +16166: +16166: inline bool ZSTD_Compress(const CompressionInfo& info, const char* input, +16166: size_t length, ::std::string* output) { +16166: +16166: if (length > std::numeric_limits::max()) { +16166: +16166: return false; +16166: } +16166: +16166: size_t output_header_len = compression::PutDecompressedSizeInfo( +16166: output, static_cast(length)); +16166: +16166: size_t compressBound = ZSTD_compressBound(length); +16166: output->resize(static_cast(output_header_len + compressBound)); +16166: size_t outlen = 0; +16166: +16166: ZSTD_CCtx* context = info.context().ZSTDPreallocCtx(); +16166: +16166: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: context != nullptr +16166: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "context != nullptr" +16166: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1391 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: +16166: if (info.dict().GetDigestedZstdCDict() != nullptr) { +16166: ZSTD_CCtx_refCDict(context, info.dict().GetDigestedZstdCDict()); +16166: } else { +16166: ZSTD_CCtx_loadDictionary(context, info.dict().GetRawDict().data(), +16166: info.dict().GetRawDict().size()); +16166: } +16166: +16166: +16166: outlen = ZSTD_compress2(context, &(*output)[output_header_len], compressBound, +16166: input, length); +16166: # 1431 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: if (outlen == 0) { +16166: return false; +16166: } +16166: output->resize(output_header_len + outlen); +16166: return true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline CacheAllocationPtr ZSTD_Uncompress( +16166: const UncompressionInfo& info, const char* input_data, size_t input_length, +16166: size_t* uncompressed_size, MemoryAllocator* allocator = nullptr, +16166: const char** error_message = nullptr) { +16166: +16166: static const char* const kErrorDecodeOutputSize = +16166: "Cannot decode output size."; +16166: static const char* const kErrorOutputLenMismatch = +16166: "Decompressed size does not match header."; +16166: uint32_t output_len = 0; +16166: if (!compression::GetDecompressedSizeInfo(&input_data, &input_length, +16166: &output_len)) { +16166: if (error_message) { +16166: *error_message = kErrorDecodeOutputSize; +16166: } +16166: return nullptr; +16166: } +16166: +16166: CacheAllocationPtr output = AllocateBlock(output_len, allocator); +16166: size_t actual_output_length = 0; +16166: +16166: ZSTD_DCtx* context = info.context().GetZSTDContext(); +16166: +16166: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: context != nullptr +16166: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "context != nullptr" +16166: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1472 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: actual_output_length = ZSTD_decompress_usingDict( +16166: context, output.get(), output_len, input_data, input_length, +16166: info.dict().GetRawDict().data(), info.dict().GetRawDict().size()); +16166: # 1491 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: if (ZSTD_isError(actual_output_length)) { +16166: if (error_message) { +16166: *error_message = ZSTD_getErrorName(actual_output_length); +16166: } +16166: return nullptr; +16166: } else if (actual_output_length != output_len) { +16166: if (error_message) { +16166: *error_message = kErrorOutputLenMismatch; +16166: } +16166: return nullptr; +16166: } +16166: +16166: *uncompressed_size = actual_output_length; +16166: return output; +16166: # 1514 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: inline bool ZSTD_TrainDictionarySupported() { +16166: +16166: +16166: +16166: +16166: return (ZSTD_versionNumber() >= 10103); +16166: +16166: +16166: +16166: } +16166: +16166: inline std::string ZSTD_TrainDictionary(const std::string& samples, +16166: const std::vector& sample_lens, +16166: size_t max_dict_bytes) { +16166: +16166: +16166: +16166: +16166: +16166: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: samples.empty() == sample_lens.empty() +16166: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "samples.empty() == sample_lens.empty()" +16166: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1534 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: if (samples.empty()) { +16166: return ""; +16166: } +16166: std::string dict_data(max_dict_bytes, '\0'); +16166: size_t dict_len = ZDICT_trainFromBuffer( +16166: &dict_data[0], max_dict_bytes, &samples[0], &sample_lens[0], +16166: static_cast(sample_lens.size())); +16166: if (ZDICT_isError(dict_len)) { +16166: return ""; +16166: } +16166: +16166: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: dict_len <= max_dict_bytes +16166: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "dict_len <= max_dict_bytes" +16166: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1545 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: dict_data.resize(dict_len); +16166: return dict_data; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: inline std::string ZSTD_TrainDictionary(const std::string& samples, +16166: size_t sample_len_shift, +16166: size_t max_dict_bytes) { +16166: +16166: +16166: +16166: +16166: size_t num_samples = samples.size() >> sample_len_shift; +16166: std::vector sample_lens(num_samples, size_t(1) << sample_len_shift); +16166: return ZSTD_TrainDictionary(samples, sample_lens, max_dict_bytes); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: } +16166: +16166: inline bool ZSTD_FinalizeDictionarySupported() { +16166: +16166: +16166: return (ZSTD_versionNumber() >= 10405); +16166: +16166: +16166: +16166: } +16166: +16166: inline std::string ZSTD_FinalizeDictionary( +16166: const std::string& samples, const std::vector& sample_lens, +16166: size_t max_dict_bytes, int level) { +16166: +16166: +16166: +16166: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: samples.empty() == sample_lens.empty() +16166: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "samples.empty() == sample_lens.empty()" +16166: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1590 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: if (samples.empty()) { +16166: return ""; +16166: } +16166: if (level == CompressionOptions::kDefaultCompressionLevel) { +16166: +16166: +16166: level = 3; +16166: } +16166: std::string dict_data(max_dict_bytes, '\0'); +16166: size_t dict_len = ZDICT_finalizeDictionary( +16166: dict_data.data(), max_dict_bytes, samples.data(), +16166: std::min(static_cast(samples.size()), max_dict_bytes), +16166: samples.data(), sample_lens.data(), +16166: static_cast(sample_lens.size()), +16166: {level, 0 , 0 }); +16166: if (ZDICT_isError(dict_len)) { +16166: return ""; +16166: } else { +16166: +16166: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: dict_len <= max_dict_bytes +16166: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "dict_len <= max_dict_bytes" +16166: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1609 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: dict_data.resize(dict_len); +16166: return dict_data; +16166: } +16166: # 1621 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: } +16166: +16166: inline bool CompressData(const Slice& raw, +16166: const CompressionInfo& compression_info, +16166: uint32_t compress_format_version, +16166: std::string* compressed_output) { +16166: bool ret = false; +16166: +16166: +16166: +16166: switch (compression_info.type()) { +16166: case kSnappyCompression: +16166: ret = Snappy_Compress(compression_info, raw.data(), raw.size(), +16166: compressed_output); +16166: break; +16166: case kZlibCompression: +16166: ret = Zlib_Compress(compression_info, compress_format_version, raw.data(), +16166: raw.size(), compressed_output); +16166: break; +16166: case kBZip2Compression: +16166: ret = BZip2_Compress(compression_info, compress_format_version, +16166: raw.data(), raw.size(), compressed_output); +16166: break; +16166: case kLZ4Compression: +16166: ret = LZ4_Compress(compression_info, compress_format_version, raw.data(), +16166: raw.size(), compressed_output); +16166: break; +16166: case kLZ4HCCompression: +16166: ret = LZ4HC_Compress(compression_info, compress_format_version, +16166: raw.data(), raw.size(), compressed_output); +16166: break; +16166: case kXpressCompression: +16166: ret = XPRESS_Compress(raw.data(), raw.size(), compressed_output); +16166: break; +16166: case kZSTD: +16166: case kZSTDNotFinalCompression: +16166: ret = ZSTD_Compress(compression_info, raw.data(), raw.size(), +16166: compressed_output); +16166: break; +16166: default: +16166: +16166: break; +16166: } +16166: +16166: rocksdb::SyncPoint::GetInstance()->Process("CompressData:TamperWithReturnValue", static_cast(&ret)) +16166: ; +16166: +16166: return ret; +16166: } +16166: +16166: inline CacheAllocationPtr UncompressData( +16166: const UncompressionInfo& uncompression_info, const char* data, size_t n, +16166: size_t* uncompressed_size, uint32_t compress_format_version, +16166: MemoryAllocator* allocator = nullptr, +16166: const char** error_message = nullptr) { +16166: switch (uncompression_info.type()) { +16166: case kSnappyCompression: +16166: return Snappy_Uncompress(data, n, uncompressed_size, allocator); +16166: case kZlibCompression: +16166: return Zlib_Uncompress(uncompression_info, data, n, uncompressed_size, +16166: compress_format_version, allocator); +16166: case kBZip2Compression: +16166: return BZip2_Uncompress(data, n, uncompressed_size, +16166: compress_format_version, allocator); +16166: case kLZ4Compression: +16166: case kLZ4HCCompression: +16166: return LZ4_Uncompress(uncompression_info, data, n, uncompressed_size, +16166: compress_format_version, allocator); +16166: case kXpressCompression: +16166: +16166: +16166: return CacheAllocationPtr(XPRESS_Uncompress(data, n, uncompressed_size)); +16166: case kZSTD: +16166: case kZSTDNotFinalCompression: +16166: +16166: return ZSTD_Uncompress(uncompression_info, data, n, uncompressed_size, +16166: allocator, error_message); +16166: default: +16166: return CacheAllocationPtr(); +16166: } +16166: } +16166: +16166: +16166: class CompressionTypeRecord { +16166: public: +16166: explicit CompressionTypeRecord(CompressionType compression_type) +16166: : compression_type_(compression_type) {} +16166: +16166: CompressionType GetCompressionType() const { return compression_type_; } +16166: +16166: inline void EncodeTo(std::string* dst) const { +16166: +16166: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: dst != nullptr +16166: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "dst != nullptr" +16166: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1712 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: PutFixed32(dst, compression_type_); +16166: } +16166: +16166: inline Status DecodeFrom(Slice* src) { +16166: constexpr char class_name[] = "CompressionTypeRecord"; +16166: +16166: uint32_t val; +16166: if (!GetFixed32(src, &val)) { +16166: return Status::Corruption(class_name, +16166: "Error decoding WAL compression type"); +16166: } +16166: CompressionType compression_type = static_cast(val); +16166: if (!StreamingCompressionTypeSupported(compression_type)) { +16166: return Status::Corruption(class_name, +16166: "WAL compression type not supported"); +16166: } +16166: compression_type_ = compression_type; +16166: return Status::OK(); +16166: } +16166: +16166: inline std::string DebugString() const { +16166: return "compression_type: " + CompressionTypeToString(compression_type_); +16166: } +16166: +16166: private: +16166: CompressionType compression_type_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class StreamingCompress { +16166: public: +16166: StreamingCompress(CompressionType compression_type, +16166: const CompressionOptions& opts, +16166: uint32_t compress_format_version, size_t max_output_len) +16166: : compression_type_(compression_type), +16166: opts_(opts), +16166: compress_format_version_(compress_format_version), +16166: max_output_len_(max_output_len) {} +16166: virtual ~StreamingCompress() = default; +16166: # 1767 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: virtual int Compress(const char* input, size_t input_size, char* output, +16166: size_t* output_pos) = 0; +16166: +16166: +16166: static StreamingCompress* Create(CompressionType compression_type, +16166: const CompressionOptions& opts, +16166: uint32_t compress_format_version, +16166: size_t max_output_len); +16166: virtual void Reset() = 0; +16166: +16166: protected: +16166: const CompressionType compression_type_; +16166: const CompressionOptions opts_; +16166: const uint32_t compress_format_version_; +16166: const size_t max_output_len_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class StreamingUncompress { +16166: public: +16166: StreamingUncompress(CompressionType compression_type, +16166: uint32_t compress_format_version, size_t max_output_len) +16166: : compression_type_(compression_type), +16166: compress_format_version_(compress_format_version), +16166: max_output_len_(max_output_len) {} +16166: virtual ~StreamingUncompress() = default; +16166: # 1810 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: virtual int Uncompress(const char* input, size_t input_size, char* output, +16166: size_t* output_pos) = 0; +16166: static StreamingUncompress* Create(CompressionType compression_type, +16166: uint32_t compress_format_version, +16166: size_t max_output_len); +16166: virtual void Reset() = 0; +16166: +16166: protected: +16166: CompressionType compression_type_; +16166: uint32_t compress_format_version_; +16166: size_t max_output_len_; +16166: }; +16166: +16166: class ZSTDStreamingCompress final : public StreamingCompress { +16166: public: +16166: explicit ZSTDStreamingCompress(const CompressionOptions& opts, +16166: uint32_t compress_format_version, +16166: size_t max_output_len) +16166: : StreamingCompress(kZSTD, opts, compress_format_version, +16166: max_output_len) { +16166: +16166: cctx_ = ZSTD_createCCtx(); +16166: +16166: ZSTD_CCtx_setParameter(cctx_, ZSTD_c_checksumFlag, 1); +16166: +16166: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: cctx_ != nullptr +16166: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "cctx_ != nullptr" +16166: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1834 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: input_buffer_ = { nullptr, 0, 0}; +16166: +16166: } +16166: ~ZSTDStreamingCompress() override { +16166: +16166: ZSTD_freeCCtx(cctx_); +16166: +16166: } +16166: int Compress(const char* input, size_t input_size, char* output, +16166: size_t* output_pos) override; +16166: void Reset() override; +16166: +16166: ZSTD_CCtx* cctx_; +16166: ZSTD_inBuffer input_buffer_; +16166: +16166: }; +16166: +16166: class ZSTDStreamingUncompress final : public StreamingUncompress { +16166: public: +16166: explicit ZSTDStreamingUncompress(uint32_t compress_format_version, +16166: size_t max_output_len) +16166: : StreamingUncompress(kZSTD, compress_format_version, max_output_len) { +16166: +16166: dctx_ = ZSTD_createDCtx(); +16166: +16166: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: (static_cast ( +16166: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: dctx_ != nullptr +16166: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: "dctx_ != nullptr" +16166: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1859 "/build/reproducible-path/rocksdb-9.10.0/util/compression.h" +16166: ; +16166: input_buffer_ = { nullptr, 0, 0}; +16166: +16166: } +16166: ~ZSTDStreamingUncompress() override { +16166: +16166: ZSTD_freeDCtx(dctx_); +16166: +16166: } +16166: int Uncompress(const char* input, size_t input_size, char* output, +16166: size_t* output_size) override; +16166: void Reset() override; +16166: +16166: private: +16166: +16166: ZSTD_DCtx* dctx_; +16166: ZSTD_inBuffer input_buffer_; +16166: +16166: }; +16166: +16166: } +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/options/cf_options.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: struct ImmutableCFOptions { +16166: public: +16166: static const char* kName() { return "ImmutableCFOptions"; } +16166: explicit ImmutableCFOptions(); +16166: explicit ImmutableCFOptions(const ColumnFamilyOptions& cf_options); +16166: +16166: CompactionStyle compaction_style; +16166: +16166: CompactionPri compaction_pri; +16166: +16166: const Comparator* user_comparator; +16166: InternalKeyComparator internal_comparator; +16166: +16166: std::shared_ptr merge_operator; +16166: +16166: const CompactionFilter* compaction_filter; +16166: +16166: std::shared_ptr compaction_filter_factory; +16166: +16166: int min_write_buffer_number_to_merge; +16166: +16166: int max_write_buffer_number_to_maintain; +16166: +16166: int64_t max_write_buffer_size_to_maintain; +16166: +16166: bool inplace_update_support; +16166: +16166: UpdateStatus (*inplace_callback)(char* existing_value, +16166: uint32_t* existing_value_size, +16166: Slice delta_value, +16166: std::string* merged_value); +16166: +16166: std::shared_ptr memtable_factory; +16166: +16166: Options::TablePropertiesCollectorFactories +16166: table_properties_collector_factories; +16166: +16166: +16166: +16166: uint32_t bloom_locality; +16166: +16166: bool level_compaction_dynamic_level_bytes; +16166: +16166: int num_levels; +16166: +16166: bool optimize_filters_for_hits; +16166: +16166: bool force_consistency_checks; +16166: +16166: Temperature default_temperature; +16166: +16166: std::shared_ptr +16166: memtable_insert_with_hint_prefix_extractor; +16166: +16166: std::vector cf_paths; +16166: +16166: std::shared_ptr compaction_thread_limiter; +16166: +16166: std::shared_ptr sst_partitioner_factory; +16166: +16166: std::shared_ptr blob_cache; +16166: +16166: bool persist_user_defined_timestamps; +16166: }; +16166: +16166: struct ImmutableOptions : public ImmutableDBOptions, public ImmutableCFOptions { +16166: explicit ImmutableOptions(); +16166: explicit ImmutableOptions(const Options& options); +16166: +16166: ImmutableOptions(const DBOptions& db_options, +16166: const ColumnFamilyOptions& cf_options); +16166: +16166: ImmutableOptions(const ImmutableDBOptions& db_options, +16166: const ImmutableCFOptions& cf_options); +16166: +16166: ImmutableOptions(const DBOptions& db_options, +16166: const ImmutableCFOptions& cf_options); +16166: +16166: ImmutableOptions(const ImmutableDBOptions& db_options, +16166: const ColumnFamilyOptions& cf_options); +16166: }; +16166: +16166: struct MutableCFOptions { +16166: static const char* kName() { return "MutableCFOptions"; } +16166: explicit MutableCFOptions(const ColumnFamilyOptions& options) +16166: : write_buffer_size(options.write_buffer_size), +16166: max_write_buffer_number(options.max_write_buffer_number), +16166: arena_block_size(options.arena_block_size), +16166: memtable_prefix_bloom_size_ratio( +16166: options.memtable_prefix_bloom_size_ratio), +16166: memtable_whole_key_filtering(options.memtable_whole_key_filtering), +16166: memtable_huge_page_size(options.memtable_huge_page_size), +16166: max_successive_merges(options.max_successive_merges), +16166: strict_max_successive_merges(options.strict_max_successive_merges), +16166: inplace_update_num_locks(options.inplace_update_num_locks), +16166: prefix_extractor(options.prefix_extractor), +16166: experimental_mempurge_threshold( +16166: options.experimental_mempurge_threshold), +16166: disable_auto_compactions(options.disable_auto_compactions), +16166: table_factory(options.table_factory), +16166: soft_pending_compaction_bytes_limit( +16166: options.soft_pending_compaction_bytes_limit), +16166: hard_pending_compaction_bytes_limit( +16166: options.hard_pending_compaction_bytes_limit), +16166: level0_file_num_compaction_trigger( +16166: options.level0_file_num_compaction_trigger), +16166: level0_slowdown_writes_trigger(options.level0_slowdown_writes_trigger), +16166: level0_stop_writes_trigger(options.level0_stop_writes_trigger), +16166: max_compaction_bytes(options.max_compaction_bytes), +16166: target_file_size_base(options.target_file_size_base), +16166: target_file_size_multiplier(options.target_file_size_multiplier), +16166: max_bytes_for_level_base(options.max_bytes_for_level_base), +16166: max_bytes_for_level_multiplier(options.max_bytes_for_level_multiplier), +16166: ttl(options.ttl), +16166: periodic_compaction_seconds(options.periodic_compaction_seconds), +16166: max_bytes_for_level_multiplier_additional( +16166: options.max_bytes_for_level_multiplier_additional), +16166: compaction_options_fifo(options.compaction_options_fifo), +16166: compaction_options_universal(options.compaction_options_universal), +16166: preclude_last_level_data_seconds( +16166: options.preclude_last_level_data_seconds), +16166: preserve_internal_time_seconds(options.preserve_internal_time_seconds), +16166: enable_blob_files(options.enable_blob_files), +16166: min_blob_size(options.min_blob_size), +16166: blob_file_size(options.blob_file_size), +16166: blob_compression_type(options.blob_compression_type), +16166: enable_blob_garbage_collection(options.enable_blob_garbage_collection), +16166: blob_garbage_collection_age_cutoff( +16166: options.blob_garbage_collection_age_cutoff), +16166: blob_garbage_collection_force_threshold( +16166: options.blob_garbage_collection_force_threshold), +16166: blob_compaction_readahead_size(options.blob_compaction_readahead_size), +16166: blob_file_starting_level(options.blob_file_starting_level), +16166: prepopulate_blob_cache(options.prepopulate_blob_cache), +16166: max_sequential_skip_in_iterations( +16166: options.max_sequential_skip_in_iterations), +16166: paranoid_file_checks(options.paranoid_file_checks), +16166: report_bg_io_stats(options.report_bg_io_stats), +16166: compression(options.compression), +16166: bottommost_compression(options.bottommost_compression), +16166: compression_opts(options.compression_opts), +16166: bottommost_compression_opts(options.bottommost_compression_opts), +16166: last_level_temperature(options.last_level_temperature), +16166: default_write_temperature(options.default_write_temperature), +16166: memtable_protection_bytes_per_key( +16166: options.memtable_protection_bytes_per_key), +16166: block_protection_bytes_per_key(options.block_protection_bytes_per_key), +16166: paranoid_memory_checks(options.paranoid_memory_checks), +16166: sample_for_compression( +16166: options.sample_for_compression), +16166: compression_per_level(options.compression_per_level), +16166: memtable_max_range_deletions(options.memtable_max_range_deletions), +16166: bottommost_file_compaction_delay( +16166: options.bottommost_file_compaction_delay), +16166: uncache_aggressiveness(options.uncache_aggressiveness) { +16166: RefreshDerivedOptions(options.num_levels, options.compaction_style); +16166: } +16166: +16166: MutableCFOptions() +16166: : write_buffer_size(0), +16166: max_write_buffer_number(0), +16166: arena_block_size(0), +16166: memtable_prefix_bloom_size_ratio(0), +16166: memtable_whole_key_filtering(false), +16166: memtable_huge_page_size(0), +16166: max_successive_merges(0), +16166: strict_max_successive_merges(false), +16166: inplace_update_num_locks(0), +16166: prefix_extractor(nullptr), +16166: experimental_mempurge_threshold(0.0), +16166: disable_auto_compactions(false), +16166: soft_pending_compaction_bytes_limit(0), +16166: hard_pending_compaction_bytes_limit(0), +16166: level0_file_num_compaction_trigger(0), +16166: level0_slowdown_writes_trigger(0), +16166: level0_stop_writes_trigger(0), +16166: max_compaction_bytes(0), +16166: target_file_size_base(0), +16166: target_file_size_multiplier(0), +16166: max_bytes_for_level_base(0), +16166: max_bytes_for_level_multiplier(0), +16166: ttl(0), +16166: periodic_compaction_seconds(0), +16166: compaction_options_fifo(), +16166: preclude_last_level_data_seconds(0), +16166: preserve_internal_time_seconds(0), +16166: enable_blob_files(false), +16166: min_blob_size(0), +16166: blob_file_size(0), +16166: blob_compression_type(kNoCompression), +16166: enable_blob_garbage_collection(false), +16166: blob_garbage_collection_age_cutoff(0.0), +16166: blob_garbage_collection_force_threshold(0.0), +16166: blob_compaction_readahead_size(0), +16166: blob_file_starting_level(0), +16166: prepopulate_blob_cache(PrepopulateBlobCache::kDisable), +16166: max_sequential_skip_in_iterations(0), +16166: paranoid_file_checks(false), +16166: report_bg_io_stats(false), +16166: compression(Snappy_Supported() ? kSnappyCompression : kNoCompression), +16166: bottommost_compression(kDisableCompressionOption), +16166: last_level_temperature(Temperature::kUnknown), +16166: default_write_temperature(Temperature::kUnknown), +16166: memtable_protection_bytes_per_key(0), +16166: block_protection_bytes_per_key(0), +16166: paranoid_memory_checks(false), +16166: sample_for_compression(0), +16166: memtable_max_range_deletions(0), +16166: bottommost_file_compaction_delay(0), +16166: uncache_aggressiveness(0) {} +16166: +16166: explicit MutableCFOptions(const Options& options); +16166: +16166: +16166: void RefreshDerivedOptions(int num_levels, CompactionStyle compaction_style); +16166: +16166: void RefreshDerivedOptions(const ImmutableCFOptions& ioptions) { +16166: RefreshDerivedOptions(ioptions.num_levels, ioptions.compaction_style); +16166: } +16166: +16166: int MaxBytesMultiplerAdditional(int level) const { +16166: if (level >= +16166: static_cast(max_bytes_for_level_multiplier_additional.size())) { +16166: return 1; +16166: } +16166: return max_bytes_for_level_multiplier_additional[level]; +16166: } +16166: +16166: void Dump(Logger* log) const; +16166: +16166: +16166: size_t write_buffer_size; +16166: int max_write_buffer_number; +16166: size_t arena_block_size; +16166: double memtable_prefix_bloom_size_ratio; +16166: bool memtable_whole_key_filtering; +16166: size_t memtable_huge_page_size; +16166: size_t max_successive_merges; +16166: bool strict_max_successive_merges; +16166: size_t inplace_update_num_locks; +16166: +16166: +16166: +16166: std::shared_ptr prefix_extractor; +16166: # 281 "/build/reproducible-path/rocksdb-9.10.0/options/cf_options.h" +16166: double experimental_mempurge_threshold; +16166: +16166: +16166: bool disable_auto_compactions; +16166: std::shared_ptr table_factory; +16166: uint64_t soft_pending_compaction_bytes_limit; +16166: uint64_t hard_pending_compaction_bytes_limit; +16166: int level0_file_num_compaction_trigger; +16166: int level0_slowdown_writes_trigger; +16166: int level0_stop_writes_trigger; +16166: uint64_t max_compaction_bytes; +16166: uint64_t target_file_size_base; +16166: int target_file_size_multiplier; +16166: uint64_t max_bytes_for_level_base; +16166: double max_bytes_for_level_multiplier; +16166: uint64_t ttl; +16166: uint64_t periodic_compaction_seconds; +16166: std::vector max_bytes_for_level_multiplier_additional; +16166: CompactionOptionsFIFO compaction_options_fifo; +16166: CompactionOptionsUniversal compaction_options_universal; +16166: uint64_t preclude_last_level_data_seconds; +16166: uint64_t preserve_internal_time_seconds; +16166: +16166: +16166: bool enable_blob_files; +16166: uint64_t min_blob_size; +16166: uint64_t blob_file_size; +16166: CompressionType blob_compression_type; +16166: bool enable_blob_garbage_collection; +16166: double blob_garbage_collection_age_cutoff; +16166: double blob_garbage_collection_force_threshold; +16166: uint64_t blob_compaction_readahead_size; +16166: int blob_file_starting_level; +16166: PrepopulateBlobCache prepopulate_blob_cache; +16166: +16166: +16166: uint64_t max_sequential_skip_in_iterations; +16166: bool paranoid_file_checks; +16166: bool report_bg_io_stats; +16166: CompressionType compression; +16166: CompressionType bottommost_compression; +16166: CompressionOptions compression_opts; +16166: CompressionOptions bottommost_compression_opts; +16166: Temperature last_level_temperature; +16166: Temperature default_write_temperature; +16166: uint32_t memtable_protection_bytes_per_key; +16166: uint8_t block_protection_bytes_per_key; +16166: bool paranoid_memory_checks; +16166: +16166: uint64_t sample_for_compression; +16166: std::vector compression_per_level; +16166: uint32_t memtable_max_range_deletions; +16166: uint32_t bottommost_file_compaction_delay; +16166: uint32_t uncache_aggressiveness; +16166: +16166: +16166: +16166: std::vector max_file_size; +16166: }; +16166: +16166: uint64_t MultiplyCheckOverflow(uint64_t op1, double op2); +16166: +16166: +16166: uint64_t MaxFileSizeForLevel(const MutableCFOptions& cf_options, +16166: int level, CompactionStyle compaction_style, int base_level = 1, +16166: bool level_compaction_dynamic_level_bytes = false); +16166: +16166: +16166: +16166: size_t MaxFileSizeForL0MetaPin(const MutableCFOptions& cf_options); +16166: +16166: Status GetStringFromMutableCFOptions(const ConfigOptions& config_options, +16166: const MutableCFOptions& mutable_opts, +16166: std::string* opt_string); +16166: +16166: Status GetMutableOptionsFromStrings( +16166: const MutableCFOptions& base_options, +16166: const std::unordered_map& options_map, +16166: Logger* info_log, MutableCFOptions* new_options); +16166: +16166: +16166: std::vector TEST_GetImmutableInMutableCFOptions(); +16166: extern bool TEST_allowSetOptionsImmutableInMutable; +16166: +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/malloc.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/port/malloc.h" +16166: +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class RandomAccessFile; +16166: struct ReadOptions; +16166: +16166: bool ShouldReportDetailedTime(Env* env, Statistics* stats); +16166: +16166: +16166: constexpr uint32_t kMagicNumberLengthByte = 8; +16166: +16166: extern const uint64_t kLegacyBlockBasedTableMagicNumber; +16166: extern const uint64_t kBlockBasedTableMagicNumber; +16166: +16166: extern const uint64_t kLegacyPlainTableMagicNumber; +16166: extern const uint64_t kPlainTableMagicNumber; +16166: +16166: extern const uint64_t kCuckooTableMagicNumber; +16166: +16166: +16166: +16166: class BlockHandle { +16166: public: +16166: +16166: +16166: BlockHandle(); +16166: BlockHandle(uint64_t offset, uint64_t size); +16166: +16166: +16166: uint64_t offset() const { return offset_; } +16166: void set_offset(uint64_t _offset) { offset_ = _offset; } +16166: +16166: +16166: uint64_t size() const { return size_; } +16166: void set_size(uint64_t _size) { size_ = _size; } +16166: +16166: void EncodeTo(std::string* dst) const; +16166: char* EncodeTo(char* dst) const; +16166: Status DecodeFrom(Slice* input); +16166: Status DecodeSizeFrom(uint64_t offset, Slice* input); +16166: +16166: +16166: std::string ToString(bool hex = true) const; +16166: +16166: +16166: +16166: bool IsNull() const { return offset_ == 0 && size_ == 0; } +16166: +16166: static const BlockHandle& NullBlockHandle() { return kNullBlockHandle; } +16166: +16166: +16166: static constexpr uint32_t kMaxEncodedLength = 2 * kMaxVarint64Length; +16166: +16166: inline bool operator==(const BlockHandle& rhs) const { +16166: return offset_ == rhs.offset_ && size_ == rhs.size_; +16166: } +16166: inline bool operator!=(const BlockHandle& rhs) const { +16166: return !(*this == rhs); +16166: } +16166: +16166: private: +16166: uint64_t offset_; +16166: uint64_t size_; +16166: +16166: static const BlockHandle kNullBlockHandle; +16166: }; +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: struct IndexValue { +16166: BlockHandle handle; +16166: +16166: Slice first_internal_key; +16166: +16166: IndexValue() = default; +16166: IndexValue(BlockHandle _handle, Slice _first_internal_key) +16166: : handle(_handle), first_internal_key(_first_internal_key) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: void EncodeTo(std::string* dst, bool have_first_key, +16166: const BlockHandle* previous_handle) const; +16166: Status DecodeFrom(Slice* input, bool have_first_key, +16166: const BlockHandle* previous_handle); +16166: +16166: std::string ToString(bool hex, bool have_first_key) const; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline uint32_t ChecksumModifierForContext(uint32_t base_context_checksum, +16166: uint64_t offset) { +16166: +16166: +16166: +16166: +16166: +16166: uint32_t all_or_nothing = uint32_t{0} - (base_context_checksum != 0); +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: uint32_t modifier = +16166: base_context_checksum ^ (Lower32of64(offset) + Upper32of64(offset)); +16166: +16166: return modifier & all_or_nothing; +16166: } +16166: +16166: inline uint32_t GetCompressFormatForVersion(uint32_t format_version) { +16166: +16166: +16166: +16166: return format_version >= 2 ? 2 : 1; +16166: } +16166: +16166: constexpr uint32_t kLatestFormatVersion = 6; +16166: +16166: inline bool IsSupportedFormatVersion(uint32_t version) { +16166: return version <= kLatestFormatVersion; +16166: } +16166: +16166: +16166: inline bool FormatVersionUsesContextChecksum(uint32_t version) { +16166: return version >= 6; +16166: } +16166: +16166: inline bool FormatVersionUsesIndexHandleInFooter(uint32_t version) { +16166: return version < 6; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: class Footer { +16166: public: +16166: +16166: Footer() {} +16166: +16166: void Reset() { +16166: table_magic_number_ = kNullTableMagicNumber; +16166: format_version_ = kInvalidFormatVersion; +16166: base_context_checksum_ = 0; +16166: metaindex_handle_ = BlockHandle::NullBlockHandle(); +16166: index_handle_ = BlockHandle::NullBlockHandle(); +16166: checksum_type_ = kInvalidChecksumType; +16166: block_trailer_size_ = 0; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status DecodeFrom(Slice input, uint64_t input_offset, +16166: uint64_t enforce_table_magic_number = 0); +16166: +16166: +16166: +16166: uint64_t table_magic_number() const { return table_magic_number_; } +16166: +16166: +16166: +16166: +16166: uint32_t format_version() const { return format_version_; } +16166: +16166: +16166: uint32_t base_context_checksum() const { return base_context_checksum_; } +16166: +16166: +16166: const BlockHandle& metaindex_handle() const { return metaindex_handle_; } +16166: +16166: +16166: +16166: const BlockHandle& index_handle() const { return index_handle_; } +16166: +16166: +16166: ChecksumType checksum_type() const { +16166: return static_cast(checksum_type_); +16166: } +16166: +16166: +16166: +16166: +16166: inline size_t GetBlockTrailerSize() const { return block_trailer_size_; } +16166: +16166: +16166: std::string ToString() const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: static constexpr uint32_t kVersion0EncodedLength = +16166: 2 * BlockHandle::kMaxEncodedLength + kMagicNumberLengthByte; +16166: static constexpr uint32_t kMinEncodedLength = kVersion0EncodedLength; +16166: +16166: +16166: +16166: +16166: +16166: static constexpr uint32_t kNewVersionsEncodedLength = +16166: 1 + 2 * BlockHandle::kMaxEncodedLength + 4 + kMagicNumberLengthByte; +16166: static constexpr uint32_t kMaxEncodedLength = kNewVersionsEncodedLength; +16166: +16166: static constexpr uint64_t kNullTableMagicNumber = 0; +16166: +16166: static constexpr uint32_t kInvalidFormatVersion = 0xffffffffU; +16166: +16166: private: +16166: static constexpr int kInvalidChecksumType = +16166: (1 << (sizeof(ChecksumType) * 8)) | kNoChecksum; +16166: +16166: uint64_t table_magic_number_ = kNullTableMagicNumber; +16166: uint32_t format_version_ = kInvalidFormatVersion; +16166: uint32_t base_context_checksum_ = 0; +16166: BlockHandle metaindex_handle_; +16166: BlockHandle index_handle_; +16166: int checksum_type_ = kInvalidChecksumType; +16166: uint8_t block_trailer_size_ = 0; +16166: }; +16166: +16166: +16166: class FooterBuilder { +16166: public: +16166: # 293 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: Status Build(uint64_t table_magic_number, uint32_t format_version, +16166: uint64_t footer_offset, ChecksumType checksum_type, +16166: const BlockHandle& metaindex_handle, +16166: const BlockHandle& index_handle = BlockHandle::NullBlockHandle(), +16166: uint32_t base_context_checksum = 0); +16166: +16166: +16166: +16166: const Slice& GetSlice() const { +16166: +16166: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 3 4 +16166: (static_cast ( +16166: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: slice_.size() +16166: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: "slice_.size()" +16166: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 302 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: ; +16166: return slice_; +16166: } +16166: +16166: private: +16166: Slice slice_; +16166: std::array data_; +16166: }; +16166: +16166: +16166: +16166: +16166: Status ReadFooterFromFile(const IOOptions& opts, RandomAccessFileReader* file, +16166: FileSystem& fs, FilePrefetchBuffer* prefetch_buffer, +16166: uint64_t file_size, Footer* footer, +16166: uint64_t enforce_table_magic_number = 0, +16166: Statistics* stats = nullptr); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint32_t ComputeBuiltinChecksum(ChecksumType type, const char* data, +16166: size_t size); +16166: uint32_t ComputeBuiltinChecksumWithLastByte(ChecksumType type, const char* data, +16166: size_t size, char last_byte); +16166: # 354 "/build/reproducible-path/rocksdb-9.10.0/table/format.h" +16166: struct BlockContents { +16166: +16166: Slice data; +16166: CacheAllocationPtr allocation; +16166: +16166: +16166: +16166: +16166: bool has_trailer = false; +16166: +16166: +16166: BlockContents() {} +16166: +16166: +16166: BlockContents(const Slice& _data) : data(_data) {} +16166: +16166: +16166: BlockContents(CacheAllocationPtr&& _data, size_t _size) +16166: : data(_data.get(), _size), allocation(std::move(_data)) {} +16166: +16166: +16166: BlockContents(std::unique_ptr&& _data, size_t _size) +16166: : data(_data.get(), _size) { +16166: allocation.reset(_data.release()); +16166: } +16166: +16166: +16166: bool own_bytes() const { return allocation.get() != nullptr; } +16166: +16166: +16166: size_t usable_size() const { +16166: if (allocation.get() != nullptr) { +16166: auto allocator = allocation.get_deleter().allocator; +16166: if (allocator) { +16166: return allocator->UsableSize(allocation.get(), data.size()); +16166: } +16166: +16166: return malloc_usable_size(allocation.get()); +16166: +16166: +16166: +16166: } else { +16166: return 0; +16166: } +16166: } +16166: +16166: size_t ApproximateMemoryUsage() const { +16166: return usable_size() + sizeof(*this); +16166: } +16166: +16166: BlockContents(BlockContents&& other) noexcept { *this = std::move(other); } +16166: +16166: BlockContents& operator=(BlockContents&& other) { +16166: data = std::move(other.data); +16166: allocation = std::move(other.allocation); +16166: +16166: has_trailer = other.has_trailer; +16166: +16166: return *this; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status UncompressSerializedBlock(const UncompressionInfo& info, +16166: const char* data, size_t size, +16166: BlockContents* out_contents, +16166: uint32_t format_version, +16166: const ImmutableOptions& ioptions, +16166: MemoryAllocator* allocator = nullptr); +16166: +16166: +16166: +16166: Status UncompressBlockData(const UncompressionInfo& info, const char* data, +16166: size_t size, BlockContents* out_contents, +16166: uint32_t format_version, +16166: const ImmutableOptions& ioptions, +16166: MemoryAllocator* allocator = nullptr); +16166: +16166: +16166: Status ReifyDbHostIdProperty(Env* env, std::string* db_host_id); +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline BlockHandle::BlockHandle() : BlockHandle(~uint64_t{0}, ~uint64_t{0}) {} +16166: +16166: inline BlockHandle::BlockHandle(uint64_t _offset, uint64_t _size) +16166: : offset_(_offset), size_(_size) {} +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class PinnedIteratorsManager; +16166: +16166: enum class IterBoundCheck : char { +16166: kUnknown = 0, +16166: kOutOfBound, +16166: kInbound, +16166: }; +16166: +16166: struct IterateResult { +16166: Slice key; +16166: IterBoundCheck bound_check_result = IterBoundCheck::kUnknown; +16166: +16166: bool value_prepared = true; +16166: }; +16166: +16166: template +16166: class InternalIteratorBase : public Cleanable { +16166: public: +16166: InternalIteratorBase() {} +16166: +16166: +16166: InternalIteratorBase(const InternalIteratorBase&) = delete; +16166: InternalIteratorBase& operator=(const InternalIteratorBase&) = delete; +16166: +16166: virtual ~InternalIteratorBase() {} +16166: # 55 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: virtual void SetRangeDelReadSeqno(SequenceNumber ) {} +16166: +16166: +16166: +16166: +16166: virtual bool Valid() const = 0; +16166: +16166: +16166: +16166: virtual void SeekToFirst() = 0; +16166: +16166: +16166: +16166: virtual void SeekToLast() = 0; +16166: # 77 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: virtual void Seek(const Slice& target) = 0; +16166: +16166: +16166: +16166: +16166: virtual void SeekForPrev(const Slice& target) = 0; +16166: +16166: +16166: +16166: +16166: virtual void Next() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual bool NextAndGetResult(IterateResult* result) { +16166: Next(); +16166: bool is_valid = Valid(); +16166: if (is_valid) { +16166: result->key = key(); +16166: +16166: +16166: +16166: result->bound_check_result = IterBoundCheck::kUnknown; +16166: result->value_prepared = false; +16166: +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 3 4 +16166: (static_cast ( +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: UpperBoundCheckResult() != IterBoundCheck::kOutOfBound +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: "UpperBoundCheckResult() != IterBoundCheck::kOutOfBound" +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: ; +16166: } +16166: return is_valid; +16166: } +16166: +16166: +16166: +16166: +16166: virtual void Prev() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual Slice key() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual uint64_t write_unix_time() const { +16166: return std::numeric_limits::max(); +16166: } +16166: +16166: +16166: +16166: virtual Slice user_key() const { return ExtractUserKey(key()); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual TValue value() const = 0; +16166: +16166: +16166: +16166: +16166: virtual Status status() const = 0; +16166: # 154 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: virtual bool PrepareValue() { return true; } +16166: +16166: +16166: virtual bool MayBeOutOfLowerBound() { return true; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual IterBoundCheck UpperBoundCheckResult() { +16166: return IterBoundCheck::kUnknown; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void SetPinnedItersMgr(PinnedIteratorsManager* ) { +16166: } +16166: # 184 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: virtual bool IsKeyPinned() const { return false; } +16166: +16166: +16166: +16166: +16166: +16166: virtual bool IsValuePinned() const { return false; } +16166: +16166: virtual Status GetProperty(std::string , std::string* ) { +16166: return Status::NotSupported(""); +16166: } +16166: # 203 "/build/reproducible-path/rocksdb-9.10.0/table/internal_iterator.h" +16166: virtual void GetReadaheadState(ReadaheadFileInfo* ) {} +16166: +16166: +16166: virtual void SetReadaheadState(ReadaheadFileInfo* ) {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool IsDeleteRangeSentinelKey() const { return false; } +16166: +16166: protected: +16166: void SeekForPrevImpl(const Slice& target, const CompareInterface* cmp) { +16166: Seek(target); +16166: if (!Valid()) { +16166: SeekToLast(); +16166: } +16166: while (Valid() && cmp->Compare(target, key()) < 0) { +16166: Prev(); +16166: } +16166: } +16166: }; +16166: +16166: using InternalIterator = InternalIteratorBase; +16166: +16166: +16166: template +16166: InternalIteratorBase* NewEmptyInternalIterator(); +16166: +16166: +16166: template +16166: InternalIteratorBase* NewErrorInternalIterator(const Status& status); +16166: +16166: +16166: template +16166: InternalIteratorBase* NewErrorInternalIterator(const Status& status, +16166: Arena* arena); +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: class PinnedIteratorsManager : public Cleanable { +16166: public: +16166: PinnedIteratorsManager() : pinning_enabled(false) {} +16166: ~PinnedIteratorsManager() { +16166: if (pinning_enabled) { +16166: ReleasePinnedData(); +16166: } +16166: } +16166: +16166: +16166: PinnedIteratorsManager(PinnedIteratorsManager&& other) noexcept = default; +16166: PinnedIteratorsManager& operator=(PinnedIteratorsManager&& other) noexcept = +16166: default; +16166: +16166: +16166: void StartPinning() { +16166: +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: (static_cast ( +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: pinning_enabled == false +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: "pinning_enabled == false" +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: ; +16166: pinning_enabled = true; +16166: } +16166: +16166: +16166: bool PinningEnabled() { return pinning_enabled; } +16166: +16166: +16166: void PinIterator(InternalIterator* iter, bool arena = false) { +16166: if (arena) { +16166: PinPtr(iter, &PinnedIteratorsManager::ReleaseArenaInternalIterator); +16166: } else { +16166: PinPtr(iter, &PinnedIteratorsManager::ReleaseInternalIterator); +16166: } +16166: } +16166: +16166: using ReleaseFunction = void (*)(void* arg1); +16166: void PinPtr(void* ptr, ReleaseFunction release_func) { +16166: +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: (static_cast ( +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: pinning_enabled +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: "pinning_enabled" +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: ; +16166: if (ptr == nullptr) { +16166: return; +16166: } +16166: pinned_ptrs_.emplace_back(ptr, release_func); +16166: } +16166: +16166: +16166: inline void ReleasePinnedData() { +16166: +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: (static_cast ( +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: pinning_enabled == true +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: "pinning_enabled == true" +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 62 "/build/reproducible-path/rocksdb-9.10.0/db/pinned_iterators_manager.h" +16166: ; +16166: pinning_enabled = false; +16166: +16166: +16166: std::sort(pinned_ptrs_.begin(), pinned_ptrs_.end()); +16166: auto unique_end = std::unique(pinned_ptrs_.begin(), pinned_ptrs_.end()); +16166: +16166: for (auto i = pinned_ptrs_.begin(); i != unique_end; ++i) { +16166: void* ptr = i->first; +16166: ReleaseFunction release_func = i->second; +16166: release_func(ptr); +16166: } +16166: pinned_ptrs_.clear(); +16166: +16166: Cleanable::Reset(); +16166: } +16166: +16166: private: +16166: static void ReleaseInternalIterator(void* ptr) { +16166: delete static_cast(ptr); +16166: } +16166: +16166: static void ReleaseArenaInternalIterator(void* ptr) { +16166: static_cast(ptr)->~InternalIterator(); +16166: } +16166: +16166: bool pinning_enabled; +16166: std::vector> pinned_ptrs_; +16166: }; +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: namespace rocksdb { +16166: struct FragmentedRangeTombstoneList { +16166: public: +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: struct RangeTombstoneStack { +16166: RangeTombstoneStack(const Slice& start, const Slice& end, size_t start_idx, +16166: size_t end_idx) +16166: : start_key(start), +16166: end_key(end), +16166: seq_start_idx(start_idx), +16166: seq_end_idx(end_idx) {} +16166: Slice start_key; +16166: Slice end_key; +16166: size_t seq_start_idx; +16166: size_t seq_end_idx; +16166: }; +16166: +16166: +16166: FragmentedRangeTombstoneList( +16166: std::unique_ptr unfragmented_tombstones, +16166: const InternalKeyComparator& icmp, bool for_compaction = false, +16166: const std::vector& snapshots = {}, +16166: const bool tombstone_end_include_ts = true); +16166: +16166: std::vector::const_iterator begin() const { +16166: return tombstones_.begin(); +16166: } +16166: +16166: std::vector::const_iterator end() const { +16166: return tombstones_.end(); +16166: } +16166: +16166: std::vector::const_iterator seq_iter(size_t idx) const { +16166: return std::next(tombstone_seqs_.begin(), idx); +16166: } +16166: +16166: std::vector::const_iterator ts_iter(size_t idx) const { +16166: return std::next(tombstone_timestamps_.begin(), idx); +16166: } +16166: +16166: std::vector::const_iterator seq_begin() const { +16166: return tombstone_seqs_.begin(); +16166: } +16166: +16166: std::vector::const_iterator seq_end() const { +16166: return tombstone_seqs_.end(); +16166: } +16166: +16166: bool empty() const { return tombstones_.empty(); } +16166: +16166: +16166: +16166: +16166: +16166: bool ContainsRange(SequenceNumber lower, SequenceNumber upper); +16166: +16166: uint64_t num_unfragmented_tombstones() const { +16166: return num_unfragmented_tombstones_; +16166: } +16166: +16166: uint64_t total_tombstone_payload_bytes() const { +16166: return total_tombstone_payload_bytes_; +16166: } +16166: +16166: private: +16166: # 101 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: void FragmentTombstones( +16166: std::unique_ptr unfragmented_tombstones, +16166: const InternalKeyComparator& icmp, bool for_compaction, +16166: const std::vector& snapshots); +16166: +16166: std::vector tombstones_; +16166: std::vector tombstone_seqs_; +16166: std::vector tombstone_timestamps_; +16166: std::once_flag seq_set_init_once_flag_; +16166: std::set seq_set_; +16166: std::list pinned_slices_; +16166: PinnedIteratorsManager pinned_iters_mgr_; +16166: uint64_t num_unfragmented_tombstones_; +16166: uint64_t total_tombstone_payload_bytes_; +16166: }; +16166: +16166: struct FragmentedRangeTombstoneListCache { +16166: +16166: std::mutex reader_mutex; +16166: std::unique_ptr tombstones = nullptr; +16166: +16166: std::atomic initialized = false; +16166: }; +16166: # 134 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: class FragmentedRangeTombstoneIterator : public InternalIterator { +16166: public: +16166: FragmentedRangeTombstoneIterator(FragmentedRangeTombstoneList* tombstones, +16166: const InternalKeyComparator& icmp, +16166: SequenceNumber upper_bound, +16166: const Slice* ts_upper_bound = nullptr, +16166: SequenceNumber lower_bound = 0); +16166: FragmentedRangeTombstoneIterator( +16166: const std::shared_ptr& tombstones, +16166: const InternalKeyComparator& icmp, SequenceNumber upper_bound, +16166: const Slice* ts_upper_bound = nullptr, SequenceNumber lower_bound = 0); +16166: FragmentedRangeTombstoneIterator( +16166: const std::shared_ptr& tombstones, +16166: const InternalKeyComparator& icmp, SequenceNumber upper_bound, +16166: const Slice* ts_upper_bound = nullptr, SequenceNumber lower_bound = 0); +16166: +16166: void SetRangeDelReadSeqno(SequenceNumber read_seqno) override { +16166: upper_bound_ = read_seqno; +16166: } +16166: +16166: void SeekToFirst() override; +16166: void SeekToLast() override; +16166: +16166: void SeekToTopFirst(); +16166: void SeekToTopLast(); +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: void Seek(const Slice& target) override; +16166: +16166: +16166: +16166: void SeekForPrev(const Slice& target) override; +16166: +16166: void Next() override; +16166: void Prev() override; +16166: +16166: void TopNext(); +16166: void TopPrev(); +16166: +16166: bool Valid() const override; +16166: +16166: +16166: Slice key() const override { +16166: MaybePinKey(); +16166: return current_start_key_.Encode(); +16166: } +16166: Slice value() const override { return pos_->end_key; } +16166: bool IsKeyPinned() const override { return false; } +16166: bool IsValuePinned() const override { return true; } +16166: Status status() const override { return Status::OK(); } +16166: +16166: bool empty() const { return tombstones_->empty(); } +16166: void Invalidate() { +16166: pos_ = tombstones_->end(); +16166: seq_pos_ = tombstones_->seq_end(); +16166: pinned_pos_ = tombstones_->end(); +16166: pinned_seq_pos_ = tombstones_->seq_end(); +16166: } +16166: +16166: RangeTombstone Tombstone() const { +16166: +16166: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 3 4 +16166: (static_cast ( +16166: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: Valid() +16166: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: "Valid()" +16166: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 201 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: ; +16166: if (icmp_->user_comparator()->timestamp_size()) { +16166: return RangeTombstone(start_key(), end_key(), seq(), timestamp()); +16166: } +16166: return RangeTombstone(start_key(), end_key(), seq()); +16166: } +16166: +16166: +16166: +16166: +16166: Slice start_key() const { return pos_->start_key; } +16166: Slice end_key() const { return pos_->end_key; } +16166: SequenceNumber seq() const { return *seq_pos_; } +16166: Slice timestamp() const { +16166: +16166: return *tombstones_->ts_iter(seq_pos_ - tombstones_->seq_begin()); +16166: } +16166: +16166: +16166: void SetTimestampUpperBound(const Slice* ts_upper_bound) { +16166: ts_upper_bound_ = ts_upper_bound; +16166: } +16166: +16166: ParsedInternalKey parsed_start_key() const { +16166: return ParsedInternalKey(pos_->start_key, seq(), kTypeRangeDeletion); +16166: } +16166: ParsedInternalKey parsed_end_key() const { +16166: return ParsedInternalKey(pos_->end_key, kMaxSequenceNumber, +16166: kTypeRangeDeletion); +16166: } +16166: +16166: +16166: +16166: +16166: SequenceNumber MaxCoveringTombstoneSeqnum(const Slice& user_key); +16166: # 246 "/build/reproducible-path/rocksdb-9.10.0/db/range_tombstone_fragmenter.h" +16166: std::map> +16166: SplitBySnapshot(const std::vector& snapshots); +16166: +16166: SequenceNumber upper_bound() const { return upper_bound_; } +16166: SequenceNumber lower_bound() const { return lower_bound_; } +16166: +16166: uint64_t num_unfragmented_tombstones() const { +16166: return tombstones_->num_unfragmented_tombstones(); +16166: } +16166: uint64_t total_tombstone_payload_bytes() const { +16166: return tombstones_->total_tombstone_payload_bytes(); +16166: } +16166: +16166: private: +16166: using RangeTombstoneStack = FragmentedRangeTombstoneList::RangeTombstoneStack; +16166: +16166: struct RangeTombstoneStackStartComparator { +16166: explicit RangeTombstoneStackStartComparator(const Comparator* c) : cmp(c) {} +16166: +16166: bool operator()(const RangeTombstoneStack& a, +16166: const RangeTombstoneStack& b) const { +16166: return cmp->CompareWithoutTimestamp(a.start_key, b.start_key) < 0; +16166: } +16166: +16166: bool operator()(const RangeTombstoneStack& a, const Slice& b) const { +16166: return cmp->CompareWithoutTimestamp(a.start_key, b) < 0; +16166: } +16166: +16166: bool operator()(const Slice& a, const RangeTombstoneStack& b) const { +16166: return cmp->CompareWithoutTimestamp(a, b.start_key) < 0; +16166: } +16166: +16166: const Comparator* cmp; +16166: }; +16166: +16166: struct RangeTombstoneStackEndComparator { +16166: explicit RangeTombstoneStackEndComparator(const Comparator* c) : cmp(c) {} +16166: +16166: bool operator()(const RangeTombstoneStack& a, +16166: const RangeTombstoneStack& b) const { +16166: return cmp->CompareWithoutTimestamp(a.end_key, b.end_key) < 0; +16166: } +16166: +16166: bool operator()(const RangeTombstoneStack& a, const Slice& b) const { +16166: return cmp->CompareWithoutTimestamp(a.end_key, b) < 0; +16166: } +16166: +16166: bool operator()(const Slice& a, const RangeTombstoneStack& b) const { +16166: return cmp->CompareWithoutTimestamp(a, b.end_key) < 0; +16166: } +16166: +16166: const Comparator* cmp; +16166: }; +16166: +16166: void MaybePinKey() const { +16166: if (pos_ != tombstones_->end() && seq_pos_ != tombstones_->seq_end() && +16166: (pinned_pos_ != pos_ || pinned_seq_pos_ != seq_pos_)) { +16166: current_start_key_.Set(pos_->start_key, *seq_pos_, kTypeRangeDeletion); +16166: pinned_pos_ = pos_; +16166: pinned_seq_pos_ = seq_pos_; +16166: } +16166: } +16166: +16166: void SeekToCoveringTombstone(const Slice& key); +16166: void SeekForPrevToCoveringTombstone(const Slice& key); +16166: void ScanForwardToVisibleTombstone(); +16166: void ScanBackwardToVisibleTombstone(); +16166: bool ValidPos() const { +16166: return Valid() && seq_pos_ != tombstones_->seq_iter(pos_->seq_end_idx); +16166: } +16166: +16166: const RangeTombstoneStackStartComparator tombstone_start_cmp_; +16166: const RangeTombstoneStackEndComparator tombstone_end_cmp_; +16166: const InternalKeyComparator* icmp_; +16166: const Comparator* ucmp_; +16166: std::shared_ptr tombstones_ref_; +16166: std::shared_ptr tombstones_cache_ref_; +16166: FragmentedRangeTombstoneList* tombstones_; +16166: SequenceNumber upper_bound_; +16166: SequenceNumber lower_bound_; +16166: +16166: const Slice* ts_upper_bound_; +16166: std::vector::const_iterator pos_; +16166: std::vector::const_iterator seq_pos_; +16166: mutable std::vector::const_iterator pinned_pos_; +16166: mutable std::vector::const_iterator pinned_seq_pos_; +16166: mutable InternalKey current_start_key_; +16166: +16166: +16166: +16166: +16166: +16166: void SetMaxVisibleSeqAndTimestamp() { +16166: seq_pos_ = std::lower_bound(tombstones_->seq_iter(pos_->seq_start_idx), +16166: tombstones_->seq_iter(pos_->seq_end_idx), +16166: upper_bound_, std::greater()); +16166: if (ts_upper_bound_ && !ts_upper_bound_->empty()) { +16166: auto ts_pos = std::lower_bound( +16166: tombstones_->ts_iter(pos_->seq_start_idx), +16166: tombstones_->ts_iter(pos_->seq_end_idx), *ts_upper_bound_, +16166: [this](const Slice& s1, const Slice& s2) { +16166: return ucmp_->CompareTimestamp(s1, s2) > 0; +16166: }); +16166: auto ts_idx = ts_pos - tombstones_->ts_iter(pos_->seq_start_idx); +16166: auto seq_idx = seq_pos_ - tombstones_->seq_iter(pos_->seq_start_idx); +16166: if (seq_idx < ts_idx) { +16166: +16166: +16166: seq_pos_ = tombstones_->seq_iter(pos_->seq_start_idx + ts_idx); +16166: } +16166: } +16166: } +16166: }; +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 2 +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_constants.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: constexpr uint64_t kInvalidBlobFileNumber = 0; +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class JSONWriter; +16166: class Slice; +16166: class Status; +16166: +16166: class BlobFileAddition { +16166: public: +16166: BlobFileAddition() = default; +16166: +16166: BlobFileAddition(uint64_t blob_file_number, uint64_t total_blob_count, +16166: uint64_t total_blob_bytes, std::string checksum_method, +16166: std::string checksum_value) +16166: : blob_file_number_(blob_file_number), +16166: total_blob_count_(total_blob_count), +16166: total_blob_bytes_(total_blob_bytes), +16166: checksum_method_(std::move(checksum_method)), +16166: checksum_value_(std::move(checksum_value)) { +16166: +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 3 4 +16166: (static_cast ( +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" +16166: checksum_method_.empty() == checksum_value_.empty() +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" +16166: "checksum_method_.empty() == checksum_value_.empty()" +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_addition.h" +16166: ; +16166: } +16166: +16166: uint64_t GetBlobFileNumber() const { return blob_file_number_; } +16166: uint64_t GetTotalBlobCount() const { return total_blob_count_; } +16166: uint64_t GetTotalBlobBytes() const { return total_blob_bytes_; } +16166: const std::string& GetChecksumMethod() const { return checksum_method_; } +16166: const std::string& GetChecksumValue() const { return checksum_value_; } +16166: +16166: void EncodeTo(std::string* output) const; +16166: Status DecodeFrom(Slice* input); +16166: +16166: std::string DebugString() const; +16166: std::string DebugJSON() const; +16166: +16166: private: +16166: enum CustomFieldTags : uint32_t; +16166: +16166: uint64_t blob_file_number_ = kInvalidBlobFileNumber; +16166: uint64_t total_blob_count_ = 0; +16166: uint64_t total_blob_bytes_ = 0; +16166: std::string checksum_method_; +16166: std::string checksum_value_; +16166: }; +16166: +16166: bool operator==(const BlobFileAddition& lhs, const BlobFileAddition& rhs); +16166: bool operator!=(const BlobFileAddition& lhs, const BlobFileAddition& rhs); +16166: +16166: std::ostream& operator<<(std::ostream& os, +16166: const BlobFileAddition& blob_file_addition); +16166: JSONWriter& operator<<(JSONWriter& jw, +16166: const BlobFileAddition& blob_file_addition); +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/blob/blob_file_garbage.h" +16166: namespace rocksdb { +16166: +16166: class JSONWriter; +16166: class Slice; +16166: class Status; +16166: +16166: class BlobFileGarbage { +16166: public: +16166: BlobFileGarbage() = default; +16166: +16166: BlobFileGarbage(uint64_t blob_file_number, uint64_t garbage_blob_count, +16166: uint64_t garbage_blob_bytes) +16166: : blob_file_number_(blob_file_number), +16166: garbage_blob_count_(garbage_blob_count), +16166: garbage_blob_bytes_(garbage_blob_bytes) {} +16166: +16166: uint64_t GetBlobFileNumber() const { return blob_file_number_; } +16166: uint64_t GetGarbageBlobCount() const { return garbage_blob_count_; } +16166: uint64_t GetGarbageBlobBytes() const { return garbage_blob_bytes_; } +16166: +16166: void EncodeTo(std::string* output) const; +16166: Status DecodeFrom(Slice* input); +16166: +16166: std::string DebugString() const; +16166: std::string DebugJSON() const; +16166: +16166: private: +16166: enum CustomFieldTags : uint32_t; +16166: +16166: uint64_t blob_file_number_ = kInvalidBlobFileNumber; +16166: uint64_t garbage_blob_count_ = 0; +16166: uint64_t garbage_blob_bytes_ = 0; +16166: }; +16166: +16166: bool operator==(const BlobFileGarbage& lhs, const BlobFileGarbage& rhs); +16166: bool operator!=(const BlobFileGarbage& lhs, const BlobFileGarbage& rhs); +16166: +16166: std::ostream& operator<<(std::ostream& os, +16166: const BlobFileGarbage& blob_file_garbage); +16166: JSONWriter& operator<<(JSONWriter& jw, +16166: const BlobFileGarbage& blob_file_garbage); +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/ctime" 1 3 +16166: # 39 "/usr/include/c++/14/ctime" 3 +16166: +16166: # 40 "/usr/include/c++/14/ctime" 3 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 1 +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/allocator.h" 1 +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/memory/allocator.h" +16166: +16166: # 1 "/usr/include/c++/14/cerrno" 1 3 +16166: # 39 "/usr/include/c++/14/cerrno" 3 +16166: +16166: # 40 "/usr/include/c++/14/cerrno" 3 +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/memory/allocator.h" 2 +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Logger; +16166: +16166: class Allocator { +16166: public: +16166: virtual ~Allocator() {} +16166: +16166: virtual char* Allocate(size_t bytes) = 0; +16166: virtual char* AllocateAligned(size_t bytes, size_t huge_page_size = 0, +16166: Logger* logger = nullptr) = 0; +16166: +16166: virtual size_t BlockSize() const = 0; +16166: }; +16166: +16166: class AllocTracker { +16166: public: +16166: explicit AllocTracker(WriteBufferManager* write_buffer_manager); +16166: +16166: AllocTracker(const AllocTracker&) = delete; +16166: void operator=(const AllocTracker&) = delete; +16166: +16166: ~AllocTracker(); +16166: void Allocate(size_t bytes); +16166: +16166: +16166: void DoneAllocating(); +16166: +16166: void FreeMem(); +16166: +16166: bool is_freed() const { return write_buffer_manager_ == nullptr || freed_; } +16166: +16166: private: +16166: WriteBufferManager* write_buffer_manager_; +16166: std::atomic bytes_allocated_; +16166: bool done_allocating_; +16166: bool freed_; +16166: }; +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/mmap.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 1 3 4 +16166: # 25 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +16166: # 1 "/usr/lib/gcc/arm-linux-gnueabihf/14/include/stddef.h" 1 3 4 +16166: # 26 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 2 3 4 +16166: # 41 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 1 3 4 +16166: # 29 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman-map-flags-generic.h" 1 3 4 +16166: # 30 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 2 3 4 +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman-linux.h" 1 3 4 +16166: # 135 "/usr/include/arm-linux-gnueabihf/bits/mman-linux.h" 3 4 +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman-shared.h" 1 3 4 +16166: # 51 "/usr/include/arm-linux-gnueabihf/bits/mman-shared.h" 3 4 +16166: +16166: # 51 "/usr/include/arm-linux-gnueabihf/bits/mman-shared.h" 3 4 +16166: extern "C" { +16166: +16166: +16166: +16166: int memfd_create (const char *__name, unsigned int __flags) noexcept (true); +16166: +16166: +16166: +16166: int mlock2 (const void *__addr, size_t __length, unsigned int __flags) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: int pkey_alloc (unsigned int __flags, unsigned int __access_rights) noexcept (true); +16166: +16166: +16166: +16166: int pkey_set (int __key, unsigned int __access_rights) noexcept (true); +16166: +16166: +16166: +16166: int pkey_get (int __key) noexcept (true); +16166: +16166: +16166: +16166: int pkey_free (int __key) noexcept (true); +16166: +16166: +16166: +16166: int pkey_mprotect (void *__addr, size_t __len, int __prot, int __pkey) noexcept (true); +16166: +16166: } +16166: # 136 "/usr/include/arm-linux-gnueabihf/bits/mman-linux.h" 2 3 4 +16166: # 33 "/usr/include/arm-linux-gnueabihf/bits/mman.h" 2 3 4 +16166: # 42 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 2 3 4 +16166: +16166: +16166: +16166: +16166: extern "C" { +16166: # 61 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +16166: extern void * mmap (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset) noexcept (true) __asm__ ("" "mmap64") +16166: +16166: +16166: ; +16166: +16166: +16166: +16166: +16166: +16166: extern void *mmap64 (void *__addr, size_t __len, int __prot, +16166: int __flags, int __fd, __off64_t __offset) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int munmap (void *__addr, size_t __len) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int mprotect (void *__addr, size_t __len, int __prot) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int msync (void *__addr, size_t __len, int __flags); +16166: +16166: +16166: +16166: +16166: extern int madvise (void *__addr, size_t __len, int __advice) noexcept (true); +16166: +16166: +16166: +16166: extern int posix_madvise (void *__addr, size_t __len, int __advice) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int mlock (const void *__addr, size_t __len) noexcept (true); +16166: +16166: +16166: extern int munlock (const void *__addr, size_t __len) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int mlockall (int __flags) noexcept (true); +16166: +16166: +16166: +16166: extern int munlockall (void) noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: extern int mincore (void *__start, size_t __len, unsigned char *__vec) +16166: noexcept (true); +16166: # 133 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 3 4 +16166: extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, +16166: int __flags, ...) noexcept (true); +16166: +16166: +16166: +16166: extern int remap_file_pages (void *__start, size_t __size, int __prot, +16166: size_t __pgoff, int __flags) noexcept (true); +16166: +16166: +16166: +16166: +16166: extern int shm_open (const char *__name, int __oflag, mode_t __mode); +16166: +16166: +16166: extern int shm_unlink (const char *__name); +16166: +16166: +16166: # 1 "/usr/include/arm-linux-gnueabihf/bits/mman_ext.h" 1 3 4 +16166: # 24 "/usr/include/arm-linux-gnueabihf/bits/mman_ext.h" 3 4 +16166: struct iovec; +16166: extern __ssize_t process_madvise (int __pid_fd, const struct iovec *__iov, +16166: size_t __count, int __advice, +16166: unsigned __flags) +16166: noexcept (true); +16166: +16166: extern int process_mrelease (int pidfd, unsigned int flags) noexcept (true); +16166: # 151 "/usr/include/arm-linux-gnueabihf/sys/mman.h" 2 3 4 +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/port/mmap.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/port/mmap.h" +16166: namespace rocksdb { +16166: +16166: +16166: class MemMapping { +16166: public: +16166: static constexpr bool kHugePageSupported = +16166: +16166: true; +16166: +16166: +16166: +16166: +16166: +16166: static MemMapping AllocateHuge(size_t length); +16166: +16166: +16166: +16166: +16166: +16166: +16166: static MemMapping AllocateLazyZeroed(size_t length); +16166: +16166: +16166: MemMapping(const MemMapping&) = delete; +16166: MemMapping& operator=(const MemMapping&) = delete; +16166: +16166: MemMapping(MemMapping&&) noexcept; +16166: MemMapping& operator=(MemMapping&&) noexcept; +16166: +16166: +16166: ~MemMapping(); +16166: +16166: inline void* Get() const { return addr_; } +16166: inline size_t Length() const { return length_; } +16166: +16166: private: +16166: MemMapping() {} +16166: +16166: +16166: void* addr_ = nullptr; +16166: +16166: size_t length_ = 0; +16166: +16166: +16166: +16166: +16166: +16166: static MemMapping AllocateAnonymous(size_t length, bool huge); +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: class TypedMemMapping : public MemMapping { +16166: public: +16166: TypedMemMapping(MemMapping&& v) noexcept +16166: : MemMapping(std::move(v)) {} +16166: TypedMemMapping& operator=(MemMapping&& v) noexcept { +16166: MemMapping& base = *this; +16166: base = std::move(v); +16166: } +16166: +16166: inline T* Get() const { return static_cast(MemMapping::Get()); } +16166: inline size_t Count() const { return MemMapping::Length() / sizeof(T); } +16166: +16166: inline T& operator[](size_t index) const { return Get()[index]; } +16166: }; +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Arena : public Allocator { +16166: public: +16166: +16166: Arena(const Arena&) = delete; +16166: void operator=(const Arena&) = delete; +16166: +16166: static constexpr size_t kInlineSize = 2048; +16166: static constexpr size_t kMinBlockSize = 4096; +16166: static constexpr size_t kMaxBlockSize = 2u << 30; +16166: +16166: static constexpr unsigned kAlignUnit = alignof(std::max_align_t); +16166: static_assert((kAlignUnit & (kAlignUnit - 1)) == 0, +16166: "Pointer size should be power of 2"); +16166: +16166: +16166: +16166: +16166: explicit Arena(size_t block_size = kMinBlockSize, +16166: AllocTracker* tracker = nullptr, size_t huge_page_size = 0); +16166: ~Arena(); +16166: +16166: char* Allocate(size_t bytes) override; +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +16166: char* AllocateAligned(size_t bytes, size_t huge_page_size = 0, +16166: Logger* logger = nullptr) override; +16166: +16166: +16166: +16166: +16166: size_t ApproximateMemoryUsage() const { +16166: return blocks_memory_ + blocks_.size() * sizeof(char*) - +16166: alloc_bytes_remaining_; +16166: } +16166: +16166: size_t MemoryAllocatedBytes() const { return blocks_memory_; } +16166: +16166: size_t AllocatedAndUnused() const { return alloc_bytes_remaining_; } +16166: +16166: +16166: +16166: size_t IrregularBlockNum() const { return irregular_block_num; } +16166: +16166: size_t BlockSize() const override { return kBlockSize; } +16166: +16166: bool IsInInlineBlock() const { +16166: return blocks_.empty() && huge_blocks_.empty(); +16166: } +16166: +16166: +16166: +16166: +16166: static size_t OptimizeBlockSize(size_t block_size); +16166: +16166: private: +16166: alignas(std::max_align_t) char inline_block_[kInlineSize]; +16166: +16166: const size_t kBlockSize; +16166: +16166: std::deque> blocks_; +16166: +16166: std::deque huge_blocks_; +16166: size_t irregular_block_num = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: char* unaligned_alloc_ptr_ = nullptr; +16166: char* aligned_alloc_ptr_ = nullptr; +16166: +16166: size_t alloc_bytes_remaining_ = 0; +16166: +16166: size_t hugetlb_size_ = 0; +16166: +16166: char* AllocateFromHugePage(size_t bytes); +16166: char* AllocateFallback(size_t bytes, bool aligned); +16166: char* AllocateNewBlock(size_t block_bytes); +16166: +16166: +16166: size_t blocks_memory_ = 0; +16166: +16166: AllocTracker* tracker_; +16166: }; +16166: +16166: inline char* Arena::Allocate(size_t bytes) { +16166: +16166: +16166: +16166: +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 3 4 +16166: (static_cast ( +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +16166: bytes > 0 +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +16166: "bytes > 0" +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/memory/arena.h" +16166: ; +16166: if (bytes <= alloc_bytes_remaining_) { +16166: unaligned_alloc_ptr_ -= bytes; +16166: alloc_bytes_remaining_ -= bytes; +16166: return unaligned_alloc_ptr_; +16166: } +16166: return AllocateFallback(bytes, false ); +16166: } +16166: +16166: +16166: template +16166: struct Destroyer { +16166: void operator()(T* ptr) { ptr->~T(); } +16166: }; +16166: +16166: +16166: +16166: template +16166: using ScopedArenaPtr = std::unique_ptr>; +16166: +16166: } +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" 1 +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" +16166: +16166: # 42 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" +16166: # 1 "/usr/include/arm-linux-gnueabihf/sys/time.h" 1 3 4 +16166: # 34 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: +16166: # 34 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: extern "C" { +16166: # 52 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: struct timezone +16166: { +16166: int tz_minuteswest; +16166: int tz_dsttime; +16166: }; +16166: # 71 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: extern int gettimeofday (struct timeval *__restrict __tv, void *__restrict __tz) noexcept (true) __asm__ ("" "__gettimeofday64") +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: # 98 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: extern int settimeofday (const struct timeval *__tv, const struct timezone *__tz) noexcept (true) __asm__ ("" "__settimeofday64") +16166: +16166: ; +16166: +16166: extern int adjtime (const struct timeval *__delta, struct timeval *__olddelta) noexcept (true) __asm__ ("" "__adjtime64") +16166: +16166: ; +16166: # 114 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: enum __itimer_which +16166: { +16166: +16166: ITIMER_REAL = 0, +16166: +16166: +16166: ITIMER_VIRTUAL = 1, +16166: +16166: +16166: +16166: ITIMER_PROF = 2 +16166: +16166: }; +16166: +16166: +16166: +16166: struct itimerval +16166: { +16166: +16166: struct timeval it_interval; +16166: +16166: struct timeval it_value; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: typedef int __itimer_which_t; +16166: # 167 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: extern int getitimer (__itimer_which_t __which, struct itimerval *__value) noexcept (true) __asm__ ("" "__getitimer64") +16166: +16166: ; +16166: +16166: extern int setitimer (__itimer_which_t __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) noexcept (true) __asm__ ("" "__setitimer64") +16166: +16166: +16166: ; +16166: +16166: extern int utimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__utimes64") +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: # 196 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: extern int lutimes (const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__lutimes64") +16166: +16166: __attribute__ ((__nonnull__ (1))); +16166: +16166: extern int futimes (int __fd, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimes64") +16166: ; +16166: # 218 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: extern int futimesat (int __fd, const char *__file, const struct timeval __tvp[2]) noexcept (true) __asm__ ("" "__futimesat64") +16166: +16166: ; +16166: # 258 "/usr/include/arm-linux-gnueabihf/sys/time.h" 3 4 +16166: } +16166: # 43 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" 2 +16166: +16166: +16166: +16166: # 45 "/build/reproducible-path/rocksdb-9.10.0/port/sys_time.h" +16166: namespace rocksdb { +16166: +16166: namespace port { +16166: +16166: using TimeVal = struct timeval; +16166: +16166: inline void GetTimeOfDay(TimeVal* tv, struct timezone* tz) { +16166: gettimeofday(tv, tz); +16166: } +16166: +16166: inline struct tm* LocalTimeR(const time_t* timep, struct tm* result) { +16166: return localtime_r(timep, result); +16166: } +16166: +16166: } +16166: +16166: } +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.h" 2 +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Logger; +16166: +16166: +16166: class LogBuffer { +16166: public: +16166: +16166: +16166: LogBuffer(const InfoLogLevel log_level, Logger* info_log); +16166: +16166: +16166: +16166: void AddLogToBuffer(size_t max_log_size, const char* format, va_list ap); +16166: +16166: size_t IsEmpty() const { return logs_.empty(); } +16166: +16166: +16166: void FlushBufferToLog(); +16166: static const size_t kDefaultMaxLogSize = 512; +16166: +16166: private: +16166: +16166: struct BufferedLog { +16166: port::TimeVal now_tv; +16166: char message[1]; +16166: }; +16166: +16166: const InfoLogLevel log_level_; +16166: Logger* info_log_; +16166: Arena arena_; +16166: autovector logs_; +16166: }; +16166: +16166: +16166: +16166: +16166: void LogToBuffer(LogBuffer* log_buffer, size_t max_log_size, const char* format, +16166: ...); +16166: +16166: void LogToBuffer(LogBuffer* log_buffer, const char* format, ...); +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class JSONWriter { +16166: public: +16166: JSONWriter() : state_(kExpectKey), first_element_(true), in_array_(false) { +16166: stream_ << "{"; +16166: } +16166: +16166: void AddKey(const std::string& key) { +16166: +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kExpectKey +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kExpectKey" +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: if (!first_element_) { +16166: stream_ << ", "; +16166: } +16166: stream_ << "\"" << key << "\": "; +16166: state_ = kExpectValue; +16166: first_element_ = false; +16166: } +16166: +16166: void AddValue(const char* value) { +16166: +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kExpectValue || state_ == kInArray +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kExpectValue || state_ == kInArray" +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: if (state_ == kInArray && !first_element_) { +16166: stream_ << ", "; +16166: } +16166: stream_ << "\"" << value << "\""; +16166: if (state_ != kInArray) { +16166: state_ = kExpectKey; +16166: } +16166: first_element_ = false; +16166: } +16166: +16166: template +16166: void AddValue(const T& value) { +16166: +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kExpectValue || state_ == kInArray +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kExpectValue || state_ == kInArray" +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 48 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: if (state_ == kInArray && !first_element_) { +16166: stream_ << ", "; +16166: } +16166: stream_ << value; +16166: if (state_ != kInArray) { +16166: state_ = kExpectKey; +16166: } +16166: first_element_ = false; +16166: } +16166: +16166: void StartArray() { +16166: +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kExpectValue +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kExpectValue" +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: state_ = kInArray; +16166: in_array_ = true; +16166: stream_ << "["; +16166: first_element_ = true; +16166: } +16166: +16166: void EndArray() { +16166: +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kInArray +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kInArray" +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: state_ = kExpectKey; +16166: in_array_ = false; +16166: stream_ << "]"; +16166: first_element_ = false; +16166: } +16166: +16166: void StartObject() { +16166: +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kExpectValue +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kExpectValue" +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 76 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: state_ = kExpectKey; +16166: stream_ << "{"; +16166: first_element_ = true; +16166: } +16166: +16166: void EndObject() { +16166: +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kExpectKey +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kExpectKey" +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: stream_ << "}"; +16166: first_element_ = false; +16166: } +16166: +16166: void StartArrayedObject() { +16166: +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ == kInArray && in_array_ +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ == kInArray && in_array_" +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: state_ = kExpectValue; +16166: if (!first_element_) { +16166: stream_ << ", "; +16166: } +16166: StartObject(); +16166: } +16166: +16166: void EndArrayedObject() { +16166: +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: in_array_ +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "in_array_" +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 98 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: EndObject(); +16166: state_ = kInArray; +16166: } +16166: +16166: std::string Get() const { return stream_.str(); } +16166: +16166: JSONWriter& operator<<(const char* val) { +16166: if (state_ == kExpectKey) { +16166: AddKey(val); +16166: } else { +16166: AddValue(val); +16166: } +16166: return *this; +16166: } +16166: +16166: JSONWriter& operator<<(const std::string& val) { +16166: return *this << val.c_str(); +16166: } +16166: +16166: template +16166: JSONWriter& operator<<(const T& val) { +16166: +16166: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: (static_cast ( +16166: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: state_ != kExpectKey +16166: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: "state_ != kExpectKey" +16166: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 120 "/build/reproducible-path/rocksdb-9.10.0/logging/event_logger.h" +16166: ; +16166: AddValue(val); +16166: return *this; +16166: } +16166: +16166: private: +16166: enum JSONWriterState { +16166: kExpectKey, +16166: kExpectValue, +16166: kInArray, +16166: kInArrayedObject, +16166: }; +16166: JSONWriterState state_; +16166: bool first_element_; +16166: bool in_array_; +16166: std::ostringstream stream_; +16166: }; +16166: +16166: class EventLoggerStream { +16166: public: +16166: template +16166: EventLoggerStream& operator<<(const T& val) { +16166: MakeStream(); +16166: *json_writer_ << val; +16166: return *this; +16166: } +16166: +16166: void StartArray() { json_writer_->StartArray(); } +16166: void EndArray() { json_writer_->EndArray(); } +16166: void StartObject() { json_writer_->StartObject(); } +16166: void EndObject() { json_writer_->EndObject(); } +16166: +16166: ~EventLoggerStream(); +16166: +16166: private: +16166: void MakeStream() { +16166: if (!json_writer_) { +16166: json_writer_ = new JSONWriter(); +16166: *this << "time_micros" +16166: << std::chrono::duration_cast( +16166: std::chrono::system_clock::now().time_since_epoch()) +16166: .count(); +16166: } +16166: } +16166: friend class EventLogger; +16166: explicit EventLoggerStream(Logger* logger); +16166: explicit EventLoggerStream(LogBuffer* log_buffer, const size_t max_log_size); +16166: +16166: Logger* const logger_; +16166: LogBuffer* const log_buffer_; +16166: const size_t max_log_size_; +16166: +16166: JSONWriter* json_writer_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: class EventLogger { +16166: public: +16166: static const char* Prefix() { return "EVENT_LOG_v1"; } +16166: +16166: explicit EventLogger(Logger* logger) : logger_(logger) {} +16166: EventLoggerStream Log() { return EventLoggerStream(logger_); } +16166: EventLoggerStream LogToBuffer(LogBuffer* log_buffer) { +16166: return EventLoggerStream(log_buffer, LogBuffer::kDefaultMaxLogSize); +16166: } +16166: EventLoggerStream LogToBuffer(LogBuffer* log_buffer, +16166: const size_t max_log_size) { +16166: return EventLoggerStream(log_buffer, max_log_size); +16166: } +16166: void Log(const JSONWriter& jwriter); +16166: static void Log(Logger* logger, const JSONWriter& jwriter); +16166: static void LogToBuffer( +16166: LogBuffer* log_buffer, const JSONWriter& jwriter, +16166: const size_t max_log_size = LogBuffer::kDefaultMaxLogSize); +16166: +16166: private: +16166: Logger* logger_; +16166: }; +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" 2 +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class JSONWriter; +16166: class Slice; +16166: class Status; +16166: +16166: using WalNumber = uint64_t; +16166: +16166: +16166: class WalMetadata { +16166: public: +16166: WalMetadata() = default; +16166: +16166: explicit WalMetadata(uint64_t synced_size_bytes) +16166: : synced_size_bytes_(synced_size_bytes) {} +16166: +16166: bool HasSyncedSize() const { return synced_size_bytes_ != kUnknownWalSize; } +16166: +16166: void SetSyncedSizeInBytes(uint64_t bytes) { synced_size_bytes_ = bytes; } +16166: +16166: uint64_t GetSyncedSizeInBytes() const { return synced_size_bytes_; } +16166: +16166: private: +16166: friend bool operator==(const WalMetadata& lhs, const WalMetadata& rhs); +16166: friend bool operator!=(const WalMetadata& lhs, const WalMetadata& rhs); +16166: +16166: +16166: constexpr static uint64_t kUnknownWalSize = +16166: std::numeric_limits::max(); +16166: +16166: +16166: uint64_t synced_size_bytes_ = kUnknownWalSize; +16166: }; +16166: +16166: inline bool operator==(const WalMetadata& lhs, const WalMetadata& rhs) { +16166: return lhs.synced_size_bytes_ == rhs.synced_size_bytes_; +16166: } +16166: +16166: inline bool operator!=(const WalMetadata& lhs, const WalMetadata& rhs) { +16166: return !(lhs == rhs); +16166: } +16166: +16166: +16166: enum class WalAdditionTag : uint32_t { +16166: +16166: kTerminate = 1, +16166: +16166: kSyncedSize = 2, +16166: +16166: }; +16166: +16166: +16166: class WalAddition { +16166: public: +16166: WalAddition() : number_(0), metadata_() {} +16166: +16166: explicit WalAddition(WalNumber number) : number_(number), metadata_() {} +16166: +16166: WalAddition(WalNumber number, WalMetadata meta) +16166: : number_(number), metadata_(std::move(meta)) {} +16166: +16166: WalNumber GetLogNumber() const { return number_; } +16166: +16166: const WalMetadata& GetMetadata() const { return metadata_; } +16166: +16166: void EncodeTo(std::string* dst) const; +16166: +16166: Status DecodeFrom(Slice* src); +16166: +16166: std::string DebugString() const; +16166: +16166: private: +16166: WalNumber number_; +16166: WalMetadata metadata_; +16166: }; +16166: +16166: std::ostream& operator<<(std::ostream& os, const WalAddition& wal); +16166: JSONWriter& operator<<(JSONWriter& jw, const WalAddition& wal); +16166: +16166: using WalAdditions = std::vector; +16166: +16166: +16166: class WalDeletion { +16166: public: +16166: WalDeletion() : number_(kEmpty) {} +16166: +16166: explicit WalDeletion(WalNumber number) : number_(number) {} +16166: +16166: WalNumber GetLogNumber() const { return number_; } +16166: +16166: void EncodeTo(std::string* dst) const; +16166: +16166: Status DecodeFrom(Slice* src); +16166: +16166: std::string DebugString() const; +16166: +16166: bool IsEmpty() const { return number_ == kEmpty; } +16166: +16166: void Reset() { number_ = kEmpty; } +16166: +16166: private: +16166: static constexpr WalNumber kEmpty = 0; +16166: +16166: WalNumber number_; +16166: }; +16166: +16166: std::ostream& operator<<(std::ostream& os, const WalDeletion& wal); +16166: JSONWriter& operator<<(JSONWriter& jw, const WalDeletion& wal); +16166: # 138 "/build/reproducible-path/rocksdb-9.10.0/db/wal_edit.h" +16166: class WalSet { +16166: public: +16166: +16166: +16166: +16166: +16166: +16166: Status AddWal(const WalAddition& wal); +16166: Status AddWals(const WalAdditions& wals); +16166: +16166: +16166: +16166: Status DeleteWalsBefore(WalNumber wal); +16166: +16166: +16166: void Reset(); +16166: +16166: +16166: WalNumber GetMinWalNumberToKeep() const { return min_wal_number_to_keep_; } +16166: +16166: const std::map& GetWals() const { return wals_; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status CheckWals( +16166: Env* env, +16166: const std::unordered_map& logs_on_disk) const; +16166: +16166: private: +16166: std::map wals_; +16166: +16166: +16166: WalNumber min_wal_number_to_keep_ = 0; +16166: }; +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: namespace rocksdb { +16166: +16166: class Logger; +16166: class SecondaryCacheResultHandle; +16166: class Statistics; +16166: # 44 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: class Cache : public Customizable { +16166: public: +16166: +16166: struct Handle {}; +16166: +16166: public: +16166: +16166: +16166: using ObjectPtr = void*; +16166: +16166: +16166: +16166: struct CreateContext {}; +16166: +16166: public: +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: enum class Priority { HIGH, LOW, BOTTOM }; +16166: # 97 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: using SizeCallback = size_t (*)(ObjectPtr obj); +16166: +16166: +16166: +16166: +16166: +16166: using SaveToCallback = Status (*)(ObjectPtr from_obj, size_t from_offset, +16166: size_t length, char* out_buf); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: using DeleterFn = void (*)(ObjectPtr obj, MemoryAllocator* allocator); +16166: # 124 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: using CreateCallback = Status (*)(const Slice& data, CompressionType type, +16166: CacheTier source, CreateContext* context, +16166: MemoryAllocator* allocator, +16166: ObjectPtr* out_obj, size_t* out_charge); +16166: +16166: +16166: +16166: +16166: struct CacheItemHelper { +16166: +16166: +16166: +16166: DeleterFn del_cb; +16166: +16166: +16166: +16166: SizeCallback size_cb; +16166: SaveToCallback saveto_cb; +16166: CreateCallback create_cb; +16166: +16166: CacheEntryRole role; +16166: +16166: +16166: +16166: +16166: const CacheItemHelper* without_secondary_compat; +16166: +16166: CacheItemHelper() : CacheItemHelper(CacheEntryRole::kMisc) {} +16166: +16166: +16166: explicit CacheItemHelper(CacheEntryRole _role, DeleterFn _del_cb = nullptr) +16166: : CacheItemHelper(_role, _del_cb, nullptr, nullptr, nullptr, this) {} +16166: +16166: +16166: explicit CacheItemHelper(CacheEntryRole _role, DeleterFn _del_cb, +16166: SizeCallback _size_cb, SaveToCallback _saveto_cb, +16166: CreateCallback _create_cb, +16166: const CacheItemHelper* _without_secondary_compat) +16166: : del_cb(_del_cb), +16166: size_cb(_size_cb), +16166: saveto_cb(_saveto_cb), +16166: create_cb(_create_cb), +16166: role(_role), +16166: without_secondary_compat(_without_secondary_compat) { +16166: +16166: +16166: +16166: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: (static_cast ( +16166: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: (size_cb != nullptr) == (saveto_cb != nullptr) +16166: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: "(size_cb != nullptr) == (saveto_cb != nullptr)" +16166: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 170 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: ; +16166: +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: (static_cast ( +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: (size_cb != nullptr) == (create_cb != nullptr) +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: "(size_cb != nullptr) == (create_cb != nullptr)" +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: ; +16166: +16166: +16166: +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: (static_cast ( +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: role == without_secondary_compat->role +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: "role == without_secondary_compat->role" +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 174 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: ; +16166: +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: (static_cast ( +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: del_cb == without_secondary_compat->del_cb +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: "del_cb == without_secondary_compat->del_cb" +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: ; +16166: +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: (static_cast ( +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: !without_secondary_compat->IsSecondaryCacheCompatible() +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: "!without_secondary_compat->IsSecondaryCacheCompatible()" +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: ; +16166: } +16166: inline bool IsSecondaryCacheCompatible() const { +16166: return size_cb != nullptr; +16166: } +16166: }; +16166: +16166: public: +16166: Cache(std::shared_ptr allocator = nullptr) +16166: : memory_allocator_(std::move(allocator)) {} +16166: +16166: Cache(const Cache&) = delete; +16166: Cache& operator=(const Cache&) = delete; +16166: +16166: +16166: virtual ~Cache() {} +16166: +16166: static const char* Type() { return "Cache"; } +16166: # 206 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& value, +16166: std::shared_ptr* result); +16166: +16166: public: +16166: +16166: virtual const char* Name() const = 0; +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: virtual Status Insert( +16166: const Slice& key, ObjectPtr obj, const CacheItemHelper* helper, +16166: size_t charge, Handle** handle = nullptr, +16166: Priority priority = Priority::LOW, const Slice& compressed = Slice(), +16166: CompressionType type = CompressionType::kNoCompression) = 0; +16166: # 277 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: virtual Handle* CreateStandalone(const Slice& key, ObjectPtr obj, +16166: const CacheItemHelper* helper, size_t charge, +16166: bool allow_uncharged) = 0; +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: virtual Handle* Lookup(const Slice& key, +16166: const CacheItemHelper* helper = nullptr, +16166: CreateContext* create_context = nullptr, +16166: Priority priority = Priority::LOW, +16166: Statistics* stats = nullptr) = 0; +16166: +16166: +16166: inline Handle* BasicLookup(const Slice& key, Statistics* stats) { +16166: return Lookup(key, nullptr, nullptr, Priority::LOW, stats); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: virtual bool Ref(Handle* handle) = 0; +16166: # 319 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: virtual bool Release(Handle* handle, bool erase_if_last_ref = false) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual ObjectPtr Value(Handle* handle) = 0; +16166: +16166: +16166: +16166: +16166: virtual void Erase(const Slice& key) = 0; +16166: +16166: +16166: +16166: +16166: virtual uint64_t NewId() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void SetCapacity(size_t capacity) = 0; +16166: +16166: +16166: +16166: virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0; +16166: +16166: +16166: +16166: virtual bool HasStrictCapacityLimit() const = 0; +16166: +16166: +16166: virtual size_t GetCapacity() const = 0; +16166: +16166: +16166: virtual size_t GetUsage() const = 0; +16166: +16166: +16166: +16166: +16166: virtual size_t GetOccupancyCount() const { return +16166: # 361 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: (4294967295U) +16166: # 361 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: ; } +16166: +16166: +16166: +16166: +16166: virtual size_t GetTableAddressCount() const { return 0; } +16166: +16166: +16166: virtual size_t GetUsage(Handle* handle) const = 0; +16166: +16166: +16166: virtual size_t GetPinnedUsage() const = 0; +16166: +16166: +16166: virtual size_t GetCharge(Handle* handle) const = 0; +16166: +16166: +16166: virtual const CacheItemHelper* GetCacheItemHelper(Handle* handle) const = 0; +16166: +16166: virtual Status GetSecondaryCacheCapacity(size_t& ) const { +16166: return Status::NotSupported(); +16166: } +16166: +16166: virtual Status GetSecondaryCachePinnedUsage(size_t& ) const { +16166: return Status::NotSupported(); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void DisownData() { +16166: +16166: } +16166: +16166: struct ApplyToAllEntriesOptions { +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t average_entries_per_lock = 256; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: virtual void ApplyToAllEntries( +16166: const std::function& callback, +16166: const ApplyToAllEntriesOptions& opts) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void ApplyToHandle( +16166: Cache* cache, Handle* handle, +16166: const std::function& callback) = 0; +16166: +16166: +16166: virtual void EraseUnRefEntries() = 0; +16166: +16166: virtual std::string GetPrintableOptions() const { return ""; } +16166: +16166: +16166: +16166: +16166: +16166: virtual void ReportProblems( +16166: const std::shared_ptr& ) const {} +16166: +16166: MemoryAllocator* memory_allocator() const { return memory_allocator_.get(); } +16166: +16166: +16166: virtual uint32_t GetHashSeed() const { return 0; } +16166: # 450 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: virtual bool Release(Handle* handle, bool , +16166: bool erase_if_last_ref) { +16166: return Release(handle, erase_if_last_ref); +16166: } +16166: +16166: +16166: +16166: +16166: struct AsyncLookupHandle { +16166: +16166: +16166: +16166: Slice key; +16166: const CacheItemHelper* helper = nullptr; +16166: CreateContext* create_context = nullptr; +16166: Priority priority = Priority::LOW; +16166: Statistics* stats = nullptr; +16166: +16166: AsyncLookupHandle() {} +16166: AsyncLookupHandle(const Slice& _key, const CacheItemHelper* _helper, +16166: CreateContext* _create_context, +16166: Priority _priority = Priority::LOW, +16166: Statistics* _stats = nullptr) +16166: : key(_key), +16166: helper(_helper), +16166: create_context(_create_context), +16166: priority(_priority), +16166: stats(_stats) {} +16166: +16166: +16166: ~AsyncLookupHandle() { +16166: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: (static_cast ( +16166: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: !IsPending() +16166: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: "!IsPending()" +16166: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 480 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: ; } +16166: +16166: +16166: AsyncLookupHandle(const AsyncLookupHandle&) = delete; +16166: AsyncLookupHandle operator=(const AsyncLookupHandle&) = delete; +16166: AsyncLookupHandle(AsyncLookupHandle&&) = delete; +16166: AsyncLookupHandle operator=(AsyncLookupHandle&&) = delete; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool IsReady(); +16166: +16166: +16166: bool IsPending(); +16166: +16166: +16166: +16166: +16166: +16166: Handle* Result(); +16166: +16166: +16166: Handle* result_handle = nullptr; +16166: SecondaryCacheResultHandle* pending_handle = nullptr; +16166: SecondaryCache* pending_cache = nullptr; +16166: bool found_dummy_entry = false; +16166: bool kept_in_sec_cache = false; +16166: }; +16166: # 531 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h" +16166: virtual void StartAsyncLookup(AsyncLookupHandle& async_handle); +16166: +16166: +16166: +16166: Handle* Wait(AsyncLookupHandle& async_handle); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void WaitAll(AsyncLookupHandle* , size_t ); +16166: +16166: +16166: +16166: +16166: +16166: using EvictionCallback = +16166: std::function; +16166: +16166: +16166: +16166: void SetEvictionCallback(EvictionCallback&& fn); +16166: +16166: protected: +16166: std::shared_ptr memory_allocator_; +16166: EvictionCallback eviction_callback_; +16166: }; +16166: +16166: +16166: +16166: class CacheWrapper : public Cache { +16166: public: +16166: explicit CacheWrapper(std::shared_ptr target) +16166: : target_(std::move(target)) {} +16166: +16166: +16166: +16166: +16166: Status Insert( +16166: const Slice& key, ObjectPtr value, const CacheItemHelper* helper, +16166: size_t charge, Handle** handle = nullptr, +16166: Priority priority = Priority::LOW, +16166: const Slice& compressed_value = Slice(), +16166: CompressionType type = CompressionType::kNoCompression) override { +16166: return target_->Insert(key, value, helper, charge, handle, priority, +16166: compressed_value, type); +16166: } +16166: +16166: Handle* CreateStandalone(const Slice& key, ObjectPtr obj, +16166: const CacheItemHelper* helper, size_t charge, +16166: bool allow_uncharged) override { +16166: return target_->CreateStandalone(key, obj, helper, charge, allow_uncharged); +16166: } +16166: +16166: Handle* Lookup(const Slice& key, const CacheItemHelper* helper, +16166: CreateContext* create_context, +16166: Priority priority = Priority::LOW, +16166: Statistics* stats = nullptr) override { +16166: return target_->Lookup(key, helper, create_context, priority, stats); +16166: } +16166: +16166: bool Ref(Handle* handle) override { return target_->Ref(handle); } +16166: +16166: using Cache::Release; +16166: bool Release(Handle* handle, bool erase_if_last_ref = false) override { +16166: return target_->Release(handle, erase_if_last_ref); +16166: } +16166: +16166: ObjectPtr Value(Handle* handle) override { return target_->Value(handle); } +16166: +16166: void Erase(const Slice& key) override { target_->Erase(key); } +16166: uint64_t NewId() override { return target_->NewId(); } +16166: +16166: void SetCapacity(size_t capacity) override { target_->SetCapacity(capacity); } +16166: +16166: void SetStrictCapacityLimit(bool strict_capacity_limit) override { +16166: target_->SetStrictCapacityLimit(strict_capacity_limit); +16166: } +16166: +16166: bool HasStrictCapacityLimit() const override { +16166: return target_->HasStrictCapacityLimit(); +16166: } +16166: +16166: size_t GetOccupancyCount() const override { +16166: return target_->GetOccupancyCount(); +16166: } +16166: +16166: size_t GetTableAddressCount() const override { +16166: return target_->GetTableAddressCount(); +16166: } +16166: +16166: size_t GetCapacity() const override { return target_->GetCapacity(); } +16166: +16166: size_t GetUsage() const override { return target_->GetUsage(); } +16166: +16166: size_t GetUsage(Handle* handle) const override { +16166: return target_->GetUsage(handle); +16166: } +16166: +16166: size_t GetPinnedUsage() const override { return target_->GetPinnedUsage(); } +16166: +16166: size_t GetCharge(Handle* handle) const override { +16166: return target_->GetCharge(handle); +16166: } +16166: +16166: const CacheItemHelper* GetCacheItemHelper(Handle* handle) const override { +16166: return target_->GetCacheItemHelper(handle); +16166: } +16166: +16166: void ApplyToAllEntries( +16166: const std::function& callback, +16166: const ApplyToAllEntriesOptions& opts) override { +16166: target_->ApplyToAllEntries(callback, opts); +16166: } +16166: +16166: virtual void ApplyToHandle( +16166: Cache* cache, Handle* handle, +16166: const std::function& callback) +16166: override { +16166: auto cache_ptr = static_cast(cache); +16166: target_->ApplyToHandle(cache_ptr->target_.get(), handle, callback); +16166: } +16166: +16166: void EraseUnRefEntries() override { target_->EraseUnRefEntries(); } +16166: +16166: void StartAsyncLookup(AsyncLookupHandle& async_handle) override { +16166: target_->StartAsyncLookup(async_handle); +16166: } +16166: +16166: void WaitAll(AsyncLookupHandle* async_handles, size_t count) override { +16166: target_->WaitAll(async_handles, count); +16166: } +16166: +16166: uint32_t GetHashSeed() const override { return target_->GetHashSeed(); } +16166: +16166: void ReportProblems(const std::shared_ptr& info_log) const override { +16166: target_->ReportProblems(info_log); +16166: } +16166: +16166: const std::shared_ptr& GetTarget() { return target_; } +16166: +16166: protected: +16166: std::shared_ptr target_; +16166: }; +16166: +16166: +16166: +16166: extern const Cache::CacheItemHelper kNoopCacheItemHelper; +16166: +16166: } +16166: # 25 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +16166: +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class ReadCallback { +16166: public: +16166: explicit ReadCallback(SequenceNumber last_visible_seq) +16166: : max_visible_seq_(last_visible_seq) {} +16166: ReadCallback(SequenceNumber last_visible_seq, SequenceNumber min_uncommitted) +16166: : max_visible_seq_(last_visible_seq), min_uncommitted_(min_uncommitted) {} +16166: +16166: virtual ~ReadCallback() {} +16166: +16166: +16166: +16166: virtual bool IsVisibleFullCheck(SequenceNumber seq) = 0; +16166: +16166: inline bool IsVisible(SequenceNumber seq) { +16166: +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: (static_cast ( +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: min_uncommitted_ > 0 +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: "min_uncommitted_ > 0" +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: ; +16166: +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: (static_cast ( +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: min_uncommitted_ >= kMinUnCommittedSeq +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: "min_uncommitted_ >= kMinUnCommittedSeq" +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: ; +16166: if (seq < min_uncommitted_) { +16166: +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: (static_cast ( +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: seq <= max_visible_seq_ +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: "seq <= max_visible_seq_" +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: ; +16166: return true; +16166: } else if (max_visible_seq_ < seq) { +16166: +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: (static_cast ( +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: seq != 0 +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: "seq != 0" +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 33 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: ; +16166: return false; +16166: } else { +16166: +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: (static_cast ( +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: seq != 0 +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: "seq != 0" +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/db/read_callback.h" +16166: ; +16166: return IsVisibleFullCheck(seq); +16166: } +16166: } +16166: +16166: inline SequenceNumber max_visible_seq() { return max_visible_seq_; } +16166: +16166: +16166: virtual void Refresh(SequenceNumber seq) { max_visible_seq_ = seq; } +16166: +16166: protected: +16166: +16166: +16166: SequenceNumber max_visible_seq_ = kMaxSequenceNumber; +16166: +16166: const SequenceNumber min_uncommitted_ = kMinUnCommittedSeq; +16166: }; +16166: +16166: } +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: class BlobFetcher; +16166: class Comparator; +16166: class Logger; +16166: class MergeContext; +16166: class MergeOperator; +16166: class PinnableWideColumns; +16166: class PinnedIteratorsManager; +16166: class Statistics; +16166: class SystemClock; +16166: struct ParsedInternalKey; +16166: +16166: +16166: +16166: +16166: struct GetContextStats { +16166: uint64_t num_cache_hit = 0; +16166: uint64_t num_cache_index_hit = 0; +16166: uint64_t num_cache_data_hit = 0; +16166: uint64_t num_cache_filter_hit = 0; +16166: uint64_t num_cache_compression_dict_hit = 0; +16166: uint64_t num_cache_index_miss = 0; +16166: uint64_t num_cache_filter_miss = 0; +16166: uint64_t num_cache_data_miss = 0; +16166: uint64_t num_cache_compression_dict_miss = 0; +16166: uint64_t num_cache_bytes_read = 0; +16166: uint64_t num_cache_miss = 0; +16166: uint64_t num_cache_add = 0; +16166: uint64_t num_cache_add_redundant = 0; +16166: uint64_t num_cache_bytes_write = 0; +16166: uint64_t num_cache_index_add = 0; +16166: uint64_t num_cache_index_add_redundant = 0; +16166: uint64_t num_cache_index_bytes_insert = 0; +16166: uint64_t num_cache_data_add = 0; +16166: uint64_t num_cache_data_add_redundant = 0; +16166: uint64_t num_cache_data_bytes_insert = 0; +16166: uint64_t num_cache_filter_add = 0; +16166: uint64_t num_cache_filter_add_redundant = 0; +16166: uint64_t num_cache_filter_bytes_insert = 0; +16166: uint64_t num_cache_compression_dict_add = 0; +16166: uint64_t num_cache_compression_dict_add_redundant = 0; +16166: uint64_t num_cache_compression_dict_bytes_insert = 0; +16166: +16166: uint64_t num_filter_read = 0; +16166: uint64_t num_index_read = 0; +16166: uint64_t num_sst_read = 0; +16166: }; +16166: # 67 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +16166: class GetContext { +16166: public: +16166: +16166: +16166: enum GetState { +16166: kNotFound, +16166: kFound, +16166: kDeleted, +16166: kCorrupt, +16166: kMerge, +16166: kUnexpectedBlobIndex, +16166: kMergeOperatorFailed, +16166: }; +16166: GetContextStats get_context_stats_; +16166: # 102 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +16166: GetContext(const Comparator* ucmp, const MergeOperator* merge_operator, +16166: Logger* logger, Statistics* statistics, GetState init_state, +16166: const Slice& user_key, PinnableSlice* value, +16166: PinnableWideColumns* columns, bool* value_found, +16166: MergeContext* merge_context, bool do_merge, +16166: SequenceNumber* max_covering_tombstone_seq, SystemClock* clock, +16166: SequenceNumber* seq = nullptr, +16166: PinnedIteratorsManager* _pinned_iters_mgr = nullptr, +16166: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +16166: uint64_t tracing_get_id = 0, BlobFetcher* blob_fetcher = nullptr); +16166: GetContext(const Comparator* ucmp, const MergeOperator* merge_operator, +16166: Logger* logger, Statistics* statistics, GetState init_state, +16166: const Slice& user_key, PinnableSlice* value, +16166: PinnableWideColumns* columns, std::string* timestamp, +16166: bool* value_found, MergeContext* merge_context, bool do_merge, +16166: SequenceNumber* max_covering_tombstone_seq, SystemClock* clock, +16166: SequenceNumber* seq = nullptr, +16166: PinnedIteratorsManager* _pinned_iters_mgr = nullptr, +16166: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +16166: uint64_t tracing_get_id = 0, BlobFetcher* blob_fetcher = nullptr); +16166: +16166: GetContext() = delete; +16166: +16166: +16166: +16166: void MarkKeyMayExist(); +16166: # 137 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +16166: bool SaveValue(const ParsedInternalKey& parsed_key, const Slice& value, +16166: bool* matched, Status* read_status, +16166: Cleanable* value_pinner = nullptr); +16166: +16166: +16166: +16166: void SaveValue(const Slice& value, SequenceNumber seq); +16166: +16166: GetState State() const { return state_; } +16166: +16166: SequenceNumber* max_covering_tombstone_seq() { +16166: return max_covering_tombstone_seq_; +16166: } +16166: +16166: bool NeedTimestamp() { return timestamp_ != nullptr; } +16166: +16166: inline size_t TimestampSize() { return ucmp_->timestamp_size(); } +16166: +16166: void SetTimestampFromRangeTombstone(const Slice& timestamp) { +16166: +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 3 4 +16166: (static_cast ( +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +16166: timestamp_ +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +16166: "timestamp_" +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 156 "/build/reproducible-path/rocksdb-9.10.0/table/get_context.h" +16166: ; +16166: timestamp_->assign(timestamp.data(), timestamp.size()); +16166: ts_from_rangetombstone_ = true; +16166: } +16166: +16166: PinnedIteratorsManager* pinned_iters_mgr() { return pinned_iters_mgr_; } +16166: +16166: +16166: +16166: +16166: void SetReplayLog(std::string* replay_log) { replay_log_ = replay_log; } +16166: +16166: +16166: bool NeedToReadSequence() const { return (seq_ != nullptr); } +16166: +16166: bool sample() const { return sample_; } +16166: +16166: bool CheckCallback(SequenceNumber seq) { +16166: if (callback_) { +16166: return callback_->IsVisible(seq); +16166: } +16166: return true; +16166: } +16166: +16166: void ReportCounters(); +16166: +16166: bool has_callback() const { return callback_ != nullptr; } +16166: +16166: const Slice& ukey_to_get_blob_value() const { +16166: if (!ukey_with_ts_found_.empty()) { +16166: return ukey_with_ts_found_; +16166: } else { +16166: return user_key_; +16166: } +16166: } +16166: +16166: uint64_t get_tracing_get_id() const { return tracing_get_id_; } +16166: +16166: void push_operand(const Slice& value, Cleanable* value_pinner); +16166: +16166: private: +16166: +16166: +16166: void PostprocessMerge(const Status& merge_status); +16166: +16166: +16166: +16166: void MergeWithNoBaseValue(); +16166: void MergeWithPlainBaseValue(const Slice& value); +16166: void MergeWithWideColumnBaseValue(const Slice& entity); +16166: +16166: bool GetBlobValue(const Slice& user_key, const Slice& blob_index, +16166: PinnableSlice* blob_value, Status* read_status); +16166: +16166: void appendToReplayLog(ValueType type, Slice value, Slice ts); +16166: +16166: const Comparator* ucmp_; +16166: const MergeOperator* merge_operator_; +16166: +16166: Logger* logger_; +16166: Statistics* statistics_; +16166: +16166: GetState state_; +16166: Slice user_key_; +16166: +16166: +16166: +16166: PinnableSlice ukey_with_ts_found_; +16166: PinnableSlice* pinnable_val_; +16166: PinnableWideColumns* columns_; +16166: std::string* timestamp_; +16166: bool ts_from_rangetombstone_{false}; +16166: bool* value_found_; +16166: MergeContext* merge_context_; +16166: SequenceNumber* max_covering_tombstone_seq_; +16166: SystemClock* clock_; +16166: +16166: +16166: SequenceNumber* seq_; +16166: std::string* replay_log_; +16166: +16166: PinnedIteratorsManager* pinned_iters_mgr_; +16166: ReadCallback* callback_; +16166: bool sample_; +16166: +16166: +16166: +16166: bool do_merge_; +16166: bool* is_blob_index_; +16166: +16166: +16166: const uint64_t tracing_get_id_; +16166: BlobFetcher* blob_fetcher_; +16166: }; +16166: +16166: +16166: +16166: +16166: Status replayGetContextLog(const Slice& replay_log, const Slice& user_key, +16166: GetContext* get_context, +16166: Cleanable* value_pinner = nullptr, +16166: SequenceNumber seq_no = kMaxSequenceNumber); +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/lookup_key.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/db/lookup_key.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: class LookupKey { +16166: public: +16166: +16166: +16166: LookupKey(const Slice& _user_key, SequenceNumber sequence, +16166: const Slice* ts = nullptr); +16166: +16166: ~LookupKey(); +16166: +16166: +16166: Slice memtable_key() const { +16166: return Slice(start_, static_cast(end_ - start_)); +16166: } +16166: +16166: +16166: Slice internal_key() const { +16166: return Slice(kstart_, static_cast(end_ - kstart_)); +16166: } +16166: +16166: +16166: +16166: +16166: Slice user_key() const { +16166: return Slice(kstart_, static_cast(end_ - kstart_ - 8)); +16166: } +16166: +16166: private: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: const char* start_; +16166: const char* kstart_; +16166: const char* end_; +16166: char space_[200]; +16166: +16166: +16166: LookupKey(const LookupKey&); +16166: void operator=(const LookupKey&); +16166: }; +16166: +16166: inline LookupKey::~LookupKey() { +16166: if (start_ != space_) delete[] start_; +16166: } +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/async_file_reader.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 2 +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/single_thread_executor.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 2 +16166: +16166: namespace rocksdb { +16166: class GetContext; +16166: class PinnableWideColumns; +16166: +16166: struct KeyContext { +16166: const Slice* key; +16166: LookupKey* lkey; +16166: Slice ukey_with_ts; +16166: Slice ukey_without_ts; +16166: Slice ikey; +16166: ColumnFamilyHandle* column_family; +16166: Status* s; +16166: MergeContext merge_context; +16166: SequenceNumber max_covering_tombstone_seq; +16166: bool key_exists; +16166: bool is_blob_index; +16166: void* cb_arg; +16166: PinnableSlice* value; +16166: PinnableWideColumns* columns; +16166: std::string* timestamp; +16166: GetContext* get_context; +16166: +16166: KeyContext(ColumnFamilyHandle* col_family, const Slice& user_key, +16166: PinnableSlice* val, PinnableWideColumns* cols, std::string* ts, +16166: Status* stat) +16166: : key(&user_key), +16166: lkey(nullptr), +16166: column_family(col_family), +16166: s(stat), +16166: max_covering_tombstone_seq(0), +16166: key_exists(false), +16166: is_blob_index(false), +16166: cb_arg(nullptr), +16166: value(val), +16166: columns(cols), +16166: timestamp(ts), +16166: get_context(nullptr) {} +16166: }; +16166: # 97 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: class MultiGetContext { +16166: public: +16166: +16166: +16166: +16166: +16166: static const int MAX_BATCH_SIZE = 32; +16166: +16166: +16166: +16166: using Mask = uint64_t; +16166: static_assert(MAX_BATCH_SIZE < sizeof(Mask) * 8); +16166: +16166: MultiGetContext(autovector* sorted_keys, +16166: size_t begin, size_t num_keys, SequenceNumber snapshot, +16166: const ReadOptions& read_opts, FileSystem* fs, +16166: Statistics* stats) +16166: : num_keys_(num_keys), +16166: value_mask_(0), +16166: value_size_(0), +16166: lookup_key_ptr_(reinterpret_cast(lookup_key_stack_buf)) +16166: +16166: +16166: +16166: +16166: +16166: { +16166: (void)fs; +16166: (void)stats; +16166: +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: num_keys <= MAX_BATCH_SIZE +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "num_keys <= MAX_BATCH_SIZE" +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 126 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: if (num_keys > MAX_LOOKUP_KEYS_ON_STACK) { +16166: lookup_key_heap_buf.reset(new char[sizeof(LookupKey) * num_keys]); +16166: lookup_key_ptr_ = reinterpret_cast(lookup_key_heap_buf.get()); +16166: } +16166: +16166: for (size_t iter = 0; iter != num_keys_; ++iter) { +16166: +16166: sorted_keys_[iter] = (*sorted_keys)[begin + iter]; +16166: sorted_keys_[iter]->lkey = new (&lookup_key_ptr_[iter]) +16166: LookupKey(*sorted_keys_[iter]->key, snapshot, read_opts.timestamp); +16166: sorted_keys_[iter]->ukey_with_ts = sorted_keys_[iter]->lkey->user_key(); +16166: sorted_keys_[iter]->ukey_without_ts = StripTimestampFromUserKey( +16166: sorted_keys_[iter]->lkey->user_key(), +16166: read_opts.timestamp == nullptr ? 0 : read_opts.timestamp->size()); +16166: sorted_keys_[iter]->ikey = sorted_keys_[iter]->lkey->internal_key(); +16166: sorted_keys_[iter]->timestamp = (*sorted_keys)[begin + iter]->timestamp; +16166: sorted_keys_[iter]->get_context = +16166: (*sorted_keys)[begin + iter]->get_context; +16166: } +16166: } +16166: +16166: ~MultiGetContext() { +16166: for (size_t i = 0; i < num_keys_; ++i) { +16166: lookup_key_ptr_[i].~LookupKey(); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: private: +16166: static const int MAX_LOOKUP_KEYS_ON_STACK = 16; +16166: alignas( +16166: alignof(LookupKey)) char lookup_key_stack_buf[sizeof(LookupKey) * +16166: MAX_LOOKUP_KEYS_ON_STACK]; +16166: std::array sorted_keys_; +16166: size_t num_keys_; +16166: Mask value_mask_; +16166: uint64_t value_size_; +16166: std::unique_ptr lookup_key_heap_buf; +16166: LookupKey* lookup_key_ptr_; +16166: +16166: +16166: +16166: +16166: +16166: public: +16166: # 186 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: class Range { +16166: public: +16166: +16166: +16166: +16166: class Iterator { +16166: public: +16166: +16166: using self_type = Iterator; +16166: using value_type = KeyContext; +16166: using reference = KeyContext&; +16166: using pointer = KeyContext*; +16166: using difference_type = int; +16166: using iterator_category = std::forward_iterator_tag; +16166: +16166: Iterator(const Range* range, size_t idx) +16166: : range_(range), ctx_(range->ctx_), index_(idx) { +16166: while (index_ < range_->end_ && +16166: (Mask{1} << index_) & +16166: (range_->ctx_->value_mask_ | range_->skip_mask_ | +16166: range_->invalid_mask_)) +16166: index_++; +16166: } +16166: +16166: Iterator(const Iterator&) = default; +16166: +16166: Iterator(const Iterator& other, const Range* range) +16166: : range_(range), ctx_(other.ctx_), index_(other.index_) { +16166: +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: range->ctx_ == other.ctx_ +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "range->ctx_ == other.ctx_" +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: } +16166: Iterator& operator=(const Iterator&) = default; +16166: +16166: Iterator& operator++() { +16166: while (++index_ < range_->end_ && +16166: (Mask{1} << index_) & +16166: (range_->ctx_->value_mask_ | range_->skip_mask_ | +16166: range_->invalid_mask_)) +16166: ; +16166: return *this; +16166: } +16166: +16166: bool operator==(Iterator other) const { +16166: +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: range_->ctx_ == other.range_->ctx_ +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "range_->ctx_ == other.range_->ctx_" +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: return index_ == other.index_; +16166: } +16166: +16166: bool operator!=(Iterator other) const { +16166: +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: range_->ctx_ == other.range_->ctx_ +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "range_->ctx_ == other.range_->ctx_" +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: return index_ != other.index_; +16166: } +16166: +16166: KeyContext& operator*() { +16166: +16166: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: index_ < range_->end_ && index_ >= range_->start_ +16166: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "index_ < range_->end_ && index_ >= range_->start_" +16166: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 238 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: return *(ctx_->sorted_keys_[index_]); +16166: } +16166: +16166: KeyContext* operator->() { +16166: +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: index_ < range_->end_ && index_ >= range_->start_ +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "index_ < range_->end_ && index_ >= range_->start_" +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: return ctx_->sorted_keys_[index_]; +16166: } +16166: +16166: size_t index() { return index_; } +16166: +16166: private: +16166: friend Range; +16166: const Range* range_; +16166: const MultiGetContext* ctx_; +16166: size_t index_; +16166: }; +16166: +16166: Range(const Range& mget_range, const Iterator& first, +16166: const Iterator& last) { +16166: ctx_ = mget_range.ctx_; +16166: if (first == last) { +16166: +16166: +16166: start_ = mget_range.start_; +16166: end_ = start_; +16166: } else { +16166: start_ = first.index_; +16166: end_ = last.index_; +16166: } +16166: skip_mask_ = mget_range.skip_mask_; +16166: invalid_mask_ = mget_range.invalid_mask_; +16166: +16166: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: start_ < 64 +16166: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "start_ < 64" +16166: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 270 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: +16166: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: end_ < 64 +16166: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "end_ < 64" +16166: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 271 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: } +16166: +16166: Range() = default; +16166: +16166: Iterator begin() const { return Iterator(this, start_); } +16166: +16166: Iterator end() const { return Iterator(this, end_); } +16166: +16166: bool empty() const { return RemainingMask() == 0; } +16166: +16166: void SkipIndex(size_t index) { skip_mask_ |= Mask{1} << index; } +16166: +16166: void SkipKey(const Iterator& iter) { SkipIndex(iter.index_); } +16166: +16166: bool IsKeySkipped(const Iterator& iter) const { +16166: return skip_mask_ & (Mask{1} << iter.index_); +16166: } +16166: +16166: +16166: +16166: void MarkKeyDone(Iterator& iter) { +16166: ctx_->value_mask_ |= (Mask{1} << iter.index_); +16166: } +16166: +16166: bool CheckKeyDone(Iterator& iter) const { +16166: return ctx_->value_mask_ & (Mask{1} << iter.index_); +16166: } +16166: +16166: uint64_t KeysLeft() const { return BitsSetToOne(RemainingMask()); } +16166: +16166: void AddSkipsFrom(const Range& other) { +16166: +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ctx_ == other.ctx_ +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "ctx_ == other.ctx_" +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: skip_mask_ |= other.skip_mask_; +16166: } +16166: +16166: uint64_t GetValueSize() { return ctx_->value_size_; } +16166: +16166: void AddValueSize(uint64_t value_size) { ctx_->value_size_ += value_size; } +16166: +16166: MultiGetContext* context() const { return ctx_; } +16166: +16166: Range Suffix(const Range& other) const { +16166: size_t other_last = other.FindLastRemaining(); +16166: size_t my_last = FindLastRemaining(); +16166: +16166: if (my_last > other_last) { +16166: return Range(*this, Iterator(this, other_last), +16166: Iterator(this, my_last)); +16166: } else { +16166: return Range(*this, begin(), begin()); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: Range& operator+=(const Range& rhs) { +16166: +16166: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: rhs.start_ >= end_ +16166: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "rhs.start_ >= end_" +16166: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 330 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: +16166: if (end_ < rhs.start_) { +16166: invalid_mask_ |= RangeMask(end_, rhs.start_); +16166: skip_mask_ |= RangeMask(end_, rhs.start_); +16166: } +16166: start_ = std::min(start_, rhs.start_); +16166: end_ = std::max(end_, rhs.end_); +16166: skip_mask_ |= rhs.skip_mask_ & RangeMask(rhs.start_, rhs.end_); +16166: invalid_mask_ |= (rhs.invalid_mask_ | rhs.skip_mask_) & +16166: RangeMask(rhs.start_, rhs.end_); +16166: +16166: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: start_ < 64 +16166: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "start_ < 64" +16166: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 341 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: end_ < 64 +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "end_ < 64" +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 342 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: return *this; +16166: } +16166: +16166: +16166: +16166: +16166: Range& operator-=(const Range& rhs) { +16166: +16166: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: start_ <= rhs.start_ && end_ >= rhs.end_ +16166: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "start_ <= rhs.start_ && end_ >= rhs.end_" +16166: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 350 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: skip_mask_ |= (~rhs.skip_mask_ | rhs.invalid_mask_) & +16166: RangeMask(rhs.start_, rhs.end_); +16166: invalid_mask_ |= (~rhs.skip_mask_ | rhs.invalid_mask_) & +16166: RangeMask(rhs.start_, rhs.end_); +16166: return *this; +16166: } +16166: +16166: +16166: Range operator~() { +16166: Range res = *this; +16166: res.skip_mask_ = ~skip_mask_ & RangeMask(start_, end_); +16166: return res; +16166: } +16166: +16166: private: +16166: friend MultiGetContext; +16166: MultiGetContext* ctx_; +16166: size_t start_; +16166: size_t end_; +16166: Mask skip_mask_; +16166: Mask invalid_mask_; +16166: +16166: Range(MultiGetContext* ctx, size_t num_keys) +16166: : ctx_(ctx), +16166: start_(0), +16166: end_(num_keys), +16166: skip_mask_(0), +16166: invalid_mask_(0) { +16166: +16166: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: (static_cast ( +16166: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: num_keys < 64 +16166: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: "num_keys < 64" +16166: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 379 "/build/reproducible-path/rocksdb-9.10.0/table/multiget_context.h" +16166: ; +16166: } +16166: +16166: static Mask RangeMask(size_t start, size_t end) { +16166: return (((Mask{1} << (end - start)) - 1) << start); +16166: } +16166: +16166: Mask RemainingMask() const { +16166: return (((Mask{1} << end_) - 1) & ~((Mask{1} << start_) - 1) & +16166: ~(ctx_->value_mask_ | skip_mask_)); +16166: } +16166: +16166: size_t FindLastRemaining() const { +16166: Mask mask = RemainingMask(); +16166: size_t index = (mask >>= start_) ? start_ : 0; +16166: while (mask >>= 1) { +16166: index++; +16166: } +16166: return index; +16166: } +16166: }; +16166: +16166: +16166: Range GetMultiGetRange() { return Range(this, num_keys_); } +16166: }; +16166: +16166: } +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class Iterator; +16166: struct ParsedInternalKey; +16166: class Slice; +16166: class Arena; +16166: struct ReadOptions; +16166: struct TableProperties; +16166: class GetContext; +16166: class MultiGetContext; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class TableReader { +16166: public: +16166: virtual ~TableReader() {} +16166: # 57 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +16166: virtual InternalIterator* NewIterator( +16166: const ReadOptions& read_options, const SliceTransform* prefix_extractor, +16166: Arena* arena, bool skip_filters, TableReaderCaller caller, +16166: size_t compaction_readahead_size = 0, +16166: bool allow_unprepared_value = false) = 0; +16166: +16166: +16166: virtual FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +16166: const ReadOptions& ) { +16166: return nullptr; +16166: } +16166: +16166: virtual FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +16166: SequenceNumber , const Slice* ) { +16166: return nullptr; +16166: } +16166: # 85 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +16166: virtual uint64_t ApproximateOffsetOf(const ReadOptions& read_options, +16166: const Slice& key, +16166: TableReaderCaller caller) = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual uint64_t ApproximateSize(const ReadOptions& read_options, +16166: const Slice& start, const Slice& end, +16166: TableReaderCaller caller) = 0; +16166: +16166: struct Anchor { +16166: Anchor(const Slice& _user_key, size_t _range_size) +16166: : user_key(_user_key.ToStringView()), range_size(_range_size) {} +16166: std::string user_key; +16166: size_t range_size; +16166: }; +16166: +16166: +16166: +16166: virtual Status ApproximateKeyAnchors(const ReadOptions& , +16166: std::vector& ) { +16166: return Status::NotSupported("ApproximateKeyAnchors() not supported."); +16166: } +16166: +16166: +16166: +16166: virtual void SetupForCompaction() = 0; +16166: +16166: virtual std::shared_ptr GetTableProperties() const = 0; +16166: +16166: +16166: virtual void Prepare(const Slice& ) {} +16166: +16166: +16166: virtual size_t ApproximateMemoryUsage() const = 0; +16166: # 135 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +16166: virtual Status Get(const ReadOptions& readOptions, const Slice& key, +16166: GetContext* get_context, +16166: const SliceTransform* prefix_extractor, +16166: bool skip_filters = false) = 0; +16166: +16166: +16166: +16166: +16166: virtual Status MultiGetFilter(const ReadOptions& , +16166: const SliceTransform* , +16166: MultiGetContext::Range* ) { +16166: return Status::NotSupported(); +16166: } +16166: +16166: virtual void MultiGet(const ReadOptions& readOptions, +16166: const MultiGetContext::Range* mget_range, +16166: const SliceTransform* prefix_extractor, +16166: bool skip_filters = false) { +16166: for (auto iter = mget_range->begin(); iter != mget_range->end(); ++iter) { +16166: *iter->s = Get(readOptions, iter->ikey, iter->get_context, +16166: prefix_extractor, skip_filters); +16166: } +16166: } +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/table_reader.h" +16166: virtual Status Prefetch(const ReadOptions& , +16166: const Slice* begin = nullptr, +16166: const Slice* end = nullptr) { +16166: (void)begin; +16166: (void)end; +16166: +16166: +16166: return Status::OK(); +16166: } +16166: +16166: +16166: virtual Status DumpTable(WritableFile* ) { +16166: return Status::NotSupported("DumpTable() not supported"); +16166: } +16166: +16166: +16166: virtual Status VerifyChecksum(const ReadOptions& , +16166: TableReaderCaller ) { +16166: return Status::NotSupported("VerifyChecksum() not supported"); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void MarkObsolete(uint32_t ) { +16166: +16166: } +16166: }; +16166: +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/unique_id_impl.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/unique_id.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/unique_id.h" +16166: Status GetUniqueIdFromTableProperties(const TableProperties &props, +16166: std::string *out_id); +16166: # 47 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/unique_id.h" +16166: Status GetExtendedUniqueIdFromTableProperties(const TableProperties &props, +16166: std::string *out_id); +16166: +16166: +16166: +16166: +16166: std::string UniqueIdToHumanString(const std::string &id); +16166: +16166: } +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/table/unique_id_impl.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: +16166: using UniqueId64x2 = std::array; +16166: +16166: +16166: constexpr UniqueId64x2 kNullUniqueId64x2 = {}; +16166: +16166: +16166: +16166: using UniqueId64x3 = std::array; +16166: +16166: +16166: constexpr UniqueId64x3 kNullUniqueId64x3 = {}; +16166: +16166: +16166: struct UniqueIdPtr { +16166: uint64_t *ptr = nullptr; +16166: bool extended = false; +16166: +16166: UniqueIdPtr(UniqueId64x2 *id) { +16166: ptr = (*id).data(); +16166: extended = false; +16166: } +16166: UniqueIdPtr(UniqueId64x3 *id) { +16166: ptr = (*id).data(); +16166: extended = true; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: Status GetSstInternalUniqueId(const std::string &db_id, +16166: const std::string &db_session_id, +16166: uint64_t file_number, UniqueIdPtr out, +16166: bool force = false); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void InternalUniqueIdToExternal(UniqueIdPtr in_out); +16166: +16166: +16166: +16166: void ExternalUniqueIdToInternal(UniqueIdPtr in_out); +16166: +16166: +16166: std::string EncodeUniqueIdBytes(UniqueIdPtr in); +16166: +16166: +16166: Status DecodeUniqueIdBytes(const std::string &unique_id, UniqueIdPtr out); +16166: +16166: +16166: +16166: std::string InternalUniqueIdToHumanString(UniqueIdPtr in); +16166: # 85 "/build/reproducible-path/rocksdb-9.10.0/table/unique_id_impl.h" +16166: std::string EncodeSessionId(uint64_t upper, uint64_t lower); +16166: +16166: +16166: +16166: +16166: Status DecodeSessionId(const std::string &db_session_id, uint64_t *upper, +16166: uint64_t *lower); +16166: +16166: } +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: enum Tag : uint32_t { +16166: kComparator = 1, +16166: kLogNumber = 2, +16166: kNextFileNumber = 3, +16166: kLastSequence = 4, +16166: kCompactCursor = 5, +16166: kDeletedFile = 6, +16166: kNewFile = 7, +16166: +16166: kPrevLogNumber = 9, +16166: kMinLogNumberToKeep = 10, +16166: +16166: +16166: kNewFile2 = 100, +16166: kNewFile3 = 102, +16166: kNewFile4 = 103, +16166: kColumnFamily = 200, +16166: kColumnFamilyAdd = 201, +16166: kColumnFamilyDrop = 202, +16166: kMaxColumnFamily = 203, +16166: +16166: kInAtomicGroup = 300, +16166: +16166: kBlobFileAddition = 400, +16166: kBlobFileGarbage, +16166: +16166: +16166: kTagSafeIgnoreMask = 1 << 13, +16166: +16166: +16166: kDbId, +16166: kBlobFileAddition_DEPRECATED, +16166: kBlobFileGarbage_DEPRECATED, +16166: kWalAddition, +16166: kWalDeletion, +16166: kFullHistoryTsLow, +16166: kWalAddition2, +16166: kWalDeletion2, +16166: kPersistUserDefinedTimestamps, +16166: }; +16166: +16166: enum NewFileCustomTag : uint32_t { +16166: kTerminate = 1, +16166: kNeedCompaction = 2, +16166: +16166: +16166: +16166: kMinLogNumberToKeepHack = 3, +16166: kOldestBlobFileNumber = 4, +16166: kOldestAncesterTime = 5, +16166: kFileCreationTime = 6, +16166: kFileChecksum = 7, +16166: kFileChecksumFuncName = 8, +16166: kTemperature = 9, +16166: kMinTimestamp = 10, +16166: kMaxTimestamp = 11, +16166: kUniqueId = 12, +16166: kEpochNumber = 13, +16166: kCompensatedRangeDeletionSize = 14, +16166: kTailSize = 15, +16166: kUserDefinedTimestampsPersisted = 16, +16166: +16166: +16166: +16166: kCustomTagNonSafeIgnoreMask = 1 << 6, +16166: +16166: +16166: kPathId, +16166: }; +16166: +16166: class VersionSet; +16166: +16166: constexpr uint64_t kFileNumberMask = 0x3FFFFFFFFFFFFFFF; +16166: constexpr uint64_t kUnknownOldestAncesterTime = 0; +16166: constexpr uint64_t kUnknownNewestKeyTime = 0; +16166: constexpr uint64_t kUnknownFileCreationTime = 0; +16166: constexpr uint64_t kUnknownEpochNumber = 0; +16166: +16166: +16166: constexpr uint64_t kReservedEpochNumberForFileIngestedBehind = 1; +16166: +16166: uint64_t PackFileNumberAndPathId(uint64_t number, uint64_t path_id); +16166: +16166: +16166: +16166: +16166: +16166: +16166: struct FileDescriptor { +16166: +16166: TableReader* table_reader; +16166: uint64_t packed_number_and_path_id; +16166: uint64_t file_size; +16166: SequenceNumber smallest_seqno; +16166: SequenceNumber largest_seqno; +16166: +16166: FileDescriptor() : FileDescriptor(0, 0, 0) {} +16166: +16166: FileDescriptor(uint64_t number, uint32_t path_id, uint64_t _file_size) +16166: : FileDescriptor(number, path_id, _file_size, kMaxSequenceNumber, 0) {} +16166: +16166: FileDescriptor(uint64_t number, uint32_t path_id, uint64_t _file_size, +16166: SequenceNumber _smallest_seqno, SequenceNumber _largest_seqno) +16166: : table_reader(nullptr), +16166: packed_number_and_path_id(PackFileNumberAndPathId(number, path_id)), +16166: file_size(_file_size), +16166: smallest_seqno(_smallest_seqno), +16166: largest_seqno(_largest_seqno) {} +16166: +16166: FileDescriptor(const FileDescriptor& fd) { *this = fd; } +16166: +16166: FileDescriptor& operator=(const FileDescriptor& fd) { +16166: table_reader = fd.table_reader; +16166: packed_number_and_path_id = fd.packed_number_and_path_id; +16166: file_size = fd.file_size; +16166: smallest_seqno = fd.smallest_seqno; +16166: largest_seqno = fd.largest_seqno; +16166: return *this; +16166: } +16166: +16166: uint64_t GetNumber() const { +16166: return packed_number_and_path_id & kFileNumberMask; +16166: } +16166: uint32_t GetPathId() const { +16166: return static_cast(packed_number_and_path_id / +16166: (kFileNumberMask + 1)); +16166: } +16166: uint64_t GetFileSize() const { return file_size; } +16166: }; +16166: +16166: struct FileSampledStats { +16166: FileSampledStats() : num_reads_sampled(0) {} +16166: FileSampledStats(const FileSampledStats& other) { *this = other; } +16166: FileSampledStats& operator=(const FileSampledStats& other) { +16166: num_reads_sampled = other.num_reads_sampled.load(); +16166: return *this; +16166: } +16166: +16166: +16166: mutable std::atomic num_reads_sampled; +16166: }; +16166: +16166: struct FileMetaData { +16166: FileDescriptor fd; +16166: InternalKey smallest; +16166: InternalKey largest; +16166: +16166: +16166: Cache::Handle* table_reader_handle = nullptr; +16166: +16166: FileSampledStats stats; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint64_t compensated_file_size = 0; +16166: +16166: +16166: uint64_t num_entries = +16166: 0; +16166: +16166: uint64_t num_deletions = 0; +16166: uint64_t raw_key_size = 0; +16166: uint64_t raw_value_size = 0; +16166: uint64_t num_range_deletions = 0; +16166: +16166: +16166: +16166: uint64_t compensated_range_deletion_size = 0; +16166: +16166: int refs = 0; +16166: +16166: bool being_compacted = false; +16166: bool init_stats_from_file = false; +16166: +16166: +16166: bool marked_for_compaction = false; +16166: +16166: Temperature temperature = Temperature::kUnknown; +16166: +16166: +16166: +16166: uint64_t oldest_blob_file_number = kInvalidBlobFileNumber; +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: uint64_t oldest_ancester_time = kUnknownOldestAncesterTime; +16166: +16166: +16166: uint64_t file_creation_time = kUnknownFileCreationTime; +16166: +16166: +16166: +16166: +16166: +16166: uint64_t epoch_number = kUnknownEpochNumber; +16166: +16166: +16166: std::string file_checksum = kUnknownFileChecksum; +16166: +16166: +16166: std::string file_checksum_func_name = kUnknownFileChecksumFuncName; +16166: +16166: +16166: UniqueId64x2 unique_id{}; +16166: +16166: +16166: +16166: uint64_t tail_size = 0; +16166: +16166: +16166: +16166: +16166: bool user_defined_timestamps_persisted = true; +16166: +16166: FileMetaData() = default; +16166: +16166: FileMetaData(uint64_t file, uint32_t file_path_id, uint64_t file_size, +16166: const InternalKey& smallest_key, const InternalKey& largest_key, +16166: const SequenceNumber& smallest_seq, +16166: const SequenceNumber& largest_seq, bool marked_for_compact, +16166: Temperature _temperature, uint64_t oldest_blob_file, +16166: uint64_t _oldest_ancester_time, uint64_t _file_creation_time, +16166: uint64_t _epoch_number, const std::string& _file_checksum, +16166: const std::string& _file_checksum_func_name, +16166: UniqueId64x2 _unique_id, +16166: const uint64_t _compensated_range_deletion_size, +16166: uint64_t _tail_size, bool _user_defined_timestamps_persisted) +16166: : fd(file, file_path_id, file_size, smallest_seq, largest_seq), +16166: smallest(smallest_key), +16166: largest(largest_key), +16166: compensated_range_deletion_size(_compensated_range_deletion_size), +16166: marked_for_compaction(marked_for_compact), +16166: temperature(_temperature), +16166: oldest_blob_file_number(oldest_blob_file), +16166: oldest_ancester_time(_oldest_ancester_time), +16166: file_creation_time(_file_creation_time), +16166: epoch_number(_epoch_number), +16166: file_checksum(_file_checksum), +16166: file_checksum_func_name(_file_checksum_func_name), +16166: unique_id(std::move(_unique_id)), +16166: tail_size(_tail_size), +16166: user_defined_timestamps_persisted(_user_defined_timestamps_persisted) { +16166: rocksdb::SyncPoint::GetInstance()->Process("FileMetaData::FileMetaData", this); +16166: } +16166: +16166: +16166: +16166: Status UpdateBoundaries(const Slice& key, const Slice& value, +16166: SequenceNumber seqno, ValueType value_type); +16166: +16166: +16166: +16166: void UpdateBoundariesForRange(const InternalKey& start, +16166: const InternalKey& end, SequenceNumber seqno, +16166: const InternalKeyComparator& icmp) { +16166: if (smallest.size() == 0 || icmp.Compare(start, smallest) < 0) { +16166: smallest = start; +16166: } +16166: if (largest.size() == 0 || icmp.Compare(largest, end) < 0) { +16166: largest = end; +16166: } +16166: +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: icmp.Compare(smallest, largest) <= 0 +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "icmp.Compare(smallest, largest) <= 0" +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 309 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: fd.smallest_seqno = std::min(fd.smallest_seqno, seqno); +16166: fd.largest_seqno = std::max(fd.largest_seqno, seqno); +16166: } +16166: +16166: +16166: +16166: +16166: uint64_t TryGetOldestAncesterTime() { +16166: if (oldest_ancester_time != kUnknownOldestAncesterTime) { +16166: return oldest_ancester_time; +16166: } else if (fd.table_reader != nullptr && +16166: fd.table_reader->GetTableProperties() != nullptr) { +16166: return fd.table_reader->GetTableProperties()->creation_time; +16166: } +16166: return kUnknownOldestAncesterTime; +16166: } +16166: +16166: uint64_t TryGetFileCreationTime() { +16166: if (file_creation_time != kUnknownFileCreationTime) { +16166: return file_creation_time; +16166: } else if (fd.table_reader != nullptr && +16166: fd.table_reader->GetTableProperties() != nullptr) { +16166: return fd.table_reader->GetTableProperties()->file_creation_time; +16166: } +16166: return kUnknownFileCreationTime; +16166: } +16166: +16166: +16166: +16166: uint64_t TryGetNewestKeyTime(FileMetaData* prev_file = nullptr) { +16166: if (fd.table_reader != nullptr && +16166: fd.table_reader->GetTableProperties() != nullptr) { +16166: uint64_t newest_key_time = +16166: fd.table_reader->GetTableProperties()->newest_key_time; +16166: if (newest_key_time != kUnknownNewestKeyTime) { +16166: return newest_key_time; +16166: } +16166: } +16166: if (prev_file != nullptr) { +16166: uint64_t prev_oldest_ancestor_time = +16166: prev_file->TryGetOldestAncesterTime(); +16166: if (prev_oldest_ancestor_time != kUnknownOldestAncesterTime) { +16166: return prev_oldest_ancestor_time; +16166: } +16166: } +16166: return kUnknownNewestKeyTime; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: size_t ApproximateMemoryUsage() const { +16166: size_t usage = 0; +16166: +16166: usage += malloc_usable_size(const_cast(this)); +16166: +16166: +16166: +16166: usage += smallest.size() + largest.size() + file_checksum.size() + +16166: file_checksum_func_name.size(); +16166: return usage; +16166: } +16166: +16166: +16166: +16166: bool FileIsStandAloneRangeTombstone() const { +16166: bool res = num_range_deletions == 1 && num_entries == num_range_deletions; +16166: +16166: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: !res || fd.smallest_seqno == fd.largest_seqno +16166: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "!res || fd.smallest_seqno == fd.largest_seqno" +16166: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 380 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: return res; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: struct FdWithKeyRange { +16166: FileDescriptor fd; +16166: FileMetaData* file_metadata; +16166: Slice smallest_key; +16166: Slice largest_key; +16166: +16166: FdWithKeyRange() +16166: : fd(), file_metadata(nullptr), smallest_key(), largest_key() {} +16166: +16166: FdWithKeyRange(FileDescriptor _fd, Slice _smallest_key, Slice _largest_key, +16166: FileMetaData* _file_metadata) +16166: : fd(_fd), +16166: file_metadata(_file_metadata), +16166: smallest_key(_smallest_key), +16166: largest_key(_largest_key) {} +16166: }; +16166: +16166: +16166: +16166: struct LevelFilesBrief { +16166: size_t num_files; +16166: FdWithKeyRange* files; +16166: LevelFilesBrief() { +16166: num_files = 0; +16166: files = nullptr; +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: class VersionEdit { +16166: public: +16166: void Clear(); +16166: +16166: void SetDBId(const std::string& db_id) { +16166: has_db_id_ = true; +16166: db_id_ = db_id; +16166: } +16166: bool HasDbId() const { return has_db_id_; } +16166: const std::string& GetDbId() const { return db_id_; } +16166: +16166: void SetComparatorName(const Slice& name) { +16166: has_comparator_ = true; +16166: comparator_ = name.ToString(); +16166: } +16166: bool HasComparatorName() const { return has_comparator_; } +16166: const std::string& GetComparatorName() const { return comparator_; } +16166: +16166: void SetPersistUserDefinedTimestamps(bool persist_user_defined_timestamps) { +16166: has_persist_user_defined_timestamps_ = true; +16166: persist_user_defined_timestamps_ = persist_user_defined_timestamps; +16166: } +16166: bool HasPersistUserDefinedTimestamps() const { +16166: return has_persist_user_defined_timestamps_; +16166: } +16166: bool GetPersistUserDefinedTimestamps() const { +16166: return persist_user_defined_timestamps_; +16166: } +16166: +16166: void SetLogNumber(uint64_t num) { +16166: has_log_number_ = true; +16166: log_number_ = num; +16166: } +16166: bool HasLogNumber() const { return has_log_number_; } +16166: uint64_t GetLogNumber() const { return log_number_; } +16166: +16166: void SetPrevLogNumber(uint64_t num) { +16166: has_prev_log_number_ = true; +16166: prev_log_number_ = num; +16166: } +16166: bool HasPrevLogNumber() const { return has_prev_log_number_; } +16166: uint64_t GetPrevLogNumber() const { return prev_log_number_; } +16166: +16166: void SetNextFile(uint64_t num) { +16166: has_next_file_number_ = true; +16166: next_file_number_ = num; +16166: } +16166: bool HasNextFile() const { return has_next_file_number_; } +16166: uint64_t GetNextFile() const { return next_file_number_; } +16166: +16166: void SetMaxColumnFamily(uint32_t max_column_family) { +16166: has_max_column_family_ = true; +16166: max_column_family_ = max_column_family; +16166: } +16166: bool HasMaxColumnFamily() const { return has_max_column_family_; } +16166: uint32_t GetMaxColumnFamily() const { return max_column_family_; } +16166: +16166: void SetMinLogNumberToKeep(uint64_t num) { +16166: has_min_log_number_to_keep_ = true; +16166: min_log_number_to_keep_ = num; +16166: } +16166: bool HasMinLogNumberToKeep() const { return has_min_log_number_to_keep_; } +16166: uint64_t GetMinLogNumberToKeep() const { return min_log_number_to_keep_; } +16166: +16166: void SetLastSequence(SequenceNumber seq) { +16166: has_last_sequence_ = true; +16166: last_sequence_ = seq; +16166: } +16166: bool HasLastSequence() const { return has_last_sequence_; } +16166: SequenceNumber GetLastSequence() const { return last_sequence_; } +16166: +16166: +16166: void DeleteFile(int level, uint64_t file) { +16166: deleted_files_.emplace(level, file); +16166: } +16166: +16166: +16166: using DeletedFiles = std::set>; +16166: const DeletedFiles& GetDeletedFiles() const { return deleted_files_; } +16166: +16166: +16166: +16166: +16166: +16166: void AddFile(int level, uint64_t file, uint32_t file_path_id, +16166: uint64_t file_size, const InternalKey& smallest, +16166: const InternalKey& largest, const SequenceNumber& smallest_seqno, +16166: const SequenceNumber& largest_seqno, bool marked_for_compaction, +16166: Temperature temperature, uint64_t oldest_blob_file_number, +16166: uint64_t oldest_ancester_time, uint64_t file_creation_time, +16166: uint64_t epoch_number, const std::string& file_checksum, +16166: const std::string& file_checksum_func_name, +16166: const UniqueId64x2& unique_id, +16166: const uint64_t compensated_range_deletion_size, +16166: uint64_t tail_size, bool user_defined_timestamps_persisted) { +16166: +16166: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: smallest_seqno <= largest_seqno +16166: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "smallest_seqno <= largest_seqno" +16166: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 515 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: new_files_.emplace_back( +16166: level, +16166: FileMetaData(file, file_path_id, file_size, smallest, largest, +16166: smallest_seqno, largest_seqno, marked_for_compaction, +16166: temperature, oldest_blob_file_number, oldest_ancester_time, +16166: file_creation_time, epoch_number, file_checksum, +16166: file_checksum_func_name, unique_id, +16166: compensated_range_deletion_size, tail_size, +16166: user_defined_timestamps_persisted)); +16166: files_to_quarantine_.push_back(file); +16166: if (!HasLastSequence() || largest_seqno > GetLastSequence()) { +16166: SetLastSequence(largest_seqno); +16166: } +16166: } +16166: +16166: void AddFile(int level, const FileMetaData& f) { +16166: +16166: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: f.fd.smallest_seqno <= f.fd.largest_seqno +16166: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "f.fd.smallest_seqno <= f.fd.largest_seqno" +16166: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 532 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: new_files_.emplace_back(level, f); +16166: files_to_quarantine_.push_back(f.fd.GetNumber()); +16166: if (!HasLastSequence() || f.fd.largest_seqno > GetLastSequence()) { +16166: SetLastSequence(f.fd.largest_seqno); +16166: } +16166: } +16166: +16166: +16166: using NewFiles = std::vector>; +16166: const NewFiles& GetNewFiles() const { return new_files_; } +16166: +16166: NewFiles& GetMutableNewFiles() { return new_files_; } +16166: +16166: +16166: using CompactCursors = std::vector>; +16166: const CompactCursors& GetCompactCursors() const { return compact_cursors_; } +16166: void AddCompactCursor(int level, const InternalKey& cursor) { +16166: compact_cursors_.push_back(std::make_pair(level, cursor)); +16166: } +16166: void SetCompactCursors( +16166: const std::vector& compact_cursors_by_level) { +16166: compact_cursors_.clear(); +16166: compact_cursors_.reserve(compact_cursors_by_level.size()); +16166: for (int i = 0; i < (int)compact_cursors_by_level.size(); i++) { +16166: if (compact_cursors_by_level[i].Valid()) { +16166: compact_cursors_.push_back( +16166: std::make_pair(i, compact_cursors_by_level[i])); +16166: } +16166: } +16166: } +16166: +16166: +16166: void AddBlobFile(uint64_t blob_file_number, uint64_t total_blob_count, +16166: uint64_t total_blob_bytes, std::string checksum_method, +16166: std::string checksum_value) { +16166: blob_file_additions_.emplace_back( +16166: blob_file_number, total_blob_count, total_blob_bytes, +16166: std::move(checksum_method), std::move(checksum_value)); +16166: files_to_quarantine_.push_back(blob_file_number); +16166: } +16166: +16166: void AddBlobFile(BlobFileAddition blob_file_addition) { +16166: blob_file_additions_.emplace_back(std::move(blob_file_addition)); +16166: files_to_quarantine_.push_back( +16166: blob_file_additions_.back().GetBlobFileNumber()); +16166: } +16166: +16166: +16166: using BlobFileAdditions = std::vector; +16166: const BlobFileAdditions& GetBlobFileAdditions() const { +16166: return blob_file_additions_; +16166: } +16166: +16166: void SetBlobFileAdditions(BlobFileAdditions blob_file_additions) { +16166: +16166: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: blob_file_additions_.empty() +16166: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "blob_file_additions_.empty()" +16166: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 587 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: blob_file_additions_ = std::move(blob_file_additions); +16166: std::for_each( +16166: blob_file_additions_.begin(), blob_file_additions_.end(), +16166: [&](const BlobFileAddition& blob_file) { +16166: files_to_quarantine_.push_back(blob_file.GetBlobFileNumber()); +16166: }); +16166: } +16166: +16166: +16166: +16166: void AddBlobFileGarbage(uint64_t blob_file_number, +16166: uint64_t garbage_blob_count, +16166: uint64_t garbage_blob_bytes) { +16166: blob_file_garbages_.emplace_back(blob_file_number, garbage_blob_count, +16166: garbage_blob_bytes); +16166: } +16166: +16166: void AddBlobFileGarbage(BlobFileGarbage blob_file_garbage) { +16166: blob_file_garbages_.emplace_back(std::move(blob_file_garbage)); +16166: } +16166: +16166: +16166: using BlobFileGarbages = std::vector; +16166: const BlobFileGarbages& GetBlobFileGarbages() const { +16166: return blob_file_garbages_; +16166: } +16166: +16166: void SetBlobFileGarbages(BlobFileGarbages blob_file_garbages) { +16166: +16166: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: blob_file_garbages_.empty() +16166: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "blob_file_garbages_.empty()" +16166: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 616 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: blob_file_garbages_ = std::move(blob_file_garbages); +16166: } +16166: +16166: +16166: +16166: void AddWal(WalNumber number, WalMetadata metadata = WalMetadata()) { +16166: +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: NumEntries() == wal_additions_.size() +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "NumEntries() == wal_additions_.size()" +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 623 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: wal_additions_.emplace_back(number, std::move(metadata)); +16166: } +16166: +16166: +16166: const WalAdditions& GetWalAdditions() const { return wal_additions_; } +16166: +16166: bool IsWalAddition() const { return !wal_additions_.empty(); } +16166: +16166: +16166: +16166: void DeleteWalsBefore(WalNumber number) { +16166: +16166: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: (NumEntries() == 1) == !wal_deletion_.IsEmpty() +16166: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "(NumEntries() == 1) == !wal_deletion_.IsEmpty()" +16166: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 635 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: wal_deletion_ = WalDeletion(number); +16166: } +16166: +16166: const WalDeletion& GetWalDeletion() const { return wal_deletion_; } +16166: +16166: bool IsWalDeletion() const { return !wal_deletion_.IsEmpty(); } +16166: +16166: bool IsWalManipulation() const { +16166: size_t entries = NumEntries(); +16166: return (entries > 0) && ((entries == wal_additions_.size()) || +16166: (entries == !wal_deletion_.IsEmpty())); +16166: } +16166: +16166: +16166: size_t NumEntries() const { +16166: return new_files_.size() + deleted_files_.size() + +16166: blob_file_additions_.size() + blob_file_garbages_.size() + +16166: wal_additions_.size() + !wal_deletion_.IsEmpty(); +16166: } +16166: +16166: void SetColumnFamily(uint32_t column_family_id) { +16166: column_family_ = column_family_id; +16166: } +16166: uint32_t GetColumnFamily() const { return column_family_; } +16166: +16166: const std::string& GetColumnFamilyName() const { return column_family_name_; } +16166: +16166: +16166: void AddColumnFamily(const std::string& name) { +16166: +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: !is_column_family_drop_ +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "!is_column_family_drop_" +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 665 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: +16166: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: !is_column_family_add_ +16166: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "!is_column_family_add_" +16166: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 666 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: +16166: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: NumEntries() == 0 +16166: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "NumEntries() == 0" +16166: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 667 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: is_column_family_add_ = true; +16166: column_family_name_ = name; +16166: } +16166: +16166: +16166: void DropColumnFamily() { +16166: +16166: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: !is_column_family_drop_ +16166: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "!is_column_family_drop_" +16166: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 674 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: +16166: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: !is_column_family_add_ +16166: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "!is_column_family_add_" +16166: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 675 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: +16166: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: NumEntries() == 0 +16166: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "NumEntries() == 0" +16166: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 676 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: is_column_family_drop_ = true; +16166: } +16166: +16166: bool IsColumnFamilyManipulation() const { +16166: return is_column_family_add_ || is_column_family_drop_; +16166: } +16166: +16166: bool IsColumnFamilyAdd() const { return is_column_family_add_; } +16166: +16166: bool IsColumnFamilyDrop() const { return is_column_family_drop_; } +16166: +16166: void MarkAtomicGroup(uint32_t remaining_entries) { +16166: is_in_atomic_group_ = true; +16166: remaining_entries_ = remaining_entries; +16166: } +16166: bool IsInAtomicGroup() const { return is_in_atomic_group_; } +16166: void SetRemainingEntries(uint32_t remaining_entries) { +16166: remaining_entries_ = remaining_entries; +16166: } +16166: uint32_t GetRemainingEntries() const { return remaining_entries_; } +16166: +16166: bool HasFullHistoryTsLow() const { return !full_history_ts_low_.empty(); } +16166: const std::string& GetFullHistoryTsLow() const { +16166: +16166: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: HasFullHistoryTsLow() +16166: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "HasFullHistoryTsLow()" +16166: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 700 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: return full_history_ts_low_; +16166: } +16166: void SetFullHistoryTsLow(std::string full_history_ts_low) { +16166: +16166: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: (static_cast ( +16166: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: !full_history_ts_low.empty() +16166: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: "!full_history_ts_low.empty()" +16166: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 704 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: ; +16166: full_history_ts_low_ = std::move(full_history_ts_low); +16166: } +16166: # 718 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: bool EncodeTo(std::string* dst, +16166: std::optional ts_sz = std::nullopt) const; +16166: Status DecodeFrom(const Slice& src); +16166: +16166: const autovector* GetFilesToQuarantineIfCommitFail() const { +16166: return &files_to_quarantine_; +16166: } +16166: +16166: std::string DebugString(bool hex_key = false) const; +16166: std::string DebugJSON(int edit_num, bool hex_key = false) const; +16166: +16166: private: +16166: bool GetLevel(Slice* input, int* level, const char** msg); +16166: +16166: const char* DecodeNewFile4From(Slice* input); +16166: +16166: +16166: +16166: +16166: void EncodeFileBoundaries(std::string* dst, const FileMetaData& meta, +16166: size_t ts_sz) const; +16166: +16166: int max_level_ = 0; +16166: std::string db_id_; +16166: std::string comparator_; +16166: uint64_t log_number_ = 0; +16166: uint64_t prev_log_number_ = 0; +16166: uint64_t next_file_number_ = 0; +16166: uint32_t max_column_family_ = 0; +16166: +16166: uint64_t min_log_number_to_keep_ = 0; +16166: SequenceNumber last_sequence_ = 0; +16166: bool has_db_id_ = false; +16166: bool has_comparator_ = false; +16166: bool has_log_number_ = false; +16166: bool has_prev_log_number_ = false; +16166: bool has_next_file_number_ = false; +16166: bool has_max_column_family_ = false; +16166: bool has_min_log_number_to_keep_ = false; +16166: bool has_last_sequence_ = false; +16166: bool has_persist_user_defined_timestamps_ = false; +16166: +16166: +16166: CompactCursors compact_cursors_; +16166: +16166: DeletedFiles deleted_files_; +16166: NewFiles new_files_; +16166: +16166: BlobFileAdditions blob_file_additions_; +16166: BlobFileGarbages blob_file_garbages_; +16166: +16166: WalAdditions wal_additions_; +16166: WalDeletion wal_deletion_; +16166: +16166: +16166: +16166: uint32_t column_family_ = 0; +16166: +16166: +16166: +16166: bool is_column_family_drop_ = false; +16166: bool is_column_family_add_ = false; +16166: std::string column_family_name_; +16166: +16166: bool is_in_atomic_group_ = false; +16166: uint32_t remaining_entries_ = 0; +16166: +16166: std::string full_history_ts_low_; +16166: bool persist_user_defined_timestamps_ = true; +16166: # 796 "/build/reproducible-path/rocksdb-9.10.0/db/version_edit.h" +16166: autovector files_to_quarantine_; +16166: }; +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" +16166: +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/cinttypes" 1 3 +16166: # 32 "/usr/include/c++/14/cinttypes" 3 +16166: +16166: # 33 "/usr/include/c++/14/cinttypes" 3 +16166: # 46 "/usr/include/c++/14/cinttypes" 3 +16166: # 1 "/usr/include/inttypes.h" 1 3 4 +16166: # 327 "/usr/include/inttypes.h" 3 4 +16166: +16166: # 327 "/usr/include/inttypes.h" 3 4 +16166: extern "C" { +16166: # 341 "/usr/include/inttypes.h" 3 4 +16166: typedef struct +16166: { +16166: __extension__ long long int quot; +16166: __extension__ long long int rem; +16166: } imaxdiv_t; +16166: +16166: +16166: +16166: +16166: +16166: extern intmax_t imaxabs (intmax_t __n) noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) +16166: noexcept (true) __attribute__ ((__const__)); +16166: +16166: +16166: extern intmax_t strtoimax (const char *__restrict __nptr, +16166: char **__restrict __endptr, int __base) noexcept (true); +16166: +16166: +16166: extern uintmax_t strtoumax (const char *__restrict __nptr, +16166: char ** __restrict __endptr, int __base) noexcept (true); +16166: +16166: +16166: extern intmax_t wcstoimax (const wchar_t *__restrict __nptr, +16166: wchar_t **__restrict __endptr, int __base) +16166: noexcept (true); +16166: +16166: +16166: extern uintmax_t wcstoumax (const wchar_t *__restrict __nptr, +16166: wchar_t ** __restrict __endptr, int __base) +16166: noexcept (true); +16166: +16166: +16166: +16166: +16166: +16166: extern intmax_t strtoimax (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoimax") +16166: +16166: ; +16166: extern uintmax_t strtoumax (const char *__restrict __nptr, char **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_strtoumax") +16166: +16166: ; +16166: extern intmax_t wcstoimax (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoimax") +16166: +16166: +16166: ; +16166: extern uintmax_t wcstoumax (const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) noexcept (true) __asm__ ("" "__isoc23_wcstoumax") +16166: +16166: +16166: ; +16166: # 415 "/usr/include/inttypes.h" 3 4 +16166: } +16166: # 47 "/usr/include/c++/14/cinttypes" 2 3 +16166: # 55 "/usr/include/c++/14/cinttypes" 3 +16166: namespace std +16166: { +16166: +16166: using ::imaxdiv_t; +16166: +16166: +16166: using ::imaxabs; +16166: using ::imaxdiv; +16166: +16166: +16166: +16166: +16166: +16166: using ::strtoimax; +16166: using ::strtoumax; +16166: +16166: +16166: using ::wcstoimax; +16166: using ::wcstoumax; +16166: +16166: } +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 2 +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: namespace rocksdb { +16166: +16166: constexpr uint64_t kUnknownTimeBeforeAll = 0; +16166: constexpr SequenceNumber kUnknownSeqnoBeforeAll = 0; +16166: +16166: +16166: +16166: constexpr uint64_t kMaxSeqnoTimePairsPerSST = 100; +16166: # 38 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: constexpr uint64_t kMaxSeqnoTimePairsPerCF = 100; +16166: +16166: constexpr uint64_t kMaxSeqnoToTimeEntries = kMaxSeqnoTimePairsPerCF * 10; +16166: # 68 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: class SeqnoToTimeMapping { +16166: public: +16166: +16166: struct SeqnoTimePair { +16166: SequenceNumber seqno = 0; +16166: uint64_t time = 0; +16166: +16166: SeqnoTimePair() = default; +16166: SeqnoTimePair(SequenceNumber _seqno, uint64_t _time) +16166: : seqno(_seqno), time(_time) {} +16166: +16166: +16166: void Encode(std::string& dest) const; +16166: +16166: +16166: Status Decode(Slice& input); +16166: +16166: +16166: SeqnoTimePair ComputeDelta(const SeqnoTimePair& base) const { +16166: return {seqno - base.seqno, time - base.time}; +16166: } +16166: +16166: +16166: void ApplyDelta(const SeqnoTimePair& delta_or_base) { +16166: seqno += delta_or_base.seqno; +16166: time += delta_or_base.time; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: bool Merge(const SeqnoTimePair& other); +16166: +16166: +16166: bool operator<(const SeqnoTimePair& other) const { +16166: return std::tie(seqno, time) < std::tie(other.seqno, other.time); +16166: } +16166: +16166: bool operator==(const SeqnoTimePair& other) const { +16166: return std::tie(seqno, time) == std::tie(other.seqno, other.time); +16166: } +16166: +16166: static bool SeqnoLess(const SeqnoTimePair& a, const SeqnoTimePair& b) { +16166: return a.seqno < b.seqno; +16166: } +16166: +16166: static bool TimeLess(const SeqnoTimePair& a, const SeqnoTimePair& b) { +16166: return a.time < b.time; +16166: } +16166: }; +16166: +16166: +16166: SeqnoToTimeMapping() {} +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: SeqnoToTimeMapping& SetMaxTimeSpan(uint64_t max_time_span); +16166: +16166: +16166: +16166: +16166: +16166: SeqnoToTimeMapping& SetCapacity(uint64_t capacity); +16166: +16166: +16166: +16166: +16166: +16166: bool PrePopulate(SequenceNumber from_seqno, SequenceNumber to_seqno, +16166: uint64_t from_time, uint64_t to_time); +16166: +16166: +16166: +16166: +16166: +16166: +16166: bool Append(SequenceNumber seqno, uint64_t time); +16166: +16166: +16166: +16166: void Clear() { +16166: pairs_.clear(); +16166: enforced_ = true; +16166: } +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: SeqnoToTimeMapping& Enforce(uint64_t now = 0); +16166: +16166: +16166: +16166: +16166: void AddUnenforced(SequenceNumber seqno, uint64_t time); +16166: +16166: +16166: +16166: +16166: Status DecodeFrom(const std::string& pairs_str); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void CopyFromSeqnoRange(const SeqnoToTimeMapping& src, +16166: SequenceNumber from_seqno, +16166: SequenceNumber to_seqno = kMaxSequenceNumber); +16166: void CopyFrom(const SeqnoToTimeMapping& src) { +16166: CopyFromSeqnoRange(src, kUnknownSeqnoBeforeAll, kMaxSequenceNumber); +16166: } +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: uint64_t GetProximalTimeBeforeSeqno(SequenceNumber seqno) const; +16166: # 214 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: SequenceNumber GetProximalSeqnoBeforeTime(uint64_t time) const; +16166: +16166: +16166: +16166: +16166: void GetCurrentTieringCutoffSeqnos( +16166: uint64_t current_time, uint64_t preserve_internal_time_seconds, +16166: uint64_t preclude_last_level_data_seconds, +16166: SequenceNumber* preserve_time_min_seqno, +16166: SequenceNumber* preclude_last_level_min_seqno) const; +16166: +16166: +16166: +16166: +16166: void EncodeTo(std::string& dest) const; +16166: +16166: +16166: size_t Size() const { return pairs_.size(); } +16166: +16166: uint64_t GetCapacity() const { return capacity_; } +16166: +16166: +16166: bool Empty() const { return pairs_.empty(); } +16166: +16166: +16166: +16166: std::string ToHumanString() const; +16166: +16166: +16166: const SeqnoTimePair& TEST_GetLastEntry() const { return pairs_.back(); } +16166: const std::deque& TEST_GetInternalMapping() const { +16166: return pairs_; +16166: } +16166: bool TEST_IsEnforced() const { return enforced_; } +16166: +16166: +16166: private: +16166: uint64_t max_time_span_ = +16166: # 251 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 3 4 +16166: (18446744073709551615ULL) +16166: # 251 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: ; +16166: uint64_t capacity_ = +16166: # 252 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" 3 4 +16166: (18446744073709551615ULL) +16166: # 252 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: ; +16166: +16166: std::deque pairs_; +16166: # 264 "/build/reproducible-path/rocksdb-9.10.0/db/seqno_to_time_mapping.h" +16166: bool enforced_ = true; +16166: +16166: void EnforceMaxTimeSpan(uint64_t now = 0); +16166: void EnforceCapacity(bool strict); +16166: void SortAndMerge(); +16166: +16166: using pair_const_iterator = +16166: std::deque::const_iterator; +16166: pair_const_iterator FindGreaterTime(uint64_t time) const; +16166: pair_const_iterator FindGreaterSeqno(SequenceNumber seqno) const; +16166: pair_const_iterator FindGreaterEqSeqno(SequenceNumber seqno) const; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: Slice PackValueAndWriteTime(const Slice& value, uint64_t unix_write_time, +16166: std::string* buf); +16166: +16166: +16166: +16166: Slice PackValueAndSeqno(const Slice& value, SequenceNumber seqno, +16166: std::string* buf); +16166: +16166: +16166: uint64_t ParsePackedValueForWriteTime(const Slice& value); +16166: +16166: +16166: +16166: std::tuple ParsePackedValueWithWriteTime(const Slice& value); +16166: +16166: +16166: SequenceNumber ParsePackedValueForSeqno(const Slice& value); +16166: +16166: +16166: +16166: std::tuple ParsePackedValueWithSeqno(const Slice& value); +16166: +16166: +16166: +16166: Slice ParsePackedValueForValue(const Slice& value); +16166: +16166: } +16166: # 20 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +16166: namespace rocksdb { +16166: +16166: +16166: class InternalTblPropColl { +16166: public: +16166: virtual ~InternalTblPropColl() {} +16166: virtual Status Finish(UserCollectedProperties* properties) = 0; +16166: +16166: virtual const char* Name() const = 0; +16166: +16166: +16166: +16166: virtual Status InternalAdd(const Slice& key, const Slice& value, +16166: uint64_t file_size) = 0; +16166: +16166: virtual void BlockAdd(uint64_t block_uncomp_bytes, +16166: uint64_t block_compressed_bytes_fast, +16166: uint64_t block_compressed_bytes_slow) = 0; +16166: +16166: virtual UserCollectedProperties GetReadableProperties() const = 0; +16166: +16166: virtual bool NeedCompact() const { return false; } +16166: }; +16166: +16166: +16166: class InternalTblPropCollFactory { +16166: public: +16166: virtual ~InternalTblPropCollFactory() {} +16166: +16166: virtual InternalTblPropColl* CreateInternalTblPropColl( +16166: uint32_t column_family_id, int level_at_creation, int num_levels, +16166: SequenceNumber last_level_inclusive_max_seqno_threshold = +16166: kMaxSequenceNumber) = 0; +16166: +16166: +16166: virtual const char* Name() const = 0; +16166: }; +16166: +16166: using InternalTblPropCollFactories = +16166: std::vector>; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class UserKeyTablePropertiesCollector : public InternalTblPropColl { +16166: public: +16166: +16166: explicit UserKeyTablePropertiesCollector(TablePropertiesCollector* collector) +16166: : collector_(collector) {} +16166: +16166: virtual ~UserKeyTablePropertiesCollector() {} +16166: +16166: Status InternalAdd(const Slice& key, const Slice& value, +16166: uint64_t file_size) override; +16166: +16166: void BlockAdd(uint64_t block_uncomp_bytes, +16166: uint64_t block_compressed_bytes_fast, +16166: uint64_t block_compressed_bytes_slow) override; +16166: +16166: Status Finish(UserCollectedProperties* properties) override; +16166: +16166: const char* Name() const override { return collector_->Name(); } +16166: +16166: UserCollectedProperties GetReadableProperties() const override; +16166: +16166: bool NeedCompact() const override { return collector_->NeedCompact(); } +16166: +16166: protected: +16166: std::unique_ptr collector_; +16166: }; +16166: +16166: class UserKeyTablePropertiesCollectorFactory +16166: : public InternalTblPropCollFactory { +16166: public: +16166: explicit UserKeyTablePropertiesCollectorFactory( +16166: std::shared_ptr user_collector_factory) +16166: : user_collector_factory_(user_collector_factory) {} +16166: InternalTblPropColl* CreateInternalTblPropColl( +16166: uint32_t column_family_id, int level_at_creation, int num_levels, +16166: SequenceNumber last_level_inclusive_max_seqno_threshold = +16166: kMaxSequenceNumber) override { +16166: TablePropertiesCollectorFactory::Context context; +16166: context.column_family_id = column_family_id; +16166: context.level_at_creation = level_at_creation; +16166: context.num_levels = num_levels; +16166: context.last_level_inclusive_max_seqno_threshold = +16166: last_level_inclusive_max_seqno_threshold; +16166: TablePropertiesCollector* collector = +16166: user_collector_factory_->CreateTablePropertiesCollector(context); +16166: if (collector) { +16166: return new UserKeyTablePropertiesCollector(collector); +16166: } else { +16166: return nullptr; +16166: } +16166: } +16166: +16166: const char* Name() const override { return user_collector_factory_->Name(); } +16166: +16166: private: +16166: std::shared_ptr user_collector_factory_; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: class TimestampTablePropertiesCollector : public InternalTblPropColl { +16166: public: +16166: explicit TimestampTablePropertiesCollector(const Comparator* cmp) +16166: : cmp_(cmp), +16166: timestamp_min_(kDisableUserTimestamp), +16166: timestamp_max_(kDisableUserTimestamp) {} +16166: +16166: Status InternalAdd(const Slice& key, const Slice& , +16166: uint64_t ) override { +16166: auto user_key = ExtractUserKey(key); +16166: +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +16166: (static_cast ( +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +16166: cmp_ && cmp_->timestamp_size() > 0 +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +16166: "cmp_ && cmp_->timestamp_size() > 0" +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +16166: ; +16166: if (user_key.size() < cmp_->timestamp_size()) { +16166: return Status::Corruption( +16166: "User key size mismatch when comparing to timestamp size."); +16166: } +16166: auto timestamp_in_key = +16166: ExtractTimestampFromUserKey(user_key, cmp_->timestamp_size()); +16166: if (timestamp_max_ == kDisableUserTimestamp || +16166: cmp_->CompareTimestamp(timestamp_in_key, timestamp_max_) > 0) { +16166: timestamp_max_.assign(timestamp_in_key.data(), timestamp_in_key.size()); +16166: } +16166: if (timestamp_min_ == kDisableUserTimestamp || +16166: cmp_->CompareTimestamp(timestamp_min_, timestamp_in_key) > 0) { +16166: timestamp_min_.assign(timestamp_in_key.data(), timestamp_in_key.size()); +16166: } +16166: return Status::OK(); +16166: } +16166: +16166: void BlockAdd(uint64_t , +16166: uint64_t , +16166: uint64_t ) override { +16166: return; +16166: } +16166: +16166: Status Finish(UserCollectedProperties* properties) override { +16166: +16166: +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +16166: (static_cast ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +16166: timestamp_min_.size() == timestamp_max_.size() && (timestamp_min_.empty() || timestamp_max_.size() == cmp_->timestamp_size()) +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +16166: "timestamp_min_.size() == timestamp_max_.size() && (timestamp_min_.empty() || timestamp_max_.size() == cmp_->timestamp_size())" +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: +16166: +16166: # 164 "/build/reproducible-path/rocksdb-9.10.0/db/table_properties_collector.h" +16166: ; +16166: properties->insert({"rocksdb.timestamp_min", timestamp_min_}); +16166: properties->insert({"rocksdb.timestamp_max", timestamp_max_}); +16166: return Status::OK(); +16166: } +16166: +16166: const char* Name() const override { +16166: return "TimestampTablePropertiesCollector"; +16166: } +16166: +16166: UserCollectedProperties GetReadableProperties() const override { +16166: return {{"rocksdb.timestamp_min", Slice(timestamp_min_).ToString(true)}, +16166: {"rocksdb.timestamp_max", Slice(timestamp_max_).ToString(true)}}; +16166: } +16166: +16166: protected: +16166: const Comparator* const cmp_; +16166: std::string timestamp_min_; +16166: std::string timestamp_max_; +16166: }; +16166: +16166: } +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" 1 +16166: # 29 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +16166: +16166: # 42 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" 1 +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: struct OperationInfo { +16166: const ThreadStatus::OperationType type; +16166: const std::string name; +16166: }; +16166: # 38 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" +16166: static OperationInfo global_operation_table[] = { +16166: {ThreadStatus::OP_UNKNOWN, ""}, +16166: {ThreadStatus::OP_COMPACTION, "Compaction"}, +16166: {ThreadStatus::OP_FLUSH, "Flush"}, +16166: {ThreadStatus::OP_DBOPEN, "DBOpen"}, +16166: {ThreadStatus::OP_GET, "Get"}, +16166: {ThreadStatus::OP_MULTIGET, "MultiGet"}, +16166: {ThreadStatus::OP_DBITERATOR, "DBIterator"}, +16166: {ThreadStatus::OP_VERIFY_DB_CHECKSUM, "VerifyDBChecksum"}, +16166: {ThreadStatus::OP_VERIFY_FILE_CHECKSUMS, "VerifyFileChecksums"}, +16166: {ThreadStatus::OP_GETENTITY, "GetEntity"}, +16166: {ThreadStatus::OP_MULTIGETENTITY, "MultiGetEntity"}, +16166: {ThreadStatus::OP_READ_MANIFEST, "ReadManifest"}, +16166: +16166: }; +16166: +16166: struct OperationStageInfo { +16166: const ThreadStatus::OperationStage stage; +16166: const std::string name; +16166: }; +16166: +16166: +16166: +16166: +16166: static OperationStageInfo global_op_stage_table[] = { +16166: {ThreadStatus::STAGE_UNKNOWN, ""}, +16166: {ThreadStatus::STAGE_FLUSH_RUN, "FlushJob::Run"}, +16166: {ThreadStatus::STAGE_FLUSH_WRITE_L0, "FlushJob::WriteLevel0Table"}, +16166: {ThreadStatus::STAGE_COMPACTION_PREPARE, "CompactionJob::Prepare"}, +16166: {ThreadStatus::STAGE_COMPACTION_RUN, "CompactionJob::Run"}, +16166: {ThreadStatus::STAGE_COMPACTION_PROCESS_KV, +16166: "CompactionJob::ProcessKeyValueCompaction"}, +16166: {ThreadStatus::STAGE_COMPACTION_INSTALL, "CompactionJob::Install"}, +16166: {ThreadStatus::STAGE_COMPACTION_SYNC_FILE, +16166: "CompactionJob::FinishCompactionOutputFile"}, +16166: {ThreadStatus::STAGE_PICK_MEMTABLES_TO_FLUSH, +16166: "MemTableList::PickMemtablesToFlush"}, +16166: {ThreadStatus::STAGE_MEMTABLE_ROLLBACK, +16166: "MemTableList::RollbackMemtableFlush"}, +16166: {ThreadStatus::STAGE_MEMTABLE_INSTALL_FLUSH_RESULTS, +16166: "MemTableList::TryInstallMemtableFlushResults"}, +16166: }; +16166: +16166: +16166: struct StateInfo { +16166: const ThreadStatus::StateType type; +16166: const std::string name; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: static StateInfo global_state_table[] = { +16166: {ThreadStatus::STATE_UNKNOWN, ""}, +16166: {ThreadStatus::STATE_MUTEX_WAIT, "Mutex Wait"}, +16166: }; +16166: +16166: struct OperationProperty { +16166: int code; +16166: std::string name; +16166: }; +16166: +16166: static OperationProperty compaction_operation_properties[] = { +16166: {ThreadStatus::COMPACTION_JOB_ID, "JobID"}, +16166: {ThreadStatus::COMPACTION_INPUT_OUTPUT_LEVEL, "InputOutputLevel"}, +16166: {ThreadStatus::COMPACTION_PROP_FLAGS, "Manual/Deletion/Trivial"}, +16166: {ThreadStatus::COMPACTION_TOTAL_INPUT_BYTES, "TotalInputBytes"}, +16166: {ThreadStatus::COMPACTION_BYTES_READ, "BytesRead"}, +16166: {ThreadStatus::COMPACTION_BYTES_WRITTEN, "BytesWritten"}, +16166: }; +16166: +16166: static OperationProperty flush_operation_properties[] = { +16166: {ThreadStatus::FLUSH_JOB_ID, "JobID"}, +16166: {ThreadStatus::FLUSH_BYTES_MEMTABLES, "BytesMemtables"}, +16166: {ThreadStatus::FLUSH_BYTES_WRITTEN, "BytesWritten"}}; +16166: # 123 "/build/reproducible-path/rocksdb-9.10.0/util/thread_operation.h" +16166: } +16166: # 43 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class ColumnFamilyHandle; +16166: +16166: +16166: struct ConstantColumnFamilyInfo { +16166: +16166: public: +16166: ConstantColumnFamilyInfo(const void* _db_key, const std::string& _db_name, +16166: const std::string& _cf_name) +16166: : db_key(_db_key), db_name(_db_name), cf_name(_cf_name) {} +16166: const void* db_key; +16166: const std::string db_name; +16166: const std::string cf_name; +16166: +16166: }; +16166: +16166: +16166: +16166: struct ThreadStatusData { +16166: +16166: explicit ThreadStatusData() { +16166: enable_tracking.store(false); +16166: thread_id.store(0); +16166: thread_type.store(ThreadStatus::USER); +16166: cf_key.store(nullptr); +16166: operation_type.store(ThreadStatus::OP_UNKNOWN); +16166: op_start_time.store(0); +16166: state_type.store(ThreadStatus::STATE_UNKNOWN); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: std::atomic enable_tracking; +16166: +16166: std::atomic thread_id; +16166: std::atomic thread_type; +16166: std::atomic cf_key; +16166: std::atomic operation_type; +16166: std::atomic op_start_time; +16166: std::atomic operation_stage; +16166: std::atomic op_properties[ThreadStatus::kNumOperationProperties]; +16166: std::atomic state_type; +16166: +16166: }; +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +16166: class ThreadStatusUpdater { +16166: public: +16166: ThreadStatusUpdater() {} +16166: +16166: +16166: virtual ~ThreadStatusUpdater() {} +16166: +16166: +16166: void UnregisterThread(); +16166: +16166: +16166: +16166: void ResetThreadStatus(); +16166: +16166: +16166: void SetThreadID(uint64_t thread_id); +16166: +16166: +16166: void RegisterThread(ThreadStatus::ThreadType ttype, uint64_t thread_id); +16166: +16166: void SetEnableTracking(bool enable_tracking); +16166: +16166: +16166: +16166: void SetColumnFamilyInfoKey(const void* cf_key); +16166: +16166: +16166: const void* GetColumnFamilyInfoKey(); +16166: +16166: +16166: void SetThreadOperation(const ThreadStatus::OperationType type); +16166: +16166: +16166: ThreadStatus::OperationType GetThreadOperation(); +16166: +16166: +16166: +16166: void SetOperationStartTime(const uint64_t start_time); +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.h" +16166: void SetThreadOperationProperty(int i, uint64_t value); +16166: +16166: +16166: +16166: void IncreaseThreadOperationProperty(int i, uint64_t delta); +16166: +16166: +16166: ThreadStatus::OperationStage SetThreadOperationStage( +16166: const ThreadStatus::OperationStage stage); +16166: +16166: +16166: void ClearThreadOperation(); +16166: +16166: +16166: void ClearThreadOperationProperties(); +16166: +16166: +16166: void SetThreadState(const ThreadStatus::StateType type); +16166: +16166: +16166: void ClearThreadState(); +16166: +16166: +16166: Status GetThreadList(std::vector* thread_list); +16166: +16166: +16166: +16166: +16166: void NewColumnFamilyInfo(const void* db_key, const std::string& db_name, +16166: const void* cf_key, const std::string& cf_name); +16166: +16166: +16166: +16166: +16166: void EraseDatabaseInfo(const void* db_key); +16166: +16166: +16166: +16166: +16166: void EraseColumnFamilyInfo(const void* cf_key); +16166: +16166: +16166: +16166: void TEST_VerifyColumnFamilyInfoMap( +16166: const std::vector& handles, bool check_exist); +16166: +16166: protected: +16166: +16166: +16166: static thread_local ThreadStatusData* thread_status_data_; +16166: +16166: +16166: +16166: ThreadStatusData* GetLocalThreadStatus(); +16166: +16166: +16166: +16166: ThreadStatusData* Get() { return thread_status_data_; } +16166: +16166: +16166: std::mutex thread_list_mutex_; +16166: +16166: +16166: std::unordered_set thread_data_set_; +16166: +16166: +16166: +16166: +16166: +16166: std::unordered_map cf_info_map_; +16166: +16166: +16166: +16166: std::unordered_map> db_key_map_; +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: } +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" 2 +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class ColumnFamilyData; +16166: # 30 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" +16166: class ThreadStatusUtil { +16166: public: +16166: +16166: static void RegisterThread(const Env* env, +16166: ThreadStatus::ThreadType thread_type); +16166: +16166: +16166: static void UnregisterThread(); +16166: +16166: +16166: +16166: +16166: static void NewColumnFamilyInfo(const DB* db, const ColumnFamilyData* cfd, +16166: const std::string& cf_name, const Env* env); +16166: +16166: +16166: +16166: +16166: static void EraseColumnFamilyInfo(const ColumnFamilyData* cfd); +16166: +16166: +16166: +16166: +16166: static void EraseDatabaseInfo(const DB* db); +16166: +16166: static void SetEnableTracking(bool enable_tracking); +16166: +16166: +16166: +16166: +16166: +16166: static void SetColumnFamily(const ColumnFamilyData* cfd); +16166: +16166: static void SetThreadOperation(ThreadStatus::OperationType type); +16166: +16166: static ThreadStatus::OperationType GetThreadOperation(); +16166: +16166: static ThreadStatus::OperationStage SetThreadOperationStage( +16166: ThreadStatus::OperationStage stage); +16166: +16166: static void SetThreadOperationProperty(int code, uint64_t value); +16166: +16166: static void IncreaseThreadOperationProperty(int code, uint64_t delta); +16166: +16166: static void SetThreadState(ThreadStatus::StateType type); +16166: +16166: static void ResetThreadStatus(); +16166: +16166: +16166: static void TEST_SetStateDelay(const ThreadStatus::StateType state, +16166: int micro); +16166: static void TEST_StateDelay(const ThreadStatus::StateType state); +16166: +16166: static Env::IOActivity TEST_GetExpectedIOActivity( +16166: ThreadStatus::OperationType thread_op); +16166: +16166: +16166: protected: +16166: +16166: +16166: +16166: static bool MaybeInitThreadLocalUpdater(const Env* env); +16166: # 103 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" +16166: static thread_local bool thread_updater_initialized_; +16166: # 118 "/build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.h" +16166: static thread_local ThreadStatusUpdater* thread_updater_local_cache_; +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: +16166: +16166: +16166: class AutoThreadOperationStageUpdater { +16166: public: +16166: explicit AutoThreadOperationStageUpdater(ThreadStatus::OperationStage stage); +16166: ~AutoThreadOperationStageUpdater(); +16166: +16166: +16166: private: +16166: ThreadStatus::OperationStage prev_stage_; +16166: +16166: }; +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 2 +16166: # 26 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 1 +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +16166: +16166: # 21 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +16166: namespace rocksdb { +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +16166: using UnrefHandler = void (*)(void* ptr); +16166: # 44 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +16166: class ThreadLocalPtr { +16166: public: +16166: explicit ThreadLocalPtr(UnrefHandler handler = nullptr); +16166: +16166: ThreadLocalPtr(const ThreadLocalPtr&) = delete; +16166: ThreadLocalPtr& operator=(const ThreadLocalPtr&) = delete; +16166: +16166: ~ThreadLocalPtr(); +16166: +16166: +16166: void* Get() const; +16166: +16166: +16166: void Reset(void* ptr); +16166: +16166: +16166: void* Swap(void* ptr); +16166: +16166: +16166: +16166: +16166: +16166: bool CompareAndSwap(void* ptr, void*& expected); +16166: +16166: +16166: +16166: void Scrape(autovector* ptrs, void* const replacement); +16166: +16166: using FoldFunc = std::function; +16166: +16166: +16166: +16166: +16166: void Fold(FoldFunc func, void* res); +16166: +16166: +16166: +16166: static uint32_t TEST_PeekId(); +16166: # 90 "/build/reproducible-path/rocksdb-9.10.0/util/thread_local.h" +16166: static void InitSingletons(); +16166: +16166: class StaticMeta; +16166: +16166: private: +16166: static StaticMeta* Instance(); +16166: +16166: const uint32_t id_; +16166: }; +16166: +16166: } +16166: # 29 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class TestFSWritableFile; +16166: class FaultInjectionTestFS; +16166: +16166: enum class FaultInjectionIOType { +16166: kRead = 0, +16166: kWrite, +16166: kMetadataRead, +16166: kMetadataWrite, +16166: }; +16166: +16166: struct FSFileState { +16166: std::string filename_; +16166: uint64_t pos_at_last_append_ = 0; +16166: uint64_t pos_at_last_sync_ = 0; +16166: std::string buffer_; +16166: +16166: explicit FSFileState(const std::string& filename = {}) +16166: : filename_(filename) {} +16166: +16166: bool IsFullySynced() const { +16166: return pos_at_last_append_ == pos_at_last_sync_; +16166: } +16166: +16166: IOStatus DropUnsyncedData(); +16166: +16166: IOStatus DropRandomUnsyncedData(Random* rand); +16166: }; +16166: +16166: +16166: +16166: class TestFSWritableFile : public FSWritableFile { +16166: public: +16166: explicit TestFSWritableFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr&& f, +16166: FaultInjectionTestFS* fs); +16166: virtual ~TestFSWritableFile(); +16166: IOStatus Append(const Slice& data, const IOOptions&, +16166: IODebugContext*) override; +16166: IOStatus Append(const Slice& data, const IOOptions& options, +16166: const DataVerificationInfo& verification_info, +16166: IODebugContext* dbg) override; +16166: IOStatus Truncate(uint64_t size, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +16166: IOStatus Flush(const IOOptions&, IODebugContext*) override; +16166: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override; +16166: IOStatus RangeSync(uint64_t , uint64_t , +16166: const IOOptions& options, IODebugContext* dbg) override; +16166: bool IsSyncThreadSafe() const override { return true; } +16166: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +16166: const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: IOStatus PositionedAppend(const Slice& data, uint64_t offset, +16166: const IOOptions& options, +16166: const DataVerificationInfo& verification_info, +16166: IODebugContext* dbg) override; +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: +16166: uint64_t GetFileSize(const IOOptions& options, IODebugContext* dbg) override { +16166: MutexLock l(&mutex_); +16166: return target_->GetFileSize(options, dbg); +16166: } +16166: +16166: private: +16166: FSFileState state_; +16166: FileOptions file_opts_; +16166: std::unique_ptr target_; +16166: bool writable_file_opened_; +16166: FaultInjectionTestFS* fs_; +16166: port::Mutex mutex_; +16166: const bool unsync_data_loss_; +16166: }; +16166: +16166: +16166: +16166: class TestFSRandomRWFile : public FSRandomRWFile { +16166: public: +16166: explicit TestFSRandomRWFile(const std::string& fname, +16166: std::unique_ptr&& f, +16166: FaultInjectionTestFS* fs); +16166: virtual ~TestFSRandomRWFile(); +16166: IOStatus Write(uint64_t offset, const Slice& data, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const override; +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +16166: IOStatus Flush(const IOOptions& options, IODebugContext* dbg) override; +16166: IOStatus Sync(const IOOptions& options, IODebugContext* dbg) override; +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: +16166: private: +16166: std::unique_ptr target_; +16166: bool file_opened_; +16166: FaultInjectionTestFS* fs_; +16166: }; +16166: +16166: class TestFSRandomAccessFile : public FSRandomAccessFile { +16166: public: +16166: explicit TestFSRandomAccessFile(const std::string& fname, +16166: std::unique_ptr&& f, +16166: FaultInjectionTestFS* fs); +16166: ~TestFSRandomAccessFile() override {} +16166: IOStatus Read(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) const override; +16166: IOStatus ReadAsync(FSReadRequest& req, const IOOptions& opts, +16166: std::function cb, +16166: void* cb_arg, void** io_handle, IOHandleDeleter* del_fn, +16166: IODebugContext* dbg) override; +16166: IOStatus MultiRead(FSReadRequest* reqs, size_t num_reqs, +16166: const IOOptions& options, IODebugContext* dbg) override; +16166: size_t GetRequiredBufferAlignment() const override { +16166: return target_->GetRequiredBufferAlignment(); +16166: } +16166: bool use_direct_io() const override { return target_->use_direct_io(); } +16166: +16166: size_t GetUniqueId(char* id, size_t max_size) const override; +16166: +16166: private: +16166: std::unique_ptr target_; +16166: FaultInjectionTestFS* fs_; +16166: }; +16166: +16166: class TestFSSequentialFile : public FSSequentialFileOwnerWrapper { +16166: public: +16166: explicit TestFSSequentialFile(std::unique_ptr&& f, +16166: FaultInjectionTestFS* fs, std::string fname) +16166: : FSSequentialFileOwnerWrapper(std::move(f)), +16166: fs_(fs), +16166: fname_(std::move(fname)) {} +16166: IOStatus Read(size_t n, const IOOptions& options, Slice* result, +16166: char* scratch, IODebugContext* dbg) override; +16166: IOStatus PositionedRead(uint64_t offset, size_t n, const IOOptions& options, +16166: Slice* result, char* scratch, +16166: IODebugContext* dbg) override; +16166: +16166: private: +16166: FaultInjectionTestFS* fs_; +16166: std::string fname_; +16166: uint64_t read_pos_ = 0; +16166: uint64_t target_read_pos_ = 0; +16166: }; +16166: +16166: class TestFSDirectory : public FSDirectory { +16166: public: +16166: explicit TestFSDirectory(FaultInjectionTestFS* fs, std::string dirname, +16166: FSDirectory* dir) +16166: : fs_(fs), dirname_(std::move(dirname)), dir_(dir) {} +16166: ~TestFSDirectory() {} +16166: +16166: IOStatus Fsync(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus Close(const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus FsyncWithDirOptions( +16166: const IOOptions& options, IODebugContext* dbg, +16166: const DirFsyncOptions& dir_fsync_options) override; +16166: +16166: private: +16166: FaultInjectionTestFS* fs_; +16166: std::string dirname_; +16166: std::unique_ptr dir_; +16166: }; +16166: +16166: class FaultInjectionTestFS : public FileSystemWrapper { +16166: public: +16166: explicit FaultInjectionTestFS(const std::shared_ptr& base) +16166: : FileSystemWrapper(base), +16166: filesystem_active_(true), +16166: filesystem_writable_(false), +16166: inject_unsynced_data_loss_(false), +16166: read_unsynced_data_(true), +16166: allow_link_open_file_(false), +16166: injected_thread_local_read_error_(DeleteThreadLocalErrorContext), +16166: injected_thread_local_write_error_(DeleteThreadLocalErrorContext), +16166: injected_thread_local_metadata_read_error_( +16166: DeleteThreadLocalErrorContext), +16166: injected_thread_local_metadata_write_error_( +16166: DeleteThreadLocalErrorContext), +16166: ingest_data_corruption_before_write_(false), +16166: checksum_handoff_func_type_(kCRC32c), +16166: fail_get_file_unique_id_(false) {} +16166: virtual ~FaultInjectionTestFS() override { fs_error_.PermitUncheckedError(); } +16166: +16166: static const char* kClassName() { return "FaultInjectionTestFS"; } +16166: const char* Name() const override { return kClassName(); } +16166: +16166: static bool IsInjectedError(const Status& s) { +16166: +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: (static_cast ( +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: !s.ok() +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: "!s.ok()" +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 228 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: ; +16166: return std::strstr(s.getState(), kInjected.c_str()); +16166: } +16166: +16166: static bool IsFailedToWriteToWALError(const Status& s) { +16166: +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: (static_cast ( +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: !s.ok() +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: "!s.ok()" +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 233 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: ; +16166: return std::strstr(s.getState(), kFailedToWriteToWAL.c_str()); +16166: } +16166: +16166: IOStatus NewDirectory(const std::string& name, const IOOptions& options, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus FileExists(const std::string& fname, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus GetChildren(const std::string& dir, const IOOptions& options, +16166: std::vector* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus GetChildrenFileAttributes(const std::string& dir, +16166: const IOOptions& options, +16166: std::vector* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus NewWritableFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus ReopenWritableFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus ReuseWritableFile(const std::string& fname, +16166: const std::string& old_fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus NewRandomRWFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus NewRandomAccessFile(const std::string& fname, +16166: const FileOptions& file_opts, +16166: std::unique_ptr* result, +16166: IODebugContext* dbg) override; +16166: IOStatus NewSequentialFile(const std::string& f, const FileOptions& file_opts, +16166: std::unique_ptr* r, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus DeleteFile(const std::string& f, const IOOptions& options, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus GetFileSize(const std::string& f, const IOOptions& options, +16166: uint64_t* file_size, IODebugContext* dbg) override; +16166: +16166: IOStatus GetFileModificationTime(const std::string& fname, +16166: const IOOptions& options, +16166: uint64_t* file_mtime, +16166: IODebugContext* dbg) override; +16166: +16166: IOStatus RenameFile(const std::string& s, const std::string& t, +16166: const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus LinkFile(const std::string& src, const std::string& target, +16166: const IOOptions& options, IODebugContext* dbg) override; +16166: +16166: IOStatus NumFileLinks(const std::string& fname, const IOOptions& options, +16166: uint64_t* count, IODebugContext* dbg) override; +16166: +16166: IOStatus AreFilesSame(const std::string& first, const std::string& second, +16166: const IOOptions& options, bool* res, +16166: IODebugContext* dbg) override; +16166: IOStatus GetAbsolutePath(const std::string& db_path, const IOOptions& options, +16166: std::string* output_path, +16166: IODebugContext* dbg) override; +16166: +16166: +16166: +16166: IOStatus GetFreeSpace(const std::string& path, const IOOptions& options, +16166: uint64_t* disk_free, IODebugContext* dbg) override { +16166: IOStatus io_s; +16166: if (!IsFilesystemActive() && +16166: fs_error_.subcode() == IOStatus::SubCode::kNoSpace) { +16166: *disk_free = 0; +16166: } else { +16166: io_s = MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, +16166: options); +16166: if (io_s.ok()) { +16166: io_s = target()->GetFreeSpace(path, options, disk_free, dbg); +16166: } +16166: } +16166: return io_s; +16166: } +16166: +16166: IOStatus IsDirectory(const std::string& path, const IOOptions& options, +16166: bool* is_dir, IODebugContext* dgb) override; +16166: +16166: IOStatus Poll(std::vector& io_handles, +16166: size_t min_completions) override; +16166: +16166: IOStatus AbortIO(std::vector& io_handles) override; +16166: +16166: void WritableFileClosed(const FSFileState& state); +16166: +16166: void WritableFileSynced(const FSFileState& state); +16166: +16166: void WritableFileAppended(const FSFileState& state); +16166: +16166: IOStatus DropUnsyncedFileData(); +16166: +16166: IOStatus DropRandomUnsyncedFileData(Random* rnd); +16166: +16166: IOStatus DeleteFilesCreatedAfterLastDirSync(const IOOptions& options, +16166: IODebugContext* dbg); +16166: +16166: void ResetState(); +16166: +16166: void UntrackFile(const std::string& f); +16166: +16166: void SyncDir(const std::string& dirname) { +16166: MutexLock l(&mutex_); +16166: dir_to_new_files_since_last_sync_.erase(dirname); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: bool IsFilesystemActive() { +16166: MutexLock l(&mutex_); +16166: return filesystem_active_; +16166: } +16166: +16166: +16166: +16166: +16166: bool IsFilesystemDirectWritable() { +16166: MutexLock l(&mutex_); +16166: return filesystem_writable_; +16166: } +16166: void SetFilesystemActiveNoLock( +16166: bool active, IOStatus error = IOStatus::Corruption("Not active")) { +16166: error.PermitUncheckedError(); +16166: filesystem_active_ = active; +16166: if (!active) { +16166: fs_error_ = error; +16166: } +16166: } +16166: void SetFilesystemActive( +16166: bool active, IOStatus error = IOStatus::Corruption("Not active")) { +16166: MutexLock l(&mutex_); +16166: error.PermitUncheckedError(); +16166: SetFilesystemActiveNoLock(active, error); +16166: } +16166: void SetFilesystemDirectWritable(bool writable) { +16166: MutexLock l(&mutex_); +16166: filesystem_writable_ = writable; +16166: } +16166: +16166: +16166: +16166: void SetInjectUnsyncedDataLoss(bool inject) { +16166: MutexLock l(&mutex_); +16166: inject_unsynced_data_loss_ = inject; +16166: } +16166: +16166: bool InjectUnsyncedDataLoss() { +16166: MutexLock l(&mutex_); +16166: return inject_unsynced_data_loss_; +16166: } +16166: # 415 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: void SetReadUnsyncedData(bool read_unsynced_data) { +16166: read_unsynced_data_ = read_unsynced_data; +16166: } +16166: bool ReadUnsyncedData() const { return read_unsynced_data_; } +16166: +16166: +16166: +16166: +16166: void SetAllowLinkOpenFile(bool allow_link_open_file = true) { +16166: allow_link_open_file_ = allow_link_open_file; +16166: } +16166: +16166: bool ShouldIOActivtiesExcludedFromFaultInjection(Env::IOActivity io_activty) { +16166: MutexLock l(&mutex_); +16166: return io_activties_excluded_from_fault_injection.find(io_activty) != +16166: io_activties_excluded_from_fault_injection.end(); +16166: } +16166: +16166: void AssertNoOpenFile() { +16166: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: (static_cast ( +16166: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: open_managed_files_.empty() +16166: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: "open_managed_files_.empty()" +16166: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 433 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: ; } +16166: +16166: IOStatus GetError() { return fs_error_; } +16166: +16166: void SetFileSystemIOError(IOStatus io_error) { +16166: MutexLock l(&mutex_); +16166: io_error.PermitUncheckedError(); +16166: fs_error_ = io_error; +16166: } +16166: +16166: +16166: void IngestDataCorruptionBeforeWrite() { +16166: MutexLock l(&mutex_); +16166: ingest_data_corruption_before_write_ = true; +16166: } +16166: +16166: void NoDataCorruptionBeforeWrite() { +16166: MutexLock l(&mutex_); +16166: ingest_data_corruption_before_write_ = false; +16166: } +16166: +16166: bool ShouldDataCorruptionBeforeWrite() { +16166: MutexLock l(&mutex_); +16166: return ingest_data_corruption_before_write_; +16166: } +16166: +16166: void SetChecksumHandoffFuncType(const ChecksumType& func_type) { +16166: MutexLock l(&mutex_); +16166: checksum_handoff_func_type_ = func_type; +16166: } +16166: +16166: const ChecksumType& GetChecksumHandoffFuncType() { +16166: MutexLock l(&mutex_); +16166: return checksum_handoff_func_type_; +16166: } +16166: +16166: void SetFailGetUniqueId(bool flag) { +16166: MutexLock l(&mutex_); +16166: fail_get_file_unique_id_ = flag; +16166: } +16166: +16166: bool ShouldFailGetUniqueId() { +16166: MutexLock l(&mutex_); +16166: return fail_get_file_unique_id_; +16166: } +16166: +16166: +16166: enum ErrorOperation : char { +16166: kRead = 0, +16166: kMultiReadSingleReq = 1, +16166: kMultiRead = 2, +16166: kOpen, +16166: kAppend, +16166: kPositionedAppend, +16166: kUnknown, +16166: }; +16166: +16166: void SetThreadLocalErrorContext(FaultInjectionIOType type, uint32_t seed, +16166: int one_in, bool retryable, +16166: bool has_data_loss) { +16166: struct ErrorContext* new_ctx = new ErrorContext(seed); +16166: new_ctx->one_in = one_in; +16166: new_ctx->count = 0; +16166: new_ctx->retryable = retryable; +16166: new_ctx->has_data_loss = has_data_loss; +16166: +16166: SetErrorContextOfFaultInjectionIOType(type, new_ctx); +16166: } +16166: +16166: static void DeleteThreadLocalErrorContext(void* p) { +16166: ErrorContext* ctx = static_cast(p); +16166: delete ctx; +16166: } +16166: +16166: IOStatus MaybeInjectThreadLocalError( +16166: FaultInjectionIOType type, const IOOptions& io_options, +16166: const std::string& file_name = "", ErrorOperation op = kUnknown, +16166: Slice* slice = nullptr, bool direct_io = false, char* scratch = nullptr, +16166: bool need_count_increase = false, bool* fault_injected = nullptr); +16166: +16166: int GetAndResetInjectedThreadLocalErrorCount(FaultInjectionIOType type) { +16166: ErrorContext* ctx = GetErrorContextFromFaultInjectionIOType(type); +16166: int count = 0; +16166: if (ctx) { +16166: count = ctx->count; +16166: ctx->count = 0; +16166: } +16166: return count; +16166: } +16166: +16166: void SetIOActivtiesExcludedFromFaultInjection( +16166: const std::set& io_activties) { +16166: MutexLock l(&mutex_); +16166: io_activties_excluded_from_fault_injection = io_activties; +16166: } +16166: +16166: void SetFileTypesExcludedFromWriteFaultInjection( +16166: const std::set& types) { +16166: MutexLock l(&mutex_); +16166: file_types_excluded_from_write_fault_injection_ = types; +16166: } +16166: +16166: void EnableThreadLocalErrorInjection(FaultInjectionIOType type) { +16166: ErrorContext* ctx = GetErrorContextFromFaultInjectionIOType(type); +16166: if (ctx) { +16166: ctx->enable_error_injection = true; +16166: } +16166: } +16166: +16166: void EnableAllThreadLocalErrorInjection() { +16166: EnableThreadLocalErrorInjection(FaultInjectionIOType::kRead); +16166: EnableThreadLocalErrorInjection(FaultInjectionIOType::kWrite); +16166: EnableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataRead); +16166: EnableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataWrite); +16166: } +16166: +16166: void DisableThreadLocalErrorInjection(FaultInjectionIOType type) { +16166: ErrorContext* ctx = GetErrorContextFromFaultInjectionIOType(type); +16166: if (ctx) { +16166: ctx->enable_error_injection = false; +16166: } +16166: } +16166: +16166: void DisableAllThreadLocalErrorInjection() { +16166: DisableThreadLocalErrorInjection(FaultInjectionIOType::kRead); +16166: DisableThreadLocalErrorInjection(FaultInjectionIOType::kWrite); +16166: DisableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataRead); +16166: DisableThreadLocalErrorInjection(FaultInjectionIOType::kMetadataWrite); +16166: } +16166: +16166: void PrintInjectedThreadLocalErrorBacktrace(FaultInjectionIOType type); +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: void ReadUnsynced(const std::string& fname, uint64_t offset, size_t n, +16166: Slice* result, char* scratch, int64_t* pos_at_last_sync); +16166: +16166: inline static const std::string kInjected = "injected"; +16166: +16166: private: +16166: inline static const std::string kFailedToWriteToWAL = +16166: "failed to write to WAL"; +16166: port::Mutex mutex_; +16166: std::map db_file_state_; +16166: std::set open_managed_files_; +16166: +16166: +16166: +16166: +16166: std::unordered_map> +16166: dir_to_new_files_since_last_sync_; +16166: bool filesystem_active_; +16166: bool filesystem_writable_; +16166: +16166: bool inject_unsynced_data_loss_; +16166: bool read_unsynced_data_; +16166: bool allow_link_open_file_; +16166: IOStatus fs_error_; +16166: +16166: enum ErrorType : int { +16166: kErrorTypeStatus = 0, +16166: kErrorTypeCorruption, +16166: kErrorTypeTruncated, +16166: kErrorTypeMax +16166: }; +16166: +16166: struct ErrorContext { +16166: Random rand; +16166: int one_in; +16166: int count; +16166: bool enable_error_injection; +16166: void* callstack; +16166: std::string message; +16166: int frames; +16166: ErrorType type; +16166: bool retryable; +16166: bool has_data_loss; +16166: +16166: explicit ErrorContext(uint32_t seed) +16166: : rand(seed), +16166: enable_error_injection(false), +16166: callstack(nullptr), +16166: frames(0), +16166: retryable(false), +16166: has_data_loss(false) {} +16166: ~ErrorContext() { +16166: if (callstack) { +16166: free(callstack); +16166: } +16166: } +16166: }; +16166: +16166: std::set file_types_excluded_from_write_fault_injection_; +16166: std::set io_activties_excluded_from_fault_injection; +16166: ThreadLocalPtr injected_thread_local_read_error_; +16166: ThreadLocalPtr injected_thread_local_write_error_; +16166: ThreadLocalPtr injected_thread_local_metadata_read_error_; +16166: ThreadLocalPtr injected_thread_local_metadata_write_error_; +16166: bool ingest_data_corruption_before_write_; +16166: ChecksumType checksum_handoff_func_type_; +16166: bool fail_get_file_unique_id_; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: IOStatus MaybeInjectThreadLocalReadError(const IOOptions& io_options, +16166: ErrorOperation op, Slice* slice, +16166: bool direct_io, char* scratch, +16166: bool need_count_increase, +16166: bool* fault_injected); +16166: +16166: bool ShouldExcludeFromWriteFaultInjection(const std::string& file_name) { +16166: MutexLock l(&mutex_); +16166: FileType file_type = kTempFile; +16166: uint64_t file_number = 0; +16166: if (!TryParseFileName(file_name, &file_number, &file_type)) { +16166: return false; +16166: } +16166: return file_types_excluded_from_write_fault_injection_.find(file_type) != +16166: file_types_excluded_from_write_fault_injection_.end(); +16166: } +16166: +16166: +16166: +16166: bool TryParseFileName(const std::string& file_name, uint64_t* number, +16166: FileType* type); +16166: +16166: ErrorContext* GetErrorContextFromFaultInjectionIOType( +16166: FaultInjectionIOType type) { +16166: ErrorContext* ctx = nullptr; +16166: switch (type) { +16166: case FaultInjectionIOType::kRead: +16166: ctx = static_cast( +16166: injected_thread_local_read_error_.Get()); +16166: break; +16166: case FaultInjectionIOType::kWrite: +16166: ctx = static_cast( +16166: injected_thread_local_write_error_.Get()); +16166: break; +16166: case FaultInjectionIOType::kMetadataRead: +16166: ctx = static_cast( +16166: injected_thread_local_metadata_read_error_.Get()); +16166: break; +16166: case FaultInjectionIOType::kMetadataWrite: +16166: ctx = static_cast( +16166: injected_thread_local_metadata_write_error_.Get()); +16166: break; +16166: default: +16166: +16166: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: (static_cast ( +16166: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: false +16166: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: "false" +16166: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 688 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: ; +16166: break; +16166: } +16166: return ctx; +16166: } +16166: +16166: void SetErrorContextOfFaultInjectionIOType(FaultInjectionIOType type, +16166: ErrorContext* new_ctx) { +16166: ErrorContext* old_ctx = nullptr; +16166: switch (type) { +16166: case FaultInjectionIOType::kRead: +16166: old_ctx = static_cast( +16166: injected_thread_local_read_error_.Swap(new_ctx)); +16166: break; +16166: case FaultInjectionIOType::kWrite: +16166: old_ctx = static_cast( +16166: injected_thread_local_write_error_.Swap(new_ctx)); +16166: break; +16166: case FaultInjectionIOType::kMetadataRead: +16166: old_ctx = static_cast( +16166: injected_thread_local_metadata_read_error_.Swap(new_ctx)); +16166: break; +16166: case FaultInjectionIOType::kMetadataWrite: +16166: old_ctx = static_cast( +16166: injected_thread_local_metadata_write_error_.Swap(new_ctx)); +16166: break; +16166: default: +16166: +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: (static_cast ( +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: false +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: "false" +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 715 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: ; +16166: break; +16166: } +16166: +16166: if (old_ctx) { +16166: DeleteThreadLocalErrorContext(old_ctx); +16166: } +16166: } +16166: +16166: std::string GetErrorMessage(FaultInjectionIOType type, +16166: const std::string& file_name, ErrorOperation op) { +16166: std::ostringstream msg; +16166: msg << kInjected << " "; +16166: switch (type) { +16166: case FaultInjectionIOType::kRead: +16166: msg << "read error"; +16166: break; +16166: case FaultInjectionIOType::kWrite: +16166: msg << "write error"; +16166: break; +16166: case FaultInjectionIOType::kMetadataRead: +16166: msg << "metadata read error"; +16166: break; +16166: case FaultInjectionIOType::kMetadataWrite: +16166: msg << "metadata write error"; +16166: break; +16166: default: +16166: +16166: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: (static_cast ( +16166: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: false +16166: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: "false" +16166: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 742 "/build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h" +16166: ; +16166: break; +16166: } +16166: +16166: if (type == FaultInjectionIOType::kWrite && +16166: (op == ErrorOperation::kOpen || op == ErrorOperation::kAppend || +16166: op == ErrorOperation::kPositionedAppend)) { +16166: FileType file_type = kTempFile; +16166: uint64_t ignore = 0; +16166: if (TryParseFileName(file_name, &ignore, &file_type) && +16166: file_type == FileType::kWalFile) { +16166: msg << " " << kFailedToWriteToWAL; +16166: } +16166: } +16166: return msg.str(); +16166: } +16166: }; +16166: +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 2 +16166: +16166: +16166: namespace rocksdb { +16166: class Statistics; +16166: class SystemClock; +16166: # 40 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +16166: class WritableFileWriter { +16166: private: +16166: void NotifyOnFileWriteFinish( +16166: uint64_t offset, size_t length, +16166: const FileOperationInfo::StartTimePoint& start_ts, +16166: const FileOperationInfo::FinishTimePoint& finish_ts, +16166: const IOStatus& io_status) { +16166: FileOperationInfo info(FileOperationType::kWrite, file_name_, start_ts, +16166: finish_ts, io_status, temperature_); +16166: info.offset = offset; +16166: info.length = length; +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnFileWriteFinish(info); +16166: } +16166: info.status.PermitUncheckedError(); +16166: } +16166: void NotifyOnFileFlushFinish( +16166: const FileOperationInfo::StartTimePoint& start_ts, +16166: const FileOperationInfo::FinishTimePoint& finish_ts, +16166: const IOStatus& io_status) { +16166: FileOperationInfo info(FileOperationType::kFlush, file_name_, start_ts, +16166: finish_ts, io_status, temperature_); +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnFileFlushFinish(info); +16166: } +16166: info.status.PermitUncheckedError(); +16166: } +16166: void NotifyOnFileSyncFinish( +16166: const FileOperationInfo::StartTimePoint& start_ts, +16166: const FileOperationInfo::FinishTimePoint& finish_ts, +16166: const IOStatus& io_status, +16166: FileOperationType type = FileOperationType::kSync) { +16166: FileOperationInfo info(type, file_name_, start_ts, finish_ts, io_status, +16166: temperature_); +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnFileSyncFinish(info); +16166: } +16166: info.status.PermitUncheckedError(); +16166: } +16166: void NotifyOnFileRangeSyncFinish( +16166: uint64_t offset, size_t length, +16166: const FileOperationInfo::StartTimePoint& start_ts, +16166: const FileOperationInfo::FinishTimePoint& finish_ts, +16166: const IOStatus& io_status) { +16166: FileOperationInfo info(FileOperationType::kRangeSync, file_name_, start_ts, +16166: finish_ts, io_status, temperature_); +16166: info.offset = offset; +16166: info.length = length; +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnFileRangeSyncFinish(info); +16166: } +16166: info.status.PermitUncheckedError(); +16166: } +16166: void NotifyOnFileTruncateFinish( +16166: const FileOperationInfo::StartTimePoint& start_ts, +16166: const FileOperationInfo::FinishTimePoint& finish_ts, +16166: const IOStatus& io_status) { +16166: FileOperationInfo info(FileOperationType::kTruncate, file_name_, start_ts, +16166: finish_ts, io_status, temperature_); +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnFileTruncateFinish(info); +16166: } +16166: info.status.PermitUncheckedError(); +16166: } +16166: void NotifyOnFileCloseFinish( +16166: const FileOperationInfo::StartTimePoint& start_ts, +16166: const FileOperationInfo::FinishTimePoint& finish_ts, +16166: const IOStatus& io_status) { +16166: FileOperationInfo info(FileOperationType::kClose, file_name_, start_ts, +16166: finish_ts, io_status, temperature_); +16166: +16166: for (auto& listener : listeners_) { +16166: listener->OnFileCloseFinish(info); +16166: } +16166: info.status.PermitUncheckedError(); +16166: } +16166: +16166: void NotifyOnIOError(const IOStatus& io_status, FileOperationType operation, +16166: const std::string& file_path, size_t length = 0, +16166: uint64_t offset = 0) { +16166: if (listeners_.empty()) { +16166: return; +16166: } +16166: IOErrorInfo io_error_info(io_status, operation, file_path, length, offset); +16166: for (auto& listener : listeners_) { +16166: listener->OnIOError(io_error_info); +16166: } +16166: io_error_info.io_status.PermitUncheckedError(); +16166: } +16166: +16166: bool ShouldNotifyListeners() const { return !listeners_.empty(); } +16166: void UpdateFileChecksum(const Slice& data); +16166: void Crc32cHandoffChecksumCalculation(const char* data, size_t size, +16166: char* buf); +16166: +16166: std::string file_name_; +16166: FSWritableFilePtr writable_file_; +16166: SystemClock* clock_; +16166: AlignedBuffer buf_; +16166: size_t max_buffer_size_; +16166: +16166: +16166: std::atomic filesize_; +16166: std::atomic flushed_size_; +16166: +16166: +16166: +16166: uint64_t next_write_offset_; +16166: bool pending_sync_; +16166: std::atomic seen_error_; +16166: +16166: std::atomic seen_injected_error_; +16166: +16166: uint64_t last_sync_size_; +16166: uint64_t bytes_per_sync_; +16166: RateLimiter* rate_limiter_; +16166: Statistics* stats_; +16166: Histograms hist_type_; +16166: std::vector> listeners_; +16166: std::unique_ptr checksum_generator_; +16166: bool checksum_finalized_; +16166: bool perform_data_verification_; +16166: uint32_t buffered_data_crc32c_checksum_; +16166: bool buffered_data_with_checksum_; +16166: Temperature temperature_; +16166: +16166: public: +16166: WritableFileWriter( +16166: std::unique_ptr&& file, const std::string& _file_name, +16166: const FileOptions& options, SystemClock* clock = nullptr, +16166: const std::shared_ptr& io_tracer = nullptr, +16166: Statistics* stats = nullptr, +16166: Histograms hist_type = Histograms::HISTOGRAM_ENUM_MAX, +16166: const std::vector>& listeners = {}, +16166: FileChecksumGenFactory* file_checksum_gen_factory = nullptr, +16166: bool perform_data_verification = false, +16166: bool buffered_data_with_checksum = false) +16166: : file_name_(_file_name), +16166: writable_file_(std::move(file), io_tracer, _file_name), +16166: clock_(clock), +16166: buf_(), +16166: max_buffer_size_(options.writable_file_max_buffer_size), +16166: filesize_(0), +16166: flushed_size_(0), +16166: next_write_offset_(0), +16166: pending_sync_(false), +16166: seen_error_(false), +16166: +16166: seen_injected_error_(false), +16166: +16166: last_sync_size_(0), +16166: bytes_per_sync_(options.bytes_per_sync), +16166: rate_limiter_(options.rate_limiter), +16166: stats_(stats), +16166: hist_type_(hist_type), +16166: listeners_(), +16166: checksum_generator_(nullptr), +16166: checksum_finalized_(false), +16166: perform_data_verification_(perform_data_verification), +16166: buffered_data_crc32c_checksum_(0), +16166: buffered_data_with_checksum_(buffered_data_with_checksum) { +16166: temperature_ = options.temperature; +16166: +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 3 4 +16166: (static_cast ( +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +16166: !use_direct_io() || max_buffer_size_ > 0 +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +16166: "!use_direct_io() || max_buffer_size_ > 0" +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 207 "/build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.h" +16166: ; +16166: rocksdb::SyncPoint::GetInstance()->Process("WritableFileWriter::WritableFileWriter:0", reinterpret_cast(max_buffer_size_)) +16166: ; +16166: buf_.Alignment(writable_file_->GetRequiredBufferAlignment()); +16166: buf_.AllocateNewBuffer(std::min((size_t)65536, max_buffer_size_)); +16166: std::for_each(listeners.begin(), listeners.end(), +16166: [this](const std::shared_ptr& e) { +16166: if (e->ShouldBeNotifiedOnFileIO()) { +16166: listeners_.emplace_back(e); +16166: } +16166: }); +16166: if (file_checksum_gen_factory != nullptr) { +16166: FileChecksumGenContext checksum_gen_context; +16166: checksum_gen_context.file_name = _file_name; +16166: checksum_generator_ = +16166: file_checksum_gen_factory->CreateFileChecksumGenerator( +16166: checksum_gen_context); +16166: } +16166: } +16166: +16166: static IOStatus Create(const std::shared_ptr& fs, +16166: const std::string& fname, const FileOptions& file_opts, +16166: std::unique_ptr* writer, +16166: IODebugContext* dbg); +16166: +16166: static IOStatus PrepareIOOptions(const WriteOptions& wo, IOOptions& opts); +16166: +16166: WritableFileWriter(const WritableFileWriter&) = delete; +16166: +16166: WritableFileWriter& operator=(const WritableFileWriter&) = delete; +16166: +16166: ~WritableFileWriter() { +16166: IOOptions io_options; +16166: +16166: +16166: +16166: ThreadStatus::OperationType op_type = +16166: ThreadStatusUtil::GetThreadOperation(); +16166: io_options.io_activity = +16166: ThreadStatusUtil::TEST_GetExpectedIOActivity(op_type); +16166: +16166: auto s = Close(io_options); +16166: s.PermitUncheckedError(); +16166: } +16166: +16166: std::string file_name() const { return file_name_; } +16166: +16166: +16166: +16166: IOStatus Append(const IOOptions& opts, const Slice& data, +16166: uint32_t crc32c_checksum = 0); +16166: +16166: IOStatus Pad(const IOOptions& opts, const size_t pad_bytes); +16166: +16166: IOStatus Flush(const IOOptions& opts); +16166: +16166: IOStatus Close(const IOOptions& opts); +16166: +16166: IOStatus Sync(const IOOptions& opts, bool use_fsync); +16166: +16166: +16166: +16166: +16166: IOStatus SyncWithoutFlush(const IOOptions& opts, bool use_fsync); +16166: +16166: +16166: +16166: uint64_t GetFileSize() const { +16166: return filesize_.load(std::memory_order_acquire); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: uint64_t GetFlushedSize() const { +16166: return flushed_size_.load(std::memory_order_acquire); +16166: } +16166: +16166: IOStatus InvalidateCache(size_t offset, size_t length) { +16166: return writable_file_->InvalidateCache(offset, length); +16166: } +16166: +16166: FSWritableFile* writable_file() const { return writable_file_.get(); } +16166: +16166: bool use_direct_io() { return writable_file_->use_direct_io(); } +16166: +16166: bool BufferIsEmpty() const { return buf_.CurrentSize() == 0; } +16166: +16166: bool IsClosed() const { return writable_file_.get() == nullptr; } +16166: +16166: void TEST_SetFileChecksumGenerator( +16166: FileChecksumGenerator* checksum_generator) { +16166: checksum_generator_.reset(checksum_generator); +16166: } +16166: +16166: std::string GetFileChecksum(); +16166: +16166: const char* GetFileChecksumFuncName() const; +16166: +16166: bool seen_error() const { +16166: return seen_error_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: void reset_seen_error() { +16166: seen_error_.store(false, std::memory_order_relaxed); +16166: +16166: seen_injected_error_.store(false, std::memory_order_relaxed); +16166: +16166: } +16166: void set_seen_error(const Status& s) { +16166: seen_error_.store(true, std::memory_order_relaxed); +16166: (void)s; +16166: +16166: if (s.getState() && std::strstr(s.getState(), "inject")) { +16166: seen_injected_error_.store(true, std::memory_order_relaxed); +16166: } +16166: +16166: } +16166: +16166: bool seen_injected_error() const { +16166: return seen_injected_error_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: +16166: IOStatus GetWriterHasPreviousErrorStatus() { +16166: +16166: if (seen_injected_error_.load(std::memory_order_relaxed)) { +16166: std::stringstream msg; +16166: msg << "Writer has previous " << FaultInjectionTestFS::kInjected +16166: << " error."; +16166: return IOStatus::IOError(msg.str()); +16166: } +16166: +16166: return IOStatus::IOError("Writer has previous error."); +16166: } +16166: +16166: private: +16166: +16166: static Env::IOPriority DecideRateLimiterPriority( +16166: Env::IOPriority writable_file_io_priority, +16166: Env::IOPriority op_rate_limiter_priority); +16166: +16166: +16166: +16166: +16166: IOStatus WriteDirect(const IOOptions& opts); +16166: +16166: IOStatus WriteDirectWithChecksum(const IOOptions& opts); +16166: +16166: +16166: IOStatus WriteBuffered(const IOOptions& opts, const char* data, size_t size); +16166: +16166: IOStatus WriteBufferedWithChecksum(const IOOptions& opts, const char* data, +16166: size_t size); +16166: +16166: IOStatus RangeSync(const IOOptions& opts, uint64_t offset, uint64_t nbytes); +16166: +16166: IOStatus SyncInternal(const IOOptions& opts, bool use_fsync); +16166: IOOptions FinalizeIOOptions(const IOOptions& opts) const; +16166: }; +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.h" +16166: namespace rocksdb { +16166: class Env; +16166: class SystemClock; +16166: +16166: extern const uint64_t kMicrosInSecond; +16166: extern const uint64_t kSecondInMinute; +16166: extern const uint64_t kSecondInHour; +16166: +16166: struct BlockCacheTraceRecord; +16166: +16166: class BlockCacheTraceHelper { +16166: public: +16166: static bool IsGetOrMultiGetOnDataBlock(TraceType block_type, +16166: TableReaderCaller caller); +16166: static bool IsGetOrMultiGet(TableReaderCaller caller); +16166: static bool IsUserAccess(TableReaderCaller caller); +16166: +16166: +16166: static std::string ComputeRowKey(const BlockCacheTraceRecord& access); +16166: +16166: +16166: static uint64_t GetTableId(const BlockCacheTraceRecord& access); +16166: +16166: +16166: static uint64_t GetSequenceNumber(const BlockCacheTraceRecord& access); +16166: +16166: static uint64_t GetBlockOffsetInFile(const BlockCacheTraceRecord& access); +16166: +16166: static const std::string kUnknownColumnFamilyName; +16166: static const uint64_t kReservedGetId; +16166: }; +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.h" +16166: struct BlockCacheLookupContext { +16166: BlockCacheLookupContext(const TableReaderCaller& _caller) : caller(_caller) {} +16166: BlockCacheLookupContext(const TableReaderCaller& _caller, uint64_t _get_id, +16166: bool _get_from_user_specified_snapshot) +16166: : caller(_caller), +16166: get_id(_get_id), +16166: get_from_user_specified_snapshot(_get_from_user_specified_snapshot) {} +16166: const TableReaderCaller caller; +16166: +16166: +16166: +16166: bool is_cache_hit = false; +16166: bool no_insert = false; +16166: TraceType block_type = TraceType::kTraceMax; +16166: uint64_t block_size = 0; +16166: std::string block_key; +16166: uint64_t num_keys_in_block = 0; +16166: +16166: +16166: +16166: uint64_t get_id = 0; +16166: std::string referenced_key; +16166: bool get_from_user_specified_snapshot = false; +16166: +16166: void FillLookupContext(bool _is_cache_hit, bool _no_insert, +16166: TraceType _block_type, uint64_t _block_size, +16166: const std::string& _block_key, +16166: uint64_t _num_keys_in_block) { +16166: is_cache_hit = _is_cache_hit; +16166: no_insert = _no_insert; +16166: block_type = _block_type; +16166: block_size = _block_size; +16166: block_key = _block_key; +16166: num_keys_in_block = _num_keys_in_block; +16166: } +16166: }; +16166: +16166: struct BlockCacheTraceHeader { +16166: uint64_t start_time; +16166: uint32_t rocksdb_major_version; +16166: uint32_t rocksdb_minor_version; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: class BlockCacheTraceWriterImpl : public BlockCacheTraceWriter { +16166: public: +16166: BlockCacheTraceWriterImpl(SystemClock* clock, +16166: const BlockCacheTraceWriterOptions& trace_options, +16166: std::unique_ptr&& trace_writer); +16166: ~BlockCacheTraceWriterImpl() = default; +16166: +16166: BlockCacheTraceWriterImpl(const BlockCacheTraceWriterImpl&) = delete; +16166: BlockCacheTraceWriterImpl& operator=(const BlockCacheTraceWriterImpl&) = +16166: delete; +16166: BlockCacheTraceWriterImpl(BlockCacheTraceWriterImpl&&) = delete; +16166: BlockCacheTraceWriterImpl& operator=(BlockCacheTraceWriterImpl&&) = delete; +16166: +16166: +16166: Status WriteBlockAccess(const BlockCacheTraceRecord& record, +16166: const Slice& block_key, const Slice& cf_name, +16166: const Slice& referenced_key) override; +16166: +16166: +16166: +16166: Status WriteHeader() override; +16166: +16166: private: +16166: SystemClock* clock_; +16166: BlockCacheTraceWriterOptions trace_options_; +16166: std::unique_ptr trace_writer_; +16166: }; +16166: +16166: +16166: +16166: +16166: class BlockCacheHumanReadableTraceWriter { +16166: public: +16166: ~BlockCacheHumanReadableTraceWriter(); +16166: +16166: Status NewWritableFile(const std::string& human_readable_trace_file_path, +16166: rocksdb::Env* env); +16166: +16166: Status WriteHumanReadableTraceRecord(const BlockCacheTraceRecord& access, +16166: uint64_t block_id, uint64_t get_key_id); +16166: +16166: private: +16166: char trace_record_buffer_[1024 * 1024]; +16166: std::unique_ptr +16166: human_readable_trace_file_writer_; +16166: }; +16166: +16166: +16166: +16166: class BlockCacheTraceReader { +16166: public: +16166: BlockCacheTraceReader(std::unique_ptr&& reader); +16166: virtual ~BlockCacheTraceReader() = default; +16166: +16166: BlockCacheTraceReader(const BlockCacheTraceReader&) = delete; +16166: BlockCacheTraceReader& operator=(const BlockCacheTraceReader&) = delete; +16166: BlockCacheTraceReader(BlockCacheTraceReader&&) = delete; +16166: BlockCacheTraceReader& operator=(BlockCacheTraceReader&&) = delete; +16166: +16166: Status ReadHeader(BlockCacheTraceHeader* header); +16166: +16166: Status ReadAccess(BlockCacheTraceRecord* record); +16166: +16166: private: +16166: std::unique_ptr trace_reader_; +16166: }; +16166: +16166: +16166: +16166: +16166: class BlockCacheHumanReadableTraceReader : public BlockCacheTraceReader { +16166: public: +16166: BlockCacheHumanReadableTraceReader(const std::string& trace_file_path); +16166: +16166: ~BlockCacheHumanReadableTraceReader(); +16166: +16166: Status ReadHeader(BlockCacheTraceHeader* header); +16166: +16166: Status ReadAccess(BlockCacheTraceRecord* record); +16166: +16166: private: +16166: std::ifstream human_readable_trace_reader_; +16166: }; +16166: +16166: +16166: +16166: +16166: class BlockCacheTracer { +16166: public: +16166: BlockCacheTracer(); +16166: ~BlockCacheTracer(); +16166: +16166: BlockCacheTracer(const BlockCacheTracer&) = delete; +16166: BlockCacheTracer& operator=(const BlockCacheTracer&) = delete; +16166: BlockCacheTracer(BlockCacheTracer&&) = delete; +16166: BlockCacheTracer& operator=(BlockCacheTracer&&) = delete; +16166: +16166: +16166: Status StartTrace(const BlockCacheTraceOptions& trace_options, +16166: std::unique_ptr&& trace_writer); +16166: +16166: +16166: void EndTrace(); +16166: +16166: bool is_tracing_enabled() const { +16166: return writer_.load(std::memory_order_relaxed); +16166: } +16166: +16166: Status WriteBlockAccess(const BlockCacheTraceRecord& record, +16166: const Slice& block_key, const Slice& cf_name, +16166: const Slice& referenced_key); +16166: +16166: +16166: uint64_t NextGetId(); +16166: +16166: private: +16166: BlockCacheTraceOptions trace_options_; +16166: +16166: InstrumentedMutex trace_writer_mutex_; +16166: std::atomic writer_; +16166: std::atomic get_id_counter_; +16166: }; +16166: +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: class Status; +16166: +16166: struct TableReaderOptions { +16166: +16166: TableReaderOptions( +16166: const ImmutableOptions& _ioptions, +16166: const std::shared_ptr& _prefix_extractor, +16166: const EnvOptions& _env_options, +16166: const InternalKeyComparator& _internal_comparator, +16166: uint8_t _block_protection_bytes_per_key, bool _skip_filters = false, +16166: bool _immortal = false, bool _force_direct_prefetch = false, +16166: int _level = -1, BlockCacheTracer* const _block_cache_tracer = nullptr, +16166: size_t _max_file_size_for_l0_meta_pin = 0, +16166: const std::string& _cur_db_session_id = "", uint64_t _cur_file_num = 0, +16166: UniqueId64x2 _unique_id = {}, SequenceNumber _largest_seqno = 0, +16166: uint64_t _tail_size = 0, bool _user_defined_timestamps_persisted = true) +16166: : ioptions(_ioptions), +16166: prefix_extractor(_prefix_extractor), +16166: env_options(_env_options), +16166: internal_comparator(_internal_comparator), +16166: skip_filters(_skip_filters), +16166: immortal(_immortal), +16166: force_direct_prefetch(_force_direct_prefetch), +16166: level(_level), +16166: largest_seqno(_largest_seqno), +16166: block_cache_tracer(_block_cache_tracer), +16166: max_file_size_for_l0_meta_pin(_max_file_size_for_l0_meta_pin), +16166: cur_db_session_id(_cur_db_session_id), +16166: cur_file_num(_cur_file_num), +16166: unique_id(_unique_id), +16166: block_protection_bytes_per_key(_block_protection_bytes_per_key), +16166: tail_size(_tail_size), +16166: user_defined_timestamps_persisted(_user_defined_timestamps_persisted) {} +16166: +16166: const ImmutableOptions& ioptions; +16166: const std::shared_ptr& prefix_extractor; +16166: const EnvOptions& env_options; +16166: const InternalKeyComparator& internal_comparator; +16166: +16166: bool skip_filters; +16166: +16166: bool immortal; +16166: +16166: +16166: +16166: bool force_direct_prefetch; +16166: +16166: +16166: int level; +16166: +16166: SequenceNumber largest_seqno; +16166: BlockCacheTracer* const block_cache_tracer; +16166: +16166: +16166: const size_t max_file_size_for_l0_meta_pin; +16166: +16166: std::string cur_db_session_id; +16166: +16166: uint64_t cur_file_num; +16166: +16166: +16166: UniqueId64x2 unique_id; +16166: +16166: uint8_t block_protection_bytes_per_key; +16166: +16166: uint64_t tail_size; +16166: +16166: +16166: bool user_defined_timestamps_persisted; +16166: }; +16166: +16166: struct TableBuilderOptions : public TablePropertiesCollectorFactory::Context { +16166: TableBuilderOptions( +16166: const ImmutableOptions& _ioptions, const MutableCFOptions& _moptions, +16166: const ReadOptions& _read_options, const WriteOptions& _write_options, +16166: const InternalKeyComparator& _internal_comparator, +16166: const InternalTblPropCollFactories* _internal_tbl_prop_coll_factories, +16166: CompressionType _compression_type, +16166: const CompressionOptions& _compression_opts, uint32_t _column_family_id, +16166: const std::string& _column_family_name, int _level, +16166: const int64_t _newest_key_time, bool _is_bottommost = false, +16166: TableFileCreationReason _reason = TableFileCreationReason::kMisc, +16166: const int64_t _oldest_key_time = 0, +16166: const uint64_t _file_creation_time = 0, const std::string& _db_id = "", +16166: const std::string& _db_session_id = "", +16166: const uint64_t _target_file_size = 0, const uint64_t _cur_file_num = 0, +16166: const SequenceNumber _last_level_inclusive_max_seqno_threshold = +16166: kMaxSequenceNumber) +16166: : TablePropertiesCollectorFactory::Context( +16166: _column_family_id, _level, _ioptions.num_levels, +16166: _last_level_inclusive_max_seqno_threshold), +16166: ioptions(_ioptions), +16166: moptions(_moptions), +16166: read_options(_read_options), +16166: write_options(_write_options), +16166: internal_comparator(_internal_comparator), +16166: internal_tbl_prop_coll_factories(_internal_tbl_prop_coll_factories), +16166: compression_type(_compression_type), +16166: compression_opts(_compression_opts), +16166: column_family_name(_column_family_name), +16166: oldest_key_time(_oldest_key_time), +16166: newest_key_time(_newest_key_time), +16166: target_file_size(_target_file_size), +16166: file_creation_time(_file_creation_time), +16166: db_id(_db_id), +16166: db_session_id(_db_session_id), +16166: is_bottommost(_is_bottommost), +16166: reason(_reason), +16166: cur_file_num(_cur_file_num) {} +16166: +16166: const ImmutableOptions& ioptions; +16166: const MutableCFOptions& moptions; +16166: const ReadOptions& read_options; +16166: const WriteOptions& write_options; +16166: const InternalKeyComparator& internal_comparator; +16166: const InternalTblPropCollFactories* internal_tbl_prop_coll_factories; +16166: const CompressionType compression_type; +16166: const CompressionOptions& compression_opts; +16166: const std::string& column_family_name; +16166: const int64_t oldest_key_time; +16166: const int64_t newest_key_time; +16166: const uint64_t target_file_size; +16166: const uint64_t file_creation_time; +16166: const std::string db_id; +16166: const std::string db_session_id; +16166: +16166: const bool is_bottommost; +16166: const TableFileCreationReason reason; +16166: +16166: +16166: +16166: +16166: +16166: bool skip_filters = false; +16166: const uint64_t cur_file_num; +16166: }; +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/table_builder.h" +16166: class TableBuilder { +16166: public: +16166: +16166: virtual ~TableBuilder() {} +16166: +16166: +16166: +16166: +16166: virtual void Add(const Slice& key, const Slice& value) = 0; +16166: +16166: +16166: virtual Status status() const = 0; +16166: +16166: +16166: virtual IOStatus io_status() const = 0; +16166: +16166: +16166: +16166: virtual Status Finish() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void Abandon() = 0; +16166: +16166: +16166: virtual uint64_t NumEntries() const = 0; +16166: +16166: +16166: +16166: virtual bool IsEmpty() const { +16166: return NumEntries() == 0 && GetTableProperties().num_range_deletions == 0; +16166: } +16166: +16166: +16166: +16166: virtual uint64_t FileSize() const = 0; +16166: +16166: +16166: +16166: +16166: virtual uint64_t EstimatedFileSize() const { return FileSize(); } +16166: +16166: virtual uint64_t GetTailSize() const { return 0; } +16166: +16166: +16166: +16166: virtual bool NeedCompact() const { return false; } +16166: +16166: +16166: virtual TableProperties GetTableProperties() const = 0; +16166: +16166: +16166: virtual std::string GetFileChecksum() const = 0; +16166: +16166: +16166: virtual const char* GetFileChecksumFuncName() const = 0; +16166: +16166: +16166: +16166: virtual void SetSeqnoTimeTableProperties( +16166: const SeqnoToTimeMapping& , +16166: uint64_t ){} +16166: }; +16166: +16166: } +16166: # 26 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: namespace rocksdb { +16166: # 41 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: template > +16166: class BinaryHeap { +16166: public: +16166: BinaryHeap() {} +16166: explicit BinaryHeap(Compare cmp) : cmp_(std::move(cmp)) {} +16166: +16166: void push(const T& value) { +16166: data_.push_back(value); +16166: upheap(data_.size() - 1); +16166: } +16166: +16166: void push(T&& value) { +16166: data_.push_back(std::move(value)); +16166: upheap(data_.size() - 1); +16166: } +16166: +16166: const T& top() const { +16166: +16166: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: (static_cast ( +16166: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: !empty() +16166: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: "!empty()" +16166: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 58 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: ; +16166: return data_.front(); +16166: } +16166: +16166: void replace_top(const T& value) { +16166: +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: (static_cast ( +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: !empty() +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: "!empty()" +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 63 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: ; +16166: data_.front() = value; +16166: downheap(get_root()); +16166: } +16166: +16166: void replace_top(T&& value) { +16166: +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: (static_cast ( +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: !empty() +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: "!empty()" +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 69 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: ; +16166: data_.front() = std::move(value); +16166: downheap(get_root()); +16166: } +16166: +16166: void pop() { +16166: +16166: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: (static_cast ( +16166: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: !empty() +16166: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: "!empty()" +16166: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 75 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: ; +16166: if (data_.size() > 1) { +16166: +16166: +16166: +16166: data_.front() = std::move(data_.back()); +16166: } +16166: data_.pop_back(); +16166: if (!empty()) { +16166: downheap(get_root()); +16166: } else { +16166: reset_root_cmp_cache(); +16166: } +16166: } +16166: +16166: void swap(BinaryHeap& other) { +16166: std::swap(cmp_, other.cmp_); +16166: data_.swap(other.data_); +16166: std::swap(root_cmp_cache_, other.root_cmp_cache_); +16166: } +16166: +16166: void clear() { +16166: data_.clear(); +16166: reset_root_cmp_cache(); +16166: } +16166: +16166: bool empty() const { return data_.empty(); } +16166: +16166: size_t size() const { return data_.size(); } +16166: +16166: void reset_root_cmp_cache() { +16166: root_cmp_cache_ = std::numeric_limits::max(); +16166: } +16166: +16166: private: +16166: static inline size_t get_root() { return 0; } +16166: static inline size_t get_parent(size_t index) { return (index - 1) / 2; } +16166: static inline size_t get_left(size_t index) { return 2 * index + 1; } +16166: static inline size_t get_right(size_t index) { return 2 * index + 2; } +16166: +16166: void upheap(size_t index) { +16166: T v = std::move(data_[index]); +16166: while (index > get_root()) { +16166: const size_t parent = get_parent(index); +16166: if (!cmp_(data_[parent], v)) { +16166: break; +16166: } +16166: data_[index] = std::move(data_[parent]); +16166: index = parent; +16166: } +16166: data_[index] = std::move(v); +16166: reset_root_cmp_cache(); +16166: } +16166: +16166: void downheap(size_t index) { +16166: T v = std::move(data_[index]); +16166: +16166: size_t picked_child = std::numeric_limits::max(); +16166: while (1) { +16166: const size_t left_child = get_left(index); +16166: if (get_left(index) >= data_.size()) { +16166: break; +16166: } +16166: const size_t right_child = left_child + 1; +16166: +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: (static_cast ( +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: right_child == get_right(index) +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: "right_child == get_right(index)" +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 139 "/build/reproducible-path/rocksdb-9.10.0/util/heap.h" +16166: ; +16166: picked_child = left_child; +16166: if (index == 0 && root_cmp_cache_ < data_.size()) { +16166: picked_child = root_cmp_cache_; +16166: } else if (right_child < data_.size() && +16166: cmp_(data_[left_child], data_[right_child])) { +16166: picked_child = right_child; +16166: } +16166: if (!cmp_(v, data_[picked_child])) { +16166: break; +16166: } +16166: data_[index] = std::move(data_[picked_child]); +16166: index = picked_child; +16166: } +16166: +16166: if (index == 0) { +16166: +16166: +16166: +16166: +16166: root_cmp_cache_ = picked_child; +16166: } else { +16166: +16166: reset_root_cmp_cache(); +16166: } +16166: +16166: data_[index] = std::move(v); +16166: } +16166: +16166: Compare cmp_; +16166: autovector data_; +16166: +16166: size_t root_cmp_cache_ = std::numeric_limits::max(); +16166: }; +16166: +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/kv_map.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/util/kv_map.h" +16166: namespace rocksdb { +16166: namespace stl_wrappers { +16166: +16166: struct LessOfComparator { +16166: explicit LessOfComparator(const Comparator* c = BytewiseComparator()) +16166: : cmp(c) {} +16166: +16166: bool operator()(const std::string& a, const std::string& b) const { +16166: return cmp->Compare(Slice(a), Slice(b)) < 0; +16166: } +16166: bool operator()(const Slice& a, const Slice& b) const { +16166: return cmp->Compare(a, b) < 0; +16166: } +16166: +16166: const Comparator* cmp; +16166: }; +16166: +16166: using KVMap = std::map; +16166: } +16166: } +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: class TruncatedRangeDelIterator { +16166: public: +16166: TruncatedRangeDelIterator( +16166: std::unique_ptr iter, +16166: const InternalKeyComparator* icmp, const InternalKey* smallest, +16166: const InternalKey* largest); +16166: +16166: void SetRangeDelReadSeqno(SequenceNumber read_seqno) { +16166: iter_->SetRangeDelReadSeqno(read_seqno); +16166: } +16166: +16166: bool Valid() const; +16166: +16166: void Next() { iter_->TopNext(); } +16166: void Prev() { iter_->TopPrev(); } +16166: +16166: void InternalNext() { iter_->Next(); } +16166: +16166: +16166: +16166: +16166: +16166: void Seek(const Slice& target); +16166: +16166: +16166: void SeekInternalKey(const Slice& target); +16166: +16166: +16166: +16166: +16166: void SeekForPrev(const Slice& target); +16166: +16166: void SeekToFirst(); +16166: void SeekToLast(); +16166: +16166: ParsedInternalKey start_key() const { +16166: return (smallest_ == nullptr || +16166: icmp_->Compare(*smallest_, iter_->parsed_start_key()) <= 0) +16166: ? iter_->parsed_start_key() +16166: : *smallest_; +16166: } +16166: +16166: ParsedInternalKey end_key() const { +16166: return (largest_ == nullptr || +16166: icmp_->Compare(iter_->parsed_end_key(), *largest_) <= 0) +16166: ? iter_->parsed_end_key() +16166: : *largest_; +16166: } +16166: +16166: SequenceNumber seq() const { return iter_->seq(); } +16166: Slice timestamp() const { +16166: +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: (static_cast ( +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: icmp_->user_comparator()->timestamp_size() +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: "icmp_->user_comparator()->timestamp_size()" +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: ; +16166: return iter_->timestamp(); +16166: } +16166: void SetTimestampUpperBound(const Slice* ts_upper_bound) { +16166: iter_->SetTimestampUpperBound(ts_upper_bound); +16166: } +16166: +16166: std::map> +16166: SplitBySnapshot(const std::vector& snapshots); +16166: +16166: SequenceNumber upper_bound() const { return iter_->upper_bound(); } +16166: +16166: SequenceNumber lower_bound() const { return iter_->lower_bound(); } +16166: +16166: private: +16166: std::unique_ptr iter_; +16166: const InternalKeyComparator* icmp_; +16166: const ParsedInternalKey* smallest_ = nullptr; +16166: const ParsedInternalKey* largest_ = nullptr; +16166: std::list pinned_bounds_; +16166: +16166: const InternalKey* smallest_ikey_; +16166: const InternalKey* largest_ikey_; +16166: }; +16166: +16166: struct SeqMaxComparator { +16166: bool operator()(const TruncatedRangeDelIterator* a, +16166: const TruncatedRangeDelIterator* b) const { +16166: return a->seq() > b->seq(); +16166: } +16166: }; +16166: +16166: struct StartKeyMinComparator { +16166: explicit StartKeyMinComparator(const InternalKeyComparator* c) : icmp(c) {} +16166: +16166: bool operator()(const TruncatedRangeDelIterator* a, +16166: const TruncatedRangeDelIterator* b) const { +16166: return icmp->Compare(a->start_key(), b->start_key()) > 0; +16166: } +16166: +16166: const InternalKeyComparator* icmp; +16166: }; +16166: +16166: class ForwardRangeDelIterator { +16166: public: +16166: explicit ForwardRangeDelIterator(const InternalKeyComparator* icmp); +16166: +16166: bool ShouldDelete(const ParsedInternalKey& parsed); +16166: void Invalidate(); +16166: +16166: void AddNewIter(TruncatedRangeDelIterator* iter, +16166: const ParsedInternalKey& parsed) { +16166: iter->Seek(parsed.user_key); +16166: PushIter(iter, parsed); +16166: +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: (static_cast ( +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: active_iters_.size() == active_seqnums_.size() +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: "active_iters_.size() == active_seqnums_.size()" +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: ; +16166: } +16166: +16166: size_t UnusedIdx() const { return unused_idx_; } +16166: void IncUnusedIdx() { unused_idx_++; } +16166: +16166: private: +16166: using ActiveSeqSet = +16166: std::multiset; +16166: +16166: struct EndKeyMinComparator { +16166: explicit EndKeyMinComparator(const InternalKeyComparator* c) : icmp(c) {} +16166: +16166: bool operator()(const ActiveSeqSet::const_iterator& a, +16166: const ActiveSeqSet::const_iterator& b) const { +16166: return icmp->Compare((*a)->end_key(), (*b)->end_key()) > 0; +16166: } +16166: +16166: const InternalKeyComparator* icmp; +16166: }; +16166: +16166: void PushIter(TruncatedRangeDelIterator* iter, +16166: const ParsedInternalKey& parsed) { +16166: if (!iter->Valid()) { +16166: +16166: +16166: return; +16166: } +16166: int cmp = icmp_->Compare(parsed, iter->start_key()); +16166: if (cmp < 0) { +16166: PushInactiveIter(iter); +16166: } else { +16166: PushActiveIter(iter); +16166: } +16166: } +16166: +16166: void PushActiveIter(TruncatedRangeDelIterator* iter) { +16166: auto seq_pos = active_seqnums_.insert(iter); +16166: active_iters_.push(seq_pos); +16166: } +16166: +16166: TruncatedRangeDelIterator* PopActiveIter() { +16166: auto active_top = active_iters_.top(); +16166: auto iter = *active_top; +16166: active_iters_.pop(); +16166: active_seqnums_.erase(active_top); +16166: return iter; +16166: } +16166: +16166: void PushInactiveIter(TruncatedRangeDelIterator* iter) { +16166: inactive_iters_.push(iter); +16166: } +16166: +16166: TruncatedRangeDelIterator* PopInactiveIter() { +16166: auto* iter = inactive_iters_.top(); +16166: inactive_iters_.pop(); +16166: return iter; +16166: } +16166: +16166: const InternalKeyComparator* icmp_; +16166: size_t unused_idx_; +16166: ActiveSeqSet active_seqnums_; +16166: BinaryHeap active_iters_; +16166: BinaryHeap inactive_iters_; +16166: }; +16166: +16166: class ReverseRangeDelIterator { +16166: public: +16166: explicit ReverseRangeDelIterator(const InternalKeyComparator* icmp); +16166: +16166: bool ShouldDelete(const ParsedInternalKey& parsed); +16166: void Invalidate(); +16166: +16166: void AddNewIter(TruncatedRangeDelIterator* iter, +16166: const ParsedInternalKey& parsed) { +16166: iter->SeekForPrev(parsed.user_key); +16166: PushIter(iter, parsed); +16166: +16166: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: (static_cast ( +16166: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: active_iters_.size() == active_seqnums_.size() +16166: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: "active_iters_.size() == active_seqnums_.size()" +16166: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 213 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: ; +16166: } +16166: +16166: size_t UnusedIdx() const { return unused_idx_; } +16166: void IncUnusedIdx() { unused_idx_++; } +16166: +16166: private: +16166: using ActiveSeqSet = +16166: std::multiset; +16166: +16166: struct EndKeyMaxComparator { +16166: explicit EndKeyMaxComparator(const InternalKeyComparator* c) : icmp(c) {} +16166: +16166: bool operator()(const TruncatedRangeDelIterator* a, +16166: const TruncatedRangeDelIterator* b) const { +16166: return icmp->Compare(a->end_key(), b->end_key()) < 0; +16166: } +16166: +16166: const InternalKeyComparator* icmp; +16166: }; +16166: struct StartKeyMaxComparator { +16166: explicit StartKeyMaxComparator(const InternalKeyComparator* c) : icmp(c) {} +16166: +16166: bool operator()(const ActiveSeqSet::const_iterator& a, +16166: const ActiveSeqSet::const_iterator& b) const { +16166: return icmp->Compare((*a)->start_key(), (*b)->start_key()) < 0; +16166: } +16166: +16166: const InternalKeyComparator* icmp; +16166: }; +16166: +16166: void PushIter(TruncatedRangeDelIterator* iter, +16166: const ParsedInternalKey& parsed) { +16166: if (!iter->Valid()) { +16166: +16166: +16166: } else if (icmp_->Compare(iter->end_key(), parsed) <= 0) { +16166: PushInactiveIter(iter); +16166: } else { +16166: PushActiveIter(iter); +16166: } +16166: } +16166: +16166: void PushActiveIter(TruncatedRangeDelIterator* iter) { +16166: auto seq_pos = active_seqnums_.insert(iter); +16166: active_iters_.push(seq_pos); +16166: } +16166: +16166: TruncatedRangeDelIterator* PopActiveIter() { +16166: auto active_top = active_iters_.top(); +16166: auto iter = *active_top; +16166: active_iters_.pop(); +16166: active_seqnums_.erase(active_top); +16166: return iter; +16166: } +16166: +16166: void PushInactiveIter(TruncatedRangeDelIterator* iter) { +16166: inactive_iters_.push(iter); +16166: } +16166: +16166: TruncatedRangeDelIterator* PopInactiveIter() { +16166: auto* iter = inactive_iters_.top(); +16166: inactive_iters_.pop(); +16166: return iter; +16166: } +16166: +16166: const InternalKeyComparator* icmp_; +16166: size_t unused_idx_; +16166: ActiveSeqSet active_seqnums_; +16166: BinaryHeap active_iters_; +16166: BinaryHeap inactive_iters_; +16166: }; +16166: +16166: enum class RangeDelPositioningMode { kForwardTraversal, kBackwardTraversal }; +16166: class RangeDelAggregator { +16166: public: +16166: explicit RangeDelAggregator(const InternalKeyComparator* icmp) +16166: : icmp_(icmp) {} +16166: virtual ~RangeDelAggregator() {} +16166: +16166: virtual void AddTombstones( +16166: std::unique_ptr input_iter, +16166: const InternalKey* smallest = nullptr, +16166: const InternalKey* largest = nullptr) = 0; +16166: +16166: bool ShouldDelete(const Slice& ikey, RangeDelPositioningMode mode) { +16166: ParsedInternalKey parsed; +16166: +16166: Status pik_status = +16166: ParseInternalKey(ikey, &parsed, false ); +16166: +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: (static_cast ( +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: pik_status.ok() +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: "pik_status.ok()" +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 303 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: ; +16166: if (!pik_status.ok()) { +16166: return false; +16166: } +16166: +16166: return ShouldDelete(parsed, mode); +16166: } +16166: virtual bool ShouldDelete(const ParsedInternalKey& parsed, +16166: RangeDelPositioningMode mode) = 0; +16166: +16166: virtual void InvalidateRangeDelMapPositions() = 0; +16166: +16166: virtual bool IsEmpty() const = 0; +16166: +16166: bool AddFile(uint64_t file_number) { +16166: return files_seen_.insert(file_number).second; +16166: } +16166: +16166: protected: +16166: class StripeRep { +16166: public: +16166: StripeRep(const InternalKeyComparator* icmp, SequenceNumber upper_bound, +16166: SequenceNumber lower_bound) +16166: : icmp_(icmp), +16166: forward_iter_(icmp), +16166: reverse_iter_(icmp), +16166: upper_bound_(upper_bound), +16166: lower_bound_(lower_bound) {} +16166: +16166: void AddTombstones(std::unique_ptr input_iter) { +16166: iters_.push_back(std::move(input_iter)); +16166: } +16166: +16166: bool IsEmpty() const { return iters_.empty(); } +16166: +16166: bool ShouldDelete(const ParsedInternalKey& parsed, +16166: RangeDelPositioningMode mode); +16166: +16166: void Invalidate() { +16166: if (!IsEmpty()) { +16166: InvalidateForwardIter(); +16166: InvalidateReverseIter(); +16166: } +16166: } +16166: +16166: +16166: +16166: bool IsRangeOverlapped(const Slice& start, const Slice& end); +16166: +16166: private: +16166: bool InStripe(SequenceNumber seq) const { +16166: return lower_bound_ <= seq && seq <= upper_bound_; +16166: } +16166: +16166: void InvalidateForwardIter() { forward_iter_.Invalidate(); } +16166: +16166: void InvalidateReverseIter() { reverse_iter_.Invalidate(); } +16166: +16166: const InternalKeyComparator* icmp_; +16166: std::vector> iters_; +16166: ForwardRangeDelIterator forward_iter_; +16166: ReverseRangeDelIterator reverse_iter_; +16166: SequenceNumber upper_bound_; +16166: SequenceNumber lower_bound_; +16166: }; +16166: +16166: const InternalKeyComparator* icmp_; +16166: +16166: private: +16166: std::set files_seen_; +16166: }; +16166: +16166: class ReadRangeDelAggregator final : public RangeDelAggregator { +16166: public: +16166: ReadRangeDelAggregator(const InternalKeyComparator* icmp, +16166: SequenceNumber upper_bound) +16166: : RangeDelAggregator(icmp), +16166: rep_(icmp, upper_bound, 0 ) {} +16166: ~ReadRangeDelAggregator() override {} +16166: +16166: using RangeDelAggregator::ShouldDelete; +16166: void AddTombstones( +16166: std::unique_ptr input_iter, +16166: const InternalKey* smallest = nullptr, +16166: const InternalKey* largest = nullptr) override; +16166: +16166: bool ShouldDelete(const ParsedInternalKey& parsed, +16166: RangeDelPositioningMode mode) final override { +16166: if (rep_.IsEmpty()) { +16166: return false; +16166: } +16166: return ShouldDeleteImpl(parsed, mode); +16166: } +16166: +16166: bool IsRangeOverlapped(const Slice& start, const Slice& end); +16166: +16166: void InvalidateRangeDelMapPositions() override { rep_.Invalidate(); } +16166: +16166: bool IsEmpty() const override { return rep_.IsEmpty(); } +16166: +16166: private: +16166: StripeRep rep_; +16166: +16166: bool ShouldDeleteImpl(const ParsedInternalKey& parsed, +16166: RangeDelPositioningMode mode); +16166: }; +16166: +16166: class CompactionRangeDelAggregator : public RangeDelAggregator { +16166: public: +16166: CompactionRangeDelAggregator(const InternalKeyComparator* icmp, +16166: const std::vector& snapshots, +16166: const std::string* full_history_ts_low = nullptr, +16166: const std::string* trim_ts = nullptr) +16166: : RangeDelAggregator(icmp), snapshots_(&snapshots) { +16166: if (full_history_ts_low) { +16166: ts_upper_bound_ = *full_history_ts_low; +16166: } +16166: if (trim_ts) { +16166: trim_ts_ = *trim_ts; +16166: +16166: +16166: if (ts_upper_bound_.empty()) { +16166: ts_upper_bound_ = trim_ts_; +16166: } else if (!trim_ts_.empty() && icmp->user_comparator()->CompareTimestamp( +16166: trim_ts_, ts_upper_bound_) < 0) { +16166: ts_upper_bound_ = trim_ts_; +16166: } +16166: } +16166: } +16166: ~CompactionRangeDelAggregator() override {} +16166: +16166: void AddTombstones( +16166: std::unique_ptr input_iter, +16166: const InternalKey* smallest = nullptr, +16166: const InternalKey* largest = nullptr) override; +16166: +16166: using RangeDelAggregator::ShouldDelete; +16166: bool ShouldDelete(const ParsedInternalKey& parsed, +16166: RangeDelPositioningMode mode) override; +16166: +16166: bool IsRangeOverlapped(const Slice& start, const Slice& end); +16166: +16166: void InvalidateRangeDelMapPositions() override { +16166: for (auto& rep : reps_) { +16166: rep.second.Invalidate(); +16166: } +16166: } +16166: +16166: bool IsEmpty() const override { +16166: for (const auto& rep : reps_) { +16166: if (!rep.second.IsEmpty()) { +16166: return false; +16166: } +16166: } +16166: return true; +16166: } +16166: # 468 "/build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator.h" +16166: std::unique_ptr NewIterator( +16166: const Slice* lower_bound = nullptr, const Slice* upper_bound = nullptr); +16166: +16166: private: +16166: std::vector> parent_iters_; +16166: std::map reps_; +16166: +16166: const std::vector* snapshots_; +16166: +16166: Slice ts_upper_bound_{}; +16166: Slice trim_ts_{}; +16166: }; +16166: +16166: } +16166: # 14 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/snapshot_checker.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: enum class SnapshotCheckerResult : int { +16166: kInSnapshot = 0, +16166: kNotInSnapshot = 1, +16166: +16166: +16166: kSnapshotReleased = 2, +16166: }; +16166: +16166: +16166: class SnapshotChecker { +16166: public: +16166: virtual ~SnapshotChecker() {} +16166: virtual SnapshotCheckerResult CheckInSnapshot( +16166: SequenceNumber sequence, SequenceNumber snapshot_sequence) const = 0; +16166: }; +16166: +16166: class DisableGCSnapshotChecker : public SnapshotChecker { +16166: public: +16166: virtual ~DisableGCSnapshotChecker() {} +16166: SnapshotCheckerResult CheckInSnapshot( +16166: SequenceNumber , +16166: SequenceNumber ) const override { +16166: +16166: return SnapshotCheckerResult::kNotInSnapshot; +16166: } +16166: static DisableGCSnapshotChecker* Instance(); +16166: +16166: protected: +16166: explicit DisableGCSnapshotChecker() {} +16166: }; +16166: +16166: class WritePreparedTxnDB; +16166: +16166: +16166: +16166: class WritePreparedSnapshotChecker : public SnapshotChecker { +16166: public: +16166: explicit WritePreparedSnapshotChecker(WritePreparedTxnDB* txn_db); +16166: virtual ~WritePreparedSnapshotChecker() {} +16166: +16166: SnapshotCheckerResult CheckInSnapshot( +16166: SequenceNumber sequence, SequenceNumber snapshot_sequence) const override; +16166: +16166: private: +16166: const WritePreparedTxnDB* const txn_db_; +16166: }; +16166: +16166: bool DataIsDefinitelyInSnapshot(SequenceNumber seqno, SequenceNumber snapshot, +16166: const SnapshotChecker* snapshot_checker); +16166: +16166: bool DataIsDefinitelyNotInSnapshot(SequenceNumber seqno, +16166: SequenceNumber snapshot, +16166: const SnapshotChecker* snapshot_checker); +16166: +16166: } +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 15 "/build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.h" +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: # 44 "/build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.h" +16166: class WideColumnSerialization { +16166: public: +16166: static Status Serialize(const WideColumns& columns, std::string& output); +16166: +16166: static Status Deserialize(Slice& input, WideColumns& columns); +16166: +16166: static Status GetValueOfDefaultColumn(Slice& input, Slice& value); +16166: +16166: static constexpr uint32_t kCurrentVersion = 1; +16166: }; +16166: +16166: } +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 1 +16166: # 9 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: +16166: +16166: # 1 "/usr/include/c++/14/cassert" 1 3 +16166: # 41 "/usr/include/c++/14/cassert" 3 +16166: +16166: # 42 "/usr/include/c++/14/cassert" 3 +16166: +16166: +16166: # 1 "/usr/include/assert.h" 1 3 4 +16166: # 45 "/usr/include/c++/14/cassert" 2 3 +16166: # 12 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 2 +16166: # 23 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: class SliceTransform; +16166: # 54 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: class CompactionFilter : public Customizable { +16166: public: +16166: +16166: +16166: enum ValueType { +16166: +16166: kValue, +16166: +16166: kMergeOperand, +16166: +16166: +16166: +16166: +16166: kBlobIndex, +16166: +16166: kWideColumnEntity, +16166: }; +16166: +16166: +16166: +16166: +16166: enum class Decision { +16166: +16166: kKeep, +16166: # 89 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: kRemove, +16166: +16166: +16166: +16166: +16166: +16166: kChangeValue, +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: kRemoveAndSkipUntil, +16166: +16166: +16166: +16166: kChangeBlobIndex, +16166: +16166: +16166: +16166: kIOError, +16166: +16166: +16166: +16166: +16166: +16166: kPurge, +16166: +16166: +16166: +16166: +16166: +16166: +16166: kChangeWideColumnEntity, +16166: # 150 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: kUndetermined, +16166: }; +16166: +16166: +16166: enum class BlobDecision { kKeep, kChangeValue, kCorruption, kIOError }; +16166: +16166: +16166: struct Context { +16166: +16166: +16166: bool is_full_compaction; +16166: +16166: +16166: bool is_manual_compaction; +16166: +16166: +16166: int input_start_level = kUnknownStartLevel; +16166: +16166: uint32_t column_family_id; +16166: +16166: TableFileCreationReason reason; +16166: +16166: +16166: +16166: +16166: TablePropertiesCollection input_table_properties; +16166: +16166: static const int kUnknownStartLevel = -1; +16166: }; +16166: +16166: virtual ~CompactionFilter() {} +16166: static const char* Type() { return "CompactionFilter"; } +16166: static Status CreateFromString(const ConfigOptions& config_options, +16166: const std::string& name, +16166: const CompactionFilter** result); +16166: # 201 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: virtual bool Filter(int , const Slice& , +16166: const Slice& , +16166: std::string* , +16166: bool* ) const { +16166: return false; +16166: } +16166: # 217 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: virtual bool FilterMergeOperand(int , const Slice& , +16166: const Slice& ) const { +16166: return false; +16166: } +16166: # 234 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: virtual Decision FilterV2(int level, const Slice& key, ValueType value_type, +16166: const Slice& existing_value, std::string* new_value, +16166: std::string* ) const { +16166: switch (value_type) { +16166: case ValueType::kValue: { +16166: bool value_changed = false; +16166: bool rv = Filter(level, key, existing_value, new_value, &value_changed); +16166: if (rv) { +16166: return Decision::kRemove; +16166: } +16166: return value_changed ? Decision::kChangeValue : Decision::kKeep; +16166: } +16166: +16166: case ValueType::kMergeOperand: { +16166: bool rv = FilterMergeOperand(level, key, existing_value); +16166: return rv ? Decision::kRemove : Decision::kKeep; +16166: } +16166: +16166: case ValueType::kBlobIndex: +16166: return Decision::kKeep; +16166: +16166: default: +16166: +16166: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: (static_cast ( +16166: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: false +16166: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: "false" +16166: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 256 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: ; +16166: return Decision::kKeep; +16166: } +16166: } +16166: # 281 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: virtual Decision FilterV3( +16166: int level, const Slice& key, ValueType value_type, +16166: const Slice* existing_value, const WideColumns* existing_columns, +16166: std::string* new_value, +16166: std::vector>* , +16166: std::string* skip_until) const { +16166: +16166: +16166: +16166: +16166: +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: (static_cast ( +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: !existing_value || !existing_columns +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: "!existing_value || !existing_columns" +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 291 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: ; +16166: +16166: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: (static_cast ( +16166: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: value_type == ValueType::kWideColumnEntity || existing_value +16166: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: "value_type == ValueType::kWideColumnEntity || existing_value" +16166: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 292 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: ; +16166: +16166: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: (static_cast ( +16166: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: value_type != ValueType::kWideColumnEntity || existing_columns +16166: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: "value_type != ValueType::kWideColumnEntity || existing_columns" +16166: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 293 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: ; +16166: +16166: if (value_type == ValueType::kWideColumnEntity) { +16166: return Decision::kKeep; +16166: } +16166: +16166: return FilterV2(level, key, value_type, *existing_value, new_value, +16166: skip_until); +16166: } +16166: +16166: +16166: virtual BlobDecision PrepareBlobOutput(const Slice& , +16166: const Slice& , +16166: std::string* ) const { +16166: return BlobDecision::kKeep; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool IgnoreSnapshots() const { return true; } +16166: +16166: +16166: +16166: const char* Name() const override = 0; +16166: +16166: +16166: virtual bool IsStackedBlobDbInternalCompactionFilter() const { return false; } +16166: # 334 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: virtual Decision FilterBlobByKey(int , const Slice& , +16166: std::string* , +16166: std::string* ) const { +16166: return Decision::kUndetermined; +16166: } +16166: }; +16166: # 349 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/compaction_filter.h" +16166: class CompactionFilterFactory : public Customizable { +16166: public: +16166: virtual ~CompactionFilterFactory() {} +16166: static const char* Type() { return "CompactionFilterFactory"; } +16166: static Status CreateFromString( +16166: const ConfigOptions& config_options, const std::string& name, +16166: std::shared_ptr* result); +16166: +16166: +16166: +16166: +16166: virtual bool ShouldFilterTableFileCreation( +16166: TableFileCreationReason reason) const { +16166: +16166: +16166: return reason == TableFileCreationReason::kCompaction; +16166: } +16166: +16166: virtual std::unique_ptr CreateCompactionFilter( +16166: const CompactionFilter::Context& context) = 0; +16166: +16166: +16166: const char* Name() const override = 0; +16166: }; +16166: +16166: } +16166: # 17 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/variant" 1 3 +16166: # 32 "/usr/include/c++/14/variant" 3 +16166: +16166: # 33 "/usr/include/c++/14/variant" 3 +16166: +16166: +16166: +16166: # 1 "/usr/include/c++/14/bits/version.h" 1 3 +16166: # 47 "/usr/include/c++/14/bits/version.h" 3 +16166: +16166: # 48 "/usr/include/c++/14/bits/version.h" 3 +16166: # 37 "/usr/include/c++/14/variant" 2 3 +16166: # 59 "/usr/include/c++/14/variant" 3 +16166: +16166: # 59 "/usr/include/c++/14/variant" 3 +16166: namespace std __attribute__ ((__visibility__ ("default"))) +16166: { +16166: +16166: +16166: template class tuple; +16166: template class variant; +16166: template struct hash; +16166: +16166: template +16166: struct variant_size; +16166: +16166: template +16166: struct variant_size : variant_size<_Variant> {}; +16166: +16166: template +16166: struct variant_size : variant_size<_Variant> {}; +16166: +16166: template +16166: struct variant_size : variant_size<_Variant> {}; +16166: +16166: template +16166: struct variant_size> +16166: : std::integral_constant {}; +16166: +16166: template +16166: inline constexpr size_t variant_size_v = variant_size<_Variant>::value; +16166: +16166: template +16166: inline constexpr size_t +16166: variant_size_v> = sizeof...(_Types); +16166: +16166: template +16166: inline constexpr size_t +16166: variant_size_v> = sizeof...(_Types); +16166: +16166: template +16166: struct variant_alternative; +16166: +16166: template +16166: struct variant_alternative<_Np, variant<_Types...>> +16166: { +16166: static_assert(_Np < sizeof...(_Types)); +16166: +16166: using type = typename _Nth_type<_Np, _Types...>::type; +16166: }; +16166: +16166: template +16166: using variant_alternative_t = +16166: typename variant_alternative<_Np, _Variant>::type; +16166: +16166: template +16166: struct variant_alternative<_Np, const _Variant> +16166: { using type = const variant_alternative_t<_Np, _Variant>; }; +16166: +16166: template +16166: struct variant_alternative<_Np, volatile _Variant> +16166: { using type = volatile variant_alternative_t<_Np, _Variant>; }; +16166: +16166: template +16166: struct variant_alternative<_Np, const volatile _Variant> +16166: { using type = const volatile variant_alternative_t<_Np, _Variant>; }; +16166: +16166: inline constexpr size_t variant_npos = -1; +16166: +16166: template +16166: constexpr variant_alternative_t<_Np, variant<_Types...>>& +16166: get(variant<_Types...>&); +16166: +16166: template +16166: constexpr variant_alternative_t<_Np, variant<_Types...>>&& +16166: get(variant<_Types...>&&); +16166: +16166: template +16166: constexpr variant_alternative_t<_Np, variant<_Types...>> const& +16166: get(const variant<_Types...>&); +16166: +16166: template +16166: constexpr variant_alternative_t<_Np, variant<_Types...>> const&& +16166: get(const variant<_Types...>&&); +16166: +16166: template +16166: constexpr decltype(auto) +16166: __do_visit(_Visitor&& __visitor, _Variants&&... __variants); +16166: +16166: template +16166: +16166: decltype(auto) +16166: __variant_cast(_Tp&& __rhs) +16166: { +16166: if constexpr (is_lvalue_reference_v<_Tp>) +16166: { +16166: if constexpr (is_const_v>) +16166: return static_cast&>(__rhs); +16166: else +16166: return static_cast&>(__rhs); +16166: } +16166: else +16166: return static_cast&&>(__rhs); +16166: } +16166: +16166: namespace __detail +16166: { +16166: namespace __variant +16166: { +16166: +16166: struct __variant_cookie {}; +16166: +16166: struct __variant_idx_cookie { using type = __variant_idx_cookie; }; +16166: +16166: template struct __deduce_visit_result { using type = _Tp; }; +16166: +16166: +16166: template +16166: constexpr void +16166: __raw_visit(_Visitor&& __visitor, _Variants&&... __variants) +16166: { +16166: std::__do_visit<__variant_cookie>(std::forward<_Visitor>(__visitor), +16166: std::forward<_Variants>(__variants)...); +16166: } +16166: +16166: +16166: template +16166: constexpr void +16166: __raw_idx_visit(_Visitor&& __visitor, _Variants&&... __variants) +16166: { +16166: std::__do_visit<__variant_idx_cookie>(std::forward<_Visitor>(__visitor), +16166: std::forward<_Variants>(__variants)...); +16166: } +16166: +16166: +16166: +16166: template +16166: constexpr std::variant<_Types...>& +16166: __as(std::variant<_Types...>& __v) noexcept +16166: { return __v; } +16166: +16166: template +16166: constexpr const std::variant<_Types...>& +16166: __as(const std::variant<_Types...>& __v) noexcept +16166: { return __v; } +16166: +16166: template +16166: constexpr std::variant<_Types...>&& +16166: __as(std::variant<_Types...>&& __v) noexcept +16166: { return std::move(__v); } +16166: +16166: template +16166: constexpr const std::variant<_Types...>&& +16166: __as(const std::variant<_Types...>&& __v) noexcept +16166: { return std::move(__v); } +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template> +16166: struct _Uninitialized; +16166: +16166: template +16166: struct _Uninitialized<_Type, true> +16166: { +16166: template +16166: constexpr +16166: _Uninitialized(in_place_index_t<0>, _Args&&... __args) +16166: : _M_storage(std::forward<_Args>(__args)...) +16166: { } +16166: +16166: constexpr const _Type& _M_get() const & noexcept +16166: { return _M_storage; } +16166: +16166: constexpr _Type& _M_get() & noexcept +16166: { return _M_storage; } +16166: +16166: constexpr const _Type&& _M_get() const && noexcept +16166: { return std::move(_M_storage); } +16166: +16166: constexpr _Type&& _M_get() && noexcept +16166: { return std::move(_M_storage); } +16166: +16166: _Type _M_storage; +16166: }; +16166: +16166: template +16166: struct _Uninitialized<_Type, false> +16166: { +16166: # 279 "/usr/include/c++/14/variant" 3 +16166: template +16166: constexpr +16166: _Uninitialized(in_place_index_t<0>, _Args&&... __args) +16166: { +16166: ::new ((void*)std::addressof(_M_storage)) +16166: _Type(std::forward<_Args>(__args)...); +16166: } +16166: +16166: const _Type& _M_get() const & noexcept +16166: { return *_M_storage._M_ptr(); } +16166: +16166: _Type& _M_get() & noexcept +16166: { return *_M_storage._M_ptr(); } +16166: +16166: const _Type&& _M_get() const && noexcept +16166: { return std::move(*_M_storage._M_ptr()); } +16166: +16166: _Type&& _M_get() && noexcept +16166: { return std::move(*_M_storage._M_ptr()); } +16166: +16166: __gnu_cxx::__aligned_membuf<_Type> _M_storage; +16166: +16166: }; +16166: +16166: template +16166: constexpr decltype(auto) +16166: __get_n(_Union&& __u) noexcept +16166: { +16166: if constexpr (_Np == 0) +16166: return std::forward<_Union>(__u)._M_first._M_get(); +16166: else if constexpr (_Np == 1) +16166: return std::forward<_Union>(__u)._M_rest._M_first._M_get(); +16166: else if constexpr (_Np == 2) +16166: return std::forward<_Union>(__u)._M_rest._M_rest._M_first._M_get(); +16166: else +16166: return __variant::__get_n<_Np - 3>( +16166: std::forward<_Union>(__u)._M_rest._M_rest._M_rest); +16166: } +16166: +16166: +16166: template +16166: constexpr decltype(auto) +16166: __get(_Variant&& __v) noexcept +16166: { return __variant::__get_n<_Np>(std::forward<_Variant>(__v)._M_u); } +16166: +16166: +16166: template +16166: constexpr decltype(auto) +16166: __construct_n(_Union& __u) noexcept +16166: { +16166: if constexpr (_Np == 0) +16166: return &__u._M_first; +16166: else if constexpr (_Np == 1) +16166: { +16166: std::_Construct(&__u._M_rest); +16166: return &__u._M_rest._M_first; +16166: } +16166: else if constexpr (_Np == 2) +16166: { +16166: std::_Construct(&__u._M_rest); +16166: std::_Construct(&__u._M_rest._M_rest); +16166: return &__u._M_rest._M_rest._M_first; +16166: } +16166: else +16166: { +16166: std::_Construct(&__u._M_rest); +16166: std::_Construct(&__u._M_rest._M_rest); +16166: std::_Construct(&__u._M_rest._M_rest._M_rest); +16166: return __variant::__construct_n<_Np - 3>(__u._M_rest._M_rest._M_rest); +16166: } +16166: } +16166: +16166: template +16166: struct _Traits +16166: { +16166: static constexpr bool _S_default_ctor = +16166: is_default_constructible_v::type>; +16166: static constexpr bool _S_copy_ctor = +16166: (is_copy_constructible_v<_Types> && ...); +16166: static constexpr bool _S_move_ctor = +16166: (is_move_constructible_v<_Types> && ...); +16166: static constexpr bool _S_copy_assign = +16166: _S_copy_ctor +16166: && (is_copy_assignable_v<_Types> && ...); +16166: static constexpr bool _S_move_assign = +16166: _S_move_ctor +16166: && (is_move_assignable_v<_Types> && ...); +16166: +16166: static constexpr bool _S_trivial_dtor = +16166: (is_trivially_destructible_v<_Types> && ...); +16166: static constexpr bool _S_trivial_copy_ctor = +16166: (is_trivially_copy_constructible_v<_Types> && ...); +16166: static constexpr bool _S_trivial_move_ctor = +16166: (is_trivially_move_constructible_v<_Types> && ...); +16166: static constexpr bool _S_trivial_copy_assign = +16166: _S_trivial_dtor && _S_trivial_copy_ctor +16166: && (is_trivially_copy_assignable_v<_Types> && ...); +16166: static constexpr bool _S_trivial_move_assign = +16166: _S_trivial_dtor && _S_trivial_move_ctor +16166: && (is_trivially_move_assignable_v<_Types> && ...); +16166: +16166: +16166: +16166: static constexpr bool _S_nothrow_default_ctor = +16166: is_nothrow_default_constructible_v< +16166: typename _Nth_type<0, _Types...>::type>; +16166: static constexpr bool _S_nothrow_copy_ctor = false; +16166: static constexpr bool _S_nothrow_move_ctor = +16166: (is_nothrow_move_constructible_v<_Types> && ...); +16166: static constexpr bool _S_nothrow_copy_assign = false; +16166: static constexpr bool _S_nothrow_move_assign = +16166: _S_nothrow_move_ctor +16166: && (is_nothrow_move_assignable_v<_Types> && ...); +16166: }; +16166: +16166: +16166: template +16166: union _Variadic_union +16166: { +16166: _Variadic_union() = default; +16166: +16166: template +16166: _Variadic_union(in_place_index_t<_Np>, _Args&&...) = delete; +16166: }; +16166: +16166: template +16166: union _Variadic_union<__trivially_destructible, _First, _Rest...> +16166: { +16166: constexpr _Variadic_union() : _M_rest() { } +16166: +16166: template +16166: constexpr +16166: _Variadic_union(in_place_index_t<0>, _Args&&... __args) +16166: : _M_first(in_place_index<0>, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Variadic_union(in_place_index_t<_Np>, _Args&&... __args) +16166: : _M_rest(in_place_index<_Np-1>, std::forward<_Args>(__args)...) +16166: { } +16166: # 434 "/usr/include/c++/14/variant" 3 +16166: _Uninitialized<_First> _M_first; +16166: _Variadic_union<__trivially_destructible, _Rest...> _M_rest; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: template +16166: struct _Never_valueless_alt +16166: : __and_, is_trivially_copyable<_Tp>> +16166: { }; +16166: # 458 "/usr/include/c++/14/variant" 3 +16166: template +16166: constexpr bool __never_valueless() +16166: { +16166: return _Traits<_Types...>::_S_move_assign +16166: && (_Never_valueless_alt<_Types>::value && ...); +16166: } +16166: +16166: +16166: template +16166: struct _Variant_storage; +16166: +16166: template +16166: using __select_index = +16166: typename __select_int::_Select_int_base::type::value_type; +16166: +16166: template +16166: struct _Variant_storage +16166: { +16166: constexpr +16166: _Variant_storage() +16166: : _M_index(static_cast<__index_type>(variant_npos)) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Variant_storage(in_place_index_t<_Np>, _Args&&... __args) +16166: : _M_u(in_place_index<_Np>, std::forward<_Args>(__args)...), +16166: _M_index{_Np} +16166: { } +16166: +16166: constexpr void +16166: _M_reset() +16166: { +16166: if (!_M_valid()) [[__unlikely__]] +16166: return; +16166: +16166: std::__do_visit([](auto&& __this_mem) mutable +16166: { +16166: std::_Destroy(std::__addressof(__this_mem)); +16166: }, __variant_cast<_Types...>(*this)); +16166: +16166: _M_index = static_cast<__index_type>(variant_npos); +16166: } +16166: +16166: +16166: ~_Variant_storage() +16166: { _M_reset(); } +16166: +16166: constexpr bool +16166: _M_valid() const noexcept +16166: { +16166: if constexpr (__variant::__never_valueless<_Types...>()) +16166: return true; +16166: return this->_M_index != __index_type(variant_npos); +16166: } +16166: +16166: _Variadic_union _M_u; +16166: using __index_type = __select_index<_Types...>; +16166: __index_type _M_index; +16166: }; +16166: +16166: template +16166: struct _Variant_storage +16166: { +16166: constexpr +16166: _Variant_storage() +16166: : _M_index(static_cast<__index_type>(variant_npos)) +16166: { } +16166: +16166: template +16166: constexpr +16166: _Variant_storage(in_place_index_t<_Np>, _Args&&... __args) +16166: : _M_u(in_place_index<_Np>, std::forward<_Args>(__args)...), +16166: _M_index{_Np} +16166: { } +16166: +16166: constexpr void +16166: _M_reset() noexcept +16166: { _M_index = static_cast<__index_type>(variant_npos); } +16166: +16166: constexpr bool +16166: _M_valid() const noexcept +16166: { +16166: if constexpr (__variant::__never_valueless<_Types...>()) +16166: return true; +16166: +16166: +16166: +16166: +16166: +16166: +16166: return this->_M_index != static_cast<__index_type>(variant_npos); +16166: } +16166: +16166: _Variadic_union _M_u; +16166: using __index_type = __select_index<_Types...>; +16166: __index_type _M_index; +16166: }; +16166: +16166: +16166: template +16166: +16166: inline void +16166: __emplace(_Variant_storage<_Triv, _Types...>& __v, _Args&&... __args) +16166: { +16166: __v._M_reset(); +16166: auto* __addr = __variant::__construct_n<_Np>(__v._M_u); +16166: std::_Construct(__addr, in_place_index<0>, +16166: std::forward<_Args>(__args)...); +16166: +16166: __v._M_index = _Np; +16166: } +16166: +16166: template +16166: using _Variant_storage_alias = +16166: _Variant_storage<_Traits<_Types...>::_S_trivial_dtor, _Types...>; +16166: +16166: +16166: +16166: +16166: template +16166: struct _Copy_ctor_base : _Variant_storage_alias<_Types...> +16166: { +16166: using _Base = _Variant_storage_alias<_Types...>; +16166: using _Base::_Base; +16166: +16166: +16166: _Copy_ctor_base(const _Copy_ctor_base& __rhs) +16166: noexcept(_Traits<_Types...>::_S_nothrow_copy_ctor) +16166: { +16166: __variant::__raw_idx_visit( +16166: [this](auto&& __rhs_mem, auto __rhs_index) mutable +16166: { +16166: constexpr size_t __j = __rhs_index; +16166: if constexpr (__j != variant_npos) +16166: std::_Construct(std::__addressof(this->_M_u), +16166: in_place_index<__j>, __rhs_mem); +16166: }, __variant_cast<_Types...>(__rhs)); +16166: this->_M_index = __rhs._M_index; +16166: } +16166: +16166: _Copy_ctor_base(_Copy_ctor_base&&) = default; +16166: _Copy_ctor_base& operator=(const _Copy_ctor_base&) = default; +16166: _Copy_ctor_base& operator=(_Copy_ctor_base&&) = default; +16166: }; +16166: +16166: template +16166: struct _Copy_ctor_base : _Variant_storage_alias<_Types...> +16166: { +16166: using _Base = _Variant_storage_alias<_Types...>; +16166: using _Base::_Base; +16166: }; +16166: +16166: template +16166: using _Copy_ctor_alias = +16166: _Copy_ctor_base<_Traits<_Types...>::_S_trivial_copy_ctor, _Types...>; +16166: +16166: template +16166: struct _Move_ctor_base : _Copy_ctor_alias<_Types...> +16166: { +16166: using _Base = _Copy_ctor_alias<_Types...>; +16166: using _Base::_Base; +16166: +16166: +16166: _Move_ctor_base(_Move_ctor_base&& __rhs) +16166: noexcept(_Traits<_Types...>::_S_nothrow_move_ctor) +16166: { +16166: __variant::__raw_idx_visit( +16166: [this](auto&& __rhs_mem, auto __rhs_index) mutable +16166: { +16166: constexpr size_t __j = __rhs_index; +16166: if constexpr (__j != variant_npos) +16166: std::_Construct(std::__addressof(this->_M_u), +16166: in_place_index<__j>, +16166: std::forward(__rhs_mem)); +16166: }, __variant_cast<_Types...>(std::move(__rhs))); +16166: this->_M_index = __rhs._M_index; +16166: } +16166: +16166: _Move_ctor_base(const _Move_ctor_base&) = default; +16166: _Move_ctor_base& operator=(const _Move_ctor_base&) = default; +16166: _Move_ctor_base& operator=(_Move_ctor_base&&) = default; +16166: }; +16166: +16166: template +16166: struct _Move_ctor_base : _Copy_ctor_alias<_Types...> +16166: { +16166: using _Base = _Copy_ctor_alias<_Types...>; +16166: using _Base::_Base; +16166: }; +16166: +16166: template +16166: using _Move_ctor_alias = +16166: _Move_ctor_base<_Traits<_Types...>::_S_trivial_move_ctor, _Types...>; +16166: +16166: template +16166: struct _Copy_assign_base : _Move_ctor_alias<_Types...> +16166: { +16166: using _Base = _Move_ctor_alias<_Types...>; +16166: using _Base::_Base; +16166: +16166: +16166: _Copy_assign_base& +16166: operator=(const _Copy_assign_base& __rhs) +16166: noexcept(_Traits<_Types...>::_S_nothrow_copy_assign) +16166: { +16166: __variant::__raw_idx_visit( +16166: [this](auto&& __rhs_mem, auto __rhs_index) mutable +16166: { +16166: constexpr size_t __j = __rhs_index; +16166: if constexpr (__j == variant_npos) +16166: this->_M_reset(); +16166: else if (this->_M_index == __j) +16166: __variant::__get<__j>(*this) = __rhs_mem; +16166: else +16166: { +16166: using _Tj = typename _Nth_type<__j, _Types...>::type; +16166: if constexpr (is_nothrow_copy_constructible_v<_Tj> +16166: || !is_nothrow_move_constructible_v<_Tj>) +16166: __variant::__emplace<__j>(*this, __rhs_mem); +16166: else +16166: { +16166: using _Variant = variant<_Types...>; +16166: _Variant& __self = __variant_cast<_Types...>(*this); +16166: __self = _Variant(in_place_index<__j>, __rhs_mem); +16166: } +16166: } +16166: }, __variant_cast<_Types...>(__rhs)); +16166: return *this; +16166: } +16166: +16166: _Copy_assign_base(const _Copy_assign_base&) = default; +16166: _Copy_assign_base(_Copy_assign_base&&) = default; +16166: _Copy_assign_base& operator=(_Copy_assign_base&&) = default; +16166: }; +16166: +16166: template +16166: struct _Copy_assign_base : _Move_ctor_alias<_Types...> +16166: { +16166: using _Base = _Move_ctor_alias<_Types...>; +16166: using _Base::_Base; +16166: }; +16166: +16166: template +16166: using _Copy_assign_alias = +16166: _Copy_assign_base<_Traits<_Types...>::_S_trivial_copy_assign, _Types...>; +16166: +16166: template +16166: struct _Move_assign_base : _Copy_assign_alias<_Types...> +16166: { +16166: using _Base = _Copy_assign_alias<_Types...>; +16166: using _Base::_Base; +16166: +16166: +16166: _Move_assign_base& +16166: operator=(_Move_assign_base&& __rhs) +16166: noexcept(_Traits<_Types...>::_S_nothrow_move_assign) +16166: { +16166: __variant::__raw_idx_visit( +16166: [this](auto&& __rhs_mem, auto __rhs_index) mutable +16166: { +16166: constexpr size_t __j = __rhs_index; +16166: if constexpr (__j != variant_npos) +16166: { +16166: if (this->_M_index == __j) +16166: __variant::__get<__j>(*this) = std::move(__rhs_mem); +16166: else +16166: { +16166: using _Tj = typename _Nth_type<__j, _Types...>::type; +16166: if constexpr (is_nothrow_move_constructible_v<_Tj>) +16166: __variant::__emplace<__j>(*this, std::move(__rhs_mem)); +16166: else +16166: { +16166: using _Variant = variant<_Types...>; +16166: _Variant& __self = __variant_cast<_Types...>(*this); +16166: __self.template emplace<__j>(std::move(__rhs_mem)); +16166: } +16166: } +16166: } +16166: else +16166: this->_M_reset(); +16166: }, __variant_cast<_Types...>(__rhs)); +16166: return *this; +16166: } +16166: +16166: _Move_assign_base(const _Move_assign_base&) = default; +16166: _Move_assign_base(_Move_assign_base&&) = default; +16166: _Move_assign_base& operator=(const _Move_assign_base&) = default; +16166: }; +16166: +16166: template +16166: struct _Move_assign_base : _Copy_assign_alias<_Types...> +16166: { +16166: using _Base = _Copy_assign_alias<_Types...>; +16166: using _Base::_Base; +16166: }; +16166: +16166: template +16166: using _Move_assign_alias = +16166: _Move_assign_base<_Traits<_Types...>::_S_trivial_move_assign, _Types...>; +16166: +16166: template +16166: struct _Variant_base : _Move_assign_alias<_Types...> +16166: { +16166: using _Base = _Move_assign_alias<_Types...>; +16166: +16166: constexpr +16166: _Variant_base() noexcept(_Traits<_Types...>::_S_nothrow_default_ctor) +16166: : _Variant_base(in_place_index<0>) { } +16166: +16166: template +16166: constexpr explicit +16166: _Variant_base(in_place_index_t<_Np> __i, _Args&&... __args) +16166: : _Base(__i, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: _Variant_base(const _Variant_base&) = default; +16166: _Variant_base(_Variant_base&&) = default; +16166: _Variant_base& operator=(const _Variant_base&) = default; +16166: _Variant_base& operator=(_Variant_base&&) = default; +16166: }; +16166: +16166: template +16166: inline constexpr bool __exactly_once +16166: = std::__find_uniq_type_in_pack<_Tp, _Types...>() < sizeof...(_Types); +16166: +16166: +16166: template struct _Arr { _Ti _M_x[1]; }; +16166: +16166: +16166: template +16166: struct _Build_FUN +16166: { +16166: +16166: +16166: void _S_fun() = delete; +16166: }; +16166: +16166: +16166: template +16166: struct _Build_FUN<_Ind, _Tp, _Ti, +16166: void_t{{std::declval<_Tp>()}})>> +16166: { +16166: +16166: static integral_constant _S_fun(_Ti); +16166: }; +16166: +16166: template>> +16166: struct _Build_FUNs; +16166: +16166: template +16166: struct _Build_FUNs<_Tp, variant<_Ti...>, index_sequence<_Ind...>> +16166: : _Build_FUN<_Ind, _Tp, _Ti>... +16166: { +16166: using _Build_FUN<_Ind, _Tp, _Ti>::_S_fun...; +16166: }; +16166: +16166: +16166: +16166: template +16166: using _FUN_type +16166: = decltype(_Build_FUNs<_Tp, _Variant>::_S_fun(std::declval<_Tp>())); +16166: +16166: +16166: template +16166: inline constexpr size_t +16166: __accepted_index = variant_npos; +16166: +16166: template +16166: inline constexpr size_t +16166: __accepted_index<_Tp, _Variant, void_t<_FUN_type<_Tp, _Variant>>> +16166: = _FUN_type<_Tp, _Variant>::value; +16166: +16166: template> +16166: inline constexpr bool +16166: __extra_visit_slot_needed = false; +16166: +16166: template +16166: inline constexpr bool +16166: __extra_visit_slot_needed<__variant_cookie, _Var, variant<_Types...>> +16166: = !__variant::__never_valueless<_Types...>(); +16166: +16166: template +16166: inline constexpr bool +16166: __extra_visit_slot_needed<__variant_idx_cookie, _Var, variant<_Types...>> +16166: = !__variant::__never_valueless<_Types...>(); +16166: +16166: +16166: template +16166: struct _Multi_array; +16166: +16166: +16166: template +16166: struct _Multi_array<_Tp> +16166: { +16166: template +16166: struct __untag_result +16166: : false_type +16166: { using element_type = _Tp; }; +16166: +16166: #pragma GCC diagnostic push +16166: #pragma GCC diagnostic ignored "-Wignored-qualifiers" +16166: template +16166: struct __untag_result +16166: : false_type +16166: { using element_type = void(*)(_Args...); }; +16166: #pragma GCC diagnostic pop +16166: +16166: template +16166: struct __untag_result<__variant_cookie(*)(_Args...)> +16166: : false_type +16166: { using element_type = void(*)(_Args...); }; +16166: +16166: template +16166: struct __untag_result<__variant_idx_cookie(*)(_Args...)> +16166: : false_type +16166: { using element_type = void(*)(_Args...); }; +16166: +16166: template +16166: struct __untag_result<__deduce_visit_result<_Res>(*)(_Args...)> +16166: : true_type +16166: { using element_type = _Res(*)(_Args...); }; +16166: +16166: using __result_is_deduced = __untag_result<_Tp>; +16166: +16166: constexpr const typename __untag_result<_Tp>::element_type& +16166: _M_access() const +16166: { return _M_data; } +16166: +16166: typename __untag_result<_Tp>::element_type _M_data; +16166: }; +16166: +16166: +16166: template +16166: struct _Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...> +16166: { +16166: static constexpr size_t __index = +16166: sizeof...(_Variants) - sizeof...(__rest) - 1; +16166: +16166: using _Variant = typename _Nth_type<__index, _Variants...>::type; +16166: +16166: static constexpr int __do_cookie = +16166: __extra_visit_slot_needed<_Ret, _Variant> ? 1 : 0; +16166: +16166: using _Tp = _Ret(*)(_Visitor, _Variants...); +16166: +16166: template +16166: constexpr decltype(auto) +16166: _M_access(size_t __first_index, _Args... __rest_indices) const +16166: { +16166: return _M_arr[__first_index + __do_cookie] +16166: ._M_access(__rest_indices...); +16166: } +16166: +16166: _Multi_array<_Tp, __rest...> _M_arr[__first + __do_cookie]; +16166: }; +16166: # 949 "/usr/include/c++/14/variant" 3 +16166: template +16166: struct __gen_vtable_impl; +16166: # 959 "/usr/include/c++/14/variant" 3 +16166: template +16166: struct __gen_vtable_impl< +16166: _Multi_array<_Result_type (*)(_Visitor, _Variants...), __dimensions...>, +16166: std::index_sequence<__indices...>> +16166: { +16166: using _Next = +16166: remove_reference_t::type>; +16166: using _Array_type = +16166: _Multi_array<_Result_type (*)(_Visitor, _Variants...), +16166: __dimensions...>; +16166: +16166: static constexpr _Array_type +16166: _S_apply() +16166: { +16166: _Array_type __vtable{}; +16166: _S_apply_all_alts( +16166: __vtable, make_index_sequence>()); +16166: return __vtable; +16166: } +16166: +16166: template +16166: static constexpr void +16166: _S_apply_all_alts(_Array_type& __vtable, +16166: std::index_sequence<__var_indices...>) +16166: { +16166: if constexpr (__extra_visit_slot_needed<_Result_type, _Next>) +16166: (_S_apply_single_alt( +16166: __vtable._M_arr[__var_indices + 1], +16166: &(__vtable._M_arr[0])), ...); +16166: else +16166: (_S_apply_single_alt( +16166: __vtable._M_arr[__var_indices]), ...); +16166: } +16166: +16166: template +16166: static constexpr void +16166: _S_apply_single_alt(_Tp& __element, _Tp* __cookie_element = nullptr) +16166: { +16166: if constexpr (__do_cookie) +16166: { +16166: __element = __gen_vtable_impl< +16166: _Tp, +16166: std::index_sequence<__indices..., __index>>::_S_apply(); +16166: *__cookie_element = __gen_vtable_impl< +16166: _Tp, +16166: std::index_sequence<__indices..., variant_npos>>::_S_apply(); +16166: } +16166: else +16166: { +16166: auto __tmp_element = __gen_vtable_impl< +16166: remove_reference_t, +16166: std::index_sequence<__indices..., __index>>::_S_apply(); +16166: static_assert(is_same_v<_Tp, decltype(__tmp_element)>, +16166: "std::visit requires the visitor to have the same " +16166: "return type for all alternatives of a variant"); +16166: __element = __tmp_element; +16166: } +16166: } +16166: }; +16166: +16166: +16166: +16166: +16166: template +16166: struct __gen_vtable_impl< +16166: _Multi_array<_Result_type (*)(_Visitor, _Variants...)>, +16166: std::index_sequence<__indices...>> +16166: { +16166: using _Array_type = +16166: _Multi_array<_Result_type (*)(_Visitor, _Variants...)>; +16166: +16166: template +16166: static constexpr decltype(auto) +16166: __element_by_index_or_cookie(_Variant&& __var) noexcept +16166: { +16166: if constexpr (__index != variant_npos) +16166: return __variant::__get<__index>(std::forward<_Variant>(__var)); +16166: else +16166: return __variant_cookie{}; +16166: } +16166: +16166: static constexpr decltype(auto) +16166: __visit_invoke(_Visitor&& __visitor, _Variants... __vars) +16166: { +16166: if constexpr (is_same_v<_Result_type, __variant_idx_cookie>) +16166: +16166: +16166: std::__invoke(std::forward<_Visitor>(__visitor), +16166: __element_by_index_or_cookie<__indices>( +16166: std::forward<_Variants>(__vars))..., +16166: integral_constant()...); +16166: else if constexpr (is_same_v<_Result_type, __variant_cookie>) +16166: +16166: std::__invoke(std::forward<_Visitor>(__visitor), +16166: __element_by_index_or_cookie<__indices>( +16166: std::forward<_Variants>(__vars))...); +16166: else if constexpr (_Array_type::__result_is_deduced::value) +16166: +16166: return std::__invoke(std::forward<_Visitor>(__visitor), +16166: __element_by_index_or_cookie<__indices>( +16166: std::forward<_Variants>(__vars))...); +16166: else +16166: return std::__invoke_r<_Result_type>( +16166: std::forward<_Visitor>(__visitor), +16166: __variant::__get<__indices>(std::forward<_Variants>(__vars))...); +16166: } +16166: +16166: static constexpr auto +16166: _S_apply() +16166: { +16166: if constexpr (_Array_type::__result_is_deduced::value) +16166: { +16166: constexpr bool __visit_ret_type_mismatch = +16166: !is_same_v(), +16166: std::declval<_Variants>()...))>; +16166: if constexpr (__visit_ret_type_mismatch) +16166: { +16166: struct __cannot_match {}; +16166: return __cannot_match{}; +16166: } +16166: else +16166: return _Array_type{&__visit_invoke}; +16166: } +16166: else +16166: return _Array_type{&__visit_invoke}; +16166: } +16166: }; +16166: +16166: template +16166: struct __gen_vtable +16166: { +16166: using _Array_type = +16166: _Multi_array<_Result_type (*)(_Visitor, _Variants...), +16166: variant_size_v>...>; +16166: +16166: static constexpr _Array_type _S_vtable +16166: = __gen_vtable_impl<_Array_type, std::index_sequence<>>::_S_apply(); +16166: }; +16166: +16166: template +16166: struct _Base_dedup : public _Tp { }; +16166: +16166: template +16166: struct _Variant_hash_base; +16166: +16166: template +16166: struct _Variant_hash_base, +16166: std::index_sequence<__indices...>> +16166: : _Base_dedup<__indices, __poison_hash>>... { }; +16166: +16166: +16166: template())), +16166: typename _Tp = variant_alternative_t<_Np, remove_reference_t<_AsV>>> +16166: using __get_t +16166: = __conditional_t, _Tp&, _Tp&&>; +16166: +16166: +16166: template +16166: using __visit_result_t +16166: = invoke_result_t<_Visitor, __get_t<0, _Variants>...>; +16166: +16166: template +16166: constexpr inline bool __same_types = (is_same_v<_Tp, _Types> && ...); +16166: +16166: template +16166: constexpr bool __check_visitor_results(std::index_sequence<_Idxs...>) +16166: { +16166: return __same_types< +16166: invoke_result_t<_Visitor, __get_t<_Idxs, _Variant>>... +16166: >; +16166: } +16166: +16166: } +16166: } +16166: +16166: template +16166: constexpr bool +16166: holds_alternative(const variant<_Types...>& __v) noexcept +16166: { +16166: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +16166: "T must occur exactly once in alternatives"); +16166: return __v.index() == std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: } +16166: +16166: template +16166: constexpr _Tp& +16166: get(variant<_Types...>& __v) +16166: { +16166: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +16166: "T must occur exactly once in alternatives"); +16166: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: return std::get<__n>(__v); +16166: } +16166: +16166: template +16166: constexpr _Tp&& +16166: get(variant<_Types...>&& __v) +16166: { +16166: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +16166: "T must occur exactly once in alternatives"); +16166: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: return std::get<__n>(std::move(__v)); +16166: } +16166: +16166: template +16166: constexpr const _Tp& +16166: get(const variant<_Types...>& __v) +16166: { +16166: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +16166: "T must occur exactly once in alternatives"); +16166: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: return std::get<__n>(__v); +16166: } +16166: +16166: template +16166: constexpr const _Tp&& +16166: get(const variant<_Types...>&& __v) +16166: { +16166: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +16166: "T must occur exactly once in alternatives"); +16166: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: return std::get<__n>(std::move(__v)); +16166: } +16166: +16166: template +16166: constexpr add_pointer_t>> +16166: get_if(variant<_Types...>* __ptr) noexcept +16166: { +16166: using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>; +16166: static_assert(_Np < sizeof...(_Types), +16166: "The index must be in [0, number of alternatives)"); +16166: static_assert(!is_void_v<_Alternative_type>, "_Tp must not be void"); +16166: if (__ptr && __ptr->index() == _Np) +16166: return std::addressof(__detail::__variant::__get<_Np>(*__ptr)); +16166: return nullptr; +16166: } +16166: +16166: template +16166: constexpr +16166: add_pointer_t>> +16166: get_if(const variant<_Types...>* __ptr) noexcept +16166: { +16166: using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>; +16166: static_assert(_Np < sizeof...(_Types), +16166: "The index must be in [0, number of alternatives)"); +16166: static_assert(!is_void_v<_Alternative_type>, "_Tp must not be void"); +16166: if (__ptr && __ptr->index() == _Np) +16166: return std::addressof(__detail::__variant::__get<_Np>(*__ptr)); +16166: return nullptr; +16166: } +16166: +16166: template +16166: constexpr add_pointer_t<_Tp> +16166: get_if(variant<_Types...>* __ptr) noexcept +16166: { +16166: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +16166: "T must occur exactly once in alternatives"); +16166: static_assert(!is_void_v<_Tp>, "_Tp must not be void"); +16166: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: return std::get_if<__n>(__ptr); +16166: } +16166: +16166: template +16166: constexpr add_pointer_t +16166: get_if(const variant<_Types...>* __ptr) noexcept +16166: { +16166: static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +16166: "T must occur exactly once in alternatives"); +16166: static_assert(!is_void_v<_Tp>, "_Tp must not be void"); +16166: constexpr size_t __n = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: return std::get_if<__n>(__ptr); +16166: } +16166: +16166: struct monostate { }; +16166: # 1264 "/usr/include/c++/14/variant" 3 +16166: template constexpr bool operator <(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem < __rhs_mem; } else __ret = (__lhs.index() + 1) < (__rhs_index + 1); } else __ret = (__lhs.index() + 1) < (__rhs_index + 1); }, __rhs); return __ret; } +16166: template constexpr bool operator <=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem <= __rhs_mem; } else __ret = (__lhs.index() + 1) <= (__rhs_index + 1); } else __ret = (__lhs.index() + 1) <= (__rhs_index + 1); }, __rhs); return __ret; } +16166: template constexpr bool operator ==(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem == __rhs_mem; } else __ret = (__lhs.index() + 1) == (__rhs_index + 1); } else __ret = (__lhs.index() + 1) == (__rhs_index + 1); }, __rhs); return __ret; } +16166: template constexpr bool operator !=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem != __rhs_mem; } else __ret = (__lhs.index() + 1) != (__rhs_index + 1); } else __ret = (__lhs.index() + 1) != (__rhs_index + 1); }, __rhs); return __ret; } +16166: template constexpr bool operator >=(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem >= __rhs_mem; } else __ret = (__lhs.index() + 1) >= (__rhs_index + 1); } else __ret = (__lhs.index() + 1) >= (__rhs_index + 1); }, __rhs); return __ret; } +16166: template constexpr bool operator >(const variant<_Types...>& __lhs, const variant<_Types...>& __rhs) { bool __ret = true; __detail::__variant::__raw_idx_visit( [&__ret, &__lhs] (auto&& __rhs_mem, auto __rhs_index) mutable { if constexpr (__rhs_index != variant_npos) { if (__lhs.index() == __rhs_index) { auto& __this_mem = std::get<__rhs_index>(__lhs); __ret = __this_mem > __rhs_mem; } else __ret = (__lhs.index() + 1) > (__rhs_index + 1); } else __ret = (__lhs.index() + 1) > (__rhs_index + 1); }, __rhs); return __ret; } +16166: +16166: +16166: +16166: constexpr bool operator==(monostate, monostate) noexcept { return true; } +16166: # 1305 "/usr/include/c++/14/variant" 3 +16166: constexpr bool operator!=(monostate, monostate) noexcept { return false; } +16166: constexpr bool operator<(monostate, monostate) noexcept { return false; } +16166: constexpr bool operator>(monostate, monostate) noexcept { return false; } +16166: constexpr bool operator<=(monostate, monostate) noexcept { return true; } +16166: constexpr bool operator>=(monostate, monostate) noexcept { return true; } +16166: +16166: +16166: template +16166: constexpr __detail::__variant::__visit_result_t<_Visitor, _Variants...> +16166: visit(_Visitor&&, _Variants&&...); +16166: +16166: template +16166: +16166: inline enable_if_t<(is_move_constructible_v<_Types> && ...) +16166: && (is_swappable_v<_Types> && ...)> +16166: swap(variant<_Types...>& __lhs, variant<_Types...>& __rhs) +16166: noexcept(noexcept(__lhs.swap(__rhs))) +16166: { __lhs.swap(__rhs); } +16166: +16166: template +16166: enable_if_t && ...) +16166: && (is_swappable_v<_Types> && ...))> +16166: swap(variant<_Types...>&, variant<_Types...>&) = delete; +16166: +16166: class bad_variant_access : public exception +16166: { +16166: public: +16166: bad_variant_access() noexcept { } +16166: +16166: const char* what() const noexcept override +16166: { return _M_reason; } +16166: +16166: private: +16166: bad_variant_access(const char* __reason) noexcept : _M_reason(__reason) { } +16166: +16166: +16166: const char* _M_reason = "bad variant access"; +16166: +16166: friend void __throw_bad_variant_access(const char* __what); +16166: }; +16166: +16166: +16166: inline void +16166: __throw_bad_variant_access(const char* __what) +16166: { (throw (bad_variant_access(__what))); } +16166: +16166: inline void +16166: __throw_bad_variant_access(bool __valueless) +16166: { +16166: if (__valueless) [[__unlikely__]] +16166: __throw_bad_variant_access("std::get: variant is valueless"); +16166: else +16166: __throw_bad_variant_access("std::get: wrong index for variant"); +16166: } +16166: +16166: template +16166: class variant +16166: : private __detail::__variant::_Variant_base<_Types...>, +16166: private _Enable_copy_move< +16166: __detail::__variant::_Traits<_Types...>::_S_copy_ctor, +16166: __detail::__variant::_Traits<_Types...>::_S_copy_assign, +16166: __detail::__variant::_Traits<_Types...>::_S_move_ctor, +16166: __detail::__variant::_Traits<_Types...>::_S_move_assign, +16166: variant<_Types...>> +16166: { +16166: private: +16166: template +16166: friend decltype(auto) +16166: __variant_cast(_Tp&&); +16166: +16166: static_assert(sizeof...(_Types) > 0, +16166: "variant must have at least one alternative"); +16166: +16166: +16166: +16166: +16166: static_assert((std::is_object_v<_Types> && ...), +16166: "variant alternatives must be object types"); +16166: +16166: +16166: using _Base = __detail::__variant::_Variant_base<_Types...>; +16166: +16166: template +16166: static constexpr bool __not_self +16166: = !is_same_v<__remove_cvref_t<_Tp>, variant>; +16166: +16166: template +16166: static constexpr bool +16166: __exactly_once = __detail::__variant::__exactly_once<_Tp, _Types...>; +16166: +16166: template +16166: static constexpr size_t __accepted_index +16166: = __detail::__variant::__accepted_index<_Tp, variant>; +16166: +16166: template> +16166: using __to_type = typename _Nth_type<_Np, _Types...>::type; +16166: +16166: template>> +16166: using __accepted_type = __to_type<__accepted_index<_Tp>>; +16166: +16166: template +16166: static constexpr size_t __index_of +16166: = std::__find_uniq_type_in_pack<_Tp, _Types...>(); +16166: +16166: using _Traits = __detail::__variant::_Traits<_Types...>; +16166: +16166: template +16166: struct __is_in_place_tag : false_type { }; +16166: template +16166: struct __is_in_place_tag> : true_type { }; +16166: template +16166: struct __is_in_place_tag> : true_type { }; +16166: +16166: template +16166: static constexpr bool __not_in_place_tag +16166: = !__is_in_place_type_v<__remove_cvref_t<_Tp>> +16166: && !__is_in_place_index_v<__remove_cvref_t<_Tp>>; +16166: +16166: public: +16166: +16166: +16166: +16166: template, +16166: typename = enable_if_t>> +16166: constexpr +16166: variant() noexcept(is_nothrow_default_constructible_v<__to_type<0>>) +16166: { } +16166: +16166: +16166: variant(const variant& __rhs) = default; +16166: variant(variant&&) = default; +16166: variant& operator=(const variant&) = default; +16166: variant& operator=(variant&&) = default; +16166: ~variant() = default; +16166: +16166: template, +16166: typename = enable_if_t<__not_in_place_tag<_Tp>>, +16166: typename _Tj = __accepted_type<_Tp&&>, +16166: typename = enable_if_t<__exactly_once<_Tj> +16166: && is_constructible_v<_Tj, _Tp>>> +16166: constexpr +16166: variant(_Tp&& __t) +16166: noexcept(is_nothrow_constructible_v<_Tj, _Tp>) +16166: : variant(in_place_index<__accepted_index<_Tp>>, +16166: std::forward<_Tp>(__t)) +16166: { } +16166: +16166: template +16166: && is_constructible_v<_Tp, _Args...>>> +16166: constexpr explicit +16166: variant(in_place_type_t<_Tp>, _Args&&... __args) +16166: : variant(in_place_index<__index_of<_Tp>>, +16166: std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: && is_constructible_v<_Tp, +16166: initializer_list<_Up>&, _Args...>>> +16166: constexpr explicit +16166: variant(in_place_type_t<_Tp>, initializer_list<_Up> __il, +16166: _Args&&... __args) +16166: : variant(in_place_index<__index_of<_Tp>>, __il, +16166: std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template, +16166: typename = enable_if_t>> +16166: constexpr explicit +16166: variant(in_place_index_t<_Np>, _Args&&... __args) +16166: : _Base(in_place_index<_Np>, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template, +16166: typename = enable_if_t&, +16166: _Args...>>> +16166: constexpr explicit +16166: variant(in_place_index_t<_Np>, initializer_list<_Up> __il, +16166: _Args&&... __args) +16166: : _Base(in_place_index<_Np>, __il, std::forward<_Args>(__args)...) +16166: { } +16166: +16166: template +16166: +16166: enable_if_t<__exactly_once<__accepted_type<_Tp&&>> +16166: && is_constructible_v<__accepted_type<_Tp&&>, _Tp> +16166: && is_assignable_v<__accepted_type<_Tp&&>&, _Tp>, +16166: variant&> +16166: operator=(_Tp&& __rhs) +16166: noexcept(is_nothrow_assignable_v<__accepted_type<_Tp&&>&, _Tp> +16166: && is_nothrow_constructible_v<__accepted_type<_Tp&&>, _Tp>) +16166: { +16166: constexpr auto __index = __accepted_index<_Tp>; +16166: if (index() == __index) +16166: std::get<__index>(*this) = std::forward<_Tp>(__rhs); +16166: else +16166: { +16166: using _Tj = __accepted_type<_Tp&&>; +16166: if constexpr (is_nothrow_constructible_v<_Tj, _Tp> +16166: || !is_nothrow_move_constructible_v<_Tj>) +16166: this->emplace<__index>(std::forward<_Tp>(__rhs)); +16166: else +16166: +16166: +16166: this->emplace<__index>(_Tj(std::forward<_Tp>(__rhs))); +16166: } +16166: return *this; +16166: } +16166: +16166: template +16166: +16166: enable_if_t && __exactly_once<_Tp>, +16166: _Tp&> +16166: emplace(_Args&&... __args) +16166: { +16166: constexpr size_t __index = __index_of<_Tp>; +16166: return this->emplace<__index>(std::forward<_Args>(__args)...); +16166: } +16166: +16166: template +16166: +16166: enable_if_t&, _Args...> +16166: && __exactly_once<_Tp>, +16166: _Tp&> +16166: emplace(initializer_list<_Up> __il, _Args&&... __args) +16166: { +16166: constexpr size_t __index = __index_of<_Tp>; +16166: return this->emplace<__index>(__il, std::forward<_Args>(__args)...); +16166: } +16166: +16166: template +16166: +16166: enable_if_t, _Args...>, +16166: __to_type<_Np>&> +16166: emplace(_Args&&... __args) +16166: { +16166: namespace __variant = std::__detail::__variant; +16166: using type = typename _Nth_type<_Np, _Types...>::type; +16166: +16166: +16166: if constexpr (is_nothrow_constructible_v) +16166: { +16166: __variant::__emplace<_Np>(*this, std::forward<_Args>(__args)...); +16166: } +16166: else if constexpr (is_scalar_v) +16166: { +16166: +16166: const type __tmp(std::forward<_Args>(__args)...); +16166: +16166: __variant::__emplace<_Np>(*this, __tmp); +16166: } +16166: else if constexpr (__variant::_Never_valueless_alt() +16166: && _Traits::_S_move_assign) +16166: { +16166: +16166: variant __tmp(in_place_index<_Np>, +16166: std::forward<_Args>(__args)...); +16166: +16166: *this = std::move(__tmp); +16166: } +16166: else +16166: { +16166: +16166: +16166: __variant::__emplace<_Np>(*this, std::forward<_Args>(__args)...); +16166: } +16166: return std::get<_Np>(*this); +16166: } +16166: +16166: template +16166: +16166: enable_if_t, +16166: initializer_list<_Up>&, _Args...>, +16166: __to_type<_Np>&> +16166: emplace(initializer_list<_Up> __il, _Args&&... __args) +16166: { +16166: namespace __variant = std::__detail::__variant; +16166: using type = typename _Nth_type<_Np, _Types...>::type; +16166: +16166: +16166: if constexpr (is_nothrow_constructible_v&, +16166: _Args...>) +16166: { +16166: __variant::__emplace<_Np>(*this, __il, +16166: std::forward<_Args>(__args)...); +16166: } +16166: else if constexpr (__variant::_Never_valueless_alt() +16166: && _Traits::_S_move_assign) +16166: { +16166: +16166: variant __tmp(in_place_index<_Np>, __il, +16166: std::forward<_Args>(__args)...); +16166: +16166: *this = std::move(__tmp); +16166: } +16166: else +16166: { +16166: +16166: +16166: __variant::__emplace<_Np>(*this, __il, +16166: std::forward<_Args>(__args)...); +16166: } +16166: return std::get<_Np>(*this); +16166: } +16166: +16166: template +16166: enable_if_t emplace(_Args&&...) = delete; +16166: +16166: template +16166: enable_if_t> emplace(_Args&&...) = delete; +16166: +16166: constexpr bool valueless_by_exception() const noexcept +16166: { return !this->_M_valid(); } +16166: +16166: constexpr size_t index() const noexcept +16166: { +16166: using __index_type = typename _Base::__index_type; +16166: if constexpr (__detail::__variant::__never_valueless<_Types...>()) +16166: return this->_M_index; +16166: else if constexpr (sizeof...(_Types) <= __index_type(-1) / 2) +16166: return make_signed_t<__index_type>(this->_M_index); +16166: else +16166: return size_t(__index_type(this->_M_index + 1)) - 1; +16166: } +16166: +16166: +16166: void +16166: swap(variant& __rhs) +16166: noexcept((__is_nothrow_swappable<_Types>::value && ...) +16166: && is_nothrow_move_constructible_v) +16166: { +16166: static_assert((is_move_constructible_v<_Types> && ...)); +16166: +16166: +16166: if (__rhs.valueless_by_exception()) [[__unlikely__]] +16166: { +16166: if (!this->valueless_by_exception()) [[__likely__]] +16166: __rhs.swap(*this); +16166: return; +16166: } +16166: +16166: namespace __variant = __detail::__variant; +16166: +16166: __variant::__raw_idx_visit( +16166: [this, &__rhs](auto&& __rhs_mem, auto __rhs_index) mutable +16166: { +16166: constexpr size_t __j = __rhs_index; +16166: if constexpr (__j != variant_npos) +16166: { +16166: if (this->index() == __j) +16166: { +16166: using std::swap; +16166: swap(std::get<__j>(*this), __rhs_mem); +16166: } +16166: else +16166: { +16166: auto __tmp(std::move(__rhs_mem)); +16166: +16166: if constexpr (_Traits::_S_trivial_move_assign) +16166: __rhs = std::move(*this); +16166: else +16166: __variant::__raw_idx_visit( +16166: [&__rhs](auto&& __this_mem, auto __this_index) mutable +16166: { +16166: constexpr size_t __k = __this_index; +16166: if constexpr (__k != variant_npos) +16166: __variant::__emplace<__k>(__rhs, +16166: std::move(__this_mem)); +16166: }, *this); +16166: +16166: __variant::__emplace<__j>(*this, std::move(__tmp)); +16166: } +16166: } +16166: }, __rhs); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: private: +16166: template +16166: friend constexpr decltype(auto) +16166: __detail::__variant::__get(_Vp&& __v) noexcept; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: template friend constexpr bool operator <(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +16166: template friend constexpr bool operator <=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +16166: template friend constexpr bool operator ==(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +16166: template friend constexpr bool operator !=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +16166: template friend constexpr bool operator >=(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +16166: template friend constexpr bool operator >(const variant<_Tp...>& __lhs, const variant<_Tp...>& __rhs); +16166: +16166: +16166: }; +16166: +16166: template +16166: constexpr variant_alternative_t<_Np, variant<_Types...>>& +16166: get(variant<_Types...>& __v) +16166: { +16166: static_assert(_Np < sizeof...(_Types), +16166: "The index must be in [0, number of alternatives)"); +16166: if (__v.index() != _Np) +16166: __throw_bad_variant_access(__v.valueless_by_exception()); +16166: return __detail::__variant::__get<_Np>(__v); +16166: } +16166: +16166: template +16166: constexpr variant_alternative_t<_Np, variant<_Types...>>&& +16166: get(variant<_Types...>&& __v) +16166: { +16166: static_assert(_Np < sizeof...(_Types), +16166: "The index must be in [0, number of alternatives)"); +16166: if (__v.index() != _Np) +16166: __throw_bad_variant_access(__v.valueless_by_exception()); +16166: return __detail::__variant::__get<_Np>(std::move(__v)); +16166: } +16166: +16166: template +16166: constexpr const variant_alternative_t<_Np, variant<_Types...>>& +16166: get(const variant<_Types...>& __v) +16166: { +16166: static_assert(_Np < sizeof...(_Types), +16166: "The index must be in [0, number of alternatives)"); +16166: if (__v.index() != _Np) +16166: __throw_bad_variant_access(__v.valueless_by_exception()); +16166: return __detail::__variant::__get<_Np>(__v); +16166: } +16166: +16166: template +16166: constexpr const variant_alternative_t<_Np, variant<_Types...>>&& +16166: get(const variant<_Types...>&& __v) +16166: { +16166: static_assert(_Np < sizeof...(_Types), +16166: "The index must be in [0, number of alternatives)"); +16166: if (__v.index() != _Np) +16166: __throw_bad_variant_access(__v.valueless_by_exception()); +16166: return __detail::__variant::__get<_Np>(std::move(__v)); +16166: } +16166: +16166: +16166: template +16166: constexpr decltype(auto) +16166: __do_visit(_Visitor&& __visitor, _Variants&&... __variants) +16166: { +16166: +16166: if constexpr (sizeof...(_Variants) == 0) +16166: { +16166: if constexpr (is_void_v<_Result_type>) +16166: return (void) std::forward<_Visitor>(__visitor)(); +16166: else +16166: return std::forward<_Visitor>(__visitor)(); +16166: } +16166: else +16166: { +16166: constexpr size_t __max = 11; +16166: +16166: +16166: using _V0 = typename _Nth_type<0, _Variants...>::type; +16166: +16166: constexpr auto __n = variant_size_v>; +16166: +16166: if constexpr (sizeof...(_Variants) > 1 || __n > __max) +16166: { +16166: +16166: constexpr auto& __vtable = __detail::__variant::__gen_vtable< +16166: _Result_type, _Visitor&&, _Variants&&...>::_S_vtable; +16166: +16166: auto __func_ptr = __vtable._M_access(__variants.index()...); +16166: return (*__func_ptr)(std::forward<_Visitor>(__visitor), +16166: std::forward<_Variants>(__variants)...); +16166: } +16166: else +16166: { +16166: +16166: _V0& __v0 +16166: = [](_V0& __v, ...) -> _V0& { return __v; }(__variants...); +16166: +16166: using __detail::__variant::_Multi_array; +16166: using __detail::__variant::__gen_vtable_impl; +16166: using _Ma = _Multi_array<_Result_type (*)(_Visitor&&, _V0&&)>; +16166: # 1817 "/usr/include/c++/14/variant" 3 +16166: switch (__v0.index()) +16166: { +16166: case 0: { if constexpr (0 < __n) { return __gen_vtable_impl<_Ma, index_sequence<0>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 1: { if constexpr (1 < __n) { return __gen_vtable_impl<_Ma, index_sequence<1>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 2: { if constexpr (2 < __n) { return __gen_vtable_impl<_Ma, index_sequence<2>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 3: { if constexpr (3 < __n) { return __gen_vtable_impl<_Ma, index_sequence<3>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 4: { if constexpr (4 < __n) { return __gen_vtable_impl<_Ma, index_sequence<4>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 5: { if constexpr (5 < __n) { return __gen_vtable_impl<_Ma, index_sequence<5>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 6: { if constexpr (6 < __n) { return __gen_vtable_impl<_Ma, index_sequence<6>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 7: { if constexpr (7 < __n) { return __gen_vtable_impl<_Ma, index_sequence<7>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 8: { if constexpr (8 < __n) { return __gen_vtable_impl<_Ma, index_sequence<8>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 9: { if constexpr (9 < __n) { return __gen_vtable_impl<_Ma, index_sequence<9>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case 10: { if constexpr (10 < __n) { return __gen_vtable_impl<_Ma, index_sequence<10>>:: __visit_invoke(std::forward<_Visitor>(__visitor), std::forward<_V0>(__v0)); } else __builtin_unreachable(); } +16166: case variant_npos: +16166: using __detail::__variant::__variant_idx_cookie; +16166: using __detail::__variant::__variant_cookie; +16166: if constexpr (is_same_v<_Result_type, __variant_idx_cookie> +16166: || is_same_v<_Result_type, __variant_cookie>) +16166: { +16166: using _Npos = index_sequence; +16166: return __gen_vtable_impl<_Ma, _Npos>:: +16166: __visit_invoke(std::forward<_Visitor>(__visitor), +16166: std::forward<_V0>(__v0)); +16166: } +16166: else +16166: __builtin_unreachable(); +16166: default: +16166: __builtin_unreachable(); +16166: } +16166: +16166: +16166: } +16166: } +16166: } +16166: +16166: +16166: template +16166: constexpr __detail::__variant::__visit_result_t<_Visitor, _Variants...> +16166: visit(_Visitor&& __visitor, _Variants&&... __variants) +16166: { +16166: namespace __variant = std::__detail::__variant; +16166: +16166: if ((__variant::__as(__variants).valueless_by_exception() || ...)) +16166: __throw_bad_variant_access("std::visit: variant is valueless"); +16166: +16166: using _Result_type +16166: = __detail::__variant::__visit_result_t<_Visitor, _Variants...>; +16166: +16166: using _Tag = __detail::__variant::__deduce_visit_result<_Result_type>; +16166: +16166: if constexpr (sizeof...(_Variants) == 1) +16166: { +16166: using _Vp = decltype(__variant::__as(std::declval<_Variants>()...)); +16166: +16166: constexpr bool __visit_rettypes_match = __detail::__variant:: +16166: __check_visitor_results<_Visitor, _Vp>( +16166: make_index_sequence>>()); +16166: if constexpr (!__visit_rettypes_match) +16166: { +16166: static_assert(__visit_rettypes_match, +16166: "std::visit requires the visitor to have the same " +16166: "return type for all alternatives of a variant"); +16166: return; +16166: } +16166: else +16166: return std::__do_visit<_Tag>( +16166: std::forward<_Visitor>(__visitor), +16166: static_cast<_Vp>(__variants)...); +16166: } +16166: else +16166: return std::__do_visit<_Tag>( +16166: std::forward<_Visitor>(__visitor), +16166: __variant::__as(std::forward<_Variants>(__variants))...); +16166: } +16166: # 1908 "/usr/include/c++/14/variant" 3 +16166: template +16166: struct __variant_hash_call_base_impl +16166: { +16166: size_t +16166: operator()(const variant<_Types...>& __t) const +16166: noexcept((is_nothrow_invocable_v>, _Types> && ...)) +16166: { +16166: size_t __ret; +16166: __detail::__variant::__raw_visit( +16166: [&__t, &__ret](auto&& __t_mem) mutable +16166: { +16166: using _Type = __remove_cvref_t; +16166: if constexpr (!is_same_v<_Type, +16166: __detail::__variant::__variant_cookie>) +16166: __ret = std::hash{}(__t.index()) +16166: + std::hash<_Type>{}(__t_mem); +16166: else +16166: __ret = std::hash{}(__t.index()); +16166: }, __t); +16166: return __ret; +16166: } +16166: }; +16166: +16166: template +16166: struct __variant_hash_call_base_impl {}; +16166: +16166: template +16166: using __variant_hash_call_base = +16166: __variant_hash_call_base_impl<(__poison_hash>:: +16166: __enable_hash_call &&...), _Types...>; +16166: +16166: +16166: template +16166: struct hash> +16166: : private __detail::__variant::_Variant_hash_base< +16166: variant<_Types...>, std::index_sequence_for<_Types...>>, +16166: public __variant_hash_call_base<_Types...> +16166: { +16166: using result_type [[__deprecated__]] = size_t; +16166: using argument_type [[__deprecated__]] = variant<_Types...>; +16166: }; +16166: +16166: template<> +16166: struct hash +16166: { +16166: using result_type [[__deprecated__]] = size_t; +16166: using argument_type [[__deprecated__]] = monostate; +16166: +16166: size_t +16166: operator()(const monostate&) const noexcept +16166: { +16166: constexpr size_t __magic_monostate_hash = -7777; +16166: return __magic_monostate_hash; +16166: } +16166: }; +16166: +16166: template +16166: struct __is_fast_hash>> +16166: : bool_constant<(__is_fast_hash<_Types>::value && ...)> +16166: { }; +16166: +16166: +16166: } +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: class Logger; +16166: # 53 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: class MergeOperator : public Customizable { +16166: public: +16166: virtual ~MergeOperator() {} +16166: static const char* Type() { return "MergeOperator"; } +16166: static Status CreateFromString(const ConfigOptions& opts, +16166: const std::string& id, +16166: std::shared_ptr* result); +16166: # 79 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: virtual bool FullMerge(const Slice& , const Slice* , +16166: const std::deque& , +16166: std::string* , Logger* ) const { +16166: +16166: +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 3 4 +16166: (static_cast ( +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: false +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: "false" +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 83 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: ; +16166: return false; +16166: } +16166: +16166: struct MergeOperationInput { +16166: +16166: explicit MergeOperationInput(const Slice& _key, +16166: const Slice* _existing_value, +16166: const std::vector& _operand_list, +16166: Logger* _logger) +16166: : key(_key), +16166: existing_value(_existing_value), +16166: operand_list(_operand_list), +16166: logger(_logger) {} +16166: +16166: +16166: const Slice& key; +16166: +16166: +16166: const Slice* existing_value; +16166: +16166: const std::vector& operand_list; +16166: +16166: +16166: Logger* logger; +16166: }; +16166: +16166: enum class OpFailureScope { +16166: kDefault, +16166: kTryMerge, +16166: kMustMerge, +16166: kOpFailureScopeMax, +16166: }; +16166: +16166: struct MergeOperationOutput { +16166: explicit MergeOperationOutput(std::string& _new_value, +16166: Slice& _existing_operand) +16166: : new_value(_new_value), existing_operand(_existing_operand) {} +16166: +16166: +16166: std::string& new_value; +16166: +16166: +16166: +16166: Slice& existing_operand; +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: OpFailureScope op_failure_scope = OpFailureScope::kDefault; +16166: }; +16166: # 161 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: virtual bool FullMergeV2(const MergeOperationInput& merge_in, +16166: MergeOperationOutput* merge_out) const; +16166: +16166: struct MergeOperationInputV3 { +16166: using ExistingValue = std::variant; +16166: using OperandList = std::vector; +16166: +16166: explicit MergeOperationInputV3(const Slice& _key, +16166: ExistingValue&& _existing_value, +16166: const OperandList& _operand_list, +16166: Logger* _logger) +16166: : key(_key), +16166: existing_value(std::move(_existing_value)), +16166: operand_list(_operand_list), +16166: logger(_logger) {} +16166: +16166: +16166: const Slice& key; +16166: +16166: +16166: +16166: ExistingValue existing_value; +16166: +16166: const OperandList& operand_list; +16166: +16166: Logger* logger; +16166: }; +16166: +16166: struct MergeOperationOutputV3 { +16166: using NewColumns = std::vector>; +16166: using NewValue = std::variant; +16166: +16166: +16166: +16166: +16166: NewValue new_value; +16166: +16166: OpFailureScope op_failure_scope = OpFailureScope::kDefault; +16166: }; +16166: # 209 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: virtual bool FullMergeV3(const MergeOperationInputV3& merge_in, +16166: MergeOperationOutputV3* merge_out) const; +16166: # 243 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: virtual bool PartialMerge(const Slice& , const Slice& , +16166: const Slice& , +16166: std::string* , +16166: Logger* ) const { +16166: return false; +16166: } +16166: # 271 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: virtual bool PartialMergeMulti(const Slice& key, +16166: const std::deque& operand_list, +16166: std::string* new_value, Logger* logger) const; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: const char* Name() const override = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool AllowSingleOperand() const { return false; } +16166: # 300 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: virtual bool ShouldMerge(const std::vector& ) const { +16166: return false; +16166: } +16166: }; +16166: +16166: +16166: class AssociativeMergeOperator : public MergeOperator { +16166: public: +16166: ~AssociativeMergeOperator() override {} +16166: # 323 "/build/reproducible-path/rocksdb-9.10.0/include/rocksdb/merge_operator.h" +16166: virtual bool Merge(const Slice& key, const Slice* existing_value, +16166: const Slice& value, std::string* new_value, +16166: Logger* logger) const = 0; +16166: +16166: private: +16166: +16166: bool FullMergeV2(const MergeOperationInput& merge_in, +16166: MergeOperationOutput* merge_out) const override; +16166: +16166: bool PartialMerge(const Slice& key, const Slice& left_operand, +16166: const Slice& right_operand, std::string* new_value, +16166: Logger* logger) const override; +16166: }; +16166: +16166: } +16166: # 19 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 2 +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Comparator; +16166: class Iterator; +16166: class Logger; +16166: class MergeOperator; +16166: class Statistics; +16166: class SystemClock; +16166: class BlobFetcher; +16166: class PrefetchBufferCollection; +16166: struct CompactionIterationStats; +16166: +16166: class MergeHelper { +16166: public: +16166: MergeHelper(Env* env, const Comparator* user_comparator, +16166: const MergeOperator* user_merge_operator, +16166: const CompactionFilter* compaction_filter, Logger* logger, +16166: bool assert_valid_internal_key, SequenceNumber latest_snapshot, +16166: const SnapshotChecker* snapshot_checker = nullptr, int level = 0, +16166: Statistics* stats = nullptr, +16166: const std::atomic* shutting_down = nullptr); +16166: # 55 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: struct NoBaseValueTag {}; +16166: static constexpr NoBaseValueTag kNoBaseValue{}; +16166: +16166: struct PlainBaseValueTag {}; +16166: static constexpr PlainBaseValueTag kPlainBaseValue{}; +16166: +16166: struct WideBaseValueTag {}; +16166: static constexpr WideBaseValueTag kWideBaseValue{}; +16166: +16166: template +16166: static Status TimedFullMerge(const MergeOperator* merge_operator, +16166: const Slice& key, NoBaseValueTag, +16166: const std::vector& operands, +16166: Logger* logger, Statistics* statistics, +16166: SystemClock* clock, bool update_num_ops_stats, +16166: MergeOperator::OpFailureScope* op_failure_scope, +16166: ResultTs... results) { +16166: MergeOperator::MergeOperationInputV3::ExistingValue existing_value; +16166: +16166: return TimedFullMergeImpl( +16166: merge_operator, key, std::move(existing_value), operands, logger, +16166: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +16166: } +16166: +16166: template +16166: static Status TimedFullMerge( +16166: const MergeOperator* merge_operator, const Slice& key, PlainBaseValueTag, +16166: const Slice& value, const std::vector& operands, Logger* logger, +16166: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +16166: MergeOperator::OpFailureScope* op_failure_scope, ResultTs... results) { +16166: MergeOperator::MergeOperationInputV3::ExistingValue existing_value(value); +16166: +16166: return TimedFullMergeImpl( +16166: merge_operator, key, std::move(existing_value), operands, logger, +16166: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +16166: } +16166: +16166: template +16166: static Status TimedFullMerge( +16166: const MergeOperator* merge_operator, const Slice& key, WideBaseValueTag, +16166: const Slice& entity, const std::vector& operands, Logger* logger, +16166: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +16166: MergeOperator::OpFailureScope* op_failure_scope, ResultTs... results) { +16166: MergeOperator::MergeOperationInputV3::ExistingValue existing_value; +16166: +16166: Slice entity_copy(entity); +16166: WideColumns existing_columns; +16166: +16166: const Status s = +16166: WideColumnSerialization::Deserialize(entity_copy, existing_columns); +16166: if (!s.ok()) { +16166: return s; +16166: } +16166: +16166: existing_value = std::move(existing_columns); +16166: +16166: return TimedFullMergeImpl( +16166: merge_operator, key, std::move(existing_value), operands, logger, +16166: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +16166: } +16166: +16166: template +16166: static Status TimedFullMerge(const MergeOperator* merge_operator, +16166: const Slice& key, WideBaseValueTag, +16166: const WideColumns& columns, +16166: const std::vector& operands, +16166: Logger* logger, Statistics* statistics, +16166: SystemClock* clock, bool update_num_ops_stats, +16166: MergeOperator::OpFailureScope* op_failure_scope, +16166: ResultTs... results) { +16166: MergeOperator::MergeOperationInputV3::ExistingValue existing_value(columns); +16166: +16166: return TimedFullMergeImpl( +16166: merge_operator, key, std::move(existing_value), operands, logger, +16166: statistics, clock, update_num_ops_stats, op_failure_scope, results...); +16166: } +16166: # 168 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: Status MergeUntil(InternalIterator* iter, +16166: CompactionRangeDelAggregator* range_del_agg, +16166: const SequenceNumber stop_before, const bool at_bottom, +16166: const bool allow_data_in_errors, +16166: const BlobFetcher* blob_fetcher, +16166: const std::string* const full_history_ts_low, +16166: PrefetchBufferCollection* prefetch_buffers, +16166: CompactionIterationStats* c_iter_stats); +16166: +16166: +16166: +16166: +16166: +16166: +16166: CompactionFilter::Decision FilterMerge(const Slice& user_key, +16166: const Slice& value_slice); +16166: # 210 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: const std::deque& keys() const { return keys_; } +16166: const std::vector& values() const { +16166: return merge_context_.GetOperands(); +16166: } +16166: uint64_t TotalFilterTime() const { return total_filter_time_; } +16166: bool HasOperator() const { return user_merge_operator_ != nullptr; } +16166: +16166: +16166: +16166: +16166: bool FilteredUntil(Slice* skip_until) const { +16166: if (!has_compaction_filter_skip_until_) { +16166: return false; +16166: } +16166: +16166: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: (static_cast ( +16166: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: compaction_filter_ != nullptr +16166: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: "compaction_filter_ != nullptr" +16166: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 224 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: ; +16166: +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: (static_cast ( +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: skip_until != nullptr +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: "skip_until != nullptr" +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 225 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: ; +16166: +16166: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: (static_cast ( +16166: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: compaction_filter_skip_until_.Valid() +16166: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: "compaction_filter_skip_until_.Valid()" +16166: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 226 "/build/reproducible-path/rocksdb-9.10.0/db/merge_helper.h" +16166: ; +16166: *skip_until = compaction_filter_skip_until_.Encode(); +16166: return true; +16166: } +16166: +16166: private: +16166: Env* env_; +16166: SystemClock* clock_; +16166: const Comparator* user_comparator_; +16166: const MergeOperator* user_merge_operator_; +16166: const CompactionFilter* compaction_filter_; +16166: const std::atomic* shutting_down_; +16166: Logger* logger_; +16166: bool assert_valid_internal_key_; +16166: bool allow_single_operand_; +16166: SequenceNumber latest_snapshot_; +16166: const SnapshotChecker* const snapshot_checker_; +16166: int level_; +16166: +16166: +16166: +16166: +16166: +16166: std::deque keys_; +16166: +16166: mutable MergeContext merge_context_; +16166: +16166: StopWatchNano filter_timer_; +16166: uint64_t total_filter_time_; +16166: Statistics* stats_; +16166: +16166: bool has_compaction_filter_skip_until_ = false; +16166: std::string compaction_filter_value_; +16166: InternalKey compaction_filter_skip_until_; +16166: +16166: bool IsShuttingDown() { +16166: +16166: return shutting_down_ && shutting_down_->load(std::memory_order_relaxed); +16166: } +16166: +16166: template +16166: static Status TimedFullMergeCommonImpl( +16166: const MergeOperator* merge_operator, const Slice& key, +16166: MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value, +16166: const std::vector& operands, Logger* logger, +16166: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +16166: MergeOperator::OpFailureScope* op_failure_scope, Visitor&& visitor); +16166: +16166: +16166: +16166: static Status TimedFullMergeImpl( +16166: const MergeOperator* merge_operator, const Slice& key, +16166: MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value, +16166: const std::vector& operands, Logger* logger, +16166: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +16166: MergeOperator::OpFailureScope* op_failure_scope, std::string* result, +16166: Slice* result_operand, ValueType* result_type); +16166: +16166: +16166: +16166: +16166: +16166: static Status TimedFullMergeImpl( +16166: const MergeOperator* merge_operator, const Slice& key, +16166: MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value, +16166: const std::vector& operands, Logger* logger, +16166: Statistics* statistics, SystemClock* clock, bool update_num_ops_stats, +16166: MergeOperator::OpFailureScope* op_failure_scope, +16166: std::string* result_value, PinnableWideColumns* result_entity); +16166: }; +16166: +16166: +16166: class MergeOutputIterator { +16166: public: +16166: +16166: explicit MergeOutputIterator(const MergeHelper* merge_helper); +16166: +16166: +16166: void SeekToFirst(); +16166: +16166: void Next(); +16166: +16166: Slice key() { return Slice(*it_keys_); } +16166: Slice value() { return Slice(*it_values_); } +16166: bool Valid() { return it_keys_ != merge_helper_->keys().rend(); } +16166: +16166: private: +16166: const MergeHelper* merge_helper_; +16166: std::deque::const_reverse_iterator it_keys_; +16166: std::vector::const_reverse_iterator it_values_; +16166: }; +16166: +16166: } +16166: # 22 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: +16166: # 31 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: namespace rocksdb { +16166: +16166: class Logger; +16166: # 42 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: class ConcurrentArena : public Allocator { +16166: public: +16166: +16166: +16166: +16166: +16166: explicit ConcurrentArena(size_t block_size = Arena::kMinBlockSize, +16166: AllocTracker* tracker = nullptr, +16166: size_t huge_page_size = 0); +16166: +16166: char* Allocate(size_t bytes) override { +16166: return AllocateImpl(bytes, false , +16166: [this, bytes]() { return arena_.Allocate(bytes); }); +16166: } +16166: +16166: char* AllocateAligned(size_t bytes, size_t huge_page_size = 0, +16166: Logger* logger = nullptr) override { +16166: size_t rounded_up = ((bytes - 1) | (sizeof(void*) - 1)) + 1; +16166: +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +16166: (static_cast ( +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: rounded_up >= bytes && rounded_up < bytes + sizeof(void*) && (rounded_up % sizeof(void*)) == 0 +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: "rounded_up >= bytes && rounded_up < bytes + sizeof(void*) && (rounded_up % sizeof(void*)) == 0" +16166: # 60 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: +16166: # 61 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: ; +16166: +16166: return AllocateImpl(rounded_up, huge_page_size != 0 , +16166: [this, rounded_up, huge_page_size, logger]() { +16166: return arena_.AllocateAligned(rounded_up, +16166: huge_page_size, logger); +16166: }); +16166: } +16166: +16166: size_t ApproximateMemoryUsage() const { +16166: std::unique_lock lock(arena_mutex_, std::defer_lock); +16166: lock.lock(); +16166: return arena_.ApproximateMemoryUsage() - ShardAllocatedAndUnused(); +16166: } +16166: +16166: size_t MemoryAllocatedBytes() const { +16166: return memory_allocated_bytes_.load(std::memory_order_relaxed); +16166: } +16166: +16166: size_t AllocatedAndUnused() const { +16166: return arena_allocated_and_unused_.load(std::memory_order_relaxed) + +16166: ShardAllocatedAndUnused(); +16166: } +16166: +16166: size_t IrregularBlockNum() const { +16166: return irregular_block_num_.load(std::memory_order_relaxed); +16166: } +16166: +16166: size_t BlockSize() const override { return arena_.BlockSize(); } +16166: +16166: private: +16166: struct Shard { +16166: char padding[40] ; +16166: mutable SpinMutex mutex; +16166: char* free_begin_; +16166: std::atomic allocated_and_unused_; +16166: +16166: Shard() : free_begin_(nullptr), allocated_and_unused_(0) {} +16166: }; +16166: +16166: static thread_local size_t tls_cpuid; +16166: +16166: char padding0[56] ; +16166: +16166: size_t shard_block_size_; +16166: +16166: CoreLocalArray shards_; +16166: +16166: Arena arena_; +16166: mutable SpinMutex arena_mutex_; +16166: std::atomic arena_allocated_and_unused_; +16166: std::atomic memory_allocated_bytes_; +16166: std::atomic irregular_block_num_; +16166: +16166: char padding1[56] ; +16166: +16166: Shard* Repick(); +16166: +16166: size_t ShardAllocatedAndUnused() const { +16166: size_t total = 0; +16166: for (size_t i = 0; i < shards_.Size(); ++i) { +16166: total += shards_.AccessAtCore(i)->allocated_and_unused_.load( +16166: std::memory_order_relaxed); +16166: } +16166: return total; +16166: } +16166: +16166: template +16166: char* AllocateImpl(size_t bytes, bool force_arena, const Func& func) { +16166: size_t cpu; +16166: +16166: +16166: +16166: +16166: +16166: std::unique_lock arena_lock(arena_mutex_, std::defer_lock); +16166: if (bytes > shard_block_size_ / 4 || force_arena || +16166: ((cpu = tls_cpuid) == 0 && +16166: !shards_.AccessAtCore(0)->allocated_and_unused_.load( +16166: std::memory_order_relaxed) && +16166: arena_lock.try_lock())) { +16166: if (!arena_lock.owns_lock()) { +16166: arena_lock.lock(); +16166: } +16166: auto rv = func(); +16166: Fixup(); +16166: return rv; +16166: } +16166: +16166: +16166: Shard* s = shards_.AccessAtCore(cpu & (shards_.Size() - 1)); +16166: if (!s->mutex.try_lock()) { +16166: s = Repick(); +16166: s->mutex.lock(); +16166: } +16166: std::unique_lock lock(s->mutex, std::adopt_lock); +16166: +16166: size_t avail = s->allocated_and_unused_.load(std::memory_order_relaxed); +16166: if (avail < bytes) { +16166: +16166: std::lock_guard reload_lock(arena_mutex_); +16166: +16166: +16166: +16166: auto exact = arena_allocated_and_unused_.load(std::memory_order_relaxed); +16166: +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +16166: (static_cast ( +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: exact == arena_.AllocatedAndUnused() +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: "exact == arena_.AllocatedAndUnused()" +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 166 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: ; +16166: +16166: if (exact >= bytes && arena_.IsInInlineBlock()) { +16166: # 177 "/build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.h" +16166: auto rv = func(); +16166: Fixup(); +16166: return rv; +16166: } +16166: +16166: avail = exact >= shard_block_size_ / 2 && exact < shard_block_size_ * 2 +16166: ? exact +16166: : shard_block_size_; +16166: s->free_begin_ = arena_.AllocateAligned(avail); +16166: Fixup(); +16166: } +16166: s->allocated_and_unused_.store(avail - bytes, std::memory_order_relaxed); +16166: +16166: char* rv; +16166: if ((bytes % sizeof(void*)) == 0) { +16166: +16166: rv = s->free_begin_; +16166: s->free_begin_ += bytes; +16166: } else { +16166: +16166: rv = s->free_begin_ + avail - bytes; +16166: } +16166: return rv; +16166: } +16166: +16166: void Fixup() { +16166: arena_allocated_and_unused_.store(arena_.AllocatedAndUnused(), +16166: std::memory_order_relaxed); +16166: memory_allocated_bytes_.store(arena_.MemoryAllocatedBytes(), +16166: std::memory_order_relaxed); +16166: irregular_block_num_.store(arena_.IrregularBlockNum(), +16166: std::memory_order_relaxed); +16166: } +16166: +16166: ConcurrentArena(const ConcurrentArena&) = delete; +16166: ConcurrentArena& operator=(const ConcurrentArena&) = delete; +16166: }; +16166: +16166: } +16166: # 28 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: +16166: +16166: +16166: +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/cast_util.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: template +16166: inline DestClass* static_cast_with_check(SrcClass* x) { +16166: DestClass* ret = static_cast(x); +16166: +16166: +16166: +16166: return ret; +16166: } +16166: +16166: template +16166: inline std::shared_ptr static_cast_with_check( +16166: std::shared_ptr&& x) { +16166: +16166: +16166: +16166: auto ret = std::static_pointer_cast(std::move(x)); +16166: +16166: +16166: +16166: return ret; +16166: } +16166: +16166: +16166: +16166: +16166: +16166: template +16166: inline To lossless_cast(From x) { +16166: using FromValue = typename std::remove_reference::type; +16166: static_assert( +16166: std::is_integral::value || std::is_enum::value, +16166: "Only works on integral types"); +16166: static_assert(std::is_integral::value || std::is_enum::value, +16166: "Only works on integral types"); +16166: static_assert(sizeof(To) >= sizeof(FromValue), "Must be lossless"); +16166: return static_cast(x); +16166: } +16166: +16166: +16166: +16166: +16166: template +16166: inline const std::initializer_list& List( +16166: const std::initializer_list& list) { +16166: return list; +16166: } +16166: +16166: +16166: +16166: template +16166: class UnownedPtr { +16166: public: +16166: UnownedPtr() = default; +16166: UnownedPtr(std::nullptr_t) {} +16166: UnownedPtr(T* ptr) : ptr_(ptr) {} +16166: UnownedPtr(const UnownedPtr&) = default; +16166: UnownedPtr(UnownedPtr&&) = default; +16166: UnownedPtr& operator=(const UnownedPtr&) = default; +16166: UnownedPtr& operator=(UnownedPtr&&) = default; +16166: +16166: T* get() const { return ptr_; } +16166: T* operator->() const { return ptr_; } +16166: T& operator*() const { return *ptr_; } +16166: operator bool() const { return ptr_ != nullptr; } +16166: +16166: private: +16166: T* ptr_ = nullptr; +16166: }; +16166: +16166: } +16166: # 34 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 18 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +16166: namespace rocksdb { +16166: +16166: class Slice; +16166: class Allocator; +16166: class Logger; +16166: # 36 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +16166: class DynamicBloom { +16166: public: +16166: # 47 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +16166: explicit DynamicBloom(Allocator* allocator, uint32_t total_bits, +16166: uint32_t num_probes = 6, size_t huge_page_tlb_size = 0, +16166: Logger* logger = nullptr); +16166: +16166: ~DynamicBloom() {} +16166: +16166: +16166: void Add(const Slice& key); +16166: +16166: +16166: void AddConcurrently(const Slice& key); +16166: +16166: +16166: void AddHash(uint32_t hash); +16166: +16166: +16166: void AddHashConcurrently(uint32_t hash); +16166: +16166: +16166: bool MayContain(const Slice& key) const; +16166: +16166: void MayContain(int num_keys, Slice* keys, bool* may_match) const; +16166: +16166: +16166: bool MayContainHash(uint32_t hash) const; +16166: +16166: void Prefetch(uint32_t h); +16166: +16166: private: +16166: +16166: +16166: uint32_t kLen; +16166: +16166: +16166: const uint32_t kNumDoubleProbes; +16166: +16166: std::atomic* data_; +16166: +16166: +16166: +16166: template +16166: void AddHash(uint32_t hash, const OrFunc& or_func); +16166: +16166: bool DoubleProbe(uint32_t h32, size_t a) const; +16166: }; +16166: +16166: inline void DynamicBloom::Add(const Slice& key) { AddHash(BloomHash(key)); } +16166: +16166: inline void DynamicBloom::AddConcurrently(const Slice& key) { +16166: AddHashConcurrently(BloomHash(key)); +16166: } +16166: +16166: inline void DynamicBloom::AddHash(uint32_t hash) { +16166: AddHash(hash, [](std::atomic* ptr, uint64_t mask) { +16166: ptr->store(ptr->load(std::memory_order_relaxed) | mask, +16166: std::memory_order_relaxed); +16166: }); +16166: } +16166: +16166: inline void DynamicBloom::AddHashConcurrently(uint32_t hash) { +16166: AddHash(hash, [](std::atomic* ptr, uint64_t mask) { +16166: +16166: +16166: +16166: +16166: +16166: if ((mask & ptr->load(std::memory_order_relaxed)) != mask) { +16166: ptr->fetch_or(mask, std::memory_order_relaxed); +16166: } +16166: }); +16166: } +16166: +16166: inline bool DynamicBloom::MayContain(const Slice& key) const { +16166: return (MayContainHash(BloomHash(key))); +16166: } +16166: +16166: inline void DynamicBloom::MayContain(int num_keys, Slice* keys, +16166: bool* may_match) const { +16166: std::array hashes; +16166: std::array byte_offsets; +16166: for (int i = 0; i < num_keys; ++i) { +16166: hashes[i] = BloomHash(keys[i]); +16166: size_t a = FastRange32(hashes[i], kLen); +16166: __builtin_prefetch(data_ + a, 0, 3); +16166: byte_offsets[i] = a; +16166: } +16166: +16166: for (int i = 0; i < num_keys; i++) { +16166: may_match[i] = DoubleProbe(hashes[i], byte_offsets[i]); +16166: } +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline void DynamicBloom::Prefetch(uint32_t h32) { +16166: size_t a = FastRange32(h32, kLen); +16166: __builtin_prefetch(data_ + a, 0, 3); +16166: } +16166: # 173 "/build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.h" +16166: inline bool DynamicBloom::MayContainHash(uint32_t h32) const { +16166: size_t a = FastRange32(h32, kLen); +16166: __builtin_prefetch(data_ + a, 0, 3); +16166: return DoubleProbe(h32, a); +16166: } +16166: +16166: inline bool DynamicBloom::DoubleProbe(uint32_t h32, size_t byte_offset) const { +16166: +16166: uint64_t h = 0x9e3779b97f4a7c13ULL * h32; +16166: for (unsigned i = 0;; ++i) { +16166: +16166: uint64_t mask = +16166: ((uint64_t)1 << (h & 63)) | ((uint64_t)1 << ((h >> 6) & 63)); +16166: uint64_t val = data_[byte_offset ^ i].load(std::memory_order_relaxed); +16166: if (i + 1 >= kNumDoubleProbes) { +16166: return (val & mask) == mask; +16166: } else if ((val & mask) != mask) { +16166: return false; +16166: } +16166: h = (h >> 12) | (h << 52); +16166: } +16166: } +16166: +16166: template +16166: inline void DynamicBloom::AddHash(uint32_t h32, const OrFunc& or_func) { +16166: size_t a = FastRange32(h32, kLen); +16166: __builtin_prefetch(data_ + a, 0, 3); +16166: +16166: uint64_t h = 0x9e3779b97f4a7c13ULL * h32; +16166: for (unsigned i = 0;; ++i) { +16166: +16166: uint64_t mask = +16166: ((uint64_t)1 << (h & 63)) | ((uint64_t)1 << ((h >> 6) & 63)); +16166: or_func(&data_[a ^ i], mask); +16166: if (i + 1 >= kNumDoubleProbes) { +16166: return; +16166: } +16166: h = (h >> 12) | (h << 52); +16166: } +16166: } +16166: +16166: } +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/util/hash_containers.h" 1 +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/util/hash_containers.h" +16166: +16166: # 38 "/build/reproducible-path/rocksdb-9.10.0/util/hash_containers.h" +16166: namespace rocksdb { +16166: +16166: template +16166: using UnorderedMap = std::unordered_map; +16166: +16166: template +16166: using UnorderedMapH = std::unordered_map; +16166: +16166: template +16166: using UnorderedSet = std::unordered_set; +16166: +16166: } +16166: # 37 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 2 +16166: +16166: namespace rocksdb { +16166: +16166: struct FlushJobInfo; +16166: class Mutex; +16166: class MemTableIterator; +16166: class MergeContext; +16166: class SystemClock; +16166: +16166: struct ImmutableMemTableOptions { +16166: explicit ImmutableMemTableOptions(const ImmutableOptions& ioptions, +16166: const MutableCFOptions& mutable_cf_options); +16166: size_t arena_block_size; +16166: uint32_t memtable_prefix_bloom_bits; +16166: size_t memtable_huge_page_size; +16166: bool memtable_whole_key_filtering; +16166: bool inplace_update_support; +16166: size_t inplace_update_num_locks; +16166: UpdateStatus (*inplace_callback)(char* existing_value, +16166: uint32_t* existing_value_size, +16166: Slice delta_value, +16166: std::string* merged_value); +16166: size_t max_successive_merges; +16166: bool strict_max_successive_merges; +16166: Statistics* statistics; +16166: MergeOperator* merge_operator; +16166: Logger* info_log; +16166: uint32_t protection_bytes_per_key; +16166: bool allow_data_in_errors; +16166: bool paranoid_memory_checks; +16166: }; +16166: +16166: +16166: +16166: +16166: struct MemTablePostProcessInfo { +16166: uint64_t data_size = 0; +16166: uint64_t num_entries = 0; +16166: uint64_t num_deletes = 0; +16166: uint64_t num_range_deletes = 0; +16166: }; +16166: +16166: using MultiGetRange = MultiGetContext::Range; +16166: # 106 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: class ReadOnlyMemTable { +16166: public: +16166: +16166: virtual ~ReadOnlyMemTable() = default; +16166: +16166: virtual const char* Name() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual size_t ApproximateMemoryUsage() = 0; +16166: +16166: +16166: virtual size_t MemoryAllocatedBytes() const = 0; +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: virtual void UniqueRandomSample(const uint64_t& target_sample_size, +16166: std::unordered_set* entries) = 0; +16166: # 153 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: virtual InternalIterator* NewIterator( +16166: const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping, Arena* arena, +16166: const SliceTransform* prefix_extractor, bool for_flush) = 0; +16166: +16166: +16166: +16166: +16166: virtual InternalIterator* NewTimestampStrippingIterator( +16166: const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping, Arena* arena, +16166: const SliceTransform* prefix_extractor, size_t ts_sz) = 0; +16166: # 176 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: virtual FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +16166: const ReadOptions& read_options, SequenceNumber read_seq, +16166: bool immutable_memtable) = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual FragmentedRangeTombstoneIterator* +16166: NewTimestampStrippingRangeTombstoneIterator(const ReadOptions& read_options, +16166: SequenceNumber read_seq, +16166: size_t ts_sz) = 0; +16166: # 221 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: virtual bool Get(const LookupKey& key, std::string* value, +16166: PinnableWideColumns* columns, std::string* timestamp, +16166: Status* s, MergeContext* merge_context, +16166: SequenceNumber* max_covering_tombstone_seq, +16166: SequenceNumber* seq, const ReadOptions& read_opts, +16166: bool immutable_memtable, ReadCallback* callback = nullptr, +16166: bool* is_blob_index = nullptr, bool do_merge = true) = 0; +16166: bool Get(const LookupKey& key, std::string* value, +16166: PinnableWideColumns* columns, std::string* timestamp, Status* s, +16166: MergeContext* merge_context, +16166: SequenceNumber* max_covering_tombstone_seq, +16166: const ReadOptions& read_opts, bool immutable_memtable, +16166: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +16166: bool do_merge = true) { +16166: SequenceNumber seq; +16166: return Get(key, value, columns, timestamp, s, merge_context, +16166: max_covering_tombstone_seq, &seq, read_opts, immutable_memtable, +16166: callback, is_blob_index, do_merge); +16166: } +16166: +16166: +16166: +16166: +16166: virtual void MultiGet(const ReadOptions& read_options, MultiGetRange* range, +16166: ReadCallback* callback, bool immutable_memtable) = 0; +16166: +16166: +16166: +16166: +16166: virtual uint64_t NumEntries() const = 0; +16166: +16166: +16166: +16166: +16166: virtual uint64_t NumDeletion() const = 0; +16166: +16166: +16166: +16166: +16166: virtual uint64_t NumRangeDeletion() const = 0; +16166: +16166: virtual uint64_t GetDataSize() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual SequenceNumber GetFirstSequenceNumber() = 0; +16166: +16166: +16166: +16166: +16166: virtual bool IsEmpty() const = 0; +16166: # 282 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: virtual SequenceNumber GetEarliestSequenceNumber() = 0; +16166: +16166: virtual uint64_t GetMinLogContainingPrepSection() = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual void MarkImmutable() = 0; +16166: +16166: +16166: +16166: +16166: +16166: virtual void MarkFlushed() = 0; +16166: +16166: struct MemTableStats { +16166: uint64_t size; +16166: uint64_t count; +16166: }; +16166: virtual MemTableStats ApproximateStats(const Slice& start_ikey, +16166: const Slice& end_ikey) = 0; +16166: +16166: virtual const InternalKeyComparator& GetInternalKeyComparator() const = 0; +16166: +16166: virtual uint64_t ApproximateOldestKeyTime() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual bool IsFragmentedRangeTombstonesConstructed() const = 0; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: virtual const Slice& GetNewestUDT() const = 0; +16166: +16166: +16166: +16166: +16166: void Ref() { ++refs_; } +16166: +16166: +16166: +16166: +16166: +16166: ReadOnlyMemTable* Unref() { +16166: --refs_; +16166: +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +16166: (static_cast ( +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: refs_ >= 0 +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: "refs_ >= 0" +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 336 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: ; +16166: if (refs_ <= 0) { +16166: return this; +16166: } +16166: return nullptr; +16166: } +16166: +16166: +16166: VersionEdit* GetEdits() { return &edit_; } +16166: +16166: +16166: +16166: +16166: +16166: uint64_t GetNextLogNumber() const { return mem_next_logfile_number_; } +16166: +16166: +16166: +16166: +16166: +16166: void SetNextLogNumber(uint64_t num) { mem_next_logfile_number_ = num; } +16166: +16166: +16166: void SetID(uint64_t id) { id_ = id; } +16166: +16166: uint64_t GetID() const { return id_; } +16166: +16166: void SetFlushCompleted(bool completed) { flush_completed_ = completed; } +16166: +16166: uint64_t GetFileNumber() const { return file_number_; } +16166: +16166: void SetFileNumber(uint64_t file_num) { file_number_ = file_num; } +16166: +16166: void SetFlushInProgress(bool in_progress) { +16166: flush_in_progress_ = in_progress; +16166: } +16166: +16166: void SetFlushJobInfo(std::unique_ptr&& info) { +16166: flush_job_info_ = std::move(info); +16166: } +16166: +16166: std::unique_ptr ReleaseFlushJobInfo() { +16166: return std::move(flush_job_info_); +16166: } +16166: +16166: static void HandleTypeValue( +16166: const Slice& lookup_user_key, const Slice& value, bool value_pinned, +16166: bool do_merge, bool merge_in_progress, MergeContext* merge_context, +16166: const MergeOperator* merge_operator, SystemClock* clock, +16166: Statistics* statistics, Logger* info_log, Status* s, +16166: std::string* out_value, PinnableWideColumns* out_columns, +16166: bool* is_blob_index) { +16166: *s = Status::OK(); +16166: +16166: if (!do_merge) { +16166: +16166: +16166: +16166: +16166: merge_context->PushOperand(value, value_pinned); +16166: } else if (merge_in_progress) { +16166: +16166: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +16166: (static_cast ( +16166: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: do_merge +16166: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: "do_merge" +16166: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 397 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: ; +16166: +16166: +16166: +16166: if (out_value || out_columns) { +16166: *s = MergeHelper::TimedFullMerge( +16166: merge_operator, lookup_user_key, MergeHelper::kPlainBaseValue, +16166: value, merge_context->GetOperands(), info_log, statistics, clock, +16166: true, +16166: nullptr, out_value, out_columns); +16166: } +16166: } else if (out_value) { +16166: out_value->assign(value.data(), value.size()); +16166: } else if (out_columns) { +16166: out_columns->SetPlainValue(value); +16166: } +16166: +16166: if (is_blob_index) { +16166: *is_blob_index = false; +16166: } +16166: } +16166: +16166: static void HandleTypeDeletion( +16166: const Slice& lookup_user_key, bool merge_in_progress, +16166: MergeContext* merge_context, const MergeOperator* merge_operator, +16166: SystemClock* clock, Statistics* statistics, Logger* logger, Status* s, +16166: std::string* out_value, PinnableWideColumns* out_columns) { +16166: if (merge_in_progress) { +16166: if (out_value || out_columns) { +16166: +16166: +16166: +16166: *s = MergeHelper::TimedFullMerge( +16166: merge_operator, lookup_user_key, MergeHelper::kNoBaseValue, +16166: merge_context->GetOperands(), logger, statistics, clock, +16166: true, +16166: nullptr, out_value, out_columns); +16166: } else { +16166: +16166: +16166: +16166: *s = Status::OK(); +16166: } +16166: } else { +16166: *s = Status::NotFound(); +16166: } +16166: } +16166: +16166: protected: +16166: friend class MemTableList; +16166: +16166: int refs_{0}; +16166: +16166: +16166: bool flush_in_progress_{false}; +16166: bool flush_completed_{false}; +16166: uint64_t file_number_{0}; +16166: +16166: +16166: +16166: VersionEdit edit_; +16166: +16166: +16166: uint64_t mem_next_logfile_number_{0}; +16166: +16166: +16166: uint64_t id_ = 0; +16166: +16166: +16166: +16166: +16166: +16166: SequenceNumber atomic_flush_seqno_{kMaxSequenceNumber}; +16166: +16166: +16166: std::unique_ptr flush_job_info_; +16166: }; +16166: +16166: class MemTable final : public ReadOnlyMemTable { +16166: public: +16166: struct KeyComparator final : public MemTableRep::KeyComparator { +16166: const InternalKeyComparator comparator; +16166: explicit KeyComparator(const InternalKeyComparator& c) : comparator(c) {} +16166: int operator()(const char* prefix_len_key1, +16166: const char* prefix_len_key2) const override; +16166: int operator()(const char* prefix_len_key, +16166: const DecodedType& key) const override; +16166: }; +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: explicit MemTable(const InternalKeyComparator& comparator, +16166: const ImmutableOptions& ioptions, +16166: const MutableCFOptions& mutable_cf_options, +16166: WriteBufferManager* write_buffer_manager, +16166: SequenceNumber earliest_seq, uint32_t column_family_id); +16166: +16166: MemTable(const MemTable&) = delete; +16166: MemTable& operator=(const MemTable&) = delete; +16166: +16166: ~MemTable() override; +16166: +16166: const char* Name() const override { return "MemTable"; } +16166: +16166: size_t ApproximateMemoryUsage() override; +16166: +16166: +16166: +16166: size_t ApproximateMemoryUsageFast() const { +16166: return approximate_memory_usage_.load(std::memory_order_relaxed); +16166: } +16166: +16166: size_t MemoryAllocatedBytes() const override { +16166: return table_->ApproximateMemoryUsage() + +16166: range_del_table_->ApproximateMemoryUsage() + +16166: arena_.MemoryAllocatedBytes(); +16166: } +16166: +16166: void UniqueRandomSample(const uint64_t& target_sample_size, +16166: std::unordered_set* entries) override { +16166: +16166: +16166: table_->UniqueRandomSample(NumEntries(), target_sample_size, entries); +16166: } +16166: +16166: +16166: +16166: bool ShouldScheduleFlush() const { +16166: return flush_state_.load(std::memory_order_relaxed) == FLUSH_REQUESTED; +16166: } +16166: +16166: +16166: +16166: bool MarkFlushScheduled() { +16166: auto before = FLUSH_REQUESTED; +16166: return flush_state_.compare_exchange_strong(before, FLUSH_SCHEDULED, +16166: std::memory_order_relaxed, +16166: std::memory_order_relaxed); +16166: } +16166: +16166: InternalIterator* NewIterator( +16166: const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping, Arena* arena, +16166: const SliceTransform* prefix_extractor, bool for_flush) override; +16166: +16166: InternalIterator* NewTimestampStrippingIterator( +16166: const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping, Arena* arena, +16166: const SliceTransform* prefix_extractor, size_t ts_sz) override; +16166: +16166: FragmentedRangeTombstoneIterator* NewRangeTombstoneIterator( +16166: const ReadOptions& read_options, SequenceNumber read_seq, +16166: bool immutable_memtable) override; +16166: +16166: FragmentedRangeTombstoneIterator* NewTimestampStrippingRangeTombstoneIterator( +16166: const ReadOptions& read_options, SequenceNumber read_seq, +16166: size_t ts_sz) override; +16166: +16166: Status VerifyEncodedEntry(Slice encoded, +16166: const ProtectionInfoKVOS64& kv_prot_info); +16166: # 572 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: Status Add(SequenceNumber seq, ValueType type, const Slice& key, +16166: const Slice& value, const ProtectionInfoKVOS64* kv_prot_info, +16166: bool allow_concurrent = false, +16166: MemTablePostProcessInfo* post_process_info = nullptr, +16166: void** hint = nullptr); +16166: +16166: using ReadOnlyMemTable::Get; +16166: bool Get(const LookupKey& key, std::string* value, +16166: PinnableWideColumns* columns, std::string* timestamp, Status* s, +16166: MergeContext* merge_context, +16166: SequenceNumber* max_covering_tombstone_seq, SequenceNumber* seq, +16166: const ReadOptions& read_opts, bool immutable_memtable, +16166: ReadCallback* callback = nullptr, bool* is_blob_index = nullptr, +16166: bool do_merge = true) override; +16166: +16166: void MultiGet(const ReadOptions& read_options, MultiGetRange* range, +16166: ReadCallback* callback, bool immutable_memtable) override; +16166: # 600 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: Status Update(SequenceNumber seq, ValueType value_type, const Slice& key, +16166: const Slice& value, const ProtectionInfoKVOS64* kv_prot_info); +16166: # 617 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.h" +16166: Status UpdateCallback(SequenceNumber seq, const Slice& key, +16166: const Slice& delta, +16166: const ProtectionInfoKVOS64* kv_prot_info); +16166: +16166: +16166: +16166: +16166: +16166: size_t CountSuccessiveMergeEntries(const LookupKey& key, size_t limit); +16166: +16166: +16166: +16166: void BatchPostProcess(const MemTablePostProcessInfo& update_counters) { +16166: num_entries_.fetch_add(update_counters.num_entries, +16166: std::memory_order_relaxed); +16166: data_size_.fetch_add(update_counters.data_size, std::memory_order_relaxed); +16166: if (update_counters.num_deletes != 0) { +16166: num_deletes_.fetch_add(update_counters.num_deletes, +16166: std::memory_order_relaxed); +16166: } +16166: if (update_counters.num_range_deletes > 0) { +16166: num_range_deletes_.fetch_add(update_counters.num_range_deletes, +16166: std::memory_order_relaxed); +16166: } +16166: UpdateFlushState(); +16166: } +16166: +16166: uint64_t NumEntries() const override { +16166: return num_entries_.load(std::memory_order_relaxed); +16166: } +16166: +16166: uint64_t NumDeletion() const override { +16166: return num_deletes_.load(std::memory_order_relaxed); +16166: } +16166: +16166: uint64_t NumRangeDeletion() const override { +16166: return num_range_deletes_.load(std::memory_order_relaxed); +16166: } +16166: +16166: uint64_t GetDataSize() const override { +16166: return data_size_.load(std::memory_order_relaxed); +16166: } +16166: +16166: size_t write_buffer_size() const { +16166: return write_buffer_size_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: void UpdateWriteBufferSize(size_t new_write_buffer_size) { +16166: if (bloom_filter_ == nullptr || +16166: new_write_buffer_size < write_buffer_size_) { +16166: write_buffer_size_.store(new_write_buffer_size, +16166: std::memory_order_relaxed); +16166: } +16166: } +16166: +16166: bool IsEmpty() const override { return first_seqno_ == 0; } +16166: +16166: SequenceNumber GetFirstSequenceNumber() override { +16166: return first_seqno_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: void SetFirstSequenceNumber(SequenceNumber first_seqno) { +16166: return first_seqno_.store(first_seqno, std::memory_order_relaxed); +16166: } +16166: +16166: SequenceNumber GetEarliestSequenceNumber() override { +16166: +16166: return earliest_seqno_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: +16166: +16166: +16166: +16166: void SetEarliestSequenceNumber(SequenceNumber earliest_seqno) { +16166: return earliest_seqno_.store(earliest_seqno, std::memory_order_relaxed); +16166: } +16166: +16166: +16166: +16166: SequenceNumber GetCreationSeq() const { return creation_seq_; } +16166: +16166: void SetCreationSeq(SequenceNumber sn) { creation_seq_ = sn; } +16166: +16166: +16166: +16166: +16166: void RefLogContainingPrepSection(uint64_t log); +16166: uint64_t GetMinLogContainingPrepSection() override; +16166: +16166: void MarkImmutable() override { +16166: table_->MarkReadOnly(); +16166: mem_tracker_.DoneAllocating(); +16166: } +16166: +16166: void MarkFlushed() override { table_->MarkFlushed(); } +16166: +16166: +16166: bool IsMergeOperatorSupported() const { +16166: return table_->IsMergeOperatorSupported(); +16166: } +16166: +16166: +16166: +16166: bool IsSnapshotSupported() const { +16166: return table_->IsSnapshotSupported() && !moptions_.inplace_update_support; +16166: } +16166: +16166: MemTableStats ApproximateStats(const Slice& start_ikey, +16166: const Slice& end_ikey) override; +16166: +16166: +16166: port::RWMutex* GetLock(const Slice& key); +16166: +16166: const InternalKeyComparator& GetInternalKeyComparator() const override { +16166: return comparator_.comparator; +16166: } +16166: +16166: const ImmutableMemTableOptions* GetImmutableMemTableOptions() const { +16166: return &moptions_; +16166: } +16166: +16166: uint64_t ApproximateOldestKeyTime() const override { +16166: return oldest_key_time_.load(std::memory_order_relaxed); +16166: } +16166: +16166: +16166: bool ShouldFlushNow(); +16166: +16166: +16166: +16166: +16166: +16166: +16166: void ConstructFragmentedRangeTombstones(); +16166: +16166: bool IsFragmentedRangeTombstonesConstructed() const override { +16166: return fragmented_range_tombstone_list_.get() != nullptr || +16166: is_range_del_table_empty_; +16166: } +16166: +16166: const Slice& GetNewestUDT() const override; +16166: +16166: +16166: static Status VerifyEntryChecksum(const char* entry, +16166: uint32_t protection_bytes_per_key, +16166: bool allow_data_in_errors = false); +16166: +16166: private: +16166: enum FlushStateEnum { FLUSH_NOT_REQUESTED, FLUSH_REQUESTED, FLUSH_SCHEDULED }; +16166: +16166: friend class MemTableIterator; +16166: friend class MemTableBackwardIterator; +16166: friend class MemTableList; +16166: +16166: KeyComparator comparator_; +16166: const ImmutableMemTableOptions moptions_; +16166: const size_t kArenaBlockSize; +16166: AllocTracker mem_tracker_; +16166: ConcurrentArena arena_; +16166: std::unique_ptr table_; +16166: std::unique_ptr range_del_table_; +16166: std::atomic_bool is_range_del_table_empty_; +16166: +16166: +16166: std::atomic data_size_; +16166: std::atomic num_entries_; +16166: std::atomic num_deletes_; +16166: std::atomic num_range_deletes_; +16166: +16166: +16166: std::atomic write_buffer_size_; +16166: +16166: +16166: std::atomic first_seqno_; +16166: +16166: +16166: +16166: std::atomic earliest_seqno_; +16166: +16166: SequenceNumber creation_seq_; +16166: +16166: +16166: +16166: std::atomic min_prep_log_referenced_; +16166: +16166: +16166: std::vector locks_; +16166: +16166: const SliceTransform* const prefix_extractor_; +16166: std::unique_ptr bloom_filter_; +16166: +16166: std::atomic flush_state_; +16166: +16166: SystemClock* clock_; +16166: +16166: +16166: const SliceTransform* insert_with_hint_prefix_extractor_; +16166: +16166: +16166: UnorderedMapH insert_hints_; +16166: +16166: +16166: std::atomic oldest_key_time_; +16166: +16166: +16166: +16166: std::atomic approximate_memory_usage_; +16166: +16166: +16166: +16166: uint32_t memtable_max_range_deletions_ = 0; +16166: +16166: +16166: size_t ts_sz_; +16166: +16166: +16166: bool persist_user_defined_timestamps_; +16166: +16166: +16166: +16166: +16166: +16166: +16166: Slice newest_udt_; +16166: +16166: +16166: void UpdateFlushState(); +16166: +16166: void UpdateOldestKeyTime(); +16166: +16166: void GetFromTable(const LookupKey& key, +16166: SequenceNumber max_covering_tombstone_seq, bool do_merge, +16166: ReadCallback* callback, bool* is_blob_index, +16166: std::string* value, PinnableWideColumns* columns, +16166: std::string* timestamp, Status* s, +16166: MergeContext* merge_context, SequenceNumber* seq, +16166: bool* found_final_value, bool* merge_in_progress); +16166: +16166: +16166: +16166: +16166: +16166: +16166: FragmentedRangeTombstoneIterator* NewRangeTombstoneIteratorInternal( +16166: const ReadOptions& read_options, SequenceNumber read_seq, +16166: bool immutable_memtable); +16166: +16166: +16166: +16166: +16166: std::unique_ptr +16166: fragmented_range_tombstone_list_; +16166: +16166: +16166: +16166: +16166: std::unique_ptr +16166: timestamp_stripping_fragmented_range_tombstone_list_; +16166: +16166: +16166: std::mutex range_del_mutex_; +16166: CoreLocalArray> +16166: cached_range_tombstone_; +16166: +16166: void UpdateEntryChecksum(const ProtectionInfoKVOS64* kv_prot_info, +16166: const Slice& key, const Slice& value, ValueType type, +16166: SequenceNumber s, char* checksum_ptr); +16166: +16166: void MaybeUpdateNewestUDT(const Slice& user_key); +16166: }; +16166: +16166: const char* EncodeKey(std::string* scratch, const Slice& target); +16166: +16166: } +16166: # 11 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +16166: # 26 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/logging/logging.h" 1 +16166: # 13 "/build/reproducible-path/rocksdb-9.10.0/logging/logging.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: inline const char* RocksLogShorterFileName(const char* file) { +16166: +16166: +16166: return file + (sizeof("./logging/logging.h") > 18 ? sizeof("./logging/logging.h") - 18 : 0); +16166: } +16166: # 27 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +16166: +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_usage.h" 1 +16166: +16166: +16166: +16166: +16166: +16166: +16166: # 16 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_usage.h" +16166: namespace rocksdb { +16166: +16166: +16166: +16166: template +16166: size_t ApproximateMemoryUsage( +16166: const std::unordered_map& umap) { +16166: using Map = std::unordered_map; +16166: return sizeof(umap) + +16166: +16166: (sizeof(typename Map::value_type) + sizeof(void*)) * umap.size() + +16166: +16166: umap.bucket_count() * sizeof(void*); +16166: } +16166: # 38 "/build/reproducible-path/rocksdb-9.10.0/memory/memory_usage.h" +16166: } +16166: # 29 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +16166: # 41 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: +16166: +16166: +16166: +16166: template +16166: class IteratorWrapperBase { +16166: public: +16166: IteratorWrapperBase() : iter_(nullptr), valid_(false) {} +16166: explicit IteratorWrapperBase(InternalIteratorBase* _iter) +16166: : iter_(nullptr) { +16166: Set(_iter); +16166: } +16166: ~IteratorWrapperBase() {} +16166: InternalIteratorBase* iter() const { return iter_; } +16166: void SetRangeDelReadSeqno(SequenceNumber read_seqno) { +16166: if (iter_) { +16166: iter_->SetRangeDelReadSeqno(read_seqno); +16166: } +16166: } +16166: +16166: +16166: +16166: InternalIteratorBase* Set(InternalIteratorBase* _iter) { +16166: InternalIteratorBase* old_iter = iter_; +16166: +16166: iter_ = _iter; +16166: if (iter_ == nullptr) { +16166: valid_ = false; +16166: } else { +16166: Update(); +16166: } +16166: return old_iter; +16166: } +16166: +16166: void DeleteIter(bool is_arena_mode) { +16166: if (iter_) { +16166: # 66 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: if (!is_arena_mode) { +16166: delete iter_; +16166: } else { +16166: iter_->~InternalIteratorBase(); +16166: } +16166: } +16166: } +16166: +16166: +16166: bool Valid() const { +16166: +16166: +16166: +16166: return valid_; +16166: } +16166: Slice key() const { +16166: +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 82 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return result_.key; +16166: } +16166: +16166: uint64_t write_unix_time() const { +16166: +16166: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 87 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return iter_->write_unix_time(); +16166: } +16166: +16166: TValue value() const { +16166: +16166: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 92 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return iter_->value(); +16166: } +16166: +16166: Status status() const { +16166: +16166: +16166: +16166: +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 100 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return iter_->status(); +16166: } +16166: bool PrepareValue() { +16166: +16166: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 104 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: if (result_.value_prepared) { +16166: return true; +16166: } +16166: if (iter_->PrepareValue()) { +16166: result_.value_prepared = true; +16166: result_.key = iter_->key(); +16166: return true; +16166: } +16166: +16166: +16166: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: !iter_->Valid() +16166: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "!iter_->Valid()" +16166: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 114 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: valid_ = false; +16166: return false; +16166: } +16166: void Next() { +16166: +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 119 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: valid_ = iter_->NextAndGetResult(&result_); +16166: +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: !valid_ || iter_->status().ok() +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "!valid_ || iter_->status().ok()" +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: } +16166: bool NextAndGetResult(IterateResult* result) { +16166: +16166: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 124 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: valid_ = iter_->NextAndGetResult(&result_); +16166: *result = result_; +16166: +16166: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: !valid_ || iter_->status().ok() +16166: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "!valid_ || iter_->status().ok()" +16166: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 127 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return valid_; +16166: } +16166: void Prev() { +16166: +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 131 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: iter_->Prev(); +16166: Update(); +16166: } +16166: void Seek(const Slice& k) { +16166: +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 136 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: iter_->Seek(k); +16166: Update(); +16166: } +16166: void SeekForPrev(const Slice& k) { +16166: +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 141 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: iter_->SeekForPrev(k); +16166: Update(); +16166: } +16166: void SeekToFirst() { +16166: +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 146 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: iter_->SeekToFirst(); +16166: Update(); +16166: } +16166: void SeekToLast() { +16166: +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 151 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: iter_->SeekToLast(); +16166: Update(); +16166: } +16166: +16166: bool MayBeOutOfLowerBound() { +16166: +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 157 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return iter_->MayBeOutOfLowerBound(); +16166: } +16166: +16166: IterBoundCheck UpperBoundCheckResult() { +16166: +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 162 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return result_.bound_check_result; +16166: } +16166: +16166: void SetPinnedItersMgr(PinnedIteratorsManager* pinned_iters_mgr) { +16166: +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_ +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_" +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 167 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: iter_->SetPinnedItersMgr(pinned_iters_mgr); +16166: } +16166: bool IsKeyPinned() const { +16166: +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 171 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return iter_->IsKeyPinned(); +16166: } +16166: bool IsValuePinned() const { +16166: +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 175 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return iter_->IsValuePinned(); +16166: } +16166: +16166: bool IsValuePrepared() const { return result_.value_prepared; } +16166: +16166: Slice user_key() const { +16166: +16166: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: Valid() +16166: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "Valid()" +16166: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 182 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: return iter_->user_key(); +16166: } +16166: +16166: void UpdateReadaheadState(InternalIteratorBase* old_iter) { +16166: if (old_iter && iter_) { +16166: ReadaheadFileInfo readahead_file_info; +16166: old_iter->GetReadaheadState(&readahead_file_info); +16166: iter_->SetReadaheadState(&readahead_file_info); +16166: } +16166: } +16166: +16166: bool IsDeleteRangeSentinelKey() const { +16166: return iter_->IsDeleteRangeSentinelKey(); +16166: } +16166: +16166: private: +16166: void Update() { +16166: valid_ = iter_->Valid(); +16166: if (valid_) { +16166: +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: (static_cast ( +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: iter_->status().ok() +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: "iter_->status().ok()" +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 202 "/build/reproducible-path/rocksdb-9.10.0/table/iterator_wrapper.h" +16166: ; +16166: result_.key = iter_->key(); +16166: result_.bound_check_result = IterBoundCheck::kUnknown; +16166: result_.value_prepared = false; +16166: } +16166: } +16166: +16166: InternalIteratorBase* iter_; +16166: IterateResult result_; +16166: bool valid_; +16166: +16166: +16166: +16166: +16166: }; +16166: +16166: using IteratorWrapper = IteratorWrapperBase; +16166: +16166: class Arena; +16166: +16166: template +16166: InternalIteratorBase* NewEmptyInternalIterator(Arena* arena); +16166: +16166: } +16166: # 42 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +16166: # 1 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" 1 +16166: # 10 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" +16166: +16166: +16166: +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: class Arena; +16166: class ArenaWrappedDBIter; +16166: class InternalKeyComparator; +16166: +16166: template +16166: class InternalIteratorBase; +16166: using InternalIterator = InternalIteratorBase; +16166: # 35 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" +16166: InternalIterator* NewMergingIterator(const InternalKeyComparator* comparator, +16166: InternalIterator** children, int n, +16166: Arena* arena = nullptr, +16166: bool prefix_seek_mode = false); +16166: +16166: +16166: +16166: +16166: class MergingIterator; +16166: +16166: +16166: +16166: +16166: +16166: class MergeIteratorBuilder { +16166: public: +16166: +16166: +16166: explicit MergeIteratorBuilder(const InternalKeyComparator* comparator, +16166: Arena* arena, bool prefix_seek_mode = false, +16166: const Slice* iterate_upper_bound = nullptr); +16166: ~MergeIteratorBuilder(); +16166: +16166: +16166: void AddIterator(InternalIterator* iter); +16166: # 72 "/build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.h" +16166: void AddPointAndTombstoneIterator( +16166: InternalIterator* point_iter, +16166: std::unique_ptr&& tombstone_iter, +16166: std::unique_ptr** tombstone_iter_ptr = +16166: nullptr); +16166: +16166: +16166: +16166: Arena* GetArena() { return arena; } +16166: +16166: +16166: +16166: +16166: +16166: +16166: InternalIterator* Finish(ArenaWrappedDBIter* db_iter = nullptr); +16166: +16166: private: +16166: MergingIterator* merge_iter; +16166: InternalIterator* first_iter; +16166: bool use_merging_iter; +16166: Arena* arena; +16166: +16166: +16166: std::vector**>> +16166: range_del_iter_ptrs_; +16166: }; +16166: +16166: } +16166: # 43 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 2 +16166: +16166: +16166: +16166: +16166: namespace rocksdb { +16166: +16166: ImmutableMemTableOptions::ImmutableMemTableOptions( +16166: const ImmutableOptions& ioptions, +16166: const MutableCFOptions& mutable_cf_options) +16166: : arena_block_size(mutable_cf_options.arena_block_size), +16166: memtable_prefix_bloom_bits( +16166: static_cast( +16166: static_cast(mutable_cf_options.write_buffer_size) * +16166: mutable_cf_options.memtable_prefix_bloom_size_ratio) * +16166: 8u), +16166: memtable_huge_page_size(mutable_cf_options.memtable_huge_page_size), +16166: memtable_whole_key_filtering( +16166: mutable_cf_options.memtable_whole_key_filtering), +16166: inplace_update_support(ioptions.inplace_update_support), +16166: inplace_update_num_locks(mutable_cf_options.inplace_update_num_locks), +16166: inplace_callback(ioptions.inplace_callback), +16166: max_successive_merges(mutable_cf_options.max_successive_merges), +16166: strict_max_successive_merges( +16166: mutable_cf_options.strict_max_successive_merges), +16166: statistics(ioptions.stats), +16166: merge_operator(ioptions.merge_operator.get()), +16166: info_log(ioptions.logger), +16166: protection_bytes_per_key( +16166: mutable_cf_options.memtable_protection_bytes_per_key), +16166: allow_data_in_errors(ioptions.allow_data_in_errors), +16166: paranoid_memory_checks(mutable_cf_options.paranoid_memory_checks) {} +16166: +16166: MemTable::MemTable(const InternalKeyComparator& cmp, +16166: const ImmutableOptions& ioptions, +16166: const MutableCFOptions& mutable_cf_options, +16166: WriteBufferManager* write_buffer_manager, +16166: SequenceNumber latest_seq, uint32_t column_family_id) +16166: : comparator_(cmp), +16166: moptions_(ioptions, mutable_cf_options), +16166: kArenaBlockSize(Arena::OptimizeBlockSize(moptions_.arena_block_size)), +16166: mem_tracker_(write_buffer_manager), +16166: arena_(moptions_.arena_block_size, +16166: (write_buffer_manager != nullptr && +16166: (write_buffer_manager->enabled() || +16166: write_buffer_manager->cost_to_cache())) +16166: ? &mem_tracker_ +16166: : nullptr, +16166: mutable_cf_options.memtable_huge_page_size), +16166: table_(ioptions.memtable_factory->CreateMemTableRep( +16166: comparator_, &arena_, mutable_cf_options.prefix_extractor.get(), +16166: ioptions.logger, column_family_id)), +16166: range_del_table_(SkipListFactory().CreateMemTableRep( +16166: comparator_, &arena_, nullptr , ioptions.logger, +16166: column_family_id)), +16166: is_range_del_table_empty_(true), +16166: data_size_(0), +16166: num_entries_(0), +16166: num_deletes_(0), +16166: num_range_deletes_(0), +16166: write_buffer_size_(mutable_cf_options.write_buffer_size), +16166: first_seqno_(0), +16166: earliest_seqno_(latest_seq), +16166: creation_seq_(latest_seq), +16166: min_prep_log_referenced_(0), +16166: locks_(moptions_.inplace_update_support +16166: ? moptions_.inplace_update_num_locks +16166: : 0), +16166: prefix_extractor_(mutable_cf_options.prefix_extractor.get()), +16166: flush_state_(FLUSH_NOT_REQUESTED), +16166: clock_(ioptions.clock), +16166: insert_with_hint_prefix_extractor_( +16166: ioptions.memtable_insert_with_hint_prefix_extractor.get()), +16166: oldest_key_time_(std::numeric_limits::max()), +16166: approximate_memory_usage_(0), +16166: memtable_max_range_deletions_( +16166: mutable_cf_options.memtable_max_range_deletions) { +16166: UpdateFlushState(); +16166: +16166: +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: !ShouldScheduleFlush() +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "!ShouldScheduleFlush()" +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 121 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: +16166: if ((prefix_extractor_ || moptions_.memtable_whole_key_filtering) && +16166: moptions_.memtable_prefix_bloom_bits > 0) { +16166: bloom_filter_.reset( +16166: new DynamicBloom(&arena_, moptions_.memtable_prefix_bloom_bits, +16166: 6 , +16166: moptions_.memtable_huge_page_size, ioptions.logger)); +16166: } +16166: +16166: +16166: +16166: auto new_cache = std::make_shared(); +16166: size_t size = cached_range_tombstone_.Size(); +16166: for (size_t i = 0; i < size; ++i) { +16166: std::shared_ptr* local_cache_ref_ptr = +16166: cached_range_tombstone_.AccessAtCore(i); +16166: auto new_local_cache_ref = std::make_shared< +16166: const std::shared_ptr>(new_cache); +16166: std::atomic_store_explicit( +16166: local_cache_ref_ptr, +16166: std::shared_ptr(new_local_cache_ref, +16166: new_cache.get()), +16166: std::memory_order_relaxed); +16166: } +16166: const Comparator* ucmp = cmp.user_comparator(); +16166: +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ucmp +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "ucmp" +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 148 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: ts_sz_ = ucmp->timestamp_size(); +16166: persist_user_defined_timestamps_ = ioptions.persist_user_defined_timestamps; +16166: } +16166: +16166: MemTable::~MemTable() { +16166: mem_tracker_.FreeMem(); +16166: +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: refs_ == 0 +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "refs_ == 0" +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 155 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: } +16166: +16166: size_t MemTable::ApproximateMemoryUsage() { +16166: autovector usages = { +16166: arena_.ApproximateMemoryUsage(), table_->ApproximateMemoryUsage(), +16166: range_del_table_->ApproximateMemoryUsage(), +16166: rocksdb::ApproximateMemoryUsage(insert_hints_)}; +16166: size_t total_usage = 0; +16166: for (size_t usage : usages) { +16166: +16166: +16166: if (usage >= std::numeric_limits::max() - total_usage) { +16166: return std::numeric_limits::max(); +16166: } +16166: total_usage += usage; +16166: } +16166: approximate_memory_usage_.store(total_usage, std::memory_order_relaxed); +16166: +16166: return total_usage; +16166: } +16166: +16166: bool MemTable::ShouldFlushNow() { +16166: +16166: +16166: if (memtable_max_range_deletions_ > 0 && +16166: num_range_deletes_.load(std::memory_order_relaxed) >= +16166: static_cast(memtable_max_range_deletions_)) { +16166: return true; +16166: } +16166: +16166: size_t write_buffer_size = write_buffer_size_.load(std::memory_order_relaxed); +16166: +16166: +16166: +16166: +16166: +16166: +16166: const double kAllowOverAllocationRatio = 0.6; +16166: +16166: +16166: +16166: auto allocated_memory = table_->ApproximateMemoryUsage() + +16166: range_del_table_->ApproximateMemoryUsage() + +16166: arena_.MemoryAllocatedBytes(); +16166: +16166: approximate_memory_usage_.store(allocated_memory, std::memory_order_relaxed); +16166: +16166: +16166: +16166: if (allocated_memory + kArenaBlockSize < +16166: write_buffer_size + kArenaBlockSize * kAllowOverAllocationRatio) { +16166: return false; +16166: } +16166: +16166: +16166: +16166: if (allocated_memory > +16166: write_buffer_size + kArenaBlockSize * kAllowOverAllocationRatio) { +16166: return true; +16166: } +16166: # 242 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: return arena_.AllocatedAndUnused() < kArenaBlockSize / 4; +16166: } +16166: +16166: void MemTable::UpdateFlushState() { +16166: auto state = flush_state_.load(std::memory_order_relaxed); +16166: if (state == FLUSH_NOT_REQUESTED && ShouldFlushNow()) { +16166: +16166: +16166: flush_state_.compare_exchange_strong(state, FLUSH_REQUESTED, +16166: std::memory_order_relaxed, +16166: std::memory_order_relaxed); +16166: } +16166: } +16166: +16166: void MemTable::UpdateOldestKeyTime() { +16166: uint64_t oldest_key_time = oldest_key_time_.load(std::memory_order_relaxed); +16166: if (oldest_key_time == std::numeric_limits::max()) { +16166: int64_t current_time = 0; +16166: auto s = clock_->GetCurrentTime(¤t_time); +16166: if (s.ok()) { +16166: +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: current_time >= 0 +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "current_time >= 0" +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 262 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: oldest_key_time_.compare_exchange_strong( +16166: oldest_key_time, static_cast(current_time), +16166: std::memory_order_relaxed, std::memory_order_relaxed); +16166: } +16166: } +16166: } +16166: +16166: Status MemTable::VerifyEntryChecksum(const char* entry, +16166: uint32_t protection_bytes_per_key, +16166: bool allow_data_in_errors) { +16166: if (protection_bytes_per_key == 0) { +16166: return Status::OK(); +16166: } +16166: uint32_t key_length; +16166: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +16166: if (key_ptr == nullptr) { +16166: return Status::Corruption("Unable to parse internal key length"); +16166: } +16166: if (key_length < 8) { +16166: return Status::Corruption("Memtable entry internal key length too short."); +16166: } +16166: Slice user_key = Slice(key_ptr, key_length - 8); +16166: +16166: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +16166: ValueType type; +16166: SequenceNumber seq; +16166: UnPackSequenceAndType(tag, &seq, &type); +16166: +16166: uint32_t value_length = 0; +16166: const char* value_ptr = GetVarint32Ptr( +16166: key_ptr + key_length, key_ptr + key_length + 5, &value_length); +16166: if (value_ptr == nullptr) { +16166: return Status::Corruption("Unable to parse internal key value"); +16166: } +16166: Slice value = Slice(value_ptr, value_length); +16166: +16166: const char* checksum_ptr = value_ptr + value_length; +16166: bool match = +16166: ProtectionInfo64() +16166: .ProtectKVO(user_key, value, type) +16166: .ProtectS(seq) +16166: .Verify(static_cast(protection_bytes_per_key), checksum_ptr); +16166: if (!match) { +16166: std::string msg( +16166: "Corrupted memtable entry, per key-value checksum verification " +16166: "failed."); +16166: if (allow_data_in_errors) { +16166: msg.append("Unrecognized value type: " + +16166: std::to_string(static_cast(type)) + ". "); +16166: msg.append("User key: " + user_key.ToString( true) + ". "); +16166: msg.append("seq: " + std::to_string(seq) + "."); +16166: } +16166: return Status::Corruption(msg.c_str()); +16166: } +16166: return Status::OK(); +16166: } +16166: +16166: int MemTable::KeyComparator::operator()(const char* prefix_len_key1, +16166: const char* prefix_len_key2) const { +16166: +16166: Slice k1 = GetLengthPrefixedSlice(prefix_len_key1); +16166: Slice k2 = GetLengthPrefixedSlice(prefix_len_key2); +16166: return comparator.CompareKeySeq(k1, k2); +16166: } +16166: +16166: int MemTable::KeyComparator::operator()( +16166: const char* prefix_len_key, const KeyComparator::DecodedType& key) const { +16166: +16166: Slice a = GetLengthPrefixedSlice(prefix_len_key); +16166: return comparator.CompareKeySeq(a, key); +16166: } +16166: +16166: void MemTableRep::InsertConcurrently(KeyHandle ) { +16166: throw std::runtime_error("concurrent insert not supported"); +16166: } +16166: +16166: Slice MemTableRep::UserKey(const char* key) const { +16166: Slice slice = GetLengthPrefixedSlice(key); +16166: return Slice(slice.data(), slice.size() - 8); +16166: } +16166: +16166: KeyHandle MemTableRep::Allocate(const size_t len, char** buf) { +16166: *buf = allocator_->Allocate(len); +16166: return static_cast(*buf); +16166: } +16166: +16166: +16166: +16166: +16166: const char* EncodeKey(std::string* scratch, const Slice& target) { +16166: scratch->clear(); +16166: PutVarint32(scratch, static_cast(target.size())); +16166: scratch->append(target.data(), target.size()); +16166: return scratch->data(); +16166: } +16166: +16166: class MemTableIterator : public InternalIterator { +16166: public: +16166: enum Kind { kPointEntries, kRangeDelEntries }; +16166: MemTableIterator( +16166: Kind kind, const MemTable& mem, const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping = nullptr, +16166: Arena* arena = nullptr, +16166: const SliceTransform* cf_prefix_extractor = nullptr) +16166: : bloom_(nullptr), +16166: prefix_extractor_(mem.prefix_extractor_), +16166: comparator_(mem.comparator_), +16166: seqno_to_time_mapping_(seqno_to_time_mapping), +16166: status_(Status::OK()), +16166: logger_(mem.moptions_.info_log), +16166: ts_sz_(mem.ts_sz_), +16166: protection_bytes_per_key_(mem.moptions_.protection_bytes_per_key), +16166: valid_(false), +16166: value_pinned_( +16166: !mem.GetImmutableMemTableOptions()->inplace_update_support), +16166: arena_mode_(arena != nullptr), +16166: paranoid_memory_checks_(mem.moptions_.paranoid_memory_checks), +16166: allow_data_in_error(mem.moptions_.allow_data_in_errors) { +16166: if (kind == kRangeDelEntries) { +16166: iter_ = mem.range_del_table_->GetIterator(arena); +16166: } else if (prefix_extractor_ != nullptr && +16166: +16166: +16166: prefix_extractor_ == cf_prefix_extractor && +16166: (read_options.prefix_same_as_start || +16166: (!read_options.total_order_seek && +16166: !read_options.auto_prefix_mode))) { +16166: +16166: +16166: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: kind == kPointEntries +16166: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "kind == kPointEntries" +16166: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 392 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: bloom_ = mem.bloom_filter_.get(); +16166: iter_ = mem.table_->GetDynamicPrefixIterator(arena); +16166: } else { +16166: +16166: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: kind == kPointEntries +16166: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "kind == kPointEntries" +16166: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 396 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: iter_ = mem.table_->GetIterator(arena); +16166: } +16166: status_.PermitUncheckedError(); +16166: } +16166: +16166: MemTableIterator(const MemTableIterator&) = delete; +16166: void operator=(const MemTableIterator&) = delete; +16166: +16166: ~MemTableIterator() override { +16166: +16166: +16166: +16166: +16166: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: !pinned_iters_mgr_ || !pinned_iters_mgr_->PinningEnabled() +16166: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "!pinned_iters_mgr_ || !pinned_iters_mgr_->PinningEnabled()" +16166: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 409 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: if (arena_mode_) { +16166: iter_->~Iterator(); +16166: } else { +16166: delete iter_; +16166: } +16166: status_.PermitUncheckedError(); +16166: } +16166: +16166: +16166: void SetPinnedItersMgr(PinnedIteratorsManager* pinned_iters_mgr) override { +16166: pinned_iters_mgr_ = pinned_iters_mgr; +16166: } +16166: PinnedIteratorsManager* pinned_iters_mgr_ = nullptr; +16166: +16166: +16166: bool Valid() const override { +16166: +16166: +16166: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: iter_->Valid() || !(valid_ && status_.ok()) +16166: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "iter_->Valid() || !(valid_ && status_.ok())" +16166: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 428 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: return valid_ && status_.ok(); +16166: } +16166: +16166: void Seek(const Slice& k) override { +16166: PerfStepTimer perf_step_timer_seek_on_memtable_time(&(perf_context.seek_on_memtable_time)); perf_step_timer_seek_on_memtable_time.Start();; +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.seek_on_memtable_count += 1; } static_assert(true, "semicolon required"); +16166: status_ = Status::OK(); +16166: if (bloom_) { +16166: +16166: Slice user_k_without_ts(ExtractUserKeyAndStripTimestamp(k, ts_sz_)); +16166: if (prefix_extractor_->InDomain(user_k_without_ts)) { +16166: Slice prefix = prefix_extractor_->Transform(user_k_without_ts); +16166: if (!bloom_->MayContain(prefix)) { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +16166: valid_ = false; +16166: return; +16166: } else { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +16166: } +16166: } +16166: } +16166: if (paranoid_memory_checks_) { +16166: status_ = iter_->SeekAndValidate(k, nullptr, allow_data_in_error); +16166: } else { +16166: iter_->Seek(k, nullptr); +16166: } +16166: valid_ = iter_->Valid(); +16166: VerifyEntryChecksum(); +16166: } +16166: void SeekForPrev(const Slice& k) override { +16166: PerfStepTimer perf_step_timer_seek_on_memtable_time(&(perf_context.seek_on_memtable_time)); perf_step_timer_seek_on_memtable_time.Start();; +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.seek_on_memtable_count += 1; } static_assert(true, "semicolon required"); +16166: status_ = Status::OK(); +16166: if (bloom_) { +16166: Slice user_k_without_ts(ExtractUserKeyAndStripTimestamp(k, ts_sz_)); +16166: if (prefix_extractor_->InDomain(user_k_without_ts)) { +16166: if (!bloom_->MayContain( +16166: prefix_extractor_->Transform(user_k_without_ts))) { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +16166: valid_ = false; +16166: return; +16166: } else { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +16166: } +16166: } +16166: } +16166: if (paranoid_memory_checks_) { +16166: status_ = iter_->SeekAndValidate(k, nullptr, allow_data_in_error); +16166: } else { +16166: iter_->Seek(k, nullptr); +16166: } +16166: valid_ = iter_->Valid(); +16166: VerifyEntryChecksum(); +16166: if (!Valid() && status().ok()) { +16166: SeekToLast(); +16166: } +16166: while (Valid() && comparator_.comparator.Compare(k, key()) < 0) { +16166: Prev(); +16166: } +16166: } +16166: void SeekToFirst() override { +16166: status_ = Status::OK(); +16166: iter_->SeekToFirst(); +16166: valid_ = iter_->Valid(); +16166: VerifyEntryChecksum(); +16166: } +16166: void SeekToLast() override { +16166: status_ = Status::OK(); +16166: iter_->SeekToLast(); +16166: valid_ = iter_->Valid(); +16166: VerifyEntryChecksum(); +16166: } +16166: void Next() override { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.next_on_memtable_count += 1; } static_assert(true, "semicolon required"); +16166: +16166: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: Valid() +16166: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "Valid()" +16166: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 503 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: if (paranoid_memory_checks_) { +16166: status_ = iter_->NextAndValidate(allow_data_in_error); +16166: } else { +16166: iter_->Next(); +16166: rocksdb::SyncPoint::GetInstance()->Process("MemTableIterator::Next:0", iter_); +16166: } +16166: valid_ = iter_->Valid(); +16166: VerifyEntryChecksum(); +16166: } +16166: bool NextAndGetResult(IterateResult* result) override { +16166: Next(); +16166: bool is_valid = Valid(); +16166: if (is_valid) { +16166: result->key = key(); +16166: result->bound_check_result = IterBoundCheck::kUnknown; +16166: result->value_prepared = true; +16166: } +16166: return is_valid; +16166: } +16166: void Prev() override { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.prev_on_memtable_count += 1; } static_assert(true, "semicolon required"); +16166: +16166: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: Valid() +16166: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "Valid()" +16166: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 525 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: if (paranoid_memory_checks_) { +16166: status_ = iter_->PrevAndValidate(allow_data_in_error); +16166: } else { +16166: iter_->Prev(); +16166: } +16166: valid_ = iter_->Valid(); +16166: VerifyEntryChecksum(); +16166: } +16166: Slice key() const override { +16166: +16166: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: Valid() +16166: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "Valid()" +16166: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 535 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: return GetLengthPrefixedSlice(iter_->key()); +16166: } +16166: +16166: uint64_t write_unix_time() const override { +16166: +16166: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: Valid() +16166: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "Valid()" +16166: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 540 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: ParsedInternalKey pikey; +16166: Status s = ParseInternalKey(key(), &pikey, false); +16166: if (!s.ok()) { +16166: return std::numeric_limits::max(); +16166: } else if (kTypeValuePreferredSeqno == pikey.type) { +16166: return ParsePackedValueForWriteTime(value()); +16166: } else if (!seqno_to_time_mapping_ || seqno_to_time_mapping_->Empty()) { +16166: return std::numeric_limits::max(); +16166: } +16166: return seqno_to_time_mapping_->GetProximalTimeBeforeSeqno(pikey.sequence); +16166: } +16166: +16166: Slice value() const override { +16166: +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: Valid() +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "Valid()" +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 554 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: Slice key_slice = GetLengthPrefixedSlice(iter_->key()); +16166: return GetLengthPrefixedSlice(key_slice.data() + key_slice.size()); +16166: } +16166: +16166: Status status() const override { return status_; } +16166: +16166: bool IsKeyPinned() const override { +16166: +16166: return true; +16166: } +16166: +16166: bool IsValuePinned() const override { +16166: +16166: return value_pinned_; +16166: } +16166: +16166: private: +16166: DynamicBloom* bloom_; +16166: const SliceTransform* const prefix_extractor_; +16166: const MemTable::KeyComparator comparator_; +16166: MemTableRep::Iterator* iter_; +16166: +16166: UnownedPtr seqno_to_time_mapping_; +16166: Status status_; +16166: Logger* logger_; +16166: size_t ts_sz_; +16166: uint32_t protection_bytes_per_key_; +16166: bool valid_; +16166: bool value_pinned_; +16166: bool arena_mode_; +16166: const bool paranoid_memory_checks_; +16166: const bool allow_data_in_error; +16166: +16166: void VerifyEntryChecksum() { +16166: if (protection_bytes_per_key_ > 0 && Valid()) { +16166: status_ = MemTable::VerifyEntryChecksum(iter_->key(), +16166: protection_bytes_per_key_); +16166: if (!status_.ok()) { +16166: rocksdb::Log((InfoLogLevel::ERROR_LEVEL), ((logger_)), ("[%s:" "593" "] " "In MemtableIterator: %s"), RocksLogShorterFileName("./db/memtable.cc"), status_.getState()); +16166: } +16166: } +16166: } +16166: }; +16166: +16166: InternalIterator* MemTable::NewIterator( +16166: const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping, Arena* arena, +16166: const SliceTransform* prefix_extractor, bool ) { +16166: +16166: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: arena != nullptr +16166: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "arena != nullptr" +16166: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: auto mem = arena->AllocateAligned(sizeof(MemTableIterator)); +16166: return new (mem) +16166: MemTableIterator(MemTableIterator::kPointEntries, *this, read_options, +16166: seqno_to_time_mapping, arena, prefix_extractor); +16166: } +16166: +16166: +16166: +16166: class TimestampStrippingIterator : public InternalIterator { +16166: public: +16166: TimestampStrippingIterator( +16166: MemTableIterator::Kind kind, const MemTable& memtable, +16166: const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping, Arena* arena, +16166: const SliceTransform* cf_prefix_extractor, size_t ts_sz) +16166: : arena_mode_(arena != nullptr), kind_(kind), ts_sz_(ts_sz) { +16166: +16166: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ts_sz_ != 0 +16166: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "ts_sz_ != 0" +16166: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 620 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: void* mem = arena ? arena->AllocateAligned(sizeof(MemTableIterator)) : +16166: operator new(sizeof(MemTableIterator)); +16166: iter_ = new (mem) +16166: MemTableIterator(kind, memtable, read_options, seqno_to_time_mapping, +16166: arena, cf_prefix_extractor); +16166: } +16166: +16166: +16166: TimestampStrippingIterator(const TimestampStrippingIterator&) = delete; +16166: void operator=(const TimestampStrippingIterator&) = delete; +16166: +16166: ~TimestampStrippingIterator() override { +16166: if (arena_mode_) { +16166: iter_->~MemTableIterator(); +16166: } else { +16166: delete iter_; +16166: } +16166: } +16166: +16166: void SetPinnedItersMgr(PinnedIteratorsManager* pinned_iters_mgr) override { +16166: iter_->SetPinnedItersMgr(pinned_iters_mgr); +16166: } +16166: +16166: bool Valid() const override { return iter_->Valid(); } +16166: void Seek(const Slice& k) override { +16166: iter_->Seek(k); +16166: UpdateKeyAndValueBuffer(); +16166: } +16166: void SeekForPrev(const Slice& k) override { +16166: iter_->SeekForPrev(k); +16166: UpdateKeyAndValueBuffer(); +16166: } +16166: void SeekToFirst() override { +16166: iter_->SeekToFirst(); +16166: UpdateKeyAndValueBuffer(); +16166: } +16166: void SeekToLast() override { +16166: iter_->SeekToLast(); +16166: UpdateKeyAndValueBuffer(); +16166: } +16166: void Next() override { +16166: iter_->Next(); +16166: UpdateKeyAndValueBuffer(); +16166: } +16166: bool NextAndGetResult(IterateResult* result) override { +16166: iter_->Next(); +16166: UpdateKeyAndValueBuffer(); +16166: bool is_valid = Valid(); +16166: if (is_valid) { +16166: result->key = key(); +16166: result->bound_check_result = IterBoundCheck::kUnknown; +16166: result->value_prepared = true; +16166: } +16166: return is_valid; +16166: } +16166: void Prev() override { +16166: iter_->Prev(); +16166: UpdateKeyAndValueBuffer(); +16166: } +16166: Slice key() const override { +16166: +16166: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: Valid() +16166: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "Valid()" +16166: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 681 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: return key_buf_; +16166: } +16166: +16166: uint64_t write_unix_time() const override { return iter_->write_unix_time(); } +16166: Slice value() const override { +16166: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +16166: return value_buf_; +16166: } +16166: return iter_->value(); +16166: } +16166: Status status() const override { return iter_->status(); } +16166: bool IsKeyPinned() const override { +16166: +16166: return false; +16166: } +16166: bool IsValuePinned() const override { +16166: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +16166: return false; +16166: } +16166: return iter_->IsValuePinned(); +16166: } +16166: +16166: private: +16166: void UpdateKeyAndValueBuffer() { +16166: key_buf_.clear(); +16166: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +16166: value_buf_.clear(); +16166: } +16166: if (!Valid()) { +16166: return; +16166: } +16166: Slice original_key = iter_->key(); +16166: ReplaceInternalKeyWithMinTimestamp(&key_buf_, original_key, ts_sz_); +16166: if (kind_ == MemTableIterator::Kind::kRangeDelEntries) { +16166: Slice original_value = iter_->value(); +16166: AppendUserKeyWithMinTimestamp(&value_buf_, original_value, ts_sz_); +16166: } +16166: } +16166: bool arena_mode_; +16166: MemTableIterator::Kind kind_; +16166: size_t ts_sz_; +16166: MemTableIterator* iter_; +16166: std::string key_buf_; +16166: std::string value_buf_; +16166: }; +16166: +16166: InternalIterator* MemTable::NewTimestampStrippingIterator( +16166: const ReadOptions& read_options, +16166: UnownedPtr seqno_to_time_mapping, Arena* arena, +16166: const SliceTransform* prefix_extractor, size_t ts_sz) { +16166: +16166: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: arena != nullptr +16166: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "arena != nullptr" +16166: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 732 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: auto mem = arena->AllocateAligned(sizeof(TimestampStrippingIterator)); +16166: return new (mem) TimestampStrippingIterator( +16166: MemTableIterator::kPointEntries, *this, read_options, +16166: seqno_to_time_mapping, arena, prefix_extractor, ts_sz); +16166: } +16166: +16166: FragmentedRangeTombstoneIterator* MemTable::NewRangeTombstoneIterator( +16166: const ReadOptions& read_options, SequenceNumber read_seq, +16166: bool immutable_memtable) { +16166: if (read_options.ignore_range_deletions || +16166: is_range_del_table_empty_.load(std::memory_order_relaxed)) { +16166: return nullptr; +16166: } +16166: return NewRangeTombstoneIteratorInternal(read_options, read_seq, +16166: immutable_memtable); +16166: } +16166: +16166: FragmentedRangeTombstoneIterator* +16166: MemTable::NewTimestampStrippingRangeTombstoneIterator( +16166: const ReadOptions& read_options, SequenceNumber read_seq, size_t ts_sz) { +16166: if (read_options.ignore_range_deletions || +16166: is_range_del_table_empty_.load(std::memory_order_relaxed)) { +16166: return nullptr; +16166: } +16166: if (!timestamp_stripping_fragmented_range_tombstone_list_) { +16166: +16166: auto* unfragmented_iter = new TimestampStrippingIterator( +16166: MemTableIterator::kRangeDelEntries, *this, ReadOptions(), +16166: nullptr, nullptr, +16166: nullptr, ts_sz); +16166: +16166: timestamp_stripping_fragmented_range_tombstone_list_ = +16166: std::make_unique( +16166: std::unique_ptr(unfragmented_iter), +16166: comparator_.comparator); +16166: } +16166: return new FragmentedRangeTombstoneIterator( +16166: timestamp_stripping_fragmented_range_tombstone_list_.get(), +16166: comparator_.comparator, read_seq, read_options.timestamp); +16166: } +16166: +16166: FragmentedRangeTombstoneIterator* MemTable::NewRangeTombstoneIteratorInternal( +16166: const ReadOptions& read_options, SequenceNumber read_seq, +16166: bool immutable_memtable) { +16166: if (immutable_memtable) { +16166: +16166: +16166: +16166: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: IsFragmentedRangeTombstonesConstructed() +16166: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "IsFragmentedRangeTombstonesConstructed()" +16166: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 780 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: return new FragmentedRangeTombstoneIterator( +16166: fragmented_range_tombstone_list_.get(), comparator_.comparator, +16166: read_seq, read_options.timestamp); +16166: } +16166: +16166: +16166: std::shared_ptr cache = +16166: std::atomic_load_explicit(cached_range_tombstone_.Access(), +16166: std::memory_order_relaxed); +16166: +16166: if (!cache->initialized.load(std::memory_order_acquire)) { +16166: cache->reader_mutex.lock(); +16166: if (!cache->tombstones) { +16166: auto* unfragmented_iter = new MemTableIterator( +16166: MemTableIterator::kRangeDelEntries, *this, read_options); +16166: cache->tombstones.reset(new FragmentedRangeTombstoneList( +16166: std::unique_ptr(unfragmented_iter), +16166: comparator_.comparator)); +16166: cache->initialized.store(true, std::memory_order_release); +16166: } +16166: cache->reader_mutex.unlock(); +16166: } +16166: +16166: auto* fragmented_iter = new FragmentedRangeTombstoneIterator( +16166: cache, comparator_.comparator, read_seq, read_options.timestamp); +16166: return fragmented_iter; +16166: } +16166: +16166: void MemTable::ConstructFragmentedRangeTombstones() { +16166: +16166: +16166: +16166: if (!is_range_del_table_empty_.load(std::memory_order_relaxed)) { +16166: +16166: auto* unfragmented_iter = new MemTableIterator( +16166: MemTableIterator::kRangeDelEntries, *this, ReadOptions()); +16166: +16166: fragmented_range_tombstone_list_ = +16166: std::make_unique( +16166: std::unique_ptr(unfragmented_iter), +16166: comparator_.comparator); +16166: } +16166: } +16166: +16166: port::RWMutex* MemTable::GetLock(const Slice& key) { +16166: return &locks_[GetSliceRangedNPHash(key, locks_.size())]; +16166: } +16166: +16166: ReadOnlyMemTable::MemTableStats MemTable::ApproximateStats( +16166: const Slice& start_ikey, const Slice& end_ikey) { +16166: uint64_t entry_count = table_->ApproximateNumEntries(start_ikey, end_ikey); +16166: entry_count += range_del_table_->ApproximateNumEntries(start_ikey, end_ikey); +16166: if (entry_count == 0) { +16166: return {0, 0}; +16166: } +16166: uint64_t n = num_entries_.load(std::memory_order_relaxed); +16166: if (n == 0) { +16166: return {0, 0}; +16166: } +16166: if (entry_count > n) { +16166: +16166: +16166: +16166: entry_count = n; +16166: } +16166: uint64_t data_size = data_size_.load(std::memory_order_relaxed); +16166: return {entry_count * (data_size / n), entry_count}; +16166: } +16166: +16166: Status MemTable::VerifyEncodedEntry(Slice encoded, +16166: const ProtectionInfoKVOS64& kv_prot_info) { +16166: uint32_t ikey_len = 0; +16166: if (!GetVarint32(&encoded, &ikey_len)) { +16166: return Status::Corruption("Unable to parse internal key length"); +16166: } +16166: if (ikey_len < 8 + ts_sz_) { +16166: return Status::Corruption("Internal key length too short"); +16166: } +16166: if (ikey_len > encoded.size()) { +16166: return Status::Corruption("Internal key length too long"); +16166: } +16166: uint32_t value_len = 0; +16166: const size_t user_key_len = ikey_len - 8; +16166: Slice key(encoded.data(), user_key_len); +16166: encoded.remove_prefix(user_key_len); +16166: +16166: uint64_t packed = DecodeFixed64(encoded.data()); +16166: ValueType value_type = kMaxValue; +16166: SequenceNumber sequence_number = kMaxSequenceNumber; +16166: UnPackSequenceAndType(packed, &sequence_number, &value_type); +16166: encoded.remove_prefix(8); +16166: +16166: if (!GetVarint32(&encoded, &value_len)) { +16166: return Status::Corruption("Unable to parse value length"); +16166: } +16166: if (value_len < encoded.size()) { +16166: return Status::Corruption("Value length too short"); +16166: } +16166: if (value_len > encoded.size()) { +16166: return Status::Corruption("Value length too long"); +16166: } +16166: Slice value(encoded.data(), value_len); +16166: +16166: return kv_prot_info.StripS(sequence_number) +16166: .StripKVO(key, value, value_type) +16166: .GetStatus(); +16166: } +16166: +16166: void MemTable::UpdateEntryChecksum(const ProtectionInfoKVOS64* kv_prot_info, +16166: const Slice& key, const Slice& value, +16166: ValueType type, SequenceNumber s, +16166: char* checksum_ptr) { +16166: if (moptions_.protection_bytes_per_key == 0) { +16166: return; +16166: } +16166: +16166: if (kv_prot_info == nullptr) { +16166: ProtectionInfo64() +16166: .ProtectKVO(key, value, type) +16166: .ProtectS(s) +16166: .Encode(static_cast(moptions_.protection_bytes_per_key), +16166: checksum_ptr); +16166: } else { +16166: kv_prot_info->Encode( +16166: static_cast(moptions_.protection_bytes_per_key), checksum_ptr); +16166: } +16166: } +16166: +16166: Status MemTable::Add(SequenceNumber s, ValueType type, +16166: const Slice& key, +16166: const Slice& value, +16166: const ProtectionInfoKVOS64* kv_prot_info, +16166: bool allow_concurrent, +16166: MemTablePostProcessInfo* post_process_info, void** hint) { +16166: +16166: +16166: +16166: +16166: +16166: +16166: uint32_t key_size = static_cast(key.size()); +16166: uint32_t val_size = static_cast(value.size()); +16166: uint32_t internal_key_size = key_size + 8; +16166: const uint32_t encoded_len = VarintLength(internal_key_size) + +16166: internal_key_size + VarintLength(val_size) + +16166: val_size + moptions_.protection_bytes_per_key; +16166: char* buf = nullptr; +16166: std::unique_ptr& table = +16166: type == kTypeRangeDeletion ? range_del_table_ : table_; +16166: KeyHandle handle = table->Allocate(encoded_len, &buf); +16166: +16166: char* p = EncodeVarint32(buf, internal_key_size); +16166: memcpy(p, key.data(), key_size); +16166: Slice key_slice(p, key_size); +16166: p += key_size; +16166: uint64_t packed = PackSequenceAndType(s, type); +16166: EncodeFixed64(p, packed); +16166: p += 8; +16166: p = EncodeVarint32(p, val_size); +16166: memcpy(p, value.data(), val_size); +16166: +16166: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: (unsigned)(p + val_size - buf + moptions_.protection_bytes_per_key) == (unsigned)encoded_len +16166: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "(unsigned)(p + val_size - buf + moptions_.protection_bytes_per_key) == (unsigned)encoded_len" +16166: # 941 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: +16166: # 942 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: UpdateEntryChecksum(kv_prot_info, key, value, type, s, +16166: buf + encoded_len - moptions_.protection_bytes_per_key); +16166: Slice encoded(buf, encoded_len - moptions_.protection_bytes_per_key); +16166: if (kv_prot_info != nullptr) { +16166: rocksdb::SyncPoint::GetInstance()->Process("MemTable::Add:Encoded", &encoded); +16166: Status status = VerifyEncodedEntry(encoded, *kv_prot_info); +16166: if (!status.ok()) { +16166: return status; +16166: } +16166: } +16166: +16166: Slice key_without_ts = StripTimestampFromUserKey(key, ts_sz_); +16166: +16166: if (!allow_concurrent) { +16166: +16166: +16166: if (table == table_ && insert_with_hint_prefix_extractor_ != nullptr && +16166: insert_with_hint_prefix_extractor_->InDomain(key_slice)) { +16166: Slice prefix = insert_with_hint_prefix_extractor_->Transform(key_slice); +16166: bool res = table->InsertKeyWithHint(handle, &insert_hints_[prefix]); +16166: if ((__builtin_expect((!res), 0))) { +16166: return Status::TryAgain("key+seq exists"); +16166: } +16166: } else { +16166: bool res = table->InsertKey(handle); +16166: if ((__builtin_expect((!res), 0))) { +16166: return Status::TryAgain("key+seq exists"); +16166: } +16166: } +16166: +16166: +16166: +16166: num_entries_.store(num_entries_.load(std::memory_order_relaxed) + 1, +16166: std::memory_order_relaxed); +16166: data_size_.store(data_size_.load(std::memory_order_relaxed) + encoded_len, +16166: std::memory_order_relaxed); +16166: if (type == kTypeDeletion || type == kTypeSingleDeletion || +16166: type == kTypeDeletionWithTimestamp) { +16166: num_deletes_.store(num_deletes_.load(std::memory_order_relaxed) + 1, +16166: std::memory_order_relaxed); +16166: } else if (type == kTypeRangeDeletion) { +16166: uint64_t val = num_range_deletes_.load(std::memory_order_relaxed) + 1; +16166: num_range_deletes_.store(val, std::memory_order_relaxed); +16166: } +16166: +16166: if (bloom_filter_ && prefix_extractor_ && +16166: prefix_extractor_->InDomain(key_without_ts)) { +16166: bloom_filter_->Add(prefix_extractor_->Transform(key_without_ts)); +16166: } +16166: if (bloom_filter_ && moptions_.memtable_whole_key_filtering) { +16166: bloom_filter_->Add(key_without_ts); +16166: } +16166: +16166: +16166: +16166: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: first_seqno_ == 0 || s >= first_seqno_ +16166: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "first_seqno_ == 0 || s >= first_seqno_" +16166: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 998 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: if (first_seqno_ == 0) { +16166: first_seqno_.store(s, std::memory_order_relaxed); +16166: +16166: if (earliest_seqno_ == kMaxSequenceNumber) { +16166: earliest_seqno_.store(GetFirstSequenceNumber(), +16166: std::memory_order_relaxed); +16166: } +16166: +16166: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: first_seqno_.load() >= earliest_seqno_.load() +16166: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "first_seqno_.load() >= earliest_seqno_.load()" +16166: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1006 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: } +16166: +16166: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: post_process_info == nullptr +16166: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "post_process_info == nullptr" +16166: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1008 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: +16166: MaybeUpdateNewestUDT(key_slice); +16166: UpdateFlushState(); +16166: } else { +16166: bool res = (hint == nullptr) +16166: ? table->InsertKeyConcurrently(handle) +16166: : table->InsertKeyWithHintConcurrently(handle, hint); +16166: if ((__builtin_expect((!res), 0))) { +16166: return Status::TryAgain("key+seq exists"); +16166: } +16166: +16166: +16166: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: post_process_info != nullptr +16166: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "post_process_info != nullptr" +16166: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1021 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: post_process_info->num_entries++; +16166: post_process_info->data_size += encoded_len; +16166: if (type == kTypeDeletion) { +16166: post_process_info->num_deletes++; +16166: } +16166: +16166: if (bloom_filter_ && prefix_extractor_ && +16166: prefix_extractor_->InDomain(key_without_ts)) { +16166: bloom_filter_->AddConcurrently( +16166: prefix_extractor_->Transform(key_without_ts)); +16166: } +16166: if (bloom_filter_ && moptions_.memtable_whole_key_filtering) { +16166: bloom_filter_->AddConcurrently(key_without_ts); +16166: } +16166: +16166: +16166: uint64_t cur_seq_num = first_seqno_.load(std::memory_order_relaxed); +16166: while ((cur_seq_num == 0 || s < cur_seq_num) && +16166: !first_seqno_.compare_exchange_weak(cur_seq_num, s)) { +16166: } +16166: uint64_t cur_earliest_seqno = +16166: earliest_seqno_.load(std::memory_order_relaxed); +16166: while ( +16166: (cur_earliest_seqno == kMaxSequenceNumber || s < cur_earliest_seqno) && +16166: !earliest_seqno_.compare_exchange_weak(cur_earliest_seqno, s)) { +16166: } +16166: } +16166: if (type == kTypeRangeDeletion) { +16166: auto new_cache = std::make_shared(); +16166: size_t size = cached_range_tombstone_.Size(); +16166: if (allow_concurrent) { +16166: post_process_info->num_range_deletes++; +16166: range_del_mutex_.lock(); +16166: } +16166: for (size_t i = 0; i < size; ++i) { +16166: std::shared_ptr* local_cache_ref_ptr = +16166: cached_range_tombstone_.AccessAtCore(i); +16166: auto new_local_cache_ref = std::make_shared< +16166: const std::shared_ptr>(new_cache); +16166: +16166: +16166: +16166: +16166: +16166: std::atomic_store_explicit( +16166: local_cache_ref_ptr, +16166: std::shared_ptr( +16166: new_local_cache_ref, new_cache.get()), +16166: std::memory_order_relaxed); +16166: } +16166: +16166: if (allow_concurrent) { +16166: range_del_mutex_.unlock(); +16166: } +16166: is_range_del_table_empty_.store(false, std::memory_order_relaxed); +16166: } +16166: UpdateOldestKeyTime(); +16166: +16166: rocksdb::SyncPoint::GetInstance()->Process("MemTable::Add:BeforeReturn:Encoded", &encoded); +16166: return Status::OK(); +16166: } +16166: +16166: +16166: namespace { +16166: +16166: struct Saver { +16166: Status* status; +16166: const LookupKey* key; +16166: bool* found_final_value; +16166: bool* merge_in_progress; +16166: std::string* value; +16166: PinnableWideColumns* columns; +16166: SequenceNumber seq; +16166: std::string* timestamp; +16166: const MergeOperator* merge_operator; +16166: +16166: MergeContext* merge_context; +16166: SequenceNumber max_covering_tombstone_seq; +16166: MemTable* mem; +16166: Logger* logger; +16166: Statistics* statistics; +16166: bool inplace_update_support; +16166: bool do_merge; +16166: SystemClock* clock; +16166: +16166: ReadCallback* callback_; +16166: bool* is_blob_index; +16166: bool allow_data_in_errors; +16166: uint32_t protection_bytes_per_key; +16166: bool CheckCallback(SequenceNumber _seq) { +16166: if (callback_) { +16166: return callback_->IsVisible(_seq); +16166: } +16166: return true; +16166: } +16166: }; +16166: } +16166: +16166: static bool SaveValue(void* arg, const char* entry) { +16166: Saver* s = static_cast(arg); +16166: +16166: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: s != nullptr +16166: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "s != nullptr" +16166: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1122 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: !s->value || !s->columns +16166: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "!s->value || !s->columns" +16166: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1123 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: !*(s->found_final_value) +16166: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "!*(s->found_final_value)" +16166: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1124 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: s->status->ok() || s->status->IsMergeInProgress() +16166: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "s->status->ok() || s->status->IsMergeInProgress()" +16166: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1125 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: MergeContext* merge_context = s->merge_context; +16166: SequenceNumber max_covering_tombstone_seq = s->max_covering_tombstone_seq; +16166: const MergeOperator* merge_operator = s->merge_operator; +16166: +16166: +16166: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: merge_context != nullptr +16166: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "merge_context != nullptr" +16166: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1131 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: +16166: +16166: uint32_t key_length = 0; +16166: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +16166: +16166: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: key_length >= 8 +16166: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "key_length >= 8" +16166: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1137 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: Slice user_key_slice = Slice(key_ptr, key_length - 8); +16166: const Comparator* user_comparator = +16166: s->mem->GetInternalKeyComparator().user_comparator(); +16166: size_t ts_sz = user_comparator->timestamp_size(); +16166: if (ts_sz && s->timestamp && max_covering_tombstone_seq > 0) { +16166: +16166: +16166: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: s->timestamp->size() == ts_sz +16166: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "s->timestamp->size() == ts_sz" +16166: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1144 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: } +16166: if (user_comparator->EqualWithoutTimestamp(user_key_slice, +16166: s->key->user_key())) { +16166: +16166: rocksdb::SyncPoint::GetInstance()->Process("Memtable::SaveValue:Found:entry", &entry); +16166: std::optional read_lock; +16166: if (s->inplace_update_support) { +16166: read_lock.emplace(s->mem->GetLock(s->key->user_key())); +16166: } +16166: +16166: if (s->protection_bytes_per_key > 0) { +16166: *(s->status) = MemTable::VerifyEntryChecksum( +16166: entry, s->protection_bytes_per_key, s->allow_data_in_errors); +16166: if (!s->status->ok()) { +16166: *(s->found_final_value) = true; +16166: rocksdb::Log((InfoLogLevel::ERROR_LEVEL), ((s->logger)), ("[%s:" "1160" "] " "In SaveValue: %s"), RocksLogShorterFileName("./db/memtable.cc"), s->status->getState()); +16166: +16166: return false; +16166: } +16166: } +16166: +16166: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +16166: ValueType type; +16166: SequenceNumber seq; +16166: UnPackSequenceAndType(tag, &seq, &type); +16166: +16166: if (!s->CheckCallback(seq)) { +16166: return true; +16166: } +16166: +16166: if (s->seq == kMaxSequenceNumber) { +16166: s->seq = seq; +16166: if (s->seq > max_covering_tombstone_seq) { +16166: if (ts_sz && s->timestamp != nullptr) { +16166: +16166: +16166: +16166: +16166: Slice ts = ExtractTimestampFromUserKey(user_key_slice, ts_sz); +16166: s->timestamp->assign(ts.data(), ts_sz); +16166: } +16166: } else { +16166: s->seq = max_covering_tombstone_seq; +16166: } +16166: } +16166: +16166: if (ts_sz > 0 && s->timestamp != nullptr) { +16166: if (!s->timestamp->empty()) { +16166: +16166: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ts_sz == s->timestamp->size() +16166: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "ts_sz == s->timestamp->size()" +16166: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1193 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: } +16166: +16166: const std::string kMaxTs(ts_sz, '\xff'); +16166: if (s->timestamp->empty() || +16166: user_comparator->CompareTimestamp(*(s->timestamp), kMaxTs) == 0) { +16166: Slice ts = ExtractTimestampFromUserKey(user_key_slice, ts_sz); +16166: s->timestamp->assign(ts.data(), ts_sz); +16166: } +16166: } +16166: +16166: if ((type == kTypeValue || type == kTypeMerge || type == kTypeBlobIndex || +16166: type == kTypeWideColumnEntity || type == kTypeDeletion || +16166: type == kTypeSingleDeletion || type == kTypeDeletionWithTimestamp || +16166: type == kTypeValuePreferredSeqno) && +16166: max_covering_tombstone_seq > seq) { +16166: type = kTypeRangeDeletion; +16166: } +16166: switch (type) { +16166: case kTypeBlobIndex: { +16166: if (!s->do_merge) { +16166: *(s->status) = Status::NotSupported( +16166: "GetMergeOperands not supported by stacked BlobDB"); +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: +16166: if (*(s->merge_in_progress)) { +16166: *(s->status) = Status::NotSupported( +16166: "Merge operator not supported by stacked BlobDB"); +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: +16166: if (s->is_blob_index == nullptr) { +16166: rocksdb::Log((InfoLogLevel::ERROR_LEVEL), ((s->logger)), ("[%s:" "1228" "] " "Encountered unexpected blob index."), RocksLogShorterFileName("./db/memtable.cc")); +16166: *(s->status) = Status::NotSupported( +16166: "Encountered unexpected blob index. Please open DB with " +16166: "ROCKSDB_NAMESPACE::blob_db::BlobDB."); +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: +16166: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +16166: +16166: *(s->status) = Status::OK(); +16166: +16166: if (s->value) { +16166: s->value->assign(v.data(), v.size()); +16166: } else if (s->columns) { +16166: s->columns->SetPlainValue(v); +16166: } +16166: +16166: *(s->found_final_value) = true; +16166: *(s->is_blob_index) = true; +16166: +16166: return false; +16166: } +16166: case kTypeValue: +16166: case kTypeValuePreferredSeqno: { +16166: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +16166: if (type == kTypeValuePreferredSeqno) { +16166: v = ParsePackedValueForValue(v); +16166: } +16166: +16166: ReadOnlyMemTable::HandleTypeValue( +16166: s->key->user_key(), v, s->inplace_update_support == false, +16166: s->do_merge, *(s->merge_in_progress), merge_context, +16166: s->merge_operator, s->clock, s->statistics, s->logger, s->status, +16166: s->value, s->columns, s->is_blob_index); +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: case kTypeWideColumnEntity: { +16166: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +16166: +16166: *(s->status) = Status::OK(); +16166: +16166: if (!s->do_merge) { +16166: +16166: +16166: +16166: Slice value_of_default; +16166: *(s->status) = WideColumnSerialization::GetValueOfDefaultColumn( +16166: v, value_of_default); +16166: +16166: if (s->status->ok()) { +16166: merge_context->PushOperand( +16166: value_of_default, +16166: s->inplace_update_support == false ); +16166: } +16166: } else if (*(s->merge_in_progress)) { +16166: +16166: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: s->do_merge +16166: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "s->do_merge" +16166: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1285 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: +16166: if (s->value || s->columns) { +16166: +16166: +16166: +16166: *(s->status) = MergeHelper::TimedFullMerge( +16166: merge_operator, s->key->user_key(), MergeHelper::kWideBaseValue, +16166: v, merge_context->GetOperands(), s->logger, s->statistics, +16166: s->clock, true, +16166: nullptr, s->value, s->columns); +16166: } +16166: } else if (s->value) { +16166: Slice value_of_default; +16166: *(s->status) = WideColumnSerialization::GetValueOfDefaultColumn( +16166: v, value_of_default); +16166: if (s->status->ok()) { +16166: s->value->assign(value_of_default.data(), value_of_default.size()); +16166: } +16166: } else if (s->columns) { +16166: *(s->status) = s->columns->SetWideColumnValue(v); +16166: } +16166: +16166: *(s->found_final_value) = true; +16166: +16166: if (s->is_blob_index != nullptr) { +16166: *(s->is_blob_index) = false; +16166: } +16166: +16166: return false; +16166: } +16166: case kTypeDeletion: +16166: case kTypeDeletionWithTimestamp: +16166: case kTypeSingleDeletion: +16166: case kTypeRangeDeletion: { +16166: ReadOnlyMemTable::HandleTypeDeletion( +16166: s->key->user_key(), *(s->merge_in_progress), s->merge_context, +16166: s->merge_operator, s->clock, s->statistics, s->logger, s->status, +16166: s->value, s->columns); +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: case kTypeMerge: { +16166: if (!merge_operator) { +16166: *(s->status) = Status::InvalidArgument( +16166: "merge_operator is not properly initialized."); +16166: +16166: +16166: +16166: +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: Slice v = GetLengthPrefixedSlice(key_ptr + key_length); +16166: *(s->merge_in_progress) = true; +16166: merge_context->PushOperand( +16166: v, s->inplace_update_support == false ); +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.internal_merge_point_lookup_count += 1; } static_assert(true, "semicolon required"); +16166: +16166: if (s->do_merge && merge_operator->ShouldMerge( +16166: merge_context->GetOperandsDirectionBackward())) { +16166: if (s->value || s->columns) { +16166: +16166: +16166: +16166: *(s->status) = MergeHelper::TimedFullMerge( +16166: merge_operator, s->key->user_key(), MergeHelper::kNoBaseValue, +16166: merge_context->GetOperands(), s->logger, s->statistics, +16166: s->clock, true, +16166: nullptr, s->value, s->columns); +16166: } +16166: +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: if (merge_context->get_merge_operands_options != nullptr && +16166: merge_context->get_merge_operands_options->continue_cb != nullptr && +16166: !merge_context->get_merge_operands_options->continue_cb(v)) { +16166: +16166: *(s->found_final_value) = true; +16166: return false; +16166: } +16166: +16166: return true; +16166: } +16166: default: { +16166: std::string msg("Corrupted value not expected."); +16166: if (s->allow_data_in_errors) { +16166: msg.append("Unrecognized value type: " + +16166: std::to_string(static_cast(type)) + ". "); +16166: msg.append("User key: " + user_key_slice.ToString( true) + +16166: ". "); +16166: msg.append("seq: " + std::to_string(seq) + "."); +16166: } +16166: *(s->found_final_value) = true; +16166: *(s->status) = Status::Corruption(msg.c_str()); +16166: return false; +16166: } +16166: } +16166: } +16166: +16166: +16166: return false; +16166: } +16166: +16166: bool MemTable::Get(const LookupKey& key, std::string* value, +16166: PinnableWideColumns* columns, std::string* timestamp, +16166: Status* s, MergeContext* merge_context, +16166: SequenceNumber* max_covering_tombstone_seq, +16166: SequenceNumber* seq, const ReadOptions& read_opts, +16166: bool immutable_memtable, ReadCallback* callback, +16166: bool* is_blob_index, bool do_merge) { +16166: +16166: if (IsEmpty()) { +16166: +16166: return false; +16166: } +16166: +16166: PerfStepTimer perf_step_timer_get_from_memtable_time(&(perf_context.get_from_memtable_time)); perf_step_timer_get_from_memtable_time.Start();; +16166: +16166: std::unique_ptr range_del_iter( +16166: NewRangeTombstoneIterator(read_opts, +16166: GetInternalKeySeqno(key.internal_key()), +16166: immutable_memtable)); +16166: if (range_del_iter != nullptr) { +16166: SequenceNumber covering_seq = +16166: range_del_iter->MaxCoveringTombstoneSeqnum(key.user_key()); +16166: if (covering_seq > *max_covering_tombstone_seq) { +16166: *max_covering_tombstone_seq = covering_seq; +16166: if (timestamp) { +16166: +16166: +16166: timestamp->assign(range_del_iter->timestamp().data(), +16166: range_del_iter->timestamp().size()); +16166: } +16166: } +16166: } +16166: +16166: bool found_final_value = false; +16166: bool merge_in_progress = s->IsMergeInProgress(); +16166: bool may_contain = true; +16166: Slice user_key_without_ts = StripTimestampFromUserKey(key.user_key(), ts_sz_); +16166: bool bloom_checked = false; +16166: if (bloom_filter_) { +16166: +16166: +16166: if (moptions_.memtable_whole_key_filtering) { +16166: may_contain = bloom_filter_->MayContain(user_key_without_ts); +16166: bloom_checked = true; +16166: } else { +16166: +16166: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: prefix_extractor_ +16166: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "prefix_extractor_" +16166: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1435 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: if (prefix_extractor_->InDomain(user_key_without_ts)) { +16166: may_contain = bloom_filter_->MayContain( +16166: prefix_extractor_->Transform(user_key_without_ts)); +16166: bloom_checked = true; +16166: } +16166: } +16166: } +16166: +16166: if (bloom_filter_ && !may_contain) { +16166: +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +16166: *seq = kMaxSequenceNumber; +16166: } else { +16166: if (bloom_checked) { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +16166: } +16166: GetFromTable(key, *max_covering_tombstone_seq, do_merge, callback, +16166: is_blob_index, value, columns, timestamp, s, merge_context, +16166: seq, &found_final_value, &merge_in_progress); +16166: } +16166: +16166: +16166: +16166: if (!found_final_value && merge_in_progress) { +16166: if (s->ok()) { +16166: *s = Status::MergeInProgress(); +16166: } else { +16166: +16166: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: s->IsMergeInProgress() +16166: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "s->IsMergeInProgress()" +16166: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1463 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: } +16166: } +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.get_from_memtable_count += 1; } static_assert(true, "semicolon required"); +16166: return found_final_value; +16166: } +16166: +16166: void MemTable::GetFromTable(const LookupKey& key, +16166: SequenceNumber max_covering_tombstone_seq, +16166: bool do_merge, ReadCallback* callback, +16166: bool* is_blob_index, std::string* value, +16166: PinnableWideColumns* columns, +16166: std::string* timestamp, Status* s, +16166: MergeContext* merge_context, SequenceNumber* seq, +16166: bool* found_final_value, bool* merge_in_progress) { +16166: Saver saver; +16166: saver.status = s; +16166: saver.found_final_value = found_final_value; +16166: saver.merge_in_progress = merge_in_progress; +16166: saver.key = &key; +16166: saver.value = value; +16166: saver.columns = columns; +16166: saver.timestamp = timestamp; +16166: saver.seq = kMaxSequenceNumber; +16166: saver.mem = this; +16166: saver.merge_context = merge_context; +16166: saver.max_covering_tombstone_seq = max_covering_tombstone_seq; +16166: saver.merge_operator = moptions_.merge_operator; +16166: saver.logger = moptions_.info_log; +16166: saver.inplace_update_support = moptions_.inplace_update_support; +16166: saver.statistics = moptions_.statistics; +16166: saver.clock = clock_; +16166: saver.callback_ = callback; +16166: saver.is_blob_index = is_blob_index; +16166: saver.do_merge = do_merge; +16166: saver.allow_data_in_errors = moptions_.allow_data_in_errors; +16166: saver.protection_bytes_per_key = moptions_.protection_bytes_per_key; +16166: +16166: if (!moptions_.paranoid_memory_checks) { +16166: table_->Get(key, &saver, SaveValue); +16166: } else { +16166: Status check_s = table_->GetAndValidate(key, &saver, SaveValue, +16166: moptions_.allow_data_in_errors); +16166: if (check_s.IsCorruption()) { +16166: *(saver.status) = check_s; +16166: +16166: *(saver.found_final_value) = true; +16166: } +16166: } +16166: +16166: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: s->ok() || s->IsMergeInProgress() || *found_final_value +16166: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "s->ok() || s->IsMergeInProgress() || *found_final_value" +16166: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1512 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: *seq = saver.seq; +16166: } +16166: +16166: void MemTable::MultiGet(const ReadOptions& read_options, MultiGetRange* range, +16166: ReadCallback* callback, bool immutable_memtable) { +16166: +16166: if (IsEmpty()) { +16166: +16166: return; +16166: } +16166: PerfStepTimer perf_step_timer_get_from_memtable_time(&(perf_context.get_from_memtable_time)); perf_step_timer_get_from_memtable_time.Start();; +16166: +16166: +16166: +16166: +16166: bool no_range_del = read_options.ignore_range_deletions || +16166: is_range_del_table_empty_.load(std::memory_order_relaxed); +16166: MultiGetRange temp_range(*range, range->begin(), range->end()); +16166: if (bloom_filter_ && no_range_del) { +16166: bool whole_key = +16166: !prefix_extractor_ || moptions_.memtable_whole_key_filtering; +16166: std::array bloom_keys; +16166: std::array may_match; +16166: std::array range_indexes; +16166: int num_keys = 0; +16166: for (auto iter = temp_range.begin(); iter != temp_range.end(); ++iter) { +16166: if (whole_key) { +16166: bloom_keys[num_keys] = iter->ukey_without_ts; +16166: range_indexes[num_keys++] = iter.index(); +16166: } else if (prefix_extractor_->InDomain(iter->ukey_without_ts)) { +16166: bloom_keys[num_keys] = +16166: prefix_extractor_->Transform(iter->ukey_without_ts); +16166: range_indexes[num_keys++] = iter.index(); +16166: } +16166: } +16166: bloom_filter_->MayContain(num_keys, bloom_keys.data(), may_match.data()); +16166: for (int i = 0; i < num_keys; ++i) { +16166: if (!may_match[i]) { +16166: temp_range.SkipIndex(range_indexes[i]); +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_miss_count += 1; } static_assert(true, "semicolon required"); +16166: } else { +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.bloom_memtable_hit_count += 1; } static_assert(true, "semicolon required"); +16166: } +16166: } +16166: } +16166: for (auto iter = temp_range.begin(); iter != temp_range.end(); ++iter) { +16166: bool found_final_value{false}; +16166: bool merge_in_progress = iter->s->IsMergeInProgress(); +16166: if (!no_range_del) { +16166: std::unique_ptr range_del_iter( +16166: NewRangeTombstoneIteratorInternal( +16166: read_options, GetInternalKeySeqno(iter->lkey->internal_key()), +16166: immutable_memtable)); +16166: SequenceNumber covering_seq = +16166: range_del_iter->MaxCoveringTombstoneSeqnum(iter->lkey->user_key()); +16166: if (covering_seq > iter->max_covering_tombstone_seq) { +16166: iter->max_covering_tombstone_seq = covering_seq; +16166: if (iter->timestamp) { +16166: +16166: +16166: iter->timestamp->assign(range_del_iter->timestamp().data(), +16166: range_del_iter->timestamp().size()); +16166: } +16166: } +16166: } +16166: SequenceNumber dummy_seq; +16166: GetFromTable(*(iter->lkey), iter->max_covering_tombstone_seq, true, +16166: callback, &iter->is_blob_index, +16166: iter->value ? iter->value->GetSelf() : nullptr, iter->columns, +16166: iter->timestamp, iter->s, &(iter->merge_context), &dummy_seq, +16166: &found_final_value, &merge_in_progress); +16166: +16166: if (!found_final_value && merge_in_progress) { +16166: if (iter->s->ok()) { +16166: *(iter->s) = Status::MergeInProgress(); +16166: } else { +16166: +16166: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: iter->s->IsMergeInProgress() +16166: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "iter->s->IsMergeInProgress()" +16166: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1589 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: } +16166: } +16166: +16166: if (found_final_value || +16166: (!iter->s->ok() && !iter->s->IsMergeInProgress())) { +16166: +16166: +16166: +16166: +16166: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: found_final_value +16166: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "found_final_value" +16166: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1598 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: if (iter->value) { +16166: iter->value->PinSelf(); +16166: range->AddValueSize(iter->value->size()); +16166: } else { +16166: +16166: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: iter->columns +16166: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "iter->columns" +16166: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1603 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: range->AddValueSize(iter->columns->serialized_size()); +16166: } +16166: +16166: range->MarkKeyDone(iter); +16166: RecordTick(moptions_.statistics, MEMTABLE_HIT); +16166: if (range->GetValueSize() > read_options.value_size_soft_limit) { +16166: +16166: for (auto range_iter = range->begin(); range_iter != range->end(); +16166: ++range_iter) { +16166: range->MarkKeyDone(range_iter); +16166: *(range_iter->s) = Status::Aborted(); +16166: } +16166: break; +16166: } +16166: } +16166: } +16166: if (perf_level >= PerfLevel::kEnableCount) { perf_context.get_from_memtable_count += 1; } static_assert(true, "semicolon required"); +16166: } +16166: +16166: Status MemTable::Update(SequenceNumber seq, ValueType value_type, +16166: const Slice& key, const Slice& value, +16166: const ProtectionInfoKVOS64* kv_prot_info) { +16166: LookupKey lkey(key, seq); +16166: Slice mem_key = lkey.memtable_key(); +16166: +16166: std::unique_ptr iter( +16166: table_->GetDynamicPrefixIterator()); +16166: iter->Seek(lkey.internal_key(), mem_key.data()); +16166: +16166: if (iter->Valid()) { +16166: +16166: +16166: +16166: +16166: const char* entry = iter->key(); +16166: uint32_t key_length = 0; +16166: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +16166: if (comparator_.comparator.user_comparator()->Equal( +16166: Slice(key_ptr, key_length - 8), lkey.user_key())) { +16166: +16166: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +16166: ValueType type; +16166: SequenceNumber existing_seq; +16166: UnPackSequenceAndType(tag, &existing_seq, &type); +16166: +16166: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: existing_seq != seq +16166: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "existing_seq != seq" +16166: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1648 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: if (type == value_type) { +16166: Slice prev_value = GetLengthPrefixedSlice(key_ptr + key_length); +16166: uint32_t prev_size = static_cast(prev_value.size()); +16166: uint32_t new_size = static_cast(value.size()); +16166: +16166: +16166: if (new_size <= prev_size) { +16166: WriteLock wl(GetLock(lkey.user_key())); +16166: char* p = +16166: EncodeVarint32(const_cast(key_ptr) + key_length, new_size); +16166: memcpy(p, value.data(), value.size()); +16166: +16166: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: (unsigned)((p + value.size()) - entry) == (unsigned)(VarintLength(key_length) + key_length + VarintLength(value.size()) + value.size()) +16166: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "(unsigned)((p + value.size()) - entry) == (unsigned)(VarintLength(key_length) + key_length + VarintLength(value.size()) + value.size())" +16166: # 1660 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: +16166: +16166: # 1662 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: RecordTick(moptions_.statistics, NUMBER_KEYS_UPDATED); +16166: if (kv_prot_info != nullptr) { +16166: ProtectionInfoKVOS64 updated_kv_prot_info(*kv_prot_info); +16166: +16166: updated_kv_prot_info.UpdateS(seq, existing_seq); +16166: UpdateEntryChecksum(&updated_kv_prot_info, key, value, type, +16166: existing_seq, p + value.size()); +16166: Slice encoded(entry, p + value.size() - entry); +16166: return VerifyEncodedEntry(encoded, updated_kv_prot_info); +16166: } else { +16166: UpdateEntryChecksum(nullptr, key, value, type, existing_seq, +16166: p + value.size()); +16166: } +16166: return Status::OK(); +16166: } +16166: } +16166: } +16166: } +16166: +16166: +16166: return Add(seq, value_type, key, value, kv_prot_info); +16166: } +16166: +16166: Status MemTable::UpdateCallback(SequenceNumber seq, const Slice& key, +16166: const Slice& delta, +16166: const ProtectionInfoKVOS64* kv_prot_info) { +16166: LookupKey lkey(key, seq); +16166: Slice memkey = lkey.memtable_key(); +16166: +16166: std::unique_ptr iter( +16166: table_->GetDynamicPrefixIterator()); +16166: iter->Seek(lkey.internal_key(), memkey.data()); +16166: +16166: if (iter->Valid()) { +16166: +16166: +16166: +16166: +16166: const char* entry = iter->key(); +16166: uint32_t key_length = 0; +16166: const char* key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +16166: if (comparator_.comparator.user_comparator()->Equal( +16166: Slice(key_ptr, key_length - 8), lkey.user_key())) { +16166: +16166: const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); +16166: ValueType type; +16166: uint64_t existing_seq; +16166: UnPackSequenceAndType(tag, &existing_seq, &type); +16166: if (type == kTypeValue) { +16166: Slice prev_value = GetLengthPrefixedSlice(key_ptr + key_length); +16166: uint32_t prev_size = static_cast(prev_value.size()); +16166: +16166: char* prev_buffer = const_cast(prev_value.data()); +16166: uint32_t new_prev_size = prev_size; +16166: +16166: std::string str_value; +16166: WriteLock wl(GetLock(lkey.user_key())); +16166: auto status = moptions_.inplace_callback(prev_buffer, &new_prev_size, +16166: delta, &str_value); +16166: if (status == UpdateStatus::UPDATED_INPLACE) { +16166: +16166: +16166: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: new_prev_size <= prev_size +16166: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "new_prev_size <= prev_size" +16166: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1724 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: if (new_prev_size < prev_size) { +16166: +16166: char* p = EncodeVarint32(const_cast(key_ptr) + key_length, +16166: new_prev_size); +16166: if (VarintLength(new_prev_size) < VarintLength(prev_size)) { +16166: +16166: memcpy(p, prev_buffer, new_prev_size); +16166: prev_buffer = p; +16166: } +16166: } +16166: RecordTick(moptions_.statistics, NUMBER_KEYS_UPDATED); +16166: UpdateFlushState(); +16166: Slice new_value(prev_buffer, new_prev_size); +16166: if (kv_prot_info != nullptr) { +16166: ProtectionInfoKVOS64 updated_kv_prot_info(*kv_prot_info); +16166: +16166: updated_kv_prot_info.UpdateS(seq, existing_seq); +16166: updated_kv_prot_info.UpdateV(delta, new_value); +16166: Slice encoded(entry, prev_buffer + new_prev_size - entry); +16166: UpdateEntryChecksum(&updated_kv_prot_info, key, new_value, type, +16166: existing_seq, prev_buffer + new_prev_size); +16166: return VerifyEncodedEntry(encoded, updated_kv_prot_info); +16166: } else { +16166: UpdateEntryChecksum(nullptr, key, new_value, type, existing_seq, +16166: prev_buffer + new_prev_size); +16166: } +16166: return Status::OK(); +16166: } else if (status == UpdateStatus::UPDATED) { +16166: Status s; +16166: if (kv_prot_info != nullptr) { +16166: ProtectionInfoKVOS64 updated_kv_prot_info(*kv_prot_info); +16166: updated_kv_prot_info.UpdateV(delta, str_value); +16166: s = Add(seq, kTypeValue, key, Slice(str_value), +16166: &updated_kv_prot_info); +16166: } else { +16166: s = Add(seq, kTypeValue, key, Slice(str_value), +16166: nullptr ); +16166: } +16166: RecordTick(moptions_.statistics, NUMBER_KEYS_WRITTEN); +16166: UpdateFlushState(); +16166: return s; +16166: } else if (status == UpdateStatus::UPDATE_FAILED) { +16166: +16166: +16166: UpdateFlushState(); +16166: return Status::OK(); +16166: } +16166: } +16166: } +16166: } +16166: +16166: return Status::NotFound(); +16166: } +16166: +16166: size_t MemTable::CountSuccessiveMergeEntries(const LookupKey& key, +16166: size_t limit) { +16166: Slice memkey = key.memtable_key(); +16166: +16166: +16166: +16166: +16166: std::unique_ptr iter( +16166: table_->GetDynamicPrefixIterator()); +16166: iter->Seek(key.internal_key(), memkey.data()); +16166: +16166: size_t num_successive_merges = 0; +16166: +16166: for (; iter->Valid() && num_successive_merges < limit; iter->Next()) { +16166: const char* entry = iter->key(); +16166: uint32_t key_length = 0; +16166: const char* iter_key_ptr = GetVarint32Ptr(entry, entry + 5, &key_length); +16166: if (!comparator_.comparator.user_comparator()->Equal( +16166: Slice(iter_key_ptr, key_length - 8), key.user_key())) { +16166: break; +16166: } +16166: +16166: const uint64_t tag = DecodeFixed64(iter_key_ptr + key_length - 8); +16166: ValueType type; +16166: uint64_t unused; +16166: UnPackSequenceAndType(tag, &unused, &type); +16166: if (type != kTypeMerge) { +16166: break; +16166: } +16166: +16166: ++num_successive_merges; +16166: } +16166: +16166: return num_successive_merges; +16166: } +16166: +16166: void MemTableRep::Get(const LookupKey& k, void* callback_args, +16166: bool (*callback_func)(void* arg, const char* entry)) { +16166: auto iter = GetDynamicPrefixIterator(); +16166: for (iter->Seek(k.internal_key(), k.memtable_key().data()); +16166: iter->Valid() && callback_func(callback_args, iter->key()); +16166: iter->Next()) { +16166: } +16166: } +16166: +16166: void MemTable::RefLogContainingPrepSection(uint64_t log) { +16166: +16166: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: log > 0 +16166: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "log > 0" +16166: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1825 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: auto cur = min_prep_log_referenced_.load(); +16166: while ((log < cur || cur == 0) && +16166: !min_prep_log_referenced_.compare_exchange_strong(cur, log)) { +16166: cur = min_prep_log_referenced_.load(); +16166: } +16166: } +16166: +16166: uint64_t MemTable::GetMinLogContainingPrepSection() { +16166: return min_prep_log_referenced_.load(); +16166: } +16166: +16166: void MemTable::MaybeUpdateNewestUDT(const Slice& user_key) { +16166: if (ts_sz_ == 0 || persist_user_defined_timestamps_) { +16166: return; +16166: } +16166: const Comparator* ucmp = GetInternalKeyComparator().user_comparator(); +16166: Slice udt = ExtractTimestampFromUserKey(user_key, ts_sz_); +16166: if (newest_udt_.empty() || ucmp->CompareTimestamp(udt, newest_udt_) > 0) { +16166: newest_udt_ = udt; +16166: } +16166: } +16166: +16166: const Slice& MemTable::GetNewestUDT() const { +16166: +16166: +16166: +16166: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: (static_cast ( +16166: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ts_sz_ > 0 && !persist_user_defined_timestamps_ +16166: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: ) ? void (0) : __assert_fail ( +16166: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: "ts_sz_ > 0 && !persist_user_defined_timestamps_" +16166: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" 3 4 +16166: , __builtin_FILE (), __builtin_LINE (), __extension__ __PRETTY_FUNCTION__)) +16166: # 1851 "/build/reproducible-path/rocksdb-9.10.0/db/memtable.cc" +16166: ; +16166: return newest_udt_; +16166: } +16166: +16166: } +=== END GCC DUMP === +make[3]: *** [CMakeFiles/rocksdb-shared.dir/build.make:1146: CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o] Error 1 +make[3]: *** Waiting for unfinished jobs.... In file included from /usr/include/c++/14/bits/unordered_map.h:33, from /usr/include/c++/14/unordered_map:41, from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/configurable.h:13, @@ -2249,8 +300861,6 @@ /usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 1024 | { return erase(const_iterator(__it)); } | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -[ 33%] Building CXX object CMakeFiles/rocksdb.dir/db/version_edit_handler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/version_edit_handler.cc.o -MF CMakeFiles/rocksdb.dir/db/version_edit_handler.cc.o.d -o CMakeFiles/rocksdb.dir/db/version_edit_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_edit_handler.cc In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(iterator) [with _Key = long long unsigned int; _Value = long long unsigned int; _Alloc = std::allocator; _ExtractKey = std::__detail::_Identity; _Equal = std::equal_to; _Hash = std::hash; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]', inlined from 'std::unordered_set<_Value, _Hash, _Pred, _Alloc>::iterator std::unordered_set<_Value, _Hash, _Pred, _Alloc>::erase(iterator) [with _Value = long long unsigned int; _Hash = std::hash; _Pred = std::equal_to; _Alloc = std::allocator]' at /usr/include/c++/14/bits/unordered_set.h:536:26, inlined from 'rocksdb::Status rocksdb::VersionBuilder::Rep::ApplyFileAddition(int, const rocksdb::FileMetaData&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_builder.cc:965:22: @@ -2265,4205 +300875,26 @@ /usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::__detail::_Identity, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 1024 | { return erase(const_iterator(__it)); } | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -[ 33%] Building CXX object CMakeFiles/rocksdb.dir/db/version_set.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/version_set.cc.o -MF CMakeFiles/rocksdb.dir/db/version_set.cc.o.d -o CMakeFiles/rocksdb.dir/db/version_set.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc -[ 33%] Building CXX object CMakeFiles/rocksdb-shared.dir/memtable/skiplistrep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memtable/skiplistrep.cc.o -MF CMakeFiles/rocksdb-shared.dir/memtable/skiplistrep.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memtable/skiplistrep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/skiplistrep.cc -[ 33%] Building CXX object CMakeFiles/rocksdb-shared.dir/memtable/vectorrep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memtable/vectorrep.cc.o -MF CMakeFiles/rocksdb-shared.dir/memtable/vectorrep.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memtable/vectorrep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/vectorrep.cc -[ 33%] Building CXX object CMakeFiles/rocksdb.dir/db/wal_edit.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/wal_edit.cc.o -MF CMakeFiles/rocksdb.dir/db/wal_edit.cc.o.d -o CMakeFiles/rocksdb.dir/db/wal_edit.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wal_edit.cc -[ 33%] Building CXX object CMakeFiles/rocksdb.dir/db/wal_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/wal_manager.cc.o -MF CMakeFiles/rocksdb.dir/db/wal_manager.cc.o.d -o CMakeFiles/rocksdb.dir/db/wal_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wal_manager.cc -[ 33%] Building CXX object CMakeFiles/rocksdb-shared.dir/memtable/wbwi_memtable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memtable/wbwi_memtable.cc.o -MF CMakeFiles/rocksdb-shared.dir/memtable/wbwi_memtable.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memtable/wbwi_memtable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/wbwi_memtable.cc -In file included from /usr/include/c++/14/vector:72, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.h:32, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:10: -/usr/include/c++/14/bits/vector.tcc: In function 'void std::vector<_Tp, _Alloc>::_M_assign_aux(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator > >; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]': -/usr/include/c++/14/bits/vector.tcc:318:7: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 318 | vector<_Tp, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/vector.tcc:318:7: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 -In file included from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/util/coding.h:19, - from /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_index.h:11, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.h:36: -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::FdWithKeyRange; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/bits/stl_algobase.h:71, - from /usr/include/c++/14/deque:62, - from /build/reproducible-path/rocksdb-9.10.0/db/version_set.h:23: -/usr/include/c++/14/bits/predefined_ops.h: In member function 'bool __gnu_cxx::__ops::_Iter_pred<_Predicate>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator >; _Predicate = rocksdb::Version::RemoveLiveFiles(std::vector&, std::vector&) const::]': -/usr/include/c++/14/bits/predefined_ops.h:317:9: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 317 | operator()(_Iterator __it) - | ^~~~~~~~ -In function '_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Predicate = __gnu_cxx::__ops::_Iter_pred&, std::vector&) const:: >]', - inlined from '_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = __gnu_cxx::__normal_iterator >; _Predicate = __gnu_cxx::__ops::_Iter_pred&, std::vector&) const:: >]' at /usr/include/c++/14/bits/stl_algobase.h:2152:23, - inlined from '_ForwardIterator std::__remove_if(_ForwardIterator, _ForwardIterator, _Predicate) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Predicate = __gnu_cxx::__ops::_Iter_pred&, std::vector&) const:: >]' at /usr/include/c++/14/bits/stl_algobase.h:2174:31, - inlined from '_FIter std::remove_if(_FIter, _FIter, _Predicate) [with _FIter = __gnu_cxx::__normal_iterator >; _Predicate = rocksdb::Version::RemoveLiveFiles(std::vector&, std::vector&) const::]' at /usr/include/c++/14/bits/stl_algo.h:832:30, - inlined from 'void rocksdb::Version::RemoveLiveFiles(std::vector&, std::vector&) const' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:4962:21: -/usr/include/c++/14/bits/stl_algobase.h:2127:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 2127 | if (__pred(__first)) - | ~~~~~~^~~~~~~~~ -/usr/include/c++/14/bits/stl_algobase.h:2132:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 2132 | if (__pred(__first)) - | ~~~~~~^~~~~~~~~ -/usr/include/c++/14/bits/stl_algobase.h:2137:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 2137 | if (__pred(__first)) - | ~~~~~~^~~~~~~~~ -[ 33%] Building CXX object CMakeFiles/rocksdb-shared.dir/memtable/write_buffer_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/memtable/write_buffer_manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/memtable/write_buffer_manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/memtable/write_buffer_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/write_buffer_manager.cc -[ 33%] Building CXX object CMakeFiles/rocksdb.dir/db/wide/wide_column_serialization.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/wide/wide_column_serialization.cc.o -MF CMakeFiles/rocksdb.dir/db/wide/wide_column_serialization.cc.o.d -o CMakeFiles/rocksdb.dir/db/wide/wide_column_serialization.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wide/wide_column_serialization.cc -[ 34%] Building CXX object CMakeFiles/rocksdb.dir/db/wide/wide_columns.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/wide/wide_columns.cc.o -MF CMakeFiles/rocksdb.dir/db/wide/wide_columns.cc.o.d -o CMakeFiles/rocksdb.dir/db/wide/wide_columns.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wide/wide_columns.cc -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:4147:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::VersionStorageInfo::GenerateLevel0NonOverlapping()' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:4147:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 34%] Building CXX object CMakeFiles/rocksdb.dir/db/wide/wide_columns_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/wide/wide_columns_helper.cc.o -MF CMakeFiles/rocksdb.dir/db/wide/wide_columns_helper.cc.o.d -o CMakeFiles/rocksdb.dir/db/wide/wide_columns_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/wide/wide_columns_helper.cc -[ 34%] Building CXX object CMakeFiles/rocksdb.dir/db/write_batch.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/write_batch.cc.o -MF CMakeFiles/rocksdb.dir/db/write_batch.cc.o.d -o CMakeFiles/rocksdb.dir/db/write_batch.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc -In file included from /usr/include/c++/14/vector:66: -In member function 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]', - inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, - inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, - inlined from 'constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:209:4, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:573:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {rocksdb::autovector&}; = void; unsigned int _Idx = 1; _Head = long long unsigned int; _Tail = {rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {const long long unsigned int&, rocksdb::autovector&}; = void; unsigned int _Idx = 0; _Head = long long unsigned int; _Tail = {long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::tuple< >::tuple(_UElements&& ...) [with _UElements = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; bool _Valid = true; typename std::enable_if<_TCC<_Valid>::__is_implicitly_constructible<_UElements ...>(), bool>::type = true; _Elements = {long long unsigned int, long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:1489:54, - inlined from 'void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/new_allocator.h:191:4, - inlined from 'static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/alloc_traits.h:575:17, - inlined from 'void std::vector<_Tp, _Alloc>::_M_realloc_append(_Args&& ...) [with _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >; _Alloc = std::allocator > >]' at /usr/include/c++/14/bits/vector.tcc:634:26: -/usr/include/c++/14/bits/stl_vector.h:829:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 829 | { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]', - inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, - inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, - inlined from 'constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:209:4, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:573:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {rocksdb::autovector&}; = void; unsigned int _Idx = 1; _Head = long long unsigned int; _Tail = {rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {const long long unsigned int&, rocksdb::autovector&}; = void; unsigned int _Idx = 0; _Head = long long unsigned int; _Tail = {long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::tuple< >::tuple(_UElements&& ...) [with _UElements = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; bool _Valid = true; typename std::enable_if<_TCC<_Valid>::__is_implicitly_constructible<_UElements ...>(), bool>::type = true; _Elements = {long long unsigned int, long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:1489:54, - inlined from 'void rocksdb::autovector::emplace_back(Args&& ...) [with Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; T = std::tuple >; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:300:7, - inlined from 'void rocksdb::Version::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MultiGetRange&, std::unordered_map >&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:2339:29: -/usr/include/c++/14/bits/stl_vector.h:829:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 829 | { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'void std::vector<_Tp, _Alloc>::assign(_InputIterator, _InputIterator) [with _InputIterator = __gnu_cxx::__normal_iterator > >; = void; _Tp = rocksdb::BlobReadRequest; _Alloc = std::allocator]', - inlined from 'rocksdb::autovector& rocksdb::autovector::assign(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:370:15, - inlined from 'rocksdb::autovector::autovector(const rocksdb::autovector&) [with T = rocksdb::BlobReadRequest; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:327:47, - inlined from 'constexpr std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:209:4, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head>::_Tuple_impl(_UHead&&) [with _UHead = rocksdb::autovector&; unsigned int _Idx = 2; _Head = rocksdb::autovector]' at /usr/include/c++/14/tuple:573:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {rocksdb::autovector&}; = void; unsigned int _Idx = 1; _Head = long long unsigned int; _Tail = {rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(_UHead&&, _UTail&& ...) [with _UHead = const long long unsigned int&; _UTail = {const long long unsigned int&, rocksdb::autovector&}; = void; unsigned int _Idx = 0; _Head = long long unsigned int; _Tail = {long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:317:38, - inlined from 'constexpr std::tuple< >::tuple(_UElements&& ...) [with _UElements = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; bool _Valid = true; typename std::enable_if<_TCC<_Valid>::__is_implicitly_constructible<_UElements ...>(), bool>::type = true; _Elements = {long long unsigned int, long long unsigned int, rocksdb::autovector}]' at /usr/include/c++/14/tuple:1489:54, - inlined from 'void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/new_allocator.h:191:4, - inlined from 'static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::tuple >; _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >]' at /usr/include/c++/14/bits/alloc_traits.h:575:17, - inlined from 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; _Tp = std::tuple >; _Alloc = std::allocator > >]' at /usr/include/c++/14/bits/vector.tcc:117:30, - inlined from 'void rocksdb::autovector::emplace_back(Args&& ...) [with Args = {const long long unsigned int&, const long long unsigned int&, rocksdb::autovector&}; T = std::tuple >; unsigned int kSize = 8]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:303:25, - inlined from 'void rocksdb::Version::MultiGetBlob(const rocksdb::ReadOptions&, rocksdb::MultiGetRange&, std::unordered_map >&)' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:2339:29: -/usr/include/c++/14/bits/stl_vector.h:829:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator > >' changed in GCC 7.1 - 829 | { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 34%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/histogram.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/histogram.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/histogram.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/histogram.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.cc -[ 34%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/histogram_windowing.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/histogram_windowing.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/histogram_windowing.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/histogram_windowing.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/histogram_windowing.cc -In file included from /usr/include/c++/14/deque:65: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = move_iterator; _ForwardIterator = rocksdb::GetContext*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type 'std::move_iterator' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type 'std::move_iterator' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator; _ForwardIterator = rocksdb::GetContext*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = move_iterator; _ForwardIterator = rocksdb::GetContext*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = move_iterator; _ForwardIterator = rocksdb::GetContext*; _Tp = rocksdb::GetContext]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from '_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = rocksdb::GetContext*; _ForwardIterator = rocksdb::GetContext*; _Allocator = allocator]' at /usr/include/c++/14/bits/stl_uninitialized.h:399:2, - inlined from 'void std::vector<_Tp, _Alloc>::_M_realloc_append(_Args&& ...) [with _Args = {const rocksdb::Comparator*, const rocksdb::MergeOperator*&, rocksdb::Logger*&, rocksdb::Statistics*&, rocksdb::GetContext::GetState, rocksdb::Slice&, rocksdb::PinnableSlice*&, rocksdb::PinnableWideColumns*&, std::__cxx11::basic_string, std::allocator >*&, std::nullptr_t, rocksdb::MergeContext*, bool, long long unsigned int*, rocksdb::SystemClock*&, std::nullptr_t, rocksdb::PinnedIteratorsManager*, rocksdb::ReadCallback*&, bool*, long long unsigned int&, rocksdb::BlobFetcher*}; _Tp = rocksdb::GetContext; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:676:60, - inlined from 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const rocksdb::Comparator*, const rocksdb::MergeOperator*&, rocksdb::Logger*&, rocksdb::Statistics*&, rocksdb::GetContext::GetState, rocksdb::Slice&, rocksdb::PinnableSlice*&, rocksdb::PinnableWideColumns*&, std::__cxx11::basic_string, std::allocator >*&, std::nullptr_t, rocksdb::MergeContext*, bool, long long unsigned int*, rocksdb::SystemClock*&, std::nullptr_t, rocksdb::PinnedIteratorsManager*, rocksdb::ReadCallback*&, bool*, long long unsigned int&, rocksdb::BlobFetcher*}; _Tp = rocksdb::GetContext; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:123:21, - inlined from 'void rocksdb::autovector::emplace_back(Args&& ...) [with Args = {const rocksdb::Comparator*, const rocksdb::MergeOperator*&, rocksdb::Logger*&, rocksdb::Statistics*&, rocksdb::GetContext::GetState, rocksdb::Slice&, rocksdb::PinnableSlice*&, rocksdb::PinnableWideColumns*&, std::__cxx11::basic_string, std::allocator >*&, std::nullptr_t, rocksdb::MergeContext*, bool, long long unsigned int*, rocksdb::SystemClock*&, std::nullptr_t, rocksdb::PinnedIteratorsManager*, rocksdb::ReadCallback*&, bool*, long long unsigned int&, rocksdb::BlobFetcher*}; T = rocksdb::GetContext; unsigned int kSize = 16]' at /build/reproducible-path/rocksdb-9.10.0/util/autovector.h:303:25, - inlined from 'void rocksdb::Version::MultiGet(const rocksdb::ReadOptions&, rocksdb::MultiGetRange*, rocksdb::ReadCallback*)' at /build/reproducible-path/rocksdb-9.10.0/db/version_set.cc:2598:25: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type 'std::move_iterator' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 35%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/in_memory_stats_history.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/in_memory_stats_history.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/in_memory_stats_history.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/in_memory_stats_history.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/in_memory_stats_history.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:44: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::MemTable*; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = rocksdb::DBImpl::RecoveredTransaction::BatchInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::DBImpl::RecoveredTransaction::RecoveredTransaction(uint64_t, const std::string&, rocksdb::WriteBatch*, rocksdb::SequenceNumber, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:981:19, - inlined from 'void rocksdb::DBImpl::InsertRecoveredTransaction(uint64_t, const std::string&, rocksdb::WriteBatch*, rocksdb::SequenceNumber, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:1028:61: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = rocksdb::DBImpl::RecoveredTransaction::BatchInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::DBImpl::RecoveredTransaction::AddBatch(rocksdb::SequenceNumber, uint64_t, rocksdb::WriteBatch*, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:993:19, - inlined from 'void rocksdb::DBImpl::InsertRecoveredTransaction(uint64_t, const std::string&, rocksdb::WriteBatch*, rocksdb::SequenceNumber, size_t, bool)' at /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:1030:29: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::PutBlobIndexCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::TimedPutCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, uint64_t)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::DeleteImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, const rocksdb::ProtectionInfoKVOS64*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2470:17: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::PutEntityCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'rocksdb::Status rocksdb::{anonymous}::MemTableInserter::PutCFImpl(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&, rocksdb::ValueType, RebuildTxnOp, const rocksdb::ProtectionInfoKVOS64*) [with RebuildTxnOp = rocksdb::{anonymous}::MemTableInserter::PutCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)::]' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2250:19: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'virtual rocksdb::Status rocksdb::{anonymous}::MemTableInserter::MergeCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2853:21: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::MemTable*; _Tp = rocksdb::MemTablePostProcessInfo; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::MemTablePostProcessInfo* rocksdb::{anonymous}::MemTableInserter::get_post_process_info(rocksdb::MemTable*)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:3183:29, - inlined from 'virtual rocksdb::Status rocksdb::{anonymous}::MemTableInserter::MergeCF(uint32_t, const rocksdb::Slice&, const rocksdb::Slice&)' at /build/reproducible-path/rocksdb-9.10.0/db/write_batch.cc:2856:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 35%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/instrumented_mutex.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/instrumented_mutex.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/instrumented_mutex.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/instrumented_mutex.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.cc -[ 35%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/iostats_context.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/iostats_context.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/iostats_context.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/iostats_context.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/iostats_context.cc -[ 35%] Building CXX object CMakeFiles/rocksdb.dir/db/write_batch_base.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/write_batch_base.cc.o -MF CMakeFiles/rocksdb.dir/db/write_batch_base.cc.o.d -o CMakeFiles/rocksdb.dir/db/write_batch_base.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_batch_base.cc -[ 35%] Building CXX object CMakeFiles/rocksdb.dir/db/write_controller.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/write_controller.cc.o -MF CMakeFiles/rocksdb.dir/db/write_controller.cc.o.d -o CMakeFiles/rocksdb.dir/db/write_controller.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_controller.cc -[ 35%] Building CXX object CMakeFiles/rocksdb.dir/db/write_stall_stats.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/write_stall_stats.cc.o -MF CMakeFiles/rocksdb.dir/db/write_stall_stats.cc.o.d -o CMakeFiles/rocksdb.dir/db/write_stall_stats.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_stall_stats.cc -[ 35%] Building CXX object CMakeFiles/rocksdb.dir/db/write_thread.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/db/write_thread.cc.o -MF CMakeFiles/rocksdb.dir/db/write_thread.cc.o.d -o CMakeFiles/rocksdb.dir/db/write_thread.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/write_thread.cc -[ 35%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/perf_context.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/perf_context.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/perf_context.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/perf_context.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context.cc -[ 35%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/perf_level.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/perf_level.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/perf_level.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/perf_level.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_level.cc -[ 35%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/persistent_stats_history.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/persistent_stats_history.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/persistent_stats_history.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/persistent_stats_history.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/persistent_stats_history.cc -[ 35%] Building CXX object CMakeFiles/rocksdb.dir/env/composite_env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/composite_env.cc.o -MF CMakeFiles/rocksdb.dir/env/composite_env.cc.o.d -o CMakeFiles/rocksdb.dir/env/composite_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/composite_env.cc -[ 36%] Building CXX object CMakeFiles/rocksdb.dir/env/env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/env.cc.o -MF CMakeFiles/rocksdb.dir/env/env.cc.o.d -o CMakeFiles/rocksdb.dir/env/env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env.cc -[ 36%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/statistics.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/statistics.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/statistics.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/statistics.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/statistics.cc -[ 36%] Building CXX object CMakeFiles/rocksdb.dir/env/env_chroot.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/env_chroot.cc.o -MF CMakeFiles/rocksdb.dir/env/env_chroot.cc.o.d -o CMakeFiles/rocksdb.dir/env/env_chroot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env_chroot.cc -[ 36%] Building CXX object CMakeFiles/rocksdb.dir/env/env_encryption.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/env_encryption.cc.o -MF CMakeFiles/rocksdb.dir/env/env_encryption.cc.o.d -o CMakeFiles/rocksdb.dir/env/env_encryption.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env_encryption.cc -[ 36%] Building CXX object CMakeFiles/rocksdb.dir/env/file_system.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/file_system.cc.o -MF CMakeFiles/rocksdb.dir/env/file_system.cc.o.d -o CMakeFiles/rocksdb.dir/env/file_system.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/file_system.cc -[ 37%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_impl.cc -[ 37%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_updater.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_updater.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_updater.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_updater.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.cc -[ 37%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.cc -[ 37%] Building CXX object CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util_debug.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util_debug.cc.o -MF CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util_debug.cc.o.d -o CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util_debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util_debug.cc -[ 37%] Building CXX object CMakeFiles/rocksdb.dir/env/file_system_tracer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/file_system_tracer.cc.o -MF CMakeFiles/rocksdb.dir/env/file_system_tracer.cc.o.d -o CMakeFiles/rocksdb.dir/env/file_system_tracer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/file_system_tracer.cc -[ 37%] Building CXX object CMakeFiles/rocksdb.dir/env/fs_on_demand.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/fs_on_demand.cc.o -MF CMakeFiles/rocksdb.dir/env/fs_on_demand.cc.o.d -o CMakeFiles/rocksdb.dir/env/fs_on_demand.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc -[ 37%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/cf_options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/cf_options.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/cf_options.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/cf_options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/cf_options.cc -In file included from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:8: -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::Env::FileAttributes; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:227:14: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:227:14: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:228:14: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter*, rocksdb::IODebugContext*)::FileAttributeSorter>]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)::FileAttributeSorter]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'virtual rocksdb::IOStatus rocksdb::OnDemandFileSystem::GetChildrenFileAttributes(const std::string&, const rocksdb::IOOptions&, std::vector*, rocksdb::IODebugContext*)' at /build/reproducible-path/rocksdb-9.10.0/env/fs_on_demand.cc:228:14: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 37%] Building CXX object CMakeFiles/rocksdb.dir/env/fs_remap.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/fs_remap.cc.o -MF CMakeFiles/rocksdb.dir/env/fs_remap.cc.o.d -o CMakeFiles/rocksdb.dir/env/fs_remap.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/fs_remap.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/env/mock_env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/mock_env.cc.o -MF CMakeFiles/rocksdb.dir/env/mock_env.cc.o.d -o CMakeFiles/rocksdb.dir/env/mock_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/mock_env.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/env/unique_id_gen.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/unique_id_gen.cc.o -MF CMakeFiles/rocksdb.dir/env/unique_id_gen.cc.o.d -o CMakeFiles/rocksdb.dir/env/unique_id_gen.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/unique_id_gen.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/file/delete_scheduler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/delete_scheduler.cc.o -MF CMakeFiles/rocksdb.dir/file/delete_scheduler.cc.o.d -o CMakeFiles/rocksdb.dir/file/delete_scheduler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/delete_scheduler.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/file/file_prefetch_buffer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/file_prefetch_buffer.cc.o -MF CMakeFiles/rocksdb.dir/file/file_prefetch_buffer.cc.o.d -o CMakeFiles/rocksdb.dir/file/file_prefetch_buffer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/file_prefetch_buffer.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/file/file_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/file_util.cc.o -MF CMakeFiles/rocksdb.dir/file/file_util.cc.o.d -o CMakeFiles/rocksdb.dir/file/file_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/file_util.cc -[ 38%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/configurable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/configurable.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/configurable.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/configurable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/configurable.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/file/filename.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/filename.cc.o -MF CMakeFiles/rocksdb.dir/file/filename.cc.o.d -o CMakeFiles/rocksdb.dir/file/filename.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/filename.cc -[ 38%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/customizable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/customizable.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/customizable.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/customizable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/customizable.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/file/line_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/line_file_reader.cc.o -MF CMakeFiles/rocksdb.dir/file/line_file_reader.cc.o.d -o CMakeFiles/rocksdb.dir/file/line_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/line_file_reader.cc -[ 38%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/db_options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/db_options.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/db_options.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/db_options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/db_options.cc -[ 38%] Building CXX object CMakeFiles/rocksdb.dir/file/random_access_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/random_access_file_reader.cc.o -MF CMakeFiles/rocksdb.dir/file/random_access_file_reader.cc.o.d -o CMakeFiles/rocksdb.dir/file/random_access_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/random_access_file_reader.cc -[ 39%] Building CXX object CMakeFiles/rocksdb.dir/file/read_write_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/read_write_util.cc.o -MF CMakeFiles/rocksdb.dir/file/read_write_util.cc.o.d -o CMakeFiles/rocksdb.dir/file/read_write_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/read_write_util.cc -[ 39%] Building CXX object CMakeFiles/rocksdb.dir/file/readahead_raf.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/readahead_raf.cc.o -MF CMakeFiles/rocksdb.dir/file/readahead_raf.cc.o.d -o CMakeFiles/rocksdb.dir/file/readahead_raf.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/readahead_raf.cc -[ 39%] Building CXX object CMakeFiles/rocksdb.dir/file/sequence_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/sequence_file_reader.cc.o -MF CMakeFiles/rocksdb.dir/file/sequence_file_reader.cc.o.d -o CMakeFiles/rocksdb.dir/file/sequence_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/sequence_file_reader.cc -[ 39%] Building CXX object CMakeFiles/rocksdb.dir/file/sst_file_manager_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/sst_file_manager_impl.cc.o -MF CMakeFiles/rocksdb.dir/file/sst_file_manager_impl.cc.o.d -o CMakeFiles/rocksdb.dir/file/sst_file_manager_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/sst_file_manager_impl.cc -[ 39%] Building CXX object CMakeFiles/rocksdb.dir/file/writable_file_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/file/writable_file_writer.cc.o -MF CMakeFiles/rocksdb.dir/file/writable_file_writer.cc.o.d -o CMakeFiles/rocksdb.dir/file/writable_file_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/file/writable_file_writer.cc -[ 40%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/offpeak_time_info.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/offpeak_time_info.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/offpeak_time_info.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/offpeak_time_info.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/offpeak_time_info.cc -[ 40%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/options.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/options.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/options.cc -[ 40%] Building CXX object CMakeFiles/rocksdb.dir/logging/auto_roll_logger.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/logging/auto_roll_logger.cc.o -MF CMakeFiles/rocksdb.dir/logging/auto_roll_logger.cc.o.d -o CMakeFiles/rocksdb.dir/logging/auto_roll_logger.cc.o -c /build/reproducible-path/rocksdb-9.10.0/logging/auto_roll_logger.cc -[ 40%] Building CXX object CMakeFiles/rocksdb.dir/logging/event_logger.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/logging/event_logger.cc.o -MF CMakeFiles/rocksdb.dir/logging/event_logger.cc.o.d -o CMakeFiles/rocksdb.dir/logging/event_logger.cc.o -c /build/reproducible-path/rocksdb-9.10.0/logging/event_logger.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/logging/log_buffer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/logging/log_buffer.cc.o -MF CMakeFiles/rocksdb.dir/logging/log_buffer.cc.o.d -o CMakeFiles/rocksdb.dir/logging/log_buffer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/logging/log_buffer.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/memory/arena.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memory/arena.cc.o -MF CMakeFiles/rocksdb.dir/memory/arena.cc.o.d -o CMakeFiles/rocksdb.dir/memory/arena.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/arena.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/memory/concurrent_arena.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memory/concurrent_arena.cc.o -MF CMakeFiles/rocksdb.dir/memory/concurrent_arena.cc.o.d -o CMakeFiles/rocksdb.dir/memory/concurrent_arena.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/concurrent_arena.cc -[ 41%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/options_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/options_helper.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/options_helper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/options_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/options_helper.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/memory/jemalloc_nodump_allocator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memory/jemalloc_nodump_allocator.cc.o -MF CMakeFiles/rocksdb.dir/memory/jemalloc_nodump_allocator.cc.o.d -o CMakeFiles/rocksdb.dir/memory/jemalloc_nodump_allocator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/jemalloc_nodump_allocator.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/memory/memkind_kmem_allocator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memory/memkind_kmem_allocator.cc.o -MF CMakeFiles/rocksdb.dir/memory/memkind_kmem_allocator.cc.o.d -o CMakeFiles/rocksdb.dir/memory/memkind_kmem_allocator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/memkind_kmem_allocator.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/memory/memory_allocator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memory/memory_allocator.cc.o -MF CMakeFiles/rocksdb.dir/memory/memory_allocator.cc.o.d -o CMakeFiles/rocksdb.dir/memory/memory_allocator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memory/memory_allocator.cc -[ 41%] Building CXX object CMakeFiles/rocksdb-shared.dir/options/options_parser.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/options/options_parser.cc.o -MF CMakeFiles/rocksdb-shared.dir/options/options_parser.cc.o.d -o CMakeFiles/rocksdb-shared.dir/options/options_parser.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/options_parser.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/memtable/alloc_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memtable/alloc_tracker.cc.o -MF CMakeFiles/rocksdb.dir/memtable/alloc_tracker.cc.o.d -o CMakeFiles/rocksdb.dir/memtable/alloc_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/alloc_tracker.cc -[ 41%] Building CXX object CMakeFiles/rocksdb.dir/memtable/hash_linklist_rep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memtable/hash_linklist_rep.cc.o -MF CMakeFiles/rocksdb.dir/memtable/hash_linklist_rep.cc.o.d -o CMakeFiles/rocksdb.dir/memtable/hash_linklist_rep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/hash_linklist_rep.cc -In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/options/options_helper.h:11, - from /build/reproducible-path/rocksdb-9.10.0/options/options_helper.cc:5: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::DBOptions::DBOptions(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 41%] Building CXX object CMakeFiles/rocksdb-shared.dir/port/mmap.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/port/mmap.cc.o -MF CMakeFiles/rocksdb-shared.dir/port/mmap.cc.o.d -o CMakeFiles/rocksdb-shared.dir/port/mmap.cc.o -c /build/reproducible-path/rocksdb-9.10.0/port/mmap.cc -[ 41%] Building CXX object CMakeFiles/rocksdb-shared.dir/port/stack_trace.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/port/stack_trace.cc.o -MF CMakeFiles/rocksdb-shared.dir/port/stack_trace.cc.o.d -o CMakeFiles/rocksdb-shared.dir/port/stack_trace.cc.o -c /build/reproducible-path/rocksdb-9.10.0/port/stack_trace.cc -[ 41%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/adaptive/adaptive_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/adaptive/adaptive_table_factory.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/adaptive/adaptive_table_factory.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/adaptive/adaptive_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/adaptive/adaptive_table_factory.cc -[ 42%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/binary_search_index_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/binary_search_index_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/binary_search_index_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/binary_search_index_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/binary_search_index_reader.cc -[ 43%] Building CXX object CMakeFiles/rocksdb.dir/memtable/hash_skiplist_rep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memtable/hash_skiplist_rep.cc.o -MF CMakeFiles/rocksdb.dir/memtable/hash_skiplist_rep.cc.o.d -o CMakeFiles/rocksdb.dir/memtable/hash_skiplist_rep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/hash_skiplist_rep.cc -[ 43%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block.cc -[ 43%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_builder.cc -[ 43%] Building CXX object CMakeFiles/rocksdb.dir/memtable/skiplistrep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memtable/skiplistrep.cc.o -MF CMakeFiles/rocksdb.dir/memtable/skiplistrep.cc.o.d -o CMakeFiles/rocksdb.dir/memtable/skiplistrep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/skiplistrep.cc -[ 43%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_factory.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_factory.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_factory.cc -[ 43%] Building CXX object CMakeFiles/rocksdb.dir/memtable/vectorrep.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memtable/vectorrep.cc.o -MF CMakeFiles/rocksdb.dir/memtable/vectorrep.cc.o.d -o CMakeFiles/rocksdb.dir/memtable/vectorrep.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/vectorrep.cc -[ 43%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_iterator.cc -[ 43%] Building CXX object CMakeFiles/rocksdb.dir/memtable/wbwi_memtable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memtable/wbwi_memtable.cc.o -MF CMakeFiles/rocksdb.dir/memtable/wbwi_memtable.cc.o.d -o CMakeFiles/rocksdb.dir/memtable/wbwi_memtable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/wbwi_memtable.cc -[ 43%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_reader.cc -[ 43%] Building CXX object CMakeFiles/rocksdb.dir/memtable/write_buffer_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/memtable/write_buffer_manager.cc.o -MF CMakeFiles/rocksdb.dir/memtable/write_buffer_manager.cc.o.d -o CMakeFiles/rocksdb.dir/memtable/write_buffer_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/write_buffer_manager.cc -[ 43%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_builder.cc -[ 43%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_cache.cc -[ 43%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/histogram.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/histogram.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/histogram.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/histogram.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/histogram.cc -[ 44%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefetcher.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefetcher.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefetcher.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_prefetcher.cc -[ 44%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/histogram_windowing.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/histogram_windowing.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/histogram_windowing.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/histogram_windowing.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/histogram_windowing.cc -[ 45%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/in_memory_stats_history.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/in_memory_stats_history.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/in_memory_stats_history.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/in_memory_stats_history.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/in_memory_stats_history.cc -[ 45%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefix_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefix_index.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefix_index.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefix_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_prefix_index.cc -[ 45%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_hash_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_hash_index.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_hash_index.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_hash_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/data_block_hash_index.cc -[ 45%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_footer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_footer.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_footer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_footer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/data_block_footer.cc -[ 45%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/filter_block_reader_common.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/filter_block_reader_common.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/filter_block_reader_common.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/filter_block_reader_common.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/filter_block_reader_common.cc -[ 45%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/instrumented_mutex.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/instrumented_mutex.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/instrumented_mutex.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/instrumented_mutex.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/instrumented_mutex.cc -[ 45%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/iostats_context.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/iostats_context.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/iostats_context.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/iostats_context.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/iostats_context.cc -[ 45%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/filter_policy.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/filter_policy.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/filter_policy.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/filter_policy.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/filter_policy.cc -[ 45%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/perf_context.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/perf_context.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/perf_context.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/perf_context.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context.cc -[ 45%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/perf_level.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/perf_level.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/perf_level.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/perf_level.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_level.cc -[ 45%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/persistent_stats_history.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/persistent_stats_history.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/persistent_stats_history.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/persistent_stats_history.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/persistent_stats_history.cc -[ 45%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/flush_block_policy.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/flush_block_policy.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/flush_block_policy.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/flush_block_policy.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/flush_block_policy.cc -[ 45%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/statistics.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/statistics.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/statistics.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/statistics.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/statistics.cc -[ 46%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/full_filter_block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/full_filter_block.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/full_filter_block.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/full_filter_block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/full_filter_block.cc -[ 46%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/hash_index_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/hash_index_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/hash_index_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/hash_index_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/hash_index_reader.cc -[ 46%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/thread_status_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/thread_status_impl.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/thread_status_impl.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/thread_status_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_impl.cc -[ 46%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/thread_status_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/thread_status_util.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/thread_status_util.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/thread_status_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util.cc -[ 47%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/thread_status_updater.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/thread_status_updater.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/thread_status_updater.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/thread_status_updater.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_updater.cc -[ 47%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/index_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/index_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/index_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/index_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/index_builder.cc -[ 47%] Building CXX object CMakeFiles/rocksdb.dir/monitoring/thread_status_util_debug.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/monitoring/thread_status_util_debug.cc.o -MF CMakeFiles/rocksdb.dir/monitoring/thread_status_util_debug.cc.o.d -o CMakeFiles/rocksdb.dir/monitoring/thread_status_util_debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/monitoring/thread_status_util_debug.cc -[ 47%] Building CXX object CMakeFiles/rocksdb.dir/options/cf_options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/cf_options.cc.o -MF CMakeFiles/rocksdb.dir/options/cf_options.cc.o.d -o CMakeFiles/rocksdb.dir/options/cf_options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/cf_options.cc -[ 47%] Building CXX object CMakeFiles/rocksdb.dir/options/configurable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/configurable.cc.o -MF CMakeFiles/rocksdb.dir/options/configurable.cc.o.d -o CMakeFiles/rocksdb.dir/options/configurable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/configurable.cc -[ 47%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/index_reader_common.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/index_reader_common.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/index_reader_common.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/index_reader_common.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/index_reader_common.cc -[ 47%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/parsed_full_filter_block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/parsed_full_filter_block.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/parsed_full_filter_block.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/parsed_full_filter_block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/parsed_full_filter_block.cc -[ 47%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_filter_block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_filter_block.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_filter_block.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_filter_block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/partitioned_filter_block.cc -[ 47%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/partitioned_index_iterator.cc -[ 47%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/partitioned_index_reader.cc -[ 48%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/reader_common.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/reader_common.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/reader_common.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/reader_common.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/reader_common.cc -[ 48%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_based/uncompression_dict_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_based/uncompression_dict_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_based/uncompression_dict_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_based/uncompression_dict_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/uncompression_dict_reader.cc -[ 48%] Building CXX object CMakeFiles/rocksdb.dir/options/customizable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/customizable.cc.o -MF CMakeFiles/rocksdb.dir/options/customizable.cc.o.d -o CMakeFiles/rocksdb.dir/options/customizable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/customizable.cc -[ 48%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/block_fetcher.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/block_fetcher.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/block_fetcher.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/block_fetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_fetcher.cc -[ 48%] Building CXX object CMakeFiles/rocksdb.dir/options/db_options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/db_options.cc.o -MF CMakeFiles/rocksdb.dir/options/db_options.cc.o.d -o CMakeFiles/rocksdb.dir/options/db_options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/db_options.cc -[ 48%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/cuckoo/cuckoo_table_builder.cc -[ 48%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_factory.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_factory.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/cuckoo/cuckoo_table_factory.cc -[ 48%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/cuckoo/cuckoo_table_reader.cc -[ 48%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/format.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/format.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/format.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/format.cc -[ 49%] Building CXX object CMakeFiles/rocksdb.dir/options/offpeak_time_info.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/offpeak_time_info.cc.o -MF CMakeFiles/rocksdb.dir/options/offpeak_time_info.cc.o.d -o CMakeFiles/rocksdb.dir/options/offpeak_time_info.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/offpeak_time_info.cc -[ 49%] Building CXX object CMakeFiles/rocksdb.dir/options/options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/options.cc.o -MF CMakeFiles/rocksdb.dir/options/options.cc.o.d -o CMakeFiles/rocksdb.dir/options/options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/options.cc -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/get_context.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/get_context.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/get_context.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/get_context.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/get_context.cc -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/iterator.cc -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/merging_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/merging_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/merging_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/merging_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.cc -[ 50%] Building CXX object CMakeFiles/rocksdb.dir/options/options_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/options_helper.cc.o -MF CMakeFiles/rocksdb.dir/options/options_helper.cc.o.d -o CMakeFiles/rocksdb.dir/options/options_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/options_helper.cc -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/compaction_merging_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/compaction_merging_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/compaction_merging_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/compaction_merging_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/compaction_merging_iterator.cc -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/meta_blocks.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/meta_blocks.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/meta_blocks.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/meta_blocks.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/meta_blocks.cc -In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/options/options_helper.h:11, - from /build/reproducible-path/rocksdb-9.10.0/options/options_helper.cc:5: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::DBOptions::DBOptions(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/persistent_cache_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/persistent_cache_helper.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/persistent_cache_helper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/persistent_cache_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/persistent_cache_helper.cc -[ 50%] Building CXX object CMakeFiles/rocksdb.dir/options/options_parser.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/options/options_parser.cc.o -MF CMakeFiles/rocksdb.dir/options/options_parser.cc.o.d -o CMakeFiles/rocksdb.dir/options/options_parser.cc.o -c /build/reproducible-path/rocksdb-9.10.0/options/options_parser.cc -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_bloom.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_bloom.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_bloom.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_bloom.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_bloom.cc -[ 50%] Building CXX object CMakeFiles/rocksdb.dir/port/mmap.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/port/mmap.cc.o -MF CMakeFiles/rocksdb.dir/port/mmap.cc.o.d -o CMakeFiles/rocksdb.dir/port/mmap.cc.o -c /build/reproducible-path/rocksdb-9.10.0/port/mmap.cc -[ 50%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_builder.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_builder.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_builder.cc -[ 50%] Building CXX object CMakeFiles/rocksdb.dir/port/stack_trace.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/port/stack_trace.cc.o -MF CMakeFiles/rocksdb.dir/port/stack_trace.cc.o.d -o CMakeFiles/rocksdb.dir/port/stack_trace.cc.o -c /build/reproducible-path/rocksdb-9.10.0/port/stack_trace.cc -[ 50%] Building CXX object CMakeFiles/rocksdb.dir/table/adaptive/adaptive_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/adaptive/adaptive_table_factory.cc.o -MF CMakeFiles/rocksdb.dir/table/adaptive/adaptive_table_factory.cc.o.d -o CMakeFiles/rocksdb.dir/table/adaptive/adaptive_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/adaptive/adaptive_table_factory.cc -[ 50%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/binary_search_index_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/binary_search_index_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/binary_search_index_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/binary_search_index_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/binary_search_index_reader.cc -[ 51%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block.cc -[ 52%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_factory.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_factory.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_factory.cc -[ 52%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_based_table_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_based_table_builder.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_based_table_builder.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_builder.cc -[ 52%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_based_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_based_table_factory.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_based_table_factory.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_factory.cc -[ 52%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_index.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_index.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_index.cc -[ 52%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_key_coding.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_key_coding.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_key_coding.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_key_coding.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_key_coding.cc -[ 52%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_reader.cc -[ 52%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_based_table_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_based_table_iterator.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_based_table_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_iterator.cc -[ 52%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_based_table_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_based_table_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_based_table_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_based_table_reader.cc -[ 52%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_builder.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_builder.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_builder.cc -[ 52%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/sst_file_dumper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/sst_file_dumper.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/sst_file_dumper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/sst_file_dumper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/sst_file_dumper.cc -[ 52%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_cache.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_cache.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_cache.cc -[ 53%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_prefetcher.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_prefetcher.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_prefetcher.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_prefetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_prefetcher.cc -[ 53%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/sst_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/sst_file_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/sst_file_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/sst_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/sst_file_reader.cc -[ 53%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/sst_file_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/sst_file_writer.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/sst_file_writer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/sst_file_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/sst_file_writer.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/table_factory.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/table_factory.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/table_factory.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/table_properties.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/table_properties.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/table_properties.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/table_properties.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/two_level_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/two_level_iterator.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/two_level_iterator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/two_level_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/two_level_iterator.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h:9, - from /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:6: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, long long unsigned int>; _KeyOfValue = std::_Select1st, long long unsigned int> >; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:204:17: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:205:18: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:206:24: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:207:28: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:208:19: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:209:20: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:210:22: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:211:23: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:212:19: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:213:26: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:214:21: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:215:26: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:216:27: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:217:44: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:219:44: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 54%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/block_prefix_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/block_prefix_index.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/block_prefix_index.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/block_prefix_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/block_prefix_index.cc -[ 54%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/data_block_hash_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/data_block_hash_index.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/data_block_hash_index.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/data_block_hash_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/data_block_hash_index.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/table/unique_id.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/table/unique_id.cc.o -MF CMakeFiles/rocksdb-shared.dir/table/unique_id.cc.o.d -o CMakeFiles/rocksdb-shared.dir/table/unique_id.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/unique_id.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/test_util/sync_point.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/test_util/sync_point.cc.o -MF CMakeFiles/rocksdb-shared.dir/test_util/sync_point.cc.o.d -o CMakeFiles/rocksdb-shared.dir/test_util/sync_point.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.cc -[ 54%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/data_block_footer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/data_block_footer.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/data_block_footer.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/data_block_footer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/data_block_footer.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/test_util/sync_point_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/test_util/sync_point_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/test_util/sync_point_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/test_util/sync_point_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/sync_point_impl.cc -[ 54%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/filter_block_reader_common.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/filter_block_reader_common.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/filter_block_reader_common.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/filter_block_reader_common.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/filter_block_reader_common.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/test_util/testutil.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/test_util/testutil.cc.o -MF CMakeFiles/rocksdb-shared.dir/test_util/testutil.cc.o.d -o CMakeFiles/rocksdb-shared.dir/test_util/testutil.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/testutil.cc -[ 54%] Building CXX object CMakeFiles/rocksdb-shared.dir/test_util/transaction_test_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/test_util/transaction_test_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/test_util/transaction_test_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/test_util/transaction_test_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/transaction_test_util.cc -[ 54%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/filter_policy.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/filter_policy.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/filter_policy.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/filter_policy.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/filter_policy.cc -[ 55%] Building CXX object CMakeFiles/rocksdb-shared.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o -MF CMakeFiles/rocksdb-shared.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc -[ 55%] Building CXX object CMakeFiles/rocksdb-shared.dir/tools/dump/db_dump_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/tools/dump/db_dump_tool.cc.o -MF CMakeFiles/rocksdb-shared.dir/tools/dump/db_dump_tool.cc.o.d -o CMakeFiles/rocksdb-shared.dir/tools/dump/db_dump_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/dump/db_dump_tool.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.h:8, - from /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:7: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair, std::map > >; _KeyOfValue = std::_Select1st, std::map > > >; _Compare = std::less; _Alloc = std::allocator, std::map > > >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::map > >, std::_Select1st, std::map > > >, std::less, std::allocator, std::map > > > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair, std::map > >; _KeyOfValue = std::_Select1st, std::map > > >; _Compare = std::less; _Alloc = std::allocator, std::map > > >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::map > >, std::_Select1st, std::map > > >, std::less, std::allocator, std::map > > > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::TraceType; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::TraceType; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::TableReaderCaller; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -[ 55%] Building CXX object CMakeFiles/rocksdb-shared.dir/tools/io_tracer_parser_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/tools/io_tracer_parser_tool.cc.o -MF CMakeFiles/rocksdb-shared.dir/tools/io_tracer_parser_tool.cc.o.d -o CMakeFiles/rocksdb-shared.dir/tools/io_tracer_parser_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/io_tracer_parser_tool.cc -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair > >; _KeyOfValue = std::_Select1st > > >; _Compare = std::less; _Alloc = std::allocator > > >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, long long unsigned int>; _KeyOfValue = std::_Select1st, long long unsigned int> >; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1297:45, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1338:45, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1339:41, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::HistogramStat>; _KeyOfValue = std::_Select1st, rocksdb::HistogramStat> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 55%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/flush_block_policy.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/flush_block_policy.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/flush_block_policy.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/flush_block_policy.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/flush_block_policy.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1637:26, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1638:38, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 55%] Building CXX object CMakeFiles/rocksdb-shared.dir/tools/ldb_cmd.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/tools/ldb_cmd.cc.o -MF CMakeFiles/rocksdb-shared.dir/tools/ldb_cmd.cc.o.d -o CMakeFiles/rocksdb-shared.dir/tools/ldb_cmd.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/ldb_cmd.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1955:26: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1959:31: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1972:41: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1973:50: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1977:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1980:55: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = double; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::WriteMissRatioTimeline(uint64_t) const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:429:73: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = double; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::WriteMissRatioTimeline(uint64_t) const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:453:71: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:573:26, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1859:59: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1862:43: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1865:47: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1868:37: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockAccessInfo::AddAccess(const rocksdb::BlockCacheTraceRecord&, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.h:83:40: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 55%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/full_filter_block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/full_filter_block.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/full_filter_block.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/full_filter_block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/full_filter_block.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1705:47: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector >; _Compare = std::less; _Alloc = std::allocator > > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1681:36, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1684:22, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1685:34, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector >; _Compare = std::less; _Alloc = std::allocator > > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:887:42, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1195:30, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1197:32, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1209:34, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 56%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/hash_index_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/hash_index_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/hash_index_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/hash_index_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/hash_index_reader.cc -[ 56%] Building CXX object CMakeFiles/rocksdb-shared.dir/tools/ldb_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/tools/ldb_tool.cc.o -MF CMakeFiles/rocksdb-shared.dir/tools/ldb_tool.cc.o.d -o CMakeFiles/rocksdb-shared.dir/tools/ldb_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/ldb_tool.cc -[ 56%] Building CXX object CMakeFiles/rocksdb-shared.dir/tools/sst_dump_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/tools/sst_dump_tool.cc.o -MF CMakeFiles/rocksdb-shared.dir/tools/sst_dump_tool.cc.o.d -o CMakeFiles/rocksdb-shared.dir/tools/sst_dump_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/sst_dump_tool.cc -[ 56%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/index_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/index_builder.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/index_builder.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/index_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/index_builder.cc -[ 56%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/index_reader_common.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/index_reader_common.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/index_reader_common.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/index_reader_common.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/index_reader_common.cc -[ 56%] Building CXX object CMakeFiles/rocksdb-shared.dir/tools/trace_analyzer_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/tools/trace_analyzer_tool.cc.o -MF CMakeFiles/rocksdb-shared.dir/tools/trace_analyzer_tool.cc.o.d -o CMakeFiles/rocksdb-shared.dir/tools/trace_analyzer_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc -In file included from /usr/include/c++/14/vector:65, - from /usr/include/c++/14/functional:64, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/ldb_cmd.h:13, - from /build/reproducible-path/rocksdb-9.10.0/tools/ldb_cmd.cc:7: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 56%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/parsed_full_filter_block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/parsed_full_filter_block.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/parsed_full_filter_block.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/parsed_full_filter_block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/parsed_full_filter_block.cc -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::DBOptions::DBOptions(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 56%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/partitioned_filter_block.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/partitioned_filter_block.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/partitioned_filter_block.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/partitioned_filter_block.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/partitioned_filter_block.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:17, - from /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:23: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61, - from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/cache/typed_cache.h:26, - from /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.h:21, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:17, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:24: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >*, vector > > >; _Distance = int; _Tp = pair >; _Compare = __gnu_cxx::__ops::_Iter_comp_val > > >]': -/usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >*, std::vector > > >' changed in GCC 7.1 - 135 | __push_heap(_RandomAccessIterator __first, - | ^~~~~~~~~~~ -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >*, vector > > >; _Distance = int; _Tp = pair >; _Compare = __gnu_cxx::__ops::_Iter_comp_val > > >]': -/usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >*, std::vector > > >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >*, vector > > >; _Distance = int; _Tp = pair >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter > > >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >*, std::vector > > >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 57%] Building CXX object CMakeFiles/rocksdb-shared.dir/trace_replay/block_cache_tracer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/trace_replay/block_cache_tracer.cc.o -MF CMakeFiles/rocksdb-shared.dir/trace_replay/block_cache_tracer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/trace_replay/block_cache_tracer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.cc -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::StatsUnit>; _KeyOfValue = std::_Select1st, rocksdb::StatsUnit> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 -[ 57%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_iterator.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/partitioned_index_iterator.cc -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/map:63: -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::CfUnit; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::StatsUnit; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::StatsUnitCorrelationUpdate(rocksdb::StatsUnit&, const uint32_t&, const uint64_t&, const std::string&)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1345:41: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::StatsUnitCorrelationUpdate(rocksdb::StatsUnit&, const uint32_t&, const uint64_t&, const std::string&)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1346:45: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::StatsUnit; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::StatsUnitCorrelationUpdate(rocksdb::StatsUnit&, const uint32_t&, const uint64_t&, const std::string&)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1347:58: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::CfUnit; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::TraceAnalyzer::PrintStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1730:22: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1070:53: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::CfUnit; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1074:71: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::StatsUnit; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1075:58: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1115:60: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1117:60: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::KeyStatsInsertion(const uint32_t&, const uint32_t&, const std::string&, size_t, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1242:55: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::KeyStatsInsertion(const uint32_t&, const uint32_t&, const std::string&, size_t, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1267:52: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:537:65: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:539:65: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:547:61: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:549:61: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 57%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/partitioned_index_reader.cc -[ 57%] Building CXX object CMakeFiles/rocksdb-shared.dir/trace_replay/io_tracer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/trace_replay/io_tracer.cc.o -MF CMakeFiles/rocksdb-shared.dir/trace_replay/io_tracer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/trace_replay/io_tracer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.cc -[ 57%] Building CXX object CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_handler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_handler.cc.o -MF CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_handler.cc.o.d -o CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_record_handler.cc -[ 57%] Building CXX object CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_result.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_result.cc.o -MF CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_result.cc.o.d -o CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_result.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_record_result.cc -[ 58%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/reader_common.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/reader_common.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/reader_common.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/reader_common.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/reader_common.cc -[ 58%] Building CXX object CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record.cc.o -MF CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record.cc.o.d -o CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_record.cc -[ 58%] Building CXX object CMakeFiles/rocksdb-shared.dir/trace_replay/trace_replay.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/trace_replay/trace_replay.cc.o -MF CMakeFiles/rocksdb-shared.dir/trace_replay/trace_replay.cc.o.d -o CMakeFiles/rocksdb-shared.dir/trace_replay/trace_replay.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.cc -[ 58%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/async_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/async_file_reader.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/async_file_reader.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/async_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/async_file_reader.cc -[ 58%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/cleanable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/cleanable.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/cleanable.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/cleanable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/cleanable.cc -[ 59%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/coding.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/coding.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/coding.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/coding.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/coding.cc -[ 59%] Building CXX object CMakeFiles/rocksdb.dir/table/block_based/uncompression_dict_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_based/uncompression_dict_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/block_based/uncompression_dict_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_based/uncompression_dict_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_based/uncompression_dict_reader.cc -[ 59%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/compaction_job_stats_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/compaction_job_stats_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/compaction_job_stats_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/compaction_job_stats_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/compaction_job_stats_impl.cc -[ 59%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/comparator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/comparator.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/comparator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/comparator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/comparator.cc -[ 59%] Building CXX object CMakeFiles/rocksdb.dir/table/block_fetcher.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/block_fetcher.cc.o -MF CMakeFiles/rocksdb.dir/table/block_fetcher.cc.o.d -o CMakeFiles/rocksdb.dir/table/block_fetcher.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/block_fetcher.cc -[ 59%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/compression.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/compression.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/compression.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/compression.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/compression.cc -[ 59%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/compression_context_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/compression_context_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/compression_context_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/compression_context_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/compression_context_cache.cc -[ 59%] Building CXX object CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_builder.cc.o -MF CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_builder.cc.o.d -o CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/cuckoo/cuckoo_table_builder.cc -[ 59%] Building CXX object CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_factory.cc.o -MF CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_factory.cc.o.d -o CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/cuckoo/cuckoo_table_factory.cc -[ 59%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/concurrent_task_limiter_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/concurrent_task_limiter_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/concurrent_task_limiter_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/concurrent_task_limiter_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/concurrent_task_limiter_impl.cc -[ 59%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/crc32c.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/crc32c.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/crc32c.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/crc32c.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/crc32c.cc -[ 60%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/data_structure.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/data_structure.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/data_structure.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/data_structure.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/data_structure.cc -[ 60%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/dynamic_bloom.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/dynamic_bloom.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/dynamic_bloom.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/dynamic_bloom.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.cc -[ 60%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/hash.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/hash.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/hash.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/hash.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/hash.cc -[ 60%] Building CXX object CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/cuckoo/cuckoo_table_reader.cc -[ 60%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/murmurhash.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/murmurhash.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/murmurhash.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/murmurhash.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/murmurhash.cc -[ 60%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/random.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/random.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/random.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/random.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/random.cc -[ 60%] Building CXX object CMakeFiles/rocksdb.dir/table/format.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/format.cc.o -MF CMakeFiles/rocksdb.dir/table/format.cc.o.d -o CMakeFiles/rocksdb.dir/table/format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/format.cc -[ 60%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/rate_limiter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/rate_limiter.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/rate_limiter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/rate_limiter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/rate_limiter.cc -[ 60%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/ribbon_config.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/ribbon_config.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/ribbon_config.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/ribbon_config.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/ribbon_config.cc -[ 61%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/slice.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/slice.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/slice.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/slice.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/slice.cc -[ 61%] Building CXX object CMakeFiles/rocksdb.dir/table/get_context.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/get_context.cc.o -MF CMakeFiles/rocksdb.dir/table/get_context.cc.o.d -o CMakeFiles/rocksdb.dir/table/get_context.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/get_context.cc -[ 62%] Building CXX object CMakeFiles/rocksdb.dir/table/iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/iterator.cc.o -MF CMakeFiles/rocksdb.dir/table/iterator.cc.o.d -o CMakeFiles/rocksdb.dir/table/iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/iterator.cc -[ 62%] Building CXX object CMakeFiles/rocksdb.dir/table/merging_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/merging_iterator.cc.o -MF CMakeFiles/rocksdb.dir/table/merging_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/table/merging_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/merging_iterator.cc -[ 62%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/file_checksum_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/file_checksum_helper.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/file_checksum_helper.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/file_checksum_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/file_checksum_helper.cc -[ 62%] Building CXX object CMakeFiles/rocksdb.dir/table/compaction_merging_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/compaction_merging_iterator.cc.o -MF CMakeFiles/rocksdb.dir/table/compaction_merging_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/table/compaction_merging_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/compaction_merging_iterator.cc -[ 62%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/status.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/status.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/status.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/status.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/status.cc -[ 62%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/stderr_logger.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/stderr_logger.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/stderr_logger.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/stderr_logger.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/stderr_logger.cc -[ 62%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/string_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/string_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/string_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/string_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/string_util.cc -[ 62%] Building CXX object CMakeFiles/rocksdb.dir/table/meta_blocks.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/meta_blocks.cc.o -MF CMakeFiles/rocksdb.dir/table/meta_blocks.cc.o.d -o CMakeFiles/rocksdb.dir/table/meta_blocks.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/meta_blocks.cc -[ 62%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/thread_local.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/thread_local.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/thread_local.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/thread_local.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/thread_local.cc -[ 62%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/threadpool_imp.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/threadpool_imp.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/threadpool_imp.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/threadpool_imp.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/threadpool_imp.cc -[ 62%] Building CXX object CMakeFiles/rocksdb.dir/table/persistent_cache_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/persistent_cache_helper.cc.o -MF CMakeFiles/rocksdb.dir/table/persistent_cache_helper.cc.o.d -o CMakeFiles/rocksdb.dir/table/persistent_cache_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/persistent_cache_helper.cc -[ 62%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/udt_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/udt_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/udt_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/udt_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/udt_util.cc -[ 63%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/write_batch_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/write_batch_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/write_batch_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/write_batch_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/write_batch_util.cc -[ 63%] Building CXX object CMakeFiles/rocksdb-shared.dir/util/xxhash.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/util/xxhash.cc.o -MF CMakeFiles/rocksdb-shared.dir/util/xxhash.cc.o.d -o CMakeFiles/rocksdb-shared.dir/util/xxhash.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/xxhash.cc -[ 63%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/agg_merge/agg_merge.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/agg_merge/agg_merge.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/agg_merge/agg_merge.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/agg_merge/agg_merge.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/agg_merge/agg_merge.cc -[ 63%] Building CXX object CMakeFiles/rocksdb.dir/table/plain/plain_table_bloom.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/plain/plain_table_bloom.cc.o -MF CMakeFiles/rocksdb.dir/table/plain/plain_table_bloom.cc.o.d -o CMakeFiles/rocksdb.dir/table/plain/plain_table_bloom.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_bloom.cc -[ 63%] Building CXX object CMakeFiles/rocksdb.dir/table/plain/plain_table_builder.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/plain/plain_table_builder.cc.o -MF CMakeFiles/rocksdb.dir/table/plain/plain_table_builder.cc.o.d -o CMakeFiles/rocksdb.dir/table/plain/plain_table_builder.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_builder.cc -[ 63%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/backup/backup_engine.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/backup/backup_engine.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/backup/backup_engine.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/backup/backup_engine.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/backup/backup_engine.cc -[ 63%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_compaction_filter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_compaction_filter.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_compaction_filter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_compaction_filter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_compaction_filter.cc -[ 64%] Building CXX object CMakeFiles/rocksdb.dir/table/plain/plain_table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/plain/plain_table_factory.cc.o -MF CMakeFiles/rocksdb.dir/table/plain/plain_table_factory.cc.o.d -o CMakeFiles/rocksdb.dir/table/plain/plain_table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_factory.cc -[ 64%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db.cc -[ 64%] Building CXX object CMakeFiles/rocksdb.dir/table/plain/plain_table_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/plain/plain_table_index.cc.o -MF CMakeFiles/rocksdb.dir/table/plain/plain_table_index.cc.o.d -o CMakeFiles/rocksdb.dir/table/plain/plain_table_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_index.cc -[ 64%] Building CXX object CMakeFiles/rocksdb.dir/table/plain/plain_table_key_coding.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/plain/plain_table_key_coding.cc.o -MF CMakeFiles/rocksdb.dir/table/plain/plain_table_key_coding.cc.o.d -o CMakeFiles/rocksdb.dir/table/plain/plain_table_key_coding.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_key_coding.cc -[ 64%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc -[ 64%] Building CXX object CMakeFiles/rocksdb.dir/table/plain/plain_table_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/plain/plain_table_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/plain/plain_table_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/plain/plain_table_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/plain/plain_table_reader.cc -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl_filesnapshot.cc -In file included from /usr/include/c++/14/bits/stl_algo.h:61, - from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/cache/typed_cache.h:26, - from /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.h:21, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:17, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:24, - from /build/reproducible-path/rocksdb-9.10.0/db/db_iter.h:14, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.h:23, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:7: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::CompactionFileInfo; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/set:62, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.h:14: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = TimerQueue::WorkItem; _Compare = __gnu_cxx::__ops::_Iter_comp_val >]': -/usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 135 | __push_heap(_RandomAccessIterator __first, - | ^~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = TimerQueue::WorkItem; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_dump_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_dump_tool.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_dump_tool.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_dump_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_dump_tool.cc -[ 65%] Building CXX object CMakeFiles/rocksdb.dir/table/sst_file_dumper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/sst_file_dumper.cc.o -MF CMakeFiles/rocksdb.dir/table/sst_file_dumper.cc.o.d -o CMakeFiles/rocksdb.dir/table/sst_file_dumper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/sst_file_dumper.cc -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:540:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:540:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:546:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:546:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_file.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_file.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_file.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_file.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_file.cc -In file included from /usr/include/c++/14/map:63, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h:18, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h:32, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:26, - from /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_format.h:13, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.h:21: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::Status rocksdb::blob_db::BlobDBImpl::OpenAllBlobFiles()' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:391:28: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::Status rocksdb::blob_db::BlobDBImpl::OpenAllBlobFiles()' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:399:47: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'void rocksdb::blob_db::BlobDBImpl::TEST_AddDummyBlobFile(uint64_t, rocksdb::SequenceNumber)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:2197:31: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'void rocksdb::blob_db::BlobDBImpl::TEST_AddDummyBlobFile(uint64_t, rocksdb::SequenceNumber)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:2198:48: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cache_dump_load.cc -[ 65%] Building CXX object CMakeFiles/rocksdb.dir/table/sst_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/sst_file_reader.cc.o -MF CMakeFiles/rocksdb.dir/table/sst_file_reader.cc.o.d -o CMakeFiles/rocksdb.dir/table/sst_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/sst_file_reader.cc -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cache_dump_load_impl.cc -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/cassandra/cassandra_compaction_filter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/cassandra/cassandra_compaction_filter.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/cassandra/cassandra_compaction_filter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/cassandra/cassandra_compaction_filter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/cassandra_compaction_filter.cc -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/cassandra/format.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/cassandra/format.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/cassandra/format.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/cassandra/format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc -[ 65%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/cassandra/merge_operator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/cassandra/merge_operator.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/cassandra/merge_operator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/cassandra/merge_operator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/merge_operator.cc -In file included from /usr/include/c++/14/bits/stl_algo.h:61, - from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc:8: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::cassandra::RowValue; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::cassandra::RowValue::Merge(std::vector&&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'static rocksdb::cassandra::RowValue rocksdb::cassandra::RowValue::Merge(std::vector&&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc:322:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::cassandra::RowValue::Merge(std::vector&&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'static rocksdb::cassandra::RowValue rocksdb::cassandra::RowValue::Merge(std::vector&&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc:322:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 66%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/checkpoint/checkpoint_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/checkpoint/checkpoint_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/checkpoint/checkpoint_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/checkpoint/checkpoint_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/checkpoint/checkpoint_impl.cc -[ 66%] Building CXX object CMakeFiles/rocksdb.dir/table/sst_file_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/sst_file_writer.cc.o -MF CMakeFiles/rocksdb.dir/table/sst_file_writer.cc.o.d -o CMakeFiles/rocksdb.dir/table/sst_file_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/sst_file_writer.cc -[ 66%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/compaction_filters.cc -[ 66%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc -[ 66%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/counted_fs.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/counted_fs.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/counted_fs.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/counted_fs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/counted_fs.cc -[ 66%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/debug.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/debug.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/debug.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/debug.cc -[ 66%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/env_mirror.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/env_mirror.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/env_mirror.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/env_mirror.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/env_mirror.cc -[ 67%] Building CXX object CMakeFiles/rocksdb.dir/table/table_factory.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/table_factory.cc.o -MF CMakeFiles/rocksdb.dir/table/table_factory.cc.o.d -o CMakeFiles/rocksdb.dir/table/table_factory.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/table_factory.cc -[ 67%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/env_timed.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/env_timed.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/env_timed.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/env_timed.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/env_timed.cc -[ 67%] Building CXX object CMakeFiles/rocksdb.dir/table/table_properties.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/table_properties.cc.o -MF CMakeFiles/rocksdb.dir/table/table_properties.cc.o.d -o CMakeFiles/rocksdb.dir/table/table_properties.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_env.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_env.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_env.cc -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_fs.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_fs.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_fs.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_fs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/table_properties.h:9, - from /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:6: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, long long unsigned int>; _KeyOfValue = std::_Select1st, long long unsigned int> >; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:204:17: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:205:18: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:206:24: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:207:28: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:208:19: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:209:20: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:210:22: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:211:23: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:212:19: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:213:26: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:214:21: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:215:26: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:216:27: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:217:44: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'std::map, long long unsigned int> rocksdb::TableProperties::GetAggregatablePropertiesAsMap() const' at /build/reproducible-path/rocksdb-9.10.0/table/table_properties.cc:219:44: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h:20, - from /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:17: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::FSFileState>; _KeyOfValue = std::_Select1st, rocksdb::FSFileState> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::FSFileState>; _KeyOfValue = std::_Select1st, rocksdb::FSFileState> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_secondary_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_secondary_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_secondary_cache.cc -[ 68%] Building CXX object CMakeFiles/rocksdb.dir/table/two_level_iterator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/two_level_iterator.cc.o -MF CMakeFiles/rocksdb.dir/table/two_level_iterator.cc.o.d -o CMakeFiles/rocksdb.dir/table/two_level_iterator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/two_level_iterator.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]', - inlined from 'void rocksdb::FaultInjectionTestFS::WritableFileClosed(const rocksdb::FSFileState&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:1271:35: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {std::pair, std::allocator >, rocksdb::FSFileState>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::FSFileState>; _KeyOfValue = std::_Select1st, rocksdb::FSFileState> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair, std::allocator >, rocksdb::FSFileState>}; _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]', - inlined from 'std::__enable_if_t<((bool)std::is_constructible, _Pair>::value), std::pair, std::_Select1st >, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair, rocksdb::FSFileState>; _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]' at /usr/include/c++/14/bits/stl_map.h:859:27, - inlined from 'void rocksdb::FaultInjectionTestFS::WritableFileSynced(const rocksdb::FSFileState&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:1280:28: -/usr/include/c++/14/bits/stl_map.h:640:45: note: parameter passing for argument of type 'std::map, rocksdb::FSFileState>::const_iterator' {aka 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator'} changed in GCC 7.1 - 640 | return _M_t._M_emplace_hint_unique(__pos, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ - 641 | std::forward<_Args>(__args)...); - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]', - inlined from 'void rocksdb::FaultInjectionTestFS::WritableFileSynced(const rocksdb::FSFileState&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:1282:37: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/leveldb_options/leveldb_options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/leveldb_options/leveldb_options.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/leveldb_options/leveldb_options.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/leveldb_options/leveldb_options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/leveldb_options/leveldb_options.cc -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/memory/memory_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/memory/memory_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/memory/memory_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/memory/memory_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc -[ 68%] Building CXX object CMakeFiles/rocksdb.dir/table/unique_id.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/table/unique_id.cc.o -MF CMakeFiles/rocksdb.dir/table/unique_id.cc.o.d -o CMakeFiles/rocksdb.dir/table/unique_id.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/unique_id.cc -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators.cc -[ 68%] Building CXX object CMakeFiles/rocksdb.dir/test_util/sync_point.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/test_util/sync_point.cc.o -MF CMakeFiles/rocksdb.dir/test_util/sync_point.cc.o.d -o CMakeFiles/rocksdb.dir/test_util/sync_point.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/sync_point.cc -[ 68%] Building CXX object CMakeFiles/rocksdb.dir/test_util/sync_point_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/test_util/sync_point_impl.cc.o -MF CMakeFiles/rocksdb.dir/test_util/sync_point_impl.cc.o.d -o CMakeFiles/rocksdb.dir/test_util/sync_point_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/sync_point_impl.cc -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/bytesxor.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/bytesxor.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/bytesxor.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/bytesxor.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/bytesxor.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/memory_util.h:9, - from /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:7: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::MemoryUtil::UsageType; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:24:50: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:28:54: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:37:54: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:44:47: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 68%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/max.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/max.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/max.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/max.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/max.cc -[ 69%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/put.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/put.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/put.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/put.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/put.cc -[ 69%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/sortlist.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/sortlist.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/sortlist.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/sortlist.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/sortlist.cc -[ 69%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/string_append/stringappend.cc -[ 69%] Building CXX object CMakeFiles/rocksdb.dir/test_util/testutil.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/test_util/testutil.cc.o -MF CMakeFiles/rocksdb.dir/test_util/testutil.cc.o.d -o CMakeFiles/rocksdb.dir/test_util/testutil.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/testutil.cc -[ 69%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend2.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend2.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend2.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend2.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/string_append/stringappend2.cc -[ 69%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/uint64add.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/uint64add.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/uint64add.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/uint64add.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/uint64add.cc -[ 69%] Building CXX object CMakeFiles/rocksdb.dir/test_util/transaction_test_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/test_util/transaction_test_util.cc.o -MF CMakeFiles/rocksdb.dir/test_util/transaction_test_util.cc.o.d -o CMakeFiles/rocksdb.dir/test_util/transaction_test_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/test_util/transaction_test_util.cc -[ 69%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/object_registry.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/object_registry.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/object_registry.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/object_registry.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/object_registry.cc -[ 69%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/option_change_migration/option_change_migration.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/option_change_migration/option_change_migration.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/option_change_migration/option_change_migration.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/option_change_migration/option_change_migration.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/option_change_migration/option_change_migration.cc -[ 70%] Building CXX object CMakeFiles/rocksdb.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o -MF CMakeFiles/rocksdb.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o.d -o CMakeFiles/rocksdb.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/options/options_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/options/options_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/options/options_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/options/options_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/options/options_util.cc -[ 71%] Building CXX object CMakeFiles/rocksdb.dir/tools/dump/db_dump_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/tools/dump/db_dump_tool.cc.o -MF CMakeFiles/rocksdb.dir/tools/dump/db_dump_tool.cc.o.d -o CMakeFiles/rocksdb.dir/tools/dump/db_dump_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/dump/db_dump_tool.cc -In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/options_util.h:11, - from /build/reproducible-path/rocksdb-9.10.0/utilities/options/options_util.cc:7: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/block_cache_tier.cc -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44, - inlined from 'rocksdb::DBOptions& rocksdb::DBOptions::operator=(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8, - inlined from 'rocksdb::Status rocksdb::LoadOptionsFromFile(const ConfigOptions&, const std::string&, DBOptions*, std::vector*, std::shared_ptr*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/options/options_util.cc:26:32: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.h:8, - from /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:7: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair, std::map > >; _KeyOfValue = std::_Select1st, std::map > > >; _Compare = std::less; _Alloc = std::allocator, std::map > > >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::map > >, std::_Select1st, std::map > > >, std::less, std::allocator, std::map > > > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair, std::map > >; _KeyOfValue = std::_Select1st, std::map > > >; _Compare = std::less; _Alloc = std::allocator, std::map > > >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::map > >, std::_Select1st, std::map > > >, std::less, std::allocator, std::map > > > >::const_iterator' changed in GCC 7.1 -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_file.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_file.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_file.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_file.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/block_cache_tier_file.cc -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::TraceType; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::TraceType; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::TableReaderCaller; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair > >; _KeyOfValue = std::_Select1st > > >; _Compare = std::less; _Alloc = std::allocator > > >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, long long unsigned int>; _KeyOfValue = std::_Select1st, long long unsigned int> >; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1297:45, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1338:45, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1339:41, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(rocksdb::TableReaderCaller) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::HistogramStat>; _KeyOfValue = std::_Select1st, rocksdb::HistogramStat> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1637:26, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1638:38, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintBlockSizeStats() const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1955:26: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1959:31: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1972:41: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1973:50: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1977:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintStatsSummary() const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1980:55: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = double; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::WriteMissRatioTimeline(uint64_t) const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:429:73: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = double; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::WriteMissRatioTimeline(uint64_t) const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:453:71: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/block_cache_tier_metadata.cc -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/persistent_cache_tier.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/persistent_cache_tier.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/persistent_cache_tier.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/persistent_cache_tier.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/persistent_cache_tier.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = long long unsigned int; _Compare = std::less >; _Alloc = std::allocator, long long unsigned int> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:573:26, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteSkewness(const std::string&, const std::vector&, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, long long unsigned int>, std::_Select1st, long long unsigned int> >, std::less >, std::allocator, long long unsigned int> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1859:59: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1862:43: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1865:47: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::HistogramStat; _Compare = std::less >; _Alloc = std::allocator, rocksdb::HistogramStat> >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1868:37: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::HistogramStat>, std::_Select1st, rocksdb::HistogramStat> >, std::less >, std::allocator, rocksdb::HistogramStat> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockAccessInfo::AddAccess(const rocksdb::BlockCacheTraceRecord&, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.h:83:40: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockAccessInfo::AddAccess(const rocksdb::BlockCacheTraceRecord&, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.h:103:64: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockAccessInfo::AddAccess(const rocksdb::BlockCacheTraceRecord&, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.h:112:74: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/volatile_tier_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/volatile_tier_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/volatile_tier_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/volatile_tier_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/volatile_tier_impl.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TableReaderCaller; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1705:47: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/cache_simulator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/cache_simulator.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/cache_simulator.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/cache_simulator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector >; _Compare = std::less; _Alloc = std::allocator > > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1681:36, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1684:22, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::TraceType; _Tp = rocksdb::HistogramStat; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1685:34, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::PrintAccessCountStats(bool, uint32_t, uint32_t) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 71%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/sim_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/sim_cache.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/sim_cache.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/sim_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/sim_cache.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector >; _Compare = std::less; _Alloc = std::allocator > > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:887:42, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string&, uint64_t, bool) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1195:30, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1197:32, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::vector; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::' at /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer.cc:1209:34, - inlined from 'constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:61:36, - inlined from 'constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::&; _Args = {const __cxx11::basic_string, allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const __cxx11::basic_string, allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/invoke.h:111:28, - inlined from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void; _Functor = rocksdb::BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(uint64_t, bool, rocksdb::TraceType) const::; _ArgTypes = {const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, unsigned int, rocksdb::TraceType, const std::__cxx11::basic_string, std::allocator >&, long long unsigned int, const rocksdb::BlockAccessInfo&}]' at /usr/include/c++/14/bits/std_function.h:290:30: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h:18, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h:32, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:26, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h:18, - from /build/reproducible-path/rocksdb-9.10.0/cache/sharded_cache.h:18, - from /build/reproducible-path/rocksdb-9.10.0/cache/lru_cache.h:14, - from /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:6: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::MissRatioStats::UpdateMetrics(uint64_t, bool, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:66:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::MissRatioStats::UpdateMetrics(uint64_t, bool, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:70:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::MissRatioStats::UpdateMetrics(uint64_t, bool, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:74:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::CacheConfiguration; _Val = std::pair > >; _KeyOfValue = std::_Select1st > > >; _Compare = std::less; _Alloc = std::allocator > > >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = rocksdb::CacheConfiguration; _Tp = std::vector >; _Compare = std::less; _Alloc = std::allocator > > >]', - inlined from 'rocksdb::Status rocksdb::BlockCacheTraceSimulator::InitializeCaches()' at /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:259:25: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 71%] Building CXX object CMakeFiles/rocksdb.dir/tools/io_tracer_parser_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/tools/io_tracer_parser_tool.cc.o -MF CMakeFiles/rocksdb.dir/tools/io_tracer_parser_tool.cc.o.d -o CMakeFiles/rocksdb.dir/tools/io_tracer_parser_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/io_tracer_parser_tool.cc -[ 72%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/table_properties_collectors/compact_for_tiering_collector.cc -[ 72%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/table_properties_collectors/compact_on_deletion_collector.cc -[ 72%] Building CXX object CMakeFiles/rocksdb.dir/tools/ldb_cmd.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/tools/ldb_cmd.cc.o -MF CMakeFiles/rocksdb.dir/tools/ldb_cmd.cc.o.d -o CMakeFiles/rocksdb.dir/tools/ldb_cmd.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/ldb_cmd.cc -[ 72%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/trace/file_trace_reader_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/trace/file_trace_reader_writer.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/trace/file_trace_reader_writer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/trace/file_trace_reader_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/trace/file_trace_reader_writer.cc -[ 72%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/trace/replayer_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/trace/replayer_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/trace/replayer_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/trace/replayer_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/trace/replayer_impl.cc -[ 72%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/lock_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/lock_manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/lock_manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/lock_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/lock_manager.cc -[ 72%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_tracker.cc -[ 72%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.cc -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc -In file included from /usr/include/c++/14/vector:72, - from /usr/include/c++/14/functional:64, - from /build/reproducible-path/rocksdb-9.10.0/util/thread_local.h:13, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:8: -/usr/include/c++/14/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::_M_erase(iterator, iterator) [with _Tp = rocksdb::RangeDeadlockPath; _Alloc = std::allocator]': -/usr/include/c++/14/bits/vector.tcc:195:5: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 - 195 | vector<_Tp, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/vector.tcc:195:5: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/vector:66: -In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(const_iterator, const_iterator) [with _Tp = rocksdb::RangeDeadlockPath; _Alloc = std::allocator]', - inlined from 'void rocksdb::DeadlockInfoBufferTempl::Resize(uint32_t) [with Path = rocksdb::RangeDeadlockPath]' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.h:77:26, - inlined from 'virtual void rocksdb::RangeTreeLockManager::SetRangeDeadlockInfoBufferSize(uint32_t)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:285:23, - inlined from 'virtual void rocksdb::RangeTreeLockManager::Resize(uint32_t)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:289:33: -/usr/include/c++/14/bits/stl_vector.h:1568:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1568 | return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); - | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(const_iterator, const_iterator) [with _Tp = rocksdb::RangeDeadlockPath; _Alloc = std::allocator]', - inlined from 'void rocksdb::DeadlockInfoBufferTempl::Resize(uint32_t) [with Path = rocksdb::RangeDeadlockPath]' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.h:77:26, - inlined from 'virtual void rocksdb::RangeTreeLockManager::SetRangeDeadlockInfoBufferSize(uint32_t)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:285:23: -/usr/include/c++/14/bits/stl_vector.h:1568:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1568 | return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); - | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_vector.h: In member function 'virtual void rocksdb::RangeTreeLockManager::_ZThn4_N7rocksdb20RangeTreeLockManager30SetRangeDeadlockInfoBufferSizeEj(uint32_t)': -/usr/include/c++/14/bits/stl_vector.h:1568:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1568 | return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); - | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/bits/unordered_map.h:33, - from /usr/include/c++/14/unordered_map:41, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.cc:7: -/usr/include/c++/14/bits/hashtable.h: In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(const_iterator) [with _Key = std::__cxx11::basic_string; _Value = std::pair, rocksdb::LockInfo>; _Alloc = std::allocator, rocksdb::LockInfo> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to >; _Hash = std::hash >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]': -/usr/include/c++/14/bits/hashtable.h:2380:5: note: parameter passing for argument of type 'std::_Hashtable, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 2380 | _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2381 | _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(iterator) [with _Key = std::__cxx11::basic_string; _Value = std::pair, rocksdb::LockInfo>; _Alloc = std::allocator, rocksdb::LockInfo> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to >; _Hash = std::hash >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]', - inlined from 'std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::erase(iterator) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::LockInfo; _Hash = std::hash >; _Pred = std::equal_to >; _Alloc = std::allocator, rocksdb::LockInfo> >]' at /usr/include/c++/14/bits/unordered_map.h:754:26, - inlined from 'void rocksdb::PointLockManager::UnLockKey(rocksdb::PessimisticTransaction*, const std::string&, rocksdb::LockMapStripe*, rocksdb::LockMap*, rocksdb::Env*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.cc:555:27: -/usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 1024 | { return erase(const_iterator(__it)); } - | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/optimistic_transaction_db_impl.cc -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/optimistic_transaction.cc -In file included from /usr/include/c++/14/vector:65, - from /usr/include/c++/14/functional:64, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/ldb_cmd.h:13, - from /build/reproducible-path/rocksdb-9.10.0/tools/ldb_cmd.cc:7: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::DBOptions::DBOptions(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/pessimistic_transaction.cc -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction_db.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction_db.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/pessimistic_transaction_db.cc -[ 73%] Building CXX object CMakeFiles/rocksdb.dir/tools/ldb_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/tools/ldb_tool.cc.o -MF CMakeFiles/rocksdb.dir/tools/ldb_tool.cc.o.d -o CMakeFiles/rocksdb.dir/tools/ldb_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/ldb_tool.cc -[ 73%] Building CXX object CMakeFiles/rocksdb.dir/tools/sst_dump_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/tools/sst_dump_tool.cc.o -MF CMakeFiles/rocksdb.dir/tools/sst_dump_tool.cc.o.d -o CMakeFiles/rocksdb.dir/tools/sst_dump_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/sst_dump_tool.cc -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/snapshot_checker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/snapshot_checker.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/snapshot_checker.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/snapshot_checker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/snapshot_checker.cc -[ 73%] Building CXX object CMakeFiles/rocksdb.dir/tools/trace_analyzer_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/tools/trace_analyzer_tool.cc.o -MF CMakeFiles/rocksdb.dir/tools/trace_analyzer_tool.cc.o.d -o CMakeFiles/rocksdb.dir/tools/trace_analyzer_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc -[ 73%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_base.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_base.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_base.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_base.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/transaction_base.cc -[ 74%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_db_mutex_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_db_mutex_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_db_mutex_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_db_mutex_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/transaction_db_mutex_impl.cc -[ 74%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/transaction_util.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:17, - from /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:23: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61, - from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/cache/typed_cache.h:26, - from /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.h:21, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:17, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:24: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >*, vector > > >; _Distance = int; _Tp = pair >; _Compare = __gnu_cxx::__ops::_Iter_comp_val > > >]': -/usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >*, std::vector > > >' changed in GCC 7.1 - 135 | __push_heap(_RandomAccessIterator __first, - | ^~~~~~~~~~~ -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >*, vector > > >; _Distance = int; _Tp = pair >; _Compare = __gnu_cxx::__ops::_Iter_comp_val > > >]': -/usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >*, std::vector > > >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >*, vector > > >; _Distance = int; _Tp = pair >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter > > >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >*, std::vector > > >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::StatsUnit>; _KeyOfValue = std::_Select1st, rocksdb::StatsUnit> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/map:63: -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::CfUnit; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::StatsUnit; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::StatsUnitCorrelationUpdate(rocksdb::StatsUnit&, const uint32_t&, const uint64_t&, const std::string&)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1345:41: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::StatsUnitCorrelationUpdate(rocksdb::StatsUnit&, const uint32_t&, const uint64_t&, const std::string&)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1346:45: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::StatsUnit; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::StatsUnitCorrelationUpdate(rocksdb::StatsUnit&, const uint32_t&, const uint64_t&, const std::string&)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1347:58: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::CfUnit; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::TraceAnalyzer::PrintStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1730:22: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 74%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::TraceStats; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1070:53: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = rocksdb::CfUnit; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1074:71: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::StatsUnit; _Compare = std::less >; _Alloc = std::allocator, rocksdb::StatsUnit> >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1075:58: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::StatsUnit>, std::_Select1st, rocksdb::StatsUnit> >, std::less >, std::allocator, rocksdb::StatsUnit> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1115:60: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::ReProcessing()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1117:60: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::KeyStatsInsertion(const uint32_t&, const uint32_t&, const std::string&, size_t, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1242:55: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::KeyStatsInsertion(const uint32_t&, const uint32_t&, const std::string&, size_t, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:1267:52: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:537:65: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:539:65: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:547:61: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'rocksdb::Status rocksdb::TraceAnalyzer::MakeStatistics()' at /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer_tool.cc:549:61: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 75%] Building CXX object CMakeFiles/rocksdb.dir/trace_replay/block_cache_tracer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/trace_replay/block_cache_tracer.cc.o -MF CMakeFiles/rocksdb.dir/trace_replay/block_cache_tracer.cc.o.d -o CMakeFiles/rocksdb.dir/trace_replay/block_cache_tracer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/block_cache_tracer.cc -[ 75%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn_db.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn_db.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.cc -[ 75%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_unprepared_txn.cc -[ 75%] Building CXX object CMakeFiles/rocksdb.dir/trace_replay/io_tracer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/trace_replay/io_tracer.cc.o -MF CMakeFiles/rocksdb.dir/trace_replay/io_tracer.cc.o.d -o CMakeFiles/rocksdb.dir/trace_replay/io_tracer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/io_tracer.cc -In file included from /usr/include/c++/14/queue:64, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.cc:7: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = long long unsigned int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -In file included from /usr/include/c++/14/vector:72, - from /usr/include/c++/14/queue:63: -/usr/include/c++/14/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const long long unsigned int&}; _Tp = long long unsigned int; _Alloc = std::allocator]': -/usr/include/c++/14/bits/vector.tcc:452:7: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 - 452 | vector<_Tp, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~ -In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(const_iterator, const value_type&) [with _Tp = long long unsigned int; _Alloc = std::allocator]', - inlined from 'bool rocksdb::WritePreparedTxnDB::MaybeUpdateOldCommitMap(const uint64_t&, const uint64_t&, const uint64_t&, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.cc:1063:15: -/usr/include/c++/14/bits/vector.tcc:170:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 170 | _M_realloc_insert(begin() + (__position - cbegin()), __x); - | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 75%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn_db.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn_db.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_unprepared_txn_db.cc -[ 75%] Building CXX object CMakeFiles/rocksdb.dir/trace_replay/trace_record_handler.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/trace_replay/trace_record_handler.cc.o -MF CMakeFiles/rocksdb.dir/trace_replay/trace_record_handler.cc.o.d -o CMakeFiles/rocksdb.dir/trace_replay/trace_record_handler.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_record_handler.cc -[ 75%] Building CXX object CMakeFiles/rocksdb.dir/trace_replay/trace_record_result.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/trace_replay/trace_record_result.cc.o -MF CMakeFiles/rocksdb.dir/trace_replay/trace_record_result.cc.o.d -o CMakeFiles/rocksdb.dir/trace_replay/trace_record_result.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_record_result.cc -[ 75%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/types_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/types_util.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/types_util.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/types_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/types_util.cc -[ 75%] Building CXX object CMakeFiles/rocksdb.dir/trace_replay/trace_record.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/trace_replay/trace_record.cc.o -MF CMakeFiles/rocksdb.dir/trace_replay/trace_record.cc.o.d -o CMakeFiles/rocksdb.dir/trace_replay/trace_record.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_record.cc -[ 76%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/ttl/db_ttl_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/ttl/db_ttl_impl.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/ttl/db_ttl_impl.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/ttl/db_ttl_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/ttl/db_ttl_impl.cc -[ 76%] Building CXX object CMakeFiles/rocksdb.dir/trace_replay/trace_replay.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/trace_replay/trace_replay.cc.o -MF CMakeFiles/rocksdb.dir/trace_replay/trace_replay.cc.o.d -o CMakeFiles/rocksdb.dir/trace_replay/trace_replay.cc.o -c /build/reproducible-path/rocksdb-9.10.0/trace_replay/trace_replay.cc -[ 76%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/wal_filter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/wal_filter.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/wal_filter.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/wal_filter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/wal_filter.cc -[ 76%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/write_batch_with_index/write_batch_with_index.cc -[ 76%] Building CXX object CMakeFiles/rocksdb.dir/util/async_file_reader.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/async_file_reader.cc.o -MF CMakeFiles/rocksdb.dir/util/async_file_reader.cc.o.d -o CMakeFiles/rocksdb.dir/util/async_file_reader.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/async_file_reader.cc -[ 76%] Building CXX object CMakeFiles/rocksdb.dir/util/cleanable.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/cleanable.cc.o -MF CMakeFiles/rocksdb.dir/util/cleanable.cc.o.d -o CMakeFiles/rocksdb.dir/util/cleanable.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/cleanable.cc -[ 77%] Building CXX object CMakeFiles/rocksdb.dir/util/coding.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/coding.cc.o -MF CMakeFiles/rocksdb.dir/util/coding.cc.o.d -o CMakeFiles/rocksdb.dir/util/coding.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/coding.cc -[ 77%] Building CXX object CMakeFiles/rocksdb.dir/util/compaction_job_stats_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/compaction_job_stats_impl.cc.o -MF CMakeFiles/rocksdb.dir/util/compaction_job_stats_impl.cc.o.d -o CMakeFiles/rocksdb.dir/util/compaction_job_stats_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/compaction_job_stats_impl.cc -[ 77%] Building CXX object CMakeFiles/rocksdb.dir/util/comparator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/comparator.cc.o -MF CMakeFiles/rocksdb.dir/util/comparator.cc.o.d -o CMakeFiles/rocksdb.dir/util/comparator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/comparator.cc -[ 77%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/write_batch_with_index/write_batch_with_index_internal.cc -[ 77%] Building CXX object CMakeFiles/rocksdb.dir/util/compression.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/compression.cc.o -MF CMakeFiles/rocksdb.dir/util/compression.cc.o.d -o CMakeFiles/rocksdb.dir/util/compression.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/compression.cc -[ 77%] Building CXX object CMakeFiles/rocksdb.dir/util/compression_context_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/compression_context_cache.cc.o -MF CMakeFiles/rocksdb.dir/util/compression_context_cache.cc.o.d -o CMakeFiles/rocksdb.dir/util/compression_context_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/compression_context_cache.cc -[ 77%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc -[ 77%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc -[ 77%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc -[ 77%] Building CXX object CMakeFiles/rocksdb.dir/util/concurrent_task_limiter_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/concurrent_task_limiter_impl.cc.o -MF CMakeFiles/rocksdb.dir/util/concurrent_task_limiter_impl.cc.o.d -o CMakeFiles/rocksdb.dir/util/concurrent_task_limiter_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/concurrent_task_limiter_impl.cc -[ 77%] Building CXX object CMakeFiles/rocksdb.dir/util/crc32c.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/crc32c.cc.o -MF CMakeFiles/rocksdb.dir/util/crc32c.cc.o.d -o CMakeFiles/rocksdb.dir/util/crc32c.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/crc32c.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/data_structure.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/data_structure.cc.o -MF CMakeFiles/rocksdb.dir/util/data_structure.cc.o.d -o CMakeFiles/rocksdb.dir/util/data_structure.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/data_structure.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/dynamic_bloom.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/dynamic_bloom.cc.o -MF CMakeFiles/rocksdb.dir/util/dynamic_bloom.cc.o.d -o CMakeFiles/rocksdb.dir/util/dynamic_bloom.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/dynamic_bloom.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/hash.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/hash.cc.o -MF CMakeFiles/rocksdb.dir/util/hash.cc.o.d -o CMakeFiles/rocksdb.dir/util/hash.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/hash.cc -[ 78%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/murmurhash.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/murmurhash.cc.o -MF CMakeFiles/rocksdb.dir/util/murmurhash.cc.o.d -o CMakeFiles/rocksdb.dir/util/murmurhash.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/murmurhash.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/random.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/random.cc.o -MF CMakeFiles/rocksdb.dir/util/random.cc.o.d -o CMakeFiles/rocksdb.dir/util/random.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/random.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/rate_limiter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/rate_limiter.cc.o -MF CMakeFiles/rocksdb.dir/util/rate_limiter.cc.o.d -o CMakeFiles/rocksdb.dir/util/rate_limiter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/rate_limiter.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/ribbon_config.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/ribbon_config.cc.o -MF CMakeFiles/rocksdb.dir/util/ribbon_config.cc.o.d -o CMakeFiles/rocksdb.dir/util/ribbon_config.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/ribbon_config.cc -[ 78%] Building CXX object CMakeFiles/rocksdb.dir/util/slice.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/slice.cc.o -MF CMakeFiles/rocksdb.dir/util/slice.cc.o.d -o CMakeFiles/rocksdb.dir/util/slice.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/slice.cc -[ 79%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc -[ 80%] Building CXX object CMakeFiles/rocksdb.dir/util/file_checksum_helper.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/file_checksum_helper.cc.o -MF CMakeFiles/rocksdb.dir/util/file_checksum_helper.cc.o.d -o CMakeFiles/rocksdb.dir/util/file_checksum_helper.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/file_checksum_helper.cc -[ 80%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc -[ 80%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc -[ 80%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc -[ 80%] Building CXX object CMakeFiles/rocksdb.dir/util/status.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/status.cc.o -MF CMakeFiles/rocksdb.dir/util/status.cc.o.d -o CMakeFiles/rocksdb.dir/util/status.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/status.cc -[ 80%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc -[ 80%] Building CXX object CMakeFiles/rocksdb.dir/util/stderr_logger.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/stderr_logger.cc.o -MF CMakeFiles/rocksdb.dir/util/stderr_logger.cc.o.d -o CMakeFiles/rocksdb.dir/util/stderr_logger.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/stderr_logger.cc -[ 80%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc -[ 80%] Building CXX object CMakeFiles/rocksdb.dir/util/string_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/string_util.cc.o -MF CMakeFiles/rocksdb.dir/util/string_util.cc.o.d -o CMakeFiles/rocksdb.dir/util/string_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/string_util.cc -[ 80%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc -[ 81%] Building CXX object CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o -MF CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o.d -o CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc -[ 81%] Building CXX object CMakeFiles/rocksdb.dir/util/thread_local.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/thread_local.cc.o -MF CMakeFiles/rocksdb.dir/util/thread_local.cc.o.d -o CMakeFiles/rocksdb.dir/util/thread_local.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/thread_local.cc -[ 81%] Building CXX object CMakeFiles/rocksdb-shared.dir/port/port_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/port/port_posix.cc.o -MF CMakeFiles/rocksdb-shared.dir/port/port_posix.cc.o.d -o CMakeFiles/rocksdb-shared.dir/port/port_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/port/port_posix.cc -[ 81%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/env_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/env_posix.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/env_posix.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/env_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env_posix.cc -[ 81%] Building CXX object CMakeFiles/rocksdb.dir/util/threadpool_imp.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/threadpool_imp.cc.o -MF CMakeFiles/rocksdb.dir/util/threadpool_imp.cc.o.d -o CMakeFiles/rocksdb.dir/util/threadpool_imp.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/threadpool_imp.cc -[ 81%] Building CXX object CMakeFiles/rocksdb.dir/util/udt_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/udt_util.cc.o -MF CMakeFiles/rocksdb.dir/util/udt_util.cc.o.d -o CMakeFiles/rocksdb.dir/util/udt_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/udt_util.cc -[ 82%] Building CXX object CMakeFiles/rocksdb.dir/util/write_batch_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/write_batch_util.cc.o -MF CMakeFiles/rocksdb.dir/util/write_batch_util.cc.o.d -o CMakeFiles/rocksdb.dir/util/write_batch_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/write_batch_util.cc -[ 82%] Building CXX object CMakeFiles/rocksdb.dir/util/xxhash.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/util/xxhash.cc.o -MF CMakeFiles/rocksdb.dir/util/xxhash.cc.o.d -o CMakeFiles/rocksdb.dir/util/xxhash.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/xxhash.cc -[ 82%] Building CXX object CMakeFiles/rocksdb.dir/utilities/agg_merge/agg_merge.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/agg_merge/agg_merge.cc.o -MF CMakeFiles/rocksdb.dir/utilities/agg_merge/agg_merge.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/agg_merge/agg_merge.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/agg_merge/agg_merge.cc -[ 82%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/fs_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/fs_posix.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/fs_posix.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/fs_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/fs_posix.cc -[ 82%] Building CXX object CMakeFiles/rocksdb.dir/utilities/backup/backup_engine.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/backup/backup_engine.cc.o -MF CMakeFiles/rocksdb.dir/utilities/backup/backup_engine.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/backup/backup_engine.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/backup/backup_engine.cc -[ 82%] Building CXX object CMakeFiles/rocksdb.dir/utilities/blob_db/blob_compaction_filter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/blob_db/blob_compaction_filter.cc.o -MF CMakeFiles/rocksdb.dir/utilities/blob_db/blob_compaction_filter.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_compaction_filter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_compaction_filter.cc -[ 82%] Building CXX object CMakeFiles/rocksdb-shared.dir/env/io_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/env/io_posix.cc.o -MF CMakeFiles/rocksdb-shared.dir/env/io_posix.cc.o.d -o CMakeFiles/rocksdb-shared.dir/env/io_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/io_posix.cc -[ 82%] Building CXX object CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db.cc.o -MF CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db.cc -[ 82%] Building CXX object CMakeFiles/rocksdb-shared.dir/build_version.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -Drocksdb_shared_EXPORTS -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -fPIC -MD -MT CMakeFiles/rocksdb-shared.dir/build_version.cc.o -MF CMakeFiles/rocksdb-shared.dir/build_version.cc.o.d -o CMakeFiles/rocksdb-shared.dir/build_version.cc.o -c /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/build_version.cc -[ 82%] Linking CXX shared library librocksdb.so -/usr/bin/cmake -E cmake_link_script CMakeFiles/rocksdb-shared.dir/link.txt --verbose=1 -/usr/bin/c++ -fPIC -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,--dependency-file=CMakeFiles/rocksdb-shared.dir/link.d -Wl,-z,relro -shared -Wl,-soname,librocksdb.so.9.10 -o librocksdb.so.9.10.0 "CMakeFiles/rocksdb-shared.dir/cache/cache.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/cache_entry_roles.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/cache_key.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/cache_helpers.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/cache_reservation_manager.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/charged_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/clock_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/compressed_secondary_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/lru_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/secondary_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/secondary_cache_adapter.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/sharded_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/cache/tiered_secondary_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/db/arena_wrapped_db_iter.cc.o" "CMakeFiles/rocksdb-shared.dir/db/attribute_group_iterator_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_contents.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_fetcher.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_addition.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_builder.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_garbage.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_meta.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_file_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_garbage_meter.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_format.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_sequential_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_log_writer.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/blob_source.cc.o" "CMakeFiles/rocksdb-shared.dir/db/blob/prefetch_buffer_collection.cc.o" "CMakeFiles/rocksdb-shared.dir/db/builder.cc.o" "CMakeFiles/rocksdb-shared.dir/db/c.cc.o" "CMakeFiles/rocksdb-shared.dir/db/coalescing_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/db/column_family.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_job.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_fifo.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_level.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_picker_universal.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_service_job.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_state.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/compaction_outputs.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/sst_partitioner.cc.o" "CMakeFiles/rocksdb-shared.dir/db/compaction/subcompaction_state.cc.o" "CMakeFiles/rocksdb-shared.dir/db/convenience.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_filesnapshot.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/compacted_db_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_write.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_compaction_flush.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_files.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_follower.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_open.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_debug.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_experimental.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_readonly.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_impl/db_impl_secondary.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_info_dumper.cc.o" "CMakeFiles/rocksdb-shared.dir/db/db_iter.cc.o" "CMakeFiles/rocksdb-shared.dir/db/dbformat.cc.o" "CMakeFiles/rocksdb-shared.dir/db/error_handler.cc.o" "CMakeFiles/rocksdb-shared.dir/db/event_helpers.cc.o" "CMakeFiles/rocksdb-shared.dir/db/experimental.cc.o" "CMakeFiles/rocksdb-shared.dir/db/external_sst_file_ingestion_job.cc.o" "CMakeFiles/rocksdb-shared.dir/db/file_indexer.cc.o" "CMakeFiles/rocksdb-shared.dir/db/flush_job.cc.o" "CMakeFiles/rocksdb-shared.dir/db/flush_scheduler.cc.o" "CMakeFiles/rocksdb-shared.dir/db/forward_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/db/import_column_family_job.cc.o" "CMakeFiles/rocksdb-shared.dir/db/internal_stats.cc.o" "CMakeFiles/rocksdb-shared.dir/db/logs_with_prep_tracker.cc.o" "CMakeFiles/rocksdb-shared.dir/db/log_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/db/log_writer.cc.o" "CMakeFiles/rocksdb-shared.dir/db/malloc_stats.cc.o" "CMakeFiles/rocksdb-shared.dir/db/manifest_ops.cc.o" "CMakeFiles/rocksdb-shared.dir/db/memtable.cc.o" "CMakeFiles/rocksdb-shared.dir/db/memtable_list.cc.o" "CMakeFiles/rocksdb-shared.dir/db/merge_helper.cc.o" "CMakeFiles/rocksdb-shared.dir/db/merge_operator.cc.o" "CMakeFiles/rocksdb-shared.dir/db/output_validator.cc.o" "CMakeFiles/rocksdb-shared.dir/db/periodic_task_scheduler.cc.o" "CMakeFiles/rocksdb-shared.dir/db/range_del_aggregator.cc.o" "CMakeFiles/rocksdb-shared.dir/db/range_tombstone_fragmenter.cc.o" "CMakeFiles/rocksdb-shared.dir/db/repair.cc.o" "CMakeFiles/rocksdb-shared.dir/db/seqno_to_time_mapping.cc.o" "CMakeFiles/rocksdb-shared.dir/db/snapshot_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/db/table_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/db/table_properties_collector.cc.o" "CMakeFiles/rocksdb-shared.dir/db/transaction_log_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/db/trim_history_scheduler.cc.o" "CMakeFiles/rocksdb-shared.dir/db/version_builder.cc.o" "CMakeFiles/rocksdb-shared.dir/db/version_edit.cc.o" "CMakeFiles/rocksdb-shared.dir/db/version_edit_handler.cc.o" "CMakeFiles/rocksdb-shared.dir/db/version_set.cc.o" "CMakeFiles/rocksdb-shared.dir/db/wal_edit.cc.o" "CMakeFiles/rocksdb-shared.dir/db/wal_manager.cc.o" "CMakeFiles/rocksdb-shared.dir/db/wide/wide_column_serialization.cc.o" "CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns.cc.o" "CMakeFiles/rocksdb-shared.dir/db/wide/wide_columns_helper.cc.o" "CMakeFiles/rocksdb-shared.dir/db/write_batch.cc.o" "CMakeFiles/rocksdb-shared.dir/db/write_batch_base.cc.o" "CMakeFiles/rocksdb-shared.dir/db/write_controller.cc.o" "CMakeFiles/rocksdb-shared.dir/db/write_stall_stats.cc.o" "CMakeFiles/rocksdb-shared.dir/db/write_thread.cc.o" "CMakeFiles/rocksdb-shared.dir/env/composite_env.cc.o" "CMakeFiles/rocksdb-shared.dir/env/env.cc.o" "CMakeFiles/rocksdb-shared.dir/env/env_chroot.cc.o" "CMakeFiles/rocksdb-shared.dir/env/env_encryption.cc.o" "CMakeFiles/rocksdb-shared.dir/env/file_system.cc.o" "CMakeFiles/rocksdb-shared.dir/env/file_system_tracer.cc.o" "CMakeFiles/rocksdb-shared.dir/env/fs_on_demand.cc.o" "CMakeFiles/rocksdb-shared.dir/env/fs_remap.cc.o" "CMakeFiles/rocksdb-shared.dir/env/mock_env.cc.o" "CMakeFiles/rocksdb-shared.dir/env/unique_id_gen.cc.o" "CMakeFiles/rocksdb-shared.dir/file/delete_scheduler.cc.o" "CMakeFiles/rocksdb-shared.dir/file/file_prefetch_buffer.cc.o" "CMakeFiles/rocksdb-shared.dir/file/file_util.cc.o" "CMakeFiles/rocksdb-shared.dir/file/filename.cc.o" "CMakeFiles/rocksdb-shared.dir/file/line_file_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/file/random_access_file_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/file/read_write_util.cc.o" "CMakeFiles/rocksdb-shared.dir/file/readahead_raf.cc.o" "CMakeFiles/rocksdb-shared.dir/file/sequence_file_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/file/sst_file_manager_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/file/writable_file_writer.cc.o" "CMakeFiles/rocksdb-shared.dir/logging/auto_roll_logger.cc.o" "CMakeFiles/rocksdb-shared.dir/logging/event_logger.cc.o" "CMakeFiles/rocksdb-shared.dir/logging/log_buffer.cc.o" "CMakeFiles/rocksdb-shared.dir/memory/arena.cc.o" "CMakeFiles/rocksdb-shared.dir/memory/concurrent_arena.cc.o" "CMakeFiles/rocksdb-shared.dir/memory/jemalloc_nodump_allocator.cc.o" "CMakeFiles/rocksdb-shared.dir/memory/memkind_kmem_allocator.cc.o" "CMakeFiles/rocksdb-shared.dir/memory/memory_allocator.cc.o" "CMakeFiles/rocksdb-shared.dir/memtable/alloc_tracker.cc.o" "CMakeFiles/rocksdb-shared.dir/memtable/hash_linklist_rep.cc.o" "CMakeFiles/rocksdb-shared.dir/memtable/hash_skiplist_rep.cc.o" "CMakeFiles/rocksdb-shared.dir/memtable/skiplistrep.cc.o" "CMakeFiles/rocksdb-shared.dir/memtable/vectorrep.cc.o" "CMakeFiles/rocksdb-shared.dir/memtable/wbwi_memtable.cc.o" "CMakeFiles/rocksdb-shared.dir/memtable/write_buffer_manager.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/histogram.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/histogram_windowing.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/in_memory_stats_history.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/instrumented_mutex.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/iostats_context.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/perf_context.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/perf_level.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/persistent_stats_history.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/statistics.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_updater.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util.cc.o" "CMakeFiles/rocksdb-shared.dir/monitoring/thread_status_util_debug.cc.o" "CMakeFiles/rocksdb-shared.dir/options/cf_options.cc.o" "CMakeFiles/rocksdb-shared.dir/options/configurable.cc.o" "CMakeFiles/rocksdb-shared.dir/options/customizable.cc.o" "CMakeFiles/rocksdb-shared.dir/options/db_options.cc.o" "CMakeFiles/rocksdb-shared.dir/options/offpeak_time_info.cc.o" "CMakeFiles/rocksdb-shared.dir/options/options.cc.o" "CMakeFiles/rocksdb-shared.dir/options/options_helper.cc.o" "CMakeFiles/rocksdb-shared.dir/options/options_parser.cc.o" "CMakeFiles/rocksdb-shared.dir/port/mmap.cc.o" "CMakeFiles/rocksdb-shared.dir/port/stack_trace.cc.o" "CMakeFiles/rocksdb-shared.dir/table/adaptive/adaptive_table_factory.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/binary_search_index_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_builder.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_factory.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_based_table_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_builder.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefetcher.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/block_prefix_index.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_hash_index.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/data_block_footer.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/filter_block_reader_common.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/filter_policy.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/flush_block_policy.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/full_filter_block.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/hash_index_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/index_builder.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/index_reader_common.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/parsed_full_filter_block.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_filter_block.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/partitioned_index_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/reader_common.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_based/uncompression_dict_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/block_fetcher.cc.o" "CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_builder.cc.o" "CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_factory.cc.o" "CMakeFiles/rocksdb-shared.dir/table/cuckoo/cuckoo_table_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/format.cc.o" "CMakeFiles/rocksdb-shared.dir/table/get_context.cc.o" "CMakeFiles/rocksdb-shared.dir/table/iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/table/merging_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/table/compaction_merging_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/table/meta_blocks.cc.o" "CMakeFiles/rocksdb-shared.dir/table/persistent_cache_helper.cc.o" "CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_bloom.cc.o" "CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_builder.cc.o" "CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_factory.cc.o" "CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_index.cc.o" "CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_key_coding.cc.o" "CMakeFiles/rocksdb-shared.dir/table/plain/plain_table_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/sst_file_dumper.cc.o" "CMakeFiles/rocksdb-shared.dir/table/sst_file_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/table/sst_file_writer.cc.o" "CMakeFiles/rocksdb-shared.dir/table/table_factory.cc.o" "CMakeFiles/rocksdb-shared.dir/table/table_properties.cc.o" "CMakeFiles/rocksdb-shared.dir/table/two_level_iterator.cc.o" "CMakeFiles/rocksdb-shared.dir/table/unique_id.cc.o" "CMakeFiles/rocksdb-shared.dir/test_util/sync_point.cc.o" "CMakeFiles/rocksdb-shared.dir/test_util/sync_point_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/test_util/testutil.cc.o" "CMakeFiles/rocksdb-shared.dir/test_util/transaction_test_util.cc.o" "CMakeFiles/rocksdb-shared.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o" "CMakeFiles/rocksdb-shared.dir/tools/dump/db_dump_tool.cc.o" "CMakeFiles/rocksdb-shared.dir/tools/io_tracer_parser_tool.cc.o" "CMakeFiles/rocksdb-shared.dir/tools/ldb_cmd.cc.o" "CMakeFiles/rocksdb-shared.dir/tools/ldb_tool.cc.o" "CMakeFiles/rocksdb-shared.dir/tools/sst_dump_tool.cc.o" "CMakeFiles/rocksdb-shared.dir/tools/trace_analyzer_tool.cc.o" "CMakeFiles/rocksdb-shared.dir/trace_replay/block_cache_tracer.cc.o" "CMakeFiles/rocksdb-shared.dir/trace_replay/io_tracer.cc.o" "CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_handler.cc.o" "CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record_result.cc.o" "CMakeFiles/rocksdb-shared.dir/trace_replay/trace_record.cc.o" "CMakeFiles/rocksdb-shared.dir/trace_replay/trace_replay.cc.o" "CMakeFiles/rocksdb-shared.dir/util/async_file_reader.cc.o" "CMakeFiles/rocksdb-shared.dir/util/cleanable.cc.o" "CMakeFiles/rocksdb-shared.dir/util/coding.cc.o" "CMakeFiles/rocksdb-shared.dir/util/compaction_job_stats_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/util/comparator.cc.o" "CMakeFiles/rocksdb-shared.dir/util/compression.cc.o" "CMakeFiles/rocksdb-shared.dir/util/compression_context_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/util/concurrent_task_limiter_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/util/crc32c.cc.o" "CMakeFiles/rocksdb-shared.dir/util/data_structure.cc.o" "CMakeFiles/rocksdb-shared.dir/util/dynamic_bloom.cc.o" "CMakeFiles/rocksdb-shared.dir/util/hash.cc.o" "CMakeFiles/rocksdb-shared.dir/util/murmurhash.cc.o" "CMakeFiles/rocksdb-shared.dir/util/random.cc.o" "CMakeFiles/rocksdb-shared.dir/util/rate_limiter.cc.o" "CMakeFiles/rocksdb-shared.dir/util/ribbon_config.cc.o" "CMakeFiles/rocksdb-shared.dir/util/slice.cc.o" "CMakeFiles/rocksdb-shared.dir/util/file_checksum_helper.cc.o" "CMakeFiles/rocksdb-shared.dir/util/status.cc.o" "CMakeFiles/rocksdb-shared.dir/util/stderr_logger.cc.o" "CMakeFiles/rocksdb-shared.dir/util/string_util.cc.o" "CMakeFiles/rocksdb-shared.dir/util/thread_local.cc.o" "CMakeFiles/rocksdb-shared.dir/util/threadpool_imp.cc.o" "CMakeFiles/rocksdb-shared.dir/util/udt_util.cc.o" "CMakeFiles/rocksdb-shared.dir/util/write_batch_util.cc.o" "CMakeFiles/rocksdb-shared.dir/util/xxhash.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/agg_merge/agg_merge.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/backup/backup_engine.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_compaction_filter.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_dump_tool.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/blob_db/blob_file.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/cache_dump_load_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/cassandra/cassandra_compaction_filter.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/cassandra/format.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/cassandra/merge_operator.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/checkpoint/checkpoint_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/counted_fs.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/debug.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/env_mirror.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/env_timed.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_env.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_fs.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/fault_injection_secondary_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/leveldb_options/leveldb_options.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/memory/memory_util.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/bytesxor.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/max.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/put.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/sortlist.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/string_append/stringappend2.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/merge_operators/uint64add.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/object_registry.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/option_change_migration/option_change_migration.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/options/options_util.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_file.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/persistent_cache_tier.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/persistent_cache/volatile_tier_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/cache_simulator.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/simulator_cache/sim_cache.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/trace/file_trace_reader_writer.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/trace/replayer_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/lock_manager.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/point/point_lock_manager.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_trans[ 82%] Building CXX object CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc -[ 82%] Building CXX object CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o -MF CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl_filesnapshot.cc -action_db_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/optimistic_transaction.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/pessimistic_transaction_db.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/snapshot_checker.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_base.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_db_mutex_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/transaction_util.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_prepared_txn_db.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/write_unprepared_txn_db.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/types_util.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/ttl/db_ttl_impl.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/wal_filter.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o" "CMakeFiles/rocksdb-shared.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o" "CMakeFiles/rocksdb-shared.dir/port/port_posix.cc.o" "CMakeFiles/rocksdb-shared.dir/env/env_posix.cc.o" "CMakeFiles/rocksdb-shared.dir/env/fs_posix.cc.o" "CMakeFiles/rocksdb-shared.dir/env/io_posix.cc.o" "CMakeFiles/rocksdb-shared.dir/build_version.cc.o" /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -/usr/bin/cmake -E cmake_symlink_library librocksdb.so.9.10.0 librocksdb.so.9.10 librocksdb.so make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -In file included from /usr/include/c++/14/bits/stl_algo.h:61, - from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/cache/typed_cache.h:26, - from /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.h:21, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:17, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:24, - from /build/reproducible-path/rocksdb-9.10.0/db/db_iter.h:14, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.h:23, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:7: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::CompactionFileInfo; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/set:62, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.h:14: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 82%] Built target rocksdb-shared -[ 83%] Building CXX object CMakeFiles/rocksdb.dir/utilities/blob_db/blob_dump_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/blob_db/blob_dump_tool.cc.o -MF CMakeFiles/rocksdb.dir/utilities/blob_db/blob_dump_tool.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_dump_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_dump_tool.cc -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = TimerQueue::WorkItem; _Compare = __gnu_cxx::__ops::_Iter_comp_val >]': -/usr/include/c++/14/bits/stl_heap.h:135:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 135 | __push_heap(_RandomAccessIterator __first, - | ^~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = TimerQueue::WorkItem; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair >; _KeyOfValue = std::_Select1st > >; _Compare = std::less; _Alloc = std::allocator > >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 83%] Building CXX object CMakeFiles/rocksdb.dir/utilities/blob_db/blob_file.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/blob_db/blob_file.cc.o -MF CMakeFiles/rocksdb.dir/utilities/blob_db/blob_file.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_file.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_file.cc -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:540:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:540:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:546:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'void rocksdb::blob_db::BlobDBImpl::ProcessCompactionJobInfo(const rocksdb::CompactionJobInfo&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:546:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 83%] Building CXX object CMakeFiles/rocksdb.dir/utilities/cache_dump_load.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/cache_dump_load.cc.o -MF CMakeFiles/rocksdb.dir/utilities/cache_dump_load.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/cache_dump_load.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cache_dump_load.cc -In file included from /usr/include/c++/14/map:63, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h:18, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h:32, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:26, - from /build/reproducible-path/rocksdb-9.10.0/db/blob/blob_log_format.h:13, - from /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.h:21: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::Status rocksdb::blob_db::BlobDBImpl::OpenAllBlobFiles()' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:391:28: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'rocksdb::Status rocksdb::blob_db::BlobDBImpl::OpenAllBlobFiles()' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:399:47: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'void rocksdb::blob_db::BlobDBImpl::TEST_AddDummyBlobFile(uint64_t, rocksdb::SequenceNumber)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:2197:31: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = std::shared_ptr; _Compare = std::less; _Alloc = std::allocator > >]', - inlined from 'void rocksdb::blob_db::BlobDBImpl::TEST_AddDummyBlobFile(uint64_t, rocksdb::SequenceNumber)' at /build/reproducible-path/rocksdb-9.10.0/utilities/blob_db/blob_db_impl.cc:2198:48: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 83%] Building CXX object CMakeFiles/rocksdb.dir/utilities/cache_dump_load_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/cache_dump_load_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/cache_dump_load_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/cache_dump_load_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cache_dump_load_impl.cc -[ 83%] Building CXX object CMakeFiles/rocksdb.dir/utilities/cassandra/cassandra_compaction_filter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/cassandra/cassandra_compaction_filter.cc.o -MF CMakeFiles/rocksdb.dir/utilities/cassandra/cassandra_compaction_filter.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/cassandra/cassandra_compaction_filter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/cassandra_compaction_filter.cc -[ 83%] Building CXX object CMakeFiles/rocksdb.dir/utilities/cassandra/format.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/cassandra/format.cc.o -MF CMakeFiles/rocksdb.dir/utilities/cassandra/format.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/cassandra/format.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc -In file included from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc:8: -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Val_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_algo.h:1750:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1750 | __unguarded_linear_insert(_RandomAccessIterator __last, - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/stl_algo.h:61: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = rocksdb::cassandra::RowValue; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 83%] Building CXX object CMakeFiles/rocksdb.dir/utilities/cassandra/merge_operator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/cassandra/merge_operator.cc.o -MF CMakeFiles/rocksdb.dir/utilities/cassandra/merge_operator.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/cassandra/merge_operator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/merge_operator.cc -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]', - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::cassandra::RowValue::Merge(std::vector&&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'static rocksdb::cassandra::RowValue rocksdb::cassandra::RowValue::Merge(std::vector&&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc:322:12: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter&&):: >]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator >; _Compare = rocksdb::cassandra::RowValue::Merge(std::vector&&)::]' at /usr/include/c++/14/bits/stl_algo.h:4805:18, - inlined from 'static rocksdb::cassandra::RowValue rocksdb::cassandra::RowValue::Merge(std::vector&&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/cassandra/format.cc:322:12: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/checkpoint/checkpoint_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/checkpoint/checkpoint_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/checkpoint/checkpoint_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/checkpoint/checkpoint_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/checkpoint/checkpoint_impl.cc -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/compaction_filters.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/compaction_filters.cc.o -MF CMakeFiles/rocksdb.dir/utilities/compaction_filters.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/compaction_filters.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/compaction_filters.cc -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o -MF CMakeFiles/rocksdb.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/counted_fs.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/counted_fs.cc.o -MF CMakeFiles/rocksdb.dir/utilities/counted_fs.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/counted_fs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/counted_fs.cc -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/debug.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/debug.cc.o -MF CMakeFiles/rocksdb.dir/utilities/debug.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/debug.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/debug.cc -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/env_mirror.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/env_mirror.cc.o -MF CMakeFiles/rocksdb.dir/utilities/env_mirror.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/env_mirror.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/env_mirror.cc -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/env_timed.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/env_timed.cc.o -MF CMakeFiles/rocksdb.dir/utilities/env_timed.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/env_timed.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/env_timed.cc -[ 84%] Building CXX object CMakeFiles/rocksdb.dir/utilities/fault_injection_env.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/fault_injection_env.cc.o -MF CMakeFiles/rocksdb.dir/utilities/fault_injection_env.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/fault_injection_env.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_env.cc -[ 85%] Building CXX object CMakeFiles/rocksdb.dir/utilities/fault_injection_fs.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/fault_injection_fs.cc.o -MF CMakeFiles/rocksdb.dir/utilities/fault_injection_fs.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/fault_injection_fs.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc -[ 85%] Building CXX object CMakeFiles/rocksdb.dir/utilities/fault_injection_secondary_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/fault_injection_secondary_cache.cc.o -MF CMakeFiles/rocksdb.dir/utilities/fault_injection_secondary_cache.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/fault_injection_secondary_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_secondary_cache.cc -[ 85%] Building CXX object CMakeFiles/rocksdb.dir/utilities/leveldb_options/leveldb_options.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/leveldb_options/leveldb_options.cc.o -MF CMakeFiles/rocksdb.dir/utilities/leveldb_options/leveldb_options.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/leveldb_options/leveldb_options.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/leveldb_options/leveldb_options.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.h:20, - from /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:17: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::pair std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_hint_unique_pos(const_iterator, const key_type&) [with _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::FSFileState>; _KeyOfValue = std::_Select1st, rocksdb::FSFileState> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_tree.h:2206:5: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 2206 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::allocator >&>, std::tuple<>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::FSFileState>; _KeyOfValue = std::_Select1st, rocksdb::FSFileState> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 85%] Building CXX object CMakeFiles/rocksdb.dir/utilities/memory/memory_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/memory/memory_util.cc.o -MF CMakeFiles/rocksdb.dir/utilities/memory/memory_util.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/memory/memory_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc -In file included from /usr/include/c++/14/map:63: -/usr/include/c++/14/bits/stl_map.h: In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 85%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators.cc -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]', - inlined from 'void rocksdb::FaultInjectionTestFS::WritableFileClosed(const rocksdb::FSFileState&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:1271:35: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_tree.h: In member function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {std::pair, std::allocator >, rocksdb::FSFileState>}; _Key = std::__cxx11::basic_string; _Val = std::pair, rocksdb::FSFileState>; _KeyOfValue = std::_Select1st, rocksdb::FSFileState> >; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::emplace_hint(const_iterator, _Args&& ...) [with _Args = {std::pair, std::allocator >, rocksdb::FSFileState>}; _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]', - inlined from 'std::__enable_if_t<((bool)std::is_constructible, _Pair>::value), std::pair, std::_Select1st >, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Pair = std::pair, rocksdb::FSFileState>; _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]' at /usr/include/c++/14/bits/stl_map.h:859:27, - inlined from 'void rocksdb::FaultInjectionTestFS::WritableFileSynced(const rocksdb::FSFileState&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:1280:28: -/usr/include/c++/14/bits/stl_map.h:640:45: note: parameter passing for argument of type 'std::map, rocksdb::FSFileState>::const_iterator' {aka 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator'} changed in GCC 7.1 - 640 | return _M_t._M_emplace_hint_unique(__pos, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ - 641 | std::forward<_Args>(__args)...); - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::FSFileState; _Compare = std::less >; _Alloc = std::allocator, rocksdb::FSFileState> >]', - inlined from 'void rocksdb::FaultInjectionTestFS::WritableFileSynced(const rocksdb::FSFileState&)' at /build/reproducible-path/rocksdb-9.10.0/utilities/fault_injection_fs.cc:1282:37: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::pair, rocksdb::FSFileState>, std::_Select1st, rocksdb::FSFileState> >, std::less >, std::allocator, rocksdb::FSFileState> > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -make -f CMakeFiles/db_bench.dir/build.make CMakeFiles/db_bench.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/db_bench.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/db_bench.dir/build.make CMakeFiles/db_bench.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 85%] Building CXX object CMakeFiles/db_bench.dir/tools/simulated_hybrid_file_system.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/db_bench.dir/tools/simulated_hybrid_file_system.cc.o -MF CMakeFiles/db_bench.dir/tools/simulated_hybrid_file_system.cc.o.d -o CMakeFiles/db_bench.dir/tools/simulated_hybrid_file_system.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/simulated_hybrid_file_system.cc -[ 85%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators/bytesxor.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators/bytesxor.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators/bytesxor.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators/bytesxor.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/bytesxor.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/memory_util.h:9, - from /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:7: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = rocksdb::MemoryUtil::UsageType; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:24:50: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:28:54: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:37:54: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](key_type&&) [with _Key = rocksdb::MemoryUtil::UsageType; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'static rocksdb::Status rocksdb::MemoryUtil::GetApproximateMemoryUsageByType(const std::vector&, std::unordered_set, std::map*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/memory/memory_util.cc:44:47: -/usr/include/c++/14/bits/stl_map.h:532:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 532 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 533 | std::forward_as_tuple(std::move(__k)), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 534 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 85%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators/max.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators/max.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators/max.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators/max.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/max.cc -[ 86%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators/put.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators/put.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators/put.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators/put.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/put.cc -[ 86%] Building CXX object CMakeFiles/db_bench.dir/tools/db_bench.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/db_bench.dir/tools/db_bench.cc.o -MF CMakeFiles/db_bench.dir/tools/db_bench.cc.o.d -o CMakeFiles/db_bench.dir/tools/db_bench.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/db_bench.cc -[ 87%] Building CXX object CMakeFiles/db_bench.dir/tools/db_bench_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/db_bench.dir/tools/db_bench_tool.cc.o -MF CMakeFiles/db_bench.dir/tools/db_bench_tool.cc.o.d -o CMakeFiles/db_bench.dir/tools/db_bench_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc -[ 87%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators/sortlist.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators/sortlist.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators/sortlist.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators/sortlist.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/sortlist.cc -make -f CMakeFiles/cache_bench.dir/build.make CMakeFiles/cache_bench.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/cache_bench.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/cache_bench.dir/build.make CMakeFiles/cache_bench.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 87%] Building CXX object CMakeFiles/cache_bench.dir/cache/cache_bench.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/cache_bench.dir/cache/cache_bench.cc.o -MF CMakeFiles/cache_bench.dir/cache/cache_bench.cc.o.d -o CMakeFiles/cache_bench.dir/cache/cache_bench.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_bench.cc -[ 87%] Building CXX object CMakeFiles/cache_bench.dir/cache/cache_bench_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/cache_bench.dir/cache/cache_bench_tool.cc.o -MF CMakeFiles/cache_bench.dir/cache/cache_bench_tool.cc.o.d -o CMakeFiles/cache_bench.dir/cache/cache_bench_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/cache/cache_bench_tool.cc -[ 87%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/string_append/stringappend.cc -[ 87%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend2.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend2.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend2.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend2.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/string_append/stringappend2.cc -[ 87%] Building CXX object CMakeFiles/rocksdb.dir/utilities/merge_operators/uint64add.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/merge_operators/uint64add.cc.o -MF CMakeFiles/rocksdb.dir/utilities/merge_operators/uint64add.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/merge_operators/uint64add.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/merge_operators/uint64add.cc -[ 87%] Building CXX object CMakeFiles/rocksdb.dir/utilities/object_registry.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/object_registry.cc.o -MF CMakeFiles/rocksdb.dir/utilities/object_registry.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/object_registry.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/object_registry.cc -[ 87%] Linking CXX executable cache_bench -/usr/bin/cmake -E cmake_link_script CMakeFiles/cache_bench.dir/link.txt --verbose=1 -[ 87%] Building CXX object CMakeFiles/rocksdb.dir/utilities/option_change_migration/option_change_migration.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/option_change_migration/option_change_migration.cc.o -MF CMakeFiles/rocksdb.dir/utilities/option_change_migration/option_change_migration.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/option_change_migration/option_change_migration.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/option_change_migration/option_change_migration.cc -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/cache_bench.dir/link.d CMakeFiles/cache_bench.dir/cache/cache_bench.cc.o CMakeFiles/cache_bench.dir/cache/cache_bench_tool.cc.o -o cache_bench librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 87%] Built target cache_bench -make -f CMakeFiles/memtablerep_bench.dir/build.make CMakeFiles/memtablerep_bench.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/memtablerep_bench.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/memtablerep_bench.dir/build.make CMakeFiles/memtablerep_bench.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 87%] Building CXX object CMakeFiles/memtablerep_bench.dir/memtable/memtablerep_bench.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/memtablerep_bench.dir/memtable/memtablerep_bench.cc.o -MF CMakeFiles/memtablerep_bench.dir/memtable/memtablerep_bench.cc.o.d -o CMakeFiles/memtablerep_bench.dir/memtable/memtablerep_bench.cc.o -c /build/reproducible-path/rocksdb-9.10.0/memtable/memtablerep_bench.cc -In file included from /usr/include/c++/14/queue:64, - from /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:38: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = double; _Compare = __gnu_cxx::__ops::_Iter_less_iter]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -In file included from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/cache/typed_cache.h:26, - from /build/reproducible-path/rocksdb-9.10.0/cache/cache_reservation_manager.h:21, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:17, - from /build/reproducible-path/rocksdb-9.10.0/db/db_impl/db_impl.h:24, - from /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:42: -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]': -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1770 | __insertion_sort(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1770:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Size = int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]': -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1876 | __introsort_loop(_RandomAccessIterator __first, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1876:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -/usr/include/c++/14/bits/stl_algo.h:1890:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1890 | std::__introsort_loop(__cut, __last, __depth_limit, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In function 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', - inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, - inlined from 'double rocksdb::CombinedStats::CalcMedian(std::vector&)' at /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:2613:14: -/usr/include/c++/14/bits/stl_algo.h:1905:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1905 | std::__introsort_loop(__first, __last, - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ - 1906 | std::__lg(__last - __first) * 2, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 1907 | __comp); - | ~~~~~~~ -In function 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]', - inlined from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]' at /usr/include/c++/14/bits/stl_algo.h:1908:31, - inlined from 'void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator >]' at /usr/include/c++/14/bits/stl_algo.h:4772:18, - inlined from 'double rocksdb::CombinedStats::CalcMedian(std::vector&)' at /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:2613:14: -/usr/include/c++/14/bits/stl_algo.h:1817:32: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1817 | std::__insertion_sort(__first, __first + int(_S_threshold), __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:1822:30: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1822 | std::__insertion_sort(__first, __last, __comp); - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ -[ 87%] Building CXX object CMakeFiles/rocksdb.dir/utilities/options/options_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/options/options_util.cc.o -MF CMakeFiles/rocksdb.dir/utilities/options/options_util.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/options/options_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/options/options_util.cc -In file included from /usr/include/c++/14/algorithm:61, - from /build/reproducible-path/rocksdb-9.10.0/util/coding.h:19, - from /build/reproducible-path/rocksdb-9.10.0/db/dbformat.h:23, - from /build/reproducible-path/rocksdb-9.10.0/memtable/memtablerep_bench.cc:25: -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::shuffle(_RAIter, _RAIter, _UGenerator&&) [with _RAIter = __gnu_cxx::__normal_iterator >; _UGenerator = mersenne_twister_engine&]': -/usr/include/c++/14/bits/stl_algo.h:3697:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 3697 | shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, - | ^~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:3697:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/utilities/options_util.h:11, - from /build/reproducible-path/rocksdb-9.10.0/utilities/options/options_util.cc:7: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44, - inlined from 'rocksdb::DBOptions& rocksdb::DBOptions::operator=(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8, - inlined from 'rocksdb::Status rocksdb::LoadOptionsFromFile(const ConfigOptions&, const std::string&, DBOptions*, std::vector*, std::shared_ptr*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/options/options_util.cc:26:32: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /build/reproducible-path/rocksdb-9.10.0/util/core_local.h:17, - from /build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h:16, - from /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h:8, - from /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h:7, - from /build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h:11, - from /build/reproducible-path/rocksdb-9.10.0/db/dbformat.h:24: -In function 'void rocksdb::RandomShuffle(RandomIt, RandomIt, uint32_t) [with RandomIt = __gnu_cxx::__normal_iterator >]', - inlined from 'rocksdb::KeyGenerator::KeyGenerator(rocksdb::Random64*, rocksdb::WriteMode, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/memtable/memtablerep_bench.cc:175:20, - inlined from 'rocksdb::KeyGenerator::KeyGenerator(rocksdb::Random64*, rocksdb::WriteMode, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/memtable/memtablerep_bench.cc:164:3, - inlined from 'int main(int, char**)' at /build/reproducible-path/rocksdb-9.10.0/memtable/memtablerep_bench.cc:648:71: -/build/reproducible-path/rocksdb-9.10.0/util/random.h:181:15: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 181 | std::shuffle(first, last, rng); - | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ -[ 88%] Building CXX object CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier.cc.o -MF CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/block_cache_tier.cc -[ 88%] Linking CXX executable memtablerep_bench -/usr/bin/cmake -E cmake_link_script CMakeFiles/memtablerep_bench.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/memtablerep_bench.dir/link.d CMakeFiles/memtablerep_bench.dir/memtable/memtablerep_bench.cc.o -o memtablerep_bench librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -/usr/include/c++/14/bits/stl_algo.h: In function 'void std::shuffle(_RAIter, _RAIter, _UGenerator&&) [with _RAIter = __gnu_cxx::__normal_iterator >; _UGenerator = mersenne_twister_engine&]': -/usr/include/c++/14/bits/stl_algo.h:3697:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 3697 | shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, - | ^~~~~~~ -/usr/include/c++/14/bits/stl_algo.h:3697:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -[ 88%] Built target memtablerep_bench -make -f CMakeFiles/range_del_aggregator_bench.dir/build.make CMakeFiles/range_del_aggregator_bench.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/range_del_aggregator_bench.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/range_del_aggregator_bench.dir/build.make CMakeFiles/range_del_aggregator_bench.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Building CXX object CMakeFiles/range_del_aggregator_bench.dir/db/range_del_aggregator_bench.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/range_del_aggregator_bench.dir/db/range_del_aggregator_bench.cc.o -MF CMakeFiles/range_del_aggregator_bench.dir/db/range_del_aggregator_bench.cc.o.d -o CMakeFiles/range_del_aggregator_bench.dir/db/range_del_aggregator_bench.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db/range_del_aggregator_bench.cc -In file included from /usr/include/c++/14/vector:72, - from /usr/include/c++/14/queue:63: -/usr/include/c++/14/bits/vector.tcc: In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::_M_erase(iterator, iterator) [with _Tp = rocksdb::SstFileMetaData; _Alloc = std::allocator]': -/usr/include/c++/14/bits/vector.tcc:195:5: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 - 195 | vector<_Tp, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/vector.tcc:195:5: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 -[ 88%] Building CXX object CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_file.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_file.cc.o -MF CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_file.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_file.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/block_cache_tier_file.cc -[ 88%] Linking CXX executable range_del_aggregator_bench -/usr/bin/cmake -E cmake_link_script CMakeFiles/range_del_aggregator_bench.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/range_del_aggregator_bench.dir/link.d CMakeFiles/range_del_aggregator_bench.dir/db/range_del_aggregator_bench.cc.o -o range_del_aggregator_bench librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Built target range_del_aggregator_bench -make -f CMakeFiles/table_reader_bench.dir/build.make CMakeFiles/table_reader_bench.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/table_reader_bench.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/table_reader_bench.dir/build.make CMakeFiles/table_reader_bench.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Building CXX object CMakeFiles/table_reader_bench.dir/table/table_reader_bench.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/table_reader_bench.dir/table/table_reader_bench.cc.o -MF CMakeFiles/table_reader_bench.dir/table/table_reader_bench.cc.o.d -o CMakeFiles/table_reader_bench.dir/table/table_reader_bench.cc.o -c /build/reproducible-path/rocksdb-9.10.0/table/table_reader_bench.cc -[ 88%] Building CXX object CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o -MF CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/block_cache_tier_metadata.cc -In file included from /usr/include/c++/14/memory:69, - from /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:35: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::SstFileMetaData*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::SstFileMetaData*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::SstFileMetaData*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::SstFileMetaData*; _Tp = rocksdb::SstFileMetaData]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'void std::vector<_Tp, _Alloc>::_M_range_initialize(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::SstFileMetaData; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1697:33, - inlined from 'std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = __gnu_cxx::__normal_iterator >; = void; _Tp = rocksdb::SstFileMetaData; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:711:23, - inlined from 'void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::vector; _Args = {__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >}; _Tp = std::vector]' at /usr/include/c++/14/bits/new_allocator.h:191:4, - inlined from 'static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::vector; _Args = {__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >}; _Tp = std::vector]' at /usr/include/c++/14/bits/alloc_traits.h:575:17, - inlined from 'void std::vector<_Tp, _Alloc>::_M_realloc_append(_Args&& ...) [with _Args = {__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >}; _Tp = std::vector; _Alloc = std::allocator >]' at /usr/include/c++/14/bits/vector.tcc:634:26: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::SstFileMetaData*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::SstFileMetaData*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::SstFileMetaData*; _Tp = rocksdb::SstFileMetaData]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'void std::vector<_Tp, _Alloc>::_M_range_initialize(_ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::SstFileMetaData; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1697:33, - inlined from 'std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = __gnu_cxx::__normal_iterator >; = void; _Tp = rocksdb::SstFileMetaData; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:711:23, - inlined from 'void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = std::vector; _Args = {__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >}; _Tp = std::vector]' at /usr/include/c++/14/bits/new_allocator.h:191:4, - inlined from 'static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::vector; _Args = {__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >}; _Tp = std::vector]' at /usr/include/c++/14/bits/alloc_traits.h:575:17, - inlined from 'std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >}; _Tp = std::vector; _Alloc = std::allocator >]' at /usr/include/c++/14/bits/vector.tcc:117:30: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /build/reproducible-path/rocksdb-9.10.0/util/core_local.h:17, - from /build/reproducible-path/rocksdb-9.10.0/monitoring/statistics_impl.h:16, - from /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_step_timer.h:8, - from /build/reproducible-path/rocksdb-9.10.0/monitoring/perf_context_imp.h:7, - from /build/reproducible-path/rocksdb-9.10.0/util/user_comparator_wrapper.h:11, - from /build/reproducible-path/rocksdb-9.10.0/db/dbformat.h:24, - from /build/reproducible-path/rocksdb-9.10.0/db/memtable.h:19, - from /build/reproducible-path/rocksdb-9.10.0/db/memtable_list.h:16, - from /build/reproducible-path/rocksdb-9.10.0/db/column_family.h:18: -In function 'void rocksdb::RandomShuffle(RandomIt, RandomIt, uint32_t) [with RandomIt = __gnu_cxx::__normal_iterator >]', - inlined from 'rocksdb::Benchmark::KeyGenerator::KeyGenerator(rocksdb::Random64*, rocksdb::Benchmark::WriteMode, uint64_t, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:5089:22, - inlined from 'rocksdb::Benchmark::KeyGenerator::KeyGenerator(rocksdb::Random64*, rocksdb::Benchmark::WriteMode, uint64_t, uint64_t)' at /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:5077:5, - inlined from 'void rocksdb::Benchmark::DoWrite(rocksdb::ThreadState*, WriteMode)' at /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:5162:72: -/build/reproducible-path/rocksdb-9.10.0/util/random.h:181:15: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 181 | std::shuffle(first, last, rng); - | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ -[ 88%] Building CXX object CMakeFiles/rocksdb.dir/utilities/persistent_cache/persistent_cache_tier.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/persistent_cache/persistent_cache_tier.cc.o -MF CMakeFiles/rocksdb.dir/utilities/persistent_cache/persistent_cache_tier.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/persistent_cache/persistent_cache_tier.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/persistent_cache_tier.cc -In file included from /usr/include/c++/14/vector:66: -In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(const_iterator, const_iterator) [with _Tp = rocksdb::SstFileMetaData; _Alloc = std::allocator]', - inlined from 'rocksdb::Status rocksdb::Benchmark::DoDeterministicCompact(rocksdb::ThreadState*, rocksdb::CompactionStyle, WriteMode)' at /build/reproducible-path/rocksdb-9.10.0/tools/db_bench_tool.cc:5639:21: -/usr/include/c++/14/bits/stl_vector.h:1568:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1568 | return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); - | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 88%] Building CXX object CMakeFiles/rocksdb.dir/utilities/persistent_cache/volatile_tier_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/persistent_cache/volatile_tier_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/persistent_cache/volatile_tier_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/persistent_cache/volatile_tier_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/volatile_tier_impl.cc -[ 88%] Building CXX object CMakeFiles/rocksdb.dir/utilities/simulator_cache/cache_simulator.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/simulator_cache/cache_simulator.cc.o -MF CMakeFiles/rocksdb.dir/utilities/simulator_cache/cache_simulator.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/simulator_cache/cache_simulator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc -[ 88%] Linking CXX executable table_reader_bench -/usr/bin/cmake -E cmake_link_script CMakeFiles/table_reader_bench.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/table_reader_bench.dir/link.d CMakeFiles/table_reader_bench.dir/table/table_reader_bench.cc.o -o table_reader_bench librocksdb.so.9.10.0 libtestharness.a /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread third-party/gtest-1.8.1/fused-src/gtest/libgtest.a -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Built target table_reader_bench -make -f CMakeFiles/filter_bench.dir/build.make CMakeFiles/filter_bench.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/filter_bench.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/filter_bench.dir/build.make CMakeFiles/filter_bench.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Building CXX object CMakeFiles/filter_bench.dir/util/filter_bench.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/filter_bench.dir/util/filter_bench.cc.o -MF CMakeFiles/filter_bench.dir/util/filter_bench.cc.o.d -o CMakeFiles/filter_bench.dir/util/filter_bench.cc.o -c /build/reproducible-path/rocksdb-9.10.0/util/filter_bench.cc -[ 88%] Linking CXX executable db_bench -/usr/bin/cmake -E cmake_link_script CMakeFiles/db_bench.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/db_bench.dir/link.d CMakeFiles/db_bench.dir/tools/simulated_hybrid_file_system.cc.o CMakeFiles/db_bench.dir/tools/db_bench.cc.o CMakeFiles/db_bench.dir/tools/db_bench_tool.cc.o -o db_bench librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Built target db_bench -make -f CMakeFiles/hash_table_bench.dir/build.make CMakeFiles/hash_table_bench.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/hash_table_bench.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/hash_table_bench.dir/build.make CMakeFiles/hash_table_bench.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Building CXX object CMakeFiles/hash_table_bench.dir/utilities/persistent_cache/hash_table_bench.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/hash_table_bench.dir/utilities/persistent_cache/hash_table_bench.cc.o -MF CMakeFiles/hash_table_bench.dir/utilities/persistent_cache/hash_table_bench.cc.o.d -o CMakeFiles/hash_table_bench.dir/utilities/persistent_cache/hash_table_bench.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/persistent_cache/hash_table_bench.cc -In file included from /usr/include/c++/14/map:62, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/thread_status.h:18, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/env.h:32, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:26, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/advanced_cache.h:18, - from /build/reproducible-path/rocksdb-9.10.0/cache/sharded_cache.h:18, - from /build/reproducible-path/rocksdb-9.10.0/cache/lru_cache.h:14, - from /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:6: -/usr/include/c++/14/bits/stl_tree.h: In function 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_emplace_hint_unique(const_iterator, _Args&& ...) [with _Args = {const std::piecewise_construct_t&, std::tuple, std::tuple<>}; _Key = long long unsigned int; _Val = std::pair; _KeyOfValue = std::_Select1st >; _Compare = std::less; _Alloc = std::allocator >]': -/usr/include/c++/14/bits/stl_tree.h:2454:7: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 2454 | _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/map:63: -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::MissRatioStats::UpdateMetrics(uint64_t, bool, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:66:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::MissRatioStats::UpdateMetrics(uint64_t, bool, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:70:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -In member function 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = long long unsigned int; _Tp = long long unsigned int; _Compare = std::less; _Alloc = std::allocator >]', - inlined from 'void rocksdb::MissRatioStats::UpdateMetrics(uint64_t, bool, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/cache_simulator.cc:74:46: -/usr/include/c++/14/bits/stl_map.h:513:44: note: parameter passing for argument of type 'std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::const_iterator' changed in GCC 7.1 - 513 | __i = _M_t._M_emplace_hint_unique(__i, std::piecewise_construct, - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 514 | std::tuple(__k), - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 515 | std::tuple<>()); - | ~~~~~~~~~~~~~~~ -[ 88%] Linking CXX executable hash_table_bench -/usr/bin/cmake -E cmake_link_script CMakeFiles/hash_table_bench.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/hash_table_bench.dir/link.d CMakeFiles/hash_table_bench.dir/utilities/persistent_cache/hash_table_bench.cc.o -o hash_table_bench librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Built target hash_table_bench -make -f CMakeFiles/block_cache_trace_analyzer.dir/build.make CMakeFiles/block_cache_trace_analyzer.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/block_cache_trace_analyzer.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/block_cache_trace_analyzer.dir/build.make CMakeFiles/block_cache_trace_analyzer.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Building CXX object CMakeFiles/block_cache_trace_analyzer.dir/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/block_cache_trace_analyzer.dir/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc.o -MF CMakeFiles/block_cache_trace_analyzer.dir/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc.o.d -o CMakeFiles/block_cache_trace_analyzer.dir/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc -[ 88%] Building CXX object CMakeFiles/rocksdb.dir/utilities/simulator_cache/sim_cache.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/simulator_cache/sim_cache.cc.o -MF CMakeFiles/rocksdb.dir/utilities/simulator_cache/sim_cache.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/simulator_cache/sim_cache.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/simulator_cache/sim_cache.cc -[ 88%] Linking CXX executable block_cache_trace_analyzer -/usr/bin/cmake -E cmake_link_script CMakeFiles/block_cache_trace_analyzer.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/block_cache_trace_analyzer.dir/link.d CMakeFiles/block_cache_trace_analyzer.dir/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc.o -o block_cache_trace_analyzer librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Built target block_cache_trace_analyzer -make -f CMakeFiles/trace_analyzer.dir/build.make CMakeFiles/trace_analyzer.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles/trace_analyzer.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f CMakeFiles/trace_analyzer.dir/build.make CMakeFiles/trace_analyzer.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Building CXX object CMakeFiles/trace_analyzer.dir/tools/trace_analyzer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/trace_analyzer.dir/tools/trace_analyzer.cc.o -MF CMakeFiles/trace_analyzer.dir/tools/trace_analyzer.cc.o.d -o CMakeFiles/trace_analyzer.dir/tools/trace_analyzer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/trace_analyzer.cc -[ 88%] Linking CXX executable filter_bench -/usr/bin/cmake -E cmake_link_script CMakeFiles/filter_bench.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/filter_bench.dir/link.d CMakeFiles/filter_bench.dir/util/filter_bench.cc.o -o filter_bench librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Built target filter_bench -make -f tools/CMakeFiles/sst_dump.dir/build.make tools/CMakeFiles/sst_dump.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools/CMakeFiles/sst_dump.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f tools/CMakeFiles/sst_dump.dir/build.make tools/CMakeFiles/sst_dump.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Building CXX object tools/CMakeFiles/sst_dump.dir/sst_dump.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT tools/CMakeFiles/sst_dump.dir/sst_dump.cc.o -MF CMakeFiles/sst_dump.dir/sst_dump.cc.o.d -o CMakeFiles/sst_dump.dir/sst_dump.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/sst_dump.cc -[ 88%] Linking CXX executable trace_analyzer -/usr/bin/cmake -E cmake_link_script CMakeFiles/trace_analyzer.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/trace_analyzer.dir/link.d CMakeFiles/trace_analyzer.dir/tools/trace_analyzer.cc.o -o trace_analyzer librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 88%] Built target trace_analyzer -make -f tools/CMakeFiles/ldb.dir/build.make tools/CMakeFiles/ldb.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools/CMakeFiles/ldb.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f tools/CMakeFiles/ldb.dir/build.make tools/CMakeFiles/ldb.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 89%] Building CXX object tools/CMakeFiles/ldb.dir/ldb.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT tools/CMakeFiles/ldb.dir/ldb.cc.o -MF CMakeFiles/ldb.dir/ldb.cc.o.d -o CMakeFiles/ldb.dir/ldb.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/ldb.cc -[ 90%] Building CXX object CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o -MF CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/table_properties_collectors/compact_for_tiering_collector.cc -[ 90%] Linking CXX executable sst_dump -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/sst_dump.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/sst_dump.dir/link.d CMakeFiles/sst_dump.dir/sst_dump.cc.o -o sst_dump ../librocksdb.so.9.10.0 -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 90%] Built target sst_dump -make -f tools/CMakeFiles/db_sanity_test.dir/build.make tools/CMakeFiles/db_sanity_test.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools/CMakeFiles/db_sanity_test.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f tools/CMakeFiles/db_sanity_test.dir/build.make tools/CMakeFiles/db_sanity_test.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 90%] Building CXX object tools/CMakeFiles/db_sanity_test.dir/db_sanity_test.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT tools/CMakeFiles/db_sanity_test.dir/db_sanity_test.cc.o -MF CMakeFiles/db_sanity_test.dir/db_sanity_test.cc.o.d -o CMakeFiles/db_sanity_test.dir/db_sanity_test.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/db_sanity_test.cc -[ 90%] Linking CXX executable ldb -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/ldb.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/ldb.dir/link.d CMakeFiles/ldb.dir/ldb.cc.o -o ldb ../librocksdb.so.9.10.0 -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 90%] Built target ldb -make -f tools/CMakeFiles/write_stress.dir/build.make tools/CMakeFiles/write_stress.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools/CMakeFiles/write_stress.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f tools/CMakeFiles/write_stress.dir/build.make tools/CMakeFiles/write_stress.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 90%] Building CXX object tools/CMakeFiles/write_stress.dir/write_stress.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT tools/CMakeFiles/write_stress.dir/write_stress.cc.o -MF CMakeFiles/write_stress.dir/write_stress.cc.o.d -o CMakeFiles/write_stress.dir/write_stress.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/write_stress.cc -[ 90%] Building CXX object CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o -MF CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/table_properties_collectors/compact_on_deletion_collector.cc -[ 90%] Linking CXX executable db_sanity_test -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/db_sanity_test.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/db_sanity_test.dir/link.d CMakeFiles/db_sanity_test.dir/db_sanity_test.cc.o -o db_sanity_test ../librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 90%] Built target db_sanity_test -make -f tools/CMakeFiles/db_repl_stress.dir/build.make tools/CMakeFiles/db_repl_stress.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools/CMakeFiles/db_repl_stress.dir/DependInfo.cmake "--color=" -[ 91%] Linking CXX executable write_stress -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/write_stress.dir/link.txt --verbose=1 -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f tools/CMakeFiles/db_repl_stress.dir/build.make tools/CMakeFiles/db_repl_stress.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 91%] Building CXX object tools/CMakeFiles/db_repl_stress.dir/db_repl_stress.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT tools/CMakeFiles/db_repl_stress.dir/db_repl_stress.cc.o -MF CMakeFiles/db_repl_stress.dir/db_repl_stress.cc.o.d -o CMakeFiles/db_repl_stress.dir/db_repl_stress.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/db_repl_stress.cc -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/write_stress.dir/link.d CMakeFiles/write_stress.dir/write_stress.cc.o -o write_stress ../librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 91%] Built target write_stress -make -f tools/CMakeFiles/rocksdb_dump.dir/build.make tools/CMakeFiles/rocksdb_dump.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools/CMakeFiles/rocksdb_dump.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f tools/CMakeFiles/rocksdb_dump.dir/build.make tools/CMakeFiles/rocksdb_dump.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 91%] Building CXX object tools/CMakeFiles/rocksdb_dump.dir/dump/rocksdb_dump.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT tools/CMakeFiles/rocksdb_dump.dir/dump/rocksdb_dump.cc.o -MF CMakeFiles/rocksdb_dump.dir/dump/rocksdb_dump.cc.o.d -o CMakeFiles/rocksdb_dump.dir/dump/rocksdb_dump.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_dump.cc -In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/convenience.h:10, - from /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_dump.cc:18: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::DBOptions::DBOptions(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8, - inlined from 'rocksdb::Options::Options(const rocksdb::Options&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:1620:8, - inlined from 'int main(int, char**)' at /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_dump.cc:55:16: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8, - inlined from 'rocksdb::Options::Options(const rocksdb::Options&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:1620:8, - inlined from 'int main(int, char**)' at /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_dump.cc:55:16: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 91%] Building CXX object CMakeFiles/rocksdb.dir/utilities/trace/file_trace_reader_writer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/trace/file_trace_reader_writer.cc.o -MF CMakeFiles/rocksdb.dir/utilities/trace/file_trace_reader_writer.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/trace/file_trace_reader_writer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/trace/file_trace_reader_writer.cc -[ 92%] Linking CXX executable rocksdb_dump -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/rocksdb_dump.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/rocksdb_dump.dir/link.d CMakeFiles/rocksdb_dump.dir/dump/rocksdb_dump.cc.o -o rocksdb_dump ../librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 92%] Built target rocksdb_dump -make -f tools/CMakeFiles/rocksdb_undump.dir/build.make tools/CMakeFiles/rocksdb_undump.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools/CMakeFiles/rocksdb_undump.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f tools/CMakeFiles/rocksdb_undump.dir/build.make tools/CMakeFiles/rocksdb_undump.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 92%] Building CXX object tools/CMakeFiles/rocksdb_undump.dir/dump/rocksdb_undump.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT tools/CMakeFiles/rocksdb_undump.dir/dump/rocksdb_undump.cc.o -MF CMakeFiles/rocksdb_undump.dir/dump/rocksdb_undump.cc.o.d -o CMakeFiles/rocksdb_undump.dir/dump/rocksdb_undump.cc.o -c /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_undump.cc -[ 92%] Linking CXX executable db_repl_stress -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/db_repl_stress.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/db_repl_stress.dir/link.d CMakeFiles/db_repl_stress.dir/db_repl_stress.cc.o -o db_repl_stress ../librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 92%] Built target db_repl_stress -make -f db_stress_tool/CMakeFiles/db_stress.dir/build.make db_stress_tool/CMakeFiles/db_stress.dir/depend -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/rocksdb-9.10.0 /build/reproducible-path/rocksdb-9.10.0/db_stress_tool /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool/CMakeFiles/db_stress.dir/DependInfo.cmake "--color=" -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make -f db_stress_tool/CMakeFiles/db_stress.dir/build.make db_stress_tool/CMakeFiles/db_stress.dir/build -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 92%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/batched_ops_stress.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/batched_ops_stress.cc.o -MF CMakeFiles/db_stress.dir/batched_ops_stress.cc.o.d -o CMakeFiles/db_stress.dir/batched_ops_stress.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/batched_ops_stress.cc -In file included from /usr/include/c++/14/vector:65, - from /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/convenience.h:10, - from /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_undump.cc:18: -/usr/include/c++/14/bits/stl_uninitialized.h: In function '_ForwardIterator std::__do_uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]': -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 113 | __do_uninit_copy(_InputIterator __first, _InputIterator __last, - | ^~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_uninitialized.h:113:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::pointer std::vector<_Tp, _Alloc>::_M_allocate_and_copy(size_type, _ForwardIterator, _ForwardIterator) [with _ForwardIterator = __gnu_cxx::__normal_iterator >; _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:1624:35, - inlined from 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/vector.tcc:238:44: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::DBOptions::DBOptions(const rocksdb::DBOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:537:8, - inlined from 'rocksdb::Options::Options(const rocksdb::Options&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:1620:8, - inlined from 'int main(int, char**)' at /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_undump.cc:54:16: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -In static member function 'static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; bool _TrivialValueTypes = false]', - inlined from '_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*]' at /usr/include/c++/14/bits/stl_uninitialized.h:185:15, - inlined from '_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator >; _ForwardIterator = rocksdb::DbPath*; _Tp = rocksdb::DbPath]' at /usr/include/c++/14/bits/stl_uninitialized.h:373:37, - inlined from 'std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = rocksdb::DbPath; _Alloc = std::allocator]' at /usr/include/c++/14/bits/stl_vector.h:606:31, - inlined from 'rocksdb::ColumnFamilyOptions::ColumnFamilyOptions(const rocksdb::ColumnFamilyOptions&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:66:8, - inlined from 'rocksdb::Options::Options(const rocksdb::Options&)' at /build/reproducible-path/rocksdb-9.10.0/include/rocksdb/options.h:1620:8, - inlined from 'int main(int, char**)' at /build/reproducible-path/rocksdb-9.10.0/tools/dump/rocksdb_undump.cc:54:16: -/usr/include/c++/14/bits/stl_uninitialized.h:137:39: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 137 | { return std::__do_uninit_copy(__first, __last, __result); } - | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 92%] Linking CXX executable rocksdb_undump -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/tools && /usr/bin/cmake -E cmake_link_script CMakeFiles/rocksdb_undump.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/rocksdb_undump.dir/link.d CMakeFiles/rocksdb_undump.dir/dump/rocksdb_undump.cc.o -o rocksdb_undump ../librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[ 92%] Built target rocksdb_undump -[ 93%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/cf_consistency_stress.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/cf_consistency_stress.cc.o -MF CMakeFiles/db_stress.dir/cf_consistency_stress.cc.o.d -o CMakeFiles/db_stress.dir/cf_consistency_stress.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/cf_consistency_stress.cc -[ 93%] Building CXX object CMakeFiles/rocksdb.dir/utilities/trace/replayer_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/trace/replayer_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/trace/replayer_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/trace/replayer_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/trace/replayer_impl.cc -[ 93%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/lock_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/lock_manager.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/lock_manager.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/lock_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/lock_manager.cc -[ 93%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_tracker.cc -[ 93%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_manager.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_manager.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.cc -[ 93%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc -[ 93%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress.cc.o -MF CMakeFiles/db_stress.dir/db_stress.cc.o.d -o CMakeFiles/db_stress.dir/db_stress.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress.cc -[ 93%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_common.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_common.cc.o -MF CMakeFiles/db_stress.dir/db_stress_common.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_common.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_common.cc -In file included from /usr/include/c++/14/vector:72, - from /usr/include/c++/14/functional:64, - from /build/reproducible-path/rocksdb-9.10.0/util/thread_local.h:13, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:8: -/usr/include/c++/14/bits/vector.tcc: In function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::_M_erase(iterator, iterator) [with _Tp = rocksdb::RangeDeadlockPath; _Alloc = std::allocator]': -/usr/include/c++/14/bits/vector.tcc:195:5: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 - 195 | vector<_Tp, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/vector.tcc:195:5: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 -In file included from /usr/include/c++/14/bits/unordered_map.h:33, - from /usr/include/c++/14/unordered_map:41, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.cc:7: -/usr/include/c++/14/bits/hashtable.h: In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(const_iterator) [with _Key = std::__cxx11::basic_string; _Value = std::pair, rocksdb::LockInfo>; _Alloc = std::allocator, rocksdb::LockInfo> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to >; _Hash = std::hash >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]': -/usr/include/c++/14/bits/hashtable.h:2380:5: note: parameter passing for argument of type 'std::_Hashtable, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 2380 | _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 2381 | _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>:: - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::iterator std::_Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, _Hash, _RangeHash, _Unused, _RehashPolicy, _Traits>::erase(iterator) [with _Key = std::__cxx11::basic_string; _Value = std::pair, rocksdb::LockInfo>; _Alloc = std::allocator, rocksdb::LockInfo> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to >; _Hash = std::hash >; _RangeHash = std::__detail::_Mod_range_hashing; _Unused = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits]', - inlined from 'std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::erase(iterator) [with _Key = std::__cxx11::basic_string; _Tp = rocksdb::LockInfo; _Hash = std::hash >; _Pred = std::equal_to >; _Alloc = std::allocator, rocksdb::LockInfo> >]' at /usr/include/c++/14/bits/unordered_map.h:754:26, - inlined from 'void rocksdb::PointLockManager::UnLockKey(rocksdb::PessimisticTransaction*, const std::string&, rocksdb::LockMapStripe*, rocksdb::LockMap*, rocksdb::Env*)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.cc:555:27: -/usr/include/c++/14/bits/hashtable.h:1024:21: note: parameter passing for argument of type 'std::_Hashtable, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator' {aka 'std::__detail::_Insert_base, std::pair, rocksdb::LockInfo>, std::allocator, rocksdb::LockInfo> >, std::__detail::_Select1st, std::equal_to >, std::hash >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::const_iterator'} changed in GCC 7.1 - 1024 | { return erase(const_iterator(__it)); } - | ~~~~~^~~~~~~~~~~~~~~~~~~~~~ -In file included from /usr/include/c++/14/vector:66: -In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(const_iterator, const_iterator) [with _Tp = rocksdb::RangeDeadlockPath; _Alloc = std::allocator]', - inlined from 'void rocksdb::DeadlockInfoBufferTempl::Resize(uint32_t) [with Path = rocksdb::RangeDeadlockPath]' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.h:77:26, - inlined from 'virtual void rocksdb::RangeTreeLockManager::SetRangeDeadlockInfoBufferSize(uint32_t)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:285:23, - inlined from 'virtual void rocksdb::RangeTreeLockManager::Resize(uint32_t)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:289:33: -/usr/include/c++/14/bits/stl_vector.h:1568:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1568 | return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); - | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(const_iterator, const_iterator) [with _Tp = rocksdb::RangeDeadlockPath; _Alloc = std::allocator]', - inlined from 'void rocksdb::DeadlockInfoBufferTempl::Resize(uint32_t) [with Path = rocksdb::RangeDeadlockPath]' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/point/point_lock_manager.h:77:26, - inlined from 'virtual void rocksdb::RangeTreeLockManager::SetRangeDeadlockInfoBufferSize(uint32_t)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc:285:23: -/usr/include/c++/14/bits/stl_vector.h:1568:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1568 | return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); - | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/usr/include/c++/14/bits/stl_vector.h: In member function 'virtual void rocksdb::RangeTreeLockManager::_ZThn4_N7rocksdb20RangeTreeLockManager30SetRangeDeadlockInfoBufferSizeEj(uint32_t)': -/usr/include/c++/14/bits/stl_vector.h:1568:24: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 1568 | return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg)); - | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 93%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_driver.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_driver.cc.o -MF CMakeFiles/db_stress.dir/db_stress_driver.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_driver.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_driver.cc -[ 94%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc -[ 94%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_filters.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_filters.cc.o -MF CMakeFiles/db_stress.dir/db_stress_filters.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_filters.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_filters.cc -[ 94%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_gflags.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_gflags.cc.o -MF CMakeFiles/db_stress.dir/db_stress_gflags.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_gflags.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_gflags.cc -[ 94%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/optimistic_transaction_db_impl.cc -[ 94%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_listener.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_listener.cc.o -MF CMakeFiles/db_stress.dir/db_stress_listener.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_listener.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_listener.cc -[ 94%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_shared_state.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_shared_state.cc.o -MF CMakeFiles/db_stress.dir/db_stress_shared_state.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_shared_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_shared_state.cc -[ 94%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/optimistic_transaction.cc -[ 94%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/pessimistic_transaction.cc -[ 95%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_stat.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_stat.cc.o -MF CMakeFiles/db_stress.dir/db_stress_stat.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_stat.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_stat.cc -[ 95%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_test_base.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_test_base.cc.o -MF CMakeFiles/db_stress.dir/db_stress_test_base.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_test_base.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_test_base.cc -[ 95%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction_db.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction_db.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/pessimistic_transaction_db.cc -[ 95%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/snapshot_checker.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/snapshot_checker.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/snapshot_checker.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/snapshot_checker.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/snapshot_checker.cc -[ 95%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/transaction_base.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/transaction_base.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/transaction_base.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/transaction_base.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/transaction_base.cc -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/transaction_db_mutex_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/transaction_db_mutex_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/transaction_db_mutex_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/transaction_db_mutex_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/transaction_db_mutex_impl.cc -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/transaction_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/transaction_util.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/transaction_util.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/transaction_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/transaction_util.cc -[ 96%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_wide_merge_operator.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_wide_merge_operator.cc.o -MF CMakeFiles/db_stress.dir/db_stress_wide_merge_operator.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_wide_merge_operator.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_wide_merge_operator.cc -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn.cc -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn_db.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn_db.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.cc -[ 96%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/db_stress_tool.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/db_stress_tool.cc.o -MF CMakeFiles/db_stress.dir/db_stress_tool.cc.o.d -o CMakeFiles/db_stress.dir/db_stress_tool.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/db_stress_tool.cc -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_unprepared_txn.cc -In file included from /usr/include/c++/14/queue:64, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.h:10, - from /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.cc:7: -/usr/include/c++/14/bits/stl_heap.h: In function 'void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator >; _Distance = int; _Tp = long long unsigned int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter >]': -/usr/include/c++/14/bits/stl_heap.h:224:5: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 224 | __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - | ^~~~~~~~~~~~~ -In file included from /usr/include/c++/14/vector:72, - from /usr/include/c++/14/queue:63: -/usr/include/c++/14/bits/vector.tcc: In member function 'void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const long long unsigned int&}; _Tp = long long unsigned int; _Alloc = std::allocator]': -/usr/include/c++/14/bits/vector.tcc:452:7: note: parameter passing for argument of type 'std::vector::iterator' changed in GCC 7.1 - 452 | vector<_Tp, _Alloc>:: - | ^~~~~~~~~~~~~~~~~~~ -In member function 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(const_iterator, const value_type&) [with _Tp = long long unsigned int; _Alloc = std::allocator]', - inlined from 'bool rocksdb::WritePreparedTxnDB::MaybeUpdateOldCommitMap(const uint64_t&, const uint64_t&, const uint64_t&, bool)' at /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_prepared_txn_db.cc:1063:15: -/usr/include/c++/14/bits/vector.tcc:170:26: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator >' changed in GCC 7.1 - 170 | _M_realloc_insert(begin() + (__position - cbegin()), __x); - | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn_db.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn_db.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn_db.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn_db.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/write_unprepared_txn_db.cc -[ 96%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/expected_state.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/expected_state.cc.o -MF CMakeFiles/db_stress.dir/expected_state.cc.o.d -o CMakeFiles/db_stress.dir/expected_state.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/expected_state.cc -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/types_util.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/types_util.cc.o -MF CMakeFiles/rocksdb.dir/utilities/types_util.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/types_util.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/types_util.cc -[ 96%] Building CXX object CMakeFiles/rocksdb.dir/utilities/ttl/db_ttl_impl.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/ttl/db_ttl_impl.cc.o -MF CMakeFiles/rocksdb.dir/utilities/ttl/db_ttl_impl.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/ttl/db_ttl_impl.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/ttl/db_ttl_impl.cc -[ 97%] Building CXX object CMakeFiles/rocksdb.dir/utilities/wal_filter.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/wal_filter.cc.o -MF CMakeFiles/rocksdb.dir/utilities/wal_filter.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/wal_filter.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/wal_filter.cc -[ 97%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/expected_value.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/expected_value.cc.o -MF CMakeFiles/db_stress.dir/expected_value.cc.o.d -o CMakeFiles/db_stress.dir/expected_value.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/expected_value.cc -[ 97%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/multi_ops_txns_stress.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/multi_ops_txns_stress.cc.o -MF CMakeFiles/db_stress.dir/multi_ops_txns_stress.cc.o.d -o CMakeFiles/db_stress.dir/multi_ops_txns_stress.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/multi_ops_txns_stress.cc -[ 97%] Building CXX object CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o -MF CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/write_batch_with_index/write_batch_with_index.cc -[ 97%] Building CXX object CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o -MF CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/write_batch_with_index/write_batch_with_index_internal.cc -[ 97%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc -[ 97%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc -[ 97%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc -[ 97%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc -[ 98%] Building CXX object db_stress_tool/CMakeFiles/db_stress.dir/no_batched_ops_stress.cc.o -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT db_stress_tool/CMakeFiles/db_stress.dir/no_batched_ops_stress.cc.o -MF CMakeFiles/db_stress.dir/no_batched_ops_stress.cc.o.d -o CMakeFiles/db_stress.dir/no_batched_ops_stress.cc.o -c /build/reproducible-path/rocksdb-9.10.0/db_stress_tool/no_batched_ops_stress.cc -[ 99%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc -[ 99%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc -[ 99%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc -[ 99%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc -[ 99%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc -[ 99%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc -[ 99%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc -[100%] Building CXX object CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o -MF CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o.d -o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o -c /build/reproducible-path/rocksdb-9.10.0/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc -[100%] Building CXX object CMakeFiles/rocksdb.dir/port/port_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/port/port_posix.cc.o -MF CMakeFiles/rocksdb.dir/port/port_posix.cc.o.d -o CMakeFiles/rocksdb.dir/port/port_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/port/port_posix.cc -[100%] Building CXX object CMakeFiles/rocksdb.dir/env/env_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/env_posix.cc.o -MF CMakeFiles/rocksdb.dir/env/env_posix.cc.o.d -o CMakeFiles/rocksdb.dir/env/env_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/env_posix.cc -[100%] Building CXX object CMakeFiles/rocksdb.dir/env/fs_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/fs_posix.cc.o -MF CMakeFiles/rocksdb.dir/env/fs_posix.cc.o.d -o CMakeFiles/rocksdb.dir/env/fs_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/fs_posix.cc -[100%] Building CXX object CMakeFiles/rocksdb.dir/env/io_posix.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/env/io_posix.cc.o -MF CMakeFiles/rocksdb.dir/env/io_posix.cc.o.d -o CMakeFiles/rocksdb.dir/env/io_posix.cc.o -c /build/reproducible-path/rocksdb-9.10.0/env/io_posix.cc -[100%] Building CXX object CMakeFiles/rocksdb.dir/build_version.cc.o -/usr/bin/c++ -DBZIP2 -DGFLAGS=1 -DGFLAGS_IS_A_DLL=0 -DLZ4 -DOS_LINUX -DROCKSDB_AUXV_GETAUXVAL_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DROCKSDB_LIB_IO_POSIX -DROCKSDB_MALLOC_USABLE_SIZE -DROCKSDB_NO_DYNAMIC_EXTENSION -DROCKSDB_PLATFORM_POSIX -DROCKSDB_PTHREAD_ADAPTIVE_MUTEX -DROCKSDB_RANGESYNC_PRESENT -DROCKSDB_SCHED_GETCPU_PRESENT -DSNAPPY -DZLIB -DZSTD -I/build/reproducible-path/rocksdb-9.10.0 -I/build/reproducible-path/rocksdb-9.10.0/include -isystem /build/reproducible-path/rocksdb-9.10.0/third-party/gtest-1.8.1/fused-src -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -std=gnu++17 -MD -MT CMakeFiles/rocksdb.dir/build_version.cc.o -MF CMakeFiles/rocksdb.dir/build_version.cc.o.d -o CMakeFiles/rocksdb.dir/build_version.cc.o -c /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/build_version.cc -[100%] Linking CXX static library librocksdb.a -/usr/bin/cmake -P CMakeFiles/rocksdb.dir/cmake_clean_target.cmake -/usr/bin/cmake -E cmake_link_script CMakeFiles/rocksdb.dir/link.txt --verbose=1 -/usr/bin/ar qc librocksdb.a CMakeFiles/rocksdb.dir/cache/cache.cc.o CMakeFiles/rocksdb.dir/cache/cache_entry_roles.cc.o CMakeFiles/rocksdb.dir/cache/cache_key.cc.o CMakeFiles/rocksdb.dir/cache/cache_helpers.cc.o CMakeFiles/rocksdb.dir/cache/cache_reservation_manager.cc.o CMakeFiles/rocksdb.dir/cache/charged_cache.cc.o CMakeFiles/rocksdb.dir/cache/clock_cache.cc.o CMakeFiles/rocksdb.dir/cache/compressed_secondary_cache.cc.o CMakeFiles/rocksdb.dir/cache/lru_cache.cc.o CMakeFiles/rocksdb.dir/cache/secondary_cache.cc.o CMakeFiles/rocksdb.dir/cache/secondary_cache_adapter.cc.o CMakeFiles/rocksdb.dir/cache/sharded_cache.cc.o CMakeFiles/rocksdb.dir/cache/tiered_secondary_cache.cc.o CMakeFiles/rocksdb.dir/db/arena_wrapped_db_iter.cc.o CMakeFiles/rocksdb.dir/db/attribute_group_iterator_impl.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_contents.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_fetcher.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_file_addition.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_file_builder.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_file_cache.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_file_garbage.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_file_meta.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_file_reader.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_garbage_meter.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_log_format.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_log_sequential_reader.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_log_writer.cc.o CMakeFiles/rocksdb.dir/db/blob/blob_source.cc.o CMakeFiles/rocksdb.dir/db/blob/prefetch_buffer_collection.cc.o CMakeFiles/rocksdb.dir/db/builder.cc.o CMakeFiles/rocksdb.dir/db/c.cc.o CMakeFiles/rocksdb.dir/db/coalescing_iterator.cc.o CMakeFiles/rocksdb.dir/db/column_family.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_iterator.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_job.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_fifo.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_level.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_picker_universal.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_service_job.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_state.cc.o CMakeFiles/rocksdb.dir/db/compaction/compaction_outputs.cc.o CMakeFiles/rocksdb.dir/db/compaction/sst_partitioner.cc.o CMakeFiles/rocksdb.dir/db/compaction/subcompaction_state.cc.o CMakeFiles/rocksdb.dir/db/convenience.cc.o CMakeFiles/rocksdb.dir/db/db_filesnapshot.cc.o CMakeFiles/rocksdb.dir/db/db_impl/compacted_db_impl.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_write.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_compaction_flush.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_files.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_follower.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_open.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_debug.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_experimental.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_readonly.cc.o CMakeFiles/rocksdb.dir/db/db_impl/db_impl_secondary.cc.o CMakeFiles/rocksdb.dir/db/db_info_dumper.cc.o CMakeFiles/rocksdb.dir/db/db_iter.cc.o CMakeFiles/rocksdb.dir/db/dbformat.cc.o CMakeFiles/rocksdb.dir/db/error_handler.cc.o CMakeFiles/rocksdb.dir/db/event_helpers.cc.o CMakeFiles/rocksdb.dir/db/experimental.cc.o CMakeFiles/rocksdb.dir/db/external_sst_file_ingestion_job.cc.o CMakeFiles/rocksdb.dir/db/file_indexer.cc.o CMakeFiles/rocksdb.dir/db/flush_job.cc.o CMakeFiles/rocksdb.dir/db/flush_scheduler.cc.o CMakeFiles/rocksdb.dir/db/forward_iterator.cc.o CMakeFiles/rocksdb.dir/db/import_column_family_job.cc.o CMakeFiles/rocksdb.dir/db/internal_stats.cc.o CMakeFiles/rocksdb.dir/db/logs_with_prep_tracker.cc.o CMakeFiles/rocksdb.dir/db/log_reader.cc.o CMakeFiles/rocksdb.dir/db/log_writer.cc.o CMakeFiles/rocksdb.dir/db/malloc_stats.cc.o CMakeFiles/rocksdb.dir/db/manifest_ops.cc.o CMakeFiles/rocksdb.dir/db/memtable.cc.o CMakeFiles/rocksdb.dir/db/memtable_list.cc.o CMakeFiles/rocksdb.dir/db/merge_helper.cc.o CMakeFiles/rocksdb.dir/db/merge_operator.cc.o CMakeFiles/rocksdb.dir/db/output_validator.cc.o CMakeFiles/rocksdb.dir/db/periodic_task_scheduler.cc.o CMakeFiles/rocksdb.dir/db/range_del_aggregator.cc.o CMakeFiles/rocksdb.dir/db/range_tombstone_fragmenter.cc.o CMakeFiles/rocksdb.dir/db/repair.cc.o CMakeFiles/rocksdb.dir/db/seqno_to_time_mapping.cc.o CMakeFiles/rocksdb.dir/db/snapshot_impl.cc.o CMakeFiles/rocksdb.dir/db/table_cache.cc.o CMakeFiles/rocksdb.dir/db/table_properties_collector.cc.o CMakeFiles/rocksdb.dir/db/transaction_log_impl.cc.o CMakeFiles/rocksdb.dir/db/trim_history_scheduler.cc.o CMakeFiles/rocksdb.dir/db/version_builder.cc.o CMakeFiles/rocksdb.dir/db/version_edit.cc.o CMakeFiles/rocksdb.dir/db/version_edit_handler.cc.o CMakeFiles/rocksdb.dir/db/version_set.cc.o CMakeFiles/rocksdb.dir/db/wal_edit.cc.o CMakeFiles/rocksdb.dir/db/wal_manager.cc.o CMakeFiles/rocksdb.dir/db/wide/wide_column_serialization.cc.o CMakeFiles/rocksdb.dir/db/wide/wide_columns.cc.o CMakeFiles/rocksdb.dir/db/wide/wide_columns_helper.cc.o CMakeFiles/rocksdb.dir/db/write_batch.cc.o CMakeFiles/rocksdb.dir/db/write_batch_base.cc.o CMakeFiles/rocksdb.dir/db/write_controller.cc.o CMakeFiles/rocksdb.dir/db/write_stall_stats.cc.o CMakeFiles/rocksdb.dir/db/write_thread.cc.o CMakeFiles/rocksdb.dir/env/composite_env.cc.o CMakeFiles/rocksdb.dir/env/env.cc.o CMakeFiles/rocksdb.dir/env/env_chroot.cc.o CMakeFiles/rocksdb.dir/env/env_encryption.cc.o CMakeFiles/rocksdb.dir/env/file_system.cc.o CMakeFiles/rocksdb.dir/env/file_system_tracer.cc.o CMakeFiles/rocksdb.dir/env/fs_on_demand.cc.o CMakeFiles/rocksdb.dir/env/fs_remap.cc.o CMakeFiles/rocksdb.dir/env/mock_env.cc.o CMakeFiles/rocksdb.dir/env/unique_id_gen.cc.o CMakeFiles/rocksdb.dir/file/delete_scheduler.cc.o CMakeFiles/rocksdb.dir/file/file_prefetch_buffer.cc.o CMakeFiles/rocksdb.dir/file/file_util.cc.o CMakeFiles/rocksdb.dir/file/filename.cc.o CMakeFiles/rocksdb.dir/file/line_file_reader.cc.o CMakeFiles/rocksdb.dir/file/random_access_file_reader.cc.o CMakeFiles/rocksdb.dir/file/read_write_util.cc.o CMakeFiles/rocksdb.dir/file/readahead_raf.cc.o CMakeFiles/rocksdb.dir/file/sequence_file_reader.cc.o CMakeFiles/rocksdb.dir/file/sst_file_manager_impl.cc.o CMakeFiles/rocksdb.dir/file/writable_file_writer.cc.o CMakeFiles/rocksdb.dir/logging/auto_roll_logger.cc.o CMakeFiles/rocksdb.dir/logging/event_logger.cc.o CMakeFiles/rocksdb.dir/logging/log_buffer.cc.o CMakeFiles/rocksdb.dir/memory/arena.cc.o CMakeFiles/rocksdb.dir/memory/concurrent_arena.cc.o CMakeFiles/rocksdb.dir/memory/jemalloc_nodump_allocator.cc.o CMakeFiles/rocksdb.dir/memory/memkind_kmem_allocator.cc.o CMakeFiles/rocksdb.dir/memory/memory_allocator.cc.o CMakeFiles/rocksdb.dir/memtable/alloc_tracker.cc.o CMakeFiles/rocksdb.dir/memtable/hash_linklist_rep.cc.o CMakeFiles/rocksdb.dir/memtable/hash_skiplist_rep.cc.o CMakeFiles/rocksdb.dir/memtable/skiplistrep.cc.o CMakeFiles/rocksdb.dir/memtable/vectorrep.cc.o CMakeFiles/rocksdb.dir/memtable/wbwi_memtable.cc.o CMakeFiles/rocksdb.dir/memtable/write_buffer_manager.cc.o CMakeFiles/rocksdb.dir/monitoring/histogram.cc.o CMakeFiles/rocksdb.dir/monitoring/histogram_windowing.cc.o CMakeFiles/rocksdb.dir/monitoring/in_memory_stats_history.cc.o CMakeFiles/rocksdb.dir/monitoring/instrumented_mutex.cc.o CMakeFiles/rocksdb.dir/monitoring/iostats_context.cc.o CMakeFiles/rocksdb.dir/monitoring/perf_context.cc.o CMakeFiles/rocksdb.dir/monitoring/perf_level.cc.o CMakeFiles/rocksdb.dir/monitoring/persistent_stats_history.cc.o CMakeFiles/rocksdb.dir/monitoring/statistics.cc.o CMakeFiles/rocksdb.dir/monitoring/thread_status_impl.cc.o CMakeFiles/rocksdb.dir/monitoring/thread_status_updater.cc.o CMakeFiles/rocksdb.dir/monitoring/thread_status_util.cc.o CMakeFiles/rocksdb.dir/monitoring/thread_status_util_debug.cc.o CMakeFiles/rocksdb.dir/options/cf_options.cc.o CMakeFiles/rocksdb.dir/options/configurable.cc.o CMakeFiles/rocksdb.dir/options/customizable.cc.o CMakeFiles/rocksdb.dir/options/db_options.cc.o CMakeFiles/rocksdb.dir/options/offpeak_time_info.cc.o CMakeFiles/rocksdb.dir/options/options.cc.o CMakeFiles/rocksdb.dir/options/options_helper.cc.o CMakeFiles/rocksdb.dir/options/options_parser.cc.o CMakeFiles/rocksdb.dir/port/mmap.cc.o CMakeFiles/rocksdb.dir/port/stack_trace.cc.o CMakeFiles/rocksdb.dir/table/adaptive/adaptive_table_factory.cc.o CMakeFiles/rocksdb.dir/table/block_based/binary_search_index_reader.cc.o CMakeFiles/rocksdb.dir/table/block_based/block.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_builder.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_factory.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_iterator.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_based_table_reader.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_builder.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_cache.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_prefetcher.cc.o CMakeFiles/rocksdb.dir/table/block_based/block_prefix_index.cc.o CMakeFiles/rocksdb.dir/table/block_based/data_block_hash_index.cc.o CMakeFiles/rocksdb.dir/table/block_based/data_block_footer.cc.o CMakeFiles/rocksdb.dir/table/block_based/filter_block_reader_common.cc.o CMakeFiles/rocksdb.dir/table/block_based/filter_policy.cc.o CMakeFiles/rocksdb.dir/table/block_based/flush_block_policy.cc.o CMakeFiles/rocksdb.dir/table/block_based/full_filter_block.cc.o CMakeFiles/rocksdb.dir/table/block_based/hash_index_reader.cc.o CMakeFiles/rocksdb.dir/table/block_based/index_builder.cc.o CMakeFiles/rocksdb.dir/table/block_based/index_reader_common.cc.o CMakeFiles/rocksdb.dir/table/block_based/parsed_full_filter_block.cc.o CMakeFiles/rocksdb.dir/table/block_based/partitioned_filter_block.cc.o CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_iterator.cc.o CMakeFiles/rocksdb.dir/table/block_based/partitioned_index_reader.cc.o CMakeFiles/rocksdb.dir/table/block_based/reader_common.cc.o CMakeFiles/rocksdb.dir/table/block_based/uncompression_dict_reader.cc.o CMakeFiles/rocksdb.dir/table/block_fetcher.cc.o CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_builder.cc.o CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_factory.cc.o CMakeFiles/rocksdb.dir/table/cuckoo/cuckoo_table_reader.cc.o CMakeFiles/rocksdb.dir/table/format.cc.o CMakeFiles/rocksdb.dir/table/get_context.cc.o CMakeFiles/rocksdb.dir/table/iterator.cc.o CMakeFiles/rocksdb.dir/table/merging_iterator.cc.o CMakeFiles/rocksdb.dir/table/compaction_merging_iterator.cc.o CMakeFiles/rocksdb.dir/table/meta_blocks.cc.o CMakeFiles/rocksdb.dir/table/persistent_cache_helper.cc.o CMakeFiles/rocksdb.dir/table/plain/plain_table_bloom.cc.o CMakeFiles/rocksdb.dir/table/plain/plain_table_builder.cc.o CMakeFiles/rocksdb.dir/table/plain/plain_table_factory.cc.o CMakeFiles/rocksdb.dir/table/plain/plain_table_index.cc.o CMakeFiles/rocksdb.dir/table/plain/plain_table_key_coding.cc.o CMakeFiles/rocksdb.dir/table/plain/plain_table_reader.cc.o CMakeFiles/rocksdb.dir/table/sst_file_dumper.cc.o CMakeFiles/rocksdb.dir/table/sst_file_reader.cc.o CMakeFiles/rocksdb.dir/table/sst_file_writer.cc.o CMakeFiles/rocksdb.dir/table/table_factory.cc.o CMakeFiles/rocksdb.dir/table/table_properties.cc.o CMakeFiles/rocksdb.dir/table/two_level_iterator.cc.o CMakeFiles/rocksdb.dir/table/unique_id.cc.o CMakeFiles/rocksdb.dir/test_util/sync_point.cc.o CMakeFiles/rocksdb.dir/test_util/sync_point_impl.cc.o CMakeFiles/rocksdb.dir/test_util/testutil.cc.o CMakeFiles/rocksdb.dir/test_util/transaction_test_util.cc.o CMakeFiles/rocksdb.dir/tools/block_cache_analyzer/block_cache_trace_analyzer.cc.o CMakeFiles/rocksdb.dir/tools/dump/db_dump_tool.cc.o CMakeFiles/rocksdb.dir/tools/io_tracer_parser_tool.cc.o CMakeFiles/rocksdb.dir/tools/ldb_cmd.cc.o CMakeFiles/rocksdb.dir/tools/ldb_tool.cc.o CMakeFiles/rocksdb.dir/tools/sst_dump_tool.cc.o CMakeFiles/rocksdb.dir/tools/trace_analyzer_tool.cc.o CMakeFiles/rocksdb.dir/trace_replay/block_cache_tracer.cc.o CMakeFiles/rocksdb.dir/trace_replay/io_tracer.cc.o CMakeFiles/rocksdb.dir/trace_replay/trace_record_handler.cc.o CMakeFiles/rocksdb.dir/trace_replay/trace_record_result.cc.o CMakeFiles/rocksdb.dir/trace_replay/trace_record.cc.o CMakeFiles/rocksdb.dir/trace_replay/trace_replay.cc.o CMakeFiles/rocksdb.dir/util/async_file_reader.cc.o CMakeFiles/rocksdb.dir/util/cleanable.cc.o CMakeFiles/rocksdb.dir/util/coding.cc.o CMakeFiles/rocksdb.dir/util/compaction_job_stats_impl.cc.o CMakeFiles/rocksdb.dir/util/comparator.cc.o CMakeFiles/rocksdb.dir/util/compression.cc.o CMakeFiles/rocksdb.dir/util/compression_context_cache.cc.o CMakeFiles/rocksdb.dir/util/concurrent_task_limiter_impl.cc.o CMakeFiles/rocksdb.dir/util/crc32c.cc.o CMakeFiles/rocksdb.dir/util/data_structure.cc.o CMakeFiles/rocksdb.dir/util/dynamic_bloom.cc.o CMakeFiles/rocksdb.dir/util/hash.cc.o CMakeFiles/rocksdb.dir/util/murmurhash.cc.o CMakeFiles/rocksdb.dir/util/random.cc.o CMakeFiles/rocksdb.dir/util/rate_limiter.cc.o CMakeFiles/rocksdb.dir/util/ribbon_config.cc.o CMakeFiles/rocksdb.dir/util/slice.cc.o CMakeFiles/rocksdb.dir/util/file_checksum_helper.cc.o CMakeFiles/rocksdb.dir/util/status.cc.o CMakeFiles/rocksdb.dir/util/stderr_logger.cc.o CMakeFiles/rocksdb.dir/util/string_util.cc.o CMakeFiles/rocksdb.dir/util/thread_local.cc.o CMakeFiles/rocksdb.dir/util/threadpool_imp.cc.o CMakeFiles/rocksdb.dir/util/udt_util.cc.o CMakeFiles/rocksdb.dir/util/write_batch_util.cc.o CMakeFiles/rocksdb.dir/util/xxhash.cc.o CMakeFiles/rocksdb.dir/utilities/agg_merge/agg_merge.cc.o CMakeFiles/rocksdb.dir/utilities/backup/backup_engine.cc.o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_compaction_filter.cc.o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db.cc.o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl.cc.o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_db_impl_filesnapshot.cc.o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_dump_tool.cc.o CMakeFiles/rocksdb.dir/utilities/blob_db/blob_file.cc.o CMakeFiles/rocksdb.dir/utilities/cache_dump_load.cc.o CMakeFiles/rocksdb.dir/utilities/cache_dump_load_impl.cc.o CMakeFiles/rocksdb.dir/utilities/cassandra/cassandra_compaction_filter.cc.o CMakeFiles/rocksdb.dir/utilities/cassandra/format.cc.o CMakeFiles/rocksdb.dir/utilities/cassandra/merge_operator.cc.o CMakeFiles/rocksdb.dir/utilities/checkpoint/checkpoint_impl.cc.o CMakeFiles/rocksdb.dir/utilities/compaction_filters.cc.o CMakeFiles/rocksdb.dir/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc.o CMakeFiles/rocksdb.dir/utilities/counted_fs.cc.o CMakeFiles/rocksdb.dir/utilities/debug.cc.o CMakeFiles/rocksdb.dir/utilities/env_mirror.cc.o CMakeFiles/rocksdb.dir/utilities/env_timed.cc.o CMakeFiles/rocksdb.dir/utilities/fault_injection_env.cc.o CMakeFiles/rocksdb.dir/utilities/fault_injection_fs.cc.o CMakeFiles/rocksdb.dir/utilities/fault_injection_secondary_cache.cc.o CMakeFiles/rocksdb.dir/utilities/leveldb_options/leveldb_options.cc.o CMakeFiles/rocksdb.dir/utilities/memory/memory_util.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators/bytesxor.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators/max.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators/put.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators/sortlist.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators/string_append/stringappend2.cc.o CMakeFiles/rocksdb.dir/utilities/merge_operators/uint64add.cc.o CMakeFiles/rocksdb.dir/utilities/object_registry.cc.o CMakeFiles/rocksdb.dir/utilities/option_change_migration/option_change_migration.cc.o CMakeFiles/rocksdb.dir/utilities/options/options_util.cc.o CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier.cc.o CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_file.cc.o CMakeFiles/rocksdb.dir/utilities/persistent_cache/block_cache_tier_metadata.cc.o CMakeFiles/rocksdb.dir/utilities/persistent_cache/persistent_cache_tier.cc.o CMakeFiles/rocksdb.dir/utilities/persistent_cache/volatile_tier_impl.cc.o CMakeFiles/rocksdb.dir/utilities/simulator_cache/cache_simulator.cc.o CMakeFiles/rocksdb.dir/utilities/simulator_cache/sim_cache.cc.o CMakeFiles/rocksdb.dir/utilities/table_properties_collectors/compact_for_tiering_collector.cc.o CMakeFiles/rocksdb.dir[100%] Linking CXX executable db_stress -cd /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/db_stress_tool && /usr/bin/cmake -E cmake_link_script CMakeFiles/db_stress.dir/link.txt --verbose=1 -/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/rocksdb-9.10.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -W -Wextra -Wall -pthread -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof -fno-omit-frame-pointer -fno-builtin-memcmp -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/db_stress.dir/link.d CMakeFiles/db_stress.dir/batched_ops_stress.cc.o CMakeFiles/db_stress.dir/cf_consistency_stress.cc.o CMakeFiles/db_stress.dir/db_stress.cc.o CMakeFiles/db_stress.dir/db_stress_common.cc.o CMakeFiles/db_stress.dir/db_stress_driver.cc.o CMakeFiles/db_stress.dir/db_stress_filters.cc.o CMakeFiles/db_stress.dir/db_stress_gflags.cc.o CMakeFiles/db_stress.dir/db_stress_listener.cc.o CMakeFiles/db_stress.dir/db_stress_shared_state.cc.o CMakeFiles/db_stress.dir/db_stress_stat.cc.o CMakeFiles/db_stress.dir/db_stress_test_base.cc.o CMakeFiles/db_stress.dir/db_stress_wide_merge_operator.cc.o CMakeFiles/db_stress.dir/db_stress_tool.cc.o CMakeFiles/db_stress.dir/expected_state.cc.o CMakeFiles/db_stress.dir/expected_value.cc.o CMakeFiles/db_stress.dir/multi_ops_txns_stress.cc.o CMakeFiles/db_stress.dir/no_batched_ops_stress.cc.o -o db_stress ../librocksdb.so.9.10.0 /usr/lib/arm-linux-gnueabihf/libgflags.so.2.2.2 /usr/lib/arm-linux-gnueabihf/libsnappy.so.1.2.1 /usr/lib/arm-linux-gnueabihf/libz.so /usr/lib/arm-linux-gnueabihf/libbz2.so /usr/lib/arm-linux-gnueabihf/liblz4.so /usr/lib/arm-linux-gnueabihf/libzstd.so -lpthread -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[100%] Built target db_stress -/utilities/table_properties_collectors/compact_on_deletion_collector.cc.o CMakeFiles/rocksdb.dir/utilities/trace/file_trace_reader_writer.cc.o CMakeFiles/rocksdb.dir/utilities/trace/replayer_impl.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/lock_manager.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_tracker.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/point/point_lock_manager.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction_db_impl.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/optimistic_transaction.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/pessimistic_transaction_db.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/snapshot_checker.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/transaction_base.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/transaction_db_mutex_impl.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/transaction_util.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/write_prepared_txn_db.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/write_unprepared_txn_db.cc.o CMakeFiles/rocksdb.dir/utilities/types_util.cc.o CMakeFiles/rocksdb.dir/utilities/ttl/db_ttl_impl.cc.o CMakeFiles/rocksdb.dir/utilities/wal_filter.cc.o CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index.cc.o CMakeFiles/rocksdb.dir/utilities/write_batch_with_index/write_batch_with_index_internal.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc.o CMakeFiles/rocksdb.dir/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc.o CMakeFiles/rocksdb.dir/port/port_posix.cc.o CMakeFiles/rocksdb.dir/env/env_posix.cc.o CMakeFiles/rocksdb.dir/env/fs_posix.cc.o CMakeFiles/rocksdb.dir/env/io_posix.cc.o CMakeFiles/rocksdb.dir/build_version.cc.o -/usr/bin/ranlib librocksdb.a -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -[100%] Built target rocksdb +make[2]: *** [CMakeFiles/Makefile2:244: CMakeFiles/rocksdb-shared.dir/all] Error 2 make[2]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -/usr/bin/cmake -E cmake_progress_start /build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf/CMakeFiles 0 +make[1]: *** [Makefile:139: all] Error 2 make[1]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' - debian/rules override_dh_auto_test -make[1]: Entering directory '/build/reproducible-path/rocksdb-9.10.0' -echo Test is no-op as running for hours on a normal PC -Test is no-op as running for hours on a normal PC -make[1]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0' - create-stamp debian/debhelper-build-stamp - dh_testroot -O--buildsystem=cmake - dh_prep -O--buildsystem=cmake - debian/rules override_dh_auto_install -make[1]: Entering directory '/build/reproducible-path/rocksdb-9.10.0' -dh_auto_install -O--buildsystem=cmake --destdir=/build/reproducible-path/rocksdb-9.10.0/debian/tmp/ - cd obj-arm-linux-gnueabihf && make -j3 install DESTDIR=/build/reproducible-path/rocksdb-9.10.0/debian/tmp AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true" -make[2]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -/usr/bin/cmake -S/build/reproducible-path/rocksdb-9.10.0 -B/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf --check-build-system CMakeFiles/Makefile.cmake 0 -make -f CMakeFiles/Makefile2 preinstall -make[3]: Entering directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make[3]: Nothing to be done for 'preinstall'. -make[3]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -Install the project... -/usr/bin/cmake -P cmake_install.cmake --- Install configuration: "None" --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/transaction_log.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/perf_level.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/block_cache_trace_writer.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/wide_columns.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/experimental.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/memory_allocator.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/comparator.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/db_bench_tool.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/sst_file_reader.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/universal_compaction.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/sst_partitioner.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/flush_block_policy.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/file_checksum.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/memtablerep.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/advanced_cache.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/iterator_base.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/threadpool.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/cleanable.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/stackable_db.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/types_util.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/transaction.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/checkpoint.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/info_log_finder.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/write_batch_with_index.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/options_type.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/backup_engine.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/db_ttl.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/lua --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/lua/rocks_lua_util.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/lua/rocks_lua_custom_library.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/replayer.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/secondary_index.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/agg_merge.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/optimistic_transaction_db.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/object_registry.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/customizable_util.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/transaction_db.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/ldb_cmd_execute_result.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/ldb_cmd.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/options_util.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/sim_cache.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/env_mirror.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/transaction_db_mutex.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/debug.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/table_properties_collectors.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/leveldb_options.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/cache_dump_load.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/option_change_migration.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/convenience.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/utilities/memory_util.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/metadata.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/filter_policy.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/sst_dump_tool.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/thread_status.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/customizable.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/secondary_cache.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/compaction_job_stats.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/env_encryption.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/attribute_groups.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/iterator.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/cache.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/configurable.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/snapshot.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/sst_file_writer.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/file_system.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/slice.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/status.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/sst_file_manager.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/ldb_tool.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/advanced_options.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/port_defs.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/trace_record.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/trace_record_result.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/system_clock.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/db_stress_tool.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/table_properties.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/cache_bench_tool.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/iostats_context.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/statistics.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/table.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/compression_type.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/user_write_callback.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/compaction_filter.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/table_reader_caller.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/listener.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/rocksdb_namespace.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/db_dump_tool.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/unique_id.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/data_structure.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/c.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/trace_reader_writer.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/io_status.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/slice_transform.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/wal_filter.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/types.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/concurrent_task_limiter.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/functor_wrapper.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/write_batch.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/rate_limiter.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/persistent_cache.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/stats_history.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/version.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/perf_context.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/options.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/db.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/merge_operator.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/write_batch_base.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/write_buffer_manager.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/convenience.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/include/rocksdb/env.h --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/Finduring.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/Findlz4.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/CxxFlags.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/Findzstd.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/ReadVersion.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/FindNUMA.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/FindTBB.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/Findgflags.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/FindSnappy.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/modules/FindJeMalloc.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/librocksdb.a --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/librocksdb.so.9.10.0 --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/librocksdb.so.9.10 --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/librocksdb.so --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/RocksDBTargets.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/RocksDBTargets-none.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/RocksDBConfig.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/cmake/rocksdb/RocksDBConfigVersion.cmake --- Installing: /build/reproducible-path/rocksdb-9.10.0/debian/tmp/usr/lib/arm-linux-gnueabihf/pkgconfig/rocksdb.pc -make[2]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0/obj-arm-linux-gnueabihf' -make[1]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0' - dh_install -O--buildsystem=cmake - dh_installdocs -O--buildsystem=cmake - dh_installchangelogs -O--buildsystem=cmake - dh_installexamples -O--buildsystem=cmake - dh_installsystemduser -O--buildsystem=cmake - dh_perl -O--buildsystem=cmake - dh_link -O--buildsystem=cmake - dh_strip_nondeterminism -O--buildsystem=cmake - dh_compress -O--buildsystem=cmake - dh_fixperms -O--buildsystem=cmake - debian/rules override_dh_missing -make[1]: Entering directory '/build/reproducible-path/rocksdb-9.10.0' -dh_missing --list-missing -make[1]: Leaving directory '/build/reproducible-path/rocksdb-9.10.0' - dh_dwz -a -O--buildsystem=cmake - dh_strip -a -O--buildsystem=cmake - dh_makeshlibs -a -O--buildsystem=cmake - dh_shlibdeps -a -O--buildsystem=cmake -dpkg-shlibdeps: warning: diversions involved - output may be incorrect - diversion by libc6 from: /lib/ld-linux-armhf.so.3 -dpkg-shlibdeps: warning: diversions involved - output may be incorrect - diversion by libc6 to: /lib/ld-linux-armhf.so.3.usr-is-merged -dpkg-shlibdeps: warning: diversions involved - output may be incorrect - diversion by libc6 from: /lib/ld-linux-armhf.so.3 -dpkg-shlibdeps: warning: diversions involved - output may be incorrect - diversion by libc6 to: /lib/ld-linux-armhf.so.3.usr-is-merged -dpkg-shlibdeps: warning: symbol __aeabi_atexit@CXXABI_ARM_1.3.3 used by debian/librocksdb9.10/usr/lib/arm-linux-gnueabihf/librocksdb.so.9.10.0 found in none of the libraries -dpkg-shlibdeps: warning: debian/rocksdb-tools/usr/bin/cache_bench contains an unresolvable reference to symbol __aeabi_atexit@CXXABI_ARM_1.3.3: it's probably a plugin -dpkg-shlibdeps: warning: debian/rocksdb-tools/usr/bin/db_bench contains an unresolvable reference to symbol __aeabi_atexit@CXXABI_ARM_1.3.3: it's probably a plugin - dh_installdeb -O--buildsystem=cmake - dh_gencontrol -O--buildsystem=cmake - dh_md5sums -O--buildsystem=cmake - dh_builddeb -O--buildsystem=cmake -dpkg-deb: building package 'librocksdb9.10-dbgsym' in '../librocksdb9.10-dbgsym_9.10.0-1_armhf.deb'. -dpkg-deb: building package 'librocksdb-dev' in '../librocksdb-dev_9.10.0-1_armhf.deb'. -dpkg-deb: building package 'rocksdb-tools-dbgsym' in '../rocksdb-tools-dbgsym_9.10.0-1_armhf.deb'. -dpkg-deb: building package 'librocksdb9.10' in '../librocksdb9.10_9.10.0-1_armhf.deb'. -dpkg-deb: building package 'rocksdb-tools' in '../rocksdb-tools_9.10.0-1_armhf.deb'. - dpkg-genbuildinfo --build=binary -O../rocksdb_9.10.0-1_armhf.buildinfo - dpkg-genchanges --build=binary -O../rocksdb_9.10.0-1_armhf.changes -dpkg-genchanges: info: binary-only upload (no source code included) - dpkg-source --after-build . -dpkg-buildpackage: info: binary-only upload (no source included) -dpkg-genchanges: info: including full source code in upload +dh_auto_build: error: cd obj-arm-linux-gnueabihf && make -j4 "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2 +make: *** [debian/rules:51: binary] Error 25 +dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration +E: Failed autobuilding of package +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/C01_cleanup starting +debug output: disk usage on i-capture-the-hostname at Tue Feb 11 21:09:14 UTC 2025 +Filesystem Size Used Avail Use% Mounted on +tmpfs 3.4G 0 3.4G 0% /dev/shm + +I: user script /srv/workspace/pbuilder/27370/tmp/hooks/C01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/28338 and its subdirectories -I: Current time: Tue Feb 11 08:38:43 -12 2025 -I: pbuilder-time-stamp: 1739306323 +I: removing directory /srv/workspace/pbuilder/27370 and its subdirectories